Your IP : 18.221.97.30
(function(){"use strict";BX.namespace("BX.Disk.Tree");BX.Disk.Tree.Structure=function(e,t){t=BX.type.isPlainObject(t)?t:{};t.events=t.events||{};this.multipleChoice=t.multipleChoice||false;this.rootObject=e;this.parameters=t;this.ajaxUrl=t.ajaxUrl||"/bitrix/components/bitrix/disk.folder.list/ajax.php";this.rootNode=null;this.container=null;this.events={onSelectFolder:this.parameters.events.onSelectFolder,onUnSelectFolder:this.parameters.events.onUnSelectFolder};this.setEvents()};BX.Disk.Tree.Structure.prototype={setEvents:function(){},buildByRoot:function(){return this.buildByObject(this.rootObject)},buildByObject:function(e){this.rootNode=this.buildTreeNode(e);this.loadSubFolders(e.id).then(function(e){var t=BX.create("ul",{props:{className:"bx-disk-wood-folder"}});this.rootNode.appendChild(t);this.buildTree(this.rootNode,e);this.container=this.rootNode.parentNode}.bind(this));return this.rootNode},getRootNode:function(){return this.rootNode},loadSubFolders:function(e){return BX.Disk.ajaxPromise({method:"POST",dataType:"json",url:BX.Disk.addToLinkParam(this.ajaxUrl,"action","showSubFolders"),data:{objectId:e}})},showSubFolders:function(e){if(!e){return}var t=e.getAttribute("data-object-id");if(!t){return}this.loadSubFolders(t).then(function(t){this.buildTree(e,t)}.bind(this))},buildTree:function(e,t,i){i=i||{};var s=BX.create("ul",{props:{className:"bx-disk-wood-folder"}});e.appendChild(s);if(t.items.length){t.items.forEach(function(e){if(e.id==i.id){return}s.appendChild(this.buildTreeNode(e))},this)}else{BX.cleanNode(BX.findChildByClassName(e,"bx-disk-wf-arrow",true))}BX.removeClass(e,"bx-disk-close");BX.addClass(e,"bx-disk-open");BX.addClass(e,"bx-disk-loaded")},buildTreeNode:function(e){return BX.create("li",{props:{className:"bx-disk-folder-container bx-disk-parent bx-disk-close "+(!e.canAdd?"bx-disk-only-view":"bx-disk-can-select")},dataset:{objectId:e.id,hasSubFolders:e.hasSubFolders?1:"",canAdd:!!e.canAdd},children:[BX.create("div",{props:{className:"bx-disk-folder-container"},children:[BX.create("table",{children:[BX.create("tr",{children:[BX.create("td",{props:{className:"bx-disk-wf-arrow"},events:{click:this.onClickToExpand.bind(this)},children:[e.hasSubFolders?BX.create("span"):null]}),BX.create("td",{props:{className:"bx-disk-wf-folder-icon"},events:{click:this.onClickTreeNode.bind(this)},children:[BX.create("span")]}),BX.create("td",{props:{className:"bx-disk-wf-folder-name disk-unselectable"},events:{click:this.onClickTreeNode.bind(this),dblclick:this.onClickToExpand.bind(this)},children:[BX.create("span",{text:e.name})]})]})]})]})]})},onClickToExpand:function(e){var t=e.target||e.srcElement;var i=BX.findParent(t,{className:"bx-disk-parent"});if(this.isOpened(i)){this.collapse(i)}else{this.expand(i)}},collapse:function(e){if(BX.hasClass(e,"bx-disk-open")){BX.removeClass(e,"bx-disk-open");BX.addClass(e,"bx-disk-close")}},expand:function(e){if(BX.hasClass(e,"bx-disk-loaded")){BX.removeClass(e,"bx-disk-close");BX.addClass(e,"bx-disk-open");return}this.showSubFolders(e)},isSelectedNode:function(e){return BX.hasClass(e,"selected")},isOpened:function(e){return BX.hasClass(e,"bx-disk-open")},hasSubFolders:function(e){return!!e.dataset.hasSubFolders},unselectNode:function(e){if(!e){return}BX.removeClass(e,"selected");BX.onCustomEvent(this,"Tree:onUnSelectFolder",[e,e.dataset.objectId]);this.lastUnselectedFolder=e;if(BX.type.isFunction(this.events.onUnSelectFolder)){this.events.onUnSelectFolder(e,e.dataset.objectId)}},selectNode:function(e){if(!e){return}BX.addClass(e,"selected");BX.onCustomEvent(this,"Tree:onSelectFolder",[e,e.dataset.objectId,this.lastUnselectedFolder]);if(BX.type.isFunction(this.events.onSelectFolder)){this.events.onSelectFolder(e,e.dataset.objectId,this.lastUnselectedFolder)}},onClickTreeNode:function(e){var t=e.target||e.srcElement;var i=BX.findParent(t,{className:"bx-disk-parent"});if(this.isSelectedNode(i)){this.unselectNode(i)}else{if(!this.multipleChoice){this.unselectAllNodes()}this.selectNode(i)}},getSelectedNodes:function(){return e(this.container,"selected")},getFirstSelectedNode:function(){var e=this.getSelectedNodes();return e.length?e[0]:null},getFirstSelectedId:function(){var e=this.getSelectedIds();return e?e[0]:null},unselectAllNodes:function(){var t=e(this.container,"selected");t.forEach(function(e){this.unselectNode(e)},this)},getSelectedIds:function(){var t=e(this.container,"selected");return t.map(function(e){return e.dataset.objectId})}};BX.Disk.Tree.Modal=function(e,t){t=BX.type.isPlainObject(t)?t:{};this.tree=t.tree||new BX.Disk.Tree.Structure(e,t);this.modalParameters="modalParameters"in t?t.modalParameters:{};this.modalWindow=null;this.enableKeyboardNavigation="enableKeyboardNavigation"in t?t.enableKeyboardNavigation:true;this.heightNode=30;this.paddingModal=20;this.addHandlers()};BX.Disk.Tree.Modal.prototype={show:function(){if(this.modalWindow){this.modalWindow.show();return}var e=this.handleKeyPress.bind(this);this.modalWindow=BX.Disk.modalWindow({height:Math.min(document.documentElement.clientHeight-100,400),bindElement:this.modalParameters.bindElement||null,title:this.modalParameters.title||BX.message("DISK_FOLDER_LIST_TITLE_MODAL_TREE"),overlay:true,autoHide:true,modalId:this.modalParameters.modalId||"bx-disk-toolbar-tree",content:[this.modalParameters.contentTitle?this.buildContentTitle(this.modalParameters.contentTitle):null,BX.create("ul",{props:{className:"bx-disk-wood-folder"},children:[this.tree.buildByRoot()]})],events:{onPopupShow:function(){this.tree.selectNode(this.tree.getRootNode());BX.bind(document,"keydown",e)}.bind(this),onPopupClose:function(){BX.unbind(document,"keydown",e)}},buttons:this.modalParameters.buttons||null})},buildContentTitle:function(e){return BX.create("div",{props:{className:"bx-disk-popup-content-title"},text:e})},handleEnter:function(e,t,i){},handleUpArrow:function(e,t,i){this.tree.unselectAllNodes();this.tree.selectNode(e.previousSibling||BX.findParent(e,{className:"bx-disk-open"},10));if(!this.tree.getFirstSelectedNode()){this.tree.selectNode(e)}i.preventDefault()},getNextSibling:function(e){if(!e){return null}if(e.nextSibling){return e.nextSibling}return this.getNextSibling(BX.findParent(e,{className:"bx-disk-open"},10))},handleDownArrow:function(t,i,s){this.tree.unselectAllNodes();if(this.tree.isOpened(t)){this.tree.selectNode(e(t,"bx-disk-can-select",true))}else{this.tree.selectNode(this.getNextSibling(t))}if(!this.tree.getFirstSelectedNode()){this.tree.selectNode(t)}s.preventDefault()},handleLeftArrow:function(e,t,i){if(this.tree.hasSubFolders(e)&&this.tree.isOpened(e)){this.tree.collapse(e)}else{this.tree.unselectAllNodes();this.tree.selectNode(BX.findParent(e,{className:"bx-disk-open"},10));if(!this.tree.getFirstSelectedNode()){this.tree.selectNode(e)}}i.preventDefault()},handleRightArrow:function(e,t,i){if(this.tree.hasSubFolders(e)){this.tree.expand(e)}i.preventDefault()},handleKeyPress:function(e){if(!this.enableKeyboardNavigation||!this.tree.getFirstSelectedId()){return}if(this.tree.multipleChoice){return}var t=this.tree.getFirstSelectedNode();var i=t.dataset.objectId;var s=(e||window.event).keyCode||(e||window.event).charCode;if(s==13){this.handleEnter(t,i,e)}if(s==38){this.handleUpArrow(t,i,e)}else if(s==40){this.handleDownArrow(t,i,e)}else if(s==37){this.handleLeftArrow(t,i,e)}else if(s==39){this.handleRightArrow(t,i,e)}},handleSelectFolder:function(e,t,i){if(this.isVisibleNode(i)&&!this.isVisibleNode(e)&&i.offsetTop>e.offsetTop){this.modalWindow.contentContainer.scrollTop-=this.heightNode*2}else if(this.isVisibleNode(i)&&this.getNextSibling(e)&&!this.isVisibleNode(this.getNextSibling(e))){this.modalWindow.contentContainer.scrollTop+=this.heightNode*2}else if(!this.isVisibleNode(e)){this.scrollToNode(e)}},addHandlers:function(){BX.addCustomEvent(this.tree,"Tree:onSelectFolder",this.handleSelectFolder.bind(this))},scrollToNode:function(e){if(this.modalWindow){this.modalWindow.contentContainer.scrollTop=e.offsetTop-this.heightNode-this.paddingModal}},isVisibleNode:function(e){if(!e){return false}if(!this.modalWindow){return false}return this.modalWindow.contentContainer.scrollTop+this.heightNode+this.paddingModal<=e.offsetTop&&this.modalWindow.contentContainer.scrollTop+this.heightNode+this.paddingModal>=e.offsetTop-400}};BX.Disk.Tree.Modal.buildByTree=function(e,t){t=BX.type.isPlainObject(t)?t:{};t.tree=e;return new BX.Disk.Tree.Modal(null,t)};BX.Disk.Tree.NavigateModal=function(e,t){BX.Disk.Tree.Modal.apply(this,arguments);this.modalWindow=null};BX.Disk.Tree.NavigateModal.prototype={__proto__:BX.Disk.Tree.Modal.prototype,constructor:BX.Disk.Tree.NavigateModal,handleEnter:function(e,t,i){window.location=BX.Disk.getUrlToShowObjectInGrid(t);i.preventDefault()}};var e=function(e,t,i){var s=[];if(t){s=e?e.getElementsByClassName(t):[];if(i){s=s.length?s[0]:null}else{s=[].slice.call(s)}}return s}})();