@activecollab/components 2.0.93 → 2.0.95
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/AutoResizeTextarea/AutoResizeTextarea.js +4 -1
- package/dist/cjs/components/AutoResizeTextarea/AutoResizeTextarea.js.map +1 -1
- package/dist/cjs/components/EditableCurrency/EditableCurrency.js +8 -5
- package/dist/cjs/components/EditableCurrency/EditableCurrency.js.map +1 -1
- package/dist/cjs/components/Input/Input.js +6 -1
- package/dist/cjs/components/Input/Input.js.map +1 -1
- package/dist/cjs/components/Input/InputNumber.js +5 -2
- package/dist/cjs/components/Input/InputNumber.js.map +1 -1
- package/dist/cjs/components/Input/Styles.js +7 -3
- package/dist/cjs/components/Input/Styles.js.map +1 -1
- package/dist/cjs/components/Input/types.js.map +1 -1
- package/dist/cjs/components/Textarea/Styles.js +7 -3
- package/dist/cjs/components/Textarea/Styles.js.map +1 -1
- package/dist/cjs/components/Textarea/Textarea.js +5 -1
- package/dist/cjs/components/Textarea/Textarea.js.map +1 -1
- package/dist/cjs/hooks/useInputNumber.js +9 -7
- package/dist/cjs/hooks/useInputNumber.js.map +1 -1
- package/dist/esm/components/AutoResizeTextarea/AutoResizeTextarea.d.ts +2 -0
- package/dist/esm/components/AutoResizeTextarea/AutoResizeTextarea.d.ts.map +1 -1
- package/dist/esm/components/AutoResizeTextarea/AutoResizeTextarea.js +2 -0
- package/dist/esm/components/AutoResizeTextarea/AutoResizeTextarea.js.map +1 -1
- package/dist/esm/components/AutoResizeTextarea/Styles.d.ts +1 -1
- package/dist/esm/components/AutoResizeTextarea/Styles.d.ts.map +1 -1
- package/dist/esm/components/EditableCurrency/EditableCurrency.d.ts.map +1 -1
- package/dist/esm/components/EditableCurrency/EditableCurrency.js +6 -4
- package/dist/esm/components/EditableCurrency/EditableCurrency.js.map +1 -1
- package/dist/esm/components/Input/Input.d.ts +2 -1
- package/dist/esm/components/Input/Input.d.ts.map +1 -1
- package/dist/esm/components/Input/Input.js +4 -0
- package/dist/esm/components/Input/Input.js.map +1 -1
- package/dist/esm/components/Input/InputNumber.d.ts.map +1 -1
- package/dist/esm/components/Input/InputNumber.js +3 -1
- package/dist/esm/components/Input/InputNumber.js.map +1 -1
- package/dist/esm/components/Input/Styles.d.ts +4 -1
- package/dist/esm/components/Input/Styles.d.ts.map +1 -1
- package/dist/esm/components/Input/Styles.js +2 -2
- package/dist/esm/components/Input/Styles.js.map +1 -1
- package/dist/esm/components/Input/types.d.ts +1 -0
- package/dist/esm/components/Input/types.d.ts.map +1 -1
- package/dist/esm/components/Input/types.js.map +1 -1
- package/dist/esm/components/Textarea/Styles.d.ts +2 -0
- package/dist/esm/components/Textarea/Styles.d.ts.map +1 -1
- package/dist/esm/components/Textarea/Styles.js +5 -5
- package/dist/esm/components/Textarea/Styles.js.map +1 -1
- package/dist/esm/components/Textarea/Textarea.d.ts +3 -1
- package/dist/esm/components/Textarea/Textarea.d.ts.map +1 -1
- package/dist/esm/components/Textarea/Textarea.js +3 -0
- package/dist/esm/components/Textarea/Textarea.js.map +1 -1
- package/dist/esm/hooks/useInputNumber.d.ts +2 -1
- package/dist/esm/hooks/useInputNumber.d.ts.map +1 -1
- package/dist/esm/hooks/useInputNumber.js +8 -7
- package/dist/esm/hooks/useInputNumber.js.map +1 -1
- package/dist/index.js +51 -23
- 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
|
@@ -4,7 +4,7 @@ import { FontStyle } from "../FontStyle";
|
|
|
4
4
|
export const StyledTextarea = styled.textarea.withConfig({
|
|
5
5
|
displayName: "Styles__StyledTextarea",
|
|
6
6
|
componentId: "sc-m6jqw8-0"
|
|
7
|
-
})(["", " ", " ", " ", " ", " border-width:1px;border-style:solid;", " border-radius:8px;padding:4px 8px 6px 8px;height:auto;
|
|
7
|
+
})(["", " ", " ", " ", " ", " border-width:1px;border-style:solid;background-color:var(--input-background-color);", " border-radius:8px;padding:4px 8px 6px 8px;height:auto;transition:all 0.3s ease;width:360px;min-height:90px;outline:none;", " ", " ", " ", " ", " &::placeholder{", "}", " ", ""], {
|
|
8
8
|
"fontSize": "0.875rem"
|
|
9
9
|
}, {
|
|
10
10
|
"color": "var(--color-theme-900)"
|
|
@@ -16,15 +16,15 @@ export const StyledTextarea = styled.textarea.withConfig({
|
|
|
16
16
|
"fontWeight": "400"
|
|
17
17
|
}, {
|
|
18
18
|
"borderColor": "var(--color-theme-500)"
|
|
19
|
-
}, FontStyle, BoxSizingStyle, props => props.disabled && css(["", ""], {
|
|
19
|
+
}, FontStyle, BoxSizingStyle, props => props.$mode === "flat" && css(["border:none;background-color:transparent;"]), props => props.disabled && css(["", ""], {
|
|
20
20
|
"cursor": "not-allowed",
|
|
21
21
|
"opacity": "0.5"
|
|
22
|
-
}), props => !props.disabled && !props.$invalid && css(["&:active,&:focus,&:hover{", "}"], {
|
|
22
|
+
}), props => !props.disabled && !props.$invalid && props.$mode === "outlined" && css(["&:active,&:focus,&:hover{", "}"], {
|
|
23
23
|
"borderColor": "var(--color-primary)"
|
|
24
24
|
}), {
|
|
25
25
|
"color": "var(--color-theme-transparent-500)"
|
|
26
|
-
}, props => !props.disabled && props.$invalid && css(["", ""], {
|
|
26
|
+
}, props => !props.disabled && props.$invalid && props.$mode === "outlined" && css(["", ""], {
|
|
27
27
|
"borderColor": "var(--red-alert)"
|
|
28
|
-
}));
|
|
28
|
+
}), props => !props.disabled && props.$invalid && props.$mode === "flat" && css(["color:var(--red-alert);"]));
|
|
29
29
|
StyledTextarea.displayName = "StyledTextarea";
|
|
30
30
|
//# sourceMappingURL=Styles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Styles.js","names":["styled","css","BoxSizingStyle","FontStyle","StyledTextarea","textarea","withConfig","displayName","componentId","props","disabled","$invalid"],"sources":["../../../../src/components/Textarea/Styles.ts"],"sourcesContent":["import styled, { css } from \"styled-components\";\nimport tw from \"twin.macro\";\n\nimport { BoxSizingStyle } from \"../BoxSizingStyle\";\nimport { FontStyle } from \"../FontStyle\";\n\ninterface StyledTextareaProps {\n disabled: boolean;\n $invalid: boolean;\n}\n\nexport const StyledTextarea = styled.textarea<StyledTextareaProps>`\n ${tw`tw-text-body-2`}\n ${tw`tw-text-theme-900`}\n ${tw`tw-leading-regular`}\n ${tw`tw-tracking-regular`}\n ${tw`tw-font-regular`}\n border-width: 1px;\n border-style: solid;\n ${tw`tw-border-theme-500`}\n border-radius: 8px;\n padding: 4px 8px 6px 8px;\n height: auto;\n
|
|
1
|
+
{"version":3,"file":"Styles.js","names":["styled","css","BoxSizingStyle","FontStyle","StyledTextarea","textarea","withConfig","displayName","componentId","props","$mode","disabled","$invalid"],"sources":["../../../../src/components/Textarea/Styles.ts"],"sourcesContent":["import styled, { css } from \"styled-components\";\nimport tw from \"twin.macro\";\n\nimport { BoxSizingStyle } from \"../BoxSizingStyle\";\nimport { FontStyle } from \"../FontStyle\";\nimport { InputMode } from \"../Input/types\";\n\ninterface StyledTextareaProps {\n disabled: boolean;\n $invalid: boolean;\n $mode: InputMode;\n}\n\nexport const StyledTextarea = styled.textarea<StyledTextareaProps>`\n ${tw`tw-text-body-2`}\n ${tw`tw-text-theme-900`}\n ${tw`tw-leading-regular`}\n ${tw`tw-tracking-regular`}\n ${tw`tw-font-regular`}\n border-width: 1px;\n border-style: solid;\n background-color: var(--input-background-color);\n ${tw`tw-border-theme-500`}\n border-radius: 8px;\n padding: 4px 8px 6px 8px;\n height: auto;\n transition: all 0.3s ease;\n width: 360px;\n min-height: 90px;\n outline: none;\n ${FontStyle}\n ${BoxSizingStyle}\n\n ${(props) =>\n props.$mode === \"flat\" &&\n css`\n border: none;\n background-color: transparent;\n `}\n\n ${(props) =>\n props.disabled &&\n css`\n ${tw`tw-cursor-not-allowed tw-opacity-50`}\n `}\n\n ${(props) =>\n !props.disabled &&\n !props.$invalid &&\n props.$mode === \"outlined\" &&\n css`\n &:active,\n &:focus,\n &:hover {\n ${tw`tw-border-primary`}\n }\n `}\n\n &::placeholder {\n ${tw`tw-text-theme-transparent-500`}\n }\n\n ${(props) =>\n !props.disabled &&\n props.$invalid &&\n props.$mode === \"outlined\" &&\n css`\n ${tw`tw-border-alert`}\n `}\n\n ${(props) =>\n !props.disabled &&\n props.$invalid &&\n props.$mode === \"flat\" &&\n css`\n color: var(--red-alert);\n `}\n`;\n\nStyledTextarea.displayName = \"StyledTextarea\";\n"],"mappings":"AAAA,OAAOA,MAAM,IAAIC,GAAG,QAAQ,mBAAmB;AAG/C,SAASC,cAAc,QAAQ,mBAAmB;AAClD,SAASC,SAAS,QAAQ,cAAc;AASxC,OAAO,MAAMC,cAAc,GAAGJ,MAAM,CAACK,QAAQ,CAAAC,UAAA;EAAAC,WAAA;EAAAC,WAAA;AAAA,wSACvC;EAAA;AAAe,CAAC,EAChB;EAAA;AAAkB,CAAC,EACnB;EAAA;AAAmB,CAAC,EACpB;EAAA;AAAoB,CAAC,EACrB;EAAA;AAAgB,CAAC,EAIjB;EAAA;AAAoB,CAAC,EAQvBL,SAAS,EACTD,cAAc,EAEbO,KAAK,IACNA,KAAK,CAACC,KAAK,KAAK,MAAM,IACtBT,GAAG,+CAGF,EAEAQ,KAAK,IACNA,KAAK,CAACE,QAAQ,IACdV,GAAG,WACG;EAAA;EAAA;AAAoC,CAAC,CAC1C,EAEAQ,KAAK,IACN,CAACA,KAAK,CAACE,QAAQ,IACf,CAACF,KAAK,CAACG,QAAQ,IACfH,KAAK,CAACC,KAAK,KAAK,UAAU,IAC1BT,GAAG,qCAIK;EAAA;AAAkB,CAAC,CAE1B,EAGG;EAAA;AAA8B,CAAC,EAGlCQ,KAAK,IACN,CAACA,KAAK,CAACE,QAAQ,IACfF,KAAK,CAACG,QAAQ,IACdH,KAAK,CAACC,KAAK,KAAK,UAAU,IAC1BT,GAAG,WACG;EAAA;AAAgB,CAAC,CACtB,EAEAQ,KAAK,IACN,CAACA,KAAK,CAACE,QAAQ,IACfF,KAAK,CAACG,QAAQ,IACdH,KAAK,CAACC,KAAK,KAAK,MAAM,IACtBT,GAAG,6BAEF,CACJ;AAEDG,cAAc,CAACG,WAAW,GAAG,gBAAgB"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
+
import { InputMode } from "../Input/types";
|
|
2
3
|
export interface TextareaProps {
|
|
3
4
|
invalid?: boolean;
|
|
5
|
+
mode?: InputMode;
|
|
4
6
|
}
|
|
5
|
-
export declare const Textarea: React.ForwardRefExoticComponent<TextareaProps & Omit<Omit<React.DetailedHTMLProps<React.TextareaHTMLAttributes<HTMLTextAreaElement>, HTMLTextAreaElement>, "ref">,
|
|
7
|
+
export declare const Textarea: React.ForwardRefExoticComponent<TextareaProps & Omit<Omit<React.DetailedHTMLProps<React.TextareaHTMLAttributes<HTMLTextAreaElement>, HTMLTextAreaElement>, "ref">, keyof TextareaProps> & React.RefAttributes<HTMLTextAreaElement>>;
|
|
6
8
|
//# sourceMappingURL=Textarea.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Textarea.d.ts","sourceRoot":"","sources":["../../../../src/components/Textarea/Textarea.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0B,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Textarea.d.ts","sourceRoot":"","sources":["../../../../src/components/Textarea/Textarea.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0B,MAAM,OAAO,CAAC;AAK/C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED,eAAO,MAAM,QAAQ,qOA4BpB,CAAC"}
|
|
@@ -7,12 +7,15 @@ export const Textarea = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
|
7
7
|
className,
|
|
8
8
|
disabled = false,
|
|
9
9
|
invalid = false,
|
|
10
|
+
mode = "outlined",
|
|
10
11
|
...rest
|
|
11
12
|
} = _ref;
|
|
12
13
|
return /*#__PURE__*/React.createElement(StyledTextarea, _extends({}, rest, {
|
|
13
14
|
$invalid: invalid,
|
|
14
15
|
ref: ref,
|
|
16
|
+
$mode: mode,
|
|
15
17
|
disabled: disabled,
|
|
18
|
+
"aria-invalid": invalid,
|
|
16
19
|
className: classnames("c-textarea", {
|
|
17
20
|
"c-textarea__disabled": disabled
|
|
18
21
|
}, className)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Textarea.js","names":["React","forwardRef","classnames","StyledTextarea","Textarea","_ref","ref","className","disabled","invalid","rest","createElement","_extends","$invalid","displayName"],"sources":["../../../../src/components/Textarea/Textarea.tsx"],"sourcesContent":["import React, { forwardRef, Ref } from \"react\";\n\nimport classnames from \"classnames\";\n\nimport { StyledTextarea } from \"./Styles\";\n\nexport interface TextareaProps {\n invalid?: boolean;\n}\n\nexport const Textarea = forwardRef(\n (\n {\n className,\n disabled = false,\n invalid = false,\n ...rest\n }: TextareaProps &\n Omit<React.ComponentPropsWithoutRef<\"textarea\">, keyof TextareaProps>,\n ref: Ref<HTMLTextAreaElement> | null | undefined\n ) => {\n return (\n <StyledTextarea\n {...rest}\n $invalid={invalid}\n ref={ref}\n disabled={disabled}\n className={classnames(\n \"c-textarea\",\n { \"c-textarea__disabled\": disabled },\n className\n )}\n />\n );\n }\n);\n\nTextarea.displayName = \"Textarea\";\n"],"mappings":";AAAA,OAAOA,KAAK,IAAIC,UAAU,QAAa,OAAO;AAE9C,OAAOC,UAAU,MAAM,YAAY;AAEnC,SAASC,cAAc,QAAQ,UAAU;
|
|
1
|
+
{"version":3,"file":"Textarea.js","names":["React","forwardRef","classnames","StyledTextarea","Textarea","_ref","ref","className","disabled","invalid","mode","rest","createElement","_extends","$invalid","$mode","displayName"],"sources":["../../../../src/components/Textarea/Textarea.tsx"],"sourcesContent":["import React, { forwardRef, Ref } from \"react\";\n\nimport classnames from \"classnames\";\n\nimport { StyledTextarea } from \"./Styles\";\nimport { InputMode } from \"../Input/types\";\n\nexport interface TextareaProps {\n invalid?: boolean;\n mode?: InputMode;\n}\n\nexport const Textarea = forwardRef(\n (\n {\n className,\n disabled = false,\n invalid = false,\n mode = \"outlined\",\n ...rest\n }: TextareaProps &\n Omit<React.ComponentPropsWithoutRef<\"textarea\">, keyof TextareaProps>,\n ref: Ref<HTMLTextAreaElement> | null | undefined\n ) => {\n return (\n <StyledTextarea\n {...rest}\n $invalid={invalid}\n ref={ref}\n $mode={mode}\n disabled={disabled}\n aria-invalid={invalid}\n className={classnames(\n \"c-textarea\",\n { \"c-textarea__disabled\": disabled },\n className\n )}\n />\n );\n }\n);\n\nTextarea.displayName = \"Textarea\";\n"],"mappings":";AAAA,OAAOA,KAAK,IAAIC,UAAU,QAAa,OAAO;AAE9C,OAAOC,UAAU,MAAM,YAAY;AAEnC,SAASC,cAAc,QAAQ,UAAU;AAQzC,OAAO,MAAMC,QAAQ,gBAAGH,UAAU,CAChC,CAAAI,IAAA,EASEC,GAAgD,KAC7C;EAAA,IATH;IACEC,SAAS;IACTC,QAAQ,GAAG,KAAK;IAChBC,OAAO,GAAG,KAAK;IACfC,IAAI,GAAG,UAAU;IACjB,GAAGC;EAEiE,CAAC,GAAAN,IAAA;EAGvE,oBACEL,KAAA,CAAAY,aAAA,CAACT,cAAc,EAAAU,QAAA,KACTF,IAAI;IACRG,QAAQ,EAAEL,OAAQ;IAClBH,GAAG,EAAEA,GAAI;IACTS,KAAK,EAAEL,IAAK;IACZF,QAAQ,EAAEA,QAAS;IACnB,gBAAcC,OAAQ;IACtBF,SAAS,EAAEL,UAAU,CACnB,YAAY,EACZ;MAAE,sBAAsB,EAAEM;IAAS,CAAC,EACpCD,SACF;EAAE,EACH,CAAC;AAEN,CACF,CAAC;AAEDH,QAAQ,CAACY,WAAW,GAAG,UAAU"}
|
|
@@ -6,6 +6,7 @@ export interface IInputNumber {
|
|
|
6
6
|
disableAbbreviation?: boolean;
|
|
7
7
|
disableMacros?: boolean;
|
|
8
8
|
thousandSeparator?: Separators;
|
|
9
|
+
trimDecimals?: boolean;
|
|
9
10
|
onSave?: (e: Event) => void;
|
|
10
11
|
value?: string | number;
|
|
11
12
|
step?: number;
|
|
@@ -17,7 +18,7 @@ export interface IInputNumber {
|
|
|
17
18
|
onCancel?: (e: Event) => void;
|
|
18
19
|
validation?: (value: string, disableMacros: boolean, decimalSeparator: string, decimalLength: number, limit?: number) => boolean;
|
|
19
20
|
}
|
|
20
|
-
export declare const useInputNumber: ({ decimalSeparator, thousandSeparator, disableAbbreviation, disableMacros, decimalLength, value, onChange, onSave, onEnterKeyPress, onClick, onCancel, allowEmptyValue, step, limit, validation, }: IInputNumber, inputRef: RefObject<HTMLInputElement | null>) => {
|
|
21
|
+
export declare const useInputNumber: ({ decimalSeparator, thousandSeparator, disableAbbreviation, disableMacros, decimalLength, value, onChange, onSave, onEnterKeyPress, onClick, onCancel, allowEmptyValue, step, trimDecimals, limit, validation, }: IInputNumber, inputRef: RefObject<HTMLInputElement | null>) => {
|
|
21
22
|
inputProps: {
|
|
22
23
|
value: string | number;
|
|
23
24
|
onBlur: (e: any) => void;
|
|
@@ -1 +1 @@
|
|
|
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,GAAG,GAAG,CAAC;AAEzC,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,
|
|
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,GAAG,GAAG,CAAC;AAEzC,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,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,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,qNAkBtB,YAAY,YACL,UAAU,gBAAgB,GAAG,IAAI,CAAC;;;;;;;;;;;;;;CA8S7C,CAAC"}
|
|
@@ -16,20 +16,21 @@ export const useInputNumber = (_ref, inputRef) => {
|
|
|
16
16
|
onCancel,
|
|
17
17
|
allowEmptyValue,
|
|
18
18
|
step = 1,
|
|
19
|
+
trimDecimals = true,
|
|
19
20
|
limit,
|
|
20
21
|
validation = validateNumberInput
|
|
21
22
|
} = _ref;
|
|
22
|
-
const [currentValue, setCurrentValue] = useState(() => disableAbbreviation ? value : formatNumber(value, thousandSeparator));
|
|
23
|
-
const [prevValue, setPrevValue] = useState(() => disableAbbreviation ? value : formatNumber(value, thousandSeparator));
|
|
23
|
+
const [currentValue, setCurrentValue] = useState(() => disableAbbreviation ? value : formatNumber(value, thousandSeparator, decimalSeparator, trimDecimals, decimalLength));
|
|
24
|
+
const [prevValue, setPrevValue] = useState(() => disableAbbreviation ? value : formatNumber(value, thousandSeparator, decimalSeparator, trimDecimals, decimalLength));
|
|
24
25
|
const [unformattedValue, setUnformattedValue] = useState(() => value);
|
|
25
26
|
useEffect(() => {
|
|
26
27
|
if (value !== prevValue) {
|
|
27
|
-
setCurrentValue(disableAbbreviation ? value : formatNumber(value, thousandSeparator));
|
|
28
|
-
setPrevValue(disableAbbreviation ? value : formatNumber(value, thousandSeparator));
|
|
28
|
+
setCurrentValue(disableAbbreviation ? value : formatNumber(value, thousandSeparator, decimalSeparator, trimDecimals, decimalLength));
|
|
29
|
+
setPrevValue(disableAbbreviation ? value : formatNumber(value, thousandSeparator, decimalSeparator, trimDecimals, decimalLength));
|
|
29
30
|
setUnformattedValue(value);
|
|
30
31
|
}
|
|
31
32
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
32
|
-
}, [disableAbbreviation, thousandSeparator, value]);
|
|
33
|
+
}, [disableAbbreviation, thousandSeparator, decimalSeparator, decimalLength, trimDecimals, value]);
|
|
33
34
|
const [focused, setFocused] = useState(false);
|
|
34
35
|
const escapeRef = useRef(false);
|
|
35
36
|
const handleBlur = useCallback(e => {
|
|
@@ -38,7 +39,7 @@ export const useInputNumber = (_ref, inputRef) => {
|
|
|
38
39
|
setUnformattedValue(prevValue);
|
|
39
40
|
} else {
|
|
40
41
|
if (e.target.value.trim().length > 0 && prevValue !== e.target.value) {
|
|
41
|
-
const _value = disableAbbreviation ? currentValue : formatNumber(currentValue, thousandSeparator);
|
|
42
|
+
const _value = disableAbbreviation ? currentValue : formatNumber(currentValue, thousandSeparator, decimalSeparator, trimDecimals, decimalLength);
|
|
42
43
|
setPrevValue(_value);
|
|
43
44
|
setUnformattedValue(currentValue);
|
|
44
45
|
setCurrentValue(_value);
|
|
@@ -58,7 +59,7 @@ export const useInputNumber = (_ref, inputRef) => {
|
|
|
58
59
|
}
|
|
59
60
|
}
|
|
60
61
|
setFocused(false);
|
|
61
|
-
}, [
|
|
62
|
+
}, [prevValue, disableAbbreviation, currentValue, thousandSeparator, decimalSeparator, decimalLength, trimDecimals, onSave, allowEmptyValue, onCancel]);
|
|
62
63
|
const updateValue = useCallback(type => {
|
|
63
64
|
const value = String(unformattedValue);
|
|
64
65
|
let decimalPart = "";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useInputNumber.js","names":["useState","useRef","useCallback","useMemo","useEffect","validateNumberInput","currencyMultiplier","formatNumber","numberWithSeparator","useInputNumber","_ref","inputRef","decimalSeparator","thousandSeparator","disableAbbreviation","disableMacros","decimalLength","value","onChange","onSave","onEnterKeyPress","onClick","onCancel","allowEmptyValue","step","limit","validation","currentValue","setCurrentValue","prevValue","setPrevValue","unformattedValue","setUnformattedValue","focused","setFocused","escapeRef","handleBlur","e","current","target","trim","length","_value","updateValue","type","String","decimalPart","increasedValue","nonDecimalPart","replaceAll","includes","slice","indexOf","parseFloat","toFixed","joinedValue","handleKeyDown","key","blur","preventDefault","metaKey","ctrlKey","_inputRef$current","select","input","start","selectionStart","end","selectionEnd","newValue","substring","Boolean","handleChange","inputValue","numericInput","replace","_","num","unit","toLowerCase","toString","handleClick","handleFocus","handleDoubleClick","_inputRef$current2","inputProps","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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"}
|
|
1
|
+
{"version":3,"file":"useInputNumber.js","names":["useState","useRef","useCallback","useMemo","useEffect","validateNumberInput","currencyMultiplier","formatNumber","numberWithSeparator","useInputNumber","_ref","inputRef","decimalSeparator","thousandSeparator","disableAbbreviation","disableMacros","decimalLength","value","onChange","onSave","onEnterKeyPress","onClick","onCancel","allowEmptyValue","step","trimDecimals","limit","validation","currentValue","setCurrentValue","prevValue","setPrevValue","unformattedValue","setUnformattedValue","focused","setFocused","escapeRef","handleBlur","e","current","target","trim","length","_value","updateValue","type","String","decimalPart","increasedValue","nonDecimalPart","replaceAll","includes","slice","indexOf","parseFloat","toFixed","joinedValue","handleKeyDown","key","blur","preventDefault","metaKey","ctrlKey","_inputRef$current","select","input","start","selectionStart","end","selectionEnd","newValue","substring","Boolean","handleChange","inputValue","numericInput","replace","_","num","unit","toLowerCase","toString","handleClick","handleFocus","handleDoubleClick","_inputRef$current2","inputProps","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 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}\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 }: IInputNumber,\n inputRef: RefObject<HTMLInputElement | null>\n) => {\n const [currentValue, setCurrentValue] = useState(() =>\n disableAbbreviation\n ? value\n : formatNumber(\n value as string,\n thousandSeparator,\n decimalSeparator,\n trimDecimals,\n decimalLength\n )\n );\n const [prevValue, setPrevValue] = useState(() =>\n disableAbbreviation\n ? value\n : formatNumber(\n value as string,\n thousandSeparator,\n decimalSeparator,\n trimDecimals,\n decimalLength\n )\n );\n const [unformattedValue, setUnformattedValue] = useState(() => value);\n\n useEffect(() => {\n if (value !== prevValue) {\n setCurrentValue(\n disableAbbreviation\n ? value\n : formatNumber(\n value as string,\n thousandSeparator,\n decimalSeparator,\n trimDecimals,\n decimalLength\n )\n );\n setPrevValue(\n disableAbbreviation\n ? value\n : formatNumber(\n value as string,\n thousandSeparator,\n decimalSeparator,\n trimDecimals,\n decimalLength\n )\n );\n setUnformattedValue(value);\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(prevValue);\n } else {\n if (e.target.value.trim().length > 0 && prevValue !== e.target.value) {\n const _value = disableAbbreviation\n ? currentValue\n : formatNumber(\n currentValue as string,\n thousandSeparator,\n decimalSeparator,\n trimDecimals,\n decimalLength\n );\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 prevValue,\n disableAbbreviation,\n currentValue,\n thousandSeparator,\n decimalSeparator,\n decimalLength,\n trimDecimals,\n onSave,\n allowEmptyValue,\n onCancel,\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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"}
|
package/dist/index.js
CHANGED
|
@@ -11527,7 +11527,9 @@
|
|
|
11527
11527
|
var StyledInputWrapper = styled__default["default"].div.withConfig({
|
|
11528
11528
|
displayName: "Styles__StyledInputWrapper",
|
|
11529
11529
|
componentId: "sc-ce8kcp-0"
|
|
11530
|
-
})(["align-items:center;
|
|
11530
|
+
})(["align-items:center;cursor:text;display:flex;height:32px;padding-block:4px;padding-inline:4px;transition:all 0.3s ease;width:360px;", " ", " ", " ", " ", " ", " ", " ", " ", ""], FontStyle, BoxSizingStyle, function (props) {
|
|
11531
|
+
return props.$mode === "outlined" && styled.css(["background-color:var(--input-background-color);border-color:var(--color-theme-500);border-radius:8px;border-style:solid;border-width:1px;"]);
|
|
11532
|
+
}, function (props) {
|
|
11531
11533
|
return props.$size === "small" && styled.css(["border-radius:6px;height:24px;"]);
|
|
11532
11534
|
}, function (props) {
|
|
11533
11535
|
return props.$size === "big" && styled.css(["height:40px;"]);
|
|
@@ -11538,13 +11540,13 @@
|
|
|
11538
11540
|
}, function (props) {
|
|
11539
11541
|
return !props.$disabled && !props.$invalid && styled.css(["&:focus-within,&:hover{border-color:var(--color-primary);}"]);
|
|
11540
11542
|
}, function (props) {
|
|
11541
|
-
return !props.$disabled && props.$invalid && styled.css(["border-color:var(--red-alert);"]);
|
|
11543
|
+
return !props.$disabled && props.$invalid && props.$mode === "outlined" && styled.css(["border-color:var(--red-alert);"]);
|
|
11542
11544
|
});
|
|
11543
11545
|
StyledInputWrapper.displayName = "StyledInputWrapper";
|
|
11544
11546
|
var StyledInput$2 = styled__default["default"].input.withConfig({
|
|
11545
11547
|
displayName: "Styles__StyledInput",
|
|
11546
11548
|
componentId: "sc-ce8kcp-1"
|
|
11547
|
-
})(["background-color:var(--input-background-color);border:none;color:var(--color-theme-900);font-size:0.875rem;font-weight:400;letter-spacing:0.02em;margin-block:0;margin-inline:4px;outline:none;padding:0;width:100%;&::placeholder{color:var(--color-theme-transparent-500);}", " ", " ", " ", " ", ""], function (props) {
|
|
11549
|
+
})(["background-color:var(--input-background-color);border:none;color:var(--color-theme-900);font-size:0.875rem;font-weight:400;letter-spacing:0.02em;margin-block:0;margin-inline:4px;outline:none;padding:0;width:100%;&::placeholder{color:var(--color-theme-transparent-500);}", " ", " ", " ", " ", " ", ""], function (props) {
|
|
11548
11550
|
return props.$size === "big" && styled.css(["font-size:1rem;"]);
|
|
11549
11551
|
}, function (props) {
|
|
11550
11552
|
return props.$size === "biggest" && styled.css(["font-size:1.25rem;font-weight:700;"]);
|
|
@@ -11554,6 +11556,8 @@
|
|
|
11554
11556
|
return props.$loading && styled.css(["cursor:progress;"]);
|
|
11555
11557
|
}, function (props) {
|
|
11556
11558
|
return props.align && styled.css(["text-align:", ";"], props.align);
|
|
11559
|
+
}, function (props) {
|
|
11560
|
+
return props.$mode === "flat" && props.$invalid && styled.css(["color:var(--red-alert);"]);
|
|
11557
11561
|
});
|
|
11558
11562
|
StyledInput$2.displayName = "StyledInput";
|
|
11559
11563
|
var StyledPasswordIndicatorWrapper = styled__default["default"].div.withConfig({
|
|
@@ -11598,7 +11602,7 @@
|
|
|
11598
11602
|
});
|
|
11599
11603
|
StyledInputSelectTrigger.displayName = "StyledInputSelectTrigger";
|
|
11600
11604
|
|
|
11601
|
-
var _excluded$R = ["className", "style", "type", "disabled", "size", "invalid", "startAdornment", "endAdornment", "wrapRef", "wrapperClick"];
|
|
11605
|
+
var _excluded$R = ["className", "style", "type", "disabled", "size", "invalid", "startAdornment", "endAdornment", "wrapRef", "wrapperClick", "mode"];
|
|
11602
11606
|
var Input = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, ref) {
|
|
11603
11607
|
var _ref$className = _ref.className,
|
|
11604
11608
|
className = _ref$className === void 0 ? "" : _ref$className,
|
|
@@ -11615,6 +11619,8 @@
|
|
|
11615
11619
|
endAdornment = _ref.endAdornment,
|
|
11616
11620
|
wrapRef = _ref.wrapRef,
|
|
11617
11621
|
wrapperClick = _ref.wrapperClick,
|
|
11622
|
+
_ref$mode = _ref.mode,
|
|
11623
|
+
mode = _ref$mode === void 0 ? "outlined" : _ref$mode,
|
|
11618
11624
|
rest = _objectWithoutProperties(_ref, _excluded$R);
|
|
11619
11625
|
var intInputRef = React.useRef(null);
|
|
11620
11626
|
var handleRef = useForkRef(ref, intInputRef);
|
|
@@ -11627,6 +11633,7 @@
|
|
|
11627
11633
|
$size: size,
|
|
11628
11634
|
$invalid: invalid,
|
|
11629
11635
|
$disabled: disabled,
|
|
11636
|
+
$mode: mode,
|
|
11630
11637
|
style: style,
|
|
11631
11638
|
className: classNames__default["default"]("c-input-wrapper", className),
|
|
11632
11639
|
onClick: handleWrapperClick,
|
|
@@ -11638,6 +11645,8 @@
|
|
|
11638
11645
|
disabled: disabled,
|
|
11639
11646
|
className: "c-input",
|
|
11640
11647
|
"aria-invalid": invalid,
|
|
11648
|
+
$invalid: invalid,
|
|
11649
|
+
$mode: mode,
|
|
11641
11650
|
"data-form-type": "other"
|
|
11642
11651
|
}, rest)), endAdornment);
|
|
11643
11652
|
});
|
|
@@ -11976,17 +11985,19 @@
|
|
|
11976
11985
|
allowEmptyValue = _ref.allowEmptyValue,
|
|
11977
11986
|
_ref$step = _ref.step,
|
|
11978
11987
|
step = _ref$step === void 0 ? 1 : _ref$step,
|
|
11988
|
+
_ref$trimDecimals = _ref.trimDecimals,
|
|
11989
|
+
trimDecimals = _ref$trimDecimals === void 0 ? true : _ref$trimDecimals,
|
|
11979
11990
|
limit = _ref.limit,
|
|
11980
11991
|
_ref$validation = _ref.validation,
|
|
11981
11992
|
validation = _ref$validation === void 0 ? validateNumberInput : _ref$validation;
|
|
11982
11993
|
var _useState = React.useState(function () {
|
|
11983
|
-
return disableAbbreviation ? value : formatNumber(value, thousandSeparator);
|
|
11994
|
+
return disableAbbreviation ? value : formatNumber(value, thousandSeparator, decimalSeparator, trimDecimals, decimalLength);
|
|
11984
11995
|
}),
|
|
11985
11996
|
_useState2 = _slicedToArray(_useState, 2),
|
|
11986
11997
|
currentValue = _useState2[0],
|
|
11987
11998
|
setCurrentValue = _useState2[1];
|
|
11988
11999
|
var _useState3 = React.useState(function () {
|
|
11989
|
-
return disableAbbreviation ? value : formatNumber(value, thousandSeparator);
|
|
12000
|
+
return disableAbbreviation ? value : formatNumber(value, thousandSeparator, decimalSeparator, trimDecimals, decimalLength);
|
|
11990
12001
|
}),
|
|
11991
12002
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
11992
12003
|
prevValue = _useState4[0],
|
|
@@ -11999,12 +12010,12 @@
|
|
|
11999
12010
|
setUnformattedValue = _useState6[1];
|
|
12000
12011
|
React.useEffect(function () {
|
|
12001
12012
|
if (value !== prevValue) {
|
|
12002
|
-
setCurrentValue(disableAbbreviation ? value : formatNumber(value, thousandSeparator));
|
|
12003
|
-
setPrevValue(disableAbbreviation ? value : formatNumber(value, thousandSeparator));
|
|
12013
|
+
setCurrentValue(disableAbbreviation ? value : formatNumber(value, thousandSeparator, decimalSeparator, trimDecimals, decimalLength));
|
|
12014
|
+
setPrevValue(disableAbbreviation ? value : formatNumber(value, thousandSeparator, decimalSeparator, trimDecimals, decimalLength));
|
|
12004
12015
|
setUnformattedValue(value);
|
|
12005
12016
|
}
|
|
12006
12017
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
12007
|
-
}, [disableAbbreviation, thousandSeparator, value]);
|
|
12018
|
+
}, [disableAbbreviation, thousandSeparator, decimalSeparator, decimalLength, trimDecimals, value]);
|
|
12008
12019
|
var _useState7 = React.useState(false),
|
|
12009
12020
|
_useState8 = _slicedToArray(_useState7, 2),
|
|
12010
12021
|
focused = _useState8[0],
|
|
@@ -12016,7 +12027,7 @@
|
|
|
12016
12027
|
setUnformattedValue(prevValue);
|
|
12017
12028
|
} else {
|
|
12018
12029
|
if (e.target.value.trim().length > 0 && prevValue !== e.target.value) {
|
|
12019
|
-
var _value = disableAbbreviation ? currentValue : formatNumber(currentValue, thousandSeparator);
|
|
12030
|
+
var _value = disableAbbreviation ? currentValue : formatNumber(currentValue, thousandSeparator, decimalSeparator, trimDecimals, decimalLength);
|
|
12020
12031
|
setPrevValue(_value);
|
|
12021
12032
|
setUnformattedValue(currentValue);
|
|
12022
12033
|
setCurrentValue(_value);
|
|
@@ -12036,7 +12047,7 @@
|
|
|
12036
12047
|
}
|
|
12037
12048
|
}
|
|
12038
12049
|
setFocused(false);
|
|
12039
|
-
}, [
|
|
12050
|
+
}, [prevValue, disableAbbreviation, currentValue, thousandSeparator, decimalSeparator, decimalLength, trimDecimals, onSave, allowEmptyValue, onCancel]);
|
|
12040
12051
|
var updateValue = React.useCallback(function (type) {
|
|
12041
12052
|
var value = String(unformattedValue);
|
|
12042
12053
|
var decimalPart = "";
|
|
@@ -13598,7 +13609,7 @@
|
|
|
13598
13609
|
});
|
|
13599
13610
|
InputHours.displayName = "InputHours";
|
|
13600
13611
|
|
|
13601
|
-
var _excluded$K = ["decimalLength", "decimalSeparator", "disableAbbreviation", "disabled", "disableMacros", "invalid", "step", "thousandSeparator", "value", "onCancel", "onSave", "onEnterKeyPress", "allowEmptyValue", "onChange", "onClick", "limit", "placeholder"];
|
|
13612
|
+
var _excluded$K = ["decimalLength", "decimalSeparator", "disableAbbreviation", "disabled", "disableMacros", "invalid", "step", "thousandSeparator", "value", "onCancel", "onSave", "onEnterKeyPress", "allowEmptyValue", "onChange", "onClick", "limit", "placeholder", "trimDecimals"];
|
|
13602
13613
|
var InputNumber = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
13603
13614
|
var _ref$decimalLength = _ref.decimalLength,
|
|
13604
13615
|
decimalLength = _ref$decimalLength === void 0 ? 2 : _ref$decimalLength,
|
|
@@ -13623,6 +13634,8 @@
|
|
|
13623
13634
|
externalOnClick = _ref.onClick,
|
|
13624
13635
|
limit = _ref.limit,
|
|
13625
13636
|
placeholder = _ref.placeholder,
|
|
13637
|
+
_ref$trimDecimals = _ref.trimDecimals,
|
|
13638
|
+
trimDecimals = _ref$trimDecimals === void 0 ? true : _ref$trimDecimals,
|
|
13626
13639
|
rest = _objectWithoutProperties(_ref, _excluded$K);
|
|
13627
13640
|
var inputRef = React.useRef(null);
|
|
13628
13641
|
var handleRef = useForkRef(ref, inputRef);
|
|
@@ -13640,7 +13653,8 @@
|
|
|
13640
13653
|
onCancel,
|
|
13641
13654
|
onSave,
|
|
13642
13655
|
allowEmptyValue,
|
|
13643
|
-
limit
|
|
13656
|
+
limit,
|
|
13657
|
+
trimDecimals
|
|
13644
13658
|
}, inputRef),
|
|
13645
13659
|
inputProps = _useInputNumber.inputProps;
|
|
13646
13660
|
var value = inputProps.value,
|
|
@@ -14088,7 +14102,7 @@
|
|
|
14088
14102
|
var StyledTextarea = styled__default["default"].textarea.withConfig({
|
|
14089
14103
|
displayName: "Styles__StyledTextarea",
|
|
14090
14104
|
componentId: "sc-m6jqw8-0"
|
|
14091
|
-
})(["", " ", " ", " ", " ", " border-width:1px;border-style:solid;", " border-radius:8px;padding:4px 8px 6px 8px;height:auto;
|
|
14105
|
+
})(["", " ", " ", " ", " ", " border-width:1px;border-style:solid;background-color:var(--input-background-color);", " border-radius:8px;padding:4px 8px 6px 8px;height:auto;transition:all 0.3s ease;width:360px;min-height:90px;outline:none;", " ", " ", " ", " ", " &::placeholder{", "}", " ", ""], {
|
|
14092
14106
|
"fontSize": "0.875rem"
|
|
14093
14107
|
}, {
|
|
14094
14108
|
"color": "var(--color-theme-900)"
|
|
@@ -14101,35 +14115,43 @@
|
|
|
14101
14115
|
}, {
|
|
14102
14116
|
"borderColor": "var(--color-theme-500)"
|
|
14103
14117
|
}, FontStyle, BoxSizingStyle, function (props) {
|
|
14118
|
+
return props.$mode === "flat" && styled.css(["border:none;background-color:transparent;"]);
|
|
14119
|
+
}, function (props) {
|
|
14104
14120
|
return props.disabled && styled.css(["", ""], {
|
|
14105
14121
|
"cursor": "not-allowed",
|
|
14106
14122
|
"opacity": "0.5"
|
|
14107
14123
|
});
|
|
14108
14124
|
}, function (props) {
|
|
14109
|
-
return !props.disabled && !props.$invalid && styled.css(["&:active,&:focus,&:hover{", "}"], {
|
|
14125
|
+
return !props.disabled && !props.$invalid && props.$mode === "outlined" && styled.css(["&:active,&:focus,&:hover{", "}"], {
|
|
14110
14126
|
"borderColor": "var(--color-primary)"
|
|
14111
14127
|
});
|
|
14112
14128
|
}, {
|
|
14113
14129
|
"color": "var(--color-theme-transparent-500)"
|
|
14114
14130
|
}, function (props) {
|
|
14115
|
-
return !props.disabled && props.$invalid && styled.css(["", ""], {
|
|
14131
|
+
return !props.disabled && props.$invalid && props.$mode === "outlined" && styled.css(["", ""], {
|
|
14116
14132
|
"borderColor": "var(--red-alert)"
|
|
14117
14133
|
});
|
|
14134
|
+
}, function (props) {
|
|
14135
|
+
return !props.disabled && props.$invalid && props.$mode === "flat" && styled.css(["color:var(--red-alert);"]);
|
|
14118
14136
|
});
|
|
14119
14137
|
StyledTextarea.displayName = "StyledTextarea";
|
|
14120
14138
|
|
|
14121
|
-
var _excluded$F = ["className", "disabled", "invalid"];
|
|
14139
|
+
var _excluded$F = ["className", "disabled", "invalid", "mode"];
|
|
14122
14140
|
var Textarea = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
14123
14141
|
var className = _ref.className,
|
|
14124
14142
|
_ref$disabled = _ref.disabled,
|
|
14125
14143
|
disabled = _ref$disabled === void 0 ? false : _ref$disabled,
|
|
14126
14144
|
_ref$invalid = _ref.invalid,
|
|
14127
14145
|
invalid = _ref$invalid === void 0 ? false : _ref$invalid,
|
|
14146
|
+
_ref$mode = _ref.mode,
|
|
14147
|
+
mode = _ref$mode === void 0 ? "outlined" : _ref$mode,
|
|
14128
14148
|
rest = _objectWithoutProperties(_ref, _excluded$F);
|
|
14129
14149
|
return /*#__PURE__*/React__default["default"].createElement(StyledTextarea, _extends({}, rest, {
|
|
14130
14150
|
$invalid: invalid,
|
|
14131
14151
|
ref: ref,
|
|
14152
|
+
$mode: mode,
|
|
14132
14153
|
disabled: disabled,
|
|
14154
|
+
"aria-invalid": invalid,
|
|
14133
14155
|
className: classNames__default["default"]("c-textarea", {
|
|
14134
14156
|
"c-textarea__disabled": disabled
|
|
14135
14157
|
}, className)
|
|
@@ -14457,7 +14479,7 @@
|
|
|
14457
14479
|
})(["white-space:pre-wrap;overflow-wrap:break-word;resize:none;"]);
|
|
14458
14480
|
StyledAutoResizeTextarea.displayName = "StyledAutoResizeTextarea";
|
|
14459
14481
|
|
|
14460
|
-
var _excluded$B = ["minRows", "maxRows", "lineHeight", "onChange", "className", "preventNewRowOnEnter", "cursorAtTextEnd", "onKeyDown", "value"];
|
|
14482
|
+
var _excluded$B = ["minRows", "maxRows", "lineHeight", "onChange", "className", "preventNewRowOnEnter", "cursorAtTextEnd", "onKeyDown", "value", "mode"];
|
|
14461
14483
|
var AutoResizeTextarea = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
14462
14484
|
var _ref$minRows = _ref.minRows,
|
|
14463
14485
|
minRows = _ref$minRows === void 0 ? 1 : _ref$minRows,
|
|
@@ -14473,6 +14495,8 @@
|
|
|
14473
14495
|
cursorAtTextEnd = _ref$cursorAtTextEnd === void 0 ? false : _ref$cursorAtTextEnd,
|
|
14474
14496
|
onKeyDown = _ref.onKeyDown,
|
|
14475
14497
|
value = _ref.value,
|
|
14498
|
+
_ref$mode = _ref.mode,
|
|
14499
|
+
mode = _ref$mode === void 0 ? "outlined" : _ref$mode,
|
|
14476
14500
|
rest = _objectWithoutProperties(_ref, _excluded$B);
|
|
14477
14501
|
var innerRef = React.useRef(null);
|
|
14478
14502
|
var _useState = React.useState(minRows),
|
|
@@ -14520,6 +14544,7 @@
|
|
|
14520
14544
|
onKeyDown: handleTextAreaKeyDown,
|
|
14521
14545
|
onFocus: handleFocus,
|
|
14522
14546
|
rows: rows,
|
|
14547
|
+
mode: mode,
|
|
14523
14548
|
className: classNames__default["default"]("c-autoresizetextarea", className),
|
|
14524
14549
|
style: {
|
|
14525
14550
|
minHeight: "".concat(lineHeight, "px"),
|
|
@@ -17688,7 +17713,7 @@
|
|
|
17688
17713
|
});
|
|
17689
17714
|
EditableHours.displayName = "EditableHours";
|
|
17690
17715
|
|
|
17691
|
-
var _excluded$c = ["decimalLength", "decimalSeparator", "disableAbbreviation", "disabled", "disableMacros", "step", "thousandSeparator", "value", "onSave", "onCancel", "className", "allowEmptyValue", "onEnterKeyPress", "onClick", "onChange"];
|
|
17716
|
+
var _excluded$c = ["decimalLength", "decimalSeparator", "disableAbbreviation", "disabled", "disableMacros", "step", "thousandSeparator", "value", "onSave", "onCancel", "className", "allowEmptyValue", "onEnterKeyPress", "onClick", "onChange", "trimDecimals"];
|
|
17692
17717
|
var EditableCurrency = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, ref) {
|
|
17693
17718
|
var _ref$decimalLength = _ref.decimalLength,
|
|
17694
17719
|
decimalLength = _ref$decimalLength === void 0 ? 2 : _ref$decimalLength,
|
|
@@ -17711,6 +17736,8 @@
|
|
|
17711
17736
|
externalEnterKeyPress = _ref.onEnterKeyPress,
|
|
17712
17737
|
externalOnClick = _ref.onClick,
|
|
17713
17738
|
externalOnChange = _ref.onChange,
|
|
17739
|
+
_ref$trimDecimals = _ref.trimDecimals,
|
|
17740
|
+
trimDecimals = _ref$trimDecimals === void 0 ? true : _ref$trimDecimals,
|
|
17714
17741
|
rest = _objectWithoutProperties(_ref, _excluded$c);
|
|
17715
17742
|
var inputRef = React.useRef(null);
|
|
17716
17743
|
var handleRef = useForkRef(ref, inputRef);
|
|
@@ -17727,7 +17754,8 @@
|
|
|
17727
17754
|
onCancel,
|
|
17728
17755
|
onChange: externalOnChange,
|
|
17729
17756
|
onEnterKeyPress: externalEnterKeyPress,
|
|
17730
|
-
onClick: externalOnClick
|
|
17757
|
+
onClick: externalOnClick,
|
|
17758
|
+
trimDecimals
|
|
17731
17759
|
}, inputRef),
|
|
17732
17760
|
inputProps = _useInputNumber.inputProps;
|
|
17733
17761
|
var value = inputProps.value,
|
|
@@ -17740,10 +17768,10 @@
|
|
|
17740
17768
|
focused = inputProps.focused,
|
|
17741
17769
|
unformattedValue = inputProps.unformattedValue;
|
|
17742
17770
|
var formattedValue = React.useMemo(function () {
|
|
17743
|
-
return focused ? value : numberWithSeparator(value !== null && value !== void 0 ? value : "", thousandSeparator);
|
|
17744
|
-
}, [focused, value, thousandSeparator]);
|
|
17771
|
+
return focused ? value : numberWithSeparator(value !== null && value !== void 0 ? value : "", thousandSeparator, decimalSeparator);
|
|
17772
|
+
}, [focused, value, thousandSeparator, decimalSeparator]);
|
|
17745
17773
|
return /*#__PURE__*/React__default["default"].createElement(Tooltip, {
|
|
17746
|
-
title: unformattedValue,
|
|
17774
|
+
title: numberWithSeparator(unformattedValue !== null && unformattedValue !== void 0 ? unformattedValue : "", thousandSeparator, decimalSeparator),
|
|
17747
17775
|
disable: focused
|
|
17748
17776
|
}, /*#__PURE__*/React__default["default"].createElement(EditableContent, {
|
|
17749
17777
|
disabled: disabled,
|