@activecollab/components 2.0.19 → 2.0.21

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.
Files changed (39) hide show
  1. package/dist/cjs/components/EditableCurrency/EditableCurrency.js +2 -4
  2. package/dist/cjs/components/EditableCurrency/EditableCurrency.js.map +1 -1
  3. package/dist/cjs/components/Input/InputCurrency.js +26 -2
  4. package/dist/cjs/components/Input/InputCurrency.js.map +1 -1
  5. package/dist/cjs/components/Input/InputPassword.js +218 -0
  6. package/dist/cjs/components/Input/InputPassword.js.map +1 -0
  7. package/dist/cjs/components/Input/Styles.js +25 -1
  8. package/dist/cjs/components/Input/Styles.js.map +1 -1
  9. package/dist/cjs/hooks/useInputNumber.js +8 -0
  10. package/dist/cjs/hooks/useInputNumber.js.map +1 -1
  11. package/dist/cjs/utils/validation.js +3 -9
  12. package/dist/cjs/utils/validation.js.map +1 -1
  13. package/dist/esm/components/EditableCurrency/EditableCurrency.d.ts +1 -1
  14. package/dist/esm/components/EditableCurrency/EditableCurrency.d.ts.map +1 -1
  15. package/dist/esm/components/EditableCurrency/EditableCurrency.js +1 -3
  16. package/dist/esm/components/EditableCurrency/EditableCurrency.js.map +1 -1
  17. package/dist/esm/components/Input/InputCurrency.d.ts +5 -2
  18. package/dist/esm/components/Input/InputCurrency.d.ts.map +1 -1
  19. package/dist/esm/components/Input/InputCurrency.js +22 -0
  20. package/dist/esm/components/Input/InputCurrency.js.map +1 -1
  21. package/dist/esm/components/Input/InputPassword.d.ts +30 -0
  22. package/dist/esm/components/Input/InputPassword.d.ts.map +1 -0
  23. package/dist/esm/components/Input/InputPassword.js +185 -0
  24. package/dist/esm/components/Input/InputPassword.js.map +1 -0
  25. package/dist/esm/components/Input/Styles.d.ts +5 -0
  26. package/dist/esm/components/Input/Styles.d.ts.map +1 -1
  27. package/dist/esm/components/Input/Styles.js +27 -1
  28. package/dist/esm/components/Input/Styles.js.map +1 -1
  29. package/dist/esm/hooks/useInputNumber.d.ts.map +1 -1
  30. package/dist/esm/hooks/useInputNumber.js +8 -0
  31. package/dist/esm/hooks/useInputNumber.js.map +1 -1
  32. package/dist/esm/utils/validation.d.ts.map +1 -1
  33. package/dist/esm/utils/validation.js +3 -9
  34. package/dist/esm/utils/validation.js.map +1 -1
  35. package/dist/index.js +155 -113
  36. package/dist/index.js.map +1 -1
  37. package/dist/index.min.js +1 -1
  38. package/dist/index.min.js.map +1 -1
  39. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Styles.js","names":["_styledComponents","_interopRequireWildcard","require","_BoxSizingStyle","_FontStyle","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","StyledInputWrapper","exports","styled","div","withConfig","displayName","componentId","FontStyle","BoxSizingStyle","props","$size","css","$disabled","$invalid","StyledInput","input","disabled","$loading","align"],"sources":["../../../../src/components/Input/Styles.ts"],"sourcesContent":["import styled, { css } from \"styled-components\";\n\nimport { InputProps } from \"./Input\";\nimport { InputSize } from \"./types\";\nimport { BoxSizingStyle } from \"../BoxSizingStyle\";\nimport { FontStyle } from \"../FontStyle\";\n\ninterface StyledInputWrapperProps {\n $size?: InputSize;\n $invalid?: boolean;\n $disabled?: boolean;\n}\n\nexport const StyledInputWrapper = styled.div<StyledInputWrapperProps>`\n align-items: center;\n background-color: var(--input-background-color);\n border-color: var(--color-theme-500);\n border-radius: 8px;\n border-style: solid;\n border-width: 1px;\n cursor: text;\n display: flex;\n height: 32px;\n padding-block: 4px;\n padding-inline: 4px;\n transition: all 0.3s ease;\n width: 360px;\n\n ${FontStyle}\n ${BoxSizingStyle}\n\n ${(props) =>\n props.$size === \"small\" &&\n css`\n border-radius: 6px;\n height: 24px;\n `}\n\n ${(props) =>\n props.$size === \"big\" &&\n css`\n height: 40px;\n `}\n\n ${(props) =>\n props.$size === \"biggest\" &&\n css`\n height: 48px;\n `}\n\n ${(props) =>\n props.$disabled &&\n css`\n cursor: default;\n opacity: 50%;\n `}\n\n ${(props) =>\n !props.$disabled &&\n !props.$invalid &&\n css`\n &:focus-within,\n &:hover {\n border-color: var(--color-primary);\n }\n `}\n\n ${(props) =>\n !props.$disabled &&\n props.$invalid &&\n css`\n border-color: var(--red-alert);\n `}\n`;\n\nStyledInputWrapper.displayName = \"StyledInputWrapper\";\n\ninterface StyledInputProps extends Pick<InputProps, \"align\"> {\n $size?: InputSize;\n $loading?: boolean;\n}\n\nexport const StyledInput = styled.input<StyledInputProps>`\n background-color: var(--input-background-color);\n border: none;\n color: var(--color-theme-900);\n /* @TODO: Prebaciti velicine fontova, weight, razmake, itd... u naše varijable. */\n font-size: 0.875rem;\n font-weight: 400;\n letter-spacing: 0.02em;\n margin-block: 0;\n margin-inline: 4px;\n outline: none;\n padding: 0;\n width: 100%;\n\n &::placeholder {\n color: var(--color-theme-transparent-500);\n }\n\n ${(props) =>\n props.$size === \"big\" &&\n css`\n font-size: 1rem;\n `}\n\n ${(props) =>\n props.$size === \"biggest\" &&\n css`\n font-size: 1.25rem;\n font-weight: 700;\n `}\n\n ${(props) =>\n props.disabled &&\n css`\n cursor: default;\n `}\n\n ${(props) =>\n props.$loading &&\n css`\n cursor: progress;\n `}\n\n ${(props) =>\n props.align &&\n css`\n text-align: ${props.align};\n `}\n`;\n\nStyledInput.displayName = \"StyledInput\";\n"],"mappings":"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"}
