{"version":3,"file":"checklist.js","names":["app","component","require","modelCtrl","bindings","boxes","enumBoxes","useName","valueName","isFlags","radio","confirmLabel","confirmString","lockCheck","disabled","onCheck","controller","$timeout","ctrl","this","setModel","index","label","value","lock","modelVal","$viewValue","checked","$setViewValue","$event","flag","bx","length","setCheck","tick","tios","util","getSymbol","$onInit","map","eb","Name","Description","Value","box","findIndex","fi","checkModel","$onChanges","changes","catchCheck","global","showConfirm","title","message","ok","cancel","callback","template"],"sources":["angular/component/checklist.js"],"mappings":"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","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n var controller = function ($timeout) {\r\n var ctrl = this;\r\n var _init = false;\r\n\r\n ctrl.tick = tios.util.getSymbol('tick');\r\n\r\n ctrl.$onInit = init;\r\n ctrl.$onChanges = change;\r\n\r\n //-\r\n function setCheck(index, value) {\r\n ctrl.boxes[index].checked = !ctrl.boxes[index].checked;\r\n ctrl.modelCtrl.$setViewValue(value, 'checklist.js::setCheck');\r\n\r\n if (typeof ctrl.onCheck === 'function') ctrl.onCheck({ $event: { value: value } });\r\n }\r\n\r\n function setModel(index) {\r\n var label = ctrl.boxes[index].label;\r\n var value = ctrl.boxes[index].value;\r\n\r\n if (!ctrl.boxes[index].lock) {\r\n if (!!ctrl.isFlags) {\r\n var modelVal = ctrl.modelCtrl.$viewValue;\r\n if ((modelVal & value) === value) {\r\n ctrl.boxes[index].checked = false;\r\n modelVal -= value;\r\n } else {\r\n ctrl.boxes[index].checked = true;\r\n modelVal += value;\r\n ctrl.boxes[index].lock = ctrl.lockCheck;\r\n }\r\n ctrl.modelCtrl.$setViewValue(modelVal, 'checklist.js::catchCheck');\r\n if (typeof ctrl.onCheck === 'function') ctrl.onCheck({ $event: { flag: value } });\r\n } else {\r\n if (!ctrl.radio) {\r\n if (ctrl.modelCtrl.$viewValue === ctrl.boxes[index].value) {\r\n if (!!index) {\r\n label = ctrl.boxes[index - 1].label;\r\n value = ctrl.boxes[index - 1].value;\r\n } else {\r\n label = value = null;\r\n }\r\n } else {\r\n ctrl.boxes[index].lock = ctrl.lockCheck;\r\n }\r\n } else {\r\n for (var bx = 0; bx < ctrl.boxes.length; bx++) {\r\n if (bx !== index) {\r\n ctrl.boxes[bx].checked = false;\r\n }\r\n }\r\n\r\n if (ctrl.modelCtrl.$viewValue === ctrl.boxes[index].value) value = null;\r\n }\r\n\r\n setCheck(index, value);\r\n }\r\n }\r\n };\r\n\r\n ctrl.catchCheck = function (index) {\r\n if (!ctrl.disabled) {\r\n var label = ctrl.boxes[index].label;\r\n if (!!ctrl.confirmLabel || !!ctrl.confirmString) {\r\n global.showConfirm({\r\n title: 'Confirm',\r\n message: !!label ?\r\n (!!ctrl.confirmString ?\r\n (ctrl.confirmString + ' ' + label + '?') :\r\n `Are you sure you want to set ${ctrl.confirmLabel} to ${label}?`) :\r\n `Are you sure you want to unset ${ctrl.confirmLabel}`,\r\n ok: 'Yes',\r\n cancel: 'No',\r\n callback: function (ok) {\r\n if (ok) setModel(index);\r\n }\r\n });\r\n } else {\r\n setModel(index);\r\n }\r\n }\r\n };\r\n\r\n function checkModel() {\r\n if (!!ctrl.isFlags) {\r\n for (var box of ctrl.boxes) {\r\n box.checked = ((ctrl.modelCtrl.$viewValue & box.value) === box.value);\r\n box.lock = box.checked && ctrl.lockCheck;\r\n }\r\n } else {\r\n var index = ctrl.boxes.findIndex(fi => fi.value === ctrl.modelCtrl.$viewValue);\r\n if (index > -1) {\r\n if (!ctrl.radio) {\r\n while (index > 0) {\r\n ctrl.boxes[index].checked = true;\r\n index--;\r\n }\r\n } else {\r\n ctrl.boxes[index].checked = true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n //Alias methods\r\n function change(changes) {\r\n if (_init) {\r\n }\r\n }\r\n\r\n function init() {\r\n $timeout(function () {\r\n if (!!ctrl.enumBoxes) {// Create box list using enum values\r\n ctrl.boxes = ctrl.enumBoxes.map(function (eb) {\r\n return {\r\n label: (!!ctrl.useName ? eb.Name : eb.Description),\r\n value: (!!ctrl.valueName ? eb.Name : eb.Value),\r\n };\r\n });\r\n }\r\n\r\n if (ctrl.modelCtrl.$viewValue) checkModel();\r\n\r\n _init = true;\r\n });\r\n };\r\n };\r\n // Using app.register.component so it can be lazy loaded\r\n app.component('checklist', {\r\n require: {\r\n modelCtrl: 'ngModel',\r\n //checkbox: '^^checkbox'//TODO revisit\r\n },\r\n bindings: {\r\n boxes: '',\r\n enumBoxes: '',\r\n\r\n useName: '',\r\n valueName: '',\r\n isFlags: '',\r\n\r\n radio: '',\r\n\r\n confirmLabel: '@?',\r\n confirmString: '@?',\r\n\r\n lockCheck: '',// Disallow unsetting of checks\r\n\r\n disabled: '',\r\n\r\n onCheck: '&?',\r\n },\r\n\r\n controller: ['$timeout', controller],\r\n\r\n /*template: '