@activecollab/components 2.0.91 → 2.0.93

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.
@@ -114,7 +114,7 @@ var useInputNumber = exports.useInputNumber = function useInputNumber(_ref, inpu
114
114
  if (value.includes(decimalSeparator)) {
115
115
  increasedValue = parseFloat(increasedValue.toFixed(decimalLength));
116
116
  }
117
- var joinedValue = (0, _currencyUtils.numberWithSeparator)(increasedValue, thousandSeparator, value.includes(thousandSeparator));
117
+ var joinedValue = (0, _currencyUtils.numberWithSeparator)(increasedValue, thousandSeparator, decimalSeparator, value.includes(thousandSeparator));
118
118
  setUnformattedValue(decimalPart ? joinedValue + decimalPart : joinedValue);
119
119
  setCurrentValue(decimalPart ? joinedValue + decimalPart : joinedValue);
120
120
  }, [decimalLength, decimalSeparator, step, thousandSeparator, unformattedValue]);
@@ -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","limit","_ref$validation","validation","validateNumberInput","_useState","useState","formatNumber","_useState2","currentValue","setCurrentValue","_useState3","_useState4","prevValue","setPrevValue","_useState5","_useState6","unformattedValue","setUnformattedValue","useEffect","_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 useEffect,\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 useEffect(() => {\n if (value !== prevValue) {\n setCurrentValue(\n disableAbbreviation\n ? value\n : formatNumber(value as string, thousandSeparator)\n );\n setPrevValue(\n disableAbbreviation\n ? value\n : formatNumber(value as string, thousandSeparator)\n );\n setUnformattedValue(value);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [disableAbbreviation, thousandSeparator, 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 unformattedValue,\n };\n }, [\n currentValue,\n handleBlur,\n handleKeyDown,\n handleChange,\n handleClick,\n handleDoubleClick,\n handleFocus,\n focused,\n unformattedValue,\n ]);\n\n return {\n inputProps,\n setCurrentValue,\n setPrevValue,\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","limit","_ref$validation","validation","validateNumberInput","_useState","useState","formatNumber","_useState2","currentValue","setCurrentValue","_useState3","_useState4","prevValue","setPrevValue","_useState5","_useState6","unformattedValue","setUnformattedValue","useEffect","_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 useEffect,\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 useEffect(() => {\n if (value !== prevValue) {\n setCurrentValue(\n disableAbbreviation\n ? value\n : formatNumber(value as string, thousandSeparator)\n );\n setPrevValue(\n disableAbbreviation\n ? value\n : formatNumber(value as string, thousandSeparator)\n );\n setUnformattedValue(value);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [disableAbbreviation, thousandSeparator, 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 decimalSeparator,\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 unformattedValue,\n };\n }, [\n currentValue,\n handleBlur,\n handleKeyDown,\n handleChange,\n handleClick,\n handleDoubleClick,\n handleFocus,\n focused,\n unformattedValue,\n ]);\n\n return {\n inputProps,\n setCurrentValue,\n setPrevValue,\n };\n};\n"],"mappings":"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"}
@@ -3,16 +3,56 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.numberWithSeparator = exports.formatNumber = exports.currencyMultiplier = void 0;
6
+ exports.numberWithSeparator = exports.getNumberFromString = exports.formatNumber = exports.fixedDecimalSpaces = 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 fixedDecimalSpaces = exports.fixedDecimalSpaces = function fixedDecimalSpaces(num, fixed) {
14
+ fixed = fixed || 0;
15
+ fixed = Math.pow(10, fixed);
16
+ var parts = num.toString().split(".");
17
+ if (parts.length > 1 && parseInt(parts[1]) > fixed) {
18
+ return Math.floor(num * fixed) / fixed;
19
+ }
20
+ return Math.round(num * fixed) / fixed;
21
+ };
22
+ var getNumberFromString = exports.getNumberFromString = function getNumberFromString(number) {
23
+ var thousandSeparator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ",";
24
+ var decimalSeparator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ".";
25
+ if (typeof number === "number") {
26
+ return number;
27
+ }
28
+ if (decimalSeparator === ",") {
29
+ var parts = number.split(decimalSeparator);
30
+ var result = 0;
31
+ if (parts.length === 2) {
32
+ result = parts[0] ? parseFloat(String(parts[0]).replaceAll(thousandSeparator, "")) : 0;
33
+ if (result < 0) {
34
+ result -= parts[1] ? parseFloat(String(parts[1])) / Math.pow(10, parts[1].length) : 0;
35
+ } else {
36
+ result += parts[1] ? parseFloat(String(parts[1])) / Math.pow(10, parts[1].length) : 0;
37
+ }
38
+ return result;
39
+ }
40
+ if (parts.length === 1) {
41
+ result = parseFloat(String(parts[0]).replaceAll(thousandSeparator, ""));
42
+ return result;
43
+ }
44
+ return 0;
45
+ } else {
46
+ return parseFloat(String(number).replaceAll(thousandSeparator, ""));
47
+ }
48
+ };
13
49
  var formatNumber = exports.formatNumber = function formatNumber(n) {
14
50
  var thousandSeparator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ",";
15
- var number = parseFloat(String(n).replaceAll(thousandSeparator, ""));
51
+ var decimalSeperator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ".";
52
+ var trimDecimals = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
53
+ var decimalSpaces = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 2;
54
+ var format = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : "short";
55
+ var number = getNumberFromString(n, thousandSeparator, decimalSeperator);
16
56
  if (isNaN(number)) {
17
57
  return "";
18
58
  }
@@ -20,21 +60,23 @@ var formatNumber = exports.formatNumber = function formatNumber(n) {
20
60
  var absoluteNumber = Math.abs(number);
21
61
  var suffixes = ["", "K", "M", "B", "T"];
22
62
  var scale = 0;
23
- while (absoluteNumber >= 1000 && scale < suffixes.length - 1) {
63
+ while (absoluteNumber >= 1000 && scale < suffixes.length - 1 && format === "short") {
24
64
  absoluteNumber /= 1000;
25
65
  scale++;
26
66
  }
27
- var formattedNum = scale === 0 ? absoluteNumber.toFixed(0) : absoluteNumber.toFixed(1);
28
- var result = formattedNum.endsWith(".0") ? formattedNum.slice(0, -2) : formattedNum;
67
+ var formattedNum = scale === 0 ? fixedDecimalSpaces(absoluteNumber, decimalSpaces) : parseFloat(absoluteNumber.toFixed(1));
68
+ var result = numberWithSeparator(trimDecimals ? formattedNum : formattedNum.toFixed(decimalSpaces), thousandSeparator, decimalSeperator);
29
69
  return isNegative ? "-".concat(result).concat(suffixes[scale]) : "".concat(result).concat(suffixes[scale]);
30
70
  };
31
- var numberWithSeparator = exports.numberWithSeparator = function numberWithSeparator(x, thousandSeparator) {
32
- var format = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
71
+ var numberWithSeparator = exports.numberWithSeparator = function numberWithSeparator(x) {
72
+ var thousandSeparator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ",";
73
+ var decimalSeparator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ".";
74
+ var format = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
33
75
  if (!format) {
34
76
  return x;
35
77
  }
36
78
  var parts = x.toString().split(".");
37
79
  parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, thousandSeparator);
38
- return parts.join(".");
80
+ return parts.join(decimalSeparator);
39
81
  };
40
82
  //# sourceMappingURL=currencyUtils.js.map
@@ -1 +1 @@
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","concat","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,OAAAW,MAAA,CACTH,MAAM,EAAAG,MAAA,CAAGP,QAAQ,CAACC,KAAK,CAAC,OAAAM,MAAA,CACzBH,MAAM,EAAAG,MAAA,CAAGP,QAAQ,CAACC,KAAK,CAAC,CAAE;AACnC,CAAC;AAEM,IAAMO,mBAAmB,GAAA5B,OAAA,CAAA4B,mBAAA,GAAG,SAAtBA,mBAAmBA,CAC9BC,CAAkB,EAClBtB,iBAA6B,EAE1B;EAAA,IADHuB,MAAM,GAAAtB,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAI;EAEb,IAAI,CAACsB,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,EAAE3B,iBAAiB,CAAC;EAEvE,OAAOwB,KAAK,CAACI,IAAI,CAAC,GAAG,CAAC;AACxB,CAAC"}
1
+ {"version":3,"file":"currencyUtils.js","names":["currencyMultiplier","exports","k","m","b","t","fixedDecimalSpaces","num","fixed","Math","pow","parts","toString","split","length","parseInt","floor","round","getNumberFromString","number","thousandSeparator","arguments","undefined","decimalSeparator","result","parseFloat","String","replaceAll","formatNumber","n","decimalSeperator","trimDecimals","decimalSpaces","format","isNaN","isNegative","absoluteNumber","abs","suffixes","scale","formattedNum","toFixed","numberWithSeparator","concat","x","replace","join"],"sources":["../../../src/utils/currencyUtils.ts"],"sourcesContent":["export 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 fixedDecimalSpaces = (num: number, fixed: number) => {\n fixed = fixed || 0;\n fixed = Math.pow(10, fixed);\n const parts = num.toString().split(\".\");\n if (parts.length > 1 && parseInt(parts[1]) > fixed) {\n return Math.floor(num * fixed) / fixed;\n }\n return Math.round(num * fixed) / fixed;\n};\n\nexport const getNumberFromString = (\n number: string | number,\n thousandSeparator = \",\",\n decimalSeparator = \".\"\n) => {\n if (typeof number === \"number\") {\n return number;\n }\n if (decimalSeparator === \",\") {\n const parts = number.split(decimalSeparator);\n\n let result = 0;\n if (parts.length === 2) {\n result = parts[0]\n ? parseFloat(String(parts[0]).replaceAll(thousandSeparator, \"\"))\n : 0;\n if (result < 0) {\n result -= parts[1]\n ? parseFloat(String(parts[1])) / Math.pow(10, parts[1].length)\n : 0;\n } else {\n result += parts[1]\n ? parseFloat(String(parts[1])) / Math.pow(10, parts[1].length)\n : 0;\n }\n return result;\n }\n if (parts.length === 1) {\n result = parseFloat(String(parts[0]).replaceAll(thousandSeparator, \"\"));\n\n return result;\n }\n return 0;\n } else {\n return parseFloat(String(number).replaceAll(thousandSeparator, \"\"));\n }\n};\n\nexport const formatNumber = (\n n: string | number,\n thousandSeparator = \",\",\n decimalSeperator = \".\",\n trimDecimals = true,\n decimalSpaces = 2,\n format = \"short\"\n) => {\n const number = getNumberFromString(n, thousandSeparator, decimalSeperator);\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 (\n absoluteNumber >= 1000 &&\n scale < suffixes.length - 1 &&\n format === \"short\"\n ) {\n absoluteNumber /= 1000;\n scale++;\n }\n\n const formattedNum =\n scale === 0\n ? fixedDecimalSpaces(absoluteNumber, decimalSpaces)\n : parseFloat(absoluteNumber.toFixed(1));\n\n const result = numberWithSeparator(\n trimDecimals ? formattedNum : formattedNum.toFixed(decimalSpaces),\n thousandSeparator,\n decimalSeperator\n );\n\n return isNegative\n ? `-${result}${suffixes[scale]}`\n : `${result}${suffixes[scale]}`;\n};\n\nexport const numberWithSeparator = (\n x: number | string,\n thousandSeparator = \",\",\n decimalSeparator = \".\",\n format = true\n) => {\n if (!format) {\n return x;\n }\n const parts = x.toString().split(\".\");\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousandSeparator);\n\n return parts.join(decimalSeparator);\n};\n"],"mappings":"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"}
@@ -2,43 +2,296 @@
2
2
 
3
3
  var _currencyUtils = require("./currencyUtils");
4
4
  describe("format currency with thousandseparator set to ',' and decimalSeparator to '.'", function () {
5
- 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.formatNumber)(value, ",")).toEqual(expected);
5
+ // please try to leave unformatted - ignore works for this block only
6
+ // prettier-ignore
7
+ it.each([[{
8
+ value: ""
9
+ }, ""], [{
10
+ value: "10"
11
+ }, "10"], [{
12
+ value: "1000"
13
+ }, "1K"], [{
14
+ value: "1000.00"
15
+ }, "1K"], [{
16
+ value: "1200.50"
17
+ }, "1.2K"], [{
18
+ value: "1,200.00"
19
+ }, "1.2K"], [{
20
+ value: "2,240.00"
21
+ }, "2.2K"], [{
22
+ value: "22,240.00"
23
+ }, "22.2K"], [{
24
+ value: "50,000,000.00"
25
+ }, "50M"], [{
26
+ value: "-50,000.00"
27
+ }, "-50K"], [{
28
+ value: "-1,200"
29
+ }, "-1.2K"], [{
30
+ value: "-90,000,000.00"
31
+ }, "-90M"], [{
32
+ value: "900.25"
33
+ }, "900.25"], [{
34
+ value: 900.25,
35
+ thousandSeparator: ".",
36
+ decimalSeparator: ","
37
+ }, "900,25"], [{
38
+ value: "900,25",
39
+ thousandSeparator: ".",
40
+ decimalSeparator: ","
41
+ }, "900,25"], [{
42
+ value: 900.255556,
43
+ thousandSeparator: ".",
44
+ decimalSeparator: ","
45
+ }, "900,25"], [{
46
+ value: "900,255556",
47
+ thousandSeparator: ".",
48
+ decimalSeparator: ","
49
+ }, "900,25"], [{
50
+ value: 900.255556,
51
+ thousandSeparator: ".",
52
+ decimalSeparator: ",",
53
+ trimDecimals: false,
54
+ decimalSpaces: 6
55
+ }, "900,255556"], [{
56
+ value: "900,255556",
57
+ thousandSeparator: ".",
58
+ decimalSeparator: ",",
59
+ trimDecimals: false
60
+ }, "900,25"], [{
61
+ value: 900.25,
62
+ thousandSeparator: ".",
63
+ decimalSeparator: ",",
64
+ trimDecimals: false,
65
+ decimalSpaces: 3
66
+ }, "900,250"], [{
67
+ value: 900.25,
68
+ thousandSeparator: ".",
69
+ decimalSeparator: ",",
70
+ trimDecimals: false,
71
+ decimalSpaces: 3,
72
+ format: "long"
73
+ }, "900,250"], [{
74
+ value: 1150.6666667,
75
+ thousandSeparator: ",",
76
+ decimalSeparator: ".",
77
+ trimDecimals: true,
78
+ decimalSpaces: 2,
79
+ format: "long"
80
+ }, "1,150.66"], [{
81
+ value: "1150.6666667",
82
+ thousandSeparator: ",",
83
+ decimalSeparator: ".",
84
+ trimDecimals: true,
85
+ decimalSpaces: 2,
86
+ format: "long"
87
+ }, "1,150.66"], [{
88
+ value: 1150.6666667,
89
+ thousandSeparator: ",",
90
+ decimalSeparator: ".",
91
+ trimDecimals: true,
92
+ decimalSpaces: 2,
93
+ format: "short"
94
+ }, "1.2K"], [{
95
+ value: "1150.6666667",
96
+ thousandSeparator: ",",
97
+ decimalSeparator: ".",
98
+ trimDecimals: true,
99
+ decimalSpaces: 2,
100
+ format: "short"
101
+ }, "1.2K"], [{
102
+ value: 1150.0,
103
+ thousandSeparator: ",",
104
+ decimalSeparator: ".",
105
+ trimDecimals: true,
106
+ decimalSpaces: 2,
107
+ format: "short"
108
+ }, "1.1K"], [{
109
+ value: "1150.00000",
110
+ thousandSeparator: ",",
111
+ decimalSeparator: ".",
112
+ trimDecimals: true,
113
+ decimalSpaces: 2,
114
+ format: "short"
115
+ }, "1.1K"], [{
116
+ value: 1150.6,
117
+ thousandSeparator: ",",
118
+ decimalSeparator: ".",
119
+ trimDecimals: true,
120
+ decimalSpaces: 2,
121
+ format: "long"
122
+ }, "1,150.6"], [{
123
+ value: "1150.60",
124
+ thousandSeparator: ",",
125
+ decimalSeparator: ".",
126
+ trimDecimals: true,
127
+ decimalSpaces: 2,
128
+ format: "long"
129
+ }, "1,150.6"], [{
130
+ value: 1150.0,
131
+ thousandSeparator: ",",
132
+ decimalSeparator: ".",
133
+ trimDecimals: true,
134
+ decimalSpaces: 2,
135
+ format: "long"
136
+ }, "1,150"], [{
137
+ value: "1150.00",
138
+ thousandSeparator: ",",
139
+ decimalSeparator: ".",
140
+ trimDecimals: true,
141
+ decimalSpaces: 2,
142
+ format: "long"
143
+ }, "1,150"], [{
144
+ value: 110.155557,
145
+ thousandSeparator: ",",
146
+ decimalSeparator: ".",
147
+ trimDecimals: true,
148
+ decimalSpaces: 2,
149
+ format: "long"
150
+ }, "110.15"], [{
151
+ value: "110.155557",
152
+ thousandSeparator: ",",
153
+ decimalSeparator: ".",
154
+ trimDecimals: true,
155
+ decimalSpaces: 2,
156
+ format: "long"
157
+ }, "110.15"], [{
158
+ value: 110.155557,
159
+ thousandSeparator: ",",
160
+ decimalSeparator: ".",
161
+ trimDecimals: true,
162
+ decimalSpaces: 2,
163
+ format: "short"
164
+ }, "110.15"], [{
165
+ value: "110.155557",
166
+ thousandSeparator: ",",
167
+ decimalSeparator: ".",
168
+ trimDecimals: true,
169
+ decimalSpaces: 2,
170
+ format: "short"
171
+ }, "110.15"], [{
172
+ value: 1501000.155557,
173
+ thousandSeparator: ",",
174
+ decimalSeparator: ".",
175
+ trimDecimals: true,
176
+ decimalSpaces: 2,
177
+ format: "long"
178
+ }, "1,501,000.15"], [{
179
+ value: "1501000.155557",
180
+ thousandSeparator: ",",
181
+ decimalSeparator: ".",
182
+ trimDecimals: true,
183
+ decimalSpaces: 2,
184
+ format: "long"
185
+ }, "1,501,000.15"], [{
186
+ value: 1501000.155557,
187
+ thousandSeparator: ",",
188
+ decimalSeparator: ".",
189
+ trimDecimals: true,
190
+ decimalSpaces: 2,
191
+ format: "short"
192
+ }, "1.5M"], [{
193
+ value: "1501000.155557",
194
+ thousandSeparator: ",",
195
+ decimalSeparator: ".",
196
+ trimDecimals: true,
197
+ decimalSpaces: 2,
198
+ format: "short"
199
+ }, "1.5M"]])("should format currency advanced", function (params, expected) {
200
+ var value = params.value,
201
+ thousandSeparator = params.thousandSeparator,
202
+ decimalSeparator = params.decimalSeparator,
203
+ trimDecimals = params.trimDecimals,
204
+ decimalSpaces = params.decimalSpaces,
205
+ format = params.format;
206
+ expect((0, _currencyUtils.formatNumber)(value, thousandSeparator, decimalSeparator, trimDecimals, decimalSpaces, format)).toEqual(expected);
7
207
  });
8
- });
9
- describe("format currency with thousandseparator set to '.' and decimalSeparator to ','", function () {
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.formatNumber)(value, ".")).toEqual(expected);
208
+
209
+ //fixedDecimalSpaces
210
+ it.each([[{
211
+ number: 123.456789,
212
+ decimalSpaces: 3
213
+ }, 123.456], [{
214
+ number: 123.3,
215
+ decimalSpaces: 2
216
+ }, 123.3], [{
217
+ number: 123.3,
218
+ decimalSpaces: 0
219
+ }, 123]])("should handle fixedDecimalSpaces", function (params, expected) {
220
+ expect((0, _currencyUtils.fixedDecimalSpaces)(params.number, params.decimalSpaces)).toBe(expected);
12
221
  });
13
- });
14
- describe("numberWithSeparator", function () {
15
- test("should format number with thousand separator", function () {
16
- var result = (0, _currencyUtils.numberWithSeparator)(1000, ",");
17
- expect(result).toBe("1,000");
222
+
223
+ //numberWithSeparator
224
+ it("should format number with thousand separator", function () {
225
+ var result = (0, _currencyUtils.numberWithSeparator)(1000.0.toFixed(3), ",", ".");
226
+ expect(result).toBe("1,000.000");
18
227
  });
19
- test("should format string number with thousand separator", function () {
228
+ it("should format string number with thousand separator", function () {
20
229
  var result = (0, _currencyUtils.numberWithSeparator)("1000", ",");
21
230
  expect(result).toBe("1,000");
22
231
  });
23
- test("should format decimal number with thousand separator and keep decimal part", function () {
232
+ it("should format decimal number with thousand separator and keep decimal part", function () {
24
233
  var result = (0, _currencyUtils.numberWithSeparator)(12345.67, ",");
25
234
  expect(result).toBe("12,345.67");
26
235
  });
27
- test("should not format when format is set to false", function () {
28
- var result = (0, _currencyUtils.numberWithSeparator)(1000, ",", false);
236
+ it("should not format when format is set to false", function () {
237
+ var result = (0, _currencyUtils.numberWithSeparator)(1000, ",", ".", false);
29
238
  expect(result).toBe(1000);
30
239
  });
31
- test("should handle zero with thousand separator", function () {
240
+ it("should handle zero with thousand separator", function () {
32
241
  var result = (0, _currencyUtils.numberWithSeparator)(0, ",");
33
242
  expect(result).toBe("0");
34
243
  });
35
- test("should handle negative number with thousand separator", function () {
244
+ it("should handle negative number with thousand separator", function () {
36
245
  var result = (0, _currencyUtils.numberWithSeparator)(-123456789, ",");
37
246
  expect(result).toBe("-123,456,789");
38
247
  });
39
- test("should not format", function () {
40
- var result = (0, _currencyUtils.numberWithSeparator)(123456789, ",", false);
248
+ it("should not format", function () {
249
+ var result = (0, _currencyUtils.numberWithSeparator)(123456789, ",", ".", false);
41
250
  expect(result).toBe(123456789);
42
251
  });
252
+
253
+ //getNumberFromString
254
+ it.each([[{
255
+ number: "1.000.000,256",
256
+ thousandSeparator: ".",
257
+ decimalSeparator: ","
258
+ }, 1000000.256], [{
259
+ number: 1000000.256,
260
+ thousandSeparator: ".",
261
+ decimalSeparator: ","
262
+ }, 1000000.256], [{
263
+ number: "1,000,000.256",
264
+ thousandSeparator: ",",
265
+ decimalSeparator: "."
266
+ }, 1000000.256], [{
267
+ number: ",256",
268
+ thousandSeparator: ".",
269
+ decimalSeparator: ","
270
+ }, 0.256], [{
271
+ number: "1562",
272
+ thousandSeparator: ".",
273
+ decimalSeparator: ","
274
+ }, 1562], [{
275
+ number: "1,2,3.4",
276
+ thousandSeparator: ".",
277
+ decimalSeparator: ","
278
+ }, 0], [{
279
+ number: "1562",
280
+ thousandSeparator: ",",
281
+ decimalSeparator: "."
282
+ }, 1562], [{
283
+ number: "-1.562,25",
284
+ thousandSeparator: ".",
285
+ decimalSeparator: ","
286
+ }, -1562.25], [{
287
+ number: "-1 562.25",
288
+ thousandSeparator: " ",
289
+ decimalSeparator: "."
290
+ }, -1562.25]])("should handle getNumberFromString", function (params, expected) {
291
+ var number = params.number,
292
+ thousandSeparator = params.thousandSeparator,
293
+ decimalSeparator = params.decimalSeparator;
294
+ expect((0, _currencyUtils.getNumberFromString)(number, thousandSeparator, decimalSeparator)).toBe(expected);
295
+ });
43
296
  });
44
297
  //# sourceMappingURL=currencyUtils.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"currencyUtils.test.js","names":["_currencyUtils","require","describe","it","each","value","expected","expect","formatNumber","toEqual","test","result","numberWithSeparator","toBe"],"sources":["../../../src/utils/currencyUtils.test.ts"],"sourcesContent":["import { formatNumber, numberWithSeparator } from \"./currencyUtils\";\n\ndescribe(\"format currency with thousandseparator set to ',' and decimalSeparator to '.'\", () => {\n it.each([\n [\"\", \"\"],\n [\"10\", \"10\"],\n [\"1000\", \"1K\"],\n [\"1000.00\", \"1K\"],\n [\"1200.50\", \"1.2K\"],\n [\"1,200.00\", \"1.2K\"],\n [\"2,240.00\", \"2.2K\"],\n [\"22,240.00\", \"22.2K\"],\n [\"50,000,000.00\", \"50M\"],\n [\"-50,000.00\", \"-50K\"],\n [\"-1,200\", \"-1.2K\"],\n [\"-90,000,000.00\", \"-90M\"],\n ])(\"should format currency\", (value, expected) => {\n expect(formatNumber(value, \",\")).toEqual(expected);\n });\n});\n\ndescribe(\"format currency with thousandseparator set to '.' and decimalSeparator to ','\", () => {\n it.each([\n [\"\", \"\"],\n [\"10\", \"10\"],\n [\"1000\", \"1K\"],\n [\"1000,00\", \"1K\"],\n [\"1200,50\", \"1.2K\"],\n [\"1.200,00\", \"1.2K\"],\n [\"2.240,00\", \"2.2K\"],\n [\"22.240,00\", \"22.2K\"],\n [\"50.000.000,00\", \"50M\"],\n [\"-50.000,00\", \"-50K\"],\n [\"-1.200\", \"-1.2K\"],\n [\"-90.000.000,00\", \"-90M\"],\n ])(\"should format currency\", (value, expected) => {\n expect(formatNumber(value, \".\")).toEqual(expected);\n });\n});\n\ndescribe(\"numberWithSeparator\", () => {\n test(\"should format number with thousand separator\", () => {\n const result = numberWithSeparator(1000, \",\");\n expect(result).toBe(\"1,000\");\n });\n\n test(\"should format string number with thousand separator\", () => {\n const result = numberWithSeparator(\"1000\", \",\");\n expect(result).toBe(\"1,000\");\n });\n\n test(\"should format decimal number with thousand separator and keep decimal part\", () => {\n const result = numberWithSeparator(12345.67, \",\");\n expect(result).toBe(\"12,345.67\");\n });\n\n test(\"should not format when format is set to false\", () => {\n const result = numberWithSeparator(1000, \",\", false);\n expect(result).toBe(1000);\n });\n\n test(\"should handle zero with thousand separator\", () => {\n const result = numberWithSeparator(0, \",\");\n expect(result).toBe(\"0\");\n });\n\n test(\"should handle negative number with thousand separator\", () => {\n const result = numberWithSeparator(-123456789, \",\");\n expect(result).toBe(\"-123,456,789\");\n });\n\n test(\"should not format\", () => {\n const result = numberWithSeparator(123456789, \",\", false);\n expect(result).toBe(123456789);\n });\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"currencyUtils.test.js","names":["_currencyUtils","require","describe","it","each","value","thousandSeparator","decimalSeparator","trimDecimals","decimalSpaces","format","params","expected","expect","formatNumber","toEqual","number","fixedDecimalSpaces","toBe","result","numberWithSeparator","toFixed","getNumberFromString"],"sources":["../../../src/utils/currencyUtils.test.ts"],"sourcesContent":["import {\n formatNumber,\n getNumberFromString,\n numberWithSeparator,\n fixedDecimalSpaces,\n} from \"./currencyUtils\";\nimport { FormatNumberArgs } from \"./types\";\n\ndescribe(\"format currency with thousandseparator set to ',' and decimalSeparator to '.'\", () => {\n // please try to leave unformatted - ignore works for this block only\n // prettier-ignore\n it.each<[FormatNumberArgs, string]>([\n [{ value: \"\" }, \"\"],\n [{ value: \"10\" }, \"10\"],\n [{ value: \"1000\" }, \"1K\"],\n [{ value: \"1000.00\" }, \"1K\"],\n [{ value: \"1200.50\" }, \"1.2K\"],\n [{ value: \"1,200.00\" }, \"1.2K\"],\n [{ value: \"2,240.00\" }, \"2.2K\"],\n [{ value: \"22,240.00\" }, \"22.2K\"],\n [{ value: \"50,000,000.00\" }, \"50M\"],\n [{ value: \"-50,000.00\" }, \"-50K\"],\n [{ value: \"-1,200\" }, \"-1.2K\"],\n [{ value: \"-90,000,000.00\" }, \"-90M\"],\n [{ value: \"900.25\" }, \"900.25\"],\n [{ value: 900.25, thousandSeparator: \".\", decimalSeparator: \",\" }, \"900,25\"],\n [{ value: \"900,25\", thousandSeparator: \".\", decimalSeparator: \",\" }, \"900,25\"],\n [{ value: 900.255556, thousandSeparator: \".\", decimalSeparator: \",\" }, \"900,25\"],\n [{ value: \"900,255556\", thousandSeparator: \".\", decimalSeparator: \",\" }, \"900,25\"],\n [{ value: 900.255556, thousandSeparator: \".\", decimalSeparator: \",\", trimDecimals: false, decimalSpaces: 6 }, \"900,255556\"],\n [{ value: \"900,255556\", thousandSeparator: \".\", decimalSeparator: \",\", trimDecimals: false }, \"900,25\"],\n [{ value: 900.25, thousandSeparator: \".\", decimalSeparator: \",\", trimDecimals: false, decimalSpaces: 3 }, \"900,250\"],\n [{ value: 900.25, thousandSeparator: \".\", decimalSeparator: \",\", trimDecimals: false, decimalSpaces: 3, format: \"long\" }, \"900,250\" ],\n [{ value: 1150.6666667, thousandSeparator: \",\", decimalSeparator: \".\", trimDecimals: true, decimalSpaces: 2, format: \"long\" }, \"1,150.66\" ],\n [{ value: \"1150.6666667\", thousandSeparator: \",\", decimalSeparator: \".\", trimDecimals: true, decimalSpaces: 2, format: \"long\" }, \"1,150.66\" ],\n [{ value: 1150.6666667, thousandSeparator: \",\", decimalSeparator: \".\", trimDecimals: true, decimalSpaces: 2, format: \"short\" }, \"1.2K\" ],\n [{ value: \"1150.6666667\", thousandSeparator: \",\", decimalSeparator: \".\", trimDecimals: true, decimalSpaces: 2, format: \"short\" }, \"1.2K\" ],\n [{ value: 1150.0, thousandSeparator: \",\", decimalSeparator: \".\", trimDecimals: true, decimalSpaces: 2, format: \"short\" }, \"1.1K\" ],\n [{ value: \"1150.00000\", thousandSeparator: \",\", decimalSeparator: \".\", trimDecimals: true, decimalSpaces: 2, format: \"short\" }, \"1.1K\" ],\n [{ value: 1150.6, thousandSeparator: \",\", decimalSeparator: \".\", trimDecimals: true, decimalSpaces: 2, format: \"long\" }, \"1,150.6\" ],\n [{ value: \"1150.60\", thousandSeparator: \",\", decimalSeparator: \".\", trimDecimals: true, decimalSpaces: 2, format: \"long\" }, \"1,150.6\"],\n [{ value: 1150.0, thousandSeparator: \",\", decimalSeparator: \".\", trimDecimals: true, decimalSpaces: 2, format: \"long\" }, \"1,150\" ],\n [{ value: \"1150.00\", thousandSeparator: \",\", decimalSeparator: \".\", trimDecimals: true, decimalSpaces: 2, format: \"long\" }, \"1,150\"],\n [{ value: 110.155557, thousandSeparator: \",\", decimalSeparator: \".\", trimDecimals: true, decimalSpaces: 2, format: \"long\" }, \"110.15\" ],\n [{ value: \"110.155557\", thousandSeparator: \",\", decimalSeparator: \".\", trimDecimals: true, decimalSpaces: 2, format: \"long\" }, \"110.15\" ],\n [{ value: 110.155557, thousandSeparator: \",\", decimalSeparator: \".\", trimDecimals: true, decimalSpaces: 2, format: \"short\" }, \"110.15\" ],\n [{ value: \"110.155557\", thousandSeparator: \",\", decimalSeparator: \".\", trimDecimals: true, decimalSpaces: 2, format: \"short\" }, \"110.15\" ],\n [{ value: 1501000.155557, thousandSeparator: \",\", decimalSeparator: \".\", trimDecimals: true, decimalSpaces: 2, format: \"long\" }, \"1,501,000.15\" ],\n [{ value: \"1501000.155557\", thousandSeparator: \",\", decimalSeparator: \".\", trimDecimals: true, decimalSpaces: 2, format: \"long\" }, \"1,501,000.15\" ],\n [{ value: 1501000.155557, thousandSeparator: \",\", decimalSeparator: \".\", trimDecimals: true, decimalSpaces: 2, format: \"short\" }, \"1.5M\"],\n [{ value: \"1501000.155557\", thousandSeparator: \",\", decimalSeparator: \".\", trimDecimals: true, decimalSpaces: 2, format: \"short\" }, \"1.5M\" ],\n ])(\"should format currency advanced\", (params, expected) => {\n const {\n value,\n thousandSeparator,\n decimalSeparator,\n trimDecimals,\n decimalSpaces,\n format,\n } = params;\n\n expect(\n formatNumber(\n value,\n thousandSeparator,\n decimalSeparator,\n trimDecimals,\n decimalSpaces,\n format\n )\n ).toEqual(expected);\n });\n\n //fixedDecimalSpaces\n it.each<[{ number: number; decimalSpaces: number }, number]>([\n [{ number: 123.456789, decimalSpaces: 3 }, 123.456],\n [{ number: 123.3, decimalSpaces: 2 }, 123.3],\n [{ number: 123.3, decimalSpaces: 0 }, 123],\n ])(\"should handle fixedDecimalSpaces\", (params, expected) => {\n expect(fixedDecimalSpaces(params.number, params.decimalSpaces)).toBe(\n expected\n );\n });\n\n //numberWithSeparator\n it(\"should format number with thousand separator\", () => {\n const result = numberWithSeparator((1000.0).toFixed(3), \",\", \".\");\n expect(result).toBe(\"1,000.000\");\n });\n\n it(\"should format string number with thousand separator\", () => {\n const result = numberWithSeparator(\"1000\", \",\");\n expect(result).toBe(\"1,000\");\n });\n\n it(\"should format decimal number with thousand separator and keep decimal part\", () => {\n const result = numberWithSeparator(12345.67, \",\");\n expect(result).toBe(\"12,345.67\");\n });\n\n it(\"should not format when format is set to false\", () => {\n const result = numberWithSeparator(1000, \",\", \".\", false);\n expect(result).toBe(1000);\n });\n\n it(\"should handle zero with thousand separator\", () => {\n const result = numberWithSeparator(0, \",\");\n expect(result).toBe(\"0\");\n });\n\n it(\"should handle negative number with thousand separator\", () => {\n const result = numberWithSeparator(-123456789, \",\");\n expect(result).toBe(\"-123,456,789\");\n });\n\n it(\"should not format\", () => {\n const result = numberWithSeparator(123456789, \",\", \".\", false);\n expect(result).toBe(123456789);\n });\n\n //getNumberFromString\n it.each([\n [\n {\n number: \"1.000.000,256\",\n thousandSeparator: \".\",\n decimalSeparator: \",\",\n },\n 1000000.256,\n ],\n [\n { number: 1000000.256, thousandSeparator: \".\", decimalSeparator: \",\" },\n 1000000.256,\n ],\n [\n {\n number: \"1,000,000.256\",\n thousandSeparator: \",\",\n decimalSeparator: \".\",\n },\n 1000000.256,\n ],\n [{ number: \",256\", thousandSeparator: \".\", decimalSeparator: \",\" }, 0.256],\n [{ number: \"1562\", thousandSeparator: \".\", decimalSeparator: \",\" }, 1562],\n [{ number: \"1,2,3.4\", thousandSeparator: \".\", decimalSeparator: \",\" }, 0],\n [{ number: \"1562\", thousandSeparator: \",\", decimalSeparator: \".\" }, 1562],\n [\n { number: \"-1.562,25\", thousandSeparator: \".\", decimalSeparator: \",\" },\n -1562.25,\n ],\n [\n { number: \"-1 562.25\", thousandSeparator: \" \", decimalSeparator: \".\" },\n -1562.25,\n ],\n ])(\"should handle getNumberFromString\", (params, expected) => {\n const { number, thousandSeparator, decimalSeparator } = params;\n\n expect(\n getNumberFromString(number, thousandSeparator, decimalSeparator)\n ).toBe(expected);\n });\n});\n"],"mappings":"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"}
@@ -8,7 +8,8 @@ var _exportNames = {
8
8
  useResizeObserver: true,
9
9
  decimalToHours: true,
10
10
  formatNumber: true,
11
- numberWithSeparator: true
11
+ numberWithSeparator: true,
12
+ getNumberFromString: true
12
13
  };
13
14
  Object.defineProperty(exports, "decimalToHours", {
14
15
  enumerable: true,
@@ -22,6 +23,12 @@ Object.defineProperty(exports, "formatNumber", {
22
23
  return _currencyUtils.formatNumber;
23
24
  }
24
25
  });
26
+ Object.defineProperty(exports, "getNumberFromString", {
27
+ enumerable: true,
28
+ get: function get() {
29
+ return _currencyUtils.getNumberFromString;
30
+ }
31
+ });
25
32
  Object.defineProperty(exports, "numberWithSeparator", {
26
33
  enumerable: true,
27
34
  get: function get() {