UNPKG

vexip-ui

Version:

A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good

3 lines (2 loc) 1.95 kB
"use strict";const e=require("vue");require("../renderer/index.cjs");const a=require("@vexip-ui/config"),v=require("./props.cjs"),g=require("./symbol.cjs"),u=require("../renderer/renderer.cjs"),h=["title"],C=e.defineComponent({name:"Badge",__name:"badge",props:v.badgeProps,setup(l){const c=l,t=a.useProps("badge",c,{content:{default:null,static:!0},max:0,disabled:!1,isDot:!1,type:{default:"error",validator:r=>g.badgeTypes.includes(r)},color:null,slots:()=>({})}),i=e.useSlots(),n=a.useNameHelper("badge"),o=e.computed(()=>!!i.default),d=e.computed(()=>({[n.b()]:!0,[n.bs("vars")]:!0,[n.bm("inherit")]:t.inherit,[n.bm("not-wrapper")]:!o.value,[n.bm("is-dot")]:t.isDot})),s=e.computed(()=>t.isDot?"":typeof t.content=="number"&&t.max>0&&t.content>t.max?`${t.max}+`:t.content),m=e.computed(()=>o.value?n.bs("badge-zoom"):n.bs("zoom")),p=e.computed(()=>t.content||t.content===0?t.content.toString():void 0),f=e.computed(()=>!t.disabled&&(t.content||t.content===0||t.isDot));function b(r){a.emitEvent(t.onBadgeClick,r)}return(r,y)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(d.value)},[e.renderSlot(r.$slots,"default",{},()=>[e.createVNode(e.unref(u),{renderer:e.unref(t).slots.default},null,8,["renderer"])]),e.createVNode(e.Transition,{name:m.value},{default:e.withCtx(()=>[e.withDirectives(e.createElementVNode("sup",{class:e.normalizeClass({[e.unref(n).be("content")]:!0,[e.unref(n).bem("content","fixed")]:o.value,[e.unref(n).bem("content",e.unref(t).type)]:e.unref(t).type!=="error"}),style:e.normalizeStyle({backgroundColor:e.unref(t).color}),title:p.value,onClick:b},[e.renderSlot(r.$slots,"content",{content:s.value},()=>[e.createVNode(e.unref(u),{renderer:e.unref(t).slots.content,data:{content:s.value}},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(s.value),1)]),_:1},8,["renderer","data"])])],14,h),[[e.vShow,f.value]])]),_:3},8,["name"])],2))}});module.exports=C; //# sourceMappingURL=badge.vue2.cjs.map