taro-ui-vue3
Version:
Taro UI Rewritten in Vue 3.0
46 lines (45 loc) • 1.18 kB
JavaScript
import {h, defineComponent, mergeProps, computed} from "vue";
import {View} from "@tarojs/components";
const AtBadge = defineComponent({
name: "AtBadge",
props: {
dot: {
type: Boolean,
default: false
},
value: {
type: [String, Number],
default: ""
},
maxValue: {
type: Number,
default: 99
}
},
setup(props, {attrs, slots}) {
const formatedValue = computed(() => formatValue(props.value, props.maxValue));
function formatValue(value, maxValue) {
if (value === "" || value === null || value === void 0)
return "";
const numValue = +value;
if (Number.isNaN(numValue)) {
return value;
}
return numValue > maxValue ? `${maxValue}+` : numValue;
}
return () => h(View, mergeProps(attrs, {
class: "at-badge"
}), {
default: () => [
slots.default && slots.default(),
props.dot ? h(View, {class: "at-badge__dot"}) : formatedValue.value !== "" && h(View, {
class: "at-badge__num"
}, {default: () => formatedValue.value})
]
});
}
});
var badge_default = AtBadge;
export {
badge_default as default
};