@element-plus/nightly 0.0.20221206 → 0.0.20221208

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (279) hide show
  1. package/attributes.json +1 -1
  2. package/dist/index.css +1 -1
  3. package/dist/index.full.js +62 -82
  4. package/dist/index.full.min.js +11 -11
  5. package/dist/index.full.min.js.map +1 -1
  6. package/dist/index.full.min.mjs +12 -12
  7. package/dist/index.full.min.mjs.map +1 -1
  8. package/dist/index.full.mjs +62 -82
  9. package/dist/locale/af.js +1 -1
  10. package/dist/locale/af.min.js +1 -1
  11. package/dist/locale/af.min.mjs +1 -1
  12. package/dist/locale/af.mjs +1 -1
  13. package/dist/locale/ar.js +1 -1
  14. package/dist/locale/ar.min.js +1 -1
  15. package/dist/locale/ar.min.mjs +1 -1
  16. package/dist/locale/ar.mjs +1 -1
  17. package/dist/locale/az.js +1 -1
  18. package/dist/locale/az.min.js +1 -1
  19. package/dist/locale/az.min.mjs +1 -1
  20. package/dist/locale/az.mjs +1 -1
  21. package/dist/locale/bg.js +1 -1
  22. package/dist/locale/bg.min.js +1 -1
  23. package/dist/locale/bg.min.mjs +1 -1
  24. package/dist/locale/bg.mjs +1 -1
  25. package/dist/locale/bn.js +1 -1
  26. package/dist/locale/bn.min.js +1 -1
  27. package/dist/locale/bn.min.mjs +1 -1
  28. package/dist/locale/bn.mjs +1 -1
  29. package/dist/locale/ca.js +1 -1
  30. package/dist/locale/ca.min.js +1 -1
  31. package/dist/locale/ca.min.mjs +1 -1
  32. package/dist/locale/ca.mjs +1 -1
  33. package/dist/locale/cs.js +1 -1
  34. package/dist/locale/cs.min.js +1 -1
  35. package/dist/locale/cs.min.mjs +1 -1
  36. package/dist/locale/cs.mjs +1 -1
  37. package/dist/locale/da.js +1 -1
  38. package/dist/locale/da.min.js +1 -1
  39. package/dist/locale/da.min.mjs +1 -1
  40. package/dist/locale/da.mjs +1 -1
  41. package/dist/locale/de.js +1 -1
  42. package/dist/locale/de.min.js +1 -1
  43. package/dist/locale/de.min.mjs +1 -1
  44. package/dist/locale/de.mjs +1 -1
  45. package/dist/locale/el.js +1 -1
  46. package/dist/locale/el.min.js +1 -1
  47. package/dist/locale/el.min.mjs +1 -1
  48. package/dist/locale/el.mjs +1 -1
  49. package/dist/locale/en.js +1 -1
  50. package/dist/locale/en.min.js +1 -1
  51. package/dist/locale/en.min.mjs +1 -1
  52. package/dist/locale/en.mjs +1 -1
  53. package/dist/locale/eo.js +1 -1
  54. package/dist/locale/eo.min.js +1 -1
  55. package/dist/locale/eo.min.mjs +1 -1
  56. package/dist/locale/eo.mjs +1 -1
  57. package/dist/locale/es.js +1 -1
  58. package/dist/locale/es.min.js +1 -1
  59. package/dist/locale/es.min.mjs +1 -1
  60. package/dist/locale/es.mjs +1 -1
  61. package/dist/locale/et.js +1 -1
  62. package/dist/locale/et.min.js +1 -1
  63. package/dist/locale/et.min.mjs +1 -1
  64. package/dist/locale/et.mjs +1 -1
  65. package/dist/locale/eu.js +1 -1
  66. package/dist/locale/eu.min.js +1 -1
  67. package/dist/locale/eu.min.mjs +1 -1
  68. package/dist/locale/eu.mjs +1 -1
  69. package/dist/locale/fa.js +1 -1
  70. package/dist/locale/fa.min.js +1 -1
  71. package/dist/locale/fa.min.mjs +1 -1
  72. package/dist/locale/fa.mjs +1 -1
  73. package/dist/locale/fi.js +1 -1
  74. package/dist/locale/fi.min.js +1 -1
  75. package/dist/locale/fi.min.mjs +1 -1
  76. package/dist/locale/fi.mjs +1 -1
  77. package/dist/locale/fr.js +1 -1
  78. package/dist/locale/fr.min.js +1 -1
  79. package/dist/locale/fr.min.mjs +1 -1
  80. package/dist/locale/fr.mjs +1 -1
  81. package/dist/locale/he.js +1 -1
  82. package/dist/locale/he.min.js +1 -1
  83. package/dist/locale/he.min.mjs +1 -1
  84. package/dist/locale/he.mjs +1 -1
  85. package/dist/locale/hr.js +1 -1
  86. package/dist/locale/hr.min.js +1 -1
  87. package/dist/locale/hr.min.mjs +1 -1
  88. package/dist/locale/hr.mjs +1 -1
  89. package/dist/locale/hu.js +1 -1
  90. package/dist/locale/hu.min.js +1 -1
  91. package/dist/locale/hu.min.mjs +1 -1
  92. package/dist/locale/hu.mjs +1 -1
  93. package/dist/locale/hy-am.js +1 -1
  94. package/dist/locale/hy-am.min.js +1 -1
  95. package/dist/locale/hy-am.min.mjs +1 -1
  96. package/dist/locale/hy-am.mjs +1 -1
  97. package/dist/locale/id.js +1 -1
  98. package/dist/locale/id.min.js +1 -1
  99. package/dist/locale/id.min.mjs +1 -1
  100. package/dist/locale/id.mjs +1 -1
  101. package/dist/locale/it.js +1 -1
  102. package/dist/locale/it.min.js +1 -1
  103. package/dist/locale/it.min.mjs +1 -1
  104. package/dist/locale/it.mjs +1 -1
  105. package/dist/locale/ja.js +1 -1
  106. package/dist/locale/ja.min.js +1 -1
  107. package/dist/locale/ja.min.mjs +1 -1
  108. package/dist/locale/ja.mjs +1 -1
  109. package/dist/locale/kk.js +1 -1
  110. package/dist/locale/kk.min.js +1 -1
  111. package/dist/locale/kk.min.mjs +1 -1
  112. package/dist/locale/kk.mjs +1 -1
  113. package/dist/locale/km.js +1 -1
  114. package/dist/locale/km.min.js +1 -1
  115. package/dist/locale/km.min.mjs +1 -1
  116. package/dist/locale/km.mjs +1 -1
  117. package/dist/locale/ko.js +1 -1
  118. package/dist/locale/ko.min.js +1 -1
  119. package/dist/locale/ko.min.mjs +1 -1
  120. package/dist/locale/ko.mjs +1 -1
  121. package/dist/locale/ku.js +1 -1
  122. package/dist/locale/ku.min.js +1 -1
  123. package/dist/locale/ku.min.mjs +1 -1
  124. package/dist/locale/ku.mjs +1 -1
  125. package/dist/locale/ky.js +1 -1
  126. package/dist/locale/ky.min.js +1 -1
  127. package/dist/locale/ky.min.mjs +1 -1
  128. package/dist/locale/ky.mjs +1 -1
  129. package/dist/locale/lt.js +1 -1
  130. package/dist/locale/lt.min.js +1 -1
  131. package/dist/locale/lt.min.mjs +1 -1
  132. package/dist/locale/lt.mjs +1 -1
  133. package/dist/locale/lv.js +1 -1
  134. package/dist/locale/lv.min.js +1 -1
  135. package/dist/locale/lv.min.mjs +1 -1
  136. package/dist/locale/lv.mjs +1 -1
  137. package/dist/locale/mg.js +1 -1
  138. package/dist/locale/mg.min.js +1 -1
  139. package/dist/locale/mg.min.mjs +1 -1
  140. package/dist/locale/mg.mjs +1 -1
  141. package/dist/locale/mn.js +1 -1
  142. package/dist/locale/mn.min.js +1 -1
  143. package/dist/locale/mn.min.mjs +1 -1
  144. package/dist/locale/mn.mjs +1 -1
  145. package/dist/locale/nb-no.js +1 -1
  146. package/dist/locale/nb-no.min.js +1 -1
  147. package/dist/locale/nb-no.min.mjs +1 -1
  148. package/dist/locale/nb-no.mjs +1 -1
  149. package/dist/locale/nl.js +1 -1
  150. package/dist/locale/nl.min.js +1 -1
  151. package/dist/locale/nl.min.mjs +1 -1
  152. package/dist/locale/nl.mjs +1 -1
  153. package/dist/locale/pa.js +1 -1
  154. package/dist/locale/pa.min.js +1 -1
  155. package/dist/locale/pa.min.mjs +1 -1
  156. package/dist/locale/pa.mjs +1 -1
  157. package/dist/locale/pl.js +1 -1
  158. package/dist/locale/pl.min.js +1 -1
  159. package/dist/locale/pl.min.mjs +1 -1
  160. package/dist/locale/pl.mjs +1 -1
  161. package/dist/locale/pt-br.js +1 -1
  162. package/dist/locale/pt-br.min.js +1 -1
  163. package/dist/locale/pt-br.min.mjs +1 -1
  164. package/dist/locale/pt-br.mjs +1 -1
  165. package/dist/locale/pt.js +1 -1
  166. package/dist/locale/pt.min.js +1 -1
  167. package/dist/locale/pt.min.mjs +1 -1
  168. package/dist/locale/pt.mjs +1 -1
  169. package/dist/locale/ro.js +1 -1
  170. package/dist/locale/ro.min.js +1 -1
  171. package/dist/locale/ro.min.mjs +1 -1
  172. package/dist/locale/ro.mjs +1 -1
  173. package/dist/locale/ru.js +1 -1
  174. package/dist/locale/ru.min.js +1 -1
  175. package/dist/locale/ru.min.mjs +1 -1
  176. package/dist/locale/ru.mjs +1 -1
  177. package/dist/locale/sk.js +1 -1
  178. package/dist/locale/sk.min.js +1 -1
  179. package/dist/locale/sk.min.mjs +1 -1
  180. package/dist/locale/sk.mjs +1 -1
  181. package/dist/locale/sl.js +1 -1
  182. package/dist/locale/sl.min.js +1 -1
  183. package/dist/locale/sl.min.mjs +1 -1
  184. package/dist/locale/sl.mjs +1 -1
  185. package/dist/locale/sr.js +1 -1
  186. package/dist/locale/sr.min.js +1 -1
  187. package/dist/locale/sr.min.mjs +1 -1
  188. package/dist/locale/sr.mjs +1 -1
  189. package/dist/locale/sv.js +1 -1
  190. package/dist/locale/sv.min.js +1 -1
  191. package/dist/locale/sv.min.mjs +1 -1
  192. package/dist/locale/sv.mjs +1 -1
  193. package/dist/locale/ta.js +1 -1
  194. package/dist/locale/ta.min.js +1 -1
  195. package/dist/locale/ta.min.mjs +1 -1
  196. package/dist/locale/ta.mjs +1 -1
  197. package/dist/locale/th.js +1 -1
  198. package/dist/locale/th.min.js +1 -1
  199. package/dist/locale/th.min.mjs +1 -1
  200. package/dist/locale/th.mjs +1 -1
  201. package/dist/locale/tk.js +1 -1
  202. package/dist/locale/tk.min.js +1 -1
  203. package/dist/locale/tk.min.mjs +1 -1
  204. package/dist/locale/tk.mjs +1 -1
  205. package/dist/locale/tr.js +1 -1
  206. package/dist/locale/tr.min.js +1 -1
  207. package/dist/locale/tr.min.mjs +1 -1
  208. package/dist/locale/tr.mjs +1 -1
  209. package/dist/locale/ug-cn.js +1 -1
  210. package/dist/locale/ug-cn.min.js +1 -1
  211. package/dist/locale/ug-cn.min.mjs +1 -1
  212. package/dist/locale/ug-cn.mjs +1 -1
  213. package/dist/locale/uk.js +1 -1
  214. package/dist/locale/uk.min.js +1 -1
  215. package/dist/locale/uk.min.mjs +1 -1
  216. package/dist/locale/uk.mjs +1 -1
  217. package/dist/locale/uz-uz.js +1 -1
  218. package/dist/locale/uz-uz.min.js +1 -1
  219. package/dist/locale/uz-uz.min.mjs +1 -1
  220. package/dist/locale/uz-uz.mjs +1 -1
  221. package/dist/locale/vi.js +1 -1
  222. package/dist/locale/vi.min.js +1 -1
  223. package/dist/locale/vi.min.mjs +1 -1
  224. package/dist/locale/vi.mjs +1 -1
  225. package/dist/locale/zh-cn.js +1 -1
  226. package/dist/locale/zh-cn.min.js +1 -1
  227. package/dist/locale/zh-cn.min.mjs +1 -1
  228. package/dist/locale/zh-cn.mjs +1 -1
  229. package/dist/locale/zh-tw.js +1 -1
  230. package/dist/locale/zh-tw.min.js +1 -1
  231. package/dist/locale/zh-tw.min.mjs +1 -1
  232. package/dist/locale/zh-tw.mjs +1 -1
  233. package/es/components/index.mjs +1 -1
  234. package/es/components/pagination/src/pagination.mjs +8 -7
  235. package/es/components/pagination/src/pagination.mjs.map +1 -1
  236. package/es/components/statistic/index.d.ts +55 -50
  237. package/es/components/statistic/index.mjs +1 -1
  238. package/es/components/statistic/src/countdown.d.ts +8 -8
  239. package/es/components/statistic/src/countdown.mjs +29 -27
  240. package/es/components/statistic/src/countdown.mjs.map +1 -1
  241. package/es/components/statistic/src/countdown.vue.d.ts +20 -23
  242. package/es/components/statistic/src/countdown2.mjs +14 -22
  243. package/es/components/statistic/src/countdown2.mjs.map +1 -1
  244. package/es/components/statistic/src/statistic.d.ts +12 -8
  245. package/es/components/statistic/src/statistic.mjs +10 -24
  246. package/es/components/statistic/src/statistic.mjs.map +1 -1
  247. package/es/components/statistic/src/statistic.vue.d.ts +35 -27
  248. package/es/components/statistic/src/statistic2.mjs +6 -5
  249. package/es/components/statistic/src/statistic2.mjs.map +1 -1
  250. package/es/index.mjs +1 -1
  251. package/es/version.d.ts +1 -1
  252. package/es/version.mjs +1 -1
  253. package/es/version.mjs.map +1 -1
  254. package/lib/components/index.js +1 -1
  255. package/lib/components/pagination/src/pagination.js +8 -7
  256. package/lib/components/pagination/src/pagination.js.map +1 -1
  257. package/lib/components/statistic/index.d.ts +55 -50
  258. package/lib/components/statistic/index.js +1 -1
  259. package/lib/components/statistic/src/countdown.d.ts +8 -8
  260. package/lib/components/statistic/src/countdown.js +28 -30
  261. package/lib/components/statistic/src/countdown.js.map +1 -1
  262. package/lib/components/statistic/src/countdown.vue.d.ts +20 -23
  263. package/lib/components/statistic/src/countdown2.js +13 -21
  264. package/lib/components/statistic/src/countdown2.js.map +1 -1
  265. package/lib/components/statistic/src/statistic.d.ts +12 -8
  266. package/lib/components/statistic/src/statistic.js +10 -24
  267. package/lib/components/statistic/src/statistic.js.map +1 -1
  268. package/lib/components/statistic/src/statistic.vue.d.ts +35 -27
  269. package/lib/components/statistic/src/statistic2.js +5 -4
  270. package/lib/components/statistic/src/statistic2.js.map +1 -1
  271. package/lib/index.js +1 -1
  272. package/lib/version.d.ts +1 -1
  273. package/lib/version.js +1 -1
  274. package/lib/version.js.map +1 -1
  275. package/package.json +2 -2
  276. package/theme-chalk/el-color-picker.css +1 -1
  277. package/theme-chalk/index.css +1 -1
  278. package/theme-chalk/src/color-picker.scss +16 -2
  279. package/web-types.json +1 -1
