UNPKG

element-plus

Version:

A Component Library for Vue 3

92 lines (89 loc) 3.02 kB
import { badgeProps } from './badge.mjs'; import { defineComponent, computed, createElementBlock, openBlock, normalizeClass, unref, renderSlot, createVNode, Transition, withCtx, withDirectives, createElementVNode, normalizeStyle, createTextVNode, toDisplayString, vShow } from 'vue'; import { useNamespace } from '../../../hooks/use-namespace/index.mjs'; import { isNumber } from '../../../utils/types.mjs'; import { addUnit } from '../../../utils/dom/style.mjs'; var _sfc_main = /* @__PURE__ */ defineComponent({ ...{ name: "ElBadge" }, __name: "badge", props: badgeProps, setup(__props, { expose: __expose }) { const props = __props; const ns = useNamespace("badge"); const content = computed(() => { if (props.isDot) return ""; if (isNumber(props.value) && isNumber(props.max)) { return props.max < props.value ? `${props.max}+` : `${props.value}`; } return `${props.value}`; }); const style = computed(() => { var _a; return [ { backgroundColor: props.color, marginRight: addUnit(-props.offset[0]), marginTop: addUnit(props.offset[1]) }, (_a = props.badgeStyle) != null ? _a : {} ]; }); __expose({ /** @description badge content */ content }); return (_ctx, _cache) => { return openBlock(), createElementBlock( "div", { class: normalizeClass(unref(ns).b()) }, [ renderSlot(_ctx.$slots, "default"), createVNode(Transition, { name: `${unref(ns).namespace.value}-zoom-in-center`, persisted: "" }, { default: withCtx(() => [ withDirectives(createElementVNode( "sup", { class: normalizeClass([ unref(ns).e("content"), unref(ns).em("content", __props.type), unref(ns).is("fixed", !!_ctx.$slots.default), unref(ns).is("dot", __props.isDot), unref(ns).is("hide-zero", !__props.showZero && __props.value === 0), __props.badgeClass ]), style: normalizeStyle(style.value) }, [ renderSlot(_ctx.$slots, "content", { value: content.value }, () => [ createTextVNode( toDisplayString(content.value), 1 /* TEXT */ ) ]) ], 6 /* CLASS, STYLE */ ), [ [vShow, !__props.hidden && (content.value || __props.isDot || _ctx.$slots.content)] ]) ]), _: 3 /* FORWARDED */ }, 8, ["name"]) ], 2 /* CLASS */ ); }; } }); export { _sfc_main as default }; //# sourceMappingURL=badge.vue2.mjs.map