UNPKG

vxe-pc-ui

Version:
1 lines 3.71 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_ui=require("../../ui"),_vn=require("../../ui/src/vn"),_xeUtils=_interopRequireDefault(require("xe-utils"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var _default=exports.default=(0,_vue.defineComponent)({name:"VxeCollapse",props:{modelValue:Array,options:Array,padding:{type:Boolean,default:()=>(0,_ui.getConfig)().collapse.padding},expandConfig:Object,size:{type:String,default:()=>(0,_ui.getConfig)().collapse.size||(0,_ui.getConfig)().size}},emits:["update:modelValue","load","change","toggle-expand"],setup(n,e){const{emit:s,slots:l}=e;var t=_xeUtils.default.uniqueId();const u=(0,_ui.useSize)(n)["computeSize"],c=(0,_vue.ref)(),r=(0,_vue.reactive)({staticPanes:[],activeNames:[],initNames:[],cachePaneMaps:{}}),a={refElem:c},o=(0,_vue.computed)(()=>{var e=n["options"];return(e||[]).filter(e=>_(e))}),v=(0,_vue.computed)(()=>{var e=r["staticPanes"];return e.filter(e=>_(e))}),p=(0,_vue.computed)(()=>Object.assign({},(0,_ui.getConfig)().collapse.expandConfig,n.expandConfig)),i={},d={xID:t,props:n,context:e,reactData:r,getRefMaps:()=>a,getComputeMaps:()=>i},_=e=>{e=e.permissionCode;return!(e&&!_ui.permission.checkVisible(e))},m=e=>{var t=r["initNames"];return!(!e||t.includes(e)||(t.push(e),g("load",{name:e},null),0))},h=e=>{const s=r["activeNames"],i={};e&&e.length&&e.forEach(e=>{var t,{name:e,preload:a}=e||{};e&&(t=s.includes(e),i[""+e]={loading:!1},t&&m(e),a)&&!t&&s.push(e)}),r.activeNames=s?s.slice(0):[],r.cachePaneMaps=i},g=(e,t,a)=>{s(e,(0,_ui.createEvent)(a,{$collapse:d},t))};t={dispatchEvent:g};const f=(e,t)=>e&&(_xeUtils.default.isString(e)&&(e=l[e]||null),_xeUtils.default.isFunction(e))?(0,_vn.getSlotVNs)(e(t)):[],x=(t,a)=>{var s=r["activeNames"],a=a["name"];if(a){var i=s.indexOf(a);let e=!1;-1===i?(e=!0,s.push(a)):s.splice(i,1),m(a),g("change",{value:s,name:a},t),g("toggle-expand",{value:s,name:a,expanded:e},t)}};Object.assign(d,t,{});(0,_vue.watch)(()=>n.modelValue,e=>{r.activeNames=e||[]});const C=(0,_vue.ref)(0),E=((0,_vue.watch)(()=>n.options?n.options.length:-1,()=>{C.value++}),(0,_vue.watch)(()=>n.options,()=>{C.value++}),(0,_vue.watch)(C,()=>{h(n.options)}),(0,_vue.ref)(0));return(0,_vue.watch)(()=>r.staticPanes?r.staticPanes.length:-1,()=>{E.value++}),(0,_vue.watch)(()=>r.staticPanes,()=>{E.value++}),(0,_vue.watch)(E,()=>{h(r.staticPanes)}),r.activeNames=n.modelValue||[],h(r.staticPanes.length?r.staticPanes:n.options),(0,_vue.provide)("$xeCollapse",d),d.renderVN=()=>{var e=n["padding"],t=u.value,a=o.value,s=v.value,i=l.default,s=i?s:a;return(0,_vue.h)("div",{ref:c,class:["vxe-collapse",{["size--"+t]:t,"is--padding":e}]},[(0,_vue.h)("div",{class:"vxe-collapse-slots"},i?i({}):[]),(e=>{const{activeNames:u,initNames:c}=r,o=p.value;return e.map(t=>{var{icon:e,name:a,title:s,slots:i}=t,n=i?i.title:null,i=i?i.default:null,l=a&&u.includes(a);return(0,_vue.h)("div",{class:"vxe-collapse-item"},[(0,_vue.h)("div",{class:"vxe-collapse--item-header",onClick(e){x(e,t)}},[o.showIcon?(0,_vue.h)("span",{class:"vxe-collapse--item-switch"},[(0,_vue.h)("i",{class:l?(0,_ui.getIcon)().COLLAPSE_OPEN:(0,_ui.getIcon)().COLLAPSE_CLOSE})]):(0,_ui.renderEmptyElement)(d),e?(0,_vue.h)("span",{class:"vxe-collapse--item-icon"},[(0,_vue.h)("i",{class:e})]):(0,_ui.renderEmptyElement)(d),(0,_vue.h)("span",{class:"vxe-collapse--item-name"},n?f(n,{name:a,title:s}):""+s)]),(0,_vue.h)("div",{class:["vxe-collapse--item-content",{"is--visible":l}]},[a&&c.includes(a)?(0,_vue.h)("div",{class:"vxe-collapse--item-inner"},[i?f(i,{name:a,title:s}):""]):(0,_ui.renderEmptyElement)(d)])])})})(s)])},d},render(){return this.renderVN()}});