import { defineComponent, inject, PropType } from 'vue'; import PropTypes from '../_util/vue-types'; import { getComponent } from '../_util/props-util'; import initDefaultProps from '../_util/props-util/initDefaultProps'; import { defaultConfigProvider } from '../config-provider'; import StatisticNumber from './Number'; import { countdownValueType } from './utils'; export const StatisticProps = { prefixCls: PropTypes.string, decimalSeparator: PropTypes.string, groupSeparator: PropTypes.string, format: PropTypes.string, value: { type: [String, Number, Object] as PropType, }, valueStyle: PropTypes.style, valueRender: PropTypes.any, formatter: PropTypes.any, precision: PropTypes.number, prefix: PropTypes.VNodeChild, suffix: PropTypes.VNodeChild, title: PropTypes.VNodeChild, onFinish: PropTypes.func, }; export default defineComponent({ name: 'AStatistic', props: initDefaultProps(StatisticProps, { decimalSeparator: '.', groupSeparator: ',', }), setup() { return { configProvider: inject('configProvider', defaultConfigProvider), }; }, render() { const { prefixCls: customizePrefixCls, value = 0, valueStyle, valueRender } = this.$props; const { getPrefixCls } = this.configProvider; const prefixCls = getPrefixCls('statistic', customizePrefixCls); const title = getComponent(this, 'title'); const prefix = getComponent(this, 'prefix'); const suffix = getComponent(this, 'suffix'); const formatter = getComponent(this, 'formatter', {}, false); const props = { ...this.$props, prefixCls, value, formatter, }; let valueNode = ; if (valueRender) { valueNode = valueRender(valueNode); } return (
{title &&
{title}
}
{prefix && {prefix}} {valueNode} {suffix && {suffix}}
); }, });