@activecollab/components 2.0.105 → 2.0.107
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 +15 -12
- package/dist/cjs/components/EditableCurrency/EditableCurrency.js.map +1 -1
- package/dist/cjs/components/Input/InputNumber.js +13 -10
- package/dist/cjs/components/Input/InputNumber.js.map +1 -1
- package/dist/cjs/hooks/useInputNumber.js +66 -45
- package/dist/cjs/hooks/useInputNumber.js.map +1 -1
- package/dist/cjs/utils/currencyUtils.js +4 -0
- package/dist/cjs/utils/currencyUtils.js.map +1 -1
- package/dist/esm/components/EditableCurrency/EditableCurrency.d.ts.map +1 -1
- package/dist/esm/components/EditableCurrency/EditableCurrency.js +14 -13
- 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 +12 -11
- package/dist/esm/components/Input/InputNumber.js.map +1 -1
- package/dist/esm/hooks/useInputNumber.d.ts +12 -14
- package/dist/esm/hooks/useInputNumber.d.ts.map +1 -1
- package/dist/esm/hooks/useInputNumber.js +59 -43
- package/dist/esm/hooks/useInputNumber.js.map +1 -1
- package/dist/esm/utils/currencyUtils.d.ts.map +1 -1
- package/dist/esm/utils/currencyUtils.js +5 -1
- package/dist/esm/utils/currencyUtils.js.map +1 -1
- package/dist/index.js +98 -67
- 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 +3 -3
package/dist/index.js
CHANGED
|
@@ -622,6 +622,10 @@
|
|
|
622
622
|
scale++;
|
|
623
623
|
}
|
|
624
624
|
var formattedNum = scale === 0 ? fixedDecimalSpaces(absoluteNumber, decimalSpaces) : parseFloat(absoluteNumber.toFixed(1));
|
|
625
|
+
if (formattedNum === 1000 && scale > 0 && scale < 4) {
|
|
626
|
+
formattedNum = 1;
|
|
627
|
+
scale++;
|
|
628
|
+
}
|
|
625
629
|
var result = numberWithSeparator(trimDecimals ? formattedNum : formattedNum.toFixed(decimalSpaces), thousandSeparator, decimalSeperator);
|
|
626
630
|
return isNegative ? "-".concat(result).concat(suffixes[scale]) : "".concat(result).concat(suffixes[scale]);
|
|
627
631
|
};
|
|
@@ -12016,7 +12020,13 @@
|
|
|
12016
12020
|
trimDecimals = _ref$trimDecimals === void 0 ? true : _ref$trimDecimals,
|
|
12017
12021
|
limit = _ref.limit,
|
|
12018
12022
|
_ref$validation = _ref.validation,
|
|
12019
|
-
validation = _ref$validation === void 0 ? validateNumberInput : _ref$validation
|
|
12023
|
+
validation = _ref$validation === void 0 ? validateNumberInput : _ref$validation,
|
|
12024
|
+
min = _ref.min,
|
|
12025
|
+
max = _ref.max;
|
|
12026
|
+
var isMaxValid = max === undefined || min === undefined || Number(max) >= Number(min);
|
|
12027
|
+
if (!isMaxValid) {
|
|
12028
|
+
console.warn("Warning: The maximum value is set to be lower than the minimum value. The maximum value will be ignored.");
|
|
12029
|
+
}
|
|
12020
12030
|
var _useState = React.useState(function () {
|
|
12021
12031
|
return disableAbbreviation ? value : formatNumber(value, thousandSeparator, decimalSeparator, trimDecimals, decimalLength);
|
|
12022
12032
|
}),
|
|
@@ -12035,34 +12045,43 @@
|
|
|
12035
12045
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
12036
12046
|
unformattedValue = _useState6[0],
|
|
12037
12047
|
setUnformattedValue = _useState6[1];
|
|
12048
|
+
var _useState7 = React.useState(function () {
|
|
12049
|
+
return value;
|
|
12050
|
+
}),
|
|
12051
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
12052
|
+
unformattedPrevValue = _useState8[0],
|
|
12053
|
+
setUnformattedPrevValue = _useState8[1];
|
|
12038
12054
|
React.useEffect(function () {
|
|
12039
12055
|
if (value !== prevValue) {
|
|
12040
12056
|
setCurrentValue(disableAbbreviation ? value : formatNumber(value, thousandSeparator, decimalSeparator, trimDecimals, decimalLength));
|
|
12041
12057
|
setPrevValue(disableAbbreviation ? value : formatNumber(value, thousandSeparator, decimalSeparator, trimDecimals, decimalLength));
|
|
12042
12058
|
setUnformattedValue(value);
|
|
12059
|
+
setUnformattedPrevValue(value);
|
|
12043
12060
|
}
|
|
12044
12061
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
12045
12062
|
}, [disableAbbreviation, thousandSeparator, decimalSeparator, decimalLength, trimDecimals, value]);
|
|
12046
|
-
var
|
|
12047
|
-
|
|
12048
|
-
focused =
|
|
12049
|
-
setFocused =
|
|
12063
|
+
var _useState9 = React.useState(false),
|
|
12064
|
+
_useState10 = _slicedToArray(_useState9, 2),
|
|
12065
|
+
focused = _useState10[0],
|
|
12066
|
+
setFocused = _useState10[1];
|
|
12050
12067
|
var escapeRef = React.useRef(false);
|
|
12051
12068
|
var handleBlur = React.useCallback(function (e) {
|
|
12052
12069
|
if (escapeRef.current) {
|
|
12053
12070
|
setCurrentValue(prevValue);
|
|
12054
|
-
setUnformattedValue(
|
|
12071
|
+
setUnformattedValue(unformattedPrevValue);
|
|
12072
|
+
if (onChange) onChange(String(unformattedPrevValue));
|
|
12055
12073
|
} else {
|
|
12056
12074
|
if (e.target.value.trim().length > 0 && prevValue !== e.target.value) {
|
|
12057
12075
|
var _value = disableAbbreviation ? currentValue : formatNumber(currentValue, thousandSeparator, decimalSeparator, trimDecimals, decimalLength);
|
|
12058
12076
|
setPrevValue(_value);
|
|
12077
|
+
setUnformattedPrevValue(currentValue);
|
|
12059
12078
|
setUnformattedValue(currentValue);
|
|
12060
12079
|
setCurrentValue(_value);
|
|
12061
12080
|
typeof onSave === "function" && onSave(e);
|
|
12062
12081
|
} else {
|
|
12063
12082
|
if (!allowEmptyValue) {
|
|
12064
12083
|
setCurrentValue(prevValue);
|
|
12065
|
-
setUnformattedValue(
|
|
12084
|
+
setUnformattedValue(unformattedPrevValue);
|
|
12066
12085
|
typeof onCancel === "function" && onCancel(e);
|
|
12067
12086
|
} else {
|
|
12068
12087
|
if (typeof onSave === "function" && prevValue !== e.target.value) {
|
|
@@ -12074,33 +12093,34 @@
|
|
|
12074
12093
|
}
|
|
12075
12094
|
}
|
|
12076
12095
|
setFocused(false);
|
|
12077
|
-
}, [prevValue, disableAbbreviation, currentValue, thousandSeparator, decimalSeparator,
|
|
12096
|
+
}, [prevValue, unformattedPrevValue, onChange, disableAbbreviation, currentValue, thousandSeparator, decimalSeparator, trimDecimals, decimalLength, onSave, allowEmptyValue, onCancel]);
|
|
12078
12097
|
var updateValue = React.useCallback(function (type) {
|
|
12079
|
-
var
|
|
12080
|
-
|
|
12081
|
-
var
|
|
12082
|
-
|
|
12083
|
-
|
|
12084
|
-
|
|
12098
|
+
var numericValue = parseFloat(String(unformattedValue));
|
|
12099
|
+
if (isNaN(numericValue)) return;
|
|
12100
|
+
var newValue = numericValue;
|
|
12101
|
+
if (type === "increment") {
|
|
12102
|
+
newValue += step;
|
|
12103
|
+
} else if (type === "decrement") {
|
|
12104
|
+
newValue -= step;
|
|
12085
12105
|
}
|
|
12086
|
-
if (
|
|
12087
|
-
|
|
12106
|
+
if (decimalLength !== undefined) {
|
|
12107
|
+
newValue = parseFloat(newValue.toFixed(decimalLength));
|
|
12108
|
+
} else {
|
|
12109
|
+
newValue = parseFloat(newValue.toFixed(2));
|
|
12088
12110
|
}
|
|
12089
|
-
if (
|
|
12090
|
-
|
|
12111
|
+
if (min !== undefined && newValue < Number(min)) {
|
|
12112
|
+
newValue = Number(min);
|
|
12091
12113
|
}
|
|
12092
|
-
if (
|
|
12093
|
-
|
|
12094
|
-
} else {
|
|
12095
|
-
increasedValue = parseFloat(nonDecimalPart) - step;
|
|
12114
|
+
if (max !== undefined && newValue > Number(max) && isMaxValid) {
|
|
12115
|
+
newValue = Number(max);
|
|
12096
12116
|
}
|
|
12097
|
-
if (
|
|
12098
|
-
|
|
12117
|
+
if (decimalLength !== undefined && decimalLength === 0) {
|
|
12118
|
+
newValue = Math.round(newValue);
|
|
12099
12119
|
}
|
|
12100
|
-
|
|
12101
|
-
|
|
12102
|
-
|
|
12103
|
-
}, [decimalLength,
|
|
12120
|
+
setUnformattedValue(newValue);
|
|
12121
|
+
setCurrentValue(newValue);
|
|
12122
|
+
if (onChange) onChange(String(newValue));
|
|
12123
|
+
}, [unformattedValue, decimalLength, min, max, isMaxValid, onChange, step]);
|
|
12104
12124
|
var handleKeyDown = React.useCallback(function (e) {
|
|
12105
12125
|
if (e.key === "Enter") {
|
|
12106
12126
|
e.target.blur();
|
|
@@ -12141,6 +12161,18 @@
|
|
|
12141
12161
|
e.preventDefault();
|
|
12142
12162
|
return;
|
|
12143
12163
|
}
|
|
12164
|
+
|
|
12165
|
+
// Disallow "-" if min is 0 or greater
|
|
12166
|
+
if (e.key === "-" && (min === undefined || Number(min) >= 0)) {
|
|
12167
|
+
e.preventDefault();
|
|
12168
|
+
return;
|
|
12169
|
+
}
|
|
12170
|
+
|
|
12171
|
+
// Disallow decimal separator if decimalLength is 0
|
|
12172
|
+
if (e.key === decimalSeparator && decimalLength === 0) {
|
|
12173
|
+
e.preventDefault();
|
|
12174
|
+
return;
|
|
12175
|
+
}
|
|
12144
12176
|
var input = e.target;
|
|
12145
12177
|
var currentValue = input.value;
|
|
12146
12178
|
var start = input.selectionStart;
|
|
@@ -12150,7 +12182,7 @@
|
|
|
12150
12182
|
e.preventDefault();
|
|
12151
12183
|
return;
|
|
12152
12184
|
}
|
|
12153
|
-
}, [decimalLength, decimalSeparator, disableMacros, inputRef, limit, onCancel, onEnterKeyPress, updateValue, validation]);
|
|
12185
|
+
}, [decimalLength, decimalSeparator, disableMacros, inputRef, limit, min, onCancel, onEnterKeyPress, updateValue, validation]);
|
|
12154
12186
|
var handleChange = React.useCallback(function (e) {
|
|
12155
12187
|
var inputValue = e.target.value;
|
|
12156
12188
|
var numericInput = disableMacros ? inputValue : inputValue.replace(/([0-9.]+)([kmbtKMBT])/, function (_, num, unit) {
|
|
@@ -12175,23 +12207,16 @@
|
|
|
12175
12207
|
(_inputRef$current2 = inputRef.current) === null || _inputRef$current2 === void 0 || _inputRef$current2.select();
|
|
12176
12208
|
}
|
|
12177
12209
|
}, [inputRef]);
|
|
12178
|
-
var inputProps = React.useMemo(function () {
|
|
12179
|
-
return {
|
|
12180
|
-
value: currentValue,
|
|
12181
|
-
onBlur: handleBlur,
|
|
12182
|
-
onKeyDown: handleKeyDown,
|
|
12183
|
-
onChange: handleChange,
|
|
12184
|
-
onClick: handleClick,
|
|
12185
|
-
onDoubleClick: handleDoubleClick,
|
|
12186
|
-
onFocus: handleFocus,
|
|
12187
|
-
focused,
|
|
12188
|
-
unformattedValue
|
|
12189
|
-
};
|
|
12190
|
-
}, [currentValue, handleBlur, handleKeyDown, handleChange, handleClick, handleDoubleClick, handleFocus, focused, unformattedValue]);
|
|
12191
12210
|
return {
|
|
12192
|
-
|
|
12193
|
-
|
|
12194
|
-
|
|
12211
|
+
value: currentValue,
|
|
12212
|
+
onBlur: handleBlur,
|
|
12213
|
+
onKeyDown: handleKeyDown,
|
|
12214
|
+
onChange: handleChange,
|
|
12215
|
+
onClick: handleClick,
|
|
12216
|
+
onDoubleClick: handleDoubleClick,
|
|
12217
|
+
onFocus: handleFocus,
|
|
12218
|
+
focused,
|
|
12219
|
+
unformattedValue
|
|
12195
12220
|
};
|
|
12196
12221
|
};
|
|
12197
12222
|
|
|
@@ -13633,7 +13658,7 @@
|
|
|
13633
13658
|
});
|
|
13634
13659
|
InputHours.displayName = "InputHours";
|
|
13635
13660
|
|
|
13636
|
-
var _excluded$L = ["decimalLength", "decimalSeparator", "disableAbbreviation", "disabled", "disableMacros", "invalid", "step", "thousandSeparator", "value", "onCancel", "onSave", "onEnterKeyPress", "allowEmptyValue", "onChange", "onClick", "limit", "placeholder", "trimDecimals"];
|
|
13661
|
+
var _excluded$L = ["decimalLength", "decimalSeparator", "disableAbbreviation", "disabled", "disableMacros", "invalid", "step", "thousandSeparator", "value", "onCancel", "onSave", "onEnterKeyPress", "allowEmptyValue", "onChange", "onClick", "limit", "placeholder", "trimDecimals", "min", "max"];
|
|
13637
13662
|
var InputNumber = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
13638
13663
|
var _ref$decimalLength = _ref.decimalLength,
|
|
13639
13664
|
decimalLength = _ref$decimalLength === void 0 ? 2 : _ref$decimalLength,
|
|
@@ -13660,6 +13685,8 @@
|
|
|
13660
13685
|
placeholder = _ref.placeholder,
|
|
13661
13686
|
_ref$trimDecimals = _ref.trimDecimals,
|
|
13662
13687
|
trimDecimals = _ref$trimDecimals === void 0 ? true : _ref$trimDecimals,
|
|
13688
|
+
min = _ref.min,
|
|
13689
|
+
max = _ref.max,
|
|
13663
13690
|
rest = _objectWithoutProperties(_ref, _excluded$L);
|
|
13664
13691
|
var inputRef = React.useRef(null);
|
|
13665
13692
|
var handleRef = useForkRef(ref, inputRef);
|
|
@@ -13678,16 +13705,17 @@
|
|
|
13678
13705
|
onSave,
|
|
13679
13706
|
allowEmptyValue,
|
|
13680
13707
|
limit,
|
|
13681
|
-
trimDecimals
|
|
13708
|
+
trimDecimals,
|
|
13709
|
+
min,
|
|
13710
|
+
max
|
|
13682
13711
|
}, inputRef),
|
|
13683
|
-
|
|
13684
|
-
|
|
13685
|
-
|
|
13686
|
-
|
|
13687
|
-
|
|
13688
|
-
|
|
13689
|
-
onDoubleClick =
|
|
13690
|
-
onFocus = inputProps.onFocus;
|
|
13712
|
+
value = _useInputNumber.value,
|
|
13713
|
+
onBlur = _useInputNumber.onBlur,
|
|
13714
|
+
onKeyDown = _useInputNumber.onKeyDown,
|
|
13715
|
+
onChange = _useInputNumber.onChange,
|
|
13716
|
+
onClick = _useInputNumber.onClick,
|
|
13717
|
+
onFocus = _useInputNumber.onFocus,
|
|
13718
|
+
onDoubleClick = _useInputNumber.onDoubleClick;
|
|
13691
13719
|
return /*#__PURE__*/React__default["default"].createElement(Input, _extends({}, rest, {
|
|
13692
13720
|
ref: handleRef,
|
|
13693
13721
|
placeholder: placeholder,
|
|
@@ -17895,7 +17923,7 @@
|
|
|
17895
17923
|
});
|
|
17896
17924
|
EditableHours.displayName = "EditableHours";
|
|
17897
17925
|
|
|
17898
|
-
var _excluded$c = ["decimalLength", "decimalSeparator", "disableAbbreviation", "disabled", "disableMacros", "step", "thousandSeparator", "value", "onSave", "onCancel", "className", "allowEmptyValue", "onEnterKeyPress", "onClick", "onChange", "trimDecimals"];
|
|
17926
|
+
var _excluded$c = ["decimalLength", "decimalSeparator", "disableAbbreviation", "disabled", "disableMacros", "step", "thousandSeparator", "value", "onSave", "onCancel", "className", "allowEmptyValue", "onEnterKeyPress", "onClick", "onChange", "trimDecimals", "min", "max"];
|
|
17899
17927
|
var EditableCurrency = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, ref) {
|
|
17900
17928
|
var _ref$decimalLength = _ref.decimalLength,
|
|
17901
17929
|
decimalLength = _ref$decimalLength === void 0 ? 2 : _ref$decimalLength,
|
|
@@ -17920,6 +17948,8 @@
|
|
|
17920
17948
|
externalOnChange = _ref.onChange,
|
|
17921
17949
|
_ref$trimDecimals = _ref.trimDecimals,
|
|
17922
17950
|
trimDecimals = _ref$trimDecimals === void 0 ? true : _ref$trimDecimals,
|
|
17951
|
+
min = _ref.min,
|
|
17952
|
+
max = _ref.max,
|
|
17923
17953
|
rest = _objectWithoutProperties(_ref, _excluded$c);
|
|
17924
17954
|
var inputRef = React.useRef(null);
|
|
17925
17955
|
var handleRef = useForkRef(ref, inputRef);
|
|
@@ -17937,18 +17967,19 @@
|
|
|
17937
17967
|
onChange: externalOnChange,
|
|
17938
17968
|
onEnterKeyPress: externalEnterKeyPress,
|
|
17939
17969
|
onClick: externalOnClick,
|
|
17940
|
-
trimDecimals
|
|
17970
|
+
trimDecimals,
|
|
17971
|
+
min,
|
|
17972
|
+
max
|
|
17941
17973
|
}, inputRef),
|
|
17942
|
-
|
|
17943
|
-
|
|
17944
|
-
|
|
17945
|
-
|
|
17946
|
-
|
|
17947
|
-
|
|
17948
|
-
|
|
17949
|
-
|
|
17950
|
-
|
|
17951
|
-
unformattedValue = inputProps.unformattedValue;
|
|
17974
|
+
value = _useInputNumber.value,
|
|
17975
|
+
onBlur = _useInputNumber.onBlur,
|
|
17976
|
+
onKeyDown = _useInputNumber.onKeyDown,
|
|
17977
|
+
onChange = _useInputNumber.onChange,
|
|
17978
|
+
onClick = _useInputNumber.onClick,
|
|
17979
|
+
onDoubleClick = _useInputNumber.onDoubleClick,
|
|
17980
|
+
onFocus = _useInputNumber.onFocus,
|
|
17981
|
+
focused = _useInputNumber.focused,
|
|
17982
|
+
unformattedValue = _useInputNumber.unformattedValue;
|
|
17952
17983
|
var formattedValue = React.useMemo(function () {
|
|
17953
17984
|
return focused ? value : numberWithSeparator(value !== null && value !== void 0 ? value : "", thousandSeparator, decimalSeparator);
|
|
17954
17985
|
}, [focused, value, thousandSeparator, decimalSeparator]);
|