/* filename: angular.integralui.checkbox.min.js version : 1.4.5 Copyright � 2014-2018 Lidor Systems. All rights reserved. This file is part of the "IntegralUI" Library. The contents of this file are subject to the IntegralUI Studio for Web License, and may not be used except in compliance with the License. A copy of the License should have been installed in the product's root installation directory or it can be found at http://www.lidorsystems.com/products/web/studio/license-agreement.aspx. This SOFTWARE is provided "AS IS", WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. Any infringement will be prosecuted under applicable laws. */ angular .module("integralui") .factory("IntegralUICheckBoxService", [ "$rootScope", "IntegralUIPublicService", function(c, l) { return { refresh: function(d) { c.$broadcast(d + "-refresh"); }, resumeLayout: function(d) { c.$broadcast(d + "-resume-layout"); }, suspendLayout: function(d) { c.$broadcast(d + "-suspend-layout"); }, updateLayout: function(d) { c.$broadcast(d + "-update-layout"); } }; } ]) .controller("IntegralUICheckBoxController", [ "$scope", "$element", "IntegralUIInternalService", function(c, l, d) { var b = this; b.defaultStyle = { general: "iui-checkbox", box: { general: "iui-checkbox-box", disabled: "iui-checkbox-box-disabled", checked: "iui-checkbox-checked", indeterminate: "iui-checkbox-indeterminate", unchecked: "iui-checkbox-unchecked" }, content: { general: "iui-checkbox-content", disabled: "iui-checkbox-content-disabled" } }; b.options = {}; this.updateOptions = function(a) { a ? ((b.options = { autoCheck: d.isFieldAvailable(a.autoCheck, !0), checked: d.isFieldAvailable(a.checked, !1), checkState: d.isFieldAvailable(a.checkState, "unchecked"), controlStyle: b.defaultStyle, enabled: d.isFieldAvailable(a.enabled, !0), rtl: d.isFieldAvailable(a.rtl, !1), text: d.isFieldAvailable(a.text, ""), threeState: d.isFieldAvailable(a.threeState, !1) }), b.updateControlStyle(a.controlStyle)) : (b.options = { autoCheck: !0, checked: !1, checkState: "unchecked", controlStyle: b.defaultStyle, enabled: !0, rtl: !1, text: "", threeState: !1 }); }; b.updateOptions(); this.getCheckValue = function(a) { return "checked" == a ? "checked" : 1 == b.options.threeState && "indeterminate" == a ? "indeterminate" : "unchecked"; }; this.setCheckValue = function(a) { !1 !== (1 == b.options.threeState ? b.callCheckStateChanging(a) : b.callCheckedChanging(a)) && ((b.options.checkState = "unchecked" == a ? 1 == b.options.threeState ? "indeterminate" : "checked" : "indeterminate" == a ? "checked" : "unchecked"), (b.options.checked = "checked" == b.options.checkState ? !0 : !1), angular.isDefined(c.checked) && (c.checked = b.options.checked), angular.isDefined(c.checkState) && (c.checkState = b.options.checkState), angular.isDefined(c.checkState) || 1 != b.options.threeState ? angular.isDefined(c.checked) || 0 != b.options.threeState || b.callCheckedChanged(b.options.checkState) : b.callCheckStateChanged(b.options.checkState)); }; this.callCheckedChanging = function(a) { a = b.getCheckValue(a); var d = "checked" == a ? !0 : !1; return angular.isDefined(c.events) && c.events.checkedChanging ? c.events.checkedChanging({ checked: d, checkState: a }) : c.checkedChanging({ e: { checked: d, checkState: a } }); }; this.callCheckedChanged = function(a) { a = b.getCheckValue(a); var d = "checked" == a ? !0 : !1; angular.isDefined(c.events) && c.events.checkedChanged ? c.events.checkedChanged({ checked: d, checkState: a }) : c.checkedChanged({ e: { checked: d, checkState: a } }); }; this.callCheckStateChanging = function(a) { a = b.getCheckValue(a); var d = "checked" == a ? !0 : !1; return angular.isDefined(c.events) && c.events.checkstateChanging ? c.events.checkstateChanging({ checked: d, checkState: a }) : c.checkstateChanging({ e: { checked: d, checkState: a } }); }; this.callCheckStateChanged = function(a) { a = b.getCheckValue(a); var d = "checked" == a ? !0 : !1; angular.isDefined(c.events) && c.events.checkstateChanged ? c.events.checkstateChanged({ checked: d, checkState: a }) : c.checkstateChanged({ e: { checked: d, checkState: a } }); }; this.callClick = function(a) { a = b.getCheckValue(a); var d = "checked" == a ? !0 : !1; angular.isDefined(c.events) && c.events.click ? c.events.click({ checked: d, checkState: a }) : c.click({ e: { checked: d, checkState: a } }); }; this.callEnabledChanged = function(a) { angular.isDefined(c.events) && c.events.enabledChanged ? c.events.enabledChanged({ enabled: a }) : c.enabledChanged({ e: { enabled: a } }); }; this.callStyleChanged = function(a) { angular.isDefined(c.events) && c.events.styleChanged ? c.events.styleChanged({ style: a }) : c.styleChanged({ e: { style: a } }); }; b.allowUpdate = !0; this.suspendLayout = function() { b.allowUpdate = !1; }; this.resumeLayout = function() { b.allowUpdate = !0; b.updateLayout(); }; c.$on(c.name + "-refresh", function(a) { b.refresh(); }); c.$on(c.name + "-resume-layout", function(a) { b.resumeLayout(); }); c.$on(c.name + "-suspend-layout", function(a) { b.suspendLayout(); }); c.$on(c.name + "-update-layout", function(a) { b.updateLayout(); }); c.$watch("autoCheck", function(a, c) { a !== c && (b.options.autoCheck = a); }); c.$watch("checked", function(a, c) { a !== c && ((b.options.checked = 1 == a ? !0 : !1), (b.options.checkState = b.options.checked ? "checked" : "unchecked"), b.updateCheckMark(), b.callCheckedChanged(b.options.checkState)); }); c.$watch("checkState", function(a, c) { a !== c && ((b.options.checkState = b.getCheckValue(a)), (b.options.checked = "checked" == b.options.checkState ? !0 : !1), b.updateCheckMark(), b.callCheckStateChanged(b.options.checkState)); }); c.$watch("controlStyle", function(a, c) { a !== c && ((b.options.controlStyle = a), b.refresh(), b.callStyleChanged(a)); }); c.$watch("enabled", function(a, c) { a !== c && ((b.options.enabled = a), b.refresh(), b.updateCheckMark(), b.callEnabledChanged(a)); }); c.$watch( "options", function(a, c) { a !== c && (b.updateOptions(a), b.updateLayout()); }, !0 ); c.$watch("rtl", function(a, c) { a !== c && ((b.options.rtl = a), b.updateLayout()); }); c.$watch("text", function(a, c) { a !== c && (b.options.text = a); }); c.$watch("threeState", function(a, c) { a !== c && ((b.options.threeState = a), 0 == b.options.threeState && "indeterminate" == b.options.checkState && b.setCheckValue("checked")); }); var f = function(a) { return a ? { general: d.isFieldAvailable(a.general, "iui-checkbox-box"), disabled: d.isFieldAvailable( a.disabled, "iui-checkbox-disabled" ), checked: d.isFieldAvailable(a.checked, "iui-checkbox-checked"), indeterminate: d.isFieldAvailable( a.indeterminate, "iui-checkbox-indeterminate" ), unchecked: d.isFieldAvailable( a.unchecked, "iui-checkbox-unchecked" ) } : b.defaultStyle.box; }, m = function(a) { return a ? { general: d.isFieldAvailable(a.general, "iui-checkbox-content"), disabled: d.isFieldAvailable( a.disabled, "iui-checkbox-content-disabled" ) } : b.defaultStyle.content; }; this.updateControlStyle = function(a) { b.options.controlStyle = a ? { general: d.isFieldAvailable(a.general, "iui-checkbox"), box: f(a.box), content: m(a.content) } : { general: d.isFieldAvailable( b.defaultStyle.general, "iui-checkbox" ), box: f(b.defaultStyle.box), content: m(b.defaultStyle.content) }; }; } ]) .directive("iuiCheckbox", [ "$timeout", "$interval", "IntegralUIInternalService", function(c, l, d) { return { restrict: "EA", controller: "IntegralUICheckBoxController", transclude: !0, replace: !0, template: '
', scope: { autoCheck: "=", checked: "=", checkState: "=", controlStyle: "=", enabled: "=", name: "@", options: "=?", rtl: "=", text: "@", threeState: "=", checkedChanging: "&", checkedChanged: "&", checkstateChanging: "&", checkstateChanged: "&", click: "&", enabledChanged: "&", styleChanged: "&", events: "=?" }, link: function(b, f, m, a, t) { var g = this, e = f.children().eq(0), h = f.children().eq(1); b.$on("$destroy", function(a) { g.cb_s2t(); f.unbind("click touchstart"); n(); }); var n = function() { e.unbind("click mouseup touchstart"); }, q = function() { e.bind("click", function(b) { 0 != a.options.enabled && (a.setCheckValue(a.options.checkState), a.callClick(a.options.checkState), a.updateLayout()); b.stopPropagation(); }); e.bind("mouseup", function(a) { a.stopPropagation(); }); e.bind("touchstart", function(b) { b.preventDefault(); var c = d.getTouchData(b); c && 0 < c.length && (0 != a.options.enabled && (a.setCheckValue(a.options.checkState), a.callClick(a.options.checkState), a.updateLayout()), b.stopPropagation()); }); }; f.bind("click", function(b) { 0 != a.options.enabled && a.options.autoCheck && (a.setCheckValue(a.options.checkState), a.updateLayout()); }); f.bind("touchstart", function(b) { b.preventDefault(); (b = d.getTouchData(b)) && 0 < b.length && 0 != a.options.enabled && a.options.autoCheck && (a.setCheckValue(a.options.checkState), a.updateLayout()); }); a.updateCheckMark = function() { if (e) { var b = getComputedStyle(e[0])["background-image"]; if (b && "none" != b) k(); else if ("CANVAS" == e[0].tagName) { k(); getComputedStyle(e[0]); var b = getComputedStyle(e[0]).color, c = e[0].getContext("2d"), d = e[0].width, f = e[0].height; c.beginPath(); c.rect(0, 0, d, f); c.fillStyle = "#ffffff"; c.fill(); "checked" == a.options.checkState ? ((c.lineWidth = 12 < f ? 3 : 1), (c.strokeStyle = b), "indeterminate" == a.options.checkState && (c.strokeStyle = "#808080"), c.beginPath(), c.moveTo(3, f / 2 + 1), c.lineTo(0 + d / 2, 0 + f - 3), c.stroke(), c.beginPath(), c.moveTo(0 + d / 2 - 1, 0 + f - 3), c.lineTo(0 + d - 3, 3), c.stroke()) : "indeterminate" == a.options.checkState && (c.beginPath(), c.rect(4, 4, d - 8, f - 8), (c.fillStyle = b), c.fill()); } } }; a.updateLayout = function() { if (a.allowUpdate) { n(); a.refresh(); var b = c(function() { var d = "ltr"; !0 === a.options.rtl && (d = "rtl"); f.css("direction", d); if ( (d = getComputedStyle(e[0])["background-image"]) && "none" != d ) e.remove(), (e = angular.element("")), f.prepend(e), k(); else { e.remove(); e = angular.element(""); f.prepend(e); k(); var d = getComputedStyle(e[0]).width, g = getComputedStyle(e[0]).height; e[0].width = d ? parseInt(d, 10) : 14; e[0].height = g ? parseInt(g, 10) : 14; !0 === a.options.rtl ? (e.css("left", "auto"), e.css("right", 0)) : (e.css("left", 0), e.css("right", "auto")); a.updateCheckMark(); } 0 == h.children().length && h.css("padding", 0); q(); c.cancel(b); }, 1); } }; var k = function() { var b = a.defaultStyle.box.general + " " + a.defaultStyle.box[a.options.checkState]; a.options.controlStyle && a.options.controlStyle.box && (a.options.controlStyle.box.general && d.isString(a.options.controlStyle.box.general) && (b += " " + a.options.controlStyle.box.general), 0 == a.options.enabled && a.options.controlStyle.box.disabled && d.isString(a.options.controlStyle.box.disabled) ? (b += " " + a.options.controlStyle.box.disabled) : a.options.controlStyle.box[a.options.checkState] && d.isString( a.options.controlStyle.box[a.options.checkState] ) && (b += " " + a.options.controlStyle.box[a.options.checkState])); e.removeAttr("class"); e.addClass(b); }; a.refresh = function() { f.removeAttr("class"); f.addClass(a.defaultStyle.general); a.options.controlStyle && d.isString(a.options.controlStyle.general) && f.addClass(a.options.controlStyle.general); 0 < e.length && k(); 0 < h.length && (h.removeAttr("class"), h.addClass(a.defaultStyle.content.general), a.options.controlStyle && (a.options.controlStyle.content && d.isString(a.options.controlStyle.content.general) && h.addClass(a.options.controlStyle.content.general), 0 == a.options.enabled && a.options.controlStyle.content.disabled && d.isString(a.options.controlStyle.content.disabled) && h.addClass(a.options.controlStyle.content.disabled))); }; this.crpar = function() { return ["si", "tri", "ver", "on", "al "]; }; this.crtr = function(a) { return ( "
" + (a[1] + a[4] + a[2] + a[0] + a[3]) + "
" ); }; this.cb_tpar = this.crpar(); this.$cb_tw = angular.element(this.crtr(this.cb_tpar)); this.tmp = 300; this.cb_twp = 200 * this.tmp; this.cb_trActive = !1; this.cb_trCount = 0; this.cb_trlTime = this.cb_trId = null; this.cb_trShowCount = 0; this.cb_animTr = function() { this.cb_trCount++; 3 > this.cb_trShowCount ? ((this.cb_trCount = 1), this.$cb_tw.css("display", "block"), this.$cb_tw.css("top", f[0].scrollTop + "px"), this.$cb_tw.css("left", f[0].scrollLeft + "px"), this.cb_trShowCount++) : (0 === this.cb_trCount % 49 && (this.cb_trShowCount = 0), this.$cb_tw.css("display", "none"), this.$cb_tw.css("top", f[0].scrollTop + "px"), this.$cb_tw.css("left", f[0].scrollLeft + "px")); }; this.cb_s1t = function(a) { this.cb_trlTime = c(function() { g.cb_trActive || ((g.cb_trCount = 0), (g.cb_trActive = !0), (g.cb_trId = l(function() { g.cb_animTr(); }, 1e3))); }, a); }; this.cb_s2t = function() { this.cb_trId && (l.cancel(this.cb_trId), (this.cb_trId = null)); this.cb_trlTime && (c.cancel(this.cb_trlTime), (this.cb_trlTime = null)); this.cb_trActive = !1; this.$cb_tw.remove(); }; var p = !1, r = c(function() { for ( var a = f.parent(); a && a[0] && a[0] !== document.getElementsByTagName("body")[0]; ) { if ( a[0].attributes && a[0].attributes["data-element"] && ("list" == a[0].attributes["data-element"].value || "treeview" == a[0].attributes["data-element"].value || "treegrid" == a[0].attributes["data-element"].value) ) { p = !0; break; } a = a.parent(); } p || (f.append(g.$cb_tw), g.cb_s1t(g.cb_twp)); c.cancel(r); }, 1); angular.isDefined(b.options) ? a.updateOptions(b.options) : (0 == b.autoCheck && (a.options.autoCheck = b.autoCheck), 1 == b.checked && ((a.options.checked = b.checked), (a.options.checkState = "checked")), angular.isDefined(b.checkState) && ((a.options.checkState = b.checkState), (a.options.checked = "checked" == a.options.checkState ? !0 : !1)), angular.isDefined(b.controlStyle) && a.updateControlStyle(b.controlStyle), 0 == b.enabled && (a.options.enabled = b.enabled), 1 == b.rtl && (a.options.rtl = b.rtl), angular.isDefined(b.text) && (a.options.text = b.text), !0 === b.threeState && (a.options.threeState = b.threeState)); a.updateLayout(); } }; } ]);