@activecollab/components 2.0.114 → 2.0.115
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/hooks/useInputNumber.js +2 -2
- package/dist/cjs/hooks/useInputNumber.js.map +1 -1
- package/dist/esm/hooks/useInputNumber.js +2 -2
- package/dist/esm/hooks/useInputNumber.js.map +1 -1
- package/dist/index.js +2 -2
- 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
|
@@ -70,8 +70,8 @@ var useInputNumber = exports.useInputNumber = function useInputNumber(_ref, inpu
|
|
|
70
70
|
if (value !== prevValue) {
|
|
71
71
|
setCurrentValue((0, _currencyUtils.formatNumber)(value, thousandSeparator, decimalSeparator, trimDecimals, decimalLength, disableAbbreviation ? "long" : "short"));
|
|
72
72
|
setPrevValue((0, _currencyUtils.formatNumber)(value, thousandSeparator, decimalSeparator, trimDecimals, decimalLength, disableAbbreviation ? "long" : "short"));
|
|
73
|
-
setUnformattedValue((0, _currencyUtils.formatNumber)(value, "", decimalSeparator,
|
|
74
|
-
setUnformattedPrevValue((0, _currencyUtils.formatNumber)(value, "", decimalSeparator,
|
|
73
|
+
setUnformattedValue((0, _currencyUtils.formatNumber)(value, "", decimalSeparator, trimDecimals, decimalLength, "long"));
|
|
74
|
+
setUnformattedPrevValue((0, _currencyUtils.formatNumber)(value, "", decimalSeparator, trimDecimals, decimalLength, "long"));
|
|
75
75
|
}
|
|
76
76
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
77
77
|
}, [disableAbbreviation, thousandSeparator, decimalSeparator, decimalLength, trimDecimals, value]);
|
|
@@ -1 +1 @@
|
|
|
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","_ref$value","onChange","onSave","onEnterKeyPress","onClick","onCancel","allowEmptyValue","_ref$step","step","_ref$trimDecimals","trimDecimals","limit","_ref$validation","validation","validateNumberInput","min","max","isMaxValid","undefined","Number","console","warn","_useState","useState","formatNumber","_useState2","currentValue","setCurrentValue","_useState3","_useState4","prevValue","setPrevValue","_useState5","_useState6","unformattedValue","setUnformattedValue","_useState7","_useState8","unformattedPrevValue","setUnformattedPrevValue","useEffect","_useState9","_useState10","focused","setFocused","escapeRef","useRef","handleBlur","useCallback","current","String","target","trim","_value","updateValue","type","preformattedValue","replace","numericValue","parseFloat","isNaN","newValue","toFixed","Math","round","updatedValue","includes","handleKeyDown","key","blur","preventDefault","metaKey","ctrlKey","_inputRef$current","select","input","start","selectionStart","end","selectionEnd","substring","Boolean","handleChange","inputValue","numericInput","_","num","unit","currencyMultiplier","toLowerCase","handleClick","handleFocus","handleDoubleClick","_inputRef$current2","onBlur","onKeyDown","onDoubleClick","onFocus"],"sources":["../../../src/hooks/useInputNumber.tsx"],"sourcesContent":["import {\n useState,\n MouseEvent,\n useRef,\n useCallback,\n RefObject,\n useEffect,\n} from \"react\";\n\nimport { validateNumberInput } from \"../utils\";\nimport { currencyMultiplier, formatNumber } 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 trimDecimals?: boolean;\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 min?: string | number;\n max?: string | number;\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 trimDecimals = true,\n limit,\n validation = validateNumberInput,\n min,\n max,\n }: IInputNumber,\n inputRef: RefObject<HTMLInputElement | null>\n) => {\n const isMaxValid =\n max === undefined || min === undefined || Number(max) >= Number(min);\n\n if (!isMaxValid) {\n console.warn(\n \"Warning: The maximum value is set to be lower than the minimum value. The maximum value will be ignored.\"\n );\n }\n\n const [currentValue, setCurrentValue] = useState(() =>\n formatNumber(\n value as string,\n thousandSeparator,\n decimalSeparator,\n trimDecimals,\n decimalLength,\n disableAbbreviation ? \"long\" : \"short\"\n )\n );\n const [prevValue, setPrevValue] = useState(() =>\n formatNumber(\n value as string,\n thousandSeparator,\n decimalSeparator,\n trimDecimals,\n decimalLength,\n disableAbbreviation ? \"long\" : \"short\"\n )\n );\n const [unformattedValue, setUnformattedValue] = useState(() =>\n formatNumber(\n value as string,\n \"\",\n decimalSeparator,\n false,\n decimalLength,\n \"long\"\n )\n );\n const [unformattedPrevValue, setUnformattedPrevValue] = useState(() =>\n formatNumber(\n value as string,\n \"\",\n decimalSeparator,\n false,\n decimalLength,\n \"long\"\n )\n );\n\n useEffect(() => {\n if (value !== prevValue) {\n setCurrentValue(\n formatNumber(\n value as string,\n thousandSeparator,\n decimalSeparator,\n trimDecimals,\n decimalLength,\n disableAbbreviation ? \"long\" : \"short\"\n )\n );\n setPrevValue(\n formatNumber(\n value as string,\n thousandSeparator,\n decimalSeparator,\n trimDecimals,\n decimalLength,\n disableAbbreviation ? \"long\" : \"short\"\n )\n );\n setUnformattedValue(\n formatNumber(\n value as string,\n \"\",\n decimalSeparator,\n false,\n decimalLength,\n \"long\"\n )\n );\n setUnformattedPrevValue(\n formatNumber(\n value as string,\n \"\",\n decimalSeparator,\n false,\n decimalLength,\n \"long\"\n )\n );\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n disableAbbreviation,\n thousandSeparator,\n decimalSeparator,\n decimalLength,\n trimDecimals,\n value,\n ]);\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(unformattedPrevValue);\n if (onChange) onChange(String(unformattedPrevValue));\n } else {\n if (e.target.value.trim().length > 0 && prevValue !== e.target.value) {\n const _value = formatNumber(\n currentValue as string,\n thousandSeparator,\n decimalSeparator,\n trimDecimals,\n decimalLength,\n disableAbbreviation ? \"long\" : \"short\"\n );\n setPrevValue(_value);\n setUnformattedPrevValue(currentValue as string);\n setUnformattedValue(currentValue as string);\n setCurrentValue(_value);\n typeof onSave === \"function\" && onSave(e);\n } else {\n if (!allowEmptyValue) {\n setCurrentValue(prevValue);\n setUnformattedValue(unformattedPrevValue);\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 prevValue,\n unformattedPrevValue,\n onChange,\n disableAbbreviation,\n currentValue,\n thousandSeparator,\n decimalSeparator,\n trimDecimals,\n decimalLength,\n onSave,\n allowEmptyValue,\n onCancel,\n ]\n );\n\n const updateValue = useCallback(\n (type: \"increment\" | \"decrement\") => {\n const preformattedValue = String(unformattedValue).replace(\",\", \".\");\n const numericValue = parseFloat(preformattedValue);\n\n if (isNaN(numericValue)) return;\n\n let newValue = numericValue;\n\n if (type === \"increment\") {\n newValue += step;\n } else if (type === \"decrement\") {\n newValue -= step;\n }\n\n if (decimalLength !== undefined) {\n newValue = parseFloat(newValue.toFixed(decimalLength));\n } else {\n newValue = parseFloat(newValue.toFixed(2));\n }\n\n if (min !== undefined && newValue < Number(min)) {\n newValue = Number(min);\n }\n\n if (max !== undefined && newValue > Number(max) && isMaxValid) {\n newValue = Number(max);\n }\n\n if (decimalLength !== undefined && decimalLength === 0) {\n newValue = Math.round(newValue);\n }\n\n let updatedValue = String(newValue);\n if (updatedValue.includes(\".\") || updatedValue.includes(\",\")) {\n updatedValue = updatedValue.replace(\".\", decimalSeparator);\n }\n\n setUnformattedValue(updatedValue);\n setCurrentValue(updatedValue);\n if (onChange) onChange(updatedValue);\n },\n [\n unformattedValue,\n decimalLength,\n min,\n max,\n isMaxValid,\n onChange,\n step,\n decimalSeparator,\n ]\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\n // Disallow \"-\" if min is 0 or greater\n if (e.key === \"-\" && min !== undefined && Number(min) >= 0) {\n e.preventDefault();\n return;\n }\n\n // Disallow decimal separator if decimalLength is 0\n if (e.key === decimalSeparator && decimalLength === 0) {\n e.preventDefault();\n return;\n }\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 min,\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 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 unformattedValue,\n };\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","_ref$value","onChange","onSave","onEnterKeyPress","onClick","onCancel","allowEmptyValue","_ref$step","step","_ref$trimDecimals","trimDecimals","limit","_ref$validation","validation","validateNumberInput","min","max","isMaxValid","undefined","Number","console","warn","_useState","useState","formatNumber","_useState2","currentValue","setCurrentValue","_useState3","_useState4","prevValue","setPrevValue","_useState5","_useState6","unformattedValue","setUnformattedValue","_useState7","_useState8","unformattedPrevValue","setUnformattedPrevValue","useEffect","_useState9","_useState10","focused","setFocused","escapeRef","useRef","handleBlur","useCallback","current","String","target","trim","_value","updateValue","type","preformattedValue","replace","numericValue","parseFloat","isNaN","newValue","toFixed","Math","round","updatedValue","includes","handleKeyDown","key","blur","preventDefault","metaKey","ctrlKey","_inputRef$current","select","input","start","selectionStart","end","selectionEnd","substring","Boolean","handleChange","inputValue","numericInput","_","num","unit","currencyMultiplier","toLowerCase","handleClick","handleFocus","handleDoubleClick","_inputRef$current2","onBlur","onKeyDown","onDoubleClick","onFocus"],"sources":["../../../src/hooks/useInputNumber.tsx"],"sourcesContent":["import {\n useState,\n MouseEvent,\n useRef,\n useCallback,\n RefObject,\n useEffect,\n} from \"react\";\n\nimport { validateNumberInput } from \"../utils\";\nimport { currencyMultiplier, formatNumber } 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 trimDecimals?: boolean;\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 min?: string | number;\n max?: string | number;\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 trimDecimals = true,\n limit,\n validation = validateNumberInput,\n min,\n max,\n }: IInputNumber,\n inputRef: RefObject<HTMLInputElement | null>\n) => {\n const isMaxValid =\n max === undefined || min === undefined || Number(max) >= Number(min);\n\n if (!isMaxValid) {\n console.warn(\n \"Warning: The maximum value is set to be lower than the minimum value. The maximum value will be ignored.\"\n );\n }\n\n const [currentValue, setCurrentValue] = useState(() =>\n formatNumber(\n value as string,\n thousandSeparator,\n decimalSeparator,\n trimDecimals,\n decimalLength,\n disableAbbreviation ? \"long\" : \"short\"\n )\n );\n const [prevValue, setPrevValue] = useState(() =>\n formatNumber(\n value as string,\n thousandSeparator,\n decimalSeparator,\n trimDecimals,\n decimalLength,\n disableAbbreviation ? \"long\" : \"short\"\n )\n );\n const [unformattedValue, setUnformattedValue] = useState(() =>\n formatNumber(\n value as string,\n \"\",\n decimalSeparator,\n false,\n decimalLength,\n \"long\"\n )\n );\n const [unformattedPrevValue, setUnformattedPrevValue] = useState(() =>\n formatNumber(\n value as string,\n \"\",\n decimalSeparator,\n false,\n decimalLength,\n \"long\"\n )\n );\n\n useEffect(() => {\n if (value !== prevValue) {\n setCurrentValue(\n formatNumber(\n value as string,\n thousandSeparator,\n decimalSeparator,\n trimDecimals,\n decimalLength,\n disableAbbreviation ? \"long\" : \"short\"\n )\n );\n setPrevValue(\n formatNumber(\n value as string,\n thousandSeparator,\n decimalSeparator,\n trimDecimals,\n decimalLength,\n disableAbbreviation ? \"long\" : \"short\"\n )\n );\n setUnformattedValue(\n formatNumber(\n value as string,\n \"\",\n decimalSeparator,\n trimDecimals,\n decimalLength,\n \"long\"\n )\n );\n setUnformattedPrevValue(\n formatNumber(\n value as string,\n \"\",\n decimalSeparator,\n trimDecimals,\n decimalLength,\n \"long\"\n )\n );\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n disableAbbreviation,\n thousandSeparator,\n decimalSeparator,\n decimalLength,\n trimDecimals,\n value,\n ]);\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(unformattedPrevValue);\n if (onChange) onChange(String(unformattedPrevValue));\n } else {\n if (e.target.value.trim().length > 0 && prevValue !== e.target.value) {\n const _value = formatNumber(\n currentValue as string,\n thousandSeparator,\n decimalSeparator,\n trimDecimals,\n decimalLength,\n disableAbbreviation ? \"long\" : \"short\"\n );\n setPrevValue(_value);\n setUnformattedPrevValue(currentValue as string);\n setUnformattedValue(currentValue as string);\n setCurrentValue(_value);\n typeof onSave === \"function\" && onSave(e);\n } else {\n if (!allowEmptyValue) {\n setCurrentValue(prevValue);\n setUnformattedValue(unformattedPrevValue);\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 prevValue,\n unformattedPrevValue,\n onChange,\n disableAbbreviation,\n currentValue,\n thousandSeparator,\n decimalSeparator,\n trimDecimals,\n decimalLength,\n onSave,\n allowEmptyValue,\n onCancel,\n ]\n );\n\n const updateValue = useCallback(\n (type: \"increment\" | \"decrement\") => {\n const preformattedValue = String(unformattedValue).replace(\",\", \".\");\n const numericValue = parseFloat(preformattedValue);\n\n if (isNaN(numericValue)) return;\n\n let newValue = numericValue;\n\n if (type === \"increment\") {\n newValue += step;\n } else if (type === \"decrement\") {\n newValue -= step;\n }\n\n if (decimalLength !== undefined) {\n newValue = parseFloat(newValue.toFixed(decimalLength));\n } else {\n newValue = parseFloat(newValue.toFixed(2));\n }\n\n if (min !== undefined && newValue < Number(min)) {\n newValue = Number(min);\n }\n\n if (max !== undefined && newValue > Number(max) && isMaxValid) {\n newValue = Number(max);\n }\n\n if (decimalLength !== undefined && decimalLength === 0) {\n newValue = Math.round(newValue);\n }\n\n let updatedValue = String(newValue);\n if (updatedValue.includes(\".\") || updatedValue.includes(\",\")) {\n updatedValue = updatedValue.replace(\".\", decimalSeparator);\n }\n\n setUnformattedValue(updatedValue);\n setCurrentValue(updatedValue);\n if (onChange) onChange(updatedValue);\n },\n [\n unformattedValue,\n decimalLength,\n min,\n max,\n isMaxValid,\n onChange,\n step,\n decimalSeparator,\n ]\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\n // Disallow \"-\" if min is 0 or greater\n if (e.key === \"-\" && min !== undefined && Number(min) >= 0) {\n e.preventDefault();\n return;\n }\n\n // Disallow decimal separator if decimalLength is 0\n if (e.key === decimalSeparator && decimalLength === 0) {\n e.preventDefault();\n return;\n }\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 min,\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 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 unformattedValue,\n };\n};\n"],"mappings":"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"}
|
|
@@ -34,8 +34,8 @@ export const useInputNumber = (_ref, inputRef) => {
|
|
|
34
34
|
if (value !== prevValue) {
|
|
35
35
|
setCurrentValue(formatNumber(value, thousandSeparator, decimalSeparator, trimDecimals, decimalLength, disableAbbreviation ? "long" : "short"));
|
|
36
36
|
setPrevValue(formatNumber(value, thousandSeparator, decimalSeparator, trimDecimals, decimalLength, disableAbbreviation ? "long" : "short"));
|
|
37
|
-
setUnformattedValue(formatNumber(value, "", decimalSeparator,
|
|
38
|
-
setUnformattedPrevValue(formatNumber(value, "", decimalSeparator,
|
|
37
|
+
setUnformattedValue(formatNumber(value, "", decimalSeparator, trimDecimals, decimalLength, "long"));
|
|
38
|
+
setUnformattedPrevValue(formatNumber(value, "", decimalSeparator, trimDecimals, decimalLength, "long"));
|
|
39
39
|
}
|
|
40
40
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
41
41
|
}, [disableAbbreviation, thousandSeparator, decimalSeparator, decimalLength, trimDecimals, value]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useInputNumber.js","names":["useState","useRef","useCallback","useEffect","validateNumberInput","currencyMultiplier","formatNumber","useInputNumber","_ref","inputRef","decimalSeparator","thousandSeparator","disableAbbreviation","disableMacros","decimalLength","value","onChange","onSave","onEnterKeyPress","onClick","onCancel","allowEmptyValue","step","trimDecimals","limit","validation","min","max","isMaxValid","undefined","Number","console","warn","currentValue","setCurrentValue","prevValue","setPrevValue","unformattedValue","setUnformattedValue","unformattedPrevValue","setUnformattedPrevValue","focused","setFocused","escapeRef","handleBlur","e","current","String","target","trim","length","_value","updateValue","type","preformattedValue","replace","numericValue","parseFloat","isNaN","newValue","toFixed","Math","round","updatedValue","includes","handleKeyDown","key","blur","preventDefault","metaKey","ctrlKey","_inputRef$current","select","input","start","selectionStart","end","selectionEnd","substring","Boolean","handleChange","inputValue","numericInput","_","num","unit","toLowerCase","toString","handleClick","handleFocus","handleDoubleClick","_inputRef$current2","onBlur","onKeyDown","onDoubleClick","onFocus"],"sources":["../../../src/hooks/useInputNumber.tsx"],"sourcesContent":["import {\n useState,\n MouseEvent,\n useRef,\n useCallback,\n RefObject,\n useEffect,\n} from \"react\";\n\nimport { validateNumberInput } from \"../utils\";\nimport { currencyMultiplier, formatNumber } 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 trimDecimals?: boolean;\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 min?: string | number;\n max?: string | number;\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 trimDecimals = true,\n limit,\n validation = validateNumberInput,\n min,\n max,\n }: IInputNumber,\n inputRef: RefObject<HTMLInputElement | null>\n) => {\n const isMaxValid =\n max === undefined || min === undefined || Number(max) >= Number(min);\n\n if (!isMaxValid) {\n console.warn(\n \"Warning: The maximum value is set to be lower than the minimum value. The maximum value will be ignored.\"\n );\n }\n\n const [currentValue, setCurrentValue] = useState(() =>\n formatNumber(\n value as string,\n thousandSeparator,\n decimalSeparator,\n trimDecimals,\n decimalLength,\n disableAbbreviation ? \"long\" : \"short\"\n )\n );\n const [prevValue, setPrevValue] = useState(() =>\n formatNumber(\n value as string,\n thousandSeparator,\n decimalSeparator,\n trimDecimals,\n decimalLength,\n disableAbbreviation ? \"long\" : \"short\"\n )\n );\n const [unformattedValue, setUnformattedValue] = useState(() =>\n formatNumber(\n value as string,\n \"\",\n decimalSeparator,\n false,\n decimalLength,\n \"long\"\n )\n );\n const [unformattedPrevValue, setUnformattedPrevValue] = useState(() =>\n formatNumber(\n value as string,\n \"\",\n decimalSeparator,\n false,\n decimalLength,\n \"long\"\n )\n );\n\n useEffect(() => {\n if (value !== prevValue) {\n setCurrentValue(\n formatNumber(\n value as string,\n thousandSeparator,\n decimalSeparator,\n trimDecimals,\n decimalLength,\n disableAbbreviation ? \"long\" : \"short\"\n )\n );\n setPrevValue(\n formatNumber(\n value as string,\n thousandSeparator,\n decimalSeparator,\n trimDecimals,\n decimalLength,\n disableAbbreviation ? \"long\" : \"short\"\n )\n );\n setUnformattedValue(\n formatNumber(\n value as string,\n \"\",\n decimalSeparator,\n false,\n decimalLength,\n \"long\"\n )\n );\n setUnformattedPrevValue(\n formatNumber(\n value as string,\n \"\",\n decimalSeparator,\n false,\n decimalLength,\n \"long\"\n )\n );\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n disableAbbreviation,\n thousandSeparator,\n decimalSeparator,\n decimalLength,\n trimDecimals,\n value,\n ]);\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(unformattedPrevValue);\n if (onChange) onChange(String(unformattedPrevValue));\n } else {\n if (e.target.value.trim().length > 0 && prevValue !== e.target.value) {\n const _value = formatNumber(\n currentValue as string,\n thousandSeparator,\n decimalSeparator,\n trimDecimals,\n decimalLength,\n disableAbbreviation ? \"long\" : \"short\"\n );\n setPrevValue(_value);\n setUnformattedPrevValue(currentValue as string);\n setUnformattedValue(currentValue as string);\n setCurrentValue(_value);\n typeof onSave === \"function\" && onSave(e);\n } else {\n if (!allowEmptyValue) {\n setCurrentValue(prevValue);\n setUnformattedValue(unformattedPrevValue);\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 prevValue,\n unformattedPrevValue,\n onChange,\n disableAbbreviation,\n currentValue,\n thousandSeparator,\n decimalSeparator,\n trimDecimals,\n decimalLength,\n onSave,\n allowEmptyValue,\n onCancel,\n ]\n );\n\n const updateValue = useCallback(\n (type: \"increment\" | \"decrement\") => {\n const preformattedValue = String(unformattedValue).replace(\",\", \".\");\n const numericValue = parseFloat(preformattedValue);\n\n if (isNaN(numericValue)) return;\n\n let newValue = numericValue;\n\n if (type === \"increment\") {\n newValue += step;\n } else if (type === \"decrement\") {\n newValue -= step;\n }\n\n if (decimalLength !== undefined) {\n newValue = parseFloat(newValue.toFixed(decimalLength));\n } else {\n newValue = parseFloat(newValue.toFixed(2));\n }\n\n if (min !== undefined && newValue < Number(min)) {\n newValue = Number(min);\n }\n\n if (max !== undefined && newValue > Number(max) && isMaxValid) {\n newValue = Number(max);\n }\n\n if (decimalLength !== undefined && decimalLength === 0) {\n newValue = Math.round(newValue);\n }\n\n let updatedValue = String(newValue);\n if (updatedValue.includes(\".\") || updatedValue.includes(\",\")) {\n updatedValue = updatedValue.replace(\".\", decimalSeparator);\n }\n\n setUnformattedValue(updatedValue);\n setCurrentValue(updatedValue);\n if (onChange) onChange(updatedValue);\n },\n [\n unformattedValue,\n decimalLength,\n min,\n max,\n isMaxValid,\n onChange,\n step,\n decimalSeparator,\n ]\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\n // Disallow \"-\" if min is 0 or greater\n if (e.key === \"-\" && min !== undefined && Number(min) >= 0) {\n e.preventDefault();\n return;\n }\n\n // Disallow decimal separator if decimalLength is 0\n if (e.key === decimalSeparator && decimalLength === 0) {\n e.preventDefault();\n return;\n }\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 min,\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 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 unformattedValue,\n };\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useInputNumber.js","names":["useState","useRef","useCallback","useEffect","validateNumberInput","currencyMultiplier","formatNumber","useInputNumber","_ref","inputRef","decimalSeparator","thousandSeparator","disableAbbreviation","disableMacros","decimalLength","value","onChange","onSave","onEnterKeyPress","onClick","onCancel","allowEmptyValue","step","trimDecimals","limit","validation","min","max","isMaxValid","undefined","Number","console","warn","currentValue","setCurrentValue","prevValue","setPrevValue","unformattedValue","setUnformattedValue","unformattedPrevValue","setUnformattedPrevValue","focused","setFocused","escapeRef","handleBlur","e","current","String","target","trim","length","_value","updateValue","type","preformattedValue","replace","numericValue","parseFloat","isNaN","newValue","toFixed","Math","round","updatedValue","includes","handleKeyDown","key","blur","preventDefault","metaKey","ctrlKey","_inputRef$current","select","input","start","selectionStart","end","selectionEnd","substring","Boolean","handleChange","inputValue","numericInput","_","num","unit","toLowerCase","toString","handleClick","handleFocus","handleDoubleClick","_inputRef$current2","onBlur","onKeyDown","onDoubleClick","onFocus"],"sources":["../../../src/hooks/useInputNumber.tsx"],"sourcesContent":["import {\n useState,\n MouseEvent,\n useRef,\n useCallback,\n RefObject,\n useEffect,\n} from \"react\";\n\nimport { validateNumberInput } from \"../utils\";\nimport { currencyMultiplier, formatNumber } 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 trimDecimals?: boolean;\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 min?: string | number;\n max?: string | number;\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 trimDecimals = true,\n limit,\n validation = validateNumberInput,\n min,\n max,\n }: IInputNumber,\n inputRef: RefObject<HTMLInputElement | null>\n) => {\n const isMaxValid =\n max === undefined || min === undefined || Number(max) >= Number(min);\n\n if (!isMaxValid) {\n console.warn(\n \"Warning: The maximum value is set to be lower than the minimum value. The maximum value will be ignored.\"\n );\n }\n\n const [currentValue, setCurrentValue] = useState(() =>\n formatNumber(\n value as string,\n thousandSeparator,\n decimalSeparator,\n trimDecimals,\n decimalLength,\n disableAbbreviation ? \"long\" : \"short\"\n )\n );\n const [prevValue, setPrevValue] = useState(() =>\n formatNumber(\n value as string,\n thousandSeparator,\n decimalSeparator,\n trimDecimals,\n decimalLength,\n disableAbbreviation ? \"long\" : \"short\"\n )\n );\n const [unformattedValue, setUnformattedValue] = useState(() =>\n formatNumber(\n value as string,\n \"\",\n decimalSeparator,\n false,\n decimalLength,\n \"long\"\n )\n );\n const [unformattedPrevValue, setUnformattedPrevValue] = useState(() =>\n formatNumber(\n value as string,\n \"\",\n decimalSeparator,\n false,\n decimalLength,\n \"long\"\n )\n );\n\n useEffect(() => {\n if (value !== prevValue) {\n setCurrentValue(\n formatNumber(\n value as string,\n thousandSeparator,\n decimalSeparator,\n trimDecimals,\n decimalLength,\n disableAbbreviation ? \"long\" : \"short\"\n )\n );\n setPrevValue(\n formatNumber(\n value as string,\n thousandSeparator,\n decimalSeparator,\n trimDecimals,\n decimalLength,\n disableAbbreviation ? \"long\" : \"short\"\n )\n );\n setUnformattedValue(\n formatNumber(\n value as string,\n \"\",\n decimalSeparator,\n trimDecimals,\n decimalLength,\n \"long\"\n )\n );\n setUnformattedPrevValue(\n formatNumber(\n value as string,\n \"\",\n decimalSeparator,\n trimDecimals,\n decimalLength,\n \"long\"\n )\n );\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n disableAbbreviation,\n thousandSeparator,\n decimalSeparator,\n decimalLength,\n trimDecimals,\n value,\n ]);\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(unformattedPrevValue);\n if (onChange) onChange(String(unformattedPrevValue));\n } else {\n if (e.target.value.trim().length > 0 && prevValue !== e.target.value) {\n const _value = formatNumber(\n currentValue as string,\n thousandSeparator,\n decimalSeparator,\n trimDecimals,\n decimalLength,\n disableAbbreviation ? \"long\" : \"short\"\n );\n setPrevValue(_value);\n setUnformattedPrevValue(currentValue as string);\n setUnformattedValue(currentValue as string);\n setCurrentValue(_value);\n typeof onSave === \"function\" && onSave(e);\n } else {\n if (!allowEmptyValue) {\n setCurrentValue(prevValue);\n setUnformattedValue(unformattedPrevValue);\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 prevValue,\n unformattedPrevValue,\n onChange,\n disableAbbreviation,\n currentValue,\n thousandSeparator,\n decimalSeparator,\n trimDecimals,\n decimalLength,\n onSave,\n allowEmptyValue,\n onCancel,\n ]\n );\n\n const updateValue = useCallback(\n (type: \"increment\" | \"decrement\") => {\n const preformattedValue = String(unformattedValue).replace(\",\", \".\");\n const numericValue = parseFloat(preformattedValue);\n\n if (isNaN(numericValue)) return;\n\n let newValue = numericValue;\n\n if (type === \"increment\") {\n newValue += step;\n } else if (type === \"decrement\") {\n newValue -= step;\n }\n\n if (decimalLength !== undefined) {\n newValue = parseFloat(newValue.toFixed(decimalLength));\n } else {\n newValue = parseFloat(newValue.toFixed(2));\n }\n\n if (min !== undefined && newValue < Number(min)) {\n newValue = Number(min);\n }\n\n if (max !== undefined && newValue > Number(max) && isMaxValid) {\n newValue = Number(max);\n }\n\n if (decimalLength !== undefined && decimalLength === 0) {\n newValue = Math.round(newValue);\n }\n\n let updatedValue = String(newValue);\n if (updatedValue.includes(\".\") || updatedValue.includes(\",\")) {\n updatedValue = updatedValue.replace(\".\", decimalSeparator);\n }\n\n setUnformattedValue(updatedValue);\n setCurrentValue(updatedValue);\n if (onChange) onChange(updatedValue);\n },\n [\n unformattedValue,\n decimalLength,\n min,\n max,\n isMaxValid,\n onChange,\n step,\n decimalSeparator,\n ]\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\n // Disallow \"-\" if min is 0 or greater\n if (e.key === \"-\" && min !== undefined && Number(min) >= 0) {\n e.preventDefault();\n return;\n }\n\n // Disallow decimal separator if decimalLength is 0\n if (e.key === decimalSeparator && decimalLength === 0) {\n e.preventDefault();\n return;\n }\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 min,\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 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 unformattedValue,\n };\n};\n"],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -12164,8 +12164,8 @@
|
|
|
12164
12164
|
if (value !== prevValue) {
|
|
12165
12165
|
setCurrentValue(formatNumber(value, thousandSeparator, decimalSeparator, trimDecimals, decimalLength, disableAbbreviation ? "long" : "short"));
|
|
12166
12166
|
setPrevValue(formatNumber(value, thousandSeparator, decimalSeparator, trimDecimals, decimalLength, disableAbbreviation ? "long" : "short"));
|
|
12167
|
-
setUnformattedValue(formatNumber(value, "", decimalSeparator,
|
|
12168
|
-
setUnformattedPrevValue(formatNumber(value, "", decimalSeparator,
|
|
12167
|
+
setUnformattedValue(formatNumber(value, "", decimalSeparator, trimDecimals, decimalLength, "long"));
|
|
12168
|
+
setUnformattedPrevValue(formatNumber(value, "", decimalSeparator, trimDecimals, decimalLength, "long"));
|
|
12169
12169
|
}
|
|
12170
12170
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
12171
12171
|
}, [disableAbbreviation, thousandSeparator, decimalSeparator, decimalLength, trimDecimals, value]);
|