vexip-ui
Version:
A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good
3 lines (2 loc) • 3.77 kB
JavaScript
;const e=require("vue");require("../renderer/index.cjs");require("../tab-nav/index.cjs");require("../tab-nav-item/index.cjs");const u=require("@vexip-ui/config"),i=require("@vexip-ui/utils"),E=require("./props.cjs"),w=require("./symbol.cjs"),V=require("../tab-nav/tab-nav.vue2.cjs"),T=require("../tab-nav/tab-nav-item.vue2.cjs"),c=require("../renderer/renderer.cjs"),z=e.defineComponent({name:"Tabs",__name:"tabs",props:E.tabsProps,emits:["update:active"],setup(x,{expose:_,emit:y}){const C=x,n=u.useProps("tabs",C,{active:{default:null,static:!0},card:!1,align:"left",placement:"top",closable:!1,showAdd:!1,lazy:!1,slots:()=>({})}),N=y,d=e.useSlots(),a=u.useNameHelper("tabs"),l=e.ref(n.active),g=e.ref(0),f=e.reactive(new Set),p=e.ref(!1),s=e.computed(()=>Array.from(f)),v=i.debounceMinor(()=>{s.value.forEach((r,o)=>{i.isNull(r.label)&&(r.label=o+1)}),s.value.length>=1&&S()&&(l.value=s.value[0].label)}),b=i.debounceMinor(()=>{const r=s.value.findIndex(o=>o.label===l.value);~r&&(g.value=r)});e.provide(w.TABS_STATE,e.reactive({currentActive:l,lazy:e.toRef(n,"lazy"),handleActive:m,increaseItem:q,decreaseItem:A,refreshLabels:v})),e.watch(()=>n.active,r=>{l.value=r}),e.onMounted(b),_({currentActive:l,inTransition:p,itemList:s,handleActive:m,handleAdd:h,handleClose:k});function S(){return i.isNull(l.value)||l.value===""}function q(r){f.add(r),v()}function A(r){f.delete(r),v()}function m(r){l.value=r,b(),N("update:active",r),u.emitEvent(n.onChange,r)}function h(){u.emitEvent(n.onAdd)}function k(r){u.emitEvent(n.onClose,r)}return(r,o)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([e.unref(a).b(),e.unref(a).bm(e.unref(n).placement),e.unref(n).inherit&&e.unref(a).bm("inherit")])},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(a).be("header"))},[e.createVNode(e.unref(V),{inherit:"",active:l.value,card:e.unref(n).card,align:e.unref(n).align,placement:e.unref(n).placement,closable:e.unref(n).closable,"show-add":e.unref(n).showAdd,onChange:m,onAdd:h,onClose:k},e.createSlots({default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,(t,B)=>(e.openBlock(),e.createBlock(e.unref(T),{key:B,label:t.label,icon:t.icon,disabled:t.disabled,closable:t.closable},{default:e.withCtx(()=>[e.unref(i.isFunction)(t.labelRenderer)?(e.openBlock(),e.createBlock(e.unref(c),{key:0,renderer:t.labelRenderer,data:{label:t.label,disabled:t.disabled}},null,8,["renderer","data"])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(t.name||t.label),1)],64))]),_:2},1032,["label","icon","disabled","closable"]))),128)),d.add||e.unref(n).slots.add?e.renderSlot(r.$slots,"add",{key:0},()=>[e.createVNode(e.unref(c),{renderer:e.unref(n).slots.add},null,8,["renderer"])]):e.createCommentVNode("",!0),d.marker||e.unref(n).slots.marker?e.renderSlot(r.$slots,"marker",{key:1},()=>[e.createVNode(e.unref(c),{renderer:e.unref(n).slots.marker},null,8,["renderer"])]):e.createCommentVNode("",!0)]),_:2},[d.prefix||e.unref(n).slots.prefix?{name:"prefix",fn:e.withCtx(()=>[e.renderSlot(r.$slots,"prefix",{},()=>[e.createVNode(e.unref(c),{renderer:e.unref(n).slots.prefix},null,8,["renderer"])])]),key:"0"}:void 0,d.suffix||e.unref(n).slots.suffix?{name:"suffix",fn:e.withCtx(()=>[e.renderSlot(r.$slots,"suffix",{},()=>[e.createVNode(e.unref(c),{renderer:e.unref(n).slots.suffix},null,8,["renderer"])])]),key:"1"}:void 0]),1032,["active","card","align","placement","closable","show-add"])],2),e.createElementVNode("div",{class:e.normalizeClass({[e.unref(a).be("main")]:!0,[e.unref(a).bem("main","transition")]:p.value}),onTransitionend:o[0]||(o[0]=t=>p.value=!1)},[e.renderSlot(r.$slots,"default")],34)],2))}});module.exports=z;
//# sourceMappingURL=tabs.vue2.cjs.map