@jecloud/ui
Version:
JECloud UI库,基于ant-design-vue封装
1 lines • 1.16 kB
JavaScript
import{createVNode as e,mergeProps as t}from"vue";import{defineComponent as o,nextTick as a,onMounted as r,ref as i,watch as n}from"vue";import{Collapse as l}from"ant-design-vue";import{useModelValue as c}from"../../hooks";import{isEmpty as u}from"@jecloud/utils";export default o({name:"JeCollapse",inheritAttrs:!1,props:{flexLayout:Boolean,accordion:Boolean,activeKey:[String,Array],disableEmptyActive:Boolean},emits:["update:activeKey"],setup:function(o,s){var p=s.slots,v=s.attrs,m=c({props:o,context:s,key:"activeKey"}),f=i();o.accordion&&o.disableEmptyActive&&n((function(){return m.value}),(function(e,t){u(e)&&(m.value=d(t))}));var d=function(e){var t;return null==(t=e?(t=f.value.$el.querySelector('.ant-collapse-item[data-key="'+e+'"]')).nextElementSibling||t.previousElementSibling||t:f.value.$el.querySelector(".ant-collapse-item"))?void 0:t.getAttribute("data-key")};return r((function(){a((function(){o.accordion&&o.disableEmptyActive&&(m.value=d())}))})),function(){return e(l,t({ref:f,class:{"je-collapse":!0,"je-collapse-flex":o.flexLayout},activeKey:m.value,"onUpdate:activeKey":function(e){return m.value=e},accordion:o.accordion},v),p)}}});