import { inject } from 'vue'; import PropTypes from '../_util/vue-types'; import { getComponent, initDefaultProps } from '../_util/props-util'; import { ConfigConsumerProps } from '../config-provider'; import StatisticNumber from './Number'; export const StatisticProps = { prefixCls: PropTypes.string, decimalSeparator: PropTypes.string, groupSeparator: PropTypes.string, format: PropTypes.string, value: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.object]), valueStyle: PropTypes.any, valueRender: PropTypes.any, formatter: PropTypes.any, precision: PropTypes.number, prefix: PropTypes.any, suffix: PropTypes.any, title: PropTypes.any, }; export default { name: 'AStatistic', props: initDefaultProps(StatisticProps, { decimalSeparator: '.', groupSeparator: ',', }), inject: { configProvider: { default: () => ConfigConsumerProps }, }, setup() { return { configProvider: inject('configProvider', ConfigConsumerProps), }; }, render() { const { prefixCls: customizePrefixCls, value = 0, valueStyle, valueRender } = this.$props; const getPrefixCls = this.configProvider.getPrefixCls; const prefixCls = getPrefixCls('statistic', customizePrefixCls); const title = getComponent(this, 'title'); let prefix = getComponent(this, 'prefix'); let suffix = getComponent(this, 'suffix'); const formatter = getComponent(this, 'formatter', {}, false); let valueNode = ( ); if (valueRender) { valueNode = valueRender(valueNode); } return (
{title &&
{title}
}
{prefix && {prefix}} {valueNode} {suffix && {suffix}}
); }, };