mirror of
https://gitee.com/niucloud-team/niucloud-admin.git
synced 2026-01-03 11:48:14 +00:00
2 lines
9.0 KiB
JavaScript
2 lines
9.0 KiB
JavaScript
import{b as D,d as X,E as L,h as ge,j as _e,a9 as Ne,ao as Ce,k as te,a as Te,aA as ae}from"./index-2fcd1254.js";import{t as Y,e as ne,Q as we,R as Pe,U as oe,v as Ee}from"./event-10eba222.js";import{m as le}from"./index-b68e8463.js";import{s as Se,a8 as $e,d as F,I as G,b as I,r as w,w as O,E as Z,e as re,f as ie,n as ce,u as k,j as xe,_ as ue,P as K,c as M,o as de,a1 as ke,y as v,J as Be,h as be,m as Oe,K as Re,R as ze,S as Ae,Q as Fe,H as Me,l as Le,T as Ve}from"./base-06478700.js";import{c as B}from"./strings-fe930bc4.js";import{E as V}from"./index-f27d6ce0.js";import{f as De}from"./index-9fe5de95.js";import{u as Ie}from"./index-818c0ce2.js";const U=Symbol("tabsRootContextKey"),Ke=(e,n,f)=>De(e.subTree).filter(t=>{var o;return $e(t)&&((o=t.type)==null?void 0:o.name)===n&&!!t.component}).map(t=>t.component.uid).map(t=>f[t]).filter(t=>!!t),Ue=(e,n)=>{const f={},C=Se([]);return{children:C,addChild:o=>{f[o.uid]=o,C.value=Ke(e,n,f)},removeChild:o=>{delete f[o],C.value=C.value.filter(E=>E.uid!==o)}}},je=D({tabs:{type:X(Array),default:()=>le([])}}),ve="ElTabBar",He=F({name:ve}),qe=F({...He,props:je,setup(e,{expose:n}){const f=e,C=K(),i=G(U);i||Y(ve,"<el-tabs><el-tab-bar /></el-tabs>");const t=I("tabs"),o=w(),E=w(),u=()=>{let m=0,r=0;const d=["top","bottom"].includes(i.props.tabPosition)?"width":"height",b=d==="width"?"x":"y",S=b==="x"?"left":"top";return f.tabs.every(P=>{var R,a;const h=(a=(R=C.parent)==null?void 0:R.refs)==null?void 0:a[`tab-${P.uid}`];if(!h)return!1;if(!P.active)return!0;m=h[`offset${B(S)}`],r=h[`client${B(d)}`];const g=window.getComputedStyle(h);return d==="width"&&(f.tabs.length>1&&(r-=Number.parseFloat(g.paddingLeft)+Number.parseFloat(g.paddingRight)),m+=Number.parseFloat(g.paddingLeft)),!1}),{[d]:`${r}px`,transform:`translate${B(b)}(${m}px)`}},y=()=>E.value=u();return O(()=>f.tabs,async()=>{await Z(),y()},{immediate:!0}),ne(o,()=>y()),n({ref:o,update:y}),(m,r)=>(re(),ie("div",{ref_key:"barRef",ref:o,class:ce([k(t).e("active-bar"),k(t).is(k(i).props.tabPosition)]),style:xe(E.value)},null,6))}});var Qe=ue(qe,[["__file","/home/runner/work/element-plus/element-plus/packages/components/tabs/src/tab-bar.vue"]]);const We=D({panes:{type:X(Array),default:()=>le([])},currentName:{type:[String,Number],default:""},editable:Boolean,type:{type:String,values:["card","border-card",""],default:""},stretch:Boolean}),Je={tabClick:(e,n,f)=>f instanceof Event,tabRemove:(e,n)=>n instanceof Event},se="ElTabNav",Xe=F({name:se,props:We,emits:Je,setup(e,{expose:n,emit:f}){const C=K(),i=G(U);i||Y(se,"<el-tabs><tab-nav /></el-tabs>");const t=I("tabs"),o=we(),E=Pe(),u=w(),y=w(),m=w(),r=w(!1),d=w(0),b=w(!1),S=w(!0),P=M(()=>["top","bottom"].includes(i.props.tabPosition)?"width":"height"),R=M(()=>({transform:`translate${P.value==="width"?"X":"Y"}(-${d.value}px)`})),a=()=>{if(!u.value)return;const l=u.value[`offset${B(P.value)}`],c=d.value;if(!c)return;const s=c>l?c-l:0;d.value=s},h=()=>{if(!u.value||!y.value)return;const l=y.value[`offset${B(P.value)}`],c=u.value[`offset${B(P.value)}`],s=d.value;if(l-s<=c)return;const x=l-s>c*2?s+c:l-c;d.value=x},g=async()=>{const l=y.value;if(!r.value||!m.value||!u.value||!l)return;await Z();const c=m.value.querySelector(".is-active");if(!c)return;const s=u.value,x=["top","bottom"].includes(i.props.tabPosition),N=c.getBoundingClientRect(),_=s.getBoundingClientRect(),$=x?l.offsetWidth-_.width:l.offsetHeight-_.height,T=d.value;let p=T;x?(N.left<_.left&&(p=T-(_.left-N.left)),N.right>_.right&&(p=T+N.right-_.right)):(N.top<_.top&&(p=T-(_.top-N.top)),N.bottom>_.bottom&&(p=T+(N.bottom-_.bottom))),p=Math.max(p,0),d.value=Math.min(p,$)},z=()=>{if(!y.value||!u.value)return;const l=y.value[`offset${B(P.value)}`],c=u.value[`offset${B(P.value)}`],s=d.value;c<l?(r.value=r.value||{},r.value.prev=s,r.value.next=s+c<l,l-s<c&&(d.value=l-c)):(r.value=!1,s>0&&(d.value=0))},j=l=>{const c=l.code,{up:s,down:x,left:N,right:_}=V;if(![s,x,N,_].includes(c))return;const $=Array.from(l.currentTarget.querySelectorAll("[role=tab]:not(.is-disabled)")),T=$.indexOf(l.target);let p;c===N||c===s?T===0?p=$.length-1:p=T-1:T<$.length-1?p=T+1:p=0,$[p].focus({preventScroll:!0}),$[p].click(),ee()},ee=()=>{S.value&&(b.value=!0)},H=()=>b.value=!1;return O(o,l=>{l==="hidden"?S.value=!1:l==="visible"&&setTimeout(()=>S.value=!0,50)}),O(E,l=>{l?setTimeout(()=>S.value=!0,50):S.value=!1}),ne(m,z),de(()=>setTimeout(()=>g(),0)),ke(()=>z()),n({scrollToActiveTab:g,removeFocus:H}),O(()=>e.panes,()=>C.update(),{flush:"post"}),()=>{const l=r.value?[v("span",{class:[t.e("nav-prev"),t.is("disabled",!r.value.prev)],onClick:a},[v(L,null,{default:()=>[v(ge,null,null)]})]),v("span",{class:[t.e("nav-next"),t.is("disabled",!r.value.next)],onClick:h},[v(L,null,{default:()=>[v(_e,null,null)]})])]:null,c=e.panes.map((s,x)=>{var N,_,$,T;const p=s.uid,q=s.props.disabled,Q=(_=(N=s.props.name)!=null?N:s.index)!=null?_:`${x}`,W=!q&&(s.isClosable||e.editable);s.index=`${x}`;const pe=W?v(L,{class:"is-icon-close",onClick:A=>f("tabRemove",s,A)},{default:()=>[v(Ne,null,null)]}):null,he=((T=($=s.slots).label)==null?void 0:T.call($))||s.props.label,ye=!q&&s.active?0:-1;return v("div",{ref:`tab-${p}`,class:[t.e("item"),t.is(i.props.tabPosition),t.is("active",s.active),t.is("disabled",q),t.is("closable",W),t.is("focus",b.value)],id:`tab-${Q}`,key:`tab-${p}`,"aria-controls":`pane-${Q}`,role:"tab","aria-selected":s.active,tabindex:ye,onFocus:()=>ee(),onBlur:()=>H(),onClick:A=>{H(),f("tabClick",s,Q,A)},onKeydown:A=>{W&&(A.code===V.delete||A.code===V.backspace)&&f("tabRemove",s,A)}},[he,pe])});return v("div",{ref:m,class:[t.e("nav-wrap"),t.is("scrollable",!!r.value),t.is(i.props.tabPosition)]},[l,v("div",{class:t.e("nav-scroll"),ref:u},[v("div",{class:[t.e("nav"),t.is(i.props.tabPosition),t.is("stretch",e.stretch&&["top","bottom"].includes(i.props.tabPosition))],ref:y,style:R.value,role:"tablist",onKeydown:j},[e.type?null:v(Qe,{tabs:[...e.panes]},null),c])])])}}}),Ye=D({type:{type:String,values:["card","border-card",""],default:""},activeName:{type:[String,Number]},closable:Boolean,addable:Boolean,modelValue:{type:[String,Number]},editable:Boolean,tabPosition:{type:String,values:["top","right","bottom","left"],default:"top"},beforeLeave:{type:X(Function),default:()=>!0},stretch:Boolean}),J=e=>Oe(e)||Te(e),Ge={[oe]:e=>J(e),tabClick:(e,n)=>n instanceof Event,tabChange:e=>J(e),edit:(e,n)=>["remove","add"].includes(n),tabRemove:e=>J(e),tabAdd:()=>!0};var Ze=F({name:"ElTabs",props:Ye,emits:Ge,setup(e,{emit:n,slots:f,expose:C}){var i,t;const o=I("tabs"),{children:E,addChild:u,removeChild:y}=Ue(K(),"ElTabPane"),m=w(),r=w((t=(i=e.modelValue)!=null?i:e.activeName)!=null?t:"0"),d=a=>{r.value=a,n(oe,a),n("tabChange",a)},b=async a=>{var h,g,z;if(!(r.value===a||te(a)))try{await((h=e.beforeLeave)==null?void 0:h.call(e,a,r.value))!==!1&&(d(a),(z=(g=m.value)==null?void 0:g.removeFocus)==null||z.call(g))}catch{}},S=(a,h,g)=>{a.props.disabled||(b(h),n("tabClick",a,g))},P=(a,h)=>{a.props.disabled||te(a.props.name)||(h.stopPropagation(),n("edit",a.props.name,"remove"),n("tabRemove",a.props.name))},R=()=>{n("edit",void 0,"add"),n("tabAdd")};return Ie({from:'"activeName"',replacement:'"model-value" or "v-model"',scope:"ElTabs",version:"2.3.0",ref:"https://element-plus.org/en-US/component/tabs.html#attributes",type:"Attribute"},M(()=>!!e.activeName)),O(()=>e.activeName,a=>b(a)),O(()=>e.modelValue,a=>b(a)),O(r,async()=>{var a;await Z(),(a=m.value)==null||a.scrollToActiveTab()}),Be(U,{props:e,currentName:r,registerPane:u,unregisterPane:y}),C({currentName:r}),()=>{const a=e.editable||e.addable?v("span",{class:o.e("new-tab"),tabindex:"0",onClick:R,onKeydown:z=>{z.code===V.enter&&R()}},[v(L,{class:o.is("icon-plus")},{default:()=>[v(Ce,null,null)]})]):null,h=v("div",{class:[o.e("header"),o.is(e.tabPosition)]},[a,v(Xe,{ref:m,currentName:r.value,editable:e.editable,type:e.type,panes:E.value,stretch:e.stretch,onTabClick:S,onTabRemove:P},null)]),g=v("div",{class:o.e("content")},[be(f,"default")]);return v("div",{class:[o.b(),o.m(e.tabPosition),{[o.m("card")]:e.type==="card",[o.m("border-card")]:e.type==="border-card"}]},[...e.tabPosition!=="bottom"?[h,g]:[g,h]])}}});const et=D({label:{type:String,default:""},name:{type:[String,Number]},closable:Boolean,disabled:Boolean,lazy:Boolean}),tt=["id","aria-hidden","aria-labelledby"],fe="ElTabPane",at=F({name:fe}),st=F({...at,props:et,setup(e){const n=e,f=K(),C=Re(),i=G(U);i||Y(fe,"usage: <el-tabs><el-tab-pane /></el-tabs/>");const t=I("tab-pane"),o=w(),E=M(()=>n.closable||i.props.closable),u=ae(()=>{var b;return i.currentName.value===((b=n.name)!=null?b:o.value)}),y=w(u.value),m=M(()=>{var b;return(b=n.name)!=null?b:o.value}),r=ae(()=>!n.lazy||y.value||u.value);O(u,b=>{b&&(y.value=!0)});const d=ze({uid:f.uid,slots:C,props:n,paneName:m,active:u,index:o,isClosable:E});return de(()=>{i.registerPane(d)}),Ae(()=>{i.unregisterPane(d.uid)}),(b,S)=>k(r)?Fe((re(),ie("div",{key:0,id:`pane-${k(m)}`,class:ce(k(t).b()),role:"tabpanel","aria-hidden":!k(u),"aria-labelledby":`tab-${k(m)}`},[be(b.$slots,"default")],10,tt)),[[Ee,k(u)]]):Me("v-if",!0)}});var me=ue(st,[["__file","/home/runner/work/element-plus/element-plus/packages/components/tabs/src/tab-pane.vue"]]);const bt=Le(Ze,{TabPane:me}),vt=Ve(me);export{bt as E,vt as a,Ue as u};
|