Files
BESCMS/public/static/assets/layui/cascader/cascader.min.js
T

10 lines
28 KiB
JavaScript

/**
* 仿element-ui,级联选择器
* 已实现单选、多选、无关联选择
* 其他功能:组件禁用、节点禁用、自定义属性、自定义空面板提示,自定义无选择时的提示、多选标签折叠、回显、搜索、动态加载、最大选中数量限制、禁用项固定等操作。
* element-ui没有的功能:最大选中数量限制、禁用项固定
* author: yixiaco
* gitee: https://gitee.com/yixiacoco/lay_cascader
* github: https://github.com/yixiaco/lay_cascader
*/
layui.define(["jquery"],function(r){function n(a){a=a||window.event;a.stopPropagation?a.stopPropagation():a.cancelBubble=!0}function p(a,b,c,d){this.data=a;this.cascader=b;this.config=b.config;this.props=b.props;this.level=c;this.parentNode=d;this.icons=b.icons;this._checked=0;this._loading=!1;this.nodeId=b.data.nodeId++}function q(a){this.config=k.extend(!0,{elem:"",value:null,options:[],empty:"\u6682\u65e0\u6570\u636e",placeholder:"\u8bf7\u9009\u62e9",disabled:!1,clearable:!1,showAllLevels:!0,collapseTags:!1,minCollapseTagsNumber:1,separator:" / ",filterable:!1,filterMethod:function(a,c){return a.path.some(function(a){return-1!==a.label.indexOf(c)})},debounce:300,beforeFilter:function(a){return!0},popperClass:"",extendClass:!1,extendStyle:!1,disabledFixed:!1,maxSize:0,props:{strictMode:!1,expandTrigger:"click",multiple:!1,checkStrictly:!1,lazy:!1,lazyLoad:function(a,c){},value:"value",label:"label",children:"children",disabled:"disabled",leaf:"leaf"}},a);this.data={nodeId:1,nodes:[],menuData:[],activeNodeId:null,activeNode:null,checkedNodeIds:[],checkedNodes:[]};this.showPanel=!1;this.event={change:[],open:[],close:[]};this.filtering=!1;this._init();this.closeEventId=0;this._maxSizeMode=null}var k=layui.jquery;p.prototype={constructor:p,get topParentNode(){return!this.parentNode&&this||this.topParentNode},childrenNode:void 0,get loading(){return this._loading},set loading(a){var b=this.$li;if(b){var c=this.icons.right,d=this.icons.loading,b=b.find("i");a?(b.addClass(d),b.removeClass(c)):(b.addClass(c),b.removeClass(d))}return this._loading=a},get label(){return this.data[this.props.label]},get value(){return this.data[this.props.value]},get disabled(){var a=this.config.maxSize,b=this.cascader.data.checkedNodeIds,c=this.props.disabled,d=this.props.checkStrictly;return this.props.multiple&&0!==a&&b.length>=a&&-1===b.indexOf(this.nodeId)&&(d||!this.getAllLeafChildren().map(function(a){return a.nodeId}).some(function(a){return-1!==b.indexOf(a)}))?!0:d?this.data[c]:this.path.some(function(a){return a.data[c]})},get children(){return this.data[this.props.children]},set children(a){this.data[this.props.children]=a},get leaf(){var a=this.data[this.props.leaf];return"boolean"===typeof a?a:this.children?0>=this.children.length:!0},get activeNodeId(){return this.cascader.data.activeNodeId},get checkedNodeIds(){return this.cascader.data.checkedNodeIds},get path(){var a=this.parentNode;return a?a.path.concat([this]):[this]},get isFiltering(){return this.cascader.isFiltering},get $tag(){var a=this.cascader,b=this.config.disabled,c=this.disabled,d=this.config.disabledFixed,e=this.getPathLabel(this.config.showAllLevels),b=a.get$tag(e,!b&&(!c||!d)),f=this;b.find("i").click(function(b){n(b);f.selectedValue();a.removeTag(f.value,f)});return b},getPathLabel:function(a){var b=this.path,c=this.config.separator;return a?b.map(function(a){return a.label}).join(c):b[b.length-1].label},init:function(){var a=this.props.multiple,b=this.props.checkStrictly,c=this.icons.from,d=this.icons.right,e="",f=this.label;this.leaf||(e=d);this.$li=k('\x3cli role\x3d"menuitem" id\x3d"cascader-menu" tabindex\x3d"-1" class\x3d"el-cascader-node" aria-haspopup\x3d"true" aria-owns\x3d"cascader-menu"\x3e\x3cspan class\x3d"el-cascader-node__label"\x3e'+f+'\x3c/span\x3e\x3ci class\x3d"'+c+" "+e+'"\x3e\x3c/i\x3e\x3c/li\x3e');a||b?!a&&b?this._renderRadioCheckStrictly():a&&!b?this._renderMultiple():a&&b&&this._renderMultipleCheckStrictly():this._renderRadio()},initSuggestionLi:function(){var a=this.getPathLabel(!0);this.$suggestionLi=k('\x3cli tabindex\x3d"-1" class\x3d"el-cascader__suggestion-item"\x3e\x3cspan\x3e'+a+"\x3c/span\x3e\x3c/li\x3e");this._renderFiltering()},bind:function(a){this.init();a.append(this.$li)},bindSuggestion:function(a){this.initSuggestionLi();a.append(this.$suggestionLi)},_renderFiltering:function(){var a=this.$suggestionLi,b=this.nodeId,c=this,d=this.cascader,e=this.props.multiple,f='\x3ci class\x3d"'+this.icons.from+" "+this.icons.ok+' el-icon-check"\x3e\x3c/i\x3e';a.click(function(g){n(g);c.selectedValue();e?-1===c.checkedNodeIds.indexOf(b)?(a.removeClass("is-checked"),a.find(".el-icon-check").remove()):(a.addClass("is-checked"),a.append(f)):d.close()});if(e&&-1!==c.checkedNodeIds.indexOf(b)||!e&&c.activeNodeId===b)a.addClass("is-checked"),a.append(f)},_renderRadio:function(){var a=this.$li,b=this.nodeId,c=this.icons.from,d=this.icons.ok,e=this.level,f=this.leaf,g=this,h=this.cascader,l=this.cascader.data.activeNode,m=this.parentNode;g.activeNodeId&&l.path.some(function(a){return a.nodeId===b})&&(g.activeNodeId===b&&a.prepend('\x3ci class\x3d"'+c+" "+d+' el-cascader-node__prefix"\x3e\x3c/i\x3e'),a.addClass("is-active"),a.addClass("in-checked-path"));this.disabled?a.addClass("is-disabled"):(a.addClass("is-selectable"),m&&(m.$li.siblings().removeClass("in-active-path"),m.$li.addClass("in-active-path")),this._liClick(function(a){n(a);var b=g.childrenNode;f&&"click"===a.type&&(g.selectedValue(),h.close());h._appendMenu(b,e+1,g)}))},_renderRadioCheckStrictly:function(){var a=this.$li,b=this.nodeId,c=this.level,d=this.leaf,e=this,f=this.cascader,g=f.data.activeNode,h=this.parentNode;a.addClass("is-selectable");var l=k('\x3clabel role\x3d"radio" tabindex\x3d"0" class\x3d"el-radio"\x3e\x3cspan class\x3d"el-radio__input"\x3e\x3cspan class\x3d"el-radio__inner"\x3e\x3c/span\x3e\x3cinput type\x3d"radio" aria-hidden\x3d"true" tabindex\x3d"-1" class\x3d"el-radio__original" value\x3d"'+b+'"\x3e\x3c/span\x3e\x3cspan class\x3d"el-radio__label"\x3e\x3cspan\x3e\x3c/span\x3e\x3c/span\x3e\x3c/label\x3e');this.$radio=l;a.prepend(l);h&&(h.$li.siblings().removeClass("in-active-path"),h.$li.addClass("in-active-path"));this._liClick(function(a){n(a);var b=e.childrenNode;!e.disabled&&d&&"click"===a.type&&e.selectedValue();f._appendMenu(b,c+1,e)});e.activeNodeId&&g.path.some(function(a){return a.nodeId===b})&&(e.activeNodeId===b&&l.find(".el-radio__input").addClass("is-checked"),a.addClass("is-active"),a.addClass("in-checked-path"));this.disabled?(l.addClass("is-disabled"),l.find(".el-radio__input").addClass("is-disabled")):l.click(function(a){a.preventDefault();!d&&e.selectedValue()})},_renderMultiple:function(){var a=this.$li,b=this.level,c=this.leaf,d=this,e=this.cascader,f=this._checked,g=this.parentNode;a.addClass("el-cascader-node");var h=k('\x3clabel class\x3d"el-checkbox"\x3e\x3cspan class\x3d"el-checkbox__input"\x3e\x3cspan class\x3d"el-checkbox__inner"\x3e\x3c/span\x3e\x3cinput type\x3d"checkbox" aria-hidden\x3d"false" class\x3d"el-checkbox__original" value\x3d""\x3e\x3c/span\x3e\x3c/label\x3e');this.$checked=h;a.prepend(h);1===f?this.$checked.find(".el-checkbox__input").addClass("is-checked"):2===f&&this.$checked.find(".el-checkbox__input").addClass("is-indeterminate");g&&(g.$li.siblings().removeClass("in-active-path"),g.$li.addClass("in-active-path"));this._liClick(function(a){n(a);var f=d.childrenNode;!d.disabled&&c&&"click"===a.type&&d.selectedValue();e._appendMenu(f,b+1,d)});this.disabled?(a.addClass("is-disabled"),h.addClass("is-disabled"),h.find(".el-checkbox__input").addClass("is-disabled")):h.click(function(a){a.preventDefault();c||(a=d.childrenNode,d.selectedValue(),e._appendMenu(a,b+1,d))})},_renderMultipleCheckStrictly:function(){var a=this.$li,b=this.level,c=this.leaf,d=this,e=this.cascader,f=e.data.checkedNodeIds,g=e.data.checkedNodes,h=this.nodeId,l=this.parentNode;a.addClass("el-cascader-node is-selectable");var m=k('\x3clabel class\x3d"el-checkbox"\x3e\x3cspan class\x3d"el-checkbox__input"\x3e\x3cspan class\x3d"el-checkbox__inner"\x3e\x3c/span\x3e\x3cinput type\x3d"checkbox" aria-hidden\x3d"false" class\x3d"el-checkbox__original" value\x3d""\x3e\x3c/span\x3e\x3c/label\x3e');this.$checked=m;a.prepend(m);g.some(function(a){return a.path.some(function(a){return a.nodeId===h})})&&(a.addClass("in-checked-path"),-1!==f.indexOf(h)&&this.$checked.find(".el-checkbox__input").addClass("is-checked"));l&&(l.$li.siblings().removeClass("in-active-path"),l.$li.addClass("in-active-path"));this._liClick(function(a){n(a);var f=d.childrenNode;!d.disabled&&c&&"click"===a.type&&d.selectedValue();e._appendMenu(f,b+1,d)});this.disabled?(m.addClass("is-disabled"),m.find(".el-checkbox__input").addClass("is-disabled")):m.click(function(a){a.preventDefault();c||(d.selectedValue(),e._appendMenu(d.childrenNode,b+1,d))})},transferParent:function(a,b,c){c||(c=this);(this===c&&!b||!1!==(a&&a(this)))&&this.parentNode&&this.parentNode.transferParent(a,b,c)},transferChildren:function(a,b,c){c||(c=this);if(this===c&&!b||!1!==(a&&a(this))){var d=this.getChildren();if(d&&0<d.length)for(var e in d)d[e].transferChildren(a,b,c)}},selectedValue:function(){var a=this.nodeId,b=this.cascader,c=this.props.multiple,d=this.props.checkStrictly,e=this.leaf;if(!c&&(e||d))b._setActiveValue(a,this);else if(c){var f=b.data.checkedNodeIds,c=b.data.checkedNodes,e=this.config.disabledFixed;if(d)d=f.indexOf(a),-1===d?a=c.concat([this]):(a=c.concat(),a.splice(d,1));else{var g=this.getAllLeafChildren();1===(1!==this._checked&&e?this._getMultipleChecked(g):this._checked)?a=c.filter(function(a){return!g.some(function(b){return a.nodeId===b.nodeId})}):(a=g.filter(function(a){return-1===f.indexOf(a.nodeId)}),a=c.concat(a))}d=a.map(function(a){return a.nodeId});b._setCheckedValue(d,a)}},_liLoad:function(a,b){var c=this.props.lazy,d=this.props.lazyLoad,e=this.children,f=this,g=this.cascader,h=this.level,k=this.props.multiple,m=this.props.checkStrictly;this.leaf||e&&0!==e.length||!c?b&&b(a):f.loading||(f.loading=!0,d(f,function(c){f.loading=!1;f.setChildren(g.initNodes(c,h+1,f));f.children=c;b&&b(a);k&&!m&&f.transferParent(function(a){a.syncStyle()},!0)}))},_liClick:function(a){function b(b){e._liLoad(b,a)}var c=this.leaf,d=this.$li,e=this;("click"===this.props.expandTrigger||c)&&d.click(b);"hover"===this.props.expandTrigger&&d.mouseenter(b)},setChildren:function(a){this.childrenNode=a},getChildren:function(){return this.childrenNode},syncStyle:function(){var a=this.props.checkStrictly;this.props.multiple?a?this._sync.syncMultipleCheckStrictly(this):this._sync.syncMultiple(this):a?this._sync.syncRadioCheckStrictly(this):this._sync.syncRadio(this)},_sync:{syncRadio:function(a){var b=a.$li,c=a.icons.from,d=a.icons.ok,e=a.props.multiple,f=a.props.checkStrictly,g=a.nodeId;!b||e||f||(e=a.cascader.data.activeNode,a.activeNodeId===g?0===b.find("."+d).length&&b.prepend('\x3ci class\x3d"'+c+" "+d+' el-cascader-node__prefix"\x3e\x3c/i\x3e'):b.find("."+d).remove(),e&&e.path.some(function(a){return a.nodeId===g})?(b.addClass("is-active"),b.addClass("in-checked-path")):(b.removeClass("is-active"),b.removeClass("in-checked-path")))},syncRadioCheckStrictly:function(a){var b=a.$li,c=a.props.checkStrictly,d=a.props.multiple;if(b&&!d&&c){var c=a.$radio,d=a.cascader.data.activeNode,e=a.nodeId;a.activeNodeId===e?c.find(".el-radio__input").addClass("is-checked"):c.find(".el-radio__input").removeClass("is-checked");d&&d.path.some(function(a){return a.nodeId===e})?(b.addClass("is-active"),b.addClass("in-checked-path")):(b.removeClass("is-active"),b.removeClass("in-checked-path"))}},syncMultiple:function(a){var b=a.$li,c=a.props.checkStrictly;a.props.multiple&&!c&&(c=a.getAllLeafChildren(a.config.disabledFixed),c=a._getMultipleChecked(c),a._checked=c,b&&(a=a.$checked.find(".el-checkbox__input"),0===c?(a.removeClass("is-checked"),a.removeClass("is-indeterminate")):1===c?(a.removeClass("is-indeterminate"),a.addClass("is-checked")):2===c&&(a.removeClass("is-checked"),a.addClass("is-indeterminate"))))},syncMultipleCheckStrictly:function(a){var b=a.$li,c=a.props.checkStrictly,d=a.props.multiple;if(b&&d&&c){var c=a.checkedNodeIds,e=a.nodeId,d=a.cascader.data.checkedNodes.some(function(a){return a.path.some(function(a){return a.nodeId===e})});a=a.$checked.find(".el-checkbox__input");c.some(function(a){return a===e})?a.addClass("is-checked"):a.removeClass("is-checked");d?b.addClass("in-checked-path"):b.removeClass("in-checked-path")}}},getAllLeafChildren:function(a){if(this.leaf)return[this];var b=[];this.transferChildren(function(c){if(c.disabled&&!a)return!1;c.leaf&&b.push(c)});return b},expandPanel:function(){var a=this.cascader;this.path.forEach(function(b,c,d){c!==d.length-1&&a._appendMenu(b.childrenNode,b.level+1,b.parentNode)})},_getMultipleChecked:function(a){var b=this.cascader.data.checkedNodeIds;a=a.map(function(a){return a.nodeId});for(var c=0,d=0;d<a.length&&2!==c;d++)c=-1!==b.indexOf(a[d])?0<d&&1!==c?2:1:1===c?2:0;return c}};q.prototype={constructor:q,get props(){return this.config.props},get isFiltering(){return this.filtering},set isFiltering(a){this.filtering!==a&&(this.filtering=!!a,a=this.$panel,this.filtering?(a.find(".el-cascader-panel").hide(),a.find(".el-cascader__suggestion-panel").show()):(a.find(".el-cascader-panel").show(),a.find(".el-cascader__suggestion-panel").hide(),this.$tagsInput&&this.$tagsInput.val("")))},set maxSizeMode(a){this._maxSizeMode!==a&&(this._maxSizeMode=a,this.refreshMenu())},icons:{from:"layui-icon",down:"layui-icon-down",close:"layui-icon-close",right:"layui-icon-right",ok:"layui-icon-ok",loading:"layui-icon-loading-1 layui-anim layui-anim-rotate layui-anim-loop"},_init:function(){this._checkConfig();this._initInput();this._initPanel();this.setOptions(this.config.options);var a=this;k(window).scroll(function(){a._resetXY()});k(window).resize(function(){a._resetXY()});this.$div.click(function(b){a.config.disabled||(a.showPanel?a.close():a.open())})},_checkConfig:function(){var a=this.config.elem;if(!a||0===k(a).length)throw Error("\u7f3a\u5c11elem\u8282\u70b9\u9009\u62e9\u5668");a=this.config.maxSize;if("number"!==typeof a||0>a)throw Error("maxSize\u5e94\u662f\u4e00\u4e2a\u5927\u4e8e\u7b49\u4e8e0\u7684\u6709\u6548\u7684number\u503c");if(!Array.isArray(this.config.options))throw Error("options\u4e0d\u662f\u4e00\u4e2a\u6709\u6548\u7684\u6570\u7ec4");},_initRoot:function(){var a=this.props.lazy,b=this.props.lazyLoad,c=this,d=this.data.nodes;0<d.length||!a?this._appendMenu(d,0):a&&(this._appendMenu(d,0),b({root:!0,level:0},function(a){c.data.nodes=c.initNodes(a,0,null);c._appendMenu(c.data.nodes,0)}))},setOptions:function(a){this.config.options=a;this.data.nodes=this.initNodes(a,0,null);this._initRoot();this.setValue(this.config.value)},_resetXY:function(){var a=this.$div,b=a.offset(),c=this.$panel;if(c){var d=window.innerHeight,e=window.innerWidth,f=c.height(),g=c.width(),h=a.height(),a=a[0].getBoundingClientRect(),k=c.find(".popper__arrow"),e=Math.min(e-a.x-g-5,0);d-(a.top+h)<f&&a.top>f+20?(c.attr("x-placement","top-start"),c.css({top:b.top-20-f+"px",left:b.left+e+"px"})):(c.attr("x-placement","bottom-start"),c.css({top:b.top+h-Math.max(f-(d-a.y-h-15),0)+"px",left:b.left+e+"px"}));k.css("left",35-e+"px")}},get $menus(){return this.$panel&&this.$panel.find(".el-cascader-panel .el-cascader-menu")},_initInput:function(){var a=k(this.config.elem),b=this;null===this.config.value&&a.attr("value")&&(this.config.value=a.attr("value"));var c=this.config.placeholder,d=this.icons.from,e=this.icons.down,f=this.props.multiple,g=this.config.extendClass,h=this.config.extendStyle;this.$div=k('\x3cdiv class\x3d"el-cascader"\x3e\x3c/div\x3e');h&&(h=a.attr("style"))&&this.$div.attr("style",h);g&&(g=a.attr("class"))&&g.split(" ").forEach(function(a){b.$div.addClass(a)});this.$input=k('\x3cdiv class\x3d"el-input el-input--suffix"\x3e\x3cinput type\x3d"text" readonly\x3d"readonly" autocomplete\x3d"off" placeholder\x3d"'+c+'" class\x3d"el-input__inner"\x3e\x3cspan class\x3d"el-input__suffix"\x3e\x3cspan class\x3d"el-input__suffix-inner"\x3e\x3ci class\x3d"el-icon-arrow-down '+d+" "+e+'" style\x3d"font-size: 12px"\x3e\x3c/i\x3e\x3c/span\x3e\x3c/span\x3e\x3c/div\x3e');this.$div.append(this.$input);this.$inputRow=this.$input.find(".el-input__inner");f&&(this.$tags=k('\x3cdiv class\x3d"el-cascader__tags"\x3e\x3c!----\x3e\x3c/div\x3e'),this.$div.append(this.$tags));this._initHideElement(a).after(this.$div);this.$icon=this.$input.find("i");this._initFilterableInputEvent();this.disabled(this.config.disabled)},_initHideElement:function(a){if("input"===a.prop("tagName").toLowerCase())return a.hide(),a.attr("type","hidden"),this.$ec=a;var b=a[0].attributes,c=k("\x3cinput /\x3e"),d=Object.keys(b),e;for(e in d)d=b[e],c.attr(d.name,d.value);c.hide();c.attr("type","hidden");this.$ec=c;a.before(c);a.remove();return c},_initFilterableInputEvent:function(){function a(a){var d=this;b&&clearTimeout(b);b=setTimeout(function(){b=null;var a=k(d).val();if(a){if(h.open(),"function"===typeof e&&e(a)){h.isFiltering=!0;var c=h.getNodes().filter(function(b){var c;c=g?b.disabled:b.path.some(function(a){return a.disabled});return(b.leaf||g)&&!c&&"function"===typeof f&&f(b,a)?!0:!1});h._setSuggestionMenu(c)}}else h.isFiltering=!1},c)}if(this.config.filterable){var b,c=this.config.debounce,d=this.config.placeholder,e=this.config.beforeFilter,f=this.config.filterMethod,g=this.props.checkStrictly,h=this;this.props.multiple?(d=this.$tagsInput=k('\x3cinput type\x3d"text" autocomplete\x3d"off" placeholder\x3d"'+d+'" class\x3d"el-cascader__search-input"\x3e'),this.$tags.append(d),d.on("keydown",a),d.click(function(a){h.isFiltering&&n(a)})):(d=this.$inputRow,d.removeAttr("readonly"),d.on("keydown",a),d.click(function(a){h.isFiltering&&n(a)}))}},_initPanel:function(){var a=this.$panel,b=this.config.popperClass||"";a||(a=this.$panel=k('\x3cdiv class\x3d"el-popper el-cascader__dropdown '+b+'" style\x3d"position: absolute; z-index: 109891015;display: none;" x-placement\x3d"bottom-start"\x3e\x3cdiv class\x3d"el-cascader-panel"\x3e\x3c/div\x3e\x3cdiv class\x3d"popper__arrow" style\x3d"left: 35px;"\x3e\x3c/div\x3e\x3c/div\x3e'),a.appendTo("body"),a.click(function(a){n(a)}),this._initSuggestionPanel())},_appendMenu:function(a,b,c,d){this._removeMenu(b);if(!c||!c.leaf){var e=this.data.menuData,f=k('\x3cdiv class\x3d"el-scrollbar el-cascader-menu" role\x3d"menu" id\x3d"cascader-menu"\x3e\x3cdiv class\x3d"el-cascader-menu__wrap el-scrollbar__wrap" style\x3d"margin-bottom: -17px; margin-right: -17px;"\x3e\x3cul class\x3d"el-scrollbar__view el-cascader-menu__list"\x3e\x3c/ul\x3e\x3c/div\x3e\x3c/div\x3e');this.$panel.find(".el-cascader-panel").append(f);this._appendLi(f,a);a={nodes:a,level:b,parentNode:c,scrollbar:{top:0,left:0}};d&&(a.scrollbar=d.scrollbar);this._initScrollbar(f,a);this._resetXY();e.push(a)}},_removeMenu:function(a){var b=a-1;-1!==b?this.$panel.find(".el-cascader-panel .el-cascader-menu:gt("+b+")").remove():this.$panel.find(".el-cascader-panel .el-cascader-menu").remove();b=this.data.menuData;b.length>a&&b.splice(a,b.length-a)},_appendLi:function(a,b){var c=a.find(".el-cascader-menu__list");b&&0!==b.length?k.each(b,function(a,b){b.bind(c)}):c.append('\x3cdiv class\x3d"el-cascader-menu__empty-text"\x3e'+this.config.empty+"\x3c/div\x3e")},refreshMenu:function(){var a=this;this.data.menuData.concat([]).forEach(function(b){a._appendMenu(b.nodes,b.level,b.parentNode,b)})},_initSuggestionPanel:function(){if(this.config.filterable){var a=this.$suggestionPanel;a||(a=this.$suggestionPanel=k('\x3cdiv class\x3d"el-cascader__suggestion-panel el-scrollbar" style\x3d"display: none;"\x3e\x3cdiv class\x3d"el-scrollbar__wrap" style\x3d"margin-bottom: -17px; margin-right: -17px;"\x3e\x3cul class\x3d"el-scrollbar__view el-cascader__suggestion-list" style\x3d"min-width: 222px;"\x3e\x3c/ul\x3e\x3c/div\x3e\x3c/div\x3e'),this.$panel.find(".popper__arrow").before(a),a.click(function(a){n(a)}))}},_setSuggestionMenu:function(a){var b=this.$suggestionPanel,c=b.find(".el-cascader__suggestion-list");c.empty();b.find(".el-scrollbar__bar").remove();a&&0!==a.length?(k.each(a,function(a,b){b.bindSuggestion(c)}),this._initScrollbar(b,{scrollbar:{top:0,left:0}}),this._resetXY()):c.append('\x3cli class\x3d"el-cascader__empty-text"\x3e\u65e0\u5339\u914d\u6570\u636e\x3c/li\x3e')},initNodes:function(a,b,c){var d=[],e;for(e in a){var f=new p(a[e],this,b,c);d.push(f);f.children&&0<f.children.length&&f.setChildren(this.initNodes(f.children,b+1,f))}return d},_setActiveValue:function(a,b){if(this.data.activeNodeId!==a){var c=this.data.activeNode;this.data.activeNodeId=a;this.data.activeNode=b;c&&c.transferParent(function(a){a.syncStyle()},!0);b&&b.transferParent(function(a){a.syncStyle()},!0);this.change(b&&b.value,b);null!==a&&this._setClear()}},_setCheckedValue:function(a,b){var c=this.data.checkedNodes,d=this.config.maxSize;0<a.length&&0!==d&&a.length>=d?(a=a.slice(0,d),b=b.slice(0,d),d=!0):d=!1;this.data.checkedNodeIds=a||[];this.data.checkedNodes=b||[];var e=[],f=[];c.forEach(function(a){a.path.forEach(function(a){-1===f.indexOf(a.nodeId)&&(e.push(a),f.push(a.nodeId))})});b.forEach(function(a){a.path.forEach(function(a){-1===f.indexOf(a.nodeId)&&(e.push(a),f.push(a.nodeId))})});e.forEach(function(a){a.syncStyle()});this.change(b.map(function(a){return a.value}),b);this._setClear();this.maxSizeMode=d},setValue:function(a){(this.data.activeNodeId||0<this.data.checkedNodeIds.length)&&this.clearCheckedNodes();if(a){var b=this.props.strictMode;if(b&&!Array.isArray(a))throw Error("\u4e25\u683c\u6a21\u5f0f\u4e0b,value\u5fc5\u987b\u662f\u4e00\u4e2a\u5305\u542b\u7236\u5b50\u8282\u70b9\u6570\u7ec4\u7ed3\u6784.");var c=this.getNodes(this.data.nodes),d=this.props.checkStrictly,e=this.config.disabledFixed;if(this.props.multiple){var c=c.filter(function(c){return!d&&!c.leaf||c.disabled&&!e?!1:b?a.some(function(a){if(!Array.isArray(a))throw Error("\u591a\u9009\u4e25\u683c\u6a21\u5f0f\u4e0b,value\u5fc5\u987b\u662f\u4e00\u4e2a\u4e8c\u7ef4\u6570\u7ec4\u7ed3\u6784.");var b=c.path;return a.length===b.length&&a.every(function(a,c){return b[c].value===a})}):-1!==a.indexOf(c.value)}),f=c.map(function(a){return a.nodeId});this._setCheckedValue(f,c);0<c.length&&c[0].expandPanel()}else for(f=0;f<c.length;f++){var g=c[f];if(d||g.leaf){var h=!1;if(b)var k=g.path,h=a.length===k.length&&a.every(function(a,b){return k[b].value===a});else g.value===a&&(h=!0);if(h){this._setActiveValue(g.nodeId,g);g.expandPanel();break}}}}},getNodes:function(a,b){b||(b=[]);a||(a=this.data.nodes);var c=this;a.forEach(function(a){b.push(a);(a=a.getChildren())&&c.getNodes(a,b)});return b},_initScrollbar:function(a,b){function c(b,c){1>l&&(e.css("height",100*l+"%"),e.css("transform","translateY("+b/a.height()*100+"%)"));1>m&&(f.css("width",100*m+"%"),f.css("transform","translateY("+c/a.width()*100+"%)"))}var d=k('\x3cdiv class\x3d"el-scrollbar__bar is-onhoriztal"\x3e\x3cdiv class\x3d"el-scrollbar__thumb" style\x3d"transform: translateX(0%);"\x3e\x3c/div\x3e\x3c/div\x3e\x3cdiv class\x3d"el-scrollbar__bar is-vertical"\x3e\x3cdiv class\x3d"el-scrollbar__thumb" style\x3d"transform: translateY(0%);"\x3e\x3c/div\x3e\x3c/div\x3e');a.append(d);var e=k(d[1]).find(".el-scrollbar__thumb"),f=k(d[0]).find(".el-scrollbar__thumb"),g=a.find(".el-scrollbar__wrap"),d=this.$panel,h=a.find("li"),l=(Math.max(d.height(),a.height())-6)/(h.height()*h.length),m=d.width()/h.width();e.mousedown(function(a){a.stopImmediatePropagation();n(a);var b=function(){return!1};k(document).bind("selectstart",b);var c=a.clientY,d=g.scrollTop(),e=function(a){a.stopImmediatePropagation();g.scrollTop(d+(a.clientY-c)/l)};k(document).bind("mousemove",e);k(document).one("mouseup",function(a){n(a);a.stopImmediatePropagation();k(document).off("mousemove",e);k(document).off("selectstart",b)})});g.scroll(function(){var a=k(this);b.scrollbar.top=a.scrollTop();b.scrollbar.left=a.scrollLeft();c(b.scrollbar.top,b.scrollbar.left)});g.scrollTop(b.scrollbar.top);c(b.scrollbar.top,b.scrollbar.left)},_fillingPath:function(){var a=this.config.showAllLevels,b=this.config.separator,c=this.config.collapseTags,d=this.$inputRow,e=this.config.placeholder,f=this;if(this.props.multiple){this.$tags.find(".el-tag").remove();var g=this.$tagsInput;d.css("height","");a=this.data.checkedNodes;b=Math.max(this.config.minCollapseTagsNumber,1);if(0<a.length){var h=[],k=a;c&&(k=a.slice(0,Math.min(a.length,b)));k.forEach(function(a){h.push(a.$tag)});c&&a.length>b&&h.push(f.get$tag("+ "+(a.length-b),!1));h.forEach(function(a){g?g.before(a):f.$tags.append(a)})}c=f.$tags.height();b=d.height();c>b&&d.css("height",c+4+"px");this._resetXY();0<a.length?(d.removeAttr("placeholder"),g&&g.removeAttr("placeholder",e)):(d.attr("placeholder",e),g&&g.attr("placeholder",e))}else e=(d=this.data.activeNode)&&d.path||[],a?this._$inputRowSetValue(e.map(function(a){return a.label}).join(b)):this._$inputRowSetValue(d&&d.label||"")},_$inputRowSetValue:function(a){a=a||"";var b=this.$inputRow;b.attr("value",a);b.val(a)},get$tag:function(a,b){var c=this.icons.from,d=this.icons.close;return k('\x3cspan class\x3d"el-tag el-tag--info el-tag--small el-tag--light"\x3e\x3cspan\x3e'+a+"\x3c/span\x3e"+(b?'\x3ci class\x3d"el-tag__close el-icon-close '+c+" "+d+'"\x3e\x3c/i\x3e':"")+"\x3c/span\x3e")},_setClear:function(){function a(){b.$icon.removeClass(b.icons.close);b.$icon.addClass(b.icons.down)}var b=this;b.$div.mouseenter(function(){b.$icon.removeClass(b.icons.down);b.$icon.addClass(b.icons.close)});b.$div.mouseleave(function(){a()});b.$icon.off("click");if((this.props.multiple?0<this.data.checkedNodeIds.length:this.data.activeNodeId)&&!this.config.disabled&&this.config.clearable)b.$icon.one("click",function(c){n(c);b.close();b.clearCheckedNodes();a();b.$icon.off("mouseenter");b.$div.off("mouseenter");b.$div.off("mouseleave")});else a(),b.$icon.off("mouseenter"),b.$div.off("mouseenter"),b.$div.off("mouseleave")},disabled:function(a){this.config.disabled=!!a;this.config.disabled?(this.$div.addClass("is-disabled"),this.$div.find(".el-input--suffix").addClass("is-disabled"),this.$inputRow.attr("disabled","disabled"),this.$tagsInput&&this.$tagsInput.attr("disabled","disabled").hide()):(this.$div.removeClass("is-disabled"),this.$div.find(".el-input--suffix").removeClass("is-disabled"),this.$inputRow.removeAttr("disabled"),this.$tagsInput&&this.$tagsInput.removeAttr("disabled").show());this._setClear();this._fillingPath()},change:function(a,b){this.props.multiple?a&&0<a.length?this.$ec.attr("value",JSON.stringify(a)):this.$ec.removeAttr("value"):this.$ec.attr("value",a||"");this._fillingPath();this.event.change.forEach(function(c){"function"===typeof c&&c(a,b)})},close:function(a){!this.showPanel||a&&this.closeEventId!==a||(this.showPanel=!1,this.$div.find(".layui-icon-down").removeClass("is-reverse"),this.$panel.slideUp(100),this.visibleChange(!1),this.$input.removeClass("is-focus"),this.config.filterable&&(this.isFiltering=!1,this._fillingPath()),this.event.close.forEach(function(a){"function"===typeof a&&a()}))},open:function(){if(!this.showPanel){this.showPanel=!0;this.closeEventId++;var a=this;setTimeout(function(){k(document).one("click",a.close.bind(a,a.closeEventId))});this._resetXY();this.$div.find(".layui-icon-down").addClass("is-reverse");this.$panel.slideDown(200);this.visibleChange(!0);this.$input.addClass("is-focus");this.event.open.forEach(function(a){"function"===typeof a&&a()})}},visibleChange:function(a){},removeTag:function(a,b){},getCheckedValues:function(){var a=this.props.strictMode;if(this.props.multiple){var b=this.data.checkedNodes;return a?b.map(function(a){return a.path.map(function(a){return a.value})}):b.map(function(a){return a.value})}b=this.data.activeNode;return a?b&&b.path.map(function(a){return a.value}):b&&b.value},getCheckedNodes:function(){var a=this.props.strictMode;if(this.props.multiple){var b=this.data.checkedNodes;return a?b&&b.map(function(a){return a.path}):b}b=this.data.activeNode;return a?b&&b.path:b},clearCheckedNodes:function(a){if(this.props.multiple){var b=this.config.disabledFixed;!a&&b?(a=this.data.checkedNodes.filter(function(a){return a.disabled}),b=a.map(function(a){return a.nodeId}),this._setCheckedValue(b,a)):this._setCheckedValue([],[])}else this._setActiveValue(null,null)}};var t=function(){var a=this;return{setOptions:function(b){a.setOptions(b)},setValue:function(b){a.setValue(b)},changeEvent:function(b){a.event.change.push(b)},closeEvent:function(b){a.event.close.push(b)},openEvent:function(b){a.event.open.push(b)},disabled:function(b){a.disabled(b)},close:function(){a.close()},open:function(){a.open()},getCheckedNodes:function(){return a.getCheckedNodes()},getCheckedValues:function(){return a.getCheckedValues()},clearCheckedNodes:function(b){a.clearCheckedNodes(b)},expandNode:function(b){for(var c=a.getNodes(a.data.nodes),d=0;d<c.length;d++){var e=c[d];if(e.value===b){e.expandPanel();break}}},getConfig:function(){return k.extend(!0,{},a.config)},getData:function(){return k.extend(!0,{},a.data)}}};r("layCascader",function(a){a=new q(a);return t.call(a)})});