vexip-ui
Version:
A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good
3 lines (2 loc) • 1.47 kB
JavaScript
const e=require("vue"),a=require("@vexip-ui/config"),c=require("@vexip-ui/utils"),z=require("./props.cjs"),C=require("./symbol.cjs"),S=e.defineComponent({name:"Timeline",__name:"timeline",props:z.timelineProps,setup(u,{expose:p}){const f=u,t=a.useProps("timeline",f,{pending:!1,dashed:!1,lineColor:null,spacing:null,flip:!1,horizontal:!1,alternate:!1}),o=a.useNameHelper("timeline"),r=e.reactive(new Set),m=e.computed(()=>({[o.b()]:!0,[o.bs("vars")]:!0,[o.bm("inherit")]:t.inherit,[o.bm("pending")]:t.pending,[o.bm("alternate")]:t.alternate,[o.bm("flip")]:t.flip,[o.bm("horizontal")]:t.horizontal})),d=e.computed(()=>Math.max(...Array.from(r).map(n=>n.height))*2);p({itemStates:r});const i=c.debounceMinor(()=>{const n=r.size;Array.from(r).forEach((l,s)=>{l.index=s+1,l.total=n,c.isNull(l.label)&&(l.label=s+1)})}),h=e.reactive({dashed:e.toRef(t,"dashed"),lineColor:e.toRef(t,"lineColor"),spacing:e.toRef(t,"spacing"),alternate:e.toRef(t,"alternate"),horizontal:e.toRef(t,"horizontal"),increaseItem:b,decreaseItem:g,handleSignalClick:v});e.provide(C.TIMELINE_STATE,h);function b(n){r.add(n),i()}function g(n){r.delete(n),i()}function v(n){a.emitEvent(t.onSignalClick,n)}return(n,l)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(m.value),style:e.normalizeStyle({height:e.unref(t).horizontal&&e.unref(t).alternate?`${d.value}px`:void 0})},[e.renderSlot(n.$slots,"default")],6))}});module.exports=S;
//# sourceMappingURL=timeline.vue2.cjs.map
;