1
+ {"version":3,"file":"Styles.js","names":["_styledComponents","_interopRequireWildcard","require","_BoxSizingStyle","_FontStyle","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","StyledInputWrapper","exports","styled","div","withConfig","displayName","componentId","FontStyle","BoxSizingStyle","props","$size","css","$disabled","$invalid","StyledInput","input","disabled","$loading","align","StyledPasswordIndicatorWrapper","StyledPasswordIndicator","$strength","$index"],"sources":["../../../../src/components/Input/Styles.ts"],"sourcesContent":["import styled, { css } from \"styled-components\";\n\nimport { InputProps } from \"./Input\";\nimport { InputSize } from \"./types\";\nimport { BoxSizingStyle } from \"../BoxSizingStyle\";\nimport { FontStyle } from \"../FontStyle\";\n\ninterface StyledInputWrapperProps {\n $size?: InputSize;\n $invalid?: boolean;\n $disabled?: boolean;\n}\n\nexport const StyledInputWrapper = styled.div<StyledInputWrapperProps>`\n align-items: center;\n background-color: var(--input-background-color);\n border-color: var(--color-theme-500);\n border-radius: 8px;\n border-style: solid;\n border-width: 1px;\n cursor: text;\n display: flex;\n height: 32px;\n padding-block: 4px;\n padding-inline: 4px;\n transition: all 0.3s ease;\n width: 360px;\n\n ${FontStyle}\n ${BoxSizingStyle}\n\n ${(props) =>\n props.$size === \"small\" &&\n css`\n border-radius: 6px;\n height: 24px;\n `}\n\n ${(props) =>\n props.$size === \"big\" &&\n css`\n height: 40px;\n `}\n\n ${(props) =>\n props.$size === \"biggest\" &&\n css`\n height: 48px;\n `}\n\n ${(props) =>\n props.$disabled &&\n css`\n cursor: default;\n opacity: 50%;\n `}\n\n ${(props) =>\n !props.$disabled &&\n !props.$invalid &&\n css`\n &:focus-within,\n &:hover {\n border-color: var(--color-primary);\n }\n `}\n\n ${(props) =>\n !props.$disabled &&\n props.$invalid &&\n css`\n border-color: var(--red-alert);\n `}\n`;\n\nStyledInputWrapper.displayName = \"StyledInputWrapper\";\n\ninterface StyledInputProps extends Pick<InputProps, \"align\"> {\n $size?: InputSize;\n $loading?: boolean;\n}\n\nexport const StyledInput = styled.input<StyledInputProps>`\n background-color: var(--input-background-color);\n border: none;\n color: var(--color-theme-900);\n /* @TODO: Prebaciti velicine fontova, weight, razmake, itd... u naše varijable. */\n font-size: 0.875rem;\n font-weight: 400;\n letter-spacing: 0.02em;\n margin-block: 0;\n margin-inline: 4px;\n outline: none;\n padding: 0;\n width: 100%;\n\n &::placeholder {\n color: var(--color-theme-transparent-500);\n }\n\n ${(props) =>\n props.$size === \"big\" &&\n css`\n font-size: 1rem;\n `}\n\n ${(props) =>\n props.$size === \"biggest\" &&\n css`\n font-size: 1.25rem;\n font-weight: 700;\n `}\n\n ${(props) =>\n props.disabled &&\n css`\n cursor: default;\n `}\n\n ${(props) =>\n props.$loading &&\n css`\n cursor: progress;\n `}\n\n ${(props) =>\n props.align &&\n css`\n text-align: ${props.align};\n `}\n`;\n\nStyledInput.displayName = \"StyledInput\";\n\nexport const StyledPasswordIndicatorWrapper = styled.div`\n display: flex;\n gap: 2px;\n margin-top: 6px;\n margin-bottom: 4px;\n`;\n\nStyledPasswordIndicatorWrapper.displayName = \"StyledPasswordIndicatorWrapper\";\n\nexport const StyledPasswordIndicator = styled.div<{\n $strength: number;\n $index: number;\n}>`\n width: 100%;\n height: 4px;\n border-radius: 6px;\n background-color: ${(props) => {\n const { $strength, $index } = props;\n\n if ($strength === 0) {\n return \"var(--color-theme-300)\";\n } else if ($strength === 1) {\n return $index === 0 ? \"var(--red-alert)\" : \"var(--color-theme-300)\";\n } else if ($strength === 2) {\n return $index < 2 ? \"var(--color-orange)\" : \"var(--color-theme-300)\";\n } else if ($strength === 3) {\n return $index < 3 ? \"var(--color-blue-sky)\" : \"var(--color-theme-300)\";\n } else {\n return \"var(--color-sucess-green)\";\n }\n }};\n`;\n\nStyledPasswordIndicator.displayName = \"StyledPasswordIndicator\";\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useInputNumber.d.ts","sourceRoot":"","sources":["../../../src/hooks/useInputNumber.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,UAAU,EAGV,SAAS,EAEV,MAAM,OAAO,CAAC;AASf,MAAM,MAAM,UAAU,GAAG,GAAG,GAAG,GAAG,CAAC;AAEnC,MAAM,WAAW,YAAY;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,UAAU,CAAC;IAC9B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iBAAiB,CAAC,EAAE,UAAU,CAAC;IAC/B,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IACxD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;IAC9B,UAAU,CAAC,EAAE,CACX,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,OAAO,EACtB,gBAAgB,EAAE,MAAM,EACxB,aAAa,EAAE,MAAM,EACrB,KAAK,CAAC,EAAE,MAAM,KACX,OAAO,CAAC;CACd;AAED,eAAO,MAAM,cAAc,uMAiBtB,YAAY,YACL,UAAU,gBAAgB,GAAG,IAAI,CAAC;;;;;;;;;;;;;;CAoP7C,CAAC"}
1
+ {"version":3,"file":"useInputNumber.d.ts","sourceRoot":"","sources":["../../../src/hooks/useInputNumber.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,UAAU,EAGV,SAAS,EAGV,MAAM,OAAO,CAAC;AASf,MAAM,MAAM,UAAU,GAAG,GAAG,GAAG,GAAG,CAAC;AAEnC,MAAM,WAAW,YAAY;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,UAAU,CAAC;IAC9B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iBAAiB,CAAC,EAAE,UAAU,CAAC;IAC/B,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IACxD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;IAC9B,UAAU,CAAC,EAAE,CACX,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,OAAO,EACtB,gBAAgB,EAAE,MAAM,EACxB,aAAa,EAAE,MAAM,EACrB,KAAK,CAAC,EAAE,MAAM,KACX,OAAO,CAAC;CACd;AAED,eAAO,MAAM,cAAc,uMAiBtB,YAAY,YACL,UAAU,gBAAgB,GAAG,IAAI,CAAC;;;;;;;;;;;;;;CAqQ7C,CAAC"}
@@ -28,6 +28,14 @@ const useInputNumber = (_ref, inputRef) => {
28
28
  const [currentValue, setCurrentValue] = (0, _react.useState)(() => disableAbbreviation ? value : (0, _currencyUtils.formatNumber)(value, thousandSeparator));
29
29
  const [prevValue, setPrevValue] = (0, _react.useState)(() => disableAbbreviation ? value : (0, _currencyUtils.formatNumber)(value, thousandSeparator));
30
30
  const [unformattedValue, setUnformattedValue] = (0, _react.useState)(() => value);
31
+ (0, _react.useEffect)(() => {
32
+ if (value !== prevValue) {
33
+ setCurrentValue(disableAbbreviation ? value : (0, _currencyUtils.formatNumber)(value, thousandSeparator));
34
+ setPrevValue(disableAbbreviation ? value : (0, _currencyUtils.formatNumber)(value, thousandSeparator));
35
+ setUnformattedValue(value);
36
+ }
37
+ // eslint-disable-next-line react-hooks/exhaustive-deps
38
+ }, [disableAbbreviation, thousandSeparator, value]);
31
39
  const [focused, setFocused] = (0, _react.useState)(false);
32
40
  const escapeRef = (0, _react.useRef)(false);
33
41
  const handleBlur = (0, _react.useCallback)(e => {
@@ -1 +1 @@
1
- {"version":3,"file":"useInputNumber.js","names":["_react","require","_utils","_currencyUtils","useInputNumber","_ref","inputRef","decimalSeparator","thousandSeparator","disableAbbreviation","disableMacros","decimalLength","value","onChange","onSave","onEnterKeyPress","onClick","onCancel","allowEmptyValue","step","limit","validation","validateNumberInput","currentValue","setCurrentValue","useState","formatNumber","prevValue","setPrevValue","unformattedValue","setUnformattedValue","focused","setFocused","escapeRef","useRef","handleBlur","useCallback","e","current","target","trim","length","_value","updateValue","type","String","decimalPart","increasedValue","nonDecimalPart","replaceAll","includes","slice","indexOf","parseFloat","toFixed","joinedValue","numberWithSeparator","handleKeyDown","key","blur","preventDefault","metaKey","ctrlKey","select","input","start","selectionStart","end","selectionEnd","newValue","substring","Boolean","handleChange","inputValue","numericInput","replace","_","num","unit","currencyMultiplier","toLowerCase","toString","handleClick","handleFocus","handleDoubleClick","inputProps","useMemo","onBlur","onKeyDown","onDoubleClick","onFocus","exports"],"sources":["../../../src/hooks/useInputNumber.tsx"],"sourcesContent":["import {\n useState,\n MouseEvent,\n useRef,\n useCallback,\n RefObject,\n useMemo,\n} from \"react\";\n\nimport { validateNumberInput } from \"../utils\";\nimport {\n currencyMultiplier,\n formatNumber,\n numberWithSeparator,\n} from \"../utils/currencyUtils\";\n\nexport type Separators = \".\" | \",\";\n\nexport interface IInputNumber {\n decimalLength?: number;\n decimalSeparator?: Separators;\n disableAbbreviation?: boolean;\n disableMacros?: boolean;\n thousandSeparator?: Separators;\n onSave?: (e: Event) => void;\n value?: string | number;\n step?: number;\n limit?: number;\n onEnterKeyPress?: (val: string) => void;\n onChange?: (val: string) => void;\n onClick?: (event: MouseEvent<HTMLInputElement>) => void;\n allowEmptyValue?: boolean;\n onCancel?: (e: Event) => void;\n validation?: (\n value: string,\n disableMacros: boolean,\n decimalSeparator: string,\n decimalLength: number,\n limit?: number\n ) => boolean;\n}\n\nexport const useInputNumber = (\n {\n decimalSeparator = \".\",\n thousandSeparator = \",\",\n disableAbbreviation,\n disableMacros,\n decimalLength,\n value,\n onChange,\n onSave,\n onEnterKeyPress,\n onClick,\n onCancel,\n allowEmptyValue,\n step = 1,\n limit,\n validation = validateNumberInput,\n }: IInputNumber,\n inputRef: RefObject<HTMLInputElement | null>\n) => {\n const [currentValue, setCurrentValue] = useState(() =>\n disableAbbreviation\n ? value\n : formatNumber(value as string, thousandSeparator)\n );\n const [prevValue, setPrevValue] = useState(() =>\n disableAbbreviation\n ? value\n : formatNumber(value as string, thousandSeparator)\n );\n const [unformattedValue, setUnformattedValue] = useState(() => value);\n\n const [focused, setFocused] = useState(false);\n\n const escapeRef = useRef(false);\n\n const handleBlur = useCallback(\n (e) => {\n if (escapeRef.current) {\n setCurrentValue(prevValue);\n setUnformattedValue(prevValue);\n } else {\n if (e.target.value.trim().length > 0 && prevValue !== e.target.value) {\n const _value = disableAbbreviation\n ? currentValue\n : formatNumber(currentValue as string, thousandSeparator);\n setPrevValue(_value);\n setUnformattedValue(currentValue);\n setCurrentValue(_value);\n typeof onSave === \"function\" && onSave(e);\n } else {\n if (!allowEmptyValue) {\n setCurrentValue(prevValue);\n setUnformattedValue(prevValue);\n typeof onCancel === \"function\" && onCancel(e);\n } else {\n if (typeof onSave === \"function\" && prevValue !== e.target.value) {\n onSave(e);\n } else {\n typeof onCancel === \"function\" && onCancel(e);\n }\n }\n }\n }\n setFocused(false);\n },\n [\n allowEmptyValue,\n disableAbbreviation,\n onCancel,\n onSave,\n prevValue,\n thousandSeparator,\n currentValue,\n ]\n );\n\n const updateValue = useCallback(\n (type: \"increment\" | \"decrement\") => {\n const value = String(unformattedValue);\n\n let decimalPart = \"\";\n let increasedValue = 0;\n let nonDecimalPart = value.replaceAll(thousandSeparator, \"\");\n\n if (!value) {\n return;\n }\n\n if (value.includes(decimalSeparator)) {\n nonDecimalPart = value\n .slice(0, value.indexOf(decimalSeparator))\n .replaceAll(thousandSeparator, \"\");\n }\n\n if (value.includes(decimalSeparator)) {\n decimalPart = value.slice(value.indexOf(decimalSeparator));\n }\n\n if (type === \"increment\") {\n increasedValue = parseFloat(nonDecimalPart) + step;\n } else {\n increasedValue = parseFloat(nonDecimalPart) - step;\n }\n\n if (value.includes(decimalSeparator)) {\n increasedValue = parseFloat(increasedValue.toFixed(decimalLength));\n }\n\n const joinedValue = numberWithSeparator(\n increasedValue,\n thousandSeparator,\n value.includes(thousandSeparator)\n );\n\n setUnformattedValue(\n decimalPart ? joinedValue + decimalPart : joinedValue\n );\n setCurrentValue(decimalPart ? joinedValue + decimalPart : joinedValue);\n },\n [decimalLength, decimalSeparator, step, thousandSeparator, unformattedValue]\n );\n\n const handleKeyDown = useCallback(\n (e) => {\n if (e.key === \"Enter\") {\n e.target.blur();\n if (typeof onEnterKeyPress === \"function\")\n onEnterKeyPress(e.target.value);\n }\n if (e.key === \"ArrowLeft\") {\n return;\n }\n if (e.key === \"ArrowRight\") {\n return;\n }\n if (e.key === \"ArrowUp\") {\n e.preventDefault();\n updateValue(\"increment\");\n }\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n updateValue(\"decrement\");\n }\n if (e.key === \"Escape\") {\n escapeRef.current = true;\n e.target.blur();\n typeof onCancel === \"function\" && onCancel(e);\n escapeRef.current = false;\n }\n if (e.key === \"Backspace\") {\n return;\n }\n if ((e.metaKey || e.ctrlKey) && e.key === \"a\") {\n inputRef.current?.select();\n return;\n }\n if (e.key === \"Tab\") {\n return;\n }\n if ((e.metaKey || e.ctrlKey) && e.key === \"v\") {\n e.preventDefault();\n return;\n }\n const input = e.target;\n const currentValue = input.value;\n const start = input.selectionStart;\n const end = input.selectionEnd;\n const newValue =\n currentValue.substring(0, start) + e.key + currentValue.substring(end);\n if (\n !validation(\n newValue,\n Boolean(disableMacros),\n decimalSeparator,\n decimalLength ?? 0,\n limit\n )\n ) {\n e.preventDefault();\n return;\n }\n },\n [\n decimalLength,\n decimalSeparator,\n disableMacros,\n inputRef,\n limit,\n onCancel,\n onEnterKeyPress,\n updateValue,\n validation,\n ]\n );\n\n const handleChange = useCallback(\n (e) => {\n const inputValue = e.target.value;\n const numericInput = disableMacros\n ? inputValue\n : inputValue.replace(/([0-9.]+)([kmbtKMBT])/, (_, num, unit) => {\n return (\n parseFloat(num) * currencyMultiplier[unit.toLowerCase()]\n ).toString();\n });\n setCurrentValue(numericInput);\n setUnformattedValue(numericInput);\n if (onChange) onChange(numericInput);\n },\n [disableMacros, onChange]\n );\n\n const handleClick = useCallback(\n (e) => {\n if (typeof onClick === \"function\") {\n onClick(e);\n }\n },\n [onClick]\n );\n\n const handleFocus = useCallback(() => {\n setCurrentValue(unformattedValue);\n setFocused(true);\n }, [unformattedValue]);\n\n const handleDoubleClick = useCallback(() => {\n if (inputRef.current) {\n inputRef.current?.select();\n }\n }, [inputRef]);\n\n const inputProps = useMemo(() => {\n return {\n value: currentValue,\n onBlur: handleBlur,\n onKeyDown: handleKeyDown,\n onChange: handleChange,\n onClick: handleClick,\n onDoubleClick: handleDoubleClick,\n onFocus: handleFocus,\n focused,\n 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","useInputNumber","_ref","inputRef","decimalSeparator","thousandSeparator","disableAbbreviation","disableMacros","decimalLength","value","onChange","onSave","onEnterKeyPress","onClick","onCancel","allowEmptyValue","step","limit","validation","validateNumberInput","currentValue","setCurrentValue","useState","formatNumber","prevValue","setPrevValue","unformattedValue","setUnformattedValue","useEffect","focused","setFocused","escapeRef","useRef","handleBlur","useCallback","e","current","target","trim","length","_value","updateValue","type","String","decimalPart","increasedValue","nonDecimalPart","replaceAll","includes","slice","indexOf","parseFloat","toFixed","joinedValue","numberWithSeparator","handleKeyDown","key","blur","preventDefault","metaKey","ctrlKey","select","input","start","selectionStart","end","selectionEnd","newValue","substring","Boolean","handleChange","inputValue","numericInput","replace","_","num","unit","currencyMultiplier","toLowerCase","toString","handleClick","handleFocus","handleDoubleClick","inputProps","useMemo","onBlur","onKeyDown","onDoubleClick","onFocus","exports"],"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 +1 @@
1
- {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/utils/validation.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,qBAAqB,UAAW,MAAM,YAIlD,CAAC;AAEF,eAAO,MAAM,iBAAiB,UAAW,MAAM,mBAAmB,OAAO,YAUxE,CAAC;AAEF,eAAO,MAAM,mBAAmB,UACvB,MAAM,iBACE,OAAO,oBACJ,MAAM,iBACT,MAAM,UACb,MAAM,YA4Bf,CAAC"}
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/utils/validation.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,qBAAqB,UAAW,MAAM,YAIlD,CAAC;AAEF,eAAO,MAAM,iBAAiB,UAAW,MAAM,mBAAmB,OAAO,YAUxE,CAAC;AAEF,eAAO,MAAM,mBAAmB,UACvB,MAAM,iBACE,OAAO,oBACJ,MAAM,iBACT,MAAM,4BAkBtB,CAAC"}
@@ -17,21 +17,15 @@ const validateTimeInput = (value, withLeadingZero) => {
17
17
  }
18
18
  };
19
19
  exports.validateTimeInput = validateTimeInput;
20
- const validateNumberInput = (value, disableMacros, decimalSeparator, decimalLength, limit) => {
20
+ const validateNumberInput = function (value, disableMacros, decimalSeparator, decimalLength) {
21
+ let limit = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 12;
21
22
  if (value.startsWith("00")) {
22
23
  return false;
23
24
  }
24
25
  const numericInput = disableMacros ? value : value.replace(/([0-9.]+)([kmbtKMBT])/, (_, num, unit) => {
25
26
  return (parseFloat(num) * _currencyUtils.currencyMultiplier[unit.toLowerCase()]).toString();
26
27
  });
27
- if (limit) {
28
- const decimalIndex = numericInput.indexOf(decimalSeparator);
29
- const integerPart = decimalIndex !== -1 ? numericInput.substring(0, decimalIndex) : numericInput;
30
- if (integerPart.length > limit) {
31
- return false;
32
- }
33
- }
34
- const regexString = `^(-?\\d{0,9}(?:\\${decimalSeparator}\\d{0,${decimalLength}})?)?$`;
28
+ const regexString = `^(-?\\d{0,${limit}}(?:\\${decimalSeparator}\\d{0,${decimalLength}})?)?$`;
35
29
  return new RegExp(regexString).test(numericInput);
36
30
  };
37
31
  exports.validateNumberInput = validateNumberInput;
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","names":["_currencyUtils","require","validateStopwatchTime","value","test","exports","validateTimeInput","withLeadingZero","validateNumberInput","disableMacros","decimalSeparator","decimalLength","limit","startsWith","numericInput","replace","_","num","unit","parseFloat","currencyMultiplier","toLowerCase","toString","decimalIndex","indexOf","integerPart","substring","length","regexString","RegExp"],"sources":["../../../src/utils/validation.ts"],"sourcesContent":["import { currencyMultiplier } from \"./currencyUtils\";\n\nexport const validateStopwatchTime = (value: string) => {\n return /^([0-9]{0,2})?(((:([0-5][0-9])?)|(:[0-5]?))|(\\.[0-9]{0,2})|(,[0-9]{0,2}))?$/g.test(\n value\n );\n};\n\nexport const validateTimeInput = (value: string, withLeadingZero: boolean) => {\n if (withLeadingZero) {\n return /^(([0-9][0-9]?|[1-9][0-9]{2,8})?(([:,.][0-5][0-9]?)|([:,.][0-5]?)|(\\.[0-9]{1,2})|(,[0-9]{1,2}))?)$/.test(\n value\n );\n } else {\n return /^(([1-9][0-9]*|0)?(([:,.][0-5][0-9]?)|([:,.][0-5]?)|(\\.[0-9]{1,2})|(,[0-9]{1,2}))?)$/.test(\n value\n );\n }\n};\n\nexport const validateNumberInput = (\n value: string,\n disableMacros: boolean,\n decimalSeparator: string,\n decimalLength: number,\n limit?: number\n) => {\n if (value.startsWith(\"00\")) {\n return false;\n }\n\n const numericInput = disableMacros\n ? value\n : value.replace(/([0-9.]+)([kmbtKMBT])/, (_, num, unit) => {\n return (\n parseFloat(num) * currencyMultiplier[unit.toLowerCase()]\n ).toString();\n });\n\n if (limit) {\n const decimalIndex = numericInput.indexOf(decimalSeparator);\n const integerPart =\n decimalIndex !== -1\n ? numericInput.substring(0, decimalIndex)\n : numericInput;\n if (integerPart.length > limit) {\n return false;\n }\n }\n\n const regexString = `^(-?\\\\d{0,9}(?:\\\\${decimalSeparator}\\\\d{0,${decimalLength}})?)?$`;\n\n return new RegExp(regexString).test(numericInput);\n};\n"],"mappings":";;;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AAEO,MAAMC,qBAAqB,GAAIC,KAAa,IAAK;EACtD,OAAO,8EAA8E,CAACC,IAAI,CACxFD,KACF,CAAC;AACH,CAAC;AAACE,OAAA,CAAAH,qBAAA,GAAAA,qBAAA;AAEK,MAAMI,iBAAiB,GAAGA,CAACH,KAAa,EAAEI,eAAwB,KAAK;EAC5E,IAAIA,eAAe,EAAE;IACnB,OAAO,oGAAoG,CAACH,IAAI,CAC9GD,KACF,CAAC;EACH,CAAC,MAAM;IACL,OAAO,sFAAsF,CAACC,IAAI,CAChGD,KACF,CAAC;EACH;AACF,CAAC;AAACE,OAAA,CAAAC,iBAAA,GAAAA,iBAAA;AAEK,MAAME,mBAAmB,GAAGA,CACjCL,KAAa,EACbM,aAAsB,EACtBC,gBAAwB,EACxBC,aAAqB,EACrBC,KAAc,KACX;EACH,IAAIT,KAAK,CAACU,UAAU,CAAC,IAAI,CAAC,EAAE;IAC1B,OAAO,KAAK;EACd;EAEA,MAAMC,YAAY,GAAGL,aAAa,GAC9BN,KAAK,GACLA,KAAK,CAACY,OAAO,CAAC,uBAAuB,EAAE,CAACC,CAAC,EAAEC,GAAG,EAAEC,IAAI,KAAK;IACvD,OAAO,CACLC,UAAU,CAACF,GAAG,CAAC,GAAGG,iCAAkB,CAACF,IAAI,CAACG,WAAW,CAAC,CAAC,CAAC,EACxDC,QAAQ,CAAC,CAAC;EACd,CAAC,CAAC;EAEN,IAAIV,KAAK,EAAE;IACT,MAAMW,YAAY,GAAGT,YAAY,CAACU,OAAO,CAACd,gBAAgB,CAAC;IAC3D,MAAMe,WAAW,GACfF,YAAY,KAAK,CAAC,CAAC,GACfT,YAAY,CAACY,SAAS,CAAC,CAAC,EAAEH,YAAY,CAAC,GACvCT,YAAY;IAClB,IAAIW,WAAW,CAACE,MAAM,GAAGf,KAAK,EAAE;MAC9B,OAAO,KAAK;IACd;EACF;EAEA,MAAMgB,WAAW,GAAI,oBAAmBlB,gBAAiB,SAAQC,aAAc,QAAO;EAEtF,OAAO,IAAIkB,MAAM,CAACD,WAAW,CAAC,CAACxB,IAAI,CAACU,YAAY,CAAC;AACnD,CAAC;AAACT,OAAA,CAAAG,mBAAA,GAAAA,mBAAA"}
1
+ {"version":3,"file":"validation.js","names":["_currencyUtils","require","validateStopwatchTime","value","test","exports","validateTimeInput","withLeadingZero","validateNumberInput","disableMacros","decimalSeparator","decimalLength","limit","arguments","length","undefined","startsWith","numericInput","replace","_","num","unit","parseFloat","currencyMultiplier","toLowerCase","toString","regexString","RegExp"],"sources":["../../../src/utils/validation.ts"],"sourcesContent":["import { currencyMultiplier } from \"./currencyUtils\";\n\nexport const validateStopwatchTime = (value: string) => {\n return /^([0-9]{0,2})?(((:([0-5][0-9])?)|(:[0-5]?))|(\\.[0-9]{0,2})|(,[0-9]{0,2}))?$/g.test(\n value\n );\n};\n\nexport const validateTimeInput = (value: string, withLeadingZero: boolean) => {\n if (withLeadingZero) {\n return /^(([0-9][0-9]?|[1-9][0-9]{2,8})?(([:,.][0-5][0-9]?)|([:,.][0-5]?)|(\\.[0-9]{1,2})|(,[0-9]{1,2}))?)$/.test(\n value\n );\n } else {\n return /^(([1-9][0-9]*|0)?(([:,.][0-5][0-9]?)|([:,.][0-5]?)|(\\.[0-9]{1,2})|(,[0-9]{1,2}))?)$/.test(\n value\n );\n }\n};\n\nexport const validateNumberInput = (\n value: string,\n disableMacros: boolean,\n decimalSeparator: string,\n decimalLength: number,\n limit = 12\n) => {\n if (value.startsWith(\"00\")) {\n return false;\n }\n\n const numericInput = disableMacros\n ? value\n : value.replace(/([0-9.]+)([kmbtKMBT])/, (_, num, unit) => {\n return (\n parseFloat(num) * currencyMultiplier[unit.toLowerCase()]\n ).toString();\n });\n\n const regexString = `^(-?\\\\d{0,${limit}}(?:\\\\${decimalSeparator}\\\\d{0,${decimalLength}})?)?$`;\n\n return new RegExp(regexString).test(numericInput);\n};\n"],"mappings":";;;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AAEO,MAAMC,qBAAqB,GAAIC,KAAa,IAAK;EACtD,OAAO,8EAA8E,CAACC,IAAI,CACxFD,KACF,CAAC;AACH,CAAC;AAACE,OAAA,CAAAH,qBAAA,GAAAA,qBAAA;AAEK,MAAMI,iBAAiB,GAAGA,CAACH,KAAa,EAAEI,eAAwB,KAAK;EAC5E,IAAIA,eAAe,EAAE;IACnB,OAAO,oGAAoG,CAACH,IAAI,CAC9GD,KACF,CAAC;EACH,CAAC,MAAM;IACL,OAAO,sFAAsF,CAACC,IAAI,CAChGD,KACF,CAAC;EACH;AACF,CAAC;AAACE,OAAA,CAAAC,iBAAA,GAAAA,iBAAA;AAEK,MAAME,mBAAmB,GAAG,SAAAA,CACjCL,KAAa,EACbM,aAAsB,EACtBC,gBAAwB,EACxBC,aAAqB,EAElB;EAAA,IADHC,KAAK,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,EAAE;EAEV,IAAIV,KAAK,CAACa,UAAU,CAAC,IAAI,CAAC,EAAE;IAC1B,OAAO,KAAK;EACd;EAEA,MAAMC,YAAY,GAAGR,aAAa,GAC9BN,KAAK,GACLA,KAAK,CAACe,OAAO,CAAC,uBAAuB,EAAE,CAACC,CAAC,EAAEC,GAAG,EAAEC,IAAI,KAAK;IACvD,OAAO,CACLC,UAAU,CAACF,GAAG,CAAC,GAAGG,iCAAkB,CAACF,IAAI,CAACG,WAAW,CAAC,CAAC,CAAC,EACxDC,QAAQ,CAAC,CAAC;EACd,CAAC,CAAC;EAEN,MAAMC,WAAW,GAAI,aAAYd,KAAM,SAAQF,gBAAiB,SAAQC,aAAc,QAAO;EAE7F,OAAO,IAAIgB,MAAM,CAACD,WAAW,CAAC,CAACtB,IAAI,CAACa,YAAY,CAAC;AACnD,CAAC;AAACZ,OAAA,CAAAG,mBAAA,GAAAA,mBAAA"}