vexip-ui
Version:
A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good
3 lines (2 loc) • 1.06 kB
JavaScript
;const t=require("vue"),l=require("@vexip-ui/config"),h=require("@vexip-ui/utils"),y=require("./props.cjs"),a=require("./symbol.cjs"),g=t.defineComponent({name:"ButtonGroup",__name:"button-group",props:y.buttonGroupProps,setup(p){const m=p,o=l.useProps("buttonGroup",m,{size:null,type:{default:"default",validator:e=>a.buttonTypes.includes(e)},circle:!1}),r=l.useNameHelper("button-group"),n=t.reactive(new Set),d=t.toRef(o,"size"),f=t.toRef(o,"type"),b=t.computed(()=>({[r.b()]:!0,[r.bm("inherit")]:o.inherit,[r.bm("circle")]:o.circle})),u=t.computed(()=>Array.from(n)),s=h.debounceMinor(()=>{for(let e=0,c=u.value.length;e<c;++e){const i=u.value[e];i.index=e+1,i.isLast=e===c-1}});t.provide(a.GROUP_STATE,t.reactive({size:d,type:f,increaseItem:v,decreaseItem:_,refreshIndexes:s}));function v(e){n.add(e),s()}function _(e){n.delete(e),s()}return(e,c)=>(t.openBlock(),t.createElementBlock("div",{class:t.normalizeClass(b.value),role:"group"},[t.renderSlot(e.$slots,"default")],2))}});module.exports=g;
//# sourceMappingURL=button-group.vue2.cjs.map