Statistic.js 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. "use strict";
  2. "use client";
  3. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
  4. var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
  5. Object.defineProperty(exports, "__esModule", {
  6. value: true
  7. });
  8. exports.default = void 0;
  9. var React = _interopRequireWildcard(require("react"));
  10. var _classnames = _interopRequireDefault(require("classnames"));
  11. var _pickAttrs = _interopRequireDefault(require("rc-util/lib/pickAttrs"));
  12. var _context = require("../config-provider/context");
  13. var _skeleton = _interopRequireDefault(require("../skeleton"));
  14. var _Number = _interopRequireDefault(require("./Number"));
  15. var _style = _interopRequireDefault(require("./style"));
  16. var __rest = void 0 && (void 0).__rest || function (s, e) {
  17. var t = {};
  18. for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
  19. if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
  20. if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
  21. }
  22. return t;
  23. };
  24. const Statistic = /*#__PURE__*/React.forwardRef((props, ref) => {
  25. const {
  26. prefixCls: customizePrefixCls,
  27. className,
  28. rootClassName,
  29. style,
  30. valueStyle,
  31. value = 0,
  32. title,
  33. valueRender,
  34. prefix,
  35. suffix,
  36. loading = false,
  37. /* --- FormatConfig starts --- */
  38. formatter,
  39. precision,
  40. decimalSeparator = '.',
  41. groupSeparator = ',',
  42. /* --- FormatConfig starts --- */
  43. onMouseEnter,
  44. onMouseLeave
  45. } = props,
  46. rest = __rest(props, ["prefixCls", "className", "rootClassName", "style", "valueStyle", "value", "title", "valueRender", "prefix", "suffix", "loading", "formatter", "precision", "decimalSeparator", "groupSeparator", "onMouseEnter", "onMouseLeave"]);
  47. const {
  48. getPrefixCls,
  49. direction,
  50. className: contextClassName,
  51. style: contextStyle
  52. } = (0, _context.useComponentConfig)('statistic');
  53. const prefixCls = getPrefixCls('statistic', customizePrefixCls);
  54. const [wrapCSSVar, hashId, cssVarCls] = (0, _style.default)(prefixCls);
  55. const valueNode = /*#__PURE__*/React.createElement(_Number.default, {
  56. decimalSeparator: decimalSeparator,
  57. groupSeparator: groupSeparator,
  58. prefixCls: prefixCls,
  59. formatter: formatter,
  60. precision: precision,
  61. value: value
  62. });
  63. const cls = (0, _classnames.default)(prefixCls, {
  64. [`${prefixCls}-rtl`]: direction === 'rtl'
  65. }, contextClassName, className, rootClassName, hashId, cssVarCls);
  66. const internalRef = React.useRef(null);
  67. React.useImperativeHandle(ref, () => ({
  68. nativeElement: internalRef.current
  69. }));
  70. const restProps = (0, _pickAttrs.default)(rest, {
  71. aria: true,
  72. data: true
  73. });
  74. return wrapCSSVar(/*#__PURE__*/React.createElement("div", Object.assign({}, restProps, {
  75. ref: internalRef,
  76. className: cls,
  77. style: Object.assign(Object.assign({}, contextStyle), style),
  78. onMouseEnter: onMouseEnter,
  79. onMouseLeave: onMouseLeave
  80. }), title && /*#__PURE__*/React.createElement("div", {
  81. className: `${prefixCls}-title`
  82. }, title), /*#__PURE__*/React.createElement(_skeleton.default, {
  83. paragraph: false,
  84. loading: loading,
  85. className: `${prefixCls}-skeleton`
  86. }, /*#__PURE__*/React.createElement("div", {
  87. style: valueStyle,
  88. className: `${prefixCls}-content`
  89. }, prefix && /*#__PURE__*/React.createElement("span", {
  90. className: `${prefixCls}-content-prefix`
  91. }, prefix), valueRender ? valueRender(valueNode) : valueNode, suffix && /*#__PURE__*/React.createElement("span", {
  92. className: `${prefixCls}-content-suffix`
  93. }, suffix)))));
  94. });
  95. if (process.env.NODE_ENV !== 'production') {
  96. Statistic.displayName = 'Statistic';
  97. }
  98. var _default = exports.default = Statistic;