UNPKG

@jecloud/ui

Version:

JECloud UI库,基于ant-design-vue封装

1 lines 3.33 kB
var e=this&&this.__spreadArrays||function(){for(var e=0,l=0,a=arguments.length;l<a;l++)e+=arguments[l].length;var n=Array(e),i=0;for(l=0;l<a;l++)for(var r=arguments[l],o=0,t=r.length;o<t;o++,i++)n[i]=r[o];return n};import{createVNode as l,mergeProps as a,Fragment as n}from"vue";import{computed as i,defineComponent as r,ref as o,watch as t,getCurrentInstance as u,nextTick as s,onMounted as v,onBeforeUnmount as c}from"vue";import{isBoolean as p,computedDomSize as d,debounce as f,addResizeListener as m,removeResizeListener as b}from"@jecloud/utils";import{slots as g,items as h,bars as y,setDrawerSize as w,getDrawerSize as x}from"./config";import{useInjectPanel as z}from"./context";import{useModelValue as S}from"../../hooks";export default r({name:"JePanelItem",props:{region:{type:String,default:"default",validator:function(l){return e(g,["default"]).includes(l)}},size:{type:[String,Number]},hidden:Boolean,split:Boolean,collapsed:Boolean,collapsible:Boolean,maxSize:Number,minSize:Number,drawer:Boolean,autoSize:Boolean},setup:function(e,r){var g=r.attrs,B=r.slots,j=r.expose,k="je-panel-item",N=o(),L=o(),P=S({props:e,context:r,key:"collapsed"}),A=o(P.value),I=S({props:e,context:r,key:"size"}),V=S({props:e,context:r,key:"hidden"}),_=o(),C=z(),E=o(!1),F={instance:u(),props:e,context:r,collapsed:P,isHover:E,$el:N,setSize:function(e){I.value=e},setVisible:function(e){V.value=!e},setExpand:function(e){P.value=!e}};C.addPanelItem(e.region,F),j(F);t((function(){return[P.value,V.value,I.value]}),(function(){s((function(){null==C||C.refreshLayout()}))}));var H=i((function(){var l;return null===(l=e.region)||void 0===l?void 0:l.endsWith("bar")})),J=i((function(){var l,a=p(e.split)?{enable:e.split}:null!==(l=e.split)&&void 0!==l?l:{enable:!1};return H.value&&(a.enable=!1),a}));F.split=J.value.enable;var O=i((function(){return y.includes(e.region)?h[y.indexOf(e.region)]:e.region})),T=i((function(){var e={};return I.value&&(e[["top","bottom"].includes(O.value)?"height":"width"]=d(I.value)+"px"),e}));if(e.drawer&&t((function(){return P.value}),(function(){E.value=!1,A.value=!1;var l=x(N.value)||I.value;I.value=P.value?e.minSize:l,null==C||C.refreshLayout(),s((function(){A.value=P.value,w(N.value,l)}))}),{immediate:!0}),e.autoSize){var W=f((function(){e.drawer&&P.value||null==C||C.refreshLayout()}),100);v((function(){s((function(){m(N.value,W)}))})),c((function(){b(N.value,W)}))}return function(){var i,r,o=O.value;return l(n,null,[l("div",a({ref:N,"data-region":o,class:[k,(i={"je-panel-bar":H.value},i[k+"-region-"+o]=o,i["is--collapsible"]=e.collapsible,i["is--collapsed"]=P.value,i["is--hidden"]=V.value,i["is--drawer"]=e.drawer,i["is--transition"]=A.value,i)],style:T.value},g),[null===(r=B.default)||void 0===r?void 0:r.call(B)]),J.value.enable||e.collapsible?l("div",{class:["je-panel-splitter je-panel-splitter-"+o,{"is--split":J.value.enable,"is--collapsible":e.collapsible,"is--collapsed":P.value,"is--hidden":V.value}],ref:_,style:J.value.style},[e.collapsible?l("div",{ref:L,class:["arrow","arrow-"+o,{"arrow-is--collapsed":P.value,"arrow-is--expand":!P.value}],onClick:function(){L.value.style.display="none",setTimeout((function(){L.value.style.display=""}),50),P.value=!P.value}},[l("div",{class:"arrow-bg"},null),l("i",{class:["arrow-icon","fas fa-caret-left"]},null)]):null]):null])}}});