element-plus
Version:
A Component Library for Vue 3
92 lines (89 loc) • 3.02 kB
JavaScript
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