@@ -1,7 +1,7 @@
1
1
  import '../../utils/index.mjs';
2
2
  import Statistic from './src/statistic2.mjs';
3
3
  import Countdown from './src/countdown2.mjs';
4
- export { regroup, statisticProps } from './src/statistic.mjs';
4
+ export { groupFormat, statisticProps } from './src/statistic.mjs';
5
5
  export { countdownEmits, countdownProps, formatTimeStr } from './src/countdown.mjs';
6
6
  import { withInstall } from '../../utils/vue/install.mjs';
7
7
 
@@ -1,22 +1,22 @@
1
- import dayjs from 'dayjs';
2
1
  import type { StyleValue } from 'vue';
2
+ import type { Dayjs } from 'dayjs';
3
3
  import type Countdown from './countdown.vue';
4
4
  export declare const countdownProps: {
5
5
  readonly format: import("element-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, "HH:mm:ss", boolean>;
6
- readonly prefix: import("element-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, "", boolean>;
7
- readonly suffix: import("element-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, null, boolean>;
8
- readonly title: import("element-plus/es/utils").EpPropFinalized<readonly [StringConstructor, NumberConstructor], unknown, unknown, "", boolean>;
9
- readonly value: {
10
- readonly type: import("vue").PropType<import("element-plus/es/utils").EpPropMergeType<(new (...args: any[]) => (number | dayjs.Dayjs) & {}) | (() => number | dayjs.Dayjs) | ((new (...args: any[]) => (number | dayjs.Dayjs) & {}) | (() => number | dayjs.Dayjs))[], unknown, unknown>>;
6
+ readonly prefix: StringConstructor;
7
+ readonly suffix: StringConstructor;
8
+ readonly title: StringConstructor;
9
+ readonly value: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => (number | Dayjs) & {}) | (() => number | Dayjs) | ((new (...args: any[]) => (number | Dayjs) & {}) | (() => number | Dayjs))[], unknown, unknown, 0, boolean>;
10
+ readonly valueStyle: {
11
+ readonly type: import("vue").PropType<import("element-plus/es/utils").EpPropMergeType<(new (...args: any[]) => StyleValue & {}) | (() => StyleValue) | ((new (...args: any[]) => StyleValue & {}) | (() => StyleValue))[], unknown, unknown>>;
11
12
  readonly required: false;
12
13
  readonly validator: ((val: unknown) => boolean) | undefined;
13
14
  __epPropKey: true;
14
15
  };
15
- readonly valueStyle: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => StyleValue & {}) | (() => StyleValue) | ((new (...args: any[]) => StyleValue & {}) | (() => StyleValue))[], unknown, unknown, () => {}, boolean>;
16
16
  };
17
17
  export declare const countdownEmits: {
18
18
  finish: () => boolean;
19
19
  change: (value: number) => boolean;
20
20
  };
21
- export declare const formatTimeStr: (format: any, time: number, futureTime: any) => string;
21
+ export declare const formatTimeStr: (format: string, time: number) => string;
22
22
  export declare type CountdownInstance = InstanceType<typeof Countdown>;
@@ -1,38 +1,31 @@
1
- import { reduce, floor, divide, multiply, padStart } from 'lodash-unified';
2
- import dayjs from 'dayjs';
1
+ import { padStart } from 'lodash-unified';
3
2
  import '../../../utils/index.mjs';
3
+ import '../../../constants/index.mjs';
4
4
  import { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';
5
+ import { CHANGE_EVENT } from '../../../constants/event.mjs';
6
+ import { isNumber } from '@vueuse/core';
5
7
 
6
8
  const countdownProps = buildProps({
7
9
  format: {
8
10
  type: String,
9
11
  default: "HH:mm:ss"
10
12
  },
11
- prefix: {
12
- type: String,
13
- default: ""
14
- },
15
- suffix: {
16
- type: String,
17
- default: null
18
- },
19
- title: {
20
- type: [String, Number],
21
- default: ""
22
- },
13
+ prefix: String,
14
+ suffix: String,
15
+ title: String,
23
16
  value: {
24
- type: definePropType([Number, Object])
17
+ type: definePropType([Number, Object]),
18
+ default: 0
25
19
  },
26
20
  valueStyle: {
27
- type: definePropType([String, Object]),
28
- default: () => ({})
21
+ type: definePropType([String, Object, Array])
29
22
  }
30
23
  });
31
24
  const countdownEmits = {
32
25
  finish: () => true,
33
- change: (value) => !!value
26
+ [CHANGE_EVENT]: (value) => isNumber(value)
34
27
  };
35
- const formatTimeStr = function(format, time, futureTime) {
28
+ const formatTimeStr = (format, time) => {
36
29
  const timeUnits = [
37
30
  ["Y", 1e3 * 60 * 60 * 24 * 365],
38
31
  ["M", 1e3 * 60 * 60 * 24 * 30],
@@ -42,19 +35,28 @@ const formatTimeStr = function(format, time, futureTime) {
42
35
  ["s", 1e3],
43
36
  ["S", 1]
44
37
  ];
45
- return reduce(timeUnits, (con, item) => {
38
+ let pre = 0;
39
+ let preTick = 0;
40
+ let timeLeft = time;
41
+ return timeUnits.reduce((con, item) => {
46
42
  const name = item[0];
47
43
  return con.replace(new RegExp(`${name}+`, "g"), (match) => {
48
44
  let sum = 0;
49
- if (name == "M") {
50
- sum = Math.abs(dayjs().diff(dayjs(futureTime), name));
51
- time -= Math.abs(dayjs().diff(dayjs().add(sum, "month").format(), "day") * timeUnits[2][1]);
45
+ if (!format.includes(name)) {
46
+ pre = Math.floor(timeLeft / item[1]);
47
+ timeLeft = timeLeft - pre * item[1];
48
+ preTick = item[1];
52
49
  } else {
53
- sum = floor(divide(time, item[1]));
54
- time -= multiply(sum, item[1]);
50
+ pre = 0;
51
+ preTick = 0;
52
+ sum = Math.floor(timeLeft / item[1]);
53
+ timeLeft = timeLeft - sum * item[1];
54
+ if (pre > 0) {
55
+ sum = sum + pre * (preTick / item[1]);
56
+ pre = 0;
57
+ }
55
58
  }
56
- sum = padStart(String(sum), String(match).length, "0");
57
- return sum;
59
+ return padStart(String(sum), match.length, "0");
58
60
  });
59
61
  }, format);
60
62
  };
@@ -1 +1 @@
1
- {"version":3,"file":"countdown.mjs","sources":["../../../../../../packages/components/statistic/src/countdown.ts"],"sourcesContent":["import { divide, floor, multiply, padStart, reduce } from 'lodash-unified'\nimport dayjs from 'dayjs'\nimport { buildProps, definePropType } from '@element-plus/utils'\nimport type { StyleValue } from 'vue'\nimport type { Dayjs } from 'dayjs'\nimport type Countdown from './countdown.vue'\nexport const countdownProps = buildProps({\n format: {\n type: String,\n default: 'HH:mm:ss',\n },\n prefix: {\n type: String,\n default: '',\n },\n suffix: {\n type: String,\n default: null,\n },\n title: {\n type: [String, Number],\n default: '',\n },\n value: {\n type: definePropType<number | Dayjs>([Number, Object]),\n },\n valueStyle: {\n type: definePropType<StyleValue>([String, Object]),\n default: () => ({}),\n },\n} as const)\n\nexport const countdownEmits = {\n finish: () => true,\n change: (value: number) => !!value,\n}\n\nexport const formatTimeStr = function (\n format: any,\n time: number,\n futureTime: any\n) {\n const timeUnits: any = [\n ['Y', 1000 * 60 * 60 * 24 * 365], // years\n ['M', 1000 * 60 * 60 * 24 * 30], // months\n ['D', 1000 * 60 * 60 * 24], // days\n ['H', 1000 * 60 * 60], // hours\n ['m', 1000 * 60], // minutes\n ['s', 1000], // seconds\n ['S', 1], // million seconds\n ]\n return reduce(\n timeUnits,\n (con: string, item: any[]) => {\n const name = item[0]\n return con.replace(new RegExp(`${name}+`, 'g'), (match: any) => {\n let sum: any = 0\n if (name == 'M') {\n //Revision of month\n sum = Math.abs(dayjs().diff(dayjs(futureTime), name))\n time -= Math.abs(\n dayjs().diff(dayjs().add(sum, 'month').format(), 'day') *\n timeUnits[2][1]\n )\n } else {\n sum = floor(divide(time, item[1]))\n time -= multiply(sum, item[1])\n }\n sum = padStart(String(sum), String(match).length, '0') // autoCompletion\n return sum\n })\n },\n format\n )\n}\n\nexport type CountdownInstance = InstanceType<typeof Countdown>\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"countdown.mjs","sources":["../../../../../../packages/components/statistic/src/countdown.ts"],"sourcesContent":["import { padStart } from 'lodash-unified'\nimport { buildProps, definePropType, isNumber } from '@element-plus/utils'\nimport { CHANGE_EVENT } from '@element-plus/constants'\nimport type { StyleValue } from 'vue'\nimport type { Dayjs } from 'dayjs'\nimport type Countdown from './countdown.vue'\nexport const countdownProps = buildProps({\n /**\n * @description Formatting the countdown display\n */\n format: {\n type: String,\n default: 'HH:mm:ss',\n },\n /**\n * @description Sets the prefix of a countdown\n */\n prefix: String,\n /**\n * @description Sets the suffix of a countdown\n */\n suffix: String,\n /**\n * @description countdown titles\n */\n title: String,\n /**\n * @description target time\n */\n value: {\n type: definePropType<number | Dayjs>([Number, Object]),\n default: 0,\n },\n /**\n * @description Styles countdown values\n */\n valueStyle: {\n type: definePropType<StyleValue>([String, Object, Array]),\n },\n} as const)\n\nexport const countdownEmits = {\n finish: () => true,\n [CHANGE_EVENT]: (value: number) => isNumber(value),\n}\n\nexport const formatTimeStr = (format: string, time: number) => {\n const timeUnits: [string, number][] = [\n ['Y', 1000 * 60 * 60 * 24 * 365], // years\n ['M', 1000 * 60 * 60 * 24 * 30], // months\n ['D', 1000 * 60 * 60 * 24], // days\n ['H', 1000 * 60 * 60], // hours\n ['m', 1000 * 60], // minutes\n ['s', 1000], // seconds\n ['S', 1], // million seconds\n ]\n // The unformatted value of the previous tick\n let pre = 0\n // previous tick\n let preTick = 0\n // time left\n let timeLeft = time\n return timeUnits.reduce((con: string, item: [string, number]) => {\n const name = item[0]\n return con.replace(new RegExp(`${name}+`, 'g'), (match) => {\n let sum = 0\n if (!format.includes(name)) {\n pre = Math.floor(timeLeft / item[1])\n timeLeft = timeLeft - pre * item[1]\n preTick = item[1]\n } else {\n pre = 0\n preTick = 0\n sum = Math.floor(timeLeft / item[1])\n timeLeft = timeLeft - sum * item[1]\n if (pre > 0) {\n sum = sum + pre * (preTick / item[1])\n pre = 0\n }\n }\n return padStart(String(sum), match.length, '0') // autoCompletion\n })\n }, format)\n}\n\nexport type CountdownInstance = InstanceType<typeof Countdown>\n"],"names":[],"mappings":"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"}
@@ -1,29 +1,29 @@
1
1
  declare const _default: import("vue").DefineComponent<{
2
2
  readonly format: import("element-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, "HH:mm:ss", boolean>;
3
- readonly prefix: import("element-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, "", boolean>;
4
- readonly suffix: import("element-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, null, boolean>;
5
- readonly title: import("element-plus/es/utils").EpPropFinalized<readonly [StringConstructor, NumberConstructor], unknown, unknown, "", boolean>;
6
- readonly value: {
7
- readonly type: import("vue").PropType<import("element-plus/es/utils").EpPropMergeType<(new (...args: any[]) => (number | import("dayjs").Dayjs) & {}) | (() => number | import("dayjs").Dayjs) | ((new (...args: any[]) => (number | import("dayjs").Dayjs) & {}) | (() => number | import("dayjs").Dayjs))[], unknown, unknown>>;
3
+ readonly prefix: StringConstructor;
4
+ readonly suffix: StringConstructor;
5
+ readonly title: StringConstructor;
6
+ readonly value: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => (number | import("dayjs").Dayjs) & {}) | (() => number | import("dayjs").Dayjs) | ((new (...args: any[]) => (number | import("dayjs").Dayjs) & {}) | (() => number | import("dayjs").Dayjs))[], unknown, unknown, 0, boolean>;
7
+ readonly valueStyle: {
8
+ readonly type: import("vue").PropType<import("element-plus/es/utils").EpPropMergeType<(new (...args: any[]) => import("vue").StyleValue & {}) | (() => import("vue").StyleValue) | ((new (...args: any[]) => import("vue").StyleValue & {}) | (() => import("vue").StyleValue))[], unknown, unknown>>;
8
9
  readonly required: false;
9
10
  readonly validator: ((val: unknown) => boolean) | undefined;
10
11
  __epPropKey: true;
11
12
  };
12
- readonly valueStyle: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => import("vue").StyleValue & {}) | (() => import("vue").StyleValue) | ((new (...args: any[]) => import("vue").StyleValue & {}) | (() => import("vue").StyleValue))[], unknown, unknown, () => {}, boolean>;
13
13
  }, {
14
14
  REFRESH_INTERVAL: number;
15
15
  props: Readonly<import("@vue/shared").LooseRequired<Readonly<import("vue").ExtractPropTypes<{
16
16
  readonly format: import("element-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, "HH:mm:ss", boolean>;
17
- readonly prefix: import("element-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, "", boolean>;
18
- readonly suffix: import("element-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, null, boolean>;
19
- readonly title: import("element-plus/es/utils").EpPropFinalized<readonly [StringConstructor, NumberConstructor], unknown, unknown, "", boolean>;
20
- readonly value: {
21
- readonly type: import("vue").PropType<import("element-plus/es/utils").EpPropMergeType<(new (...args: any[]) => (number | import("dayjs").Dayjs) & {}) | (() => number | import("dayjs").Dayjs) | ((new (...args: any[]) => (number | import("dayjs").Dayjs) & {}) | (() => number | import("dayjs").Dayjs))[], unknown, unknown>>;
17
+ readonly prefix: StringConstructor;
18
+ readonly suffix: StringConstructor;
19
+ readonly title: StringConstructor;
20
+ readonly value: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => (number | import("dayjs").Dayjs) & {}) | (() => number | import("dayjs").Dayjs) | ((new (...args: any[]) => (number | import("dayjs").Dayjs) & {}) | (() => number | import("dayjs").Dayjs))[], unknown, unknown, 0, boolean>;
21
+ readonly valueStyle: {
22
+ readonly type: import("vue").PropType<import("element-plus/es/utils").EpPropMergeType<(new (...args: any[]) => import("vue").StyleValue & {}) | (() => import("vue").StyleValue) | ((new (...args: any[]) => import("vue").StyleValue & {}) | (() => import("vue").StyleValue))[], unknown, unknown>>;
22
23
  readonly required: false;
23
24
  readonly validator: ((val: unknown) => boolean) | undefined;
24
25
  __epPropKey: true;
25
26
  };
26
- readonly valueStyle: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => import("vue").StyleValue & {}) | (() => import("vue").StyleValue) | ((new (...args: any[]) => import("vue").StyleValue & {}) | (() => import("vue").StyleValue))[], unknown, unknown, () => {}, boolean>;
27
27
  }>> & {
28
28
  onChange?: ((value: number) => any) | undefined;
29
29
  onFinish?: (() => any) | undefined;
@@ -47,7 +47,7 @@ declare const _default: import("vue").DefineComponent<{
47
47
  cssVarBlock: (object: Record<string, string>) => Record<string, string>;
48
48
  cssVarBlockName: (name: string) => string;
49
49
  };
50
- disposeValue: import("vue").Ref<string>;
50
+ displayValue: import("vue").Ref<string>;
51
51
  timer: number | undefined;
52
52
  getTime: (val: number) => number;
53
53
  stopTimer: () => void;
@@ -57,24 +57,21 @@ declare const _default: import("vue").DefineComponent<{
57
57
  change: (value: number) => boolean;
58
58
  }, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
59
59
  readonly format: import("element-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, "HH:mm:ss", boolean>;
60
- readonly prefix: import("element-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, "", boolean>;
61
- readonly suffix: import("element-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, null, boolean>;
62
- readonly title: import("element-plus/es/utils").EpPropFinalized<readonly [StringConstructor, NumberConstructor], unknown, unknown, "", boolean>;
63
- readonly value: {
64
- readonly type: import("vue").PropType<import("element-plus/es/utils").EpPropMergeType<(new (...args: any[]) => (number | import("dayjs").Dayjs) & {}) | (() => number | import("dayjs").Dayjs) | ((new (...args: any[]) => (number | import("dayjs").Dayjs) & {}) | (() => number | import("dayjs").Dayjs))[], unknown, unknown>>;
60
+ readonly prefix: StringConstructor;
61
+ readonly suffix: StringConstructor;
62
+ readonly title: StringConstructor;
63
+ readonly value: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => (number | import("dayjs").Dayjs) & {}) | (() => number | import("dayjs").Dayjs) | ((new (...args: any[]) => (number | import("dayjs").Dayjs) & {}) | (() => number | import("dayjs").Dayjs))[], unknown, unknown, 0, boolean>;
64
+ readonly valueStyle: {
65
+ readonly type: import("vue").PropType<import("element-plus/es/utils").EpPropMergeType<(new (...args: any[]) => import("vue").StyleValue & {}) | (() => import("vue").StyleValue) | ((new (...args: any[]) => import("vue").StyleValue & {}) | (() => import("vue").StyleValue))[], unknown, unknown>>;
65
66
  readonly required: false;
66
67
  readonly validator: ((val: unknown) => boolean) | undefined;
67
68
  __epPropKey: true;
68
69
  };
69
- readonly valueStyle: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => import("vue").StyleValue & {}) | (() => import("vue").StyleValue) | ((new (...args: any[]) => import("vue").StyleValue & {}) | (() => import("vue").StyleValue))[], unknown, unknown, () => {}, boolean>;
70
70
  }>> & {
71
71
  onChange?: ((value: number) => any) | undefined;
72
72
  onFinish?: (() => any) | undefined;
73
73
  }, {
74
- readonly title: import("element-plus/es/utils").EpPropMergeType<readonly [StringConstructor, NumberConstructor], unknown, unknown>;
75
- readonly prefix: string;
76
- readonly suffix: string;
74
+ readonly value: import("element-plus/es/utils").EpPropMergeType<(new (...args: any[]) => (number | import("dayjs").Dayjs) & {}) | (() => number | import("dayjs").Dayjs) | ((new (...args: any[]) => (number | import("dayjs").Dayjs) & {}) | (() => number | import("dayjs").Dayjs))[], unknown, unknown>;
77
75
  readonly format: string;
78
- readonly valueStyle: import("vue").StyleValue;
79
76
  }>;
80
77
  export default _default;
@@ -1,5 +1,4 @@
1
- import { defineComponent, onBeforeUnmount, ref, watch, openBlock, createElementBlock, normalizeClass, unref, createElementVNode, renderSlot, createTextVNode, toDisplayString, createCommentVNode, normalizeStyle } from 'vue';
2
- import { isNil } from 'lodash-unified';
1
+ import { defineComponent, ref, watch, onBeforeUnmount, openBlock, createElementBlock, normalizeClass, unref, createElementVNode, renderSlot, createTextVNode, toDisplayString, createCommentVNode, normalizeStyle } from 'vue';
3
2
  import '../../../hooks/index.mjs';
4
3
  import '../../../utils/index.mjs';
5
4
  import { countdownProps, countdownEmits, formatTimeStr } from './countdown.mjs';
@@ -17,11 +16,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
17
16
  emits: countdownEmits,
18
17
  setup(__props, { expose, emit }) {
19
18
  const props = __props;
20
- onBeforeUnmount(() => {
21
- stopTimer();
22
- });
23
19
  const ns = useNamespace("statistic");
24
- const disposeValue = ref("");
20
+ const displayValue = ref("");
25
21
  let timer;
26
22
  const getTime = (val) => {
27
23
  return new Date(val).getTime();
@@ -34,19 +30,17 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
34
30
  };
35
31
  const startTimer = () => {
36
32
  const { value, format } = props;
37
- if (isNil(value)) {
38
- disposeValue.value = "";
39
- return;
40
- }
41
33
  const timestamp = getTime(isNumber(value) ? value : value.valueOf());
34
+ displayValue.value = formatTimeStr(format, timestamp - Date.now());
42
35
  timer = setInterval(() => {
43
- const diff = timestamp - Date.now();
36
+ let diff = timestamp - Date.now();
44
37
  emit("change", diff);
45
- if (diff < 0) {
38
+ if (diff <= 0) {
39
+ diff = 0;
46
40
  stopTimer();
47
41
  emit("finish");
48
42
  }
49
- disposeValue.value = formatTimeStr(format, diff, value);
43
+ displayValue.value = formatTimeStr(format, diff);
50
44
  }, REFRESH_INTERVAL);
51
45
  };
52
46
  watch(() => [props.value, props.format], () => {
@@ -55,8 +49,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
55
49
  }, {
56
50
  immediate: true
57
51
  });
52
+ onBeforeUnmount(() => {
53
+ stopTimer();
54
+ });
58
55
  expose({
59
- disposeValue
56
+ displayValue
60
57
  });
61
58
  return (_ctx, _cache) => {
62
59
  return openBlock(), createElementBlock("div", {
@@ -86,17 +83,12 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
86
83
  createTextVNode(toDisplayString(_ctx.prefix), 1)
87
84
  ])
88
85
  ], 2)) : createCommentVNode("v-if", true),
89
- _ctx.value ? (openBlock(), createElementBlock("span", {
90
- key: 1,
86
+ createElementVNode("span", {
91
87
  class: normalizeClass(unref(ns).e("number")),
92
88
  style: normalizeStyle(_ctx.valueStyle)
93
- }, [
94
- renderSlot(_ctx.$slots, "formatter", {}, () => [
95
- createTextVNode(toDisplayString(disposeValue.value), 1)
96
- ])
97
- ], 6)) : createCommentVNode("v-if", true),
89
+ }, toDisplayString(displayValue.value), 7),
98
90
  !!_ctx.$slots.title || _ctx.suffix ? (openBlock(), createElementBlock("span", {
99
- key: 2,
91
+ key: 1,
100
92
  class: normalizeClass(unref(ns).e("suffix"))
101
93
  }, [
102
94
  renderSlot(_ctx.$slots, "suffix", {}, () => [
@@ -1 +1 @@
1
- {"version":3,"file":"countdown2.mjs","sources":["../../../../../../packages/components/statistic/src/countdown.vue"],"sourcesContent":["<template>\n <div :class=\"ns.b()\">\n <div v-if=\"!!$slots.title || title\" ref=\"title\" :class=\"ns.e('head')\">\n <span :class=\"ns.e('title')\">\n <slot name=\"title\">\n {{ title }}\n </slot>\n </span>\n </div>\n <div :class=\"ns.e('content')\">\n <span v-if=\"!!$slots.title || prefix\" :class=\"ns.e('prefix')\">\n <slot name=\"prefix\">\n {{ prefix }}\n </slot>\n </span>\n <span v-if=\"value\" :class=\"ns.e('number')\" :style=\"valueStyle\">\n <slot name=\"formatter\"> {{ disposeValue }}</slot>\n </span>\n <span v-if=\"!!$slots.title || suffix\" :class=\"ns.e('suffix')\">\n <slot name=\"suffix\">\n {{ suffix }}\n </slot>\n </span>\n </div>\n </div>\n</template>\n<script lang=\"ts\" setup>\nimport { onBeforeUnmount, ref, watch } from 'vue'\nimport { isNil } from 'lodash-unified'\nimport { useNamespace } from '@element-plus/hooks'\nimport { isNumber } from '@element-plus/utils'\nimport { countdownEmits, countdownProps, formatTimeStr } from './countdown'\n\nconst REFRESH_INTERVAL = 1000 / 30\n\ndefineOptions({\n name: 'ElCountdown',\n})\nonBeforeUnmount(() => {\n stopTimer()\n})\nconst props = defineProps(countdownProps)\nconst emit = defineEmits(countdownEmits)\nconst ns = useNamespace('statistic')\nconst disposeValue = ref('')\nlet timer: ReturnType<typeof setInterval> | undefined\n\nconst getTime = (val: number) => {\n return new Date(val).getTime()\n}\n\nconst stopTimer = () => {\n if (timer) {\n clearInterval(timer)\n timer = undefined\n }\n}\n\nconst startTimer = () => {\n const { value, format } = props\n if (isNil(value)) {\n disposeValue.value = ''\n return\n }\n const timestamp = getTime(isNumber(value) ? value : value.valueOf())\n timer = setInterval(() => {\n const diff = timestamp - Date.now()\n emit('change', diff)\n if (diff < 0) {\n stopTimer()\n emit('finish')\n }\n disposeValue.value = formatTimeStr(format, diff, value)\n }, REFRESH_INTERVAL)\n}\n\nwatch(\n () => [props.value, props.format],\n () => {\n stopTimer()\n startTimer()\n },\n {\n immediate: true,\n }\n)\n\ndefineExpose({\n disposeValue,\n})\n</script>\n"],"names":[],"mappings":";;;;;;;;;;mCAmCc,CAAA;AAAA,EACZ,IAAM,EAAA,aAAA;AACR;;;;;;;AACA,IAAA,eAAA,CAAgB,MAAM;AACpB,MAAU,SAAA,EAAA,CAAA;AAAA,KACX,CAAA,CAAA;AAGD,IAAM,MAAA,EAAA,GAAK,aAAa,WAAW,CAAA,CAAA;AACnC,IAAM,MAAA,YAAA,GAAe,IAAI,EAAE,CAAA,CAAA;AAC3B,IAAI,IAAA,KAAA,CAAA;AAEJ,IAAM,MAAA,OAAA,GAAU,CAAC,GAAgB,KAAA;AAC/B,MAAA,OAAO,IAAI,IAAA,CAAK,GAAG,CAAA,CAAE,OAAQ,EAAA,CAAA;AAAA,KAC/B,CAAA;AAEA,IAAA,MAAM,YAAY,MAAM;AACtB,MAAA,IAAI,KAAO,EAAA;AACT,QAAA,aAAA,CAAc,KAAK,CAAA,CAAA;AACnB,QAAQ,KAAA,GAAA,KAAA,CAAA,CAAA;AAAA,OACV;AAAA,KACF,CAAA;AAEA,IAAA,MAAM,aAAa,MAAM;AACvB,MAAM,MAAA,EAAE,OAAO,MAAW,EAAA,GAAA,KAAA,CAAA;AAC1B,MAAI,IAAA,KAAA,CAAM,KAAK,CAAG,EAAA;AAChB,QAAA,YAAA,CAAa,KAAQ,GAAA,EAAA,CAAA;AACrB,QAAA,OAAA;AAAA,OACF;AACA,MAAM,MAAA,SAAA,GAAY,QAAQ,QAAS,CAAA,KAAK,IAAI,KAAQ,GAAA,KAAA,CAAM,SAAS,CAAA,CAAA;AACnE,MAAA,KAAA,GAAQ,YAAY,MAAM;AACxB,QAAM,MAAA,IAAA,GAAO,SAAY,GAAA,IAAA,CAAK,GAAI,EAAA,CAAA;AAClC,QAAA,IAAA,CAAK,UAAU,IAAI,CAAA,CAAA;AACnB,QAAA,IAAI,OAAO,CAAG,EAAA;AACZ,UAAU,SAAA,EAAA,CAAA;AACV,UAAA,IAAA,CAAK,QAAQ,CAAA,CAAA;AAAA,SACf;AACA,QAAA,YAAA,CAAa,KAAQ,GAAA,aAAA,CAAc,MAAQ,EAAA,IAAA,EAAM,KAAK,CAAA,CAAA;AAAA,SACrD,gBAAgB,CAAA,CAAA;AAAA,KACrB,CAAA;AAEA,IAAA,KAAA,CACE,MAAM,CAAC,KAAA,CAAM,OAAO,KAAM,CAAA,MAAM,GAChC,MAAM;AACJ,MAAU,SAAA,EAAA,CAAA;AACV,MAAW,UAAA,EAAA,CAAA;AAAA,KAEb,EAAA;AAAA,MACE,SAAW,EAAA,IAAA;AAAA,KAEf,CAAA,CAAA;AAEA,IAAa,MAAA,CAAA;AAAA,MACX,YAAA;AAAA,KACD,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"countdown2.mjs","sources":["../../../../../../packages/components/statistic/src/countdown.vue"],"sourcesContent":["<template>\n <div :class=\"ns.b()\">\n <div v-if=\"!!$slots.title || title\" ref=\"title\" :class=\"ns.e('head')\">\n <span :class=\"ns.e('title')\">\n <slot name=\"title\">\n {{ title }}\n </slot>\n </span>\n </div>\n <div :class=\"ns.e('content')\">\n <span v-if=\"!!$slots.title || prefix\" :class=\"ns.e('prefix')\">\n <slot name=\"prefix\">\n {{ prefix }}\n </slot>\n </span>\n <span :class=\"ns.e('number')\" :style=\"valueStyle\">\n {{ displayValue }}\n </span>\n <span v-if=\"!!$slots.title || suffix\" :class=\"ns.e('suffix')\">\n <slot name=\"suffix\">\n {{ suffix }}\n </slot>\n </span>\n </div>\n </div>\n</template>\n<script lang=\"ts\" setup>\nimport { onBeforeUnmount, ref, watch } from 'vue'\nimport { useNamespace } from '@element-plus/hooks'\nimport { isNumber } from '@element-plus/utils'\nimport { countdownEmits, countdownProps, formatTimeStr } from './countdown'\n\nconst REFRESH_INTERVAL = 1000 / 30\n\ndefineOptions({\n name: 'ElCountdown',\n})\n\nconst props = defineProps(countdownProps)\nconst emit = defineEmits(countdownEmits)\nconst ns = useNamespace('statistic')\nconst displayValue = ref('')\nlet timer: ReturnType<typeof setInterval> | undefined\n\nconst getTime = (val: number) => {\n return new Date(val).getTime()\n}\n\nconst stopTimer = () => {\n if (timer) {\n clearInterval(timer)\n timer = undefined\n }\n}\n\nconst startTimer = () => {\n const { value, format } = props\n const timestamp = getTime(isNumber(value) ? value : value.valueOf())\n displayValue.value = formatTimeStr(format, timestamp - Date.now())\n timer = setInterval(() => {\n let diff = timestamp - Date.now()\n emit('change', diff)\n if (diff <= 0) {\n diff = 0\n stopTimer()\n emit('finish')\n }\n displayValue.value = formatTimeStr(format, diff)\n }, REFRESH_INTERVAL)\n}\n\nwatch(\n () => [props.value, props.format],\n () => {\n stopTimer()\n startTimer()\n },\n {\n immediate: true,\n }\n)\n\nonBeforeUnmount(() => {\n stopTimer()\n})\n\ndefineExpose({\n /**\n * @description Current display value\n */\n displayValue,\n})\n</script>\n"],"names":[],"mappings":";;;;;;;;;mCAkCc,CAAA;AAAA,EACZ,IAAM,EAAA,aAAA;AACR;;;;;;;AAIA,IAAM,MAAA,EAAA,GAAK,aAAa,WAAW,CAAA,CAAA;AACnC,IAAM,MAAA,YAAA,GAAe,IAAI,EAAE,CAAA,CAAA;AAC3B,IAAI,IAAA,KAAA,CAAA;AAEJ,IAAM,MAAA,OAAA,GAAU,CAAC,GAAgB,KAAA;AAC/B,MAAA,OAAO,IAAI,IAAA,CAAK,GAAG,CAAA,CAAE,OAAQ,EAAA,CAAA;AAAA,KAC/B,CAAA;AAEA,IAAA,MAAM,YAAY,MAAM;AACtB,MAAA,IAAI,KAAO,EAAA;AACT,QAAA,aAAA,CAAc,KAAK,CAAA,CAAA;AACnB,QAAQ,KAAA,GAAA,KAAA,CAAA,CAAA;AAAA,OACV;AAAA,KACF,CAAA;AAEA,IAAA,MAAM,aAAa,MAAM;AACvB,MAAM,MAAA,EAAE,OAAO,MAAW,EAAA,GAAA,KAAA,CAAA;AAC1B,MAAM,MAAA,SAAA,GAAY,QAAQ,QAAS,CAAA,KAAK,IAAI,KAAQ,GAAA,KAAA,CAAM,SAAS,CAAA,CAAA;AACnE,MAAA,YAAA,CAAa,QAAQ,aAAc,CAAA,MAAA,EAAQ,SAAY,GAAA,IAAA,CAAK,KAAK,CAAA,CAAA;AACjE,MAAA,KAAA,GAAQ,YAAY,MAAM;AACxB,QAAI,IAAA,IAAA,GAAO,SAAY,GAAA,IAAA,CAAK,GAAI,EAAA,CAAA;AAChC,QAAA,IAAA,CAAK,UAAU,IAAI,CAAA,CAAA;AACnB,QAAA,IAAI,QAAQ,CAAG,EAAA;AACb,UAAO,IAAA,GAAA,CAAA,CAAA;AACP,UAAU,SAAA,EAAA,CAAA;AACV,UAAA,IAAA,CAAK,QAAQ,CAAA,CAAA;AAAA,SACf;AACA,QAAa,YAAA,CAAA,KAAA,GAAQ,aAAc,CAAA,MAAA,EAAQ,IAAI,CAAA,CAAA;AAAA,SAC9C,gBAAgB,CAAA,CAAA;AAAA,KACrB,CAAA;AAEA,IAAA,KAAA,CACE,MAAM,CAAC,KAAA,CAAM,OAAO,KAAM,CAAA,MAAM,GAChC,MAAM;AACJ,MAAU,SAAA,EAAA,CAAA;AACV,MAAW,UAAA,EAAA,CAAA;AAAA,KAEb,EAAA;AAAA,MACE,SAAW,EAAA,IAAA;AAAA,KAEf,CAAA,CAAA;AAEA,IAAA,eAAA,CAAgB,MAAM;AACpB,MAAU,SAAA,EAAA,CAAA;AAAA,KACX,CAAA,CAAA;AAED,IAAa,MAAA,CAAA;AAAA,MAIX,YAAA;AAAA,KACD,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -3,19 +3,23 @@ import type Statistic from './statistic.vue';
3
3
  export declare const statisticProps: {
4
4
  readonly decimalSeparator: import("element-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, ".", boolean>;
5
5
  readonly groupSeparator: import("element-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, ",", boolean>;
6
- readonly precision: import("element-plus/es/utils").EpPropFinalized<NumberConstructor, unknown, unknown, null, boolean>;
6
+ readonly precision: import("element-plus/es/utils").EpPropFinalized<NumberConstructor, unknown, unknown, 0, boolean>;
7
7
  readonly formatter: {
8
8
  readonly type: import("vue").PropType<(val: string | number) => string | number>;
9
9
  readonly required: false;
10
10
  readonly validator: ((val: unknown) => boolean) | undefined;
11
11
  __epPropKey: true;
12
12
  };
13
- readonly value: import("element-plus/es/utils").EpPropFinalized<readonly [StringConstructor, NumberConstructor], unknown, unknown, null, boolean>;
14
- readonly prefix: import("element-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, "", boolean>;
15
- readonly suffix: import("element-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, null, boolean>;
16
- readonly title: import("element-plus/es/utils").EpPropFinalized<readonly [StringConstructor, NumberConstructor], unknown, unknown, "", boolean>;
17
- readonly valueStyle: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => StyleValue & {}) | (() => StyleValue) | ((new (...args: any[]) => StyleValue & {}) | (() => StyleValue))[], unknown, unknown, () => {}, boolean>;
18
- readonly rate: import("element-plus/es/utils").EpPropFinalized<NumberConstructor, unknown, unknown, 3, boolean>;
13
+ readonly value: import("element-plus/es/utils").EpPropFinalized<readonly [StringConstructor, NumberConstructor], unknown, unknown, 0, boolean>;
14
+ readonly prefix: StringConstructor;
15
+ readonly suffix: StringConstructor;
16
+ readonly title: StringConstructor;
17
+ readonly valueStyle: {
18
+ readonly type: import("vue").PropType<import("element-plus/es/utils").EpPropMergeType<(new (...args: any[]) => StyleValue & {}) | (() => StyleValue) | ((new (...args: any[]) => StyleValue & {}) | (() => StyleValue))[], unknown, unknown>>;
19
+ readonly required: false;
20
+ readonly validator: ((val: unknown) => boolean) | undefined;
21
+ __epPropKey: true;
22
+ };
19
23
  };
20
- export declare const regroup: (target: any, _mulriple?: number, _groupSeparator?: string) => string;
24
+ export declare const groupFormat: (target: string, step?: number, groupSeparator?: string) => string;
21
25
  export declare type StatisticInstance = InstanceType<typeof Statistic>;
@@ -12,40 +12,26 @@ const statisticProps = buildProps({
12
12
  },
13
13
  precision: {
14
14
  type: Number,
15
- default: null
15
+ default: 0
16
16
  },
17
17
  formatter: {
18
18
  type: definePropType(Function)
19
19
  },
20
20
  value: {
21
21
  type: [String, Number],
22
- default: null
23
- },
24
- prefix: {
25
- type: String,
26
- default: ""
27
- },
28
- suffix: {
29
- type: String,
30
- default: null
31
- },
32
- title: {
33
- type: [String, Number],
34
- default: ""
22
+ default: 0
35
23
  },
24
+ prefix: String,
25
+ suffix: String,
26
+ title: String,
36
27
  valueStyle: {
37
- type: definePropType([String, Object]),
38
- default: () => ({})
39
- },
40
- rate: {
41
- type: Number,
42
- default: 3
28
+ type: definePropType([String, Object, Array])
43
29
  }
44
30
  });
45
- const regroup = function(target, _mulriple = 3, _groupSeparator = ",") {
46
- const reg = new RegExp(`\\B(?=(\\d{${_mulriple}})+(?!\\d))`, "g");
47
- return String(target).replace(reg, _groupSeparator);
31
+ const groupFormat = function(target, step = 3, groupSeparator = ",") {
32
+ const reg = new RegExp(`\\B(?=(\\d{${step}})+(?!\\d))`, "g");
33
+ return target.replace(reg, groupSeparator);
48
34
  };
49
35
 
50
- export { regroup, statisticProps };
36
+ export { groupFormat, statisticProps };
51
37
  //# sourceMappingURL=statistic.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"statistic.mjs","sources":["../../../../../../packages/components/statistic/src/statistic.ts"],"sourcesContent":["import { buildProps, definePropType } from '@element-plus/utils'\nimport type { StyleValue } from 'vue'\nimport type Statistic from './statistic.vue'\nexport const statisticProps = buildProps({\n decimalSeparator: {\n type: String,\n default: '.',\n },\n groupSeparator: {\n type: String,\n default: ',',\n },\n precision: {\n type: Number,\n default: null,\n },\n formatter: {\n type: definePropType<(val: string | number) => string | number>(Function),\n },\n value: {\n type: [String, Number],\n default: null,\n },\n prefix: {\n type: String,\n default: '',\n },\n suffix: {\n type: String,\n default: null,\n },\n title: {\n type: [String, Number],\n default: '',\n },\n valueStyle: {\n type: definePropType<StyleValue>([String, Object]),\n default: () => ({}),\n },\n rate: {\n type: Number,\n default: 3,\n },\n} as const)\nexport const regroup = function (\n target: any,\n _mulriple = 3,\n _groupSeparator = ','\n): string {\n const reg = new RegExp(`\\\\B(?=(\\\\d{${_mulriple}})+(?!\\\\d))`, 'g')\n return String(target).replace(reg, _groupSeparator)\n}\nexport type StatisticInstance = InstanceType<typeof Statistic>\n"],"names":[],"mappings":";;;AACY,MAAC,cAAc,GAAG,UAAU,CAAC;AACzC,EAAE,gBAAgB,EAAE;AACpB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,OAAO,EAAE,GAAG;AAChB,GAAG;AACH,EAAE,cAAc,EAAE;AAClB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,OAAO,EAAE,GAAG;AAChB,GAAG;AACH,EAAE,SAAS,EAAE;AACb,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,OAAO,EAAE,IAAI;AACjB,GAAG;AACH,EAAE,SAAS,EAAE;AACb,IAAI,IAAI,EAAE,cAAc,CAAC,QAAQ,CAAC;AAClC,GAAG;AACH,EAAE,KAAK,EAAE;AACT,IAAI,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;AAC1B,IAAI,OAAO,EAAE,IAAI;AACjB,GAAG;AACH,EAAE,MAAM,EAAE;AACV,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,OAAO,EAAE,EAAE;AACf,GAAG;AACH,EAAE,MAAM,EAAE;AACV,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,OAAO,EAAE,IAAI;AACjB,GAAG;AACH,EAAE,KAAK,EAAE;AACT,IAAI,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;AAC1B,IAAI,OAAO,EAAE,EAAE;AACf,GAAG;AACH,EAAE,UAAU,EAAE;AACd,IAAI,IAAI,EAAE,cAAc,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC1C,IAAI,OAAO,EAAE,OAAO,EAAE,CAAC;AACvB,GAAG;AACH,EAAE,IAAI,EAAE;AACR,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,OAAO,EAAE,CAAC;AACd,GAAG;AACH,CAAC,EAAE;AACS,MAAC,OAAO,GAAG,SAAS,MAAM,EAAE,SAAS,GAAG,CAAC,EAAE,eAAe,GAAG,GAAG,EAAE;AAC9E,EAAE,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,CAAC,WAAW,EAAE,SAAS,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC,CAAC;AACpE,EAAE,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;AACtD;;;;"}
1
+ {"version":3,"file":"statistic.mjs","sources":["../../../../../../packages/components/statistic/src/statistic.ts"],"sourcesContent":["import { buildProps, definePropType } from '@element-plus/utils'\nimport type { StyleValue } from 'vue'\nimport type Statistic from './statistic.vue'\nexport const statisticProps = buildProps({\n /**\n * @description Setting the decimal point\n */\n decimalSeparator: {\n type: String,\n default: '.',\n },\n /**\n * @description Sets the thousandth identifier\n */\n groupSeparator: {\n type: String,\n default: ',',\n },\n /**\n * @description numerical precision\n */\n precision: {\n type: Number,\n default: 0,\n },\n /**\n * @description Custom numerical presentation\n */\n formatter: {\n type: definePropType<(val: string | number) => string | number>(Function),\n },\n /**\n * @description Numerical content\n */\n value: {\n type: [String, Number],\n default: 0,\n },\n /**\n * @description Sets the prefix of a number\n */\n prefix: String,\n\n /**\n * @description Sets the suffix of a number\n */\n suffix: String,\n /**\n * @description Numeric titles\n */\n title: String,\n /**\n * @description Styles numeric values\n */\n valueStyle: {\n type: definePropType<StyleValue>([String, Object, Array]),\n },\n // rate: {\n // type: Number,\n // default: 3,\n // },\n} as const)\nexport const groupFormat = function (\n target: string,\n step = 3,\n groupSeparator = ','\n): string {\n const reg = new RegExp(`\\\\B(?=(\\\\d{${step}})+(?!\\\\d))`, 'g')\n return target.replace(reg, groupSeparator)\n}\nexport type StatisticInstance = InstanceType<typeof Statistic>\n"],"names":[],"mappings":";;;AACY,MAAC,cAAc,GAAG,UAAU,CAAC;AACzC,EAAE,gBAAgB,EAAE;AACpB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,OAAO,EAAE,GAAG;AAChB,GAAG;AACH,EAAE,cAAc,EAAE;AAClB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,OAAO,EAAE,GAAG;AAChB,GAAG;AACH,EAAE,SAAS,EAAE;AACb,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,OAAO,EAAE,CAAC;AACd,GAAG;AACH,EAAE,SAAS,EAAE;AACb,IAAI,IAAI,EAAE,cAAc,CAAC,QAAQ,CAAC;AAClC,GAAG;AACH,EAAE,KAAK,EAAE;AACT,IAAI,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;AAC1B,IAAI,OAAO,EAAE,CAAC;AACd,GAAG;AACH,EAAE,MAAM,EAAE,MAAM;AAChB,EAAE,MAAM,EAAE,MAAM;AAChB,EAAE,KAAK,EAAE,MAAM;AACf,EAAE,UAAU,EAAE;AACd,IAAI,IAAI,EAAE,cAAc,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AACjD,GAAG;AACH,CAAC,EAAE;AACS,MAAC,WAAW,GAAG,SAAS,MAAM,EAAE,IAAI,GAAG,CAAC,EAAE,cAAc,GAAG,GAAG,EAAE;AAC5E,EAAE,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC,CAAC;AAC/D,EAAE,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;AAC7C;;;;"}
@@ -1,36 +1,45 @@
1
1
  declare const _default: import("vue").DefineComponent<{
2
2
  readonly decimalSeparator: import("element-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, ".", boolean>;
3
3
  readonly groupSeparator: import("element-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, ",", boolean>;
4
- readonly precision: import("element-plus/es/utils").EpPropFinalized<NumberConstructor, unknown, unknown, null, boolean>;
4
+ readonly precision: import("element-plus/es/utils").EpPropFinalized<NumberConstructor, unknown, unknown, 0, boolean>;
5
5
  readonly formatter: {
6
6
  readonly type: import("vue").PropType<(val: string | number) => string | number>;
7
7
  readonly required: false;
8
8
  readonly validator: ((val: unknown) => boolean) | undefined;
9
9
  __epPropKey: true;
10
10
  };
11
- readonly value: import("element-plus/es/utils").EpPropFinalized<readonly [StringConstructor, NumberConstructor], unknown, unknown, null, boolean>;
12
- readonly prefix: import("element-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, "", boolean>;
13
- readonly suffix: import("element-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, null, boolean>;
14
- readonly title: import("element-plus/es/utils").EpPropFinalized<readonly [StringConstructor, NumberConstructor], unknown, unknown, "", boolean>;
15
- readonly valueStyle: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => import("vue").StyleValue & {}) | (() => import("vue").StyleValue) | ((new (...args: any[]) => import("vue").StyleValue & {}) | (() => import("vue").StyleValue))[], unknown, unknown, () => {}, boolean>;
16
- readonly rate: import("element-plus/es/utils").EpPropFinalized<NumberConstructor, unknown, unknown, 3, boolean>;
11
+ readonly value: import("element-plus/es/utils").EpPropFinalized<readonly [StringConstructor, NumberConstructor], unknown, unknown, 0, boolean>;
12
+ readonly prefix: StringConstructor;
13
+ readonly suffix: StringConstructor;
14
+ readonly title: StringConstructor;
15
+ readonly valueStyle: {
16
+ readonly type: import("vue").PropType<import("element-plus/es/utils").EpPropMergeType<(new (...args: any[]) => import("vue").StyleValue & {}) | (() => import("vue").StyleValue) | ((new (...args: any[]) => import("vue").StyleValue & {}) | (() => import("vue").StyleValue))[], unknown, unknown>>;
17
+ readonly required: false;
18
+ readonly validator: ((val: unknown) => boolean) | undefined;
19
+ __epPropKey: true;
20
+ };
17
21
  }, {
22
+ THOUSANDTH: number;
18
23
  props: Readonly<import("@vue/shared").LooseRequired<Readonly<import("vue").ExtractPropTypes<{
19
24
  readonly decimalSeparator: import("element-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, ".", boolean>;
20
25
  readonly groupSeparator: import("element-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, ",", boolean>;
21
- readonly precision: import("element-plus/es/utils").EpPropFinalized<NumberConstructor, unknown, unknown, null, boolean>;
26
+ readonly precision: import("element-plus/es/utils").EpPropFinalized<NumberConstructor, unknown, unknown, 0, boolean>;
22
27
  readonly formatter: {
23
28
  readonly type: import("vue").PropType<(val: string | number) => string | number>;
24
29
  readonly required: false;
25
30
  readonly validator: ((val: unknown) => boolean) | undefined;
26
31
  __epPropKey: true;
27
32
  };
28
- readonly value: import("element-plus/es/utils").EpPropFinalized<readonly [StringConstructor, NumberConstructor], unknown, unknown, null, boolean>;
29
- readonly prefix: import("element-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, "", boolean>;
30
- readonly suffix: import("element-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, null, boolean>;
31
- readonly title: import("element-plus/es/utils").EpPropFinalized<readonly [StringConstructor, NumberConstructor], unknown, unknown, "", boolean>;
32
- readonly valueStyle: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => import("vue").StyleValue & {}) | (() => import("vue").StyleValue) | ((new (...args: any[]) => import("vue").StyleValue & {}) | (() => import("vue").StyleValue))[], unknown, unknown, () => {}, boolean>;
33
- readonly rate: import("element-plus/es/utils").EpPropFinalized<NumberConstructor, unknown, unknown, 3, boolean>;
33
+ readonly value: import("element-plus/es/utils").EpPropFinalized<readonly [StringConstructor, NumberConstructor], unknown, unknown, 0, boolean>;
34
+ readonly prefix: StringConstructor;
35
+ readonly suffix: StringConstructor;
36
+ readonly title: StringConstructor;
37
+ readonly valueStyle: {
38
+ readonly type: import("vue").PropType<import("element-plus/es/utils").EpPropMergeType<(new (...args: any[]) => import("vue").StyleValue & {}) | (() => import("vue").StyleValue) | ((new (...args: any[]) => import("vue").StyleValue & {}) | (() => import("vue").StyleValue))[], unknown, unknown>>;
39
+ readonly required: false;
40
+ readonly validator: ((val: unknown) => boolean) | undefined;
41
+ __epPropKey: true;
42
+ };
34
43
  }>> & {
35
44
  [x: string & `on${string}`]: ((...args: any[]) => any) | ((...args: unknown[]) => any) | undefined;
36
45
  }>>;
@@ -52,32 +61,31 @@ declare const _default: import("vue").DefineComponent<{
52
61
  cssVarBlock: (object: Record<string, string>) => Record<string, string>;
53
62
  cssVarBlockName: (name: string) => string;
54
63
  };
55
- disposeValue: import("vue").ComputedRef<import("element-plus/es/utils").EpPropMergeType<readonly [StringConstructor, NumberConstructor], unknown, unknown>>;
64
+ displayValue: import("vue").ComputedRef<import("element-plus/es/utils").EpPropMergeType<readonly [StringConstructor, NumberConstructor], unknown, unknown>>;
56
65
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
57
66
  readonly decimalSeparator: import("element-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, ".", boolean>;
58
67
  readonly groupSeparator: import("element-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, ",", boolean>;
59
- readonly precision: import("element-plus/es/utils").EpPropFinalized<NumberConstructor, unknown, unknown, null, boolean>;
68
+ readonly precision: import("element-plus/es/utils").EpPropFinalized<NumberConstructor, unknown, unknown, 0, boolean>;
60
69
  readonly formatter: {
61
70
  readonly type: import("vue").PropType<(val: string | number) => string | number>;
62
71
  readonly required: false;
63
72
  readonly validator: ((val: unknown) => boolean) | undefined;
64
73
  __epPropKey: true;
65
74
  };
66
- readonly value: import("element-plus/es/utils").EpPropFinalized<readonly [StringConstructor, NumberConstructor], unknown, unknown, null, boolean>;
67
- readonly prefix: import("element-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, "", boolean>;
68
- readonly suffix: import("element-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, null, boolean>;
69
- readonly title: import("element-plus/es/utils").EpPropFinalized<readonly [StringConstructor, NumberConstructor], unknown, unknown, "", boolean>;
70
- readonly valueStyle: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => import("vue").StyleValue & {}) | (() => import("vue").StyleValue) | ((new (...args: any[]) => import("vue").StyleValue & {}) | (() => import("vue").StyleValue))[], unknown, unknown, () => {}, boolean>;
71
- readonly rate: import("element-plus/es/utils").EpPropFinalized<NumberConstructor, unknown, unknown, 3, boolean>;
75
+ readonly value: import("element-plus/es/utils").EpPropFinalized<readonly [StringConstructor, NumberConstructor], unknown, unknown, 0, boolean>;
76
+ readonly prefix: StringConstructor;
77
+ readonly suffix: StringConstructor;
78
+ readonly title: StringConstructor;
79
+ readonly valueStyle: {
80
+ readonly type: import("vue").PropType<import("element-plus/es/utils").EpPropMergeType<(new (...args: any[]) => import("vue").StyleValue & {}) | (() => import("vue").StyleValue) | ((new (...args: any[]) => import("vue").StyleValue & {}) | (() => import("vue").StyleValue))[], unknown, unknown>>;
81
+ readonly required: false;
82
+ readonly validator: ((val: unknown) => boolean) | undefined;
83
+ __epPropKey: true;
84
+ };
72
85
  }>>, {
73
- readonly title: import("element-plus/es/utils").EpPropMergeType<readonly [StringConstructor, NumberConstructor], unknown, unknown>;
74
86
  readonly value: import("element-plus/es/utils").EpPropMergeType<readonly [StringConstructor, NumberConstructor], unknown, unknown>;
75
- readonly prefix: string;
76
- readonly suffix: string;
77
87
  readonly precision: number;
78
88
  readonly decimalSeparator: string;
79
89
  readonly groupSeparator: string;
80
- readonly valueStyle: import("vue").StyleValue;
81
- readonly rate: number;
82
90
  }>;
83
91
  export default _default;
@@ -2,11 +2,12 @@ import { defineComponent, computed, openBlock, createElementBlock, normalizeClas
2
2
  import { isNil } from 'lodash-unified';
3
3
  import '../../../hooks/index.mjs';
4
4
  import '../../../utils/index.mjs';
5
- import { statisticProps, regroup } from './statistic.mjs';
5
+ import { statisticProps, groupFormat } from './statistic.mjs';
6
6
  import _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';
7
7
  import { useNamespace } from '../../../hooks/use-namespace/index.mjs';
8
8
  import { isFunction } from '@vue/shared';
9
9
 
10
+ const THOUSANDTH = 3;
10
11
  const __default__ = defineComponent({
11
12
  name: "ElStatistic"
12
13
  });
@@ -16,7 +17,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
16
17
  setup(__props, { expose }) {
17
18
  const props = __props;
18
19
  const ns = useNamespace("statistic");
19
- const disposeValue = computed(() => {
20
+ const displayValue = computed(() => {
20
21
  if (isFunction(props.formatter)) {
21
22
  return props.formatter(props.value);
22
23
  } else if (isNil(props.value) || !/^(-|\+)?\d+(\.\d+)?$/.test(`${props.value}`)) {
@@ -27,12 +28,12 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
27
28
  decimal = `${decimal || ""}${1 .toFixed(props.precision).replace(".", "").slice(1)}`;
28
29
  decimal = decimal.slice(0, props.precision);
29
30
  }
30
- integer = regroup(integer, props.rate, props.groupSeparator);
31
+ integer = groupFormat(integer, THOUSANDTH, props.groupSeparator);
31
32
  return [integer, decimal].join(decimal ? props.decimalSeparator || "." : "");
32
33
  }
33
34
  });
34
35
  expose({
35
- disposeValue
36
+ displayValue
36
37
  });
37
38
  return (_ctx, _cache) => {
38
39
  return openBlock(), createElementBlock("div", {
@@ -61,7 +62,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
61
62
  createElementVNode("span", {
62
63
  class: normalizeClass(unref(ns).e("number")),
63
64
  style: normalizeStyle(_ctx.valueStyle)
64
- }, toDisplayString(unref(disposeValue)), 7),
65
+ }, toDisplayString(unref(displayValue)), 7),
65
66
  _ctx.$slots.suffix || _ctx.suffix ? (openBlock(), createElementBlock("div", {
66
67
  key: 1,
67
68
  class: normalizeClass(unref(ns).e("suffix"))