Current Path : /var/www/www-root/data/www/info.monolith-realty.ru/bitrix/js/landing/ui/field/ |
Current File : /var/www/www-root/data/www/info.monolith-realty.ru/bitrix/js/landing/ui/field/click_action_field.js |
;(function() { "use strict"; BX.namespace("BX.Landing.UI.Field"); BX.Landing.UI.Field.ClickAction = function(options) { BX.Landing.UI.Field.BaseField.apply(this, arguments); BX.addClass(this.layout, "landing-ui-field-click-action"); BX.remove(this.input); this.reference = options.reference; this.linkField = options.linkField; this.textField = new BX.Landing.UI.Field.Text({ title: BX.Landing.Loc.getMessage('LANDING_BLOCK__DYNAMIC_LINK_TEXT_FIELD_LABEL'), textOnly: true, content: options.content || '' }); this.actionField = new BX.Landing.UI.Field.Dropdown({ title: BX.Landing.Loc.getMessage('LANDING_BLOCK__DYNAMIC_LINK_ACTION_FIElD_LABEL'), items: this.getActions(), onValueChange: this.onActionChange.bind(this) }); this.grid = this.createGrid(); this.textContainer = this.grid.children[0]; this.actionContainer = this.grid.children[1]; this.additionalContainer = this.grid.children[2]; this.layout.appendChild(this.grid); this.textContainer.appendChild(this.textField.layout); this.actionContainer.appendChild(this.actionField.layout); if (BX.type.isPlainObject(options.value)) { this.setValue(options.value); } this.onActionChange(); }; BX.Landing.UI.Field.ClickAction.prototype = { constructor: BX.Landing.UI.Field.ClickAction, __proto__: BX.Landing.UI.Field.BaseField.prototype, createGrid: function() { return BX.create({ tag: "div", props: {className: "landing-ui-field-click-action-grid"}, children: [ BX.create({ tag: "div", props: {className: "landing-ui-field-click-action-grid-text"} }), BX.create({ tag: "div", props: {className: "landing-ui-field-click-action-grid-action"} }), BX.create({ tag: "div", props: {className: "landing-ui-field-click-action-layout-additional"} }) ] }) }, getActions: function() { return this.reference.actions.map(function(item) { return {name: item.name, value: item.type}; }); }, onActionChange: function() { var actionType = this.actionField.getValue(); if (actionType === "link") { this.additionalContainer.appendChild(this.linkField.layout); return; } this.additionalContainer.innerHTML = ""; }, getValue: function() { var linkValue = this.linkField.getValue(); if (BX.type.isPlainObject(linkValue)) { delete linkValue.text; } return { id: this.reference.id, text: this.textField.getValue(), action: this.actionField.getValue(), link: linkValue }; }, setValue: function(value) { if (BX.type.isPlainObject(value)) { this.textField.setValue(value.text); this.actionField.setValue(value.action); if (value.link) { // @todo refactoring this.linkField.setValue(value.link, true); this.linkField.hrefInput.makeDisplayedHrefValue(); } this.onActionChange(); } } }; })();