tdesign-mobile-vue
Version:
tdesign-mobile-vue
1 lines • 8.39 kB
Source Map (JSON)
{"version":3,"file":"badge.mjs","sources":["../../src/badge/badge.tsx"],"sourcesContent":["import { defineComponent, computed } from 'vue';\nimport { isNumber, isString } from 'lodash-es';\nimport config from '../config';\nimport BadgeProps from './props';\nimport { usePrefixClass } from '../hooks/useClass';\nimport { useContent, useTNodeJSX } from '../hooks/tnode';\n\nconst { prefix } = config;\n\nexport default defineComponent({\n name: `${prefix}-badge`,\n props: BadgeProps,\n setup(props) {\n const renderTNodeJSX = useTNodeJSX();\n const renderTNodeContent = useContent();\n\n const badgeClass = usePrefixClass('badge');\n const classPrefix = usePrefixClass();\n\n // 徽标外层样式类\n const badgeClasses = computed(() => ({\n [`${badgeClass.value}`]: true,\n [`${badgeClass.value}__ribbon-outer`]: props.shape === 'ribbon',\n }));\n\n // 徽标内层样式类\n const badgeInnerClasses = computed(() => ({\n [`${badgeClass.value}--basic`]: true,\n [`${badgeClass.value}--dot`]: props.dot,\n [`${badgeClass.value}--${props.size}`]: true,\n [`${badgeClass.value}--${props.shape}`]: true,\n [`${badgeClass.value}--count`]: !props.dot && props.count,\n [`${classPrefix.value}-has-count`]: true,\n }));\n\n // 是否展示角标\n const isShowBadge = computed(() => {\n if (props.dot) {\n return true;\n }\n const count = Number(props.count);\n if (!props.showZero && count === 0) {\n return false;\n }\n if (props.count == null) return false;\n return true;\n });\n\n const hasUnit = (unit: string) =>\n unit.indexOf('px') > 0 ||\n unit.indexOf('rpx') > 0 ||\n unit.indexOf('em') > 0 ||\n unit.indexOf('rem') > 0 ||\n unit.indexOf('%') > 0 ||\n unit.indexOf('vh') > 0 ||\n unit.indexOf('vm') > 0;\n\n // 徽标自定义样式\n const badgeStyles = computed(() => {\n if (!props.offset) {\n return { background: props.color };\n }\n let [xOffset = 0, yOffset = 0]: Array<string | number> = props.offset;\n xOffset = hasUnit(xOffset.toString()) ? xOffset : `${xOffset}px`;\n yOffset = hasUnit(yOffset.toString()) ? yOffset : `${yOffset}px`;\n return {\n background: props.color,\n right: xOffset,\n top: yOffset,\n };\n });\n\n return () => {\n const readerCount = () => {\n if (props.dot) return null;\n if (isString(props.count) || isNumber(props.count)) {\n if (props.count === 0) {\n return props.showZero ? props.count : null;\n }\n return Number(props.count) > Number(props.maxCount) ? `${props.maxCount}+` : props.count;\n }\n return renderTNodeJSX('count');\n };\n const readerContent = () => {\n const content = renderTNodeContent('default', 'content');\n if (typeof content === 'string') {\n return <span class={`${badgeClass.value}__content-text`}>{content}</span>;\n }\n return content;\n };\n\n const readerBadge = () => {\n if (!isShowBadge.value) {\n return null;\n }\n return (\n <div class={badgeInnerClasses.value} style={badgeStyles.value}>\n {readerCount()}\n </div>\n );\n };\n return (\n <div class={badgeClasses.value}>\n <div class={`${badgeClass.value}__content`}>{readerContent()}</div>\n {readerBadge()}\n </div>\n );\n };\n },\n});\n"],"names":["prefix","config","defineComponent","name","props","BadgeProps","setup","renderTNodeJSX","useTNodeJSX","renderTNodeContent","useContent","badgeClass","usePrefixClass","classPrefix","badgeClasses","computed","_defineProperty","concat","value","shape","badgeInnerClasses","dot","size","count","isShowBadge","Number","showZero","hasUnit","unit","indexOf","badgeStyles","offset","background","color","_props$offset","_slicedToArray","_props$offset$","xOffset","_props$offset$2","yOffset","toString","right","top","readerCount","isString","isNumber","maxCount","readerContent","content","_createVNode","readerBadge"],"mappings":"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"}