ScrollNumber.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. Object.defineProperty(exports, "__esModule", {
  4. value: true
  5. });
  6. exports.default = void 0;
  7. var _vue = require("vue");
  8. var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
  9. var _classNames = _interopRequireDefault(require("../_util/classNames"));
  10. var _vueTypes = _interopRequireDefault(require("../_util/vue-types"));
  11. var _vnode = require("../_util/vnode");
  12. var _useConfigInject = _interopRequireDefault(require("../config-provider/hooks/useConfigInject"));
  13. var _SingleNumber = _interopRequireDefault(require("./SingleNumber"));
  14. var _propsUtil = require("../_util/props-util");
  15. var __rest = void 0 && (void 0).__rest || function (s, e) {
  16. var t = {};
  17. for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
  18. if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
  19. if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
  20. }
  21. return t;
  22. };
  23. const scrollNumberProps = {
  24. prefixCls: String,
  25. count: _vueTypes.default.any,
  26. component: String,
  27. title: _vueTypes.default.any,
  28. show: Boolean
  29. };
  30. var _default = exports.default = (0, _vue.defineComponent)({
  31. compatConfig: {
  32. MODE: 3
  33. },
  34. name: 'ScrollNumber',
  35. inheritAttrs: false,
  36. props: scrollNumberProps,
  37. setup(props, _ref) {
  38. let {
  39. attrs,
  40. slots
  41. } = _ref;
  42. const {
  43. prefixCls
  44. } = (0, _useConfigInject.default)('scroll-number', props);
  45. return () => {
  46. var _a;
  47. const _b = (0, _extends2.default)((0, _extends2.default)({}, props), attrs),
  48. {
  49. prefixCls: customizePrefixCls,
  50. count,
  51. title,
  52. show,
  53. component: Tag = 'sup',
  54. class: className,
  55. style
  56. } = _b,
  57. restProps = __rest(_b, ["prefixCls", "count", "title", "show", "component", "class", "style"]);
  58. // ============================ Render ============================
  59. const newProps = (0, _extends2.default)((0, _extends2.default)({}, restProps), {
  60. style,
  61. 'data-show': props.show,
  62. class: (0, _classNames.default)(prefixCls.value, className),
  63. title: title
  64. });
  65. // Only integer need motion
  66. let numberNodes = count;
  67. if (count && Number(count) % 1 === 0) {
  68. const numberList = String(count).split('');
  69. numberNodes = numberList.map((num, i) => (0, _vue.createVNode)(_SingleNumber.default, {
  70. "prefixCls": prefixCls.value,
  71. "count": Number(count),
  72. "value": num,
  73. "key": numberList.length - i
  74. }, null));
  75. }
  76. // allow specify the border
  77. // mock border-color by box-shadow for compatible with old usage:
  78. // <Badge count={4} style={{ backgroundColor: '#fff', color: '#999', borderColor: '#d9d9d9' }} />
  79. if (style && style.borderColor) {
  80. newProps.style = (0, _extends2.default)((0, _extends2.default)({}, style), {
  81. boxShadow: `0 0 0 1px ${style.borderColor} inset`
  82. });
  83. }
  84. const children = (0, _propsUtil.filterEmpty)((_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots));
  85. if (children && children.length) {
  86. return (0, _vnode.cloneElement)(children, {
  87. class: (0, _classNames.default)(`${prefixCls.value}-custom-component`)
  88. }, false);
  89. }
  90. return (0, _vue.createVNode)(Tag, newProps, {
  91. default: () => [numberNodes]
  92. });
  93. };
  94. }
  95. });