Your IP : 216.73.216.86


Current Path : /var/www/homesaver/www/bitrix/js/landing/ui/form/menuform/dist/
Upload File :
Current File : /var/www/homesaver/www/bitrix/js/landing/ui/form/menuform/dist/menuform.bundle.js

this.BX = this.BX || {};
this.BX.Landing = this.BX.Landing || {};
this.BX.Landing.UI = this.BX.Landing.UI || {};
(function (exports,main_core,landing_loc,landing_env,landing_main,landing_ui_form_baseform,landing_ui_form_menuitemform,ui_draganddrop_draggable) {
	'use strict';

	var _templateObject, _templateObject2;

	function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }

	function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { babelHelpers.defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
	/**
	 * @memberOf BX.Landing.UI.Form
	 */

	var MenuForm = /*#__PURE__*/function (_BaseForm) {
	  babelHelpers.inherits(MenuForm, _BaseForm);

	  function MenuForm() {
	    var _this;

	    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
	    babelHelpers.classCallCheck(this, MenuForm);
	    _this = babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(MenuForm).call(this, options));
	    main_core.Dom.addClass(_this.layout, 'landing-ui-form-menu');
	    _this.forms = new BX.Landing.UI.Collection.FormCollection();

	    if (main_core.Type.isArray(options.forms)) {
	      options.forms.forEach(function (form) {
	        _this.addForm(form);
	      });
	    }

	    _this.draggable = new ui_draganddrop_draggable.Draggable({
	      container: _this.getBody(),
	      context: parent.window,
	      draggable: '.landing-ui-form-menuitem',
	      dragElement: '.landing-ui-form-header-drag-button',
	      type: ui_draganddrop_draggable.Draggable.DROP_PREVIEW,
	      depth: {
	        margin: 20
	      },
	      offset: {
	        y: -65
	      }
	    });
	    _this.onMenuItemRemove = _this.onMenuItemRemove.bind(babelHelpers.assertThisInitialized(_this));
	    main_core.Dom.append(_this.getAddItemLayout(), _this.layout);
	    return _this;
	  }

	  babelHelpers.createClass(MenuForm, [{
	    key: "addForm",
	    value: function addForm(form) {
	      if (!this.forms.contains(form)) {
	        this.forms.add(form);
	        main_core.Dom.append(form.layout, this.body);
	        form.subscribe('remove', this.onMenuItemRemove.bind(this));

	        if (this.draggable) {
	          this.draggable.invalidateCache();
	        }
	      }
	    }
	  }, {
	    key: "onMenuItemRemove",
	    value: function onMenuItemRemove(event) {
	      var children = this.draggable.getChildren(event.data.form.layout);
	      children.forEach(function (element) {
	        main_core.Dom.remove(element);
	      });
	      this.forms.remove(event.data.form);
	      this.draggable.invalidateCache();
	    }
	  }, {
	    key: "serialize",
	    value: function serialize() {
	      var _this2 = this;

	      var draggableElements = this.draggable.getDraggableElements();

	      var getChildren = function getChildren(parent) {
	        var parentDepth = _this2.draggable.getElementDepth(parent);

	        var allChildren = _this2.draggable.getChildren(parent);

	        return allChildren.reduce(function (acc, current) {
	          var currentDepth = _this2.draggable.getElementDepth(current);

	          if (currentDepth === parentDepth + 1) {
	            var form = _this2.forms.getByLayout(current);

	            acc.push(_objectSpread(_objectSpread({}, form.serialize()), {}, {
	              children: getChildren(current)
	            }));
	          }

	          return acc;
	        }, []);
	      };

	      return draggableElements.reduce(function (acc, element) {
	        if (_this2.draggable.getElementDepth(element) === 0) {
	          var form = _this2.forms.getByLayout(element);

	          acc.push(_objectSpread(_objectSpread({}, form.serialize()), {}, {
	            children: getChildren(element)
	          }));
	        }

	        return acc;
	      }, []);
	    }
	  }, {
	    key: "onAddButtonClick",
	    value: function onAddButtonClick(event) {
	      event.preventDefault();
	      var pageType = landing_env.Env.getInstance().getType();
	      var content = {
	        text: landing_loc.Loc.getMessage('LANDING_NEW_PAGE_LABEL'),
	        target: '_blank',
	        href: ['KNOWLEDGE', 'GROUP'].includes(pageType) ? '#landing0' : ''
	      };
	      var allowedTypes = [BX.Landing.UI.Field.LinkUrl.TYPE_BLOCK, BX.Landing.UI.Field.LinkUrl.TYPE_PAGE, BX.Landing.UI.Field.LinkUrl.TYPE_CRM_FORM, BX.Landing.UI.Field.LinkUrl.TYPE_CRM_PHONE];

	      if (pageType === 'STORE') {
	        allowedTypes.push(BX.Landing.UI.Field.LinkUrl.TYPE_CATALOG);
	      }

	      var field = new BX.Landing.UI.Field.Link({
	        content: content,
	        options: {
	          siteId: landing_env.Env.getInstance().getSiteId(),
	          landingId: landing_main.Main.getInstance().id,
	          filter: {
	            '=TYPE': pageType
	          }
	        },
	        allowedTypes: allowedTypes
	      });
	      var form = new landing_ui_form_menuitemform.MenuItemForm({
	        fields: [field]
	      });
	      form.showForm();
	      this.addForm(form);
	      setTimeout(function () {
	        field.input.enableEdit();
	        var input = field.input.input;

	        var _input$childNodes = babelHelpers.slicedToArray(input.childNodes, 1),
	            textNode = _input$childNodes[0];

	        if (textNode) {
	          var range = document.createRange();
	          var sel = window.getSelection();
	          range.setStart(textNode, input.innerText.length);
	          range.collapse(true);
	          sel.removeAllRanges();
	          sel.addRange(range);
	        }
	      });
	    }
	  }, {
	    key: "getAddButton",
	    value: function getAddButton() {
	      var _this3 = this;

	      return this.cache.remember('addButton', function () {
	        return main_core.Tag.render(_templateObject || (_templateObject = babelHelpers.taggedTemplateLiteral(["\n\t\t\t\t<button \n\t\t\t\t\tclass=\"ui-btn ui-btn-sm ui-btn-light-border ui-btn-icon-add ui-btn-round landing-ui-form-menu-add-button\"\n\t\t\t\t\tonclick=\"", "\"\n\t\t\t\t\t>\n\t\t\t\t\t", "\n\t\t\t\t</button>\n\t\t\t"])), _this3.onAddButtonClick.bind(_this3), landing_loc.Loc.getMessage('LANDING_ADD_MENU_ITEM'));
	      });
	    }
	  }, {
	    key: "getAddItemLayout",
	    value: function getAddItemLayout() {
	      var _this4 = this;

	      return this.cache.remember('addItemLayout', function () {
	        return main_core.Tag.render(_templateObject2 || (_templateObject2 = babelHelpers.taggedTemplateLiteral(["\n\t\t\t\t<div class=\"landing-ui-form-menu-add\">\n\t\t\t\t\t", "\n\t\t\t\t</div>\n\t\t\t"])), _this4.getAddButton());
	      });
	    }
	  }]);
	  return MenuForm;
	}(landing_ui_form_baseform.BaseForm);

	exports.MenuForm = MenuForm;

}((this.BX.Landing.UI.Form = this.BX.Landing.UI.Form || {}),BX,BX.Landing,BX.Landing,BX.Landing,BX.Landing.UI.Form,BX.Landing.UI.Form,BX.UI.DragAndDrop));
//# sourceMappingURL=menuform.bundle.js.map