import template from "./RadioGroup.html";
angular.module("esNgAntd").directive("antdRadioGroup", function () {
return {
controllerAs: "antdRadioGroup",
restrict: "E",
transclude: true,
replace: true,
scope: {
value: "@",
defaultValue: "@",
onChange: "&",
},
template: template,
controller: function ($scope, $element, $attrs) {
this.getContext = function () {
return $scope;
};
$scope.state = {
value: $scope.value || $scope.defaultValue,
childrens: [],
};
$scope.watch = {
value: function (newVal) {
if (newVal !== undefined) {
$scope.state.value = newVal;
$scope.updateChildChecked();
}
},
};
for (const key in $scope.watch) {
$scope.$watch(key, $scope.watch[key], true);
}
$scope.updateChildChecked = function () {
$scope.state.childrens.map(function (item) {
item.state.checked = $scope.state.value === item.value;
});
};
$scope.setValue = function (event) {
$scope.state.value = event.target.value;
$scope.updateChildChecked();
$scope.onChange({
event: event,
});
};
},
link: function ($scope, $element, $attrs, $controllers, $transclude) {
for (let i = 0; i < $element[0].childNodes.length; i++) {
let node = $element[0].childNodes[i];
if (node.nodeType === 3) {
$element[0].removeChild(node);
}
}
},
};
});