@activecollab/components 2.0.92 → 2.0.94
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.
- package/dist/cjs/components/EditableCurrency/EditableCurrency.js +8 -5
- package/dist/cjs/components/EditableCurrency/EditableCurrency.js.map +1 -1
- package/dist/cjs/components/Input/InputNumber.js +5 -2
- package/dist/cjs/components/Input/InputNumber.js.map +1 -1
- package/dist/cjs/hooks/useInputNumber.js +10 -8
- package/dist/cjs/hooks/useInputNumber.js.map +1 -1
- package/dist/cjs/utils/currencyUtils.js +50 -8
- package/dist/cjs/utils/currencyUtils.js.map +1 -1
- package/dist/cjs/utils/currencyUtils.test.js +272 -19
- package/dist/cjs/utils/currencyUtils.test.js.map +1 -1
- package/dist/cjs/utils/index.js +8 -1
- package/dist/cjs/utils/index.js.map +1 -1
- package/dist/cjs/utils/types.js.map +1 -1
- package/dist/esm/components/EditableCurrency/EditableCurrency.d.ts.map +1 -1
- package/dist/esm/components/EditableCurrency/EditableCurrency.js +6 -4
- package/dist/esm/components/EditableCurrency/EditableCurrency.js.map +1 -1
- package/dist/esm/components/Input/InputNumber.d.ts.map +1 -1
- package/dist/esm/components/Input/InputNumber.js +3 -1
- package/dist/esm/components/Input/InputNumber.js.map +1 -1
- package/dist/esm/hooks/useInputNumber.d.ts +3 -2
- package/dist/esm/hooks/useInputNumber.d.ts.map +1 -1
- package/dist/esm/hooks/useInputNumber.js +9 -8
- package/dist/esm/hooks/useInputNumber.js.map +1 -1
- package/dist/esm/utils/currencyUtils.d.ts +4 -3
- package/dist/esm/utils/currencyUtils.d.ts.map +1 -1
- package/dist/esm/utils/currencyUtils.js +65 -7
- package/dist/esm/utils/currencyUtils.js.map +1 -1
- package/dist/esm/utils/currencyUtils.test.js +277 -20
- package/dist/esm/utils/currencyUtils.test.js.map +1 -1
- package/dist/esm/utils/index.d.ts +1 -1
- package/dist/esm/utils/index.d.ts.map +1 -1
- package/dist/esm/utils/index.js +1 -1
- package/dist/esm/utils/index.js.map +1 -1
- package/dist/esm/utils/types.d.ts +8 -0
- package/dist/esm/utils/types.d.ts.map +1 -1
- package/dist/esm/utils/types.js.map +1 -1
- package/dist/index.js +73 -22
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/package.json +1 -1
|
@@ -2,43 +2,296 @@
|
|
|
2
2
|
|
|
3
3
|
var _currencyUtils = require("./currencyUtils");
|
|
4
4
|
describe("format currency with thousandseparator set to ',' and decimalSeparator to '.'", function () {
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
// please try to leave unformatted - ignore works for this block only
|
|
6
|
+
// prettier-ignore
|
|
7
|
+
it.each([[{
|
|
8
|
+
value: ""
|
|
9
|
+
}, ""], [{
|
|
10
|
+
value: "10"
|
|
11
|
+
}, "10"], [{
|
|
12
|
+
value: "1000"
|
|
13
|
+
}, "1K"], [{
|
|
14
|
+
value: "1000.00"
|
|
15
|
+
}, "1K"], [{
|
|
16
|
+
value: "1200.50"
|
|
17
|
+
}, "1.2K"], [{
|
|
18
|
+
value: "1,200.00"
|
|
19
|
+
}, "1.2K"], [{
|
|
20
|
+
value: "2,240.00"
|
|
21
|
+
}, "2.2K"], [{
|
|
22
|
+
value: "22,240.00"
|
|
23
|
+
}, "22.2K"], [{
|
|
24
|
+
value: "50,000,000.00"
|
|
25
|
+
}, "50M"], [{
|
|
26
|
+
value: "-50,000.00"
|
|
27
|
+
}, "-50K"], [{
|
|
28
|
+
value: "-1,200"
|
|
29
|
+
}, "-1.2K"], [{
|
|
30
|
+
value: "-90,000,000.00"
|
|
31
|
+
}, "-90M"], [{
|
|
32
|
+
value: "900.25"
|
|
33
|
+
}, "900.25"], [{
|
|
34
|
+
value: 900.25,
|
|
35
|
+
thousandSeparator: ".",
|
|
36
|
+
decimalSeparator: ","
|
|
37
|
+
}, "900,25"], [{
|
|
38
|
+
value: "900,25",
|
|
39
|
+
thousandSeparator: ".",
|
|
40
|
+
decimalSeparator: ","
|
|
41
|
+
}, "900,25"], [{
|
|
42
|
+
value: 900.255556,
|
|
43
|
+
thousandSeparator: ".",
|
|
44
|
+
decimalSeparator: ","
|
|
45
|
+
}, "900,25"], [{
|
|
46
|
+
value: "900,255556",
|
|
47
|
+
thousandSeparator: ".",
|
|
48
|
+
decimalSeparator: ","
|
|
49
|
+
}, "900,25"], [{
|
|
50
|
+
value: 900.255556,
|
|
51
|
+
thousandSeparator: ".",
|
|
52
|
+
decimalSeparator: ",",
|
|
53
|
+
trimDecimals: false,
|
|
54
|
+
decimalSpaces: 6
|
|
55
|
+
}, "900,255556"], [{
|
|
56
|
+
value: "900,255556",
|
|
57
|
+
thousandSeparator: ".",
|
|
58
|
+
decimalSeparator: ",",
|
|
59
|
+
trimDecimals: false
|
|
60
|
+
}, "900,25"], [{
|
|
61
|
+
value: 900.25,
|
|
62
|
+
thousandSeparator: ".",
|
|
63
|
+
decimalSeparator: ",",
|
|
64
|
+
trimDecimals: false,
|
|
65
|
+
decimalSpaces: 3
|
|
66
|
+
}, "900,250"], [{
|
|
67
|
+
value: 900.25,
|
|
68
|
+
thousandSeparator: ".",
|
|
69
|
+
decimalSeparator: ",",
|
|
70
|
+
trimDecimals: false,
|
|
71
|
+
decimalSpaces: 3,
|
|
72
|
+
format: "long"
|
|
73
|
+
}, "900,250"], [{
|
|
74
|
+
value: 1150.6666667,
|
|
75
|
+
thousandSeparator: ",",
|
|
76
|
+
decimalSeparator: ".",
|
|
77
|
+
trimDecimals: true,
|
|
78
|
+
decimalSpaces: 2,
|
|
79
|
+
format: "long"
|
|
80
|
+
}, "1,150.66"], [{
|
|
81
|
+
value: "1150.6666667",
|
|
82
|
+
thousandSeparator: ",",
|
|
83
|
+
decimalSeparator: ".",
|
|
84
|
+
trimDecimals: true,
|
|
85
|
+
decimalSpaces: 2,
|
|
86
|
+
format: "long"
|
|
87
|
+
}, "1,150.66"], [{
|
|
88
|
+
value: 1150.6666667,
|
|
89
|
+
thousandSeparator: ",",
|
|
90
|
+
decimalSeparator: ".",
|
|
91
|
+
trimDecimals: true,
|
|
92
|
+
decimalSpaces: 2,
|
|
93
|
+
format: "short"
|
|
94
|
+
}, "1.2K"], [{
|
|
95
|
+
value: "1150.6666667",
|
|
96
|
+
thousandSeparator: ",",
|
|
97
|
+
decimalSeparator: ".",
|
|
98
|
+
trimDecimals: true,
|
|
99
|
+
decimalSpaces: 2,
|
|
100
|
+
format: "short"
|
|
101
|
+
}, "1.2K"], [{
|
|
102
|
+
value: 1150.0,
|
|
103
|
+
thousandSeparator: ",",
|
|
104
|
+
decimalSeparator: ".",
|
|
105
|
+
trimDecimals: true,
|
|
106
|
+
decimalSpaces: 2,
|
|
107
|
+
format: "short"
|
|
108
|
+
}, "1.1K"], [{
|
|
109
|
+
value: "1150.00000",
|
|
110
|
+
thousandSeparator: ",",
|
|
111
|
+
decimalSeparator: ".",
|
|
112
|
+
trimDecimals: true,
|
|
113
|
+
decimalSpaces: 2,
|
|
114
|
+
format: "short"
|
|
115
|
+
}, "1.1K"], [{
|
|
116
|
+
value: 1150.6,
|
|
117
|
+
thousandSeparator: ",",
|
|
118
|
+
decimalSeparator: ".",
|
|
119
|
+
trimDecimals: true,
|
|
120
|
+
decimalSpaces: 2,
|
|
121
|
+
format: "long"
|
|
122
|
+
}, "1,150.6"], [{
|
|
123
|
+
value: "1150.60",
|
|
124
|
+
thousandSeparator: ",",
|
|
125
|
+
decimalSeparator: ".",
|
|
126
|
+
trimDecimals: true,
|
|
127
|
+
decimalSpaces: 2,
|
|
128
|
+
format: "long"
|
|
129
|
+
}, "1,150.6"], [{
|
|
130
|
+
value: 1150.0,
|
|
131
|
+
thousandSeparator: ",",
|
|
132
|
+
decimalSeparator: ".",
|
|
133
|
+
trimDecimals: true,
|
|
134
|
+
decimalSpaces: 2,
|
|
135
|
+
format: "long"
|
|
136
|
+
}, "1,150"], [{
|
|
137
|
+
value: "1150.00",
|
|
138
|
+
thousandSeparator: ",",
|
|
139
|
+
decimalSeparator: ".",
|
|
140
|
+
trimDecimals: true,
|
|
141
|
+
decimalSpaces: 2,
|
|
142
|
+
format: "long"
|
|
143
|
+
}, "1,150"], [{
|
|
144
|
+
value: 110.155557,
|
|
145
|
+
thousandSeparator: ",",
|
|
146
|
+
decimalSeparator: ".",
|
|
147
|
+
trimDecimals: true,
|
|
148
|
+
decimalSpaces: 2,
|
|
149
|
+
format: "long"
|
|
150
|
+
}, "110.15"], [{
|
|
151
|
+
value: "110.155557",
|
|
152
|
+
thousandSeparator: ",",
|
|
153
|
+
decimalSeparator: ".",
|
|
154
|
+
trimDecimals: true,
|
|
155
|
+
decimalSpaces: 2,
|
|
156
|
+
format: "long"
|
|
157
|
+
}, "110.15"], [{
|
|
158
|
+
value: 110.155557,
|
|
159
|
+
thousandSeparator: ",",
|
|
160
|
+
decimalSeparator: ".",
|
|
161
|
+
trimDecimals: true,
|
|
162
|
+
decimalSpaces: 2,
|
|
163
|
+
format: "short"
|
|
164
|
+
}, "110.15"], [{
|
|
165
|
+
value: "110.155557",
|
|
166
|
+
thousandSeparator: ",",
|
|
167
|
+
decimalSeparator: ".",
|
|
168
|
+
trimDecimals: true,
|
|
169
|
+
decimalSpaces: 2,
|
|
170
|
+
format: "short"
|
|
171
|
+
}, "110.15"], [{
|
|
172
|
+
value: 1501000.155557,
|
|
173
|
+
thousandSeparator: ",",
|
|
174
|
+
decimalSeparator: ".",
|
|
175
|
+
trimDecimals: true,
|
|
176
|
+
decimalSpaces: 2,
|
|
177
|
+
format: "long"
|
|
178
|
+
}, "1,501,000.15"], [{
|
|
179
|
+
value: "1501000.155557",
|
|
180
|
+
thousandSeparator: ",",
|
|
181
|
+
decimalSeparator: ".",
|
|
182
|
+
trimDecimals: true,
|
|
183
|
+
decimalSpaces: 2,
|
|
184
|
+
format: "long"
|
|
185
|
+
}, "1,501,000.15"], [{
|
|
186
|
+
value: 1501000.155557,
|
|
187
|
+
thousandSeparator: ",",
|
|
188
|
+
decimalSeparator: ".",
|
|
189
|
+
trimDecimals: true,
|
|
190
|
+
decimalSpaces: 2,
|
|
191
|
+
format: "short"
|
|
192
|
+
}, "1.5M"], [{
|
|
193
|
+
value: "1501000.155557",
|
|
194
|
+
thousandSeparator: ",",
|
|
195
|
+
decimalSeparator: ".",
|
|
196
|
+
trimDecimals: true,
|
|
197
|
+
decimalSpaces: 2,
|
|
198
|
+
format: "short"
|
|
199
|
+
}, "1.5M"]])("should format currency advanced", function (params, expected) {
|
|
200
|
+
var value = params.value,
|
|
201
|
+
thousandSeparator = params.thousandSeparator,
|
|
202
|
+
decimalSeparator = params.decimalSeparator,
|
|
203
|
+
trimDecimals = params.trimDecimals,
|
|
204
|
+
decimalSpaces = params.decimalSpaces,
|
|
205
|
+
format = params.format;
|
|
206
|
+
expect((0, _currencyUtils.formatNumber)(value, thousandSeparator, decimalSeparator, trimDecimals, decimalSpaces, format)).toEqual(expected);
|
|
7
207
|
});
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
it.each([[
|
|
11
|
-
|
|
208
|
+
|
|
209
|
+
//fixedDecimalSpaces
|
|
210
|
+
it.each([[{
|
|
211
|
+
number: 123.456789,
|
|
212
|
+
decimalSpaces: 3
|
|
213
|
+
}, 123.456], [{
|
|
214
|
+
number: 123.3,
|
|
215
|
+
decimalSpaces: 2
|
|
216
|
+
}, 123.3], [{
|
|
217
|
+
number: 123.3,
|
|
218
|
+
decimalSpaces: 0
|
|
219
|
+
}, 123]])("should handle fixedDecimalSpaces", function (params, expected) {
|
|
220
|
+
expect((0, _currencyUtils.fixedDecimalSpaces)(params.number, params.decimalSpaces)).toBe(expected);
|
|
12
221
|
});
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
var result = (0, _currencyUtils.numberWithSeparator)(1000, ",");
|
|
17
|
-
expect(result).toBe("1,000");
|
|
222
|
+
|
|
223
|
+
//numberWithSeparator
|
|
224
|
+
it("should format number with thousand separator", function () {
|
|
225
|
+
var result = (0, _currencyUtils.numberWithSeparator)(1000.0.toFixed(3), ",", ".");
|
|
226
|
+
expect(result).toBe("1,000.000");
|
|
18
227
|
});
|
|
19
|
-
|
|
228
|
+
it("should format string number with thousand separator", function () {
|
|
20
229
|
var result = (0, _currencyUtils.numberWithSeparator)("1000", ",");
|
|
21
230
|
expect(result).toBe("1,000");
|
|
22
231
|
});
|
|
23
|
-
|
|
232
|
+
it("should format decimal number with thousand separator and keep decimal part", function () {
|
|
24
233
|
var result = (0, _currencyUtils.numberWithSeparator)(12345.67, ",");
|
|
25
234
|
expect(result).toBe("12,345.67");
|
|
26
235
|
});
|
|
27
|
-
|
|
28
|
-
var result = (0, _currencyUtils.numberWithSeparator)(1000, ",", false);
|
|
236
|
+
it("should not format when format is set to false", function () {
|
|
237
|
+
var result = (0, _currencyUtils.numberWithSeparator)(1000, ",", ".", false);
|
|
29
238
|
expect(result).toBe(1000);
|
|
30
239
|
});
|
|
31
|
-
|
|
240
|
+
it("should handle zero with thousand separator", function () {
|
|
32
241
|
var result = (0, _currencyUtils.numberWithSeparator)(0, ",");
|
|
33
242
|
expect(result).toBe("0");
|
|
34
243
|
});
|
|
35
|
-
|
|
244
|
+
it("should handle negative number with thousand separator", function () {
|
|
36
245
|
var result = (0, _currencyUtils.numberWithSeparator)(-123456789, ",");
|
|
37
246
|
expect(result).toBe("-123,456,789");
|
|
38
247
|
});
|
|
39
|
-
|
|
40
|
-
var result = (0, _currencyUtils.numberWithSeparator)(123456789, ",", false);
|
|
248
|
+
it("should not format", function () {
|
|
249
|
+
var result = (0, _currencyUtils.numberWithSeparator)(123456789, ",", ".", false);
|
|
41
250
|
expect(result).toBe(123456789);
|
|
42
251
|
});
|
|
252
|
+
|
|
253
|
+
//getNumberFromString
|
|
254
|
+
it.each([[{
|
|
255
|
+
number: "1.000.000,256",
|
|
256
|
+
thousandSeparator: ".",
|
|
257
|
+
decimalSeparator: ","
|
|
258
|
+
}, 1000000.256], [{
|
|
259
|
+
number: 1000000.256,
|
|
260
|
+
thousandSeparator: ".",
|
|
261
|
+
decimalSeparator: ","
|
|
262
|
+
}, 1000000.256], [{
|
|
263
|
+
number: "1,000,000.256",
|
|
264
|
+
thousandSeparator: ",",
|
|
265
|
+
decimalSeparator: "."
|
|
266
|
+
}, 1000000.256], [{
|
|
267
|
+
number: ",256",
|
|
268
|
+
thousandSeparator: ".",
|
|
269
|
+
decimalSeparator: ","
|
|
270
|
+
}, 0.256], [{
|
|
271
|
+
number: "1562",
|
|
272
|
+
thousandSeparator: ".",
|
|
273
|
+
decimalSeparator: ","
|
|
274
|
+
}, 1562], [{
|
|
275
|
+
number: "1,2,3.4",
|
|
276
|
+
thousandSeparator: ".",
|
|
277
|
+
decimalSeparator: ","
|
|
278
|
+
}, 0], [{
|
|
279
|
+
number: "1562",
|
|
280
|
+
thousandSeparator: ",",
|
|
281
|
+
decimalSeparator: "."
|
|
282
|
+
}, 1562], [{
|
|
283
|
+
number: "-1.562,25",
|
|
284
|
+
thousandSeparator: ".",
|
|
285
|
+
decimalSeparator: ","
|
|
286
|
+
}, -1562.25], [{
|
|
287
|
+
number: "-1 562.25",
|
|
288
|
+
thousandSeparator: " ",
|
|
289
|
+
decimalSeparator: "."
|
|
290
|
+
}, -1562.25]])("should handle getNumberFromString", function (params, expected) {
|
|
291
|
+
var number = params.number,
|
|
292
|
+
thousandSeparator = params.thousandSeparator,
|
|
293
|
+
decimalSeparator = params.decimalSeparator;
|
|
294
|
+
expect((0, _currencyUtils.getNumberFromString)(number, thousandSeparator, decimalSeparator)).toBe(expected);
|
|
295
|
+
});
|
|
43
296
|
});
|
|
44
297
|
//# sourceMappingURL=currencyUtils.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"currencyUtils.test.js","names":["_currencyUtils","require","describe","it","each","value","expected","expect","formatNumber","toEqual","test","result","numberWithSeparator","toBe"],"sources":["../../../src/utils/currencyUtils.test.ts"],"sourcesContent":["import { formatNumber, numberWithSeparator } from \"./currencyUtils\";\n\ndescribe(\"format currency with thousandseparator set to ',' and decimalSeparator to '.'\", () => {\n it.each([\n [\"\", \"\"],\n [\"10\", \"10\"],\n [\"1000\", \"1K\"],\n [\"1000.00\", \"1K\"],\n [\"1200.50\", \"1.2K\"],\n [\"1,200.00\", \"1.2K\"],\n [\"2,240.00\", \"2.2K\"],\n [\"22,240.00\", \"22.2K\"],\n [\"50,000,000.00\", \"50M\"],\n [\"-50,000.00\", \"-50K\"],\n [\"-1,200\", \"-1.2K\"],\n [\"-90,000,000.00\", \"-90M\"],\n ])(\"should format currency\", (value, expected) => {\n expect(formatNumber(value, \",\")).toEqual(expected);\n });\n});\n\ndescribe(\"format currency with thousandseparator set to '.' and decimalSeparator to ','\", () => {\n it.each([\n [\"\", \"\"],\n [\"10\", \"10\"],\n [\"1000\", \"1K\"],\n [\"1000,00\", \"1K\"],\n [\"1200,50\", \"1.2K\"],\n [\"1.200,00\", \"1.2K\"],\n [\"2.240,00\", \"2.2K\"],\n [\"22.240,00\", \"22.2K\"],\n [\"50.000.000,00\", \"50M\"],\n [\"-50.000,00\", \"-50K\"],\n [\"-1.200\", \"-1.2K\"],\n [\"-90.000.000,00\", \"-90M\"],\n ])(\"should format currency\", (value, expected) => {\n expect(formatNumber(value, \".\")).toEqual(expected);\n });\n});\n\ndescribe(\"numberWithSeparator\", () => {\n test(\"should format number with thousand separator\", () => {\n const result = numberWithSeparator(1000, \",\");\n expect(result).toBe(\"1,000\");\n });\n\n test(\"should format string number with thousand separator\", () => {\n const result = numberWithSeparator(\"1000\", \",\");\n expect(result).toBe(\"1,000\");\n });\n\n test(\"should format decimal number with thousand separator and keep decimal part\", () => {\n const result = numberWithSeparator(12345.67, \",\");\n expect(result).toBe(\"12,345.67\");\n });\n\n test(\"should not format when format is set to false\", () => {\n const result = numberWithSeparator(1000, \",\", false);\n expect(result).toBe(1000);\n });\n\n test(\"should handle zero with thousand separator\", () => {\n const result = numberWithSeparator(0, \",\");\n expect(result).toBe(\"0\");\n });\n\n test(\"should handle negative number with thousand separator\", () => {\n const result = numberWithSeparator(-123456789, \",\");\n expect(result).toBe(\"-123,456,789\");\n });\n\n test(\"should not format\", () => {\n const result = numberWithSeparator(123456789, \",\", false);\n expect(result).toBe(123456789);\n });\n});\n"],"mappings":";;AAAA,IAAAA,cAAA,GAAAC,OAAA;AAEAC,QAAQ,CAAC,+EAA+E,EAAE,YAAM;EAC9FC,EAAE,CAACC,IAAI,CAAC,CACN,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,MAAM,EAAE,IAAI,CAAC,EACd,CAAC,SAAS,EAAE,IAAI,CAAC,EACjB,CAAC,SAAS,EAAE,MAAM,CAAC,EACnB,CAAC,UAAU,EAAE,MAAM,CAAC,EACpB,CAAC,UAAU,EAAE,MAAM,CAAC,EACpB,CAAC,WAAW,EAAE,OAAO,CAAC,EACtB,CAAC,eAAe,EAAE,KAAK,CAAC,EACxB,CAAC,YAAY,EAAE,MAAM,CAAC,EACtB,CAAC,QAAQ,EAAE,OAAO,CAAC,EACnB,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAC3B,CAAC,CAAC,wBAAwB,EAAE,UAACC,KAAK,EAAEC,QAAQ,EAAK;IAChDC,MAAM,CAAC,IAAAC,2BAAY,EAACH,KAAK,EAAE,GAAG,CAAC,CAAC,CAACI,OAAO,CAACH,QAAQ,CAAC;EACpD,CAAC,CAAC;AACJ,CAAC,CAAC;AAEFJ,QAAQ,CAAC,+EAA+E,EAAE,YAAM;EAC9FC,EAAE,CAACC,IAAI,CAAC,CACN,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,MAAM,EAAE,IAAI,CAAC,EACd,CAAC,SAAS,EAAE,IAAI,CAAC,EACjB,CAAC,SAAS,EAAE,MAAM,CAAC,EACnB,CAAC,UAAU,EAAE,MAAM,CAAC,EACpB,CAAC,UAAU,EAAE,MAAM,CAAC,EACpB,CAAC,WAAW,EAAE,OAAO,CAAC,EACtB,CAAC,eAAe,EAAE,KAAK,CAAC,EACxB,CAAC,YAAY,EAAE,MAAM,CAAC,EACtB,CAAC,QAAQ,EAAE,OAAO,CAAC,EACnB,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAC3B,CAAC,CAAC,wBAAwB,EAAE,UAACC,KAAK,EAAEC,QAAQ,EAAK;IAChDC,MAAM,CAAC,IAAAC,2BAAY,EAACH,KAAK,EAAE,GAAG,CAAC,CAAC,CAACI,OAAO,CAACH,QAAQ,CAAC;EACpD,CAAC,CAAC;AACJ,CAAC,CAAC;AAEFJ,QAAQ,CAAC,qBAAqB,EAAE,YAAM;EACpCQ,IAAI,CAAC,8CAA8C,EAAE,YAAM;IACzD,IAAMC,MAAM,GAAG,IAAAC,kCAAmB,EAAC,IAAI,EAAE,GAAG,CAAC;IAC7CL,MAAM,CAACI,MAAM,CAAC,CAACE,IAAI,CAAC,OAAO,CAAC;EAC9B,CAAC,CAAC;EAEFH,IAAI,CAAC,qDAAqD,EAAE,YAAM;IAChE,IAAMC,MAAM,GAAG,IAAAC,kCAAmB,EAAC,MAAM,EAAE,GAAG,CAAC;IAC/CL,MAAM,CAACI,MAAM,CAAC,CAACE,IAAI,CAAC,OAAO,CAAC;EAC9B,CAAC,CAAC;EAEFH,IAAI,CAAC,4EAA4E,EAAE,YAAM;IACvF,IAAMC,MAAM,GAAG,IAAAC,kCAAmB,EAAC,QAAQ,EAAE,GAAG,CAAC;IACjDL,MAAM,CAACI,MAAM,CAAC,CAACE,IAAI,CAAC,WAAW,CAAC;EAClC,CAAC,CAAC;EAEFH,IAAI,CAAC,+CAA+C,EAAE,YAAM;IAC1D,IAAMC,MAAM,GAAG,IAAAC,kCAAmB,EAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC;IACpDL,MAAM,CAACI,MAAM,CAAC,CAACE,IAAI,CAAC,IAAI,CAAC;EAC3B,CAAC,CAAC;EAEFH,IAAI,CAAC,4CAA4C,EAAE,YAAM;IACvD,IAAMC,MAAM,GAAG,IAAAC,kCAAmB,EAAC,CAAC,EAAE,GAAG,CAAC;IAC1CL,MAAM,CAACI,MAAM,CAAC,CAACE,IAAI,CAAC,GAAG,CAAC;EAC1B,CAAC,CAAC;EAEFH,IAAI,CAAC,uDAAuD,EAAE,YAAM;IAClE,IAAMC,MAAM,GAAG,IAAAC,kCAAmB,EAAC,CAAC,SAAS,EAAE,GAAG,CAAC;IACnDL,MAAM,CAACI,MAAM,CAAC,CAACE,IAAI,CAAC,cAAc,CAAC;EACrC,CAAC,CAAC;EAEFH,IAAI,CAAC,mBAAmB,EAAE,YAAM;IAC9B,IAAMC,MAAM,GAAG,IAAAC,kCAAmB,EAAC,SAAS,EAAE,GAAG,EAAE,KAAK,CAAC;IACzDL,MAAM,CAACI,MAAM,CAAC,CAACE,IAAI,CAAC,SAAS,CAAC;EAChC,CAAC,CAAC;AACJ,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"currencyUtils.test.js","names":["_currencyUtils","require","describe","it","each","value","thousandSeparator","decimalSeparator","trimDecimals","decimalSpaces","format","params","expected","expect","formatNumber","toEqual","number","fixedDecimalSpaces","toBe","result","numberWithSeparator","toFixed","getNumberFromString"],"sources":["../../../src/utils/currencyUtils.test.ts"],"sourcesContent":["import {\n formatNumber,\n getNumberFromString,\n numberWithSeparator,\n fixedDecimalSpaces,\n} from \"./currencyUtils\";\nimport { FormatNumberArgs } from \"./types\";\n\ndescribe(\"format currency with thousandseparator set to ',' and decimalSeparator to '.'\", () => {\n // please try to leave unformatted - ignore works for this block only\n // prettier-ignore\n it.each<[FormatNumberArgs, string]>([\n [{ value: \"\" }, \"\"],\n [{ value: \"10\" }, \"10\"],\n [{ value: \"1000\" }, \"1K\"],\n [{ value: \"1000.00\" }, \"1K\"],\n [{ value: \"1200.50\" }, \"1.2K\"],\n [{ value: \"1,200.00\" }, \"1.2K\"],\n [{ value: \"2,240.00\" }, \"2.2K\"],\n [{ value: \"22,240.00\" }, \"22.2K\"],\n [{ value: \"50,000,000.00\" }, \"50M\"],\n [{ value: \"-50,000.00\" }, \"-50K\"],\n [{ value: \"-1,200\" }, \"-1.2K\"],\n [{ value: \"-90,000,000.00\" }, \"-90M\"],\n [{ value: \"900.25\" }, \"900.25\"],\n [{ value: 900.25, thousandSeparator: \".\", decimalSeparator: \",\" }, \"900,25\"],\n [{ value: \"900,25\", thousandSeparator: \".\", decimalSeparator: \",\" }, \"900,25\"],\n [{ value: 900.255556, thousandSeparator: \".\", decimalSeparator: \",\" }, \"900,25\"],\n [{ value: \"900,255556\", thousandSeparator: \".\", decimalSeparator: \",\" }, \"900,25\"],\n [{ value: 900.255556, thousandSeparator: \".\", decimalSeparator: \",\", trimDecimals: false, decimalSpaces: 6 }, \"900,255556\"],\n [{ value: \"900,255556\", thousandSeparator: \".\", decimalSeparator: \",\", trimDecimals: false }, \"900,25\"],\n [{ value: 900.25, thousandSeparator: \".\", decimalSeparator: \",\", trimDecimals: false, decimalSpaces: 3 }, \"900,250\"],\n [{ value: 900.25, thousandSeparator: \".\", decimalSeparator: \",\", trimDecimals: false, decimalSpaces: 3, format: \"long\" }, \"900,250\" ],\n [{ value: 1150.6666667, thousandSeparator: \",\", decimalSeparator: \".\", trimDecimals: true, decimalSpaces: 2, format: \"long\" }, \"1,150.66\" ],\n [{ value: \"1150.6666667\", thousandSeparator: \",\", decimalSeparator: \".\", trimDecimals: true, decimalSpaces: 2, format: \"long\" }, \"1,150.66\" ],\n [{ value: 1150.6666667, thousandSeparator: \",\", decimalSeparator: \".\", trimDecimals: true, decimalSpaces: 2, format: \"short\" }, \"1.2K\" ],\n [{ value: \"1150.6666667\", thousandSeparator: \",\", decimalSeparator: \".\", trimDecimals: true, decimalSpaces: 2, format: \"short\" }, \"1.2K\" ],\n [{ value: 1150.0, thousandSeparator: \",\", decimalSeparator: \".\", trimDecimals: true, decimalSpaces: 2, format: \"short\" }, \"1.1K\" ],\n [{ value: \"1150.00000\", thousandSeparator: \",\", decimalSeparator: \".\", trimDecimals: true, decimalSpaces: 2, format: \"short\" }, \"1.1K\" ],\n [{ value: 1150.6, thousandSeparator: \",\", decimalSeparator: \".\", trimDecimals: true, decimalSpaces: 2, format: \"long\" }, \"1,150.6\" ],\n [{ value: \"1150.60\", thousandSeparator: \",\", decimalSeparator: \".\", trimDecimals: true, decimalSpaces: 2, format: \"long\" }, \"1,150.6\"],\n [{ value: 1150.0, thousandSeparator: \",\", decimalSeparator: \".\", trimDecimals: true, decimalSpaces: 2, format: \"long\" }, \"1,150\" ],\n [{ value: \"1150.00\", thousandSeparator: \",\", decimalSeparator: \".\", trimDecimals: true, decimalSpaces: 2, format: \"long\" }, \"1,150\"],\n [{ value: 110.155557, thousandSeparator: \",\", decimalSeparator: \".\", trimDecimals: true, decimalSpaces: 2, format: \"long\" }, \"110.15\" ],\n [{ value: \"110.155557\", thousandSeparator: \",\", decimalSeparator: \".\", trimDecimals: true, decimalSpaces: 2, format: \"long\" }, \"110.15\" ],\n [{ value: 110.155557, thousandSeparator: \",\", decimalSeparator: \".\", trimDecimals: true, decimalSpaces: 2, format: \"short\" }, \"110.15\" ],\n [{ value: \"110.155557\", thousandSeparator: \",\", decimalSeparator: \".\", trimDecimals: true, decimalSpaces: 2, format: \"short\" }, \"110.15\" ],\n [{ value: 1501000.155557, thousandSeparator: \",\", decimalSeparator: \".\", trimDecimals: true, decimalSpaces: 2, format: \"long\" }, \"1,501,000.15\" ],\n [{ value: \"1501000.155557\", thousandSeparator: \",\", decimalSeparator: \".\", trimDecimals: true, decimalSpaces: 2, format: \"long\" }, \"1,501,000.15\" ],\n [{ value: 1501000.155557, thousandSeparator: \",\", decimalSeparator: \".\", trimDecimals: true, decimalSpaces: 2, format: \"short\" }, \"1.5M\"],\n [{ value: \"1501000.155557\", thousandSeparator: \",\", decimalSeparator: \".\", trimDecimals: true, decimalSpaces: 2, format: \"short\" }, \"1.5M\" ],\n ])(\"should format currency advanced\", (params, expected) => {\n const {\n value,\n thousandSeparator,\n decimalSeparator,\n trimDecimals,\n decimalSpaces,\n format,\n } = params;\n\n expect(\n formatNumber(\n value,\n thousandSeparator,\n decimalSeparator,\n trimDecimals,\n decimalSpaces,\n format\n )\n ).toEqual(expected);\n });\n\n //fixedDecimalSpaces\n it.each<[{ number: number; decimalSpaces: number }, number]>([\n [{ number: 123.456789, decimalSpaces: 3 }, 123.456],\n [{ number: 123.3, decimalSpaces: 2 }, 123.3],\n [{ number: 123.3, decimalSpaces: 0 }, 123],\n ])(\"should handle fixedDecimalSpaces\", (params, expected) => {\n expect(fixedDecimalSpaces(params.number, params.decimalSpaces)).toBe(\n expected\n );\n });\n\n //numberWithSeparator\n it(\"should format number with thousand separator\", () => {\n const result = numberWithSeparator((1000.0).toFixed(3), \",\", \".\");\n expect(result).toBe(\"1,000.000\");\n });\n\n it(\"should format string number with thousand separator\", () => {\n const result = numberWithSeparator(\"1000\", \",\");\n expect(result).toBe(\"1,000\");\n });\n\n it(\"should format decimal number with thousand separator and keep decimal part\", () => {\n const result = numberWithSeparator(12345.67, \",\");\n expect(result).toBe(\"12,345.67\");\n });\n\n it(\"should not format when format is set to false\", () => {\n const result = numberWithSeparator(1000, \",\", \".\", false);\n expect(result).toBe(1000);\n });\n\n it(\"should handle zero with thousand separator\", () => {\n const result = numberWithSeparator(0, \",\");\n expect(result).toBe(\"0\");\n });\n\n it(\"should handle negative number with thousand separator\", () => {\n const result = numberWithSeparator(-123456789, \",\");\n expect(result).toBe(\"-123,456,789\");\n });\n\n it(\"should not format\", () => {\n const result = numberWithSeparator(123456789, \",\", \".\", false);\n expect(result).toBe(123456789);\n });\n\n //getNumberFromString\n it.each([\n [\n {\n number: \"1.000.000,256\",\n thousandSeparator: \".\",\n decimalSeparator: \",\",\n },\n 1000000.256,\n ],\n [\n { number: 1000000.256, thousandSeparator: \".\", decimalSeparator: \",\" },\n 1000000.256,\n ],\n [\n {\n number: \"1,000,000.256\",\n thousandSeparator: \",\",\n decimalSeparator: \".\",\n },\n 1000000.256,\n ],\n [{ number: \",256\", thousandSeparator: \".\", decimalSeparator: \",\" }, 0.256],\n [{ number: \"1562\", thousandSeparator: \".\", decimalSeparator: \",\" }, 1562],\n [{ number: \"1,2,3.4\", thousandSeparator: \".\", decimalSeparator: \",\" }, 0],\n [{ number: \"1562\", thousandSeparator: \",\", decimalSeparator: \".\" }, 1562],\n [\n { number: \"-1.562,25\", thousandSeparator: \".\", decimalSeparator: \",\" },\n -1562.25,\n ],\n [\n { number: \"-1 562.25\", thousandSeparator: \" \", decimalSeparator: \".\" },\n -1562.25,\n ],\n ])(\"should handle getNumberFromString\", (params, expected) => {\n const { number, thousandSeparator, decimalSeparator } = params;\n\n expect(\n getNumberFromString(number, thousandSeparator, decimalSeparator)\n ).toBe(expected);\n });\n});\n"],"mappings":";;AAAA,IAAAA,cAAA,GAAAC,OAAA;AAQAC,QAAQ,CAAC,+EAA+E,EAAE,YAAM;EAC9F;EACA;EACAC,EAAE,CAACC,IAAI,CAA6B,CAClC,CAAC;IAAEC,KAAK,EAAE;EAAG,CAAC,EAAE,EAAE,CAAC,EACnB,CAAC;IAAEA,KAAK,EAAE;EAAK,CAAC,EAAE,IAAI,CAAC,EACvB,CAAC;IAAEA,KAAK,EAAE;EAAO,CAAC,EAAE,IAAI,CAAC,EACzB,CAAC;IAAEA,KAAK,EAAE;EAAU,CAAC,EAAE,IAAI,CAAC,EAC5B,CAAC;IAAEA,KAAK,EAAE;EAAU,CAAC,EAAE,MAAM,CAAC,EAC9B,CAAC;IAAEA,KAAK,EAAE;EAAW,CAAC,EAAE,MAAM,CAAC,EAC/B,CAAC;IAAEA,KAAK,EAAE;EAAW,CAAC,EAAE,MAAM,CAAC,EAC/B,CAAC;IAAEA,KAAK,EAAE;EAAY,CAAC,EAAE,OAAO,CAAC,EACjC,CAAC;IAAEA,KAAK,EAAE;EAAgB,CAAC,EAAE,KAAK,CAAC,EACnC,CAAC;IAAEA,KAAK,EAAE;EAAa,CAAC,EAAE,MAAM,CAAC,EACjC,CAAC;IAAEA,KAAK,EAAE;EAAS,CAAC,EAAE,OAAO,CAAC,EAC9B,CAAC;IAAEA,KAAK,EAAE;EAAiB,CAAC,EAAE,MAAM,CAAC,EACrC,CAAC;IAAEA,KAAK,EAAE;EAAS,CAAC,EAAE,QAAQ,CAAC,EAC/B,CAAC;IAAEA,KAAK,EAAE,MAAM;IAAEC,iBAAiB,EAAE,GAAG;IAAEC,gBAAgB,EAAE;EAAI,CAAC,EAAE,QAAQ,CAAC,EAC5E,CAAC;IAAEF,KAAK,EAAE,QAAQ;IAAEC,iBAAiB,EAAE,GAAG;IAAEC,gBAAgB,EAAE;EAAI,CAAC,EAAE,QAAQ,CAAC,EAC9E,CAAC;IAAEF,KAAK,EAAE,UAAU;IAAEC,iBAAiB,EAAE,GAAG;IAAEC,gBAAgB,EAAE;EAAI,CAAC,EAAE,QAAQ,CAAC,EAChF,CAAC;IAAEF,KAAK,EAAE,YAAY;IAAEC,iBAAiB,EAAE,GAAG;IAAEC,gBAAgB,EAAE;EAAI,CAAC,EAAE,QAAQ,CAAC,EAClF,CAAC;IAAEF,KAAK,EAAE,UAAU;IAAEC,iBAAiB,EAAE,GAAG;IAAEC,gBAAgB,EAAE,GAAG;IAAEC,YAAY,EAAE,KAAK;IAAEC,aAAa,EAAE;EAAE,CAAC,EAAE,YAAY,CAAC,EAC3H,CAAC;IAAEJ,KAAK,EAAE,YAAY;IAAEC,iBAAiB,EAAE,GAAG;IAAEC,gBAAgB,EAAE,GAAG;IAAEC,YAAY,EAAE;EAAM,CAAC,EAAE,QAAQ,CAAC,EACvG,CAAC;IAAEH,KAAK,EAAE,MAAM;IAAEC,iBAAiB,EAAE,GAAG;IAAEC,gBAAgB,EAAE,GAAG;IAAEC,YAAY,EAAE,KAAK;IAAEC,aAAa,EAAE;EAAE,CAAC,EAAE,SAAS,CAAC,EACpH,CAAC;IAAEJ,KAAK,EAAE,MAAM;IAAEC,iBAAiB,EAAE,GAAG;IAAEC,gBAAgB,EAAE,GAAG;IAAEC,YAAY,EAAE,KAAK;IAAEC,aAAa,EAAE,CAAC;IAAEC,MAAM,EAAE;EAAO,CAAC,EAAE,SAAS,CAAE,EACrI,CAAC;IAAEL,KAAK,EAAE,YAAY;IAAEC,iBAAiB,EAAE,GAAG;IAAEC,gBAAgB,EAAE,GAAG;IAAEC,YAAY,EAAE,IAAI;IAAEC,aAAa,EAAE,CAAC;IAAEC,MAAM,EAAE;EAAO,CAAC,EAAE,UAAU,CAAE,EAC3I,CAAC;IAAEL,KAAK,EAAE,cAAc;IAAEC,iBAAiB,EAAE,GAAG;IAAEC,gBAAgB,EAAE,GAAG;IAAEC,YAAY,EAAE,IAAI;IAAEC,aAAa,EAAE,CAAC;IAAEC,MAAM,EAAE;EAAO,CAAC,EAAE,UAAU,CAAE,EAC7I,CAAC;IAAEL,KAAK,EAAE,YAAY;IAAEC,iBAAiB,EAAE,GAAG;IAAEC,gBAAgB,EAAE,GAAG;IAAEC,YAAY,EAAE,IAAI;IAAEC,aAAa,EAAE,CAAC;IAAEC,MAAM,EAAE;EAAQ,CAAC,EAAE,MAAM,CAAE,EACxI,CAAC;IAAEL,KAAK,EAAE,cAAc;IAAEC,iBAAiB,EAAE,GAAG;IAAEC,gBAAgB,EAAE,GAAG;IAAEC,YAAY,EAAE,IAAI;IAAEC,aAAa,EAAE,CAAC;IAAEC,MAAM,EAAE;EAAQ,CAAC,EAAE,MAAM,CAAE,EAC1I,CAAC;IAAEL,KAAK,EAAE,MAAM;IAAEC,iBAAiB,EAAE,GAAG;IAAEC,gBAAgB,EAAE,GAAG;IAAEC,YAAY,EAAE,IAAI;IAAEC,aAAa,EAAE,CAAC;IAAEC,MAAM,EAAE;EAAQ,CAAC,EAAE,MAAM,CAAE,EAClI,CAAC;IAAEL,KAAK,EAAE,YAAY;IAAEC,iBAAiB,EAAE,GAAG;IAAEC,gBAAgB,EAAE,GAAG;IAAEC,YAAY,EAAE,IAAI;IAAEC,aAAa,EAAE,CAAC;IAAEC,MAAM,EAAE;EAAQ,CAAC,EAAE,MAAM,CAAE,EACxI,CAAC;IAAEL,KAAK,EAAE,MAAM;IAAEC,iBAAiB,EAAE,GAAG;IAAEC,gBAAgB,EAAE,GAAG;IAAEC,YAAY,EAAE,IAAI;IAAEC,aAAa,EAAE,CAAC;IAAEC,MAAM,EAAE;EAAO,CAAC,EAAE,SAAS,CAAE,EACpI,CAAC;IAAEL,KAAK,EAAE,SAAS;IAAEC,iBAAiB,EAAE,GAAG;IAAEC,gBAAgB,EAAE,GAAG;IAAEC,YAAY,EAAE,IAAI;IAAEC,aAAa,EAAE,CAAC;IAAEC,MAAM,EAAE;EAAO,CAAC,EAAE,SAAS,CAAC,EACtI,CAAC;IAAEL,KAAK,EAAE,MAAM;IAAEC,iBAAiB,EAAE,GAAG;IAAEC,gBAAgB,EAAE,GAAG;IAAEC,YAAY,EAAE,IAAI;IAAEC,aAAa,EAAE,CAAC;IAAEC,MAAM,EAAE;EAAO,CAAC,EAAE,OAAO,CAAE,EAClI,CAAC;IAAEL,KAAK,EAAE,SAAS;IAAEC,iBAAiB,EAAE,GAAG;IAAEC,gBAAgB,EAAE,GAAG;IAAEC,YAAY,EAAE,IAAI;IAAEC,aAAa,EAAE,CAAC;IAAEC,MAAM,EAAE;EAAO,CAAC,EAAE,OAAO,CAAC,EACpI,CAAC;IAAEL,KAAK,EAAE,UAAU;IAAEC,iBAAiB,EAAE,GAAG;IAAEC,gBAAgB,EAAE,GAAG;IAAEC,YAAY,EAAE,IAAI;IAAEC,aAAa,EAAE,CAAC;IAAEC,MAAM,EAAE;EAAO,CAAC,EAAE,QAAQ,CAAE,EACvI,CAAC;IAAEL,KAAK,EAAE,YAAY;IAAEC,iBAAiB,EAAE,GAAG;IAAEC,gBAAgB,EAAE,GAAG;IAAEC,YAAY,EAAE,IAAI;IAAEC,aAAa,EAAE,CAAC;IAAEC,MAAM,EAAE;EAAO,CAAC,EAAE,QAAQ,CAAE,EACzI,CAAC;IAAEL,KAAK,EAAE,UAAU;IAAEC,iBAAiB,EAAE,GAAG;IAAEC,gBAAgB,EAAE,GAAG;IAAEC,YAAY,EAAE,IAAI;IAAEC,aAAa,EAAE,CAAC;IAAEC,MAAM,EAAE;EAAQ,CAAC,EAAE,QAAQ,CAAE,EACxI,CAAC;IAAEL,KAAK,EAAE,YAAY;IAAEC,iBAAiB,EAAE,GAAG;IAAEC,gBAAgB,EAAE,GAAG;IAAEC,YAAY,EAAE,IAAI;IAAEC,aAAa,EAAE,CAAC;IAAEC,MAAM,EAAE;EAAQ,CAAC,EAAE,QAAQ,CAAE,EAC1I,CAAC;IAAEL,KAAK,EAAE,cAAc;IAAEC,iBAAiB,EAAE,GAAG;IAAEC,gBAAgB,EAAE,GAAG;IAAEC,YAAY,EAAE,IAAI;IAAEC,aAAa,EAAE,CAAC;IAAEC,MAAM,EAAE;EAAO,CAAC,EAAE,cAAc,CAAE,EACjJ,CAAC;IAAEL,KAAK,EAAE,gBAAgB;IAAEC,iBAAiB,EAAE,GAAG;IAAEC,gBAAgB,EAAE,GAAG;IAAEC,YAAY,EAAE,IAAI;IAAEC,aAAa,EAAE,CAAC;IAAEC,MAAM,EAAE;EAAO,CAAC,EAAE,cAAc,CAAE,EACnJ,CAAC;IAAEL,KAAK,EAAE,cAAc;IAAEC,iBAAiB,EAAE,GAAG;IAAEC,gBAAgB,EAAE,GAAG;IAAEC,YAAY,EAAE,IAAI;IAAEC,aAAa,EAAE,CAAC;IAAEC,MAAM,EAAE;EAAQ,CAAC,EAAE,MAAM,CAAC,EACzI,CAAC;IAAEL,KAAK,EAAE,gBAAgB;IAAEC,iBAAiB,EAAE,GAAG;IAAEC,gBAAgB,EAAE,GAAG;IAAEC,YAAY,EAAE,IAAI;IAAEC,aAAa,EAAE,CAAC;IAAEC,MAAM,EAAE;EAAQ,CAAC,EAAE,MAAM,CAAE,CAC7I,CAAC,CAAC,iCAAiC,EAAE,UAACC,MAAM,EAAEC,QAAQ,EAAK;IAC1D,IACEP,KAAK,GAMHM,MAAM,CANRN,KAAK;MACLC,iBAAiB,GAKfK,MAAM,CALRL,iBAAiB;MACjBC,gBAAgB,GAIdI,MAAM,CAJRJ,gBAAgB;MAChBC,YAAY,GAGVG,MAAM,CAHRH,YAAY;MACZC,aAAa,GAEXE,MAAM,CAFRF,aAAa;MACbC,MAAM,GACJC,MAAM,CADRD,MAAM;IAGRG,MAAM,CACJ,IAAAC,2BAAY,EACVT,KAAK,EACLC,iBAAiB,EACjBC,gBAAgB,EAChBC,YAAY,EACZC,aAAa,EACbC,MACF,CACF,CAAC,CAACK,OAAO,CAACH,QAAQ,CAAC;EACrB,CAAC,CAAC;;EAEF;EACAT,EAAE,CAACC,IAAI,CAAsD,CAC3D,CAAC;IAAEY,MAAM,EAAE,UAAU;IAAEP,aAAa,EAAE;EAAE,CAAC,EAAE,OAAO,CAAC,EACnD,CAAC;IAAEO,MAAM,EAAE,KAAK;IAAEP,aAAa,EAAE;EAAE,CAAC,EAAE,KAAK,CAAC,EAC5C,CAAC;IAAEO,MAAM,EAAE,KAAK;IAAEP,aAAa,EAAE;EAAE,CAAC,EAAE,GAAG,CAAC,CAC3C,CAAC,CAAC,kCAAkC,EAAE,UAACE,MAAM,EAAEC,QAAQ,EAAK;IAC3DC,MAAM,CAAC,IAAAI,iCAAkB,EAACN,MAAM,CAACK,MAAM,EAAEL,MAAM,CAACF,aAAa,CAAC,CAAC,CAACS,IAAI,CAClEN,QACF,CAAC;EACH,CAAC,CAAC;;EAEF;EACAT,EAAE,CAAC,8CAA8C,EAAE,YAAM;IACvD,IAAMgB,MAAM,GAAG,IAAAC,kCAAmB,EAAE,MAAM,CAAEC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;IACjER,MAAM,CAACM,MAAM,CAAC,CAACD,IAAI,CAAC,WAAW,CAAC;EAClC,CAAC,CAAC;EAEFf,EAAE,CAAC,qDAAqD,EAAE,YAAM;IAC9D,IAAMgB,MAAM,GAAG,IAAAC,kCAAmB,EAAC,MAAM,EAAE,GAAG,CAAC;IAC/CP,MAAM,CAACM,MAAM,CAAC,CAACD,IAAI,CAAC,OAAO,CAAC;EAC9B,CAAC,CAAC;EAEFf,EAAE,CAAC,4EAA4E,EAAE,YAAM;IACrF,IAAMgB,MAAM,GAAG,IAAAC,kCAAmB,EAAC,QAAQ,EAAE,GAAG,CAAC;IACjDP,MAAM,CAACM,MAAM,CAAC,CAACD,IAAI,CAAC,WAAW,CAAC;EAClC,CAAC,CAAC;EAEFf,EAAE,CAAC,+CAA+C,EAAE,YAAM;IACxD,IAAMgB,MAAM,GAAG,IAAAC,kCAAmB,EAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;IACzDP,MAAM,CAACM,MAAM,CAAC,CAACD,IAAI,CAAC,IAAI,CAAC;EAC3B,CAAC,CAAC;EAEFf,EAAE,CAAC,4CAA4C,EAAE,YAAM;IACrD,IAAMgB,MAAM,GAAG,IAAAC,kCAAmB,EAAC,CAAC,EAAE,GAAG,CAAC;IAC1CP,MAAM,CAACM,MAAM,CAAC,CAACD,IAAI,CAAC,GAAG,CAAC;EAC1B,CAAC,CAAC;EAEFf,EAAE,CAAC,uDAAuD,EAAE,YAAM;IAChE,IAAMgB,MAAM,GAAG,IAAAC,kCAAmB,EAAC,CAAC,SAAS,EAAE,GAAG,CAAC;IACnDP,MAAM,CAACM,MAAM,CAAC,CAACD,IAAI,CAAC,cAAc,CAAC;EACrC,CAAC,CAAC;EAEFf,EAAE,CAAC,mBAAmB,EAAE,YAAM;IAC5B,IAAMgB,MAAM,GAAG,IAAAC,kCAAmB,EAAC,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;IAC9DP,MAAM,CAACM,MAAM,CAAC,CAACD,IAAI,CAAC,SAAS,CAAC;EAChC,CAAC,CAAC;;EAEF;EACAf,EAAE,CAACC,IAAI,CAAC,CACN,CACE;IACEY,MAAM,EAAE,eAAe;IACvBV,iBAAiB,EAAE,GAAG;IACtBC,gBAAgB,EAAE;EACpB,CAAC,EACD,WAAW,CACZ,EACD,CACE;IAAES,MAAM,EAAE,WAAW;IAAEV,iBAAiB,EAAE,GAAG;IAAEC,gBAAgB,EAAE;EAAI,CAAC,EACtE,WAAW,CACZ,EACD,CACE;IACES,MAAM,EAAE,eAAe;IACvBV,iBAAiB,EAAE,GAAG;IACtBC,gBAAgB,EAAE;EACpB,CAAC,EACD,WAAW,CACZ,EACD,CAAC;IAAES,MAAM,EAAE,MAAM;IAAEV,iBAAiB,EAAE,GAAG;IAAEC,gBAAgB,EAAE;EAAI,CAAC,EAAE,KAAK,CAAC,EAC1E,CAAC;IAAES,MAAM,EAAE,MAAM;IAAEV,iBAAiB,EAAE,GAAG;IAAEC,gBAAgB,EAAE;EAAI,CAAC,EAAE,IAAI,CAAC,EACzE,CAAC;IAAES,MAAM,EAAE,SAAS;IAAEV,iBAAiB,EAAE,GAAG;IAAEC,gBAAgB,EAAE;EAAI,CAAC,EAAE,CAAC,CAAC,EACzE,CAAC;IAAES,MAAM,EAAE,MAAM;IAAEV,iBAAiB,EAAE,GAAG;IAAEC,gBAAgB,EAAE;EAAI,CAAC,EAAE,IAAI,CAAC,EACzE,CACE;IAAES,MAAM,EAAE,WAAW;IAAEV,iBAAiB,EAAE,GAAG;IAAEC,gBAAgB,EAAE;EAAI,CAAC,EACtE,CAAC,OAAO,CACT,EACD,CACE;IAAES,MAAM,EAAE,WAAW;IAAEV,iBAAiB,EAAE,GAAG;IAAEC,gBAAgB,EAAE;EAAI,CAAC,EACtE,CAAC,OAAO,CACT,CACF,CAAC,CAAC,mCAAmC,EAAE,UAACI,MAAM,EAAEC,QAAQ,EAAK;IAC5D,IAAQI,MAAM,GAA0CL,MAAM,CAAtDK,MAAM;MAAEV,iBAAiB,GAAuBK,MAAM,CAA9CL,iBAAiB;MAAEC,gBAAgB,GAAKI,MAAM,CAA3BJ,gBAAgB;IAEnDM,MAAM,CACJ,IAAAS,kCAAmB,EAACN,MAAM,EAAEV,iBAAiB,EAAEC,gBAAgB,CACjE,CAAC,CAACW,IAAI,CAACN,QAAQ,CAAC;EAClB,CAAC,CAAC;AACJ,CAAC,CAAC"}
|
package/dist/cjs/utils/index.js
CHANGED
|
@@ -8,7 +8,8 @@ var _exportNames = {
|
|
|
8
8
|
useResizeObserver: true,
|
|
9
9
|
decimalToHours: true,
|
|
10
10
|
formatNumber: true,
|
|
11
|
-
numberWithSeparator: true
|
|
11
|
+
numberWithSeparator: true,
|
|
12
|
+
getNumberFromString: true
|
|
12
13
|
};
|
|
13
14
|
Object.defineProperty(exports, "decimalToHours", {
|
|
14
15
|
enumerable: true,
|
|
@@ -22,6 +23,12 @@ Object.defineProperty(exports, "formatNumber", {
|
|
|
22
23
|
return _currencyUtils.formatNumber;
|
|
23
24
|
}
|
|
24
25
|
});
|
|
26
|
+
Object.defineProperty(exports, "getNumberFromString", {
|
|
27
|
+
enumerable: true,
|
|
28
|
+
get: function get() {
|
|
29
|
+
return _currencyUtils.getNumberFromString;
|
|
30
|
+
}
|
|
31
|
+
});
|
|
25
32
|
Object.defineProperty(exports, "numberWithSeparator", {
|
|
26
33
|
enumerable: true,
|
|
27
34
|
get: function get() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_layers","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_colors","_validation","_useForkRef","_interopRequireDefault","_useResizeObserver","_timeUtils","_currencyUtils","obj","__esModule","default"],"sources":["../../../src/utils/index.ts"],"sourcesContent":["export * from \"./layers\";\nexport * from \"./colors\";\nexport * from \"./validation\";\nexport { default as useForkRef } from \"./useForkRef\";\nexport { default as useResizeObserver } from \"./useResizeObserver\";\nexport { decimalToHours } from \"./timeUtils\";\nexport {
|
|
1
|
+
{"version":3,"file":"index.js","names":["_layers","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_colors","_validation","_useForkRef","_interopRequireDefault","_useResizeObserver","_timeUtils","_currencyUtils","obj","__esModule","default"],"sources":["../../../src/utils/index.ts"],"sourcesContent":["export * from \"./layers\";\nexport * from \"./colors\";\nexport * from \"./validation\";\nexport { default as useForkRef } from \"./useForkRef\";\nexport { default as useResizeObserver } from \"./useResizeObserver\";\nexport { decimalToHours } from \"./timeUtils\";\nexport {\n formatNumber,\n numberWithSeparator,\n getNumberFromString,\n} from \"./currencyUtils\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,OAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAL,OAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,IAAA;MAAA,OAAAb,OAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAS,OAAA,GAAAb,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAW,OAAA,EAAAV,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAS,OAAA,CAAAT,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,IAAA;MAAA,OAAAC,OAAA,CAAAT,GAAA;IAAA;EAAA;AAAA;AACA,IAAAU,WAAA,GAAAd,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAY,WAAA,EAAAX,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAU,WAAA,CAAAV,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,IAAA;MAAA,OAAAE,WAAA,CAAAV,GAAA;IAAA;EAAA;AAAA;AACA,IAAAW,WAAA,GAAAC,sBAAA,CAAAhB,OAAA;AACA,IAAAiB,kBAAA,GAAAD,sBAAA,CAAAhB,OAAA;AACA,IAAAkB,UAAA,GAAAlB,OAAA;AACA,IAAAmB,cAAA,GAAAnB,OAAA;AAIyB,SAAAgB,uBAAAI,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":[],"sources":["../../../src/utils/types.ts"],"sourcesContent":["import React from \"react\";\n\n// Source: https://github.com/emotion-js/emotion/blob/master/packages/styled-base/types/helper.d.ts\n// A more precise version of just React.ComponentPropsWithoutRef on its own\nexport type PropsOf<\n C extends keyof JSX.IntrinsicElements | React.JSXElementConstructor<unknown>\n> = JSX.LibraryManagedAttributes<C, React.ComponentPropsWithoutRef<C>>;\n\ntype AsProp<C extends React.ElementType> = {\n /**\n * An override of the default HTML tag.\n * Can also be another React component.\n */\n as?: C;\n};\n\n/**\n * Allows for extending a set of props (`ExtendedProps`) by an overriding set of props\n * (`OverrideProps`), ensuring that any duplicates are overridden by the overriding\n * set of props.\n */\nexport type ExtendableProps<\n ExtendedProps = Record<string, unknown>,\n OverrideProps = Record<string, unknown>\n> = OverrideProps & Omit<ExtendedProps, keyof OverrideProps>;\n\n/**\n * Allows for inheriting the props from the specified element type so that\n * props like children, className & style work, as well as element-specific\n * attributes like aria roles. The component (`C`) must be passed in.\n */\nexport type InheritableElementProps<\n C extends React.ElementType,\n Props = Record<string, unknown>\n> = ExtendableProps<PropsOf<C>, Props>;\n\n/**\n * A more sophisticated version of `InheritableElementProps` where\n * the passed in `as` prop will determine which props can be included\n */\nexport type PolymorphicComponentProps<\n C extends React.ElementType,\n Props = Record<string, unknown>\n> = InheritableElementProps<C, Props & AsProp<C>>;\n\n/**\n * Utility type to extract the `ref` prop from a polymorphic component\n */\nexport type PolymorphicRef<C extends React.ElementType> =\n React.ComponentPropsWithRef<C>[\"ref\"];\n/**\n * A wrapper of `PolymorphicComponentProps` that also includes the `ref`\n * prop for the polymorphic component\n */\nexport type PolymorphicComponentPropsWithRef<\n C extends React.ElementType,\n Props = Record<string, unknown>\n> = PolymorphicComponentProps<C, Props> & { ref?: PolymorphicRef<C> };\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../../../src/utils/types.ts"],"sourcesContent":["import React from \"react\";\n\n// Source: https://github.com/emotion-js/emotion/blob/master/packages/styled-base/types/helper.d.ts\n// A more precise version of just React.ComponentPropsWithoutRef on its own\nexport type PropsOf<\n C extends keyof JSX.IntrinsicElements | React.JSXElementConstructor<unknown>\n> = JSX.LibraryManagedAttributes<C, React.ComponentPropsWithoutRef<C>>;\n\ntype AsProp<C extends React.ElementType> = {\n /**\n * An override of the default HTML tag.\n * Can also be another React component.\n */\n as?: C;\n};\n\n/**\n * Allows for extending a set of props (`ExtendedProps`) by an overriding set of props\n * (`OverrideProps`), ensuring that any duplicates are overridden by the overriding\n * set of props.\n */\nexport type ExtendableProps<\n ExtendedProps = Record<string, unknown>,\n OverrideProps = Record<string, unknown>\n> = OverrideProps & Omit<ExtendedProps, keyof OverrideProps>;\n\n/**\n * Allows for inheriting the props from the specified element type so that\n * props like children, className & style work, as well as element-specific\n * attributes like aria roles. The component (`C`) must be passed in.\n */\nexport type InheritableElementProps<\n C extends React.ElementType,\n Props = Record<string, unknown>\n> = ExtendableProps<PropsOf<C>, Props>;\n\n/**\n * A more sophisticated version of `InheritableElementProps` where\n * the passed in `as` prop will determine which props can be included\n */\nexport type PolymorphicComponentProps<\n C extends React.ElementType,\n Props = Record<string, unknown>\n> = InheritableElementProps<C, Props & AsProp<C>>;\n\n/**\n * Utility type to extract the `ref` prop from a polymorphic component\n */\nexport type PolymorphicRef<C extends React.ElementType> =\n React.ComponentPropsWithRef<C>[\"ref\"];\n/**\n * A wrapper of `PolymorphicComponentProps` that also includes the `ref`\n * prop for the polymorphic component\n */\nexport type PolymorphicComponentPropsWithRef<\n C extends React.ElementType,\n Props = Record<string, unknown>\n> = PolymorphicComponentProps<C, Props> & { ref?: PolymorphicRef<C> };\n\nexport interface FormatNumberArgs {\n value: string | number;\n thousandSeparator?: \",\" | \".\" | \" \";\n decimalSeparator?: \",\" | \".\";\n trimDecimals?: boolean;\n decimalSpaces?: number;\n format?: \"long\" | \"short\";\n}\n"],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditableCurrency.d.ts","sourceRoot":"","sources":["../../../../src/components/EditableCurrency/EditableCurrency.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0B,MAAM,OAAO,CAAC;AAE/C,OAAO,EAAE,YAAY,EAAkB,MAAM,aAAa,CAAC;AAE3D,OAAO,EAAmB,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAG/E,MAAM,WAAW,qBACf,SAAQ,wBAAwB,EAC9B,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"EditableCurrency.d.ts","sourceRoot":"","sources":["../../../../src/components/EditableCurrency/EditableCurrency.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0B,MAAM,OAAO,CAAC;AAE/C,OAAO,EAAE,YAAY,EAAkB,MAAM,aAAa,CAAC;AAE3D,OAAO,EAAmB,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAG/E,MAAM,WAAW,qBACf,SAAQ,wBAAwB,EAC9B,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,gBAAgB,8FAgG5B,CAAC"}
|
|
@@ -20,6 +20,7 @@ export const EditableCurrency = /*#__PURE__*/React.forwardRef((_ref, ref) => {
|
|
|
20
20
|
onEnterKeyPress: externalEnterKeyPress,
|
|
21
21
|
onClick: externalOnClick,
|
|
22
22
|
onChange: externalOnChange,
|
|
23
|
+
trimDecimals = true,
|
|
23
24
|
...rest
|
|
24
25
|
} = _ref;
|
|
25
26
|
const inputRef = useRef(null);
|
|
@@ -39,7 +40,8 @@ export const EditableCurrency = /*#__PURE__*/React.forwardRef((_ref, ref) => {
|
|
|
39
40
|
onCancel,
|
|
40
41
|
onChange: externalOnChange,
|
|
41
42
|
onEnterKeyPress: externalEnterKeyPress,
|
|
42
|
-
onClick: externalOnClick
|
|
43
|
+
onClick: externalOnClick,
|
|
44
|
+
trimDecimals
|
|
43
45
|
}, inputRef);
|
|
44
46
|
const {
|
|
45
47
|
value,
|
|
@@ -53,10 +55,10 @@ export const EditableCurrency = /*#__PURE__*/React.forwardRef((_ref, ref) => {
|
|
|
53
55
|
unformattedValue
|
|
54
56
|
} = inputProps;
|
|
55
57
|
const formattedValue = useMemo(() => {
|
|
56
|
-
return focused ? value : numberWithSeparator(value != null ? value : "", thousandSeparator);
|
|
57
|
-
}, [focused, value, thousandSeparator]);
|
|
58
|
+
return focused ? value : numberWithSeparator(value != null ? value : "", thousandSeparator, decimalSeparator);
|
|
59
|
+
}, [focused, value, thousandSeparator, decimalSeparator]);
|
|
58
60
|
return /*#__PURE__*/React.createElement(Tooltip, {
|
|
59
|
-
title: unformattedValue,
|
|
61
|
+
title: numberWithSeparator(unformattedValue != null ? unformattedValue : "", thousandSeparator, decimalSeparator),
|
|
60
62
|
disable: focused
|
|
61
63
|
}, /*#__PURE__*/React.createElement(EditableContent, {
|
|
62
64
|
disabled: disabled,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditableCurrency.js","names":["React","useMemo","useRef","useInputNumber","numberWithSeparator","useForkRef","EditableContent","Tooltip","EditableCurrency","forwardRef","_ref","ref","decimalLength","decimalSeparator","disableAbbreviation","disabled","disableMacros","step","thousandSeparator","value","defaultValue","onSave","onCancel","className","allowEmptyValue","onEnterKeyPress","externalEnterKeyPress","onClick","externalOnClick","onChange","externalOnChange","rest","inputRef","handleRef","inputProps","onBlur","onKeyDown","onDoubleClick","onFocus","focused","unformattedValue","formattedValue","createElement","title","disable","displayName"],"sources":["../../../../src/components/EditableCurrency/EditableCurrency.tsx"],"sourcesContent":["import React, { useMemo, useRef } from \"react\";\n\nimport { IInputNumber, useInputNumber } from \"../../hooks\";\nimport { numberWithSeparator, useForkRef } from \"../../utils\";\nimport { EditableContent, EditableContentInterface } from \"../EditableContent\";\nimport { Tooltip } from \"../Tooltip\";\n\nexport interface EditableCurrencyProps\n extends EditableContentInterface,\n Omit<IInputNumber, \"limit\"> {\n className?: string;\n}\n\nexport const EditableCurrency = React.forwardRef<\n HTMLDivElement,\n EditableCurrencyProps\n>(\n (\n {\n decimalLength = 2,\n decimalSeparator = \".\",\n disableAbbreviation = false,\n disabled,\n disableMacros = false,\n step = 1,\n thousandSeparator = \",\",\n value: defaultValue,\n onSave,\n onCancel,\n className,\n allowEmptyValue,\n onEnterKeyPress: externalEnterKeyPress,\n onClick: externalOnClick,\n onChange: externalOnChange,\n ...rest\n },\n ref\n ) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const handleRef = useForkRef(ref, inputRef);\n\n const { inputProps } = useInputNumber(\n {\n decimalLength,\n decimalSeparator,\n disableAbbreviation,\n disableMacros,\n step,\n thousandSeparator,\n value: defaultValue,\n onSave,\n allowEmptyValue,\n onCancel,\n onChange: externalOnChange,\n onEnterKeyPress: externalEnterKeyPress,\n onClick: externalOnClick,\n },\n inputRef\n );\n\n const {\n value,\n onBlur,\n onKeyDown,\n onChange,\n onClick,\n onDoubleClick,\n onFocus,\n focused,\n unformattedValue,\n } = inputProps;\n\n const formattedValue = useMemo(() => {\n return focused\n ? value\n : numberWithSeparator(value ?? \"\", thousandSeparator);\n }, [focused, value, thousandSeparator]);\n\n return (\n <Tooltip
|
|
1
|
+
{"version":3,"file":"EditableCurrency.js","names":["React","useMemo","useRef","useInputNumber","numberWithSeparator","useForkRef","EditableContent","Tooltip","EditableCurrency","forwardRef","_ref","ref","decimalLength","decimalSeparator","disableAbbreviation","disabled","disableMacros","step","thousandSeparator","value","defaultValue","onSave","onCancel","className","allowEmptyValue","onEnterKeyPress","externalEnterKeyPress","onClick","externalOnClick","onChange","externalOnChange","trimDecimals","rest","inputRef","handleRef","inputProps","onBlur","onKeyDown","onDoubleClick","onFocus","focused","unformattedValue","formattedValue","createElement","title","disable","displayName"],"sources":["../../../../src/components/EditableCurrency/EditableCurrency.tsx"],"sourcesContent":["import React, { useMemo, useRef } from \"react\";\n\nimport { IInputNumber, useInputNumber } from \"../../hooks\";\nimport { numberWithSeparator, useForkRef } from \"../../utils\";\nimport { EditableContent, EditableContentInterface } from \"../EditableContent\";\nimport { Tooltip } from \"../Tooltip\";\n\nexport interface EditableCurrencyProps\n extends EditableContentInterface,\n Omit<IInputNumber, \"limit\"> {\n className?: string;\n}\n\nexport const EditableCurrency = React.forwardRef<\n HTMLDivElement,\n EditableCurrencyProps\n>(\n (\n {\n decimalLength = 2,\n decimalSeparator = \".\",\n disableAbbreviation = false,\n disabled,\n disableMacros = false,\n step = 1,\n thousandSeparator = \",\",\n value: defaultValue,\n onSave,\n onCancel,\n className,\n allowEmptyValue,\n onEnterKeyPress: externalEnterKeyPress,\n onClick: externalOnClick,\n onChange: externalOnChange,\n trimDecimals = true,\n ...rest\n },\n ref\n ) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const handleRef = useForkRef(ref, inputRef);\n\n const { inputProps } = useInputNumber(\n {\n decimalLength,\n decimalSeparator,\n disableAbbreviation,\n disableMacros,\n step,\n thousandSeparator,\n value: defaultValue,\n onSave,\n allowEmptyValue,\n onCancel,\n onChange: externalOnChange,\n onEnterKeyPress: externalEnterKeyPress,\n onClick: externalOnClick,\n trimDecimals,\n },\n inputRef\n );\n\n const {\n value,\n onBlur,\n onKeyDown,\n onChange,\n onClick,\n onDoubleClick,\n onFocus,\n focused,\n unformattedValue,\n } = inputProps;\n\n const formattedValue = useMemo(() => {\n return focused\n ? value\n : numberWithSeparator(value ?? \"\", thousandSeparator, decimalSeparator);\n }, [focused, value, thousandSeparator, decimalSeparator]);\n\n return (\n <Tooltip\n title={\n numberWithSeparator(\n unformattedValue ?? \"\",\n thousandSeparator,\n decimalSeparator\n ) as string\n }\n disable={focused}\n >\n <EditableContent\n disabled={disabled}\n ref={handleRef}\n className={className}\n inputProps={{\n value: formattedValue,\n onBlur: onBlur,\n onChange: onChange,\n onKeyDown: onKeyDown,\n onClick: onClick,\n onFocus: onFocus,\n onDoubleClick: onDoubleClick,\n ...rest,\n }}\n />\n </Tooltip>\n );\n }\n);\n\nEditableCurrency.displayName = \"EditableCurrency\";\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,OAAO,EAAEC,MAAM,QAAQ,OAAO;AAE9C,SAAuBC,cAAc,QAAQ,aAAa;AAC1D,SAASC,mBAAmB,EAAEC,UAAU,QAAQ,aAAa;AAC7D,SAASC,eAAe,QAAkC,oBAAoB;AAC9E,SAASC,OAAO,QAAQ,YAAY;AAQpC,OAAO,MAAMC,gBAAgB,gBAAGR,KAAK,CAACS,UAAU,CAI9C,CAAAC,IAAA,EAoBEC,GAAG,KACA;EAAA,IApBH;IACEC,aAAa,GAAG,CAAC;IACjBC,gBAAgB,GAAG,GAAG;IACtBC,mBAAmB,GAAG,KAAK;IAC3BC,QAAQ;IACRC,aAAa,GAAG,KAAK;IACrBC,IAAI,GAAG,CAAC;IACRC,iBAAiB,GAAG,GAAG;IACvBC,KAAK,EAAEC,YAAY;IACnBC,MAAM;IACNC,QAAQ;IACRC,SAAS;IACTC,eAAe;IACfC,eAAe,EAAEC,qBAAqB;IACtCC,OAAO,EAAEC,eAAe;IACxBC,QAAQ,EAAEC,gBAAgB;IAC1BC,YAAY,GAAG,IAAI;IACnB,GAAGC;EACL,CAAC,GAAAtB,IAAA;EAGD,MAAMuB,QAAQ,GAAG/B,MAAM,CAAmB,IAAI,CAAC;EAC/C,MAAMgC,SAAS,GAAG7B,UAAU,CAACM,GAAG,EAAEsB,QAAQ,CAAC;EAE3C,MAAM;IAAEE;EAAW,CAAC,GAAGhC,cAAc,CACnC;IACES,aAAa;IACbC,gBAAgB;IAChBC,mBAAmB;IACnBE,aAAa;IACbC,IAAI;IACJC,iBAAiB;IACjBC,KAAK,EAAEC,YAAY;IACnBC,MAAM;IACNG,eAAe;IACfF,QAAQ;IACRO,QAAQ,EAAEC,gBAAgB;IAC1BL,eAAe,EAAEC,qBAAqB;IACtCC,OAAO,EAAEC,eAAe;IACxBG;EACF,CAAC,EACDE,QACF,CAAC;EAED,MAAM;IACJd,KAAK;IACLiB,MAAM;IACNC,SAAS;IACTR,QAAQ;IACRF,OAAO;IACPW,aAAa;IACbC,OAAO;IACPC,OAAO;IACPC;EACF,CAAC,GAAGN,UAAU;EAEd,MAAMO,cAAc,GAAGzC,OAAO,CAAC,MAAM;IACnC,OAAOuC,OAAO,GACVrB,KAAK,GACLf,mBAAmB,CAACe,KAAK,WAALA,KAAK,GAAI,EAAE,EAAED,iBAAiB,EAAEL,gBAAgB,CAAC;EAC3E,CAAC,EAAE,CAAC2B,OAAO,EAAErB,KAAK,EAAED,iBAAiB,EAAEL,gBAAgB,CAAC,CAAC;EAEzD,oBACEb,KAAA,CAAA2C,aAAA,CAACpC,OAAO;IACNqC,KAAK,EACHxC,mBAAmB,CACjBqC,gBAAgB,WAAhBA,gBAAgB,GAAI,EAAE,EACtBvB,iBAAiB,EACjBL,gBACF,CACD;IACDgC,OAAO,EAAEL;EAAQ,gBAEjBxC,KAAA,CAAA2C,aAAA,CAACrC,eAAe;IACdS,QAAQ,EAAEA,QAAS;IACnBJ,GAAG,EAAEuB,SAAU;IACfX,SAAS,EAAEA,SAAU;IACrBY,UAAU,EAAE;MACVhB,KAAK,EAAEuB,cAAc;MACrBN,MAAM,EAAEA,MAAM;MACdP,QAAQ,EAAEA,QAAQ;MAClBQ,SAAS,EAAEA,SAAS;MACpBV,OAAO,EAAEA,OAAO;MAChBY,OAAO,EAAEA,OAAO;MAChBD,aAAa,EAAEA,aAAa;MAC5B,GAAGN;IACL;EAAE,CACH,CACM,CAAC;AAEd,CACF,CAAC;AAEDxB,gBAAgB,CAACsC,WAAW,GAAG,kBAAkB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InputNumber.d.ts","sourceRoot":"","sources":["../../../../src/components/Input/InputNumber.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA6B,MAAM,OAAO,CAAC;AAElD,OAAO,EAAS,UAAU,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAkB,MAAM,aAAa,CAAC;AAG3D,MAAM,WAAW,gBACf,SAAQ,IAAI,CAAC,UAAU,EAAE,OAAO,GAAG,UAAU,GAAG,MAAM,CAAC,EACrD,YAAY;CAAG;AAEnB,eAAO,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"InputNumber.d.ts","sourceRoot":"","sources":["../../../../src/components/Input/InputNumber.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA6B,MAAM,OAAO,CAAC;AAElD,OAAO,EAAS,UAAU,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAkB,MAAM,aAAa,CAAC;AAG3D,MAAM,WAAW,gBACf,SAAQ,IAAI,CAAC,UAAU,EAAE,OAAO,GAAG,UAAU,GAAG,MAAM,CAAC,EACrD,YAAY;CAAG;AAEnB,eAAO,MAAM,WAAW,2FA+EvB,CAAC"}
|
|
@@ -22,6 +22,7 @@ export const InputNumber = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
|
22
22
|
onClick: externalOnClick,
|
|
23
23
|
limit,
|
|
24
24
|
placeholder,
|
|
25
|
+
trimDecimals = true,
|
|
25
26
|
...rest
|
|
26
27
|
} = _ref;
|
|
27
28
|
const inputRef = useRef(null);
|
|
@@ -42,7 +43,8 @@ export const InputNumber = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
|
42
43
|
onCancel,
|
|
43
44
|
onSave,
|
|
44
45
|
allowEmptyValue,
|
|
45
|
-
limit
|
|
46
|
+
limit,
|
|
47
|
+
trimDecimals
|
|
46
48
|
}, inputRef);
|
|
47
49
|
const {
|
|
48
50
|
value,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InputNumber.js","names":["React","forwardRef","useRef","Input","useInputNumber","useForkRef","InputNumber","_ref","ref","decimalLength","decimalSeparator","disableAbbreviation","disabled","disableMacros","invalid","step","thousandSeparator","value","defaultValue","onCancel","onSave","onEnterKeyPress","externalEnterKeyPress","allowEmptyValue","onChange","externalOnChange","onClick","externalOnClick","limit","placeholder","rest","inputRef","handleRef","inputProps","onBlur","onKeyDown","onDoubleClick","onFocus","createElement","_extends","type","displayName"],"sources":["../../../../src/components/Input/InputNumber.tsx"],"sourcesContent":["import React, { forwardRef, useRef } from \"react\";\n\nimport { Input, InputProps } from \"./Input\";\nimport { IInputNumber, useInputNumber } from \"../../hooks\";\nimport { useForkRef } from \"../../utils\";\n\nexport interface InputNumberProps\n extends Omit<InputProps, \"value\" | \"onChange\" | \"step\">,\n IInputNumber {}\n\nexport const InputNumber = forwardRef<HTMLInputElement, InputNumberProps>(\n (\n {\n decimalLength = 2,\n decimalSeparator = \".\",\n disableAbbreviation = false,\n disabled,\n disableMacros = false,\n invalid,\n step = 1,\n thousandSeparator = \",\",\n value: defaultValue,\n onCancel,\n onSave,\n onEnterKeyPress: externalEnterKeyPress,\n allowEmptyValue,\n onChange: externalOnChange,\n onClick: externalOnClick,\n limit,\n placeholder,\n ...rest\n },\n ref\n ) => {\n const inputRef = useRef<HTMLInputElement | null>(null);\n const handleRef = useForkRef(ref, inputRef);\n\n const { inputProps } = useInputNumber(\n {\n decimalLength,\n decimalSeparator,\n disableAbbreviation,\n disableMacros,\n step,\n thousandSeparator,\n onEnterKeyPress: externalEnterKeyPress,\n onChange: externalOnChange,\n onClick: externalOnClick,\n value: defaultValue,\n onCancel,\n onSave,\n allowEmptyValue,\n limit,\n },\n inputRef\n );\n const {\n value,\n onBlur,\n onKeyDown,\n onChange,\n onClick,\n onDoubleClick,\n onFocus,\n } = inputProps;\n\n return (\n <Input\n {...rest}\n ref={handleRef}\n placeholder={placeholder}\n value={value}\n type=\"text\"\n disabled={disabled}\n invalid={invalid}\n onChange={onChange}\n onBlur={onBlur}\n onKeyDown={onKeyDown}\n onClick={onClick}\n onDoubleClick={onDoubleClick}\n onFocus={onFocus}\n aria-placeholder={placeholder}\n aria-disabled={disabled}\n aria-invalid={invalid}\n />\n );\n }\n);\n\nInputNumber.displayName = \"InputNumber\";\n"],"mappings":";AAAA,OAAOA,KAAK,IAAIC,UAAU,EAAEC,MAAM,QAAQ,OAAO;AAEjD,SAASC,KAAK,QAAoB,SAAS;AAC3C,SAAuBC,cAAc,QAAQ,aAAa;AAC1D,SAASC,UAAU,QAAQ,aAAa;AAMxC,OAAO,MAAMC,WAAW,gBAAGL,UAAU,CACnC,CAAAM,IAAA,
|
|
1
|
+
{"version":3,"file":"InputNumber.js","names":["React","forwardRef","useRef","Input","useInputNumber","useForkRef","InputNumber","_ref","ref","decimalLength","decimalSeparator","disableAbbreviation","disabled","disableMacros","invalid","step","thousandSeparator","value","defaultValue","onCancel","onSave","onEnterKeyPress","externalEnterKeyPress","allowEmptyValue","onChange","externalOnChange","onClick","externalOnClick","limit","placeholder","trimDecimals","rest","inputRef","handleRef","inputProps","onBlur","onKeyDown","onDoubleClick","onFocus","createElement","_extends","type","displayName"],"sources":["../../../../src/components/Input/InputNumber.tsx"],"sourcesContent":["import React, { forwardRef, useRef } from \"react\";\n\nimport { Input, InputProps } from \"./Input\";\nimport { IInputNumber, useInputNumber } from \"../../hooks\";\nimport { useForkRef } from \"../../utils\";\n\nexport interface InputNumberProps\n extends Omit<InputProps, \"value\" | \"onChange\" | \"step\">,\n IInputNumber {}\n\nexport const InputNumber = forwardRef<HTMLInputElement, InputNumberProps>(\n (\n {\n decimalLength = 2,\n decimalSeparator = \".\",\n disableAbbreviation = false,\n disabled,\n disableMacros = false,\n invalid,\n step = 1,\n thousandSeparator = \",\",\n value: defaultValue,\n onCancel,\n onSave,\n onEnterKeyPress: externalEnterKeyPress,\n allowEmptyValue,\n onChange: externalOnChange,\n onClick: externalOnClick,\n limit,\n placeholder,\n trimDecimals = true,\n ...rest\n },\n ref\n ) => {\n const inputRef = useRef<HTMLInputElement | null>(null);\n const handleRef = useForkRef(ref, inputRef);\n\n const { inputProps } = useInputNumber(\n {\n decimalLength,\n decimalSeparator,\n disableAbbreviation,\n disableMacros,\n step,\n thousandSeparator,\n onEnterKeyPress: externalEnterKeyPress,\n onChange: externalOnChange,\n onClick: externalOnClick,\n value: defaultValue,\n onCancel,\n onSave,\n allowEmptyValue,\n limit,\n trimDecimals,\n },\n inputRef\n );\n const {\n value,\n onBlur,\n onKeyDown,\n onChange,\n onClick,\n onDoubleClick,\n onFocus,\n } = inputProps;\n\n return (\n <Input\n {...rest}\n ref={handleRef}\n placeholder={placeholder}\n value={value}\n type=\"text\"\n disabled={disabled}\n invalid={invalid}\n onChange={onChange}\n onBlur={onBlur}\n onKeyDown={onKeyDown}\n onClick={onClick}\n onDoubleClick={onDoubleClick}\n onFocus={onFocus}\n aria-placeholder={placeholder}\n aria-disabled={disabled}\n aria-invalid={invalid}\n />\n );\n }\n);\n\nInputNumber.displayName = \"InputNumber\";\n"],"mappings":";AAAA,OAAOA,KAAK,IAAIC,UAAU,EAAEC,MAAM,QAAQ,OAAO;AAEjD,SAASC,KAAK,QAAoB,SAAS;AAC3C,SAAuBC,cAAc,QAAQ,aAAa;AAC1D,SAASC,UAAU,QAAQ,aAAa;AAMxC,OAAO,MAAMC,WAAW,gBAAGL,UAAU,CACnC,CAAAM,IAAA,EAsBEC,GAAG,KACA;EAAA,IAtBH;IACEC,aAAa,GAAG,CAAC;IACjBC,gBAAgB,GAAG,GAAG;IACtBC,mBAAmB,GAAG,KAAK;IAC3BC,QAAQ;IACRC,aAAa,GAAG,KAAK;IACrBC,OAAO;IACPC,IAAI,GAAG,CAAC;IACRC,iBAAiB,GAAG,GAAG;IACvBC,KAAK,EAAEC,YAAY;IACnBC,QAAQ;IACRC,MAAM;IACNC,eAAe,EAAEC,qBAAqB;IACtCC,eAAe;IACfC,QAAQ,EAAEC,gBAAgB;IAC1BC,OAAO,EAAEC,eAAe;IACxBC,KAAK;IACLC,WAAW;IACXC,YAAY,GAAG,IAAI;IACnB,GAAGC;EACL,CAAC,GAAAxB,IAAA;EAGD,MAAMyB,QAAQ,GAAG9B,MAAM,CAA0B,IAAI,CAAC;EACtD,MAAM+B,SAAS,GAAG5B,UAAU,CAACG,GAAG,EAAEwB,QAAQ,CAAC;EAE3C,MAAM;IAAEE;EAAW,CAAC,GAAG9B,cAAc,CACnC;IACEK,aAAa;IACbC,gBAAgB;IAChBC,mBAAmB;IACnBE,aAAa;IACbE,IAAI;IACJC,iBAAiB;IACjBK,eAAe,EAAEC,qBAAqB;IACtCE,QAAQ,EAAEC,gBAAgB;IAC1BC,OAAO,EAAEC,eAAe;IACxBV,KAAK,EAAEC,YAAY;IACnBC,QAAQ;IACRC,MAAM;IACNG,eAAe;IACfK,KAAK;IACLE;EACF,CAAC,EACDE,QACF,CAAC;EACD,MAAM;IACJf,KAAK;IACLkB,MAAM;IACNC,SAAS;IACTZ,QAAQ;IACRE,OAAO;IACPW,aAAa;IACbC;EACF,CAAC,GAAGJ,UAAU;EAEd,oBACElC,KAAA,CAAAuC,aAAA,CAACpC,KAAK,EAAAqC,QAAA,KACAT,IAAI;IACRvB,GAAG,EAAEyB,SAAU;IACfJ,WAAW,EAAEA,WAAY;IACzBZ,KAAK,EAAEA,KAAM;IACbwB,IAAI,EAAC,MAAM;IACX7B,QAAQ,EAAEA,QAAS;IACnBE,OAAO,EAAEA,OAAQ;IACjBU,QAAQ,EAAEA,QAAS;IACnBW,MAAM,EAAEA,MAAO;IACfC,SAAS,EAAEA,SAAU;IACrBV,OAAO,EAAEA,OAAQ;IACjBW,aAAa,EAAEA,aAAc;IAC7BC,OAAO,EAAEA,OAAQ;IACjB,oBAAkBT,WAAY;IAC9B,iBAAejB,QAAS;IACxB,gBAAcE;EAAQ,EACvB,CAAC;AAEN,CACF,CAAC;AAEDR,WAAW,CAACoC,WAAW,GAAG,aAAa"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { MouseEvent, RefObject } from "react";
|
|
2
|
-
export type Separators = "." | ",";
|
|
2
|
+
export type Separators = "." | "," | " ";
|
|
3
3
|
export interface IInputNumber {
|
|
4
4
|
decimalLength?: number;
|
|
5
5
|
decimalSeparator?: Separators;
|
|
6
6
|
disableAbbreviation?: boolean;
|
|
7
7
|
disableMacros?: boolean;
|
|
8
8
|
thousandSeparator?: Separators;
|
|
9
|
+
trimDecimals?: boolean;
|
|
9
10
|
onSave?: (e: Event) => void;
|
|
10
11
|
value?: string | number;
|
|
11
12
|
step?: number;
|
|
@@ -17,7 +18,7 @@ export interface IInputNumber {
|
|
|
17
18
|
onCancel?: (e: Event) => void;
|
|
18
19
|
validation?: (value: string, disableMacros: boolean, decimalSeparator: string, decimalLength: number, limit?: number) => boolean;
|
|
19
20
|
}
|
|
20
|
-
export declare const useInputNumber: ({ decimalSeparator, thousandSeparator, disableAbbreviation, disableMacros, decimalLength, value, onChange, onSave, onEnterKeyPress, onClick, onCancel, allowEmptyValue, step, limit, validation, }: IInputNumber, inputRef: RefObject<HTMLInputElement | null>) => {
|
|
21
|
+
export declare const useInputNumber: ({ decimalSeparator, thousandSeparator, disableAbbreviation, disableMacros, decimalLength, value, onChange, onSave, onEnterKeyPress, onClick, onCancel, allowEmptyValue, step, trimDecimals, limit, validation, }: IInputNumber, inputRef: RefObject<HTMLInputElement | null>) => {
|
|
21
22
|
inputProps: {
|
|
22
23
|
value: string | number;
|
|
23
24
|
onBlur: (e: any) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useInputNumber.d.ts","sourceRoot":"","sources":["../../../src/hooks/useInputNumber.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,UAAU,EAGV,SAAS,EAGV,MAAM,OAAO,CAAC;AASf,MAAM,MAAM,UAAU,GAAG,GAAG,GAAG,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"useInputNumber.d.ts","sourceRoot":"","sources":["../../../src/hooks/useInputNumber.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,UAAU,EAGV,SAAS,EAGV,MAAM,OAAO,CAAC;AASf,MAAM,MAAM,UAAU,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAEzC,MAAM,WAAW,YAAY;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,UAAU,CAAC;IAC9B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iBAAiB,CAAC,EAAE,UAAU,CAAC;IAC/B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IACxD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;IAC9B,UAAU,CAAC,EAAE,CACX,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,OAAO,EACtB,gBAAgB,EAAE,MAAM,EACxB,aAAa,EAAE,MAAM,EACrB,KAAK,CAAC,EAAE,MAAM,KACX,OAAO,CAAC;CACd;AAED,eAAO,MAAM,cAAc,qNAkBtB,YAAY,YACL,UAAU,gBAAgB,GAAG,IAAI,CAAC;;;;;;;;;;;;;;CA8S7C,CAAC"}
|
|
@@ -16,20 +16,21 @@ export const useInputNumber = (_ref, inputRef) => {
|
|
|
16
16
|
onCancel,
|
|
17
17
|
allowEmptyValue,
|
|
18
18
|
step = 1,
|
|
19
|
+
trimDecimals = true,
|
|
19
20
|
limit,
|
|
20
21
|
validation = validateNumberInput
|
|
21
22
|
} = _ref;
|
|
22
|
-
const [currentValue, setCurrentValue] = useState(() => disableAbbreviation ? value : formatNumber(value, thousandSeparator));
|
|
23
|
-
const [prevValue, setPrevValue] = useState(() => disableAbbreviation ? value : formatNumber(value, thousandSeparator));
|
|
23
|
+
const [currentValue, setCurrentValue] = useState(() => disableAbbreviation ? value : formatNumber(value, thousandSeparator, decimalSeparator, trimDecimals, decimalLength));
|
|
24
|
+
const [prevValue, setPrevValue] = useState(() => disableAbbreviation ? value : formatNumber(value, thousandSeparator, decimalSeparator, trimDecimals, decimalLength));
|
|
24
25
|
const [unformattedValue, setUnformattedValue] = useState(() => value);
|
|
25
26
|
useEffect(() => {
|
|
26
27
|
if (value !== prevValue) {
|
|
27
|
-
setCurrentValue(disableAbbreviation ? value : formatNumber(value, thousandSeparator));
|
|
28
|
-
setPrevValue(disableAbbreviation ? value : formatNumber(value, thousandSeparator));
|
|
28
|
+
setCurrentValue(disableAbbreviation ? value : formatNumber(value, thousandSeparator, decimalSeparator, trimDecimals, decimalLength));
|
|
29
|
+
setPrevValue(disableAbbreviation ? value : formatNumber(value, thousandSeparator, decimalSeparator, trimDecimals, decimalLength));
|
|
29
30
|
setUnformattedValue(value);
|
|
30
31
|
}
|
|
31
32
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
32
|
-
}, [disableAbbreviation, thousandSeparator, value]);
|
|
33
|
+
}, [disableAbbreviation, thousandSeparator, decimalSeparator, decimalLength, trimDecimals, value]);
|
|
33
34
|
const [focused, setFocused] = useState(false);
|
|
34
35
|
const escapeRef = useRef(false);
|
|
35
36
|
const handleBlur = useCallback(e => {
|
|
@@ -38,7 +39,7 @@ export const useInputNumber = (_ref, inputRef) => {
|
|
|
38
39
|
setUnformattedValue(prevValue);
|
|
39
40
|
} else {
|
|
40
41
|
if (e.target.value.trim().length > 0 && prevValue !== e.target.value) {
|
|
41
|
-
const _value = disableAbbreviation ? currentValue : formatNumber(currentValue, thousandSeparator);
|
|
42
|
+
const _value = disableAbbreviation ? currentValue : formatNumber(currentValue, thousandSeparator, decimalSeparator, trimDecimals, decimalLength);
|
|
42
43
|
setPrevValue(_value);
|
|
43
44
|
setUnformattedValue(currentValue);
|
|
44
45
|
setCurrentValue(_value);
|
|
@@ -58,7 +59,7 @@ export const useInputNumber = (_ref, inputRef) => {
|
|
|
58
59
|
}
|
|
59
60
|
}
|
|
60
61
|
setFocused(false);
|
|
61
|
-
}, [
|
|
62
|
+
}, [prevValue, disableAbbreviation, currentValue, thousandSeparator, decimalSeparator, decimalLength, trimDecimals, onSave, allowEmptyValue, onCancel]);
|
|
62
63
|
const updateValue = useCallback(type => {
|
|
63
64
|
const value = String(unformattedValue);
|
|
64
65
|
let decimalPart = "";
|
|
@@ -81,7 +82,7 @@ export const useInputNumber = (_ref, inputRef) => {
|
|
|
81
82
|
if (value.includes(decimalSeparator)) {
|
|
82
83
|
increasedValue = parseFloat(increasedValue.toFixed(decimalLength));
|
|
83
84
|
}
|
|
84
|
-
const joinedValue = numberWithSeparator(increasedValue, thousandSeparator, value.includes(thousandSeparator));
|
|
85
|
+
const joinedValue = numberWithSeparator(increasedValue, thousandSeparator, decimalSeparator, value.includes(thousandSeparator));
|
|
85
86
|
setUnformattedValue(decimalPart ? joinedValue + decimalPart : joinedValue);
|
|
86
87
|
setCurrentValue(decimalPart ? joinedValue + decimalPart : joinedValue);
|
|
87
88
|
}, [decimalLength, decimalSeparator, step, thousandSeparator, unformattedValue]);
|