tdesign-mobile-vue
Version:
tdesign-mobile-vue
1 lines • 9.2 kB
Source Map (JSON)
{"version":3,"file":"badge.mjs","sources":["../../src/badge/badge.tsx"],"sourcesContent":["import { defineComponent, computed, CSSProperties } 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 useOuterClass = computed(() => {\n const target = ['ribbon', 'ribbon-right', 'ribbon-left', 'triangle-right', 'triangle-left'];\n if (props.content || !target.includes(props.shape)) {\n return false;\n }\n return !renderTNodeContent('default', 'content');\n });\n\n // 徽标外层样式类\n const badgeClasses = computed(() => ({\n [`${badgeClass.value}`]: true,\n [`${badgeClass.value}__${props.shape}-outer`]: useOuterClass.value,\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 = (value: string): boolean => {\n return /px|rpx|em|rem|%|vh|vw/.test(value);\n };\n\n const addUnit = (value: string | number): string => {\n const strValue = value.toString();\n return hasUnit(strValue) ? strValue : `${value}px`;\n };\n\n // 徽标自定义样式\n const badgeStyles = computed(() => {\n const styles: CSSProperties = {};\n\n if (props.color) {\n styles.background = props.color;\n }\n\n const [xOffset = 0, yOffset = 0] = props.offset || [];\n\n if (xOffset) {\n styles.left = `calc(100% + ${addUnit(xOffset)})`;\n }\n\n if (yOffset) {\n styles.top = addUnit(yOffset);\n }\n\n return styles;\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 <div class={`${badgeClass.value}__count`}>{readerCount()}</div>\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","useOuterClass","computed","target","content","includes","shape","badgeClasses","_defineProperty","concat","value","badgeInnerClasses","dot","size","count","isShowBadge","Number","showZero","hasUnit","test","addUnit","strValue","toString","badgeStyles","styles","color","background","_ref3","offset","_ref4","_slicedToArray","_ref4$","xOffset","_ref4$2","yOffset","left","top","readerCount","isString","isNumber","maxCount","readerContent","_createVNode","readerBadge"],"mappings":"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"}