NuclearDispersionSystem/ant-design-vue-jeecg/node_modules/ant-design-vue/es/statistic/Number.js
2023-09-14 14:47:11 +08:00

60 lines
1.7 KiB
JavaScript

import padEnd from 'lodash/padEnd';
export default {
name: 'AStatisticNumber',
functional: true,
render: function render(h, context) {
var _context$props = context.props,
value = _context$props.value,
formatter = _context$props.formatter,
precision = _context$props.precision,
decimalSeparator = _context$props.decimalSeparator,
_context$props$groupS = _context$props.groupSeparator,
groupSeparator = _context$props$groupS === undefined ? '' : _context$props$groupS,
prefixCls = _context$props.prefixCls;
var valueNode = void 0;
if (typeof formatter === 'function') {
// Customize formatter
valueNode = formatter({ value: value, h: h });
} else {
// Internal formatter
var val = String(value);
var cells = val.match(/^(-?)(\d*)(\.(\d+))?$/);
// Process if illegal number
if (!cells) {
valueNode = val;
} else {
var negative = cells[1];
var int = cells[2] || '0';
var decimal = cells[4] || '';
int = int.replace(/\B(?=(\d{3})+(?!\d))/g, groupSeparator);
if (typeof precision === 'number') {
decimal = padEnd(decimal, precision, '0').slice(0, precision);
}
if (decimal) {
decimal = '' + decimalSeparator + decimal;
}
valueNode = [h(
'span',
{ key: 'int', 'class': prefixCls + '-content-value-int' },
[negative, int]
), decimal && h(
'span',
{ key: 'decimal', 'class': prefixCls + '-content-value-decimal' },
[decimal]
)];
}
}
return h(
'span',
{ 'class': prefixCls + '-content-value' },
[valueNode]
);
}
};