%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/js/landing/ui/field/ |
Current File : /home/bitrix/www/bitrix/js/landing/ui/field/dropdown_field.min.js |
(function(){"use strict";BX.namespace("BX.Landing.UI.Field");var t=BX.Landing.Utils.setTextContent;var i=BX.Landing.Utils.escapeText;var n=BX.Landing.Utils.data;var o=BX.Landing.Utils.offsetTop;var e=BX.Landing.Utils.offsetLeft;var p=BX.Landing.Utils.bind;var s=BX.Landing.Utils.unbind;var u=BX.Landing.UI.Tool.Menu;BX.Landing.UI.Field.Dropdown=function(i){this.items="items"in i&&i.items?i.items:{};BX.Landing.UI.Field.BaseField.apply(this,arguments);this.onChangeHandler=typeof i.onChange==="function"?i.onChange:function(){};this.layout.classList.add("landing-ui-field-dropdown");this.popup=null;this.input.addEventListener("click",this.onInputClick.bind(this));document.addEventListener("click",this.onDocumentClick.bind(this));top.document.addEventListener("click",this.onDocumentClick.bind(this));if(BX.type.isPlainObject(this.items)){var o=Object.keys(this.items);this.items=o.map(function(t){return{name:this.items[t],value:t}},this)}t(this.input,this.items[0].name);n(this.input,"value",this.items[0].value);this.setValue(this.content)};BX.Landing.UI.Field.Dropdown.prototype={constructor:BX.Landing.UI.Field.Dropdown,__proto__:BX.Landing.UI.Field.BaseField.prototype,onInputClick:function(t){t.stopPropagation();if(!this.popup||this.popupRoot&&!this.popupRoot.contains(this.popup.popupWindow.popupContainer)){this.popup=new u({id:"dropdown_"+ +new Date,bindElement:this.input,items:this.items.map(function(t){return{text:i(t.name),onclick:function(){this.onItemClick(t)}.bind(this)}},this),events:{onPopupClose:function(){this.input.classList.remove("landing-ui-active");this.layout.classList.remove("landing-ui-active")}.bind(this)}});this.popupRoot=this.layout.parentElement.parentElement.parentElement;this.popupRoot.appendChild(this.popup.popupWindow.popupContainer);this.popupRoot.style.position="relative"}this.layout.classList.add("landing-ui-active");this.input.classList.add("landing-ui-active");if(this.popup.popupWindow.isShown()){this.popup.close()}else{this.popup.show()}this.popup.layout.menuContainer.style.maxHeight="calc((36px * 5) + 16px)";this.popup.popupWindow.contentContainer.style.overflowX="hidden";p(this.popup.popupWindow.popupContainer,"mouseover",this.onMouseOver.bind(this));p(this.popup.popupWindow.popupContainer,"mouseleave",this.onMouseLeave.bind(this));var n=this.input.getBoundingClientRect();var s=e(this.input,this.popupRoot);var a=o(this.input,this.popupRoot);this.popup.popupWindow.popupContainer.style.top=a+n.height+"px";this.popup.popupWindow.popupContainer.style.left=s+"px";this.popup.popupWindow.popupContainer.style.width=n.width+"px"},onItemClick:function(i){t(this.input,i.name);n(this.input,"value",i.value);this.popup.close();this.onChangeHandler(i.value,this.items,this.postfix,this.property);this.onValueChangeHandler(this);BX.fireEvent(this.input,"input")},getValue:function(){return typeof this.input.dataset.value!=="undefined"?this.input.dataset.value:this.items[0].value},setValue:function(i){this.input.dataset.value=i;this.items.forEach(function(o){if(i==o.value){t(this.input,o.name);n(this.input,"value",o.value)}},this)},isChanged:function(){return this.content!=this.getValue()},onDocumentClick:function(){if(this.popup){this.popup.close()}},onMouseOver:function(){p(this.popup.popupWindow.popupContainer,!!window.onwheel?"wheel":"mousewheel",this.onMouseWheel.bind(this));p(this.popup.popupWindow.popupContainer,"touchmove",this.onMouseWheel.bind(this))},onMouseLeave:function(){s(this.popup.popupWindow.popupContainer,!!window.onwheel?"wheel":"mousewheel",this.onMouseWheel.bind(this));s(this.popup.popupWindow.popupContainer,"touchmove",this.onMouseWheel.bind(this))},onMouseWheel:function(t){t.stopPropagation();t.preventDefault();var i=BX.Landing.UI.Panel.Content.getDeltaFromEvent(t);var n=this.popup.popupWindow.contentContainer.scrollTop;requestAnimationFrame(function(){this.popup.popupWindow.contentContainer.scrollTop=n-i.y}.bind(this))}}})();