UNPKG

xdesign-vue-next

Version:

XDesign Component for vue-next

1 lines 5.44 kB
{"version":3,"file":"badge.mjs","sources":["../../src/badge/badge.tsx"],"sourcesContent":["import { defineComponent, computed } from 'vue';\nimport props from './props';\nimport { useTNodeJSX } from '../hooks/tnode';\nimport { useConfig } from '../hooks/useConfig';\nimport isFunction from 'lodash/isFunction';\n\nexport default defineComponent({\n name: 'XBadge',\n inheritAttrs: false,\n props: { ...props },\n setup(props) {\n const renderTNodeJSX = useTNodeJSX();\n\n /** 内容计算相关逻辑 start */\n const content = computed(() => {\n if (isFunction(props.count)) {\n return renderTNodeJSX('count');\n }\n if (Number.isNaN(Number(props.count))) {\n return props.count;\n }\n const count = Number(props.count);\n return count > props.maxCount ? `${props.maxCount}+` : count;\n });\n\n const renderChildren = () => renderTNodeJSX('default');\n\n const getOffset = () => {\n if (!props.offset) return {};\n let [xOffset, yOffset]: Array<string | number> = props.offset;\n xOffset = Number.isNaN(Number(xOffset)) ? xOffset : `${xOffset}px`;\n yOffset = Number.isNaN(Number(yOffset)) ? yOffset : `${yOffset}px`;\n return { xOffset, yOffset };\n };\n /** 内容计算相关逻辑 end */\n\n /** 样式计算相关逻辑 start */\n const { classPrefix } = useConfig('classPrefix');\n const name = `${classPrefix.value}-badge`;\n const isHidden = computed(() => {\n return !props.showZero && (content.value === 0 || content.value === '0');\n });\n\n const badgeClassNames = computed(() => {\n return [\n {\n [`${name}--dot`]: !!props.dot,\n [`${name}--circle`]: !props.dot && props.shape === 'circle',\n [`${name}--round`]: props.shape === 'round',\n [`${classPrefix.value}-size-s`]: props.size === 'small',\n },\n ];\n });\n\n const inlineStyle = computed(() => {\n const { xOffset, yOffset } = getOffset();\n return {\n background: `${props.color}`,\n right: xOffset,\n top: yOffset,\n };\n });\n /** 样式计算相关逻辑 end */\n return {\n content,\n inlineStyle,\n badgeClassNames,\n isHidden,\n renderChildren,\n name,\n };\n },\n\n render() {\n return (\n <div class={this.name} {...this.$attrs}>\n {this.renderChildren()}\n {this.isHidden ? null : (\n <sup class={this.badgeClassNames} style={this.inlineStyle}>\n {this.dot ? null : this.content}\n </sup>\n )}\n </div>\n );\n },\n});\n"],"names":["name","inheritAttrs","props","isFunction","xOffset","yOffset","background","right","top","content","inlineStyle","badgeClassNames","isHidden","renderChildren"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,aAAA,eAAA,CAAA;AACEA,EAAAA,IAAAA,EAAAA,QAAAA;AACAC,EAAAA,YAAAA,EAAAA,KAAAA;AACAC,EAAAA,KAAAA,EAAAA,aAAAA,CAAAA,EAAAA,EAAAA,KAAAA,CAAAA;;AAEE,IAAA,IAAA,cAAA,GAAA,WAAA,EAAA,CAAA;AAGM,IAAA,IAAA,OAAA,GAAA,QAAA,CAAA,YAAA;AACA,MAAA,IAAAC,YAAA,CAAA,MAAA,CAAA,KAAA,CAAA,EAAA;;AAEJ,OAAA;;;AAGA,OAAA;AACM,MAAA,IAAA,KAAA,GAAA,MAAA,CAAA,MAAA,CAAA,KAAA,CAAA,CAAA;AACN,MAAA,OAAA,KAAA,GAAA,MAAA,CAAA,QAAA,GAAA,EAAA,CAAA,MAAA,CAAA,MAAA,CAAA,QAAA,EAAA,GAAA,CAAA,GAAA,KAAA,CAAA;AACF,KAAA,CAAA,CAAA;AAEM,IAAA,IAAA,cAAA,GAAA,SAAA,cAAA,GAAA;;AAA+C,KAAA,CAAA;AAErD,IAAA,IAAA,SAAA,GAAA,SAAA,SAAA,GAAA;AACE,MAAA,IAAA,CAAA,MAAA,CAAA,MAAA,EAAA,OAAA,EAAA,CAAA;AACA,MAAA,IAAA,cAAA,GAAA,cAAA,CAAA,MAAA,CAAA,MAAA,EAAA,CAAA,CAAA;AAAKC,QAAAA,OAAAA,GAAAA,cAAAA,CAAAA,CAAAA,CAAAA;AAASC,QAAAA,OAAAA,GAAAA,cAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AACdD,MAAAA,OAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA,MAAAA,CAAAA,OAAAA,CAAAA,CAAAA,GAAAA,OAAAA,GAAAA,EAAAA,CAAAA,MAAAA,CAAAA,OAAAA,EAAAA,IAAAA,CAAAA,CAAAA;AACAC,MAAAA,OAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA,MAAAA,CAAAA,OAAAA,CAAAA,CAAAA,GAAAA,OAAAA,GAAAA,EAAAA,CAAAA,MAAAA,CAAAA,OAAAA,EAAAA,IAAAA,CAAAA,CAAAA;;AACSD,QAAAA,OAAAA,EAAAA,OAAAA;AAASC,QAAAA,OAAAA,EAAAA,OAAAA;;;AAKpB,IAAA,IAAA,UAAA,GAAA,SAAA,CAAA,aAAA,CAAA;;AACM,IAAA,IAAA,IAAA,GAAA,EAAA,CAAA,MAAA,CAAA,WAAA,CAAA,KAAA,EAAA,QAAA,CAAA,CAAA;AACA,IAAA,IAAA,QAAA,GAAA,QAAA,CAAA,YAAA;AACJ,MAAA,OAAA,CAAA,MAAA,CAAA,QAAA,KAAA,OAAA,CAAA,KAAA,KAAA,CAAA,IAAA,OAAA,CAAA,KAAA,KAAA,GAAA,CAAA,CAAA;AACF,KAAA,CAAA,CAAA;AAEM,IAAA,IAAA,eAAA,GAAA,QAAA,CAAA,YAAA;AAAiC,MAAA,IAAA,IAAA,CAAA;AAC9B,MAAA,OAAA,EAAA,IAAA,GAAA,EAAA,EAAA,eAAA,CAAA,IAAA,EAAA,EAAA,CAAA,MAAA,CAAA,IAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAAA,MAAA,CAAA,GAAA,CAAA,EAAA,eAAA,CAAA,IAAA,EAAA,EAAA,CAAA,MAAA,CAAA,IAAA,EAAA,UAAA,CAAA,EAAA,CAAA,MAAA,CAAA,GAAA,IAAA,MAAA,CAAA,KAAA,KAAA,QAAA,CAAA,EAAA,eAAA,CAAA,IAAA,EAAA,EAAA,CAAA,MAAA,CAAA,IAAA,EAAA,SAAA,CAAA,EAAA,MAAA,CAAA,KAAA,KAAA,OAAA,CAAA,EAAA,eAAA,CAAA,IAAA,EAAA,EAAA,CAAA,MAAA,CAAA,WAAA,CAAA,KAAA,EAAA,SAAA,CAAA,EAAA,MAAA,CAAA,IAAA,KAAA,OAAA,CAAA,EAAA,IAAA,EAAA,CAAA;AAQT,KAAA,CAAA,CAAA;AAEM,IAAA,IAAA,WAAA,GAAA,QAAA,CAAA,YAAA;AACJ,MAAA,IAAA,UAAA,GAAA,SAAA,EAAA;;;;AAEEC,QAAAA,UAAAA,EAAAA,EAAAA,CAAAA,MAAAA,CAAAA,MAAAA,CAAAA,KAAAA,CAAAA;AACAC,QAAAA,KAAAA,EAAAA,OAAAA;AACAC,QAAAA,GAAAA,EAAAA,OAAAA;;AAEJ,KAAA,CAAA,CAAA;;AAGEC,MAAAA,OAAAA,EAAAA,OAAAA;AACAC,MAAAA,WAAAA,EAAAA,WAAAA;AACAC,MAAAA,eAAAA,EAAAA,eAAAA;AACAC,MAAAA,QAAAA,EAAAA,QAAAA;AACAC,MAAAA,cAAAA,EAAAA,cAAAA;AACAb,MAAAA,IAAAA,EAAAA,IAAAA;;;;;AAKF,MAAA,OAAA,EAAA,IAAA,CAAA,IAAA;;;AAIuB,MAAA,OAAA,EAAA,IAAA,CAAA,WAAA;;AAMzB,GAAA;AACF,CAAA,CAAA;;;;"}