%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/js/landing/ui/field/ |
Current File : /home/bitrix/www/bitrix/js/landing/ui/field/switch_field.js |
;(function() { "use strict"; BX.namespace("BX.Landing.UI.Field"); var isFunction = BX.Landing.Utils.isFunction; var isBoolean = BX.Landing.Utils.isBoolean; var bind = BX.Landing.Utils.bind; var escapeHtml = BX.Landing.Utils.escapeHtml; var fireCustomEvent = BX.Landing.Utils.fireCustomEvent; var addClass = BX.Landing.Utils.addClass; var removeClass = BX.Landing.Utils.removeClass; var toggleClass = BX.Landing.Utils.toggleClass; var create = BX.Landing.Utils.create; var append = BX.Landing.Utils.append; var random = BX.Landing.Utils.random; var join = BX.Landing.Utils.join; /** * Implements interface for works with text field * * @extends {BX.Landing.UI.Field.BaseField} * * @inheritDoc * @constructor */ BX.Landing.UI.Field.Switch = function(data) { BX.Landing.UI.Field.BaseField.apply(this, arguments); addClass(this.layout, "landing-ui-field-switch"); this.value = data.value; this.id = join("switch_", random()); // Make input event external handler this.onValueChangeHandler = isFunction(data.onValueChange) ? data.onValueChange : (function() {}); this.label = create("label", { props: {className: "landing-ui-field-switch-label"}, attrs: {"for": this.id}, html: this.title }); this.checkbox = create("input", { props: {className: "landing-ui-field-switch-checkbox"}, attrs: {type: "checkbox", id: this.id} }); this.slider = create("div", { props: {className: "landing-ui-field-switch-slider"} }); append(this.checkbox, this.label); append(this.slider, this.label); append(this.label, this.input); this.setValue(this.value); bind(this.checkbox, "change", this.onChange.bind(this)); }; BX.Landing.UI.Field.Switch.prototype = { constructor: BX.Landing.UI.Field.Switch, __proto__: BX.Landing.UI.Field.BaseField.prototype, onChange: function() { this.onValueChangeHandler(); }, setValue: function(value) { if (!isBoolean(value)) { value = value === "true"; } this.checkbox.checked = value; }, getValue: function() { return !!this.checkbox.checked; } }; })();