vxe-pc-ui
Version:
A vue based PC component library
1 lines • 1.31 kB
JavaScript
Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_comp=require("../../ui/src/comp"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../ui");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeBadge",props:{count:[String,Number],dot:Boolean,content:[String,Number],size:{type:String,default:()=>(0,_ui.getConfig)().badge.size||(0,_ui.getConfig)().size}},emits:[],setup(a,e){let{emit:r,slots:n}=e;var t=_xeUtils.default.uniqueId();let o=(0,_vue.ref)(),s=(0,_ui.useSize)(a).computeSize;var u=(0,_vue.reactive)({});let i={refElem:o},d=(0,_vue.computed)(()=>{var e=a.count;return e?_xeUtils.default.toNumber(e):0}),l={},v={xID:t,props:a,context:e,reactData:u,getRefMaps:()=>i,getComputeMaps:()=>l};Object.assign(v,{dispatchEvent:(e,t,u)=>{r(e,(0,_ui.createEvent)(u,{$badge:v},t))}},{});return v.renderVN=()=>{var{dot:e,content:t}=a,u=s.value,r=d.value,i=n.default;return(0,_vue.h)("div",{ref:o,class:["vxe-badge",{["size--"+u]:u,"is--dot":e}]},[i||t?(0,_vue.h)("div",{class:"vxe-badge--content"},i?i({}):""+(t||"")):[],r?(0,_vue.h)("span",{class:"vxe-badge--count"},99<r?"99+":""+r):(0,_ui.renderEmptyElement)(v)])},v},render(){return this.renderVN()}});