vexip-ui
Version:
A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good
3 lines (2 loc) • 2.31 kB
JavaScript
"use strict";const e=require("vue");require("../breadcrumb-item/index.cjs");require("../renderer/index.cjs");const l=require("@vexip-ui/config"),d=require("@vexip-ui/utils"),C=require("./props.cjs"),E=require("./symbol.cjs"),f=require("../renderer/renderer.cjs"),g=require("./breadcrumb-item.vue2.cjs"),y=e.defineComponent({name:"Breadcrumb",__name:"breadcrumb",props:C.breadcrumbProps,setup(p){const b=p,n=l.useProps("breadcrumb",b,{separator:"/",border:!1,options:{default:()=>[],static:!0},router:null,slots:()=>({})}),h=e.useSlots(),o=l.useNameHelper("breadcrumb"),u=new Set,_=e.computed(()=>({[o.b()]:!0,[o.bs("vars")]:!0,[o.bm("inherit")]:n.inherit,[o.bm("border")]:n.border})),v=e.computed(()=>{var r;if(n.router&&!((r=n.options)!=null&&r.length)){const a=n.router.currentRoute.value.matched,t=[];for(const s of a){const i=s.meta||{};i.menu!==!1&&t.push({label:i.label||s.path,name:i.name||s.name})}return t}return n.options.map(a=>typeof a=="string"?{label:a}:a)}),c=d.debounceMinor(()=>{Array.from(u).forEach((r,a)=>{d.isNull(r.label)&&(r.label=a+1)})}),m=e.reactive({separator:e.toRef(n,"separator"),separatorRenderer:null,increaseItem:S,decreaseItem:k,handleSelect:q,refreshLabels:c,handleSeparatorClick:B});e.provide(E.BREADCRUMB_STATE,m),e.watch([()=>h.separator,()=>n.slots.separator],([r,a])=>{m.separatorRenderer=r?t=>r(t):a?t=>a(t):null},{immediate:!0});function S(r){u.add(r),c()}function k(r){u.delete(r),c()}function q(r){l.emitEvent(n.onSelect,r)}function B(r){l.emitEvent(n.onSeparatorClick,r)}return(r,a)=>(e.openBlock(),e.createElementBlock("ol",{class:e.normalizeClass(_.value)},[e.renderSlot(r.$slots,"default",{},()=>[e.createVNode(e.unref(f),{renderer:e.unref(n).slots.default},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(v.value,(t,s)=>(e.openBlock(),e.createBlock(e.unref(g),{key:t.label,label:t.label},{default:e.withCtx(()=>[e.renderSlot(r.$slots,"item",{option:t,index:s},()=>[e.createVNode(e.unref(f),{renderer:e.unref(n).slots.item,data:{option:t,index:s}},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(t.name?e.unref(d.callIfFunc)(t.name):t.label),1)]),_:2},1032,["renderer","data"])])]),_:2},1032,["label"]))),128))]),_:3},8,["renderer"])])],2))}});module.exports=y;
//# sourceMappingURL=breadcrumb.vue2.cjs.map