Summary Table

Categories Total Count
PII 0
URL 0
DNS 0
EKL 0
IP 0
PORT 0
VsID 0
CF 0
AI 0
VPD 0
PL 0
Other 0

File Content

define(['app', 'angular'], function (app, angular) {

app.directive('inputGroupCheckbox', function () {
return {
restrict: 'E',
require: 'ngModel',
scope: {
'label': '@',
'name': '@',
'ngDisabled': '=',
'ngRequired': '=',
'ngModel': '='
},
link: function(scope, elems, attrs, ngModelCtrl) {
var hasNone = false;
var modelLength = scope.ngModel.length;
if (scope.ngModel[scope.ngModel.length - 1]) {
hasNone = true;
}

if(scope.ngRequired) {
var validator = function(newVal) {
var selectionMade = false;

selectionMade = newVal.some(function(val){
return val.selected;
});

ngModelCtrl.$setValidity("selectionMade", selectionMade);
return newVal;
};

ngModelCtrl.$parsers.push(validator);
ngModelCtrl.$formatters.push(validator);
}


scope.onChange = function (changedModel) {
if (scope.ngModel[modelLength - 1].type === "NONE" && scope.ngModel[modelLength - 1].selected || changedModel.type === "NONE") {
var pressedValState = changedModel.selected;

scope.ngModel.forEach(function (model) {
model.selected = false;
});
changedModel.selected = pressedValState;
}
if(scope.ngRequired) {
validator(scope.ngModel);
}
};

},
templateUrl: 'modules/ui-components/form/controls/simple/input-group-checkbox/input-group-checkbox_template.html'
};
});

});