12 |
- import{E as M}from"./index-7588b595.js";import{j as D,k as X,m as A,ai as Y,t as I,r as g,w as z,A as J,o as oe,b as le,C as re,u as x,D as ge,ah as K,z as V,B as ie,aG as Ne,f as b,H as Te,I as Pe,F as Ce,ag as we,R as Q,cc as Ee,az as ae,_ as Se,l as $e,a3 as xe,cd as se,ac as Be,ba as ke,P as Oe,Q as Re,e as ze,V as Ae,al as Fe}from"./index-312d0758.js";import{m as ce,a as ue,e as Me,f as Le,E as L}from"./typescript-c7dac87b.js";import{_ as de}from"./plugin-vue_export-helper-1cff8a04.js";import{t as Z}from"./error-78e43d3e.js";import{c as k}from"./el-select-3d8aebfc.js";import{U as be}from"./event-9519ab40.js";import{u as Ve}from"./index-d2800944.js";const U=Symbol("tabsRootContextKey"),De=D({tabs:{type:X(Array),default:()=>ce([])}}),fe="ElTabBar",Ie=A({name:fe}),Ke=A({...Ie,props:De,setup(e,{expose:l}){const p=e,O=K(),c=Y(U);c||Z(fe,"<el-tabs><el-tab-bar /></el-tabs>");const t=I("tabs"),w=g(),B=g(),u=()=>{let i=0,P=0;const d=["top","bottom"].includes(c.props.tabPosition)?"width":"height",n=d==="width"?"x":"y",$=n==="x"?"left":"top";return p.tabs.every(a=>{var v,C;const N=(C=(v=O.parent)==null?void 0:v.refs)==null?void 0:C[`tab-${a.uid}`];if(!N)return!1;if(!a.active)return!0;i=N[`offset${k($)}`],P=N[`client${k(d)}`];const E=window.getComputedStyle(N);return d==="width"&&(p.tabs.length>1&&(P-=Number.parseFloat(E.paddingLeft)+Number.parseFloat(E.paddingRight)),i+=Number.parseFloat(E.paddingLeft)),!1}),{[d]:`${P}px`,transform:`translate${k(n)}(${i}px)`}},f=()=>B.value=u();return z(()=>p.tabs,async()=>{await J(),f()},{immediate:!0}),ue(w,()=>f()),l({ref:w,update:f}),(i,P)=>(oe(),le("div",{ref_key:"barRef",ref:w,class:re([x(t).e("active-bar"),x(t).is(x(c).props.tabPosition)]),style:ge(B.value)},null,6))}});var Ue=de(Ke,[["__file","tab-bar.vue"]]);const He=D({panes:{type:X(Array),default:()=>ce([])},currentName:{type:[String,Number],default:""},editable:Boolean,type:{type:String,values:["card","border-card",""],default:""},stretch:Boolean}),je={tabClick:(e,l,p)=>p instanceof Event,tabRemove:(e,l)=>l instanceof Event},ne="ElTabNav",qe=A({name:ne,props:He,emits:je,setup(e,{expose:l,emit:p}){const O=K(),c=Y(U);c||Z(ne,"<el-tabs><tab-nav /></el-tabs>");const t=I("tabs"),w=Me(),B=Le(),u=g(),f=g(),i=g(),P=g(),d=g(!1),n=g(0),$=g(!1),a=g(!0),v=V(()=>["top","bottom"].includes(c.props.tabPosition)?"width":"height"),C=V(()=>({transform:`translate${v.value==="width"?"X":"Y"}(-${n.value}px)`})),N=()=>{if(!u.value)return;const o=u.value[`offset${k(v.value)}`],r=n.value;if(!r)return;const s=r>o?r-o:0;n.value=s},E=()=>{if(!u.value||!f.value)return;const o=f.value[`offset${k(v.value)}`],r=u.value[`offset${k(v.value)}`],s=n.value;if(o-s<=r)return;const y=o-s>r*2?s+r:o-r;n.value=y},F=async()=>{const o=f.value;if(!d.value||!i.value||!u.value||!o)return;await J();const r=i.value.querySelector(".is-active");if(!r)return;const s=u.value,y=["top","bottom"].includes(c.props.tabPosition),_=r.getBoundingClientRect(),h=s.getBoundingClientRect(),S=y?o.offsetWidth-h.width:o.offsetHeight-h.height,T=n.value;let m=T;y?(_.left<h.left&&(m=T-(h.left-_.left)),_.right>h.right&&(m=T+_.right-h.right)):(_.top<h.top&&(m=T-(h.top-_.top)),_.bottom>h.bottom&&(m=T+(_.bottom-h.bottom))),m=Math.max(m,0),n.value=Math.min(m,S)},ee=()=>{var o;if(!f.value||!u.value)return;e.stretch&&((o=P.value)==null||o.update());const r=f.value[`offset${k(v.value)}`],s=u.value[`offset${k(v.value)}`],y=n.value;s<r?(d.value=d.value||{},d.value.prev=y,d.value.next=y+s<r,r-y<s&&(n.value=r-s)):(d.value=!1,y>0&&(n.value=0))},pe=o=>{const r=o.code,{up:s,down:y,left:_,right:h}=L;if(![s,y,_,h].includes(r))return;const S=Array.from(o.currentTarget.querySelectorAll("[role=tab]:not(.is-disabled)")),T=S.indexOf(o.target);let m;r===_||r===s?T===0?m=S.length-1:m=T-1:T<S.length-1?m=T+1:m=0,S[m].focus({preventScroll:!0}),S[m].click(),te()},te=()=>{a.value&&($.value=!0)},H=()=>$.value=!1;return z(w,o=>{o==="hidden"?a.value=!1:o==="visible"&&setTimeout(()=>a.value=!0,50)}),z(B,o=>{o?setTimeout(()=>a.value=!0,50):a.value=!1}),ue(i,ee),ie(()=>setTimeout(()=>F(),0)),Ne(()=>ee()),l({scrollToActiveTab:F,removeFocus:H}),z(()=>e.panes,()=>O.update(),{flush:"post",deep:!0}),()=>{const o=d.value?[b("span",{class:[t.e("nav-prev"),t.is("disabled",!d.value.prev)],onClick:N},[b(M,null,{default:()=>[b(Te,null,null)]})]),b("span",{class:[t.e("nav-next"),t.is("disabled",!d.value.next)],onClick:E},[b(M,null,{default:()=>[b(Pe,null,null)]})])]:null,r=e.panes.map((s,y)=>{var _,h,S,T;const m=s.uid,j=s.props.disabled,q=(h=(_=s.props.name)!=null?_:s.index)!=null?h:`${y}`,W=!j&&(s.isClosable||e.editable);s.index=`${y}`;const he=W?b(M,{class:"is-icon-close",onClick:R=>p("tabRemove",s,R)},{default:()=>[b(Ce,null,null)]}):null,ye=((T=(S=s.slots).label)==null?void 0:T.call(S))||s.props.label,_e=!j&&s.active?0:-1;return b("div",{ref:`tab-${m}`,class:[t.e("item"),t.is(c.props.tabPosition),t.is("active",s.active),t.is("disabled",j),t.is("closable",W),t.is("focus",$.value)],id:`tab-${q}`,key:`tab-${m}`,"aria-controls":`pane-${q}`,role:"tab","aria-selected":s.active,tabindex:_e,onFocus:()=>te(),onBlur:()=>H(),onClick:R=>{H(),p("tabClick",s,q,R)},onKeydown:R=>{W&&(R.code===L.delete||R.code===L.backspace)&&p("tabRemove",s,R)}},[ye,he])});return b("div",{ref:i,class:[t.e("nav-wrap"),t.is("scrollable",!!d.value),t.is(c.props.tabPosition)]},[o,b("div",{class:t.e("nav-scroll"),ref:u},[b("div",{class:[t.e("nav"),t.is(c.props.tabPosition),t.is("stretch",e.stretch&&["top","bottom"].includes(c.props.tabPosition))],ref:f,style:C.value,role:"tablist",onKeydown:pe},[e.type?null:b(Ue,{ref:P,tabs:[...e.panes]},null),r])])])}}}),We=D({type:{type:String,values:["card","border-card",""],default:""},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}),G=e=>Se(e)||$e(e),Ge={[be]:e=>G(e),tabClick:(e,l)=>l instanceof Event,tabChange:e=>G(e),edit:(e,l)=>["remove","add"].includes(l),tabRemove:e=>G(e),tabAdd:()=>!0},Qe=A({name:"ElTabs",props:We,emits:Ge,setup(e,{emit:l,slots:p,expose:O}){var c;const t=I("tabs"),{children:w,addChild:B,removeChild:u}=Ve(K(),"ElTabPane"),f=g(),i=g((c=e.modelValue)!=null?c:"0"),P=async(a,v=!1)=>{var C,N,E;if(!(i.value===a||ae(a)))try{await((C=e.beforeLeave)==null?void 0:C.call(e,a,i.value))!==!1&&(i.value=a,v&&(l(be,a),l("tabChange",a)),(E=(N=f.value)==null?void 0:N.removeFocus)==null||E.call(N))}catch{}},d=(a,v,C)=>{a.props.disabled||(P(v,!0),l("tabClick",a,C))},n=(a,v)=>{a.props.disabled||ae(a.props.name)||(v.stopPropagation(),l("edit",a.props.name,"remove"),l("tabRemove",a.props.name))},$=()=>{l("edit",void 0,"add"),l("tabAdd")};return z(()=>e.modelValue,a=>P(a)),z(i,async()=>{var a;await J(),(a=f.value)==null||a.scrollToActiveTab()}),we(U,{props:e,currentName:i,registerPane:B,unregisterPane:u}),O({currentName:i}),()=>{const a=p["add-icon"],v=e.editable||e.addable?b("span",{class:t.e("new-tab"),tabindex:"0",onClick:$,onKeydown:E=>{E.code===L.enter&&$()}},[a?Q(p,"add-icon"):b(M,{class:t.is("icon-plus")},{default:()=>[b(Ee,null,null)]})]):null,C=b("div",{class:[t.e("header"),t.is(e.tabPosition)]},[v,b(qe,{ref:f,currentName:i.value,editable:e.editable,type:e.type,panes:w.value,stretch:e.stretch,onTabClick:d,onTabRemove:n},null)]),N=b("div",{class:t.e("content")},[Q(p,"default")]);return b("div",{class:[t.b(),t.m(e.tabPosition),{[t.m("card")]:e.type==="card",[t.m("border-card")]:e.type==="border-card"}]},[...e.tabPosition!=="bottom"?[C,N]:[N,C]])}}}),Xe=D({label:{type:String,default:""},name:{type:[String,Number]},closable:Boolean,disabled:Boolean,lazy:Boolean}),Ye=["id","aria-hidden","aria-labelledby"],ve="ElTabPane",Je=A({name:ve}),Ze=A({...Je,props:Xe,setup(e){const l=e,p=K(),O=xe(),c=Y(U);c||Z(ve,"usage: <el-tabs><el-tab-pane /></el-tabs/>");const t=I("tab-pane"),w=g(),B=V(()=>l.closable||c.props.closable),u=se(()=>{var n;return c.currentName.value===((n=l.name)!=null?n:w.value)}),f=g(u.value),i=V(()=>{var n;return(n=l.name)!=null?n:w.value}),P=se(()=>!l.lazy||f.value||u.value);z(u,n=>{n&&(f.value=!0)});const d=Be({uid:p.uid,slots:O,props:l,paneName:i,active:u,index:w,isClosable:B});return ie(()=>{c.registerPane(d)}),ke(()=>{c.unregisterPane(d.uid)}),(n,$)=>x(P)?Oe((oe(),le("div",{key:0,id:`pane-${x(i)}`,class:re(x(t).b()),role:"tabpanel","aria-hidden":!x(u),"aria-labelledby":`tab-${x(i)}`},[Q(n.$slots,"default")],10,Ye)),[[Re,x(u)]]):ze("v-if",!0)}});var me=de(Ze,[["__file","tab-pane.vue"]]);const it=Ae(Qe,{TabPane:me}),ct=Fe(me);export{ct as E,it as a};
|