@activecollab/components 2.0.15 → 2.0.17
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 +37 -18
- package/dist/cjs/components/EditableCurrency/EditableCurrency.js.map +1 -1
- package/dist/cjs/components/Input/InputCurrency.js.map +1 -1
- package/dist/cjs/components/Input/InputNumber.js +35 -18
- package/dist/cjs/components/Input/InputNumber.js.map +1 -1
- package/dist/cjs/components/Input/index.js +22 -0
- package/dist/cjs/components/Input/index.js.map +1 -1
- package/dist/cjs/components/Select/Select.js +8 -4
- package/dist/cjs/components/Select/Select.js.map +1 -1
- package/dist/cjs/hooks/useInputNumber.js +151 -97
- package/dist/cjs/hooks/useInputNumber.js.map +1 -1
- package/dist/cjs/utils/currencyUtils.js +2 -2
- package/dist/cjs/utils/currencyUtils.js.map +1 -1
- package/dist/cjs/utils/currencyUtils.test.js +2 -2
- package/dist/cjs/utils/currencyUtils.test.js.map +1 -1
- package/dist/cjs/utils/index.js +3 -3
- package/dist/cjs/utils/index.js.map +1 -1
- package/dist/cjs/utils/validation.js +19 -1
- package/dist/cjs/utils/validation.js.map +1 -1
- package/dist/esm/components/EditableCurrency/EditableCurrency.d.ts +6 -2
- package/dist/esm/components/EditableCurrency/EditableCurrency.d.ts.map +1 -1
- package/dist/esm/components/EditableCurrency/EditableCurrency.js +38 -17
- package/dist/esm/components/EditableCurrency/EditableCurrency.js.map +1 -1
- package/dist/esm/components/Input/InputCurrency.d.ts +2 -3
- package/dist/esm/components/Input/InputCurrency.d.ts.map +1 -1
- package/dist/esm/components/Input/InputCurrency.js.map +1 -1
- package/dist/esm/components/Input/InputNumber.d.ts +4 -1
- package/dist/esm/components/Input/InputNumber.d.ts.map +1 -1
- package/dist/esm/components/Input/InputNumber.js +36 -17
- package/dist/esm/components/Input/InputNumber.js.map +1 -1
- package/dist/esm/components/Input/index.d.ts +2 -0
- package/dist/esm/components/Input/index.d.ts.map +1 -1
- package/dist/esm/components/Input/index.js +22 -0
- package/dist/esm/components/Input/index.js.map +1 -1
- package/dist/esm/components/Select/Select.d.ts +2 -0
- package/dist/esm/components/Select/Select.d.ts.map +1 -1
- package/dist/esm/components/Select/Select.js +5 -2
- package/dist/esm/components/Select/Select.js.map +1 -1
- package/dist/esm/hooks/useInputNumber.d.ts +25 -13
- package/dist/esm/hooks/useInputNumber.d.ts.map +1 -1
- package/dist/esm/hooks/useInputNumber.js +131 -90
- package/dist/esm/hooks/useInputNumber.js.map +1 -1
- package/dist/esm/utils/currencyUtils.d.ts +1 -1
- package/dist/esm/utils/currencyUtils.d.ts.map +1 -1
- package/dist/esm/utils/currencyUtils.js +3 -3
- package/dist/esm/utils/currencyUtils.js.map +1 -1
- package/dist/esm/utils/currencyUtils.test.js +2 -2
- 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 +3 -3
- package/dist/esm/utils/index.js.map +1 -1
- package/dist/esm/utils/validation.d.ts +1 -0
- package/dist/esm/utils/validation.d.ts.map +1 -1
- package/dist/esm/utils/validation.js +20 -1
- package/dist/esm/utils/validation.js.map +1 -1
- package/dist/index.js +425 -247
- 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
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.useInputNumber = void 0;
|
|
7
7
|
var _react = require("react");
|
|
8
|
+
var _utils = require("../utils");
|
|
8
9
|
var _currencyUtils = require("../utils/currencyUtils");
|
|
9
10
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
10
11
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
@@ -12,10 +13,7 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
|
|
|
12
13
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
13
14
|
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
14
15
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
15
|
-
|
|
16
|
-
// @TODO: Pitati foo za testove.
|
|
17
|
-
|
|
18
|
-
var useInputNumber = exports.useInputNumber = function useInputNumber(_ref, ref) {
|
|
16
|
+
var useInputNumber = exports.useInputNumber = function useInputNumber(_ref, inputRef) {
|
|
19
17
|
var _ref$decimalSeparator = _ref.decimalSeparator,
|
|
20
18
|
decimalSeparator = _ref$decimalSeparator === void 0 ? "." : _ref$decimalSeparator,
|
|
21
19
|
_ref$thousandSeparato = _ref.thousandSeparator,
|
|
@@ -24,95 +22,69 @@ var useInputNumber = exports.useInputNumber = function useInputNumber(_ref, ref)
|
|
|
24
22
|
disableMacros = _ref.disableMacros,
|
|
25
23
|
decimalLength = _ref.decimalLength,
|
|
26
24
|
value = _ref.value,
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
25
|
+
onChange = _ref.onChange,
|
|
26
|
+
onSave = _ref.onSave,
|
|
27
|
+
onEnterKeyPress = _ref.onEnterKeyPress,
|
|
28
|
+
onClick = _ref.onClick,
|
|
29
|
+
onCancel = _ref.onCancel,
|
|
30
|
+
allowEmptyValue = _ref.allowEmptyValue,
|
|
31
|
+
_ref$step = _ref.step,
|
|
32
|
+
step = _ref$step === void 0 ? 1 : _ref$step,
|
|
33
|
+
limit = _ref.limit,
|
|
34
|
+
_ref$validation = _ref.validation,
|
|
35
|
+
validation = _ref$validation === void 0 ? _utils.validateNumberInput : _ref$validation;
|
|
36
|
+
var _useState = (0, _react.useState)(function () {
|
|
37
|
+
return disableAbbreviation ? value : (0, _currencyUtils.formatNumber)(value, thousandSeparator);
|
|
38
|
+
}),
|
|
34
39
|
_useState2 = _slicedToArray(_useState, 2),
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
var _useState3 = (0, _react.useState)(
|
|
40
|
+
currentValue = _useState2[0],
|
|
41
|
+
setCurrentValue = _useState2[1];
|
|
42
|
+
var _useState3 = (0, _react.useState)(function () {
|
|
43
|
+
return disableAbbreviation ? value : (0, _currencyUtils.formatNumber)(value, thousandSeparator);
|
|
44
|
+
}),
|
|
38
45
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
var _useState5 = (0, _react.useState)(
|
|
46
|
+
prevValue = _useState4[0],
|
|
47
|
+
setPrevValue = _useState4[1];
|
|
48
|
+
var _useState5 = (0, _react.useState)(function () {
|
|
49
|
+
return value;
|
|
50
|
+
}),
|
|
42
51
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
var
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
var
|
|
51
|
-
if (
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
};
|
|
55
|
-
var handleChange = function handleChange(e) {
|
|
56
|
-
var inputValue = e.target.value;
|
|
57
|
-
var isValidInput = false;
|
|
58
|
-
if (inputValue.startsWith("00")) {
|
|
59
|
-
return;
|
|
60
|
-
}
|
|
61
|
-
var numericInput = disableMacros ? inputValue : inputValue.replace(/([0-9.]+)([kmbtKMBT])/, function (_, num, unit) {
|
|
62
|
-
return (parseFloat(num) * _currencyUtils.currencyMultiplier[unit.toLowerCase()]).toString();
|
|
63
|
-
});
|
|
64
|
-
var regexString = `^(-?\\d{0,9}(?:[${thousandSeparator}]?\\d{0,3})*(?:\\${decimalSeparator}\\d{0,${decimalLength}})?)?$`;
|
|
65
|
-
if (thousandSeparator === ",") {
|
|
66
|
-
isValidInput = new RegExp(regexString).test(numericInput);
|
|
67
|
-
}
|
|
68
|
-
if (thousandSeparator === ".") {
|
|
69
|
-
isValidInput = new RegExp(regexString).test(numericInput);
|
|
70
|
-
}
|
|
71
|
-
if (!isValidInput) {
|
|
72
|
-
return;
|
|
73
|
-
}
|
|
74
|
-
setFormatted(numericInput);
|
|
75
|
-
onValueChange && onValueChange(numericInput);
|
|
76
|
-
};
|
|
77
|
-
var handleKeyDown = function handleKeyDown(e) {
|
|
78
|
-
var key = e.key;
|
|
79
|
-
var _step = parseFloat(String(step));
|
|
80
|
-
if (key === "Escape") {
|
|
81
|
-
handleInputBlur();
|
|
82
|
-
}
|
|
83
|
-
if (key === "ArrowUp") {
|
|
84
|
-
e.preventDefault();
|
|
85
|
-
updateValue("increment", _step);
|
|
86
|
-
}
|
|
87
|
-
if (key === "ArrowDown") {
|
|
88
|
-
e.preventDefault();
|
|
89
|
-
updateValue("decrement", _step);
|
|
90
|
-
}
|
|
91
|
-
if ((e.metaKey || e.ctrlKey) && e.key === "a") {
|
|
92
|
-
handleSelect();
|
|
93
|
-
}
|
|
94
|
-
if (decimalLength === 0 && e.key === decimalSeparator) {
|
|
95
|
-
e.preventDefault();
|
|
96
|
-
}
|
|
97
|
-
onKeyDown && onKeyDown(e);
|
|
98
|
-
};
|
|
99
|
-
var handleBlur = function handleBlur(e) {
|
|
100
|
-
if (disableAbbreviation) {
|
|
101
|
-
setFormatted(formattedValue);
|
|
52
|
+
unformattedValue = _useState6[0],
|
|
53
|
+
setUnformattedValue = _useState6[1];
|
|
54
|
+
var _useState7 = (0, _react.useState)(false),
|
|
55
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
56
|
+
focused = _useState8[0],
|
|
57
|
+
setFocused = _useState8[1];
|
|
58
|
+
var escapeRef = (0, _react.useRef)(false);
|
|
59
|
+
var handleBlur = (0, _react.useCallback)(function (e) {
|
|
60
|
+
if (escapeRef.current) {
|
|
61
|
+
setCurrentValue(prevValue);
|
|
62
|
+
setUnformattedValue(prevValue);
|
|
102
63
|
} else {
|
|
103
|
-
|
|
64
|
+
if (e.target.value.trim().length > 0 && prevValue !== e.target.value) {
|
|
65
|
+
var _value = disableAbbreviation ? currentValue : (0, _currencyUtils.formatNumber)(currentValue, thousandSeparator);
|
|
66
|
+
setPrevValue(_value);
|
|
67
|
+
setUnformattedValue(currentValue);
|
|
68
|
+
setCurrentValue(_value);
|
|
69
|
+
typeof onSave === "function" && onSave(e);
|
|
70
|
+
} else {
|
|
71
|
+
if (!allowEmptyValue) {
|
|
72
|
+
setCurrentValue(prevValue);
|
|
73
|
+
setUnformattedValue(prevValue);
|
|
74
|
+
typeof onCancel === "function" && onCancel(e);
|
|
75
|
+
} else {
|
|
76
|
+
if (typeof onSave === "function" && prevValue !== e.target.value) {
|
|
77
|
+
onSave(e);
|
|
78
|
+
} else {
|
|
79
|
+
typeof onCancel === "function" && onCancel(e);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
104
83
|
}
|
|
105
|
-
setRootValue(formattedValue);
|
|
106
84
|
setFocused(false);
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
setFormatted(rootValue);
|
|
111
|
-
setFocused(true);
|
|
112
|
-
onFocus && onFocus(e);
|
|
113
|
-
};
|
|
114
|
-
var updateValue = function updateValue(type, step) {
|
|
115
|
-
var value = String(formattedValue);
|
|
85
|
+
}, [allowEmptyValue, disableAbbreviation, onCancel, onSave, prevValue, thousandSeparator, currentValue]);
|
|
86
|
+
var updateValue = (0, _react.useCallback)(function (type) {
|
|
87
|
+
var value = String(unformattedValue);
|
|
116
88
|
var decimalPart = "";
|
|
117
89
|
var increasedValue = 0;
|
|
118
90
|
var nonDecimalPart = value.replaceAll(thousandSeparator, "");
|
|
@@ -134,17 +106,99 @@ var useInputNumber = exports.useInputNumber = function useInputNumber(_ref, ref)
|
|
|
134
106
|
increasedValue = parseFloat(increasedValue.toFixed(decimalLength));
|
|
135
107
|
}
|
|
136
108
|
var joinedValue = (0, _currencyUtils.numberWithSeparator)(increasedValue, thousandSeparator, value.includes(thousandSeparator));
|
|
137
|
-
|
|
138
|
-
|
|
109
|
+
setUnformattedValue(decimalPart ? joinedValue + decimalPart : joinedValue);
|
|
110
|
+
setCurrentValue(decimalPart ? joinedValue + decimalPart : joinedValue);
|
|
111
|
+
}, [decimalLength, decimalSeparator, step, thousandSeparator, unformattedValue]);
|
|
112
|
+
var handleKeyDown = (0, _react.useCallback)(function (e) {
|
|
113
|
+
if (e.key === "Enter") {
|
|
114
|
+
e.target.blur();
|
|
115
|
+
if (typeof onEnterKeyPress === "function") onEnterKeyPress(e.target.value);
|
|
116
|
+
}
|
|
117
|
+
if (e.key === "ArrowLeft") {
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
if (e.key === "ArrowRight") {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
if (e.key === "ArrowUp") {
|
|
124
|
+
e.preventDefault();
|
|
125
|
+
updateValue("increment");
|
|
126
|
+
}
|
|
127
|
+
if (e.key === "ArrowDown") {
|
|
128
|
+
e.preventDefault();
|
|
129
|
+
updateValue("decrement");
|
|
130
|
+
}
|
|
131
|
+
if (e.key === "Escape") {
|
|
132
|
+
escapeRef.current = true;
|
|
133
|
+
e.target.blur();
|
|
134
|
+
typeof onCancel === "function" && onCancel(e);
|
|
135
|
+
escapeRef.current = false;
|
|
136
|
+
}
|
|
137
|
+
if (e.key === "Backspace") {
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
if ((e.metaKey || e.ctrlKey) && e.key === "a") {
|
|
141
|
+
var _inputRef$current;
|
|
142
|
+
(_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 || _inputRef$current.select();
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
if (e.key === "Tab") {
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
if ((e.metaKey || e.ctrlKey) && e.key === "v") {
|
|
149
|
+
e.preventDefault();
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
var input = e.target;
|
|
153
|
+
var currentValue = input.value;
|
|
154
|
+
var start = input.selectionStart;
|
|
155
|
+
var end = input.selectionEnd;
|
|
156
|
+
var newValue = currentValue.substring(0, start) + e.key + currentValue.substring(end);
|
|
157
|
+
if (!validation(newValue, Boolean(disableMacros), decimalSeparator, decimalLength !== null && decimalLength !== void 0 ? decimalLength : 0, limit)) {
|
|
158
|
+
e.preventDefault();
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
}, [decimalLength, decimalSeparator, disableMacros, inputRef, limit, onCancel, onEnterKeyPress, updateValue, validation]);
|
|
162
|
+
var handleChange = (0, _react.useCallback)(function (e) {
|
|
163
|
+
var inputValue = e.target.value;
|
|
164
|
+
var numericInput = disableMacros ? inputValue : inputValue.replace(/([0-9.]+)([kmbtKMBT])/, function (_, num, unit) {
|
|
165
|
+
return (parseFloat(num) * _currencyUtils.currencyMultiplier[unit.toLowerCase()]).toString();
|
|
166
|
+
});
|
|
167
|
+
setCurrentValue(numericInput);
|
|
168
|
+
setUnformattedValue(numericInput);
|
|
169
|
+
if (onChange) onChange(numericInput);
|
|
170
|
+
}, [disableMacros, onChange]);
|
|
171
|
+
var handleClick = (0, _react.useCallback)(function (e) {
|
|
172
|
+
if (typeof onClick === "function") {
|
|
173
|
+
onClick(e);
|
|
174
|
+
}
|
|
175
|
+
}, [onClick]);
|
|
176
|
+
var handleFocus = (0, _react.useCallback)(function () {
|
|
177
|
+
setCurrentValue(unformattedValue);
|
|
178
|
+
setFocused(true);
|
|
179
|
+
}, [unformattedValue]);
|
|
180
|
+
var handleDoubleClick = (0, _react.useCallback)(function () {
|
|
181
|
+
if (inputRef.current) {
|
|
182
|
+
var _inputRef$current2;
|
|
183
|
+
(_inputRef$current2 = inputRef.current) === null || _inputRef$current2 === void 0 || _inputRef$current2.select();
|
|
184
|
+
}
|
|
185
|
+
}, [inputRef]);
|
|
186
|
+
var inputProps = (0, _react.useMemo)(function () {
|
|
187
|
+
return {
|
|
188
|
+
value: currentValue,
|
|
189
|
+
onBlur: handleBlur,
|
|
190
|
+
onKeyDown: handleKeyDown,
|
|
191
|
+
onChange: handleChange,
|
|
192
|
+
onClick: handleClick,
|
|
193
|
+
onDoubleClick: handleDoubleClick,
|
|
194
|
+
onFocus: handleFocus,
|
|
195
|
+
focused
|
|
196
|
+
};
|
|
197
|
+
}, [currentValue, handleBlur, handleKeyDown, handleChange, handleClick, handleDoubleClick, handleFocus, focused]);
|
|
139
198
|
return {
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
handleChange,
|
|
144
|
-
handleKeyDown,
|
|
145
|
-
handleBlur,
|
|
146
|
-
handleFocus,
|
|
147
|
-
onValueChange
|
|
199
|
+
inputProps,
|
|
200
|
+
setCurrentValue,
|
|
201
|
+
setPrevValue
|
|
148
202
|
};
|
|
149
203
|
};
|
|
150
204
|
//# sourceMappingURL=useInputNumber.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useInputNumber.js","names":["_react","require","_currencyUtils","_slicedToArray","arr","i","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","TypeError","o","minLen","_arrayLikeToArray","n","Object","prototype","toString","call","slice","constructor","name","Array","from","test","len","length","arr2","r","l","t","Symbol","iterator","e","u","a","f","next","done","push","value","return","isArray","useInputNumber","exports","_ref","ref","_ref$decimalSeparator","decimalSeparator","_ref$thousandSeparato","thousandSeparator","disableAbbreviation","disableMacros","decimalLength","onValueChange","onKeyDown","onBlur","onFocus","step","startValue","formatCurrency","_useState","useState","_useState2","formattedValue","setFormatted","_useState3","_useState4","rootValue","setRootValue","_useState5","_useState6","focused","setFocused","handleInputBlur","current","blur","handleSelect","select","handleChange","inputValue","target","isValidInput","startsWith","numericInput","replace","_","num","unit","parseFloat","currencyMultiplier","toLowerCase","regexString","RegExp","handleKeyDown","key","_step","String","preventDefault","updateValue","metaKey","ctrlKey","handleBlur","handleFocus","type","decimalPart","increasedValue","nonDecimalPart","replaceAll","includes","indexOf","toFixed","joinedValue","numberWithSeparator"],"sources":["../../../src/hooks/useInputNumber.tsx"],"sourcesContent":["import {\n useState,\n ChangeEventHandler,\n KeyboardEventHandler,\n FocusEventHandler,\n MutableRefObject,\n} from \"react\";\n\nimport type { InputProps } from \"../components\";\nimport {\n currencyMultiplier,\n formatCurrency,\n numberWithSeparator,\n} from \"../utils/currencyUtils\";\n\nexport type Separators = \".\" | \",\";\n\n// https://www.youtube.com/watch?v=2AilA-M6N5U\n// @TODO: Pitati foo za testove.\nexport interface InputNumberProps extends InputProps {\n decimalLength?: number;\n decimalSeparator?: Separators;\n disableAbbreviation?: boolean;\n disableMacros?: boolean;\n thousandSeparator?: Separators;\n onValueChange?: (value: string) => void;\n}\n\nexport const useInputNumber = (\n {\n decimalSeparator = \".\",\n thousandSeparator = \",\",\n disableAbbreviation,\n disableMacros,\n decimalLength,\n value,\n onValueChange,\n onKeyDown,\n onBlur,\n onFocus,\n step,\n }: InputNumberProps,\n ref: MutableRefObject<HTMLInputElement | null>\n) => {\n const startValue = disableAbbreviation\n ? value\n : formatCurrency(value as string, thousandSeparator);\n const [formattedValue, setFormatted] = useState(startValue);\n const [rootValue, setRootValue] = useState(value);\n const [focused, setFocused] = useState<boolean>(false);\n\n const handleInputBlur = () => {\n if (ref && ref.current) {\n ref.current.blur();\n }\n };\n\n const handleSelect = () => {\n if (ref && ref.current) {\n ref.current.select();\n }\n };\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = (e) => {\n const inputValue = e.target.value;\n let isValidInput = false;\n\n if (inputValue.startsWith(\"00\")) {\n return;\n }\n\n const numericInput = disableMacros\n ? inputValue\n : inputValue.replace(/([0-9.]+)([kmbtKMBT])/, (_, num, unit) => {\n return (\n parseFloat(num) * currencyMultiplier[unit.toLowerCase()]\n ).toString();\n });\n\n const regexString = `^(-?\\\\d{0,9}(?:[${thousandSeparator}]?\\\\d{0,3})*(?:\\\\${decimalSeparator}\\\\d{0,${decimalLength}})?)?$`;\n\n if (thousandSeparator === \",\") {\n isValidInput = new RegExp(regexString).test(numericInput);\n }\n\n if (thousandSeparator === \".\") {\n isValidInput = new RegExp(regexString).test(numericInput);\n }\n\n if (!isValidInput) {\n return;\n }\n\n setFormatted(numericInput);\n\n onValueChange && onValueChange(numericInput);\n };\n\n const handleKeyDown: KeyboardEventHandler<HTMLInputElement> = (e) => {\n const key = e.key;\n const _step = parseFloat(String(step));\n\n if (key === \"Escape\") {\n handleInputBlur();\n }\n\n if (key === \"ArrowUp\") {\n e.preventDefault();\n\n updateValue(\"increment\", _step);\n }\n\n if (key === \"ArrowDown\") {\n e.preventDefault();\n\n updateValue(\"decrement\", _step);\n }\n\n if ((e.metaKey || e.ctrlKey) && e.key === \"a\") {\n handleSelect();\n }\n\n if (decimalLength === 0 && e.key === decimalSeparator) {\n e.preventDefault();\n }\n\n onKeyDown && onKeyDown(e);\n };\n\n const handleBlur: FocusEventHandler<HTMLInputElement> = (e) => {\n if (disableAbbreviation) {\n setFormatted(formattedValue);\n } else {\n setFormatted(formatCurrency(formattedValue as string, thousandSeparator));\n }\n\n setRootValue(formattedValue);\n setFocused(false);\n\n onBlur && onBlur(e);\n };\n\n const handleFocus: FocusEventHandler<HTMLInputElement> = (e) => {\n setFormatted(rootValue);\n setFocused(true);\n\n onFocus && onFocus(e);\n };\n\n const updateValue = (type: \"increment\" | \"decrement\", step: number) => {\n const value = String(formattedValue);\n\n let decimalPart = \"\";\n let increasedValue = 0;\n let nonDecimalPart = value.replaceAll(thousandSeparator, \"\");\n\n if (!value) {\n return;\n }\n\n if (value.includes(decimalSeparator)) {\n nonDecimalPart = value\n .slice(0, value.indexOf(decimalSeparator))\n .replaceAll(thousandSeparator, \"\");\n }\n\n if (value.includes(decimalSeparator)) {\n decimalPart = value.slice(value.indexOf(decimalSeparator));\n }\n\n if (type === \"increment\") {\n increasedValue = parseFloat(nonDecimalPart) + step;\n } else {\n increasedValue = parseFloat(nonDecimalPart) - step;\n }\n\n if (value.includes(decimalSeparator)) {\n increasedValue = parseFloat(increasedValue.toFixed(decimalLength));\n }\n\n const joinedValue = numberWithSeparator(\n increasedValue,\n thousandSeparator,\n value.includes(thousandSeparator)\n );\n\n setFormatted(decimalPart ? joinedValue + decimalPart : joinedValue);\n };\n\n return {\n focused,\n formattedValue,\n rootValue,\n handleChange,\n handleKeyDown,\n handleBlur,\n handleFocus,\n onValueChange,\n } as const;\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useInputNumber.js","names":["_react","require","_utils","_currencyUtils","_slicedToArray","arr","i","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","TypeError","o","minLen","_arrayLikeToArray","n","Object","prototype","toString","call","slice","constructor","name","Array","from","test","len","length","arr2","r","l","t","Symbol","iterator","e","u","a","f","next","done","push","value","return","isArray","useInputNumber","exports","_ref","inputRef","_ref$decimalSeparator","decimalSeparator","_ref$thousandSeparato","thousandSeparator","disableAbbreviation","disableMacros","decimalLength","onChange","onSave","onEnterKeyPress","onClick","onCancel","allowEmptyValue","_ref$step","step","limit","_ref$validation","validation","validateNumberInput","_useState","useState","formatNumber","_useState2","currentValue","setCurrentValue","_useState3","_useState4","prevValue","setPrevValue","_useState5","_useState6","unformattedValue","setUnformattedValue","_useState7","_useState8","focused","setFocused","escapeRef","useRef","handleBlur","useCallback","current","target","trim","_value","updateValue","type","String","decimalPart","increasedValue","nonDecimalPart","replaceAll","includes","indexOf","parseFloat","toFixed","joinedValue","numberWithSeparator","handleKeyDown","key","blur","preventDefault","metaKey","ctrlKey","_inputRef$current","select","input","start","selectionStart","end","selectionEnd","newValue","substring","Boolean","handleChange","inputValue","numericInput","replace","_","num","unit","currencyMultiplier","toLowerCase","handleClick","handleFocus","handleDoubleClick","_inputRef$current2","inputProps","useMemo","onBlur","onKeyDown","onDoubleClick","onFocus"],"sources":["../../../src/hooks/useInputNumber.tsx"],"sourcesContent":["import {\n useState,\n MouseEvent,\n useRef,\n useCallback,\n RefObject,\n useMemo,\n} from \"react\";\n\nimport { validateNumberInput } from \"../utils\";\nimport {\n currencyMultiplier,\n formatNumber,\n numberWithSeparator,\n} from \"../utils/currencyUtils\";\n\nexport type Separators = \".\" | \",\";\n\nexport interface IInputNumber {\n decimalLength?: number;\n decimalSeparator?: Separators;\n disableAbbreviation?: boolean;\n disableMacros?: boolean;\n thousandSeparator?: Separators;\n onSave?: (e: Event) => void;\n value?: string | number;\n step?: number;\n limit?: number;\n onEnterKeyPress?: (val: string) => void;\n onChange?: (val: string) => void;\n onClick?: (event: MouseEvent<HTMLInputElement>) => void;\n allowEmptyValue?: boolean;\n onCancel?: (e: Event) => void;\n validation?: (\n value: string,\n disableMacros: boolean,\n decimalSeparator: string,\n decimalLength: number,\n limit?: number\n ) => boolean;\n}\n\nexport const useInputNumber = (\n {\n decimalSeparator = \".\",\n thousandSeparator = \",\",\n disableAbbreviation,\n disableMacros,\n decimalLength,\n value,\n onChange,\n onSave,\n onEnterKeyPress,\n onClick,\n onCancel,\n allowEmptyValue,\n step = 1,\n limit,\n validation = validateNumberInput,\n }: IInputNumber,\n inputRef: RefObject<HTMLInputElement | null>\n) => {\n const [currentValue, setCurrentValue] = useState(() =>\n disableAbbreviation\n ? value\n : formatNumber(value as string, thousandSeparator)\n );\n const [prevValue, setPrevValue] = useState(() =>\n disableAbbreviation\n ? value\n : formatNumber(value as string, thousandSeparator)\n );\n const [unformattedValue, setUnformattedValue] = useState(() => value);\n\n const [focused, setFocused] = useState(false);\n\n const escapeRef = useRef(false);\n\n const handleBlur = useCallback(\n (e) => {\n if (escapeRef.current) {\n setCurrentValue(prevValue);\n setUnformattedValue(prevValue);\n } else {\n if (e.target.value.trim().length > 0 && prevValue !== e.target.value) {\n const _value = disableAbbreviation\n ? currentValue\n : formatNumber(currentValue as string, thousandSeparator);\n setPrevValue(_value);\n setUnformattedValue(currentValue);\n setCurrentValue(_value);\n typeof onSave === \"function\" && onSave(e);\n } else {\n if (!allowEmptyValue) {\n setCurrentValue(prevValue);\n setUnformattedValue(prevValue);\n typeof onCancel === \"function\" && onCancel(e);\n } else {\n if (typeof onSave === \"function\" && prevValue !== e.target.value) {\n onSave(e);\n } else {\n typeof onCancel === \"function\" && onCancel(e);\n }\n }\n }\n }\n setFocused(false);\n },\n [\n allowEmptyValue,\n disableAbbreviation,\n onCancel,\n onSave,\n prevValue,\n thousandSeparator,\n currentValue,\n ]\n );\n\n const updateValue = useCallback(\n (type: \"increment\" | \"decrement\") => {\n const value = String(unformattedValue);\n\n let decimalPart = \"\";\n let increasedValue = 0;\n let nonDecimalPart = value.replaceAll(thousandSeparator, \"\");\n\n if (!value) {\n return;\n }\n\n if (value.includes(decimalSeparator)) {\n nonDecimalPart = value\n .slice(0, value.indexOf(decimalSeparator))\n .replaceAll(thousandSeparator, \"\");\n }\n\n if (value.includes(decimalSeparator)) {\n decimalPart = value.slice(value.indexOf(decimalSeparator));\n }\n\n if (type === \"increment\") {\n increasedValue = parseFloat(nonDecimalPart) + step;\n } else {\n increasedValue = parseFloat(nonDecimalPart) - step;\n }\n\n if (value.includes(decimalSeparator)) {\n increasedValue = parseFloat(increasedValue.toFixed(decimalLength));\n }\n\n const joinedValue = numberWithSeparator(\n increasedValue,\n thousandSeparator,\n value.includes(thousandSeparator)\n );\n\n setUnformattedValue(\n decimalPart ? joinedValue + decimalPart : joinedValue\n );\n setCurrentValue(decimalPart ? joinedValue + decimalPart : joinedValue);\n },\n [decimalLength, decimalSeparator, step, thousandSeparator, unformattedValue]\n );\n\n const handleKeyDown = useCallback(\n (e) => {\n if (e.key === \"Enter\") {\n e.target.blur();\n if (typeof onEnterKeyPress === \"function\")\n onEnterKeyPress(e.target.value);\n }\n if (e.key === \"ArrowLeft\") {\n return;\n }\n if (e.key === \"ArrowRight\") {\n return;\n }\n if (e.key === \"ArrowUp\") {\n e.preventDefault();\n updateValue(\"increment\");\n }\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n updateValue(\"decrement\");\n }\n if (e.key === \"Escape\") {\n escapeRef.current = true;\n e.target.blur();\n typeof onCancel === \"function\" && onCancel(e);\n escapeRef.current = false;\n }\n if (e.key === \"Backspace\") {\n return;\n }\n if ((e.metaKey || e.ctrlKey) && e.key === \"a\") {\n inputRef.current?.select();\n return;\n }\n if (e.key === \"Tab\") {\n return;\n }\n if ((e.metaKey || e.ctrlKey) && e.key === \"v\") {\n e.preventDefault();\n return;\n }\n const input = e.target;\n const currentValue = input.value;\n const start = input.selectionStart;\n const end = input.selectionEnd;\n const newValue =\n currentValue.substring(0, start) + e.key + currentValue.substring(end);\n if (\n !validation(\n newValue,\n Boolean(disableMacros),\n decimalSeparator,\n decimalLength ?? 0,\n limit\n )\n ) {\n e.preventDefault();\n return;\n }\n },\n [\n decimalLength,\n decimalSeparator,\n disableMacros,\n inputRef,\n limit,\n onCancel,\n onEnterKeyPress,\n updateValue,\n validation,\n ]\n );\n\n const handleChange = useCallback(\n (e) => {\n const inputValue = e.target.value;\n const numericInput = disableMacros\n ? inputValue\n : inputValue.replace(/([0-9.]+)([kmbtKMBT])/, (_, num, unit) => {\n return (\n parseFloat(num) * currencyMultiplier[unit.toLowerCase()]\n ).toString();\n });\n setCurrentValue(numericInput);\n setUnformattedValue(numericInput);\n if (onChange) onChange(numericInput);\n },\n [disableMacros, onChange]\n );\n\n const handleClick = useCallback(\n (e) => {\n if (typeof onClick === \"function\") {\n onClick(e);\n }\n },\n [onClick]\n );\n\n const handleFocus = useCallback(() => {\n setCurrentValue(unformattedValue);\n setFocused(true);\n }, [unformattedValue]);\n\n const handleDoubleClick = useCallback(() => {\n if (inputRef.current) {\n inputRef.current?.select();\n }\n }, [inputRef]);\n\n const inputProps = useMemo(() => {\n return {\n value: currentValue,\n onBlur: handleBlur,\n onKeyDown: handleKeyDown,\n onChange: handleChange,\n onClick: handleClick,\n onDoubleClick: handleDoubleClick,\n onFocus: handleFocus,\n focused,\n };\n }, [\n currentValue,\n handleBlur,\n handleKeyDown,\n handleChange,\n handleClick,\n handleDoubleClick,\n handleFocus,\n focused,\n ]);\n\n return {\n inputProps,\n setCurrentValue,\n setPrevValue,\n };\n};\n"],"mappings":"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"}
|
|
@@ -3,14 +3,14 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.numberWithSeparator = exports.
|
|
6
|
+
exports.numberWithSeparator = exports.formatNumber = exports.currencyMultiplier = void 0;
|
|
7
7
|
var currencyMultiplier = exports.currencyMultiplier = {
|
|
8
8
|
k: 1000,
|
|
9
9
|
m: 1000000,
|
|
10
10
|
b: 1000000000,
|
|
11
11
|
t: 1000000000000
|
|
12
12
|
};
|
|
13
|
-
var
|
|
13
|
+
var formatNumber = exports.formatNumber = function formatNumber(n) {
|
|
14
14
|
var thousandSeparator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ",";
|
|
15
15
|
var number = parseFloat(String(n).replaceAll(thousandSeparator, ""));
|
|
16
16
|
if (isNaN(number)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"currencyUtils.js","names":["currencyMultiplier","exports","k","m","b","t","
|
|
1
|
+
{"version":3,"file":"currencyUtils.js","names":["currencyMultiplier","exports","k","m","b","t","formatNumber","n","thousandSeparator","arguments","length","undefined","number","parseFloat","String","replaceAll","isNaN","isNegative","absoluteNumber","Math","abs","suffixes","scale","formattedNum","toFixed","result","endsWith","slice","numberWithSeparator","x","format","parts","toString","split","replace","join"],"sources":["../../../src/utils/currencyUtils.ts"],"sourcesContent":["import { Separators } from \"../hooks\";\n\nexport const currencyMultiplier = {\n k: 1_000,\n m: 1_000_000,\n b: 1_000_000_000,\n t: 1_000_000_000_000,\n};\n\nexport const formatNumber = (n: string, thousandSeparator = \",\") => {\n const number = parseFloat(String(n).replaceAll(thousandSeparator, \"\"));\n\n if (isNaN(number)) {\n return \"\";\n }\n\n const isNegative = number < 0;\n let absoluteNumber = Math.abs(number);\n\n const suffixes = [\"\", \"K\", \"M\", \"B\", \"T\"];\n let scale = 0;\n\n while (absoluteNumber >= 1000 && scale < suffixes.length - 1) {\n absoluteNumber /= 1000;\n scale++;\n }\n\n const formattedNum =\n scale === 0 ? absoluteNumber.toFixed(0) : absoluteNumber.toFixed(1);\n const result = formattedNum.endsWith(\".0\")\n ? formattedNum.slice(0, -2)\n : formattedNum;\n\n return isNegative\n ? `-${result}${suffixes[scale]}`\n : `${result}${suffixes[scale]}`;\n};\n\nexport const numberWithSeparator = (\n x: number | string,\n thousandSeparator: Separators,\n format = true\n) => {\n if (!format) {\n return x;\n }\n\n const parts = x.toString().split(\".\");\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousandSeparator);\n\n return parts.join(\".\");\n};\n"],"mappings":";;;;;;AAEO,IAAMA,kBAAkB,GAAAC,OAAA,CAAAD,kBAAA,GAAG;EAChCE,CAAC,EAAE,IAAK;EACRC,CAAC,EAAE,OAAS;EACZC,CAAC,EAAE,UAAa;EAChBC,CAAC,EAAE;AACL,CAAC;AAEM,IAAMC,YAAY,GAAAL,OAAA,CAAAK,YAAA,GAAG,SAAfA,YAAYA,CAAIC,CAAS,EAA8B;EAAA,IAA5BC,iBAAiB,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,GAAG;EAC7D,IAAMG,MAAM,GAAGC,UAAU,CAACC,MAAM,CAACP,CAAC,CAAC,CAACQ,UAAU,CAACP,iBAAiB,EAAE,EAAE,CAAC,CAAC;EAEtE,IAAIQ,KAAK,CAACJ,MAAM,CAAC,EAAE;IACjB,OAAO,EAAE;EACX;EAEA,IAAMK,UAAU,GAAGL,MAAM,GAAG,CAAC;EAC7B,IAAIM,cAAc,GAAGC,IAAI,CAACC,GAAG,CAACR,MAAM,CAAC;EAErC,IAAMS,QAAQ,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACzC,IAAIC,KAAK,GAAG,CAAC;EAEb,OAAOJ,cAAc,IAAI,IAAI,IAAII,KAAK,GAAGD,QAAQ,CAACX,MAAM,GAAG,CAAC,EAAE;IAC5DQ,cAAc,IAAI,IAAI;IACtBI,KAAK,EAAE;EACT;EAEA,IAAMC,YAAY,GAChBD,KAAK,KAAK,CAAC,GAAGJ,cAAc,CAACM,OAAO,CAAC,CAAC,CAAC,GAAGN,cAAc,CAACM,OAAO,CAAC,CAAC,CAAC;EACrE,IAAMC,MAAM,GAAGF,YAAY,CAACG,QAAQ,CAAC,IAAI,CAAC,GACtCH,YAAY,CAACI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GACzBJ,YAAY;EAEhB,OAAON,UAAU,GACZ,IAAGQ,MAAO,GAAEJ,QAAQ,CAACC,KAAK,CAAE,EAAC,GAC7B,GAAEG,MAAO,GAAEJ,QAAQ,CAACC,KAAK,CAAE,EAAC;AACnC,CAAC;AAEM,IAAMM,mBAAmB,GAAA3B,OAAA,CAAA2B,mBAAA,GAAG,SAAtBA,mBAAmBA,CAC9BC,CAAkB,EAClBrB,iBAA6B,EAE1B;EAAA,IADHsB,MAAM,GAAArB,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAI;EAEb,IAAI,CAACqB,MAAM,EAAE;IACX,OAAOD,CAAC;EACV;EAEA,IAAME,KAAK,GAAGF,CAAC,CAACG,QAAQ,CAAC,CAAC,CAACC,KAAK,CAAC,GAAG,CAAC;EACrCF,KAAK,CAAC,CAAC,CAAC,GAAGA,KAAK,CAAC,CAAC,CAAC,CAACG,OAAO,CAAC,uBAAuB,EAAE1B,iBAAiB,CAAC;EAEvE,OAAOuB,KAAK,CAACI,IAAI,CAAC,GAAG,CAAC;AACxB,CAAC"}
|
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
var _currencyUtils = require("./currencyUtils");
|
|
4
4
|
describe("format currency with thousandseparator set to ',' and decimalSeparator to '.'", function () {
|
|
5
5
|
it.each([["", ""], ["10", "10"], ["1000", "1K"], ["1000.00", "1K"], ["1200.50", "1.2K"], ["1,200.00", "1.2K"], ["2,240.00", "2.2K"], ["22,240.00", "22.2K"], ["50,000,000.00", "50M"], ["-50,000.00", "-50K"], ["-1,200", "-1.2K"], ["-90,000,000.00", "-90M"]])("should format currency", function (value, expected) {
|
|
6
|
-
expect((0, _currencyUtils.
|
|
6
|
+
expect((0, _currencyUtils.formatNumber)(value, ",")).toEqual(expected);
|
|
7
7
|
});
|
|
8
8
|
});
|
|
9
9
|
describe("format currency with thousandseparator set to '.' and decimalSeparator to ','", function () {
|
|
10
10
|
it.each([["", ""], ["10", "10"], ["1000", "1K"], ["1000,00", "1K"], ["1200,50", "1.2K"], ["1.200,00", "1.2K"], ["2.240,00", "2.2K"], ["22.240,00", "22.2K"], ["50.000.000,00", "50M"], ["-50.000,00", "-50K"], ["-1.200", "-1.2K"], ["-90.000.000,00", "-90M"]])("should format currency", function (value, expected) {
|
|
11
|
-
expect((0, _currencyUtils.
|
|
11
|
+
expect((0, _currencyUtils.formatNumber)(value, ".")).toEqual(expected);
|
|
12
12
|
});
|
|
13
13
|
});
|
|
14
14
|
describe("numberWithSeparator", function () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"currencyUtils.test.js","names":["_currencyUtils","require","describe","it","each","value","expected","expect","
|
|
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":"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"}
|
package/dist/cjs/utils/index.js
CHANGED
|
@@ -7,7 +7,7 @@ var _exportNames = {
|
|
|
7
7
|
useForkRef: true,
|
|
8
8
|
useResizeObserver: true,
|
|
9
9
|
decimalToHours: true,
|
|
10
|
-
|
|
10
|
+
formatNumber: true,
|
|
11
11
|
numberWithSeparator: true
|
|
12
12
|
};
|
|
13
13
|
Object.defineProperty(exports, "decimalToHours", {
|
|
@@ -16,10 +16,10 @@ Object.defineProperty(exports, "decimalToHours", {
|
|
|
16
16
|
return _timeUtils.decimalToHours;
|
|
17
17
|
}
|
|
18
18
|
});
|
|
19
|
-
Object.defineProperty(exports, "
|
|
19
|
+
Object.defineProperty(exports, "formatNumber", {
|
|
20
20
|
enumerable: true,
|
|
21
21
|
get: function get() {
|
|
22
|
-
return _currencyUtils.
|
|
22
|
+
return _currencyUtils.formatNumber;
|
|
23
23
|
}
|
|
24
24
|
});
|
|
25
25
|
Object.defineProperty(exports, "numberWithSeparator", {
|
|
@@ -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 { formatNumber, numberWithSeparator } 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;AAAoE,SAAAgB,uBAAAI,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA"}
|
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.validateTimeInput = exports.validateStopwatchTime = void 0;
|
|
6
|
+
exports.validateTimeInput = exports.validateStopwatchTime = exports.validateNumberInput = void 0;
|
|
7
|
+
var _currencyUtils = require("./currencyUtils");
|
|
7
8
|
var validateStopwatchTime = exports.validateStopwatchTime = function validateStopwatchTime(value) {
|
|
8
9
|
return /^([0-9]{0,2})?(((:([0-5][0-9])?)|(:[0-5]?))|(\.[0-9]{0,2})|(,[0-9]{0,2}))?$/g.test(value);
|
|
9
10
|
};
|
|
@@ -14,4 +15,21 @@ var validateTimeInput = exports.validateTimeInput = function validateTimeInput(v
|
|
|
14
15
|
return /^(([1-9][0-9]*|0)?(([:,.][0-5][0-9]?)|([:,.][0-5]?)|(\.[0-9]{1,2})|(,[0-9]{1,2}))?)$/.test(value);
|
|
15
16
|
}
|
|
16
17
|
};
|
|
18
|
+
var validateNumberInput = exports.validateNumberInput = function validateNumberInput(value, disableMacros, decimalSeparator, decimalLength, limit) {
|
|
19
|
+
if (value.startsWith("00")) {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
var numericInput = disableMacros ? value : value.replace(/([0-9.]+)([kmbtKMBT])/, function (_, num, unit) {
|
|
23
|
+
return (parseFloat(num) * _currencyUtils.currencyMultiplier[unit.toLowerCase()]).toString();
|
|
24
|
+
});
|
|
25
|
+
if (limit) {
|
|
26
|
+
var decimalIndex = numericInput.indexOf(decimalSeparator);
|
|
27
|
+
var integerPart = decimalIndex !== -1 ? numericInput.substring(0, decimalIndex) : numericInput;
|
|
28
|
+
if (integerPart.length > limit) {
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
var regexString = `^(-?\\d{0,9}(?:\\${decimalSeparator}\\d{0,${decimalLength}})?)?$`;
|
|
33
|
+
return new RegExp(regexString).test(numericInput);
|
|
34
|
+
};
|
|
17
35
|
//# sourceMappingURL=validation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","names":["validateStopwatchTime","exports","value","test","validateTimeInput","withLeadingZero"],"sources":["../../../src/utils/validation.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"validation.js","names":["_currencyUtils","require","validateStopwatchTime","exports","value","test","validateTimeInput","withLeadingZero","validateNumberInput","disableMacros","decimalSeparator","decimalLength","limit","startsWith","numericInput","replace","_","num","unit","parseFloat","currencyMultiplier","toLowerCase","toString","decimalIndex","indexOf","integerPart","substring","length","regexString","RegExp"],"sources":["../../../src/utils/validation.ts"],"sourcesContent":["import { currencyMultiplier } from \"./currencyUtils\";\n\nexport const validateStopwatchTime = (value: string) => {\n return /^([0-9]{0,2})?(((:([0-5][0-9])?)|(:[0-5]?))|(\\.[0-9]{0,2})|(,[0-9]{0,2}))?$/g.test(\n value\n );\n};\n\nexport const validateTimeInput = (value: string, withLeadingZero: boolean) => {\n if (withLeadingZero) {\n return /^(([0-9][0-9]?|[1-9][0-9]{2,8})?(([:,.][0-5][0-9]?)|([:,.][0-5]?)|(\\.[0-9]{1,2})|(,[0-9]{1,2}))?)$/.test(\n value\n );\n } else {\n return /^(([1-9][0-9]*|0)?(([:,.][0-5][0-9]?)|([:,.][0-5]?)|(\\.[0-9]{1,2})|(,[0-9]{1,2}))?)$/.test(\n value\n );\n }\n};\n\nexport const validateNumberInput = (\n value: string,\n disableMacros: boolean,\n decimalSeparator: string,\n decimalLength: number,\n limit?: number\n) => {\n if (value.startsWith(\"00\")) {\n return false;\n }\n\n const numericInput = disableMacros\n ? value\n : value.replace(/([0-9.]+)([kmbtKMBT])/, (_, num, unit) => {\n return (\n parseFloat(num) * currencyMultiplier[unit.toLowerCase()]\n ).toString();\n });\n\n if (limit) {\n const decimalIndex = numericInput.indexOf(decimalSeparator);\n const integerPart =\n decimalIndex !== -1\n ? numericInput.substring(0, decimalIndex)\n : numericInput;\n if (integerPart.length > limit) {\n return false;\n }\n }\n\n const regexString = `^(-?\\\\d{0,9}(?:\\\\${decimalSeparator}\\\\d{0,${decimalLength}})?)?$`;\n\n return new RegExp(regexString).test(numericInput);\n};\n"],"mappings":";;;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AAEO,IAAMC,qBAAqB,GAAAC,OAAA,CAAAD,qBAAA,GAAG,SAAxBA,qBAAqBA,CAAIE,KAAa,EAAK;EACtD,OAAO,8EAA8E,CAACC,IAAI,CACxFD,KACF,CAAC;AACH,CAAC;AAEM,IAAME,iBAAiB,GAAAH,OAAA,CAAAG,iBAAA,GAAG,SAApBA,iBAAiBA,CAAIF,KAAa,EAAEG,eAAwB,EAAK;EAC5E,IAAIA,eAAe,EAAE;IACnB,OAAO,oGAAoG,CAACF,IAAI,CAC9GD,KACF,CAAC;EACH,CAAC,MAAM;IACL,OAAO,sFAAsF,CAACC,IAAI,CAChGD,KACF,CAAC;EACH;AACF,CAAC;AAEM,IAAMI,mBAAmB,GAAAL,OAAA,CAAAK,mBAAA,GAAG,SAAtBA,mBAAmBA,CAC9BJ,KAAa,EACbK,aAAsB,EACtBC,gBAAwB,EACxBC,aAAqB,EACrBC,KAAc,EACX;EACH,IAAIR,KAAK,CAACS,UAAU,CAAC,IAAI,CAAC,EAAE;IAC1B,OAAO,KAAK;EACd;EAEA,IAAMC,YAAY,GAAGL,aAAa,GAC9BL,KAAK,GACLA,KAAK,CAACW,OAAO,CAAC,uBAAuB,EAAE,UAACC,CAAC,EAAEC,GAAG,EAAEC,IAAI,EAAK;IACvD,OAAO,CACLC,UAAU,CAACF,GAAG,CAAC,GAAGG,iCAAkB,CAACF,IAAI,CAACG,WAAW,CAAC,CAAC,CAAC,EACxDC,QAAQ,CAAC,CAAC;EACd,CAAC,CAAC;EAEN,IAAIV,KAAK,EAAE;IACT,IAAMW,YAAY,GAAGT,YAAY,CAACU,OAAO,CAACd,gBAAgB,CAAC;IAC3D,IAAMe,WAAW,GACfF,YAAY,KAAK,CAAC,CAAC,GACfT,YAAY,CAACY,SAAS,CAAC,CAAC,EAAEH,YAAY,CAAC,GACvCT,YAAY;IAClB,IAAIW,WAAW,CAACE,MAAM,GAAGf,KAAK,EAAE;MAC9B,OAAO,KAAK;IACd;EACF;EAEA,IAAMgB,WAAW,GAAI,oBAAmBlB,gBAAiB,SAAQC,aAAc,QAAO;EAEtF,OAAO,IAAIkB,MAAM,CAACD,WAAW,CAAC,CAACvB,IAAI,CAACS,YAAY,CAAC;AACnD,CAAC"}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import
|
|
3
|
-
|
|
2
|
+
import { IInputNumber } from "../../hooks";
|
|
3
|
+
import { EditableContentInterface } from "../EditableContent";
|
|
4
|
+
export interface EditableCurrencyProps extends EditableContentInterface, IInputNumber {
|
|
5
|
+
className?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare const EditableCurrency: React.ForwardRefExoticComponent<EditableCurrencyProps & React.RefAttributes<HTMLDivElement>>;
|
|
4
8
|
//# sourceMappingURL=EditableCurrency.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditableCurrency.d.ts","sourceRoot":"","sources":["../../../../src/components/EditableCurrency/EditableCurrency.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
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,YAAY;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,gBAAgB,8FAyF5B,CAAC"}
|