2 lines
10 KiB
JavaScript
2 lines
10 KiB
JavaScript
import{ck as e,cl as a,cm as t,cn as l,co as s,cp as n,cq as o,cr as r,cs as i,W as u,d as c,aG as d,ct as v,o as b,aK as p,cu as f,b as m,A as h,h as g,_ as y,j as C,I as x,a as P,r as $,D as w,aJ as R,aF as k,c as N,e as T,$ as B,n as E,g as S,aE as A,cv as F,ai as V,cw as L,cx as _,F as K,ch as j,N as M,E as O,c8 as z,L as I,Y as W,ak as q,y as U,x as Y,f as D,cy as G,U as H,k as J,p as X,at as Q,cz as Z,ag as ee,cA as ae,R as te,al as le,S as se,v as ne,s as oe}from"./index.Lvp3pk29.js";function re(a,t){return t.length<2?a:e(a,function(e,a,t){var l=-1,s=e.length;a<0&&(a=-a>s?0:s+a),(t=t>s?s:t)<0&&(t+=s),s=a>t?0:t-a>>>0,a>>>=0;for(var n=Array(s);++l<s;)n[l]=e[l+a];return n}(t,0,-1))}function ie(e,l){return null==(e=re(e,l=a(l,e)))||delete e[t((s=l,n=null==s?0:s.length,n?s[n-1]:void 0))];var s,n}function ue(e){return l(e)?void 0:e}var ce=s(function(e,t){var l={};if(null==e)return l;var s=!1;t=n(t,function(t){return t=a(t,e),s||(s=t.length>1),t}),o(e,r(e),l),s&&(l=i(l,7,ue));for(var u=t.length;u--;)ie(l,t[u]);return l});const de=(e,a)=>{const t=u({}),l=u([]),s=new WeakMap,n=()=>{l.value=((e,a,t)=>p(e.subTree).filter(e=>{var t;return f(e)&&(null==(t=e.type)?void 0:t.name)===a&&!!e.component}).map(e=>e.component.uid).map(e=>t[e]).filter(e=>!!e))(e,a,t.value)},o=e=>e.render(),r=c({setup:(e,{slots:a})=>()=>(n(),a.default?d(o,{render:a.default}):null)});return{children:l,addChild:e=>{t.value[e.uid]=e,v(t),b(()=>{const a=e.getVnode().el,l=a.parentNode;if(!s.has(l)){s.set(l,[]);const e=l.insertBefore.bind(l);l.insertBefore=(a,n)=>(s.get(l).some(e=>a===e||n===e)&&v(t),e(a,n))}s.get(l).push(a)})},removeChild:e=>{delete t.value[e.uid],v(t);const a=e.getVnode().el,l=a.parentNode,n=s.get(l),o=n.indexOf(a);n.splice(o,1)},ChildrenSorter:r}},ve=Symbol("tabsRootContextKey"),be=m({tabs:{type:g(Array),default:()=>h([])},tabRefs:{type:g(Object),default:()=>h({})}}),pe="ElTabBar",fe=c({name:pe});var me=y(c({...fe,props:be,setup(e,{expose:a}){const t=e,l=C(ve);l||x(pe,"<el-tabs><el-tab-bar /></el-tabs>");const s=P("tabs"),n=$(),o=$(),r=()=>o.value=(()=>{let e=0,a=0;const s=["top","bottom"].includes(l.props.tabPosition)?"width":"height",n="width"===s?"x":"y",o="x"===n?"left":"top";return t.tabs.every(l=>{if(A(l.paneName))return!1;const n=t.tabRefs[l.paneName];if(!n)return!1;if(!l.active)return!0;e=n[`offset${F(o)}`],a=n[`client${F(s)}`];const r=window.getComputedStyle(n);return"width"===s&&(a-=Number.parseFloat(r.paddingLeft)+Number.parseFloat(r.paddingRight),e+=Number.parseFloat(r.paddingLeft)),!1}),{[s]:`${a}px`,transform:`translate${F(n)}(${e}px)`}})(),i=[];w(()=>t.tabs,async()=>{await V(),r(),i.forEach(e=>e.stop()),i.length=0,Object.values(t.tabRefs).forEach(e=>{i.push(R(e,r))})},{immediate:!0});const u=R(n,()=>r());return k(()=>{i.forEach(e=>e.stop()),i.length=0,u.stop()}),a({ref:n,update:r}),(e,a)=>(T(),N("div",{ref_key:"barRef",ref:n,class:E([S(s).e("active-bar"),S(s).is(S(l).props.tabPosition)]),style:B(o.value)},null,6))}}),[["__file","tab-bar.vue"]]);const he=m({panes:{type:g(Array),default:()=>h([])},currentName:{type:[String,Number],default:""},editable:Boolean,type:{type:String,values:["card","border-card",""],default:""},stretch:Boolean}),ge="ElTabNav",ye=c({name:ge,props:he,emits:{tabClick:(e,a,t)=>t instanceof Event,tabRemove:(e,a)=>a instanceof Event},setup(e,{expose:a,emit:t}){const l=C(ve);l||x(ge,"<el-tabs><tab-nav /></el-tabs>");const s=P("tabs"),n=L(),o=_(),r=$(),i=$(),c=$(),d=$({}),p=$(),f=$(!1),m=$(0),h=$(!1),g=$(!0),y=u(),k=K(()=>["top","bottom"].includes(l.props.tabPosition)?"width":"height"),N=K(()=>({transform:`translate${"width"===k.value?"X":"Y"}(-${m.value}px)`})),T=()=>{if(!r.value)return;const e=r.value[`offset${F(k.value)}`],a=m.value;if(!a)return;const t=a>e?a-e:0;m.value=t},B=()=>{if(!r.value||!i.value)return;const e=i.value[`offset${F(k.value)}`],a=r.value[`offset${F(k.value)}`],t=m.value;if(e-t<=a)return;const l=e-t>2*a?t+a:e-a;m.value=l},E=async()=>{const a=i.value;if(!(f.value&&c.value&&r.value&&a))return;await V();const t=d.value[e.currentName];if(!t)return;const s=r.value,n=["top","bottom"].includes(l.props.tabPosition),o=t.getBoundingClientRect(),u=s.getBoundingClientRect(),v=n?a.offsetWidth-u.width:a.offsetHeight-u.height,b=m.value;let p=b;n?(o.left<u.left&&(p=b-(u.left-o.left)),o.right>u.right&&(p=b+o.right-u.right)):(o.top<u.top&&(p=b-(u.top-o.top)),o.bottom>u.bottom&&(p=b+(o.bottom-u.bottom))),p=Math.max(p,0),m.value=Math.min(p,v)},S=()=>{var a;if(!i.value||!r.value)return;e.stretch&&(null==(a=p.value)||a.update());const t=i.value[`offset${F(k.value)}`],l=r.value[`offset${F(k.value)}`],s=m.value;l<t?(f.value=f.value||{},f.value.prev=s,f.value.next=s+l<t,t-s<l&&(m.value=t-l)):(f.value=!1,s>0&&(m.value=0))},A=e=>{let a=0;switch(e.code){case W.left:case W.up:a=-1;break;case W.right:case W.down:a=1;break;default:return}const t=Array.from(e.currentTarget.querySelectorAll("[role=tab]:not(.is-disabled)"));let l=t.indexOf(e.target)+a;l<0?l=t.length-1:l>=t.length&&(l=0),t[l].focus({preventScroll:!0}),t[l].click(),U()},U=()=>{g.value&&(h.value=!0)},Y=()=>h.value=!1;return w(n,e=>{"hidden"===e?g.value=!1:"visible"===e&&setTimeout(()=>g.value=!0,50)}),w(o,e=>{e?setTimeout(()=>g.value=!0,50):g.value=!1}),R(c,S),b(()=>setTimeout(()=>E(),0)),j(()=>S()),a({scrollToActiveTab:E,removeFocus:Y,focusActiveTab:async()=>{await V();const a=d.value[e.currentName];null==a||a.focus({preventScroll:!0})},tabListRef:i,tabBarRef:p,scheduleRender:()=>v(y)}),()=>{const a=f.value?[M("span",{class:[s.e("nav-prev"),s.is("disabled",!f.value.prev)],onClick:T},[M(O,null,{default:()=>[M(z,null,null)]})]),M("span",{class:[s.e("nav-next"),s.is("disabled",!f.value.next)],onClick:B},[M(O,null,{default:()=>[M(I,null,null)]})])]:null,n=e.panes.map((a,n)=>{var o,r,i,u;const c=a.uid,v=a.props.disabled,b=null!=(r=null!=(o=a.props.name)?o:a.index)?r:`${n}`,p=!v&&(a.isClosable||e.editable);a.index=`${n}`;const f=p?M(O,{class:"is-icon-close",onClick:e=>t("tabRemove",a,e)},{default:()=>[M(q,null,null)]}):null,m=(null==(u=(i=a.slots).label)?void 0:u.call(i))||a.props.label,g=!v&&a.active?0:-1;return M("div",{ref:e=>((e,a)=>{d.value[a]=e})(e,b),class:[s.e("item"),s.is(l.props.tabPosition),s.is("active",a.active),s.is("disabled",v),s.is("closable",p),s.is("focus",h.value)],id:`tab-${b}`,key:`tab-${c}`,"aria-controls":`pane-${b}`,role:"tab","aria-selected":a.active,tabindex:g,onFocus:()=>U(),onBlur:()=>Y(),onClick:e=>{Y(),t("tabClick",a,b,e)},onKeydown:e=>{!p||e.code!==W.delete&&e.code!==W.backspace||t("tabRemove",a,e)}},[m,f])});return y.value,M("div",{ref:c,class:[s.e("nav-wrap"),s.is("scrollable",!!f.value),s.is(l.props.tabPosition)]},[a,M("div",{class:s.e("nav-scroll"),ref:r},[e.panes.length>0?M("div",{class:[s.e("nav"),s.is(l.props.tabPosition),s.is("stretch",e.stretch&&["top","bottom"].includes(l.props.tabPosition))],ref:i,style:N.value,role:"tablist",onKeydown:A},[e.type?null:M(me,{ref:p,tabs:[...e.panes],tabRefs:d.value},null),n]):null])])}}}),Ce=m({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:g(Function),default:()=>!0},stretch:Boolean}),xe=e=>U(e)||Y(e);var Pe=c({name:"ElTabs",props:Ce,emits:{[H]:e=>xe(e),tabClick:(e,a)=>a instanceof Event,tabChange:e=>xe(e),edit:(e,a)=>["remove","add"].includes(a),tabRemove:e=>xe(e),tabAdd:()=>!0},setup(e,{emit:a,slots:t,expose:l}){var s;const n=P("tabs"),o=K(()=>["left","right"].includes(e.tabPosition)),{children:r,addChild:i,removeChild:u,ChildrenSorter:c}=de(J(),"ElTabPane"),d=$(),v=$(null!=(s=e.modelValue)?s:"0"),b=async(t,l=!1)=>{var s,n,o,i;if(v.value!==t&&!A(t))try{let u;if(e.beforeLeave){const a=e.beforeLeave(t,v.value);u=a instanceof Promise?await a:a}else u=!0;if(!1!==u){const e=null==(s=r.value.find(e=>e.paneName===v.value))?void 0:s.isFocusInsidePane();v.value=t,l&&(a(H,t),a("tabChange",t)),null==(o=null==(n=d.value)?void 0:n.removeFocus)||o.call(n),e&&(null==(i=d.value)||i.focusActiveTab())}}catch(u){}},p=(e,t,l)=>{e.props.disabled||(a("tabClick",e,l),b(t,!0))},f=(e,t)=>{e.props.disabled||A(e.props.name)||(t.stopPropagation(),a("edit",e.props.name,"remove"),a("tabRemove",e.props.name))},m=()=>{a("edit",void 0,"add"),a("tabAdd")},h=a=>{const t=a.el.firstChild,l=["bottom","right"].includes(e.tabPosition)?a.children[0].el:a.children[1].el;t!==l&&t.before(l)};return w(()=>e.modelValue,e=>b(e)),w(v,async()=>{var e;await V(),null==(e=d.value)||e.scrollToActiveTab()}),X(ve,{props:e,currentName:v,registerPane:i,unregisterPane:u,nav$:d}),l({currentName:v,get tabNavRef(){return ce(d.value,["scheduleRender"])}}),()=>{const a=t["add-icon"],l=e.editable||e.addable?M("div",{class:[n.e("new-tab"),o.value&&n.e("new-tab-vertical")],tabindex:"0",onClick:m,onKeydown:e=>{[W.enter,W.numpadEnter].includes(e.code)&&m()}},[a?D(t,"add-icon"):M(O,{class:n.is("icon-plus")},{default:()=>[M(G,null,null)]})]):null,s=M("div",{class:[n.e("header"),o.value&&n.e("header-vertical"),n.is(e.tabPosition)]},[M(c,null,{default:()=>M(ye,{ref:d,currentName:v.value,editable:e.editable,type:e.type,panes:r.value,stretch:e.stretch,onTabClick:p,onTabRemove:f},null),$stable:!0}),l]),i=M("div",{class:n.e("content")},[D(t,"default")]);return M("div",{class:[n.b(),n.m(e.tabPosition),{[n.m("card")]:"card"===e.type,[n.m("border-card")]:"border-card"===e.type}],onVnodeMounted:h,onVnodeUpdated:h},[i,s])}}});const $e=m({label:{type:String,default:""},name:{type:[String,Number]},closable:Boolean,disabled:Boolean,lazy:Boolean}),we="ElTabPane",Re=c({name:we});var ke=y(c({...Re,props:$e,setup(e){const a=e,t=J(),l=Q(),s=C(ve);s||x(we,"usage: <el-tabs><el-tab-pane /></el-tabs/>");const n=P("tab-pane"),o=$(),r=$(),i=K(()=>a.closable||s.props.closable),u=Z(()=>{var e;return s.currentName.value===(null!=(e=a.name)?e:r.value)}),c=$(u.value),d=K(()=>{var e;return null!=(e=a.name)?e:r.value}),v=Z(()=>!a.lazy||c.value||u.value);w(u,e=>{e&&(c.value=!0)});const b=ee({uid:t.uid,getVnode:()=>t.vnode,slots:l,props:a,paneName:d,active:u,index:r,isClosable:i,isFocusInsidePane:()=>{var e;return null==(e=o.value)?void 0:e.contains(document.activeElement)}});return s.registerPane(b),k(()=>{s.unregisterPane(b)}),ae(()=>{var e;l.label&&(null==(e=s.nav$.value)||e.scheduleRender())}),(e,a)=>S(v)?te((T(),N("div",{key:0,id:`pane-${S(d)}`,ref_key:"paneRef",ref:o,class:E(S(n).b()),role:"tabpanel","aria-hidden":!S(u),"aria-labelledby":`tab-${S(d)}`},[D(e.$slots,"default")],10,["id","aria-hidden","aria-labelledby"])),[[se,S(u)]]):le("v-if",!0)}}),[["__file","tab-pane.vue"]]);const Ne=ne(Pe,{TabPane:ke}),Te=oe(ke);export{Ne as E,Te as a};
|