@ttoss/forms 0.26.0 → 0.26.2
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/LICENSE +21 -674
- package/package.json +11 -11
- package/src/Brazil/FormFieldCEP.tsx +0 -25
- package/src/Brazil/FormFieldCNPJ.tsx +0 -93
- package/src/Brazil/FormFieldPhone.tsx +0 -41
- package/src/Brazil/index.ts +0 -4
- package/src/Form.tsx +0 -29
- package/src/FormErrorMessage.tsx +0 -60
- package/src/FormField.tsx +0 -86
- package/src/FormFieldCheckbox.tsx +0 -49
- package/src/FormFieldCreditCardNumber.tsx +0 -25
- package/src/FormFieldCurrencyInput.tsx +0 -36
- package/src/FormFieldInput.tsx +0 -43
- package/src/FormFieldNumericFormat.tsx +0 -35
- package/src/FormFieldPassword.tsx +0 -43
- package/src/FormFieldPatternFormat.tsx +0 -36
- package/src/FormFieldRadio.tsx +0 -57
- package/src/FormFieldSelect.tsx +0 -47
- package/src/FormFieldTextarea.tsx +0 -36
- package/src/FormGroup.tsx +0 -136
- package/src/MultistepForm/MultistepFlowMessage.tsx +0 -14
- package/src/MultistepForm/MultistepFlowMessageImageText.tsx +0 -37
- package/src/MultistepForm/MultistepFooter.tsx +0 -18
- package/src/MultistepForm/MultistepForm.tsx +0 -117
- package/src/MultistepForm/MultistepFormStepper.tsx +0 -70
- package/src/MultistepForm/MultistepHeader.tsx +0 -78
- package/src/MultistepForm/MultistepNavigation.tsx +0 -38
- package/src/MultistepForm/MultistepQuestion.tsx +0 -28
- package/src/MultistepForm/index.ts +0 -1
- package/src/MultistepForm/types.ts +0 -7
- package/src/index.ts +0 -35
- package/src/yup/i18n.ts +0 -31
- package/src/yup/schema.ts +0 -26
- package/src/yup/typings.d.ts +0 -14
- package/src/yup/yup.ts +0 -4
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ttoss/forms",
|
|
3
|
-
"version": "0.26.
|
|
3
|
+
"version": "0.26.2",
|
|
4
|
+
"license": "MIT",
|
|
4
5
|
"author": "ttoss",
|
|
5
6
|
"contributors": [
|
|
6
7
|
"Pedro Arantes <pedro@arantespp.com> (https://arantespp.com/contact)"
|
|
@@ -26,8 +27,7 @@
|
|
|
26
27
|
}
|
|
27
28
|
},
|
|
28
29
|
"files": [
|
|
29
|
-
"dist"
|
|
30
|
-
"src"
|
|
30
|
+
"dist"
|
|
31
31
|
],
|
|
32
32
|
"sideEffects": true,
|
|
33
33
|
"dependencies": {
|
|
@@ -39,8 +39,8 @@
|
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {
|
|
41
41
|
"react": ">=16.8.0",
|
|
42
|
-
"@ttoss/react-i18n": "^2.0.
|
|
43
|
-
"@ttoss/ui": "^5.0.
|
|
42
|
+
"@ttoss/react-i18n": "^2.0.4",
|
|
43
|
+
"@ttoss/ui": "^5.0.9"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"@types/jest": "^29.5.13",
|
|
@@ -50,12 +50,12 @@
|
|
|
50
50
|
"react-error-boundary": "^4.0.13",
|
|
51
51
|
"tsup": "^8.3.0",
|
|
52
52
|
"yup": "^1.4.0",
|
|
53
|
-
"@ttoss/config": "^1.34.
|
|
54
|
-
"@ttoss/i18n-cli": "^0.7.
|
|
55
|
-
"@ttoss/react-i18n": "^2.0.
|
|
56
|
-
"@ttoss/react-icons": "^0.4.
|
|
57
|
-
"@ttoss/test-utils": "^2.1.
|
|
58
|
-
"@ttoss/ui": "^5.0.
|
|
53
|
+
"@ttoss/config": "^1.34.1",
|
|
54
|
+
"@ttoss/i18n-cli": "^0.7.22",
|
|
55
|
+
"@ttoss/react-i18n": "^2.0.4",
|
|
56
|
+
"@ttoss/react-icons": "^0.4.4",
|
|
57
|
+
"@ttoss/test-utils": "^2.1.17",
|
|
58
|
+
"@ttoss/ui": "^5.0.9"
|
|
59
59
|
},
|
|
60
60
|
"publishConfig": {
|
|
61
61
|
"access": "public",
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
FormFieldPatternFormat,
|
|
3
|
-
FormFieldPatternFormatProps,
|
|
4
|
-
} from '../FormFieldPatternFormat';
|
|
5
|
-
|
|
6
|
-
export type FormFieldCEPProps = {
|
|
7
|
-
label: string;
|
|
8
|
-
name: string;
|
|
9
|
-
} & Partial<FormFieldPatternFormatProps>;
|
|
10
|
-
|
|
11
|
-
export const FormFieldCEP = ({
|
|
12
|
-
label,
|
|
13
|
-
name,
|
|
14
|
-
...formFieldPatternFormatProps
|
|
15
|
-
}: FormFieldCEPProps) => {
|
|
16
|
-
return (
|
|
17
|
-
<FormFieldPatternFormat
|
|
18
|
-
name={name}
|
|
19
|
-
label={label}
|
|
20
|
-
format="#####-###"
|
|
21
|
-
placeholder="12345-678"
|
|
22
|
-
{...formFieldPatternFormatProps}
|
|
23
|
-
/>
|
|
24
|
-
);
|
|
25
|
-
};
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import { FormField } from '..';
|
|
2
|
-
import { Input } from '@ttoss/ui';
|
|
3
|
-
import { PatternFormat, PatternFormatProps } from 'react-number-format';
|
|
4
|
-
|
|
5
|
-
export type FormFieldCNPJProps = {
|
|
6
|
-
label: string;
|
|
7
|
-
name: string;
|
|
8
|
-
} & Partial<PatternFormatProps>;
|
|
9
|
-
|
|
10
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
11
|
-
export const isCnpjValid = (cnpj: any) => {
|
|
12
|
-
if (cnpj?.length != 14) {
|
|
13
|
-
return false;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
if (
|
|
17
|
-
cnpj == '00000000000000' ||
|
|
18
|
-
cnpj == '11111111111111' ||
|
|
19
|
-
cnpj == '22222222222222' ||
|
|
20
|
-
cnpj == '33333333333333' ||
|
|
21
|
-
cnpj == '44444444444444' ||
|
|
22
|
-
cnpj == '55555555555555' ||
|
|
23
|
-
cnpj == '66666666666666' ||
|
|
24
|
-
cnpj == '77777777777777' ||
|
|
25
|
-
cnpj == '88888888888888' ||
|
|
26
|
-
cnpj == '99999999999999'
|
|
27
|
-
) {
|
|
28
|
-
return false;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
// Valida DVs
|
|
32
|
-
let size = cnpj.length - 2;
|
|
33
|
-
let numbers = cnpj.substring(0, size);
|
|
34
|
-
const digits = cnpj.substring(size);
|
|
35
|
-
let soma = 0;
|
|
36
|
-
let pos = size - 7;
|
|
37
|
-
for (let i = size; i >= 1; i--) {
|
|
38
|
-
soma += numbers.charAt(size - i) * pos--;
|
|
39
|
-
if (pos < 2) {
|
|
40
|
-
pos = 9;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
let result = soma % 11 < 2 ? 0 : 11 - (soma % 11);
|
|
44
|
-
if (result != digits.charAt(0)) {
|
|
45
|
-
return false;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
size = size + 1;
|
|
49
|
-
numbers = cnpj.substring(0, size);
|
|
50
|
-
soma = 0;
|
|
51
|
-
pos = size - 7;
|
|
52
|
-
for (let i = size; i >= 1; i--) {
|
|
53
|
-
soma += numbers.charAt(size - i) * pos--;
|
|
54
|
-
if (pos < 2) {
|
|
55
|
-
pos = 9;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
result = soma % 11 < 2 ? 0 : 11 - (soma % 11);
|
|
59
|
-
if (result != digits.charAt(1)) {
|
|
60
|
-
return false;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
return true;
|
|
64
|
-
};
|
|
65
|
-
|
|
66
|
-
export const FormFieldCNPJ = ({
|
|
67
|
-
label,
|
|
68
|
-
name,
|
|
69
|
-
...patternFormatProps
|
|
70
|
-
}: FormFieldCNPJProps) => {
|
|
71
|
-
return (
|
|
72
|
-
<FormField
|
|
73
|
-
name={name}
|
|
74
|
-
label={label}
|
|
75
|
-
render={({ field }) => {
|
|
76
|
-
return (
|
|
77
|
-
<PatternFormat
|
|
78
|
-
name={field.name}
|
|
79
|
-
value={field.value}
|
|
80
|
-
onBlur={field.onBlur}
|
|
81
|
-
onValueChange={(values) => {
|
|
82
|
-
field.onChange(values.value);
|
|
83
|
-
}}
|
|
84
|
-
format={'##.###.###/####-##'}
|
|
85
|
-
customInput={Input}
|
|
86
|
-
placeholder="12.345.678/0000-00"
|
|
87
|
-
{...patternFormatProps}
|
|
88
|
-
/>
|
|
89
|
-
);
|
|
90
|
-
}}
|
|
91
|
-
/>
|
|
92
|
-
);
|
|
93
|
-
};
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { FormField } from '../FormField';
|
|
2
|
-
import { Input } from '@ttoss/ui';
|
|
3
|
-
|
|
4
|
-
import { PatternFormat, PatternFormatProps } from 'react-number-format';
|
|
5
|
-
|
|
6
|
-
export type FormFieldPhoneProps = {
|
|
7
|
-
label: string;
|
|
8
|
-
name: string;
|
|
9
|
-
} & Partial<PatternFormatProps>;
|
|
10
|
-
|
|
11
|
-
export const FormFieldPhone = ({
|
|
12
|
-
label,
|
|
13
|
-
name,
|
|
14
|
-
...patternFormatProps
|
|
15
|
-
}: FormFieldPhoneProps) => {
|
|
16
|
-
return (
|
|
17
|
-
<FormField
|
|
18
|
-
name={name}
|
|
19
|
-
label={label}
|
|
20
|
-
render={({ field }) => {
|
|
21
|
-
const format =
|
|
22
|
-
field.value?.length > 10 ? '(##) #####-####' : '(##) ####-#####';
|
|
23
|
-
|
|
24
|
-
return (
|
|
25
|
-
<PatternFormat
|
|
26
|
-
name={field.name}
|
|
27
|
-
value={field.value}
|
|
28
|
-
onBlur={field.onBlur}
|
|
29
|
-
onValueChange={(values) => {
|
|
30
|
-
field.onChange(values.value);
|
|
31
|
-
}}
|
|
32
|
-
format={format}
|
|
33
|
-
customInput={Input}
|
|
34
|
-
placeholder="(11) 91234-1234"
|
|
35
|
-
{...patternFormatProps}
|
|
36
|
-
/>
|
|
37
|
-
);
|
|
38
|
-
}}
|
|
39
|
-
/>
|
|
40
|
-
);
|
|
41
|
-
};
|
package/src/Brazil/index.ts
DELETED
package/src/Form.tsx
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
|
-
import { Box, BoxProps } from '@ttoss/ui';
|
|
3
|
-
import { FieldValues, FormProvider, FormProviderProps } from 'react-hook-form';
|
|
4
|
-
|
|
5
|
-
export const Form = <TFieldValues extends FieldValues = FieldValues>({
|
|
6
|
-
children,
|
|
7
|
-
onSubmit,
|
|
8
|
-
sx,
|
|
9
|
-
...formMethods
|
|
10
|
-
}: {
|
|
11
|
-
children?: React.ReactNode;
|
|
12
|
-
onSubmit?: (data: TFieldValues) => Promise<void> | void;
|
|
13
|
-
sx?: BoxProps['sx'];
|
|
14
|
-
} & FormProviderProps<TFieldValues>) => {
|
|
15
|
-
return (
|
|
16
|
-
<FormProvider {...formMethods}>
|
|
17
|
-
<Box
|
|
18
|
-
as="form"
|
|
19
|
-
variant="forms.form"
|
|
20
|
-
onSubmit={formMethods.handleSubmit((data) => {
|
|
21
|
-
return onSubmit?.(data);
|
|
22
|
-
})}
|
|
23
|
-
sx={sx}
|
|
24
|
-
>
|
|
25
|
-
{children}
|
|
26
|
-
</Box>
|
|
27
|
-
</FormProvider>
|
|
28
|
-
);
|
|
29
|
-
};
|
package/src/FormErrorMessage.tsx
DELETED
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
import { ErrorMessage } from '@hookform/error-message';
|
|
3
|
-
import {
|
|
4
|
-
FieldError,
|
|
5
|
-
FieldName,
|
|
6
|
-
FieldValues,
|
|
7
|
-
useFormContext,
|
|
8
|
-
} from 'react-hook-form';
|
|
9
|
-
import { FormattedMessage, MessageDescriptor } from '@ttoss/react-i18n';
|
|
10
|
-
import { HelpText } from '@ttoss/ui';
|
|
11
|
-
|
|
12
|
-
type ModifiedDescriptor = MessageDescriptor & { values?: any };
|
|
13
|
-
|
|
14
|
-
const isMessageDescriptor = (
|
|
15
|
-
possibleMessageDescriptor: unknown
|
|
16
|
-
): possibleMessageDescriptor is ModifiedDescriptor => {
|
|
17
|
-
return (
|
|
18
|
-
possibleMessageDescriptor !== undefined &&
|
|
19
|
-
(possibleMessageDescriptor as ModifiedDescriptor).defaultMessage !==
|
|
20
|
-
undefined
|
|
21
|
-
);
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
export const FormErrorMessage = <
|
|
25
|
-
TFieldValues extends FieldValues = FieldValues,
|
|
26
|
-
>({
|
|
27
|
-
name,
|
|
28
|
-
disabled,
|
|
29
|
-
}: {
|
|
30
|
-
name: FieldName<TFieldValues>;
|
|
31
|
-
disabled?: boolean;
|
|
32
|
-
}) => {
|
|
33
|
-
const {
|
|
34
|
-
formState: { errors },
|
|
35
|
-
} = useFormContext<TFieldValues>();
|
|
36
|
-
|
|
37
|
-
return (
|
|
38
|
-
<ErrorMessage
|
|
39
|
-
name={name as any}
|
|
40
|
-
errors={errors}
|
|
41
|
-
render={({ message }: { message: FieldError | string }) => {
|
|
42
|
-
return (
|
|
43
|
-
<HelpText negative disabled={disabled}>
|
|
44
|
-
{(() => {
|
|
45
|
-
if (typeof message === 'string') {
|
|
46
|
-
return message;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
if (isMessageDescriptor(message)) {
|
|
50
|
-
return <FormattedMessage {...message} />;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
return JSON.stringify(message);
|
|
54
|
-
})()}
|
|
55
|
-
</HelpText>
|
|
56
|
-
);
|
|
57
|
-
}}
|
|
58
|
-
/>
|
|
59
|
-
);
|
|
60
|
-
};
|
package/src/FormField.tsx
DELETED
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
|
-
import {
|
|
3
|
-
FieldPath,
|
|
4
|
-
FieldPathValue,
|
|
5
|
-
FieldValues,
|
|
6
|
-
UseControllerReturn,
|
|
7
|
-
useController,
|
|
8
|
-
} from 'react-hook-form';
|
|
9
|
-
import { Flex, Label, type SxProp } from '@ttoss/ui';
|
|
10
|
-
import { FormErrorMessage } from './FormErrorMessage';
|
|
11
|
-
|
|
12
|
-
export type FormFieldProps<
|
|
13
|
-
TFieldValues extends FieldValues = FieldValues,
|
|
14
|
-
TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,
|
|
15
|
-
> = {
|
|
16
|
-
label?: string;
|
|
17
|
-
id?: string;
|
|
18
|
-
name: TName;
|
|
19
|
-
defaultValue?: FieldPathValue<TFieldValues, TName>;
|
|
20
|
-
disabled?: boolean;
|
|
21
|
-
tooltip?: boolean;
|
|
22
|
-
onTooltipClick?: () => void;
|
|
23
|
-
} & SxProp;
|
|
24
|
-
|
|
25
|
-
type FormFieldCompleteProps<
|
|
26
|
-
TFieldValues extends FieldValues = FieldValues,
|
|
27
|
-
TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,
|
|
28
|
-
> = {
|
|
29
|
-
render: (
|
|
30
|
-
props: UseControllerReturn<TFieldValues, TName>
|
|
31
|
-
) => React.ReactElement;
|
|
32
|
-
} & FormFieldProps<TFieldValues, TName>;
|
|
33
|
-
|
|
34
|
-
export const FormField = <
|
|
35
|
-
TFieldValues extends FieldValues = FieldValues,
|
|
36
|
-
TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,
|
|
37
|
-
>({
|
|
38
|
-
label,
|
|
39
|
-
id: idProp,
|
|
40
|
-
name,
|
|
41
|
-
defaultValue,
|
|
42
|
-
disabled,
|
|
43
|
-
tooltip,
|
|
44
|
-
onTooltipClick,
|
|
45
|
-
sx,
|
|
46
|
-
css,
|
|
47
|
-
render,
|
|
48
|
-
}: FormFieldCompleteProps<TFieldValues, TName>) => {
|
|
49
|
-
const controllerReturn = useController<TFieldValues, TName>({
|
|
50
|
-
name,
|
|
51
|
-
defaultValue,
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
const id = idProp || `form-field-${name}`;
|
|
55
|
-
|
|
56
|
-
const memoizedRender = React.useMemo(() => {
|
|
57
|
-
return React.Children.map(render(controllerReturn), (child) => {
|
|
58
|
-
return (
|
|
59
|
-
<>
|
|
60
|
-
{label && (
|
|
61
|
-
<Label
|
|
62
|
-
aria-disabled={disabled}
|
|
63
|
-
htmlFor={id}
|
|
64
|
-
tooltip={tooltip}
|
|
65
|
-
onTooltipClick={onTooltipClick}
|
|
66
|
-
>
|
|
67
|
-
{label}
|
|
68
|
-
</Label>
|
|
69
|
-
)}
|
|
70
|
-
|
|
71
|
-
{React.createElement(child.type, { id, ...child.props })}
|
|
72
|
-
</>
|
|
73
|
-
);
|
|
74
|
-
});
|
|
75
|
-
}, [controllerReturn, disabled, onTooltipClick, tooltip, id, label, render]);
|
|
76
|
-
|
|
77
|
-
return (
|
|
78
|
-
<Flex
|
|
79
|
-
sx={{ flexDirection: 'column', width: '100%', gap: 'md', ...sx }}
|
|
80
|
-
css={css}
|
|
81
|
-
>
|
|
82
|
-
{memoizedRender}
|
|
83
|
-
<FormErrorMessage name={name} />
|
|
84
|
-
</Flex>
|
|
85
|
-
);
|
|
86
|
-
};
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { Checkbox, type CheckboxProps, Flex, Label } from '@ttoss/ui';
|
|
2
|
-
import { FieldPath, FieldValues, useController } from 'react-hook-form';
|
|
3
|
-
import { FormErrorMessage } from './FormErrorMessage';
|
|
4
|
-
|
|
5
|
-
export const FormFieldCheckbox = <
|
|
6
|
-
TFieldValues extends FieldValues = FieldValues,
|
|
7
|
-
>({
|
|
8
|
-
label,
|
|
9
|
-
name,
|
|
10
|
-
sx,
|
|
11
|
-
...checkboxProps
|
|
12
|
-
}: {
|
|
13
|
-
label?: string;
|
|
14
|
-
name: FieldPath<TFieldValues>;
|
|
15
|
-
} & CheckboxProps) => {
|
|
16
|
-
const {
|
|
17
|
-
field: { onChange, onBlur, value, ref },
|
|
18
|
-
formState: { errors },
|
|
19
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
20
|
-
} = useController<any>({
|
|
21
|
-
name,
|
|
22
|
-
defaultValue: false,
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
const id = `form-field-checkbox-${name}`;
|
|
26
|
-
|
|
27
|
-
const error = !!errors[name]?.message;
|
|
28
|
-
|
|
29
|
-
return (
|
|
30
|
-
<Flex sx={{ flexDirection: 'column', width: '100%', ...sx }}>
|
|
31
|
-
<Flex sx={{ alignItems: 'center' }}>
|
|
32
|
-
<Label aria-disabled={checkboxProps.disabled} htmlFor={id}>
|
|
33
|
-
<Checkbox
|
|
34
|
-
id={id}
|
|
35
|
-
ref={ref}
|
|
36
|
-
checked={value}
|
|
37
|
-
onChange={onChange}
|
|
38
|
-
onBlur={onBlur}
|
|
39
|
-
name={name}
|
|
40
|
-
aria-invalid={error ? 'true' : 'false'}
|
|
41
|
-
{...checkboxProps}
|
|
42
|
-
/>
|
|
43
|
-
{label}
|
|
44
|
-
</Label>
|
|
45
|
-
</Flex>
|
|
46
|
-
<FormErrorMessage name={name} />
|
|
47
|
-
</Flex>
|
|
48
|
-
);
|
|
49
|
-
};
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
FormFieldPatternFormat,
|
|
3
|
-
FormFieldPatternFormatProps,
|
|
4
|
-
} from './FormFieldPatternFormat';
|
|
5
|
-
|
|
6
|
-
export type FormFieldCreditCardNumberProps = {
|
|
7
|
-
label: string;
|
|
8
|
-
name: string;
|
|
9
|
-
} & Partial<FormFieldPatternFormatProps>;
|
|
10
|
-
|
|
11
|
-
export const FormFieldCreditCardNumber = ({
|
|
12
|
-
label,
|
|
13
|
-
name,
|
|
14
|
-
...formFieldPatternFormatProps
|
|
15
|
-
}: FormFieldCreditCardNumberProps) => {
|
|
16
|
-
return (
|
|
17
|
-
<FormFieldPatternFormat
|
|
18
|
-
name={name}
|
|
19
|
-
label={label}
|
|
20
|
-
format="#### #### #### ####"
|
|
21
|
-
placeholder="1234 1234 1234 1234"
|
|
22
|
-
{...formFieldPatternFormatProps}
|
|
23
|
-
/>
|
|
24
|
-
);
|
|
25
|
-
};
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
FormFieldNumericFormat,
|
|
3
|
-
FormFieldNumericFormatProps,
|
|
4
|
-
} from './FormFieldNumericFormat';
|
|
5
|
-
|
|
6
|
-
export type FormFieldCurrencyInputProps = {
|
|
7
|
-
label?: string;
|
|
8
|
-
name: string;
|
|
9
|
-
prefix: string;
|
|
10
|
-
decimalSeparator: string;
|
|
11
|
-
thousandSeparator: string;
|
|
12
|
-
} & FormFieldNumericFormatProps;
|
|
13
|
-
|
|
14
|
-
export const FormFieldCurrencyInput = ({
|
|
15
|
-
label,
|
|
16
|
-
name,
|
|
17
|
-
prefix,
|
|
18
|
-
decimalSeparator,
|
|
19
|
-
thousandSeparator,
|
|
20
|
-
...formFieldNumericFormatProps
|
|
21
|
-
}: FormFieldCurrencyInputProps) => {
|
|
22
|
-
return (
|
|
23
|
-
<FormFieldNumericFormat
|
|
24
|
-
name={name}
|
|
25
|
-
label={label}
|
|
26
|
-
fixedDecimalScale
|
|
27
|
-
decimalScale={2}
|
|
28
|
-
prefix={prefix}
|
|
29
|
-
decimalSeparator={decimalSeparator}
|
|
30
|
-
thousandSeparator={thousandSeparator}
|
|
31
|
-
placeholder={`${prefix} 0${decimalSeparator}00`}
|
|
32
|
-
allowNegative={false}
|
|
33
|
-
{...formFieldNumericFormatProps}
|
|
34
|
-
/>
|
|
35
|
-
);
|
|
36
|
-
};
|
package/src/FormFieldInput.tsx
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { FieldPath, FieldPathValue, FieldValues } from 'react-hook-form';
|
|
2
|
-
import { FormField, type FormFieldProps } from './FormField';
|
|
3
|
-
import { Input, type InputProps } from '@ttoss/ui';
|
|
4
|
-
|
|
5
|
-
export type FormFieldInputProps<TName> = {
|
|
6
|
-
label?: string;
|
|
7
|
-
name: TName;
|
|
8
|
-
} & InputProps &
|
|
9
|
-
FormFieldProps;
|
|
10
|
-
|
|
11
|
-
export const FormFieldInput = <
|
|
12
|
-
TFieldValues extends FieldValues = FieldValues,
|
|
13
|
-
TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,
|
|
14
|
-
>({
|
|
15
|
-
label,
|
|
16
|
-
name,
|
|
17
|
-
tooltip,
|
|
18
|
-
onTooltipClick,
|
|
19
|
-
sx,
|
|
20
|
-
defaultValue = '',
|
|
21
|
-
...inputProps
|
|
22
|
-
}: FormFieldInputProps<TName>) => {
|
|
23
|
-
return (
|
|
24
|
-
<FormField
|
|
25
|
-
name={name}
|
|
26
|
-
label={label}
|
|
27
|
-
disabled={inputProps.disabled}
|
|
28
|
-
tooltip={tooltip}
|
|
29
|
-
onTooltipClick={onTooltipClick}
|
|
30
|
-
sx={sx}
|
|
31
|
-
defaultValue={defaultValue as FieldPathValue<TFieldValues, TName>}
|
|
32
|
-
render={({ field, fieldState }) => {
|
|
33
|
-
return (
|
|
34
|
-
<Input
|
|
35
|
-
{...inputProps}
|
|
36
|
-
{...field}
|
|
37
|
-
aria-invalid={fieldState.error ? 'true' : undefined}
|
|
38
|
-
/>
|
|
39
|
-
);
|
|
40
|
-
}}
|
|
41
|
-
/>
|
|
42
|
-
);
|
|
43
|
-
};
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { FormField } from './FormField';
|
|
2
|
-
import { Input } from '@ttoss/ui';
|
|
3
|
-
import { NumericFormat, NumericFormatProps } from 'react-number-format';
|
|
4
|
-
|
|
5
|
-
export type FormFieldNumericFormatProps = {
|
|
6
|
-
label?: string;
|
|
7
|
-
name: string;
|
|
8
|
-
} & NumericFormatProps;
|
|
9
|
-
|
|
10
|
-
export const FormFieldNumericFormat = ({
|
|
11
|
-
label,
|
|
12
|
-
name,
|
|
13
|
-
...numericFormatProps
|
|
14
|
-
}: FormFieldNumericFormatProps) => {
|
|
15
|
-
return (
|
|
16
|
-
<FormField
|
|
17
|
-
label={label}
|
|
18
|
-
name={name}
|
|
19
|
-
render={({ field }) => {
|
|
20
|
-
return (
|
|
21
|
-
<NumericFormat
|
|
22
|
-
name={field.name}
|
|
23
|
-
value={field.value}
|
|
24
|
-
onBlur={field.onBlur}
|
|
25
|
-
onValueChange={(values) => {
|
|
26
|
-
field.onChange(values.floatValue);
|
|
27
|
-
}}
|
|
28
|
-
customInput={Input}
|
|
29
|
-
{...numericFormatProps}
|
|
30
|
-
/>
|
|
31
|
-
);
|
|
32
|
-
}}
|
|
33
|
-
/>
|
|
34
|
-
);
|
|
35
|
-
};
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { FieldPath, FieldPathValue, FieldValues } from 'react-hook-form';
|
|
2
|
-
import { FormField, type FormFieldProps } from './FormField';
|
|
3
|
-
import { InputPassword, type InputPasswordProps } from '@ttoss/ui';
|
|
4
|
-
|
|
5
|
-
export type FormFieldPasswordProps<TName> = {
|
|
6
|
-
label?: string;
|
|
7
|
-
name: TName;
|
|
8
|
-
} & InputPasswordProps &
|
|
9
|
-
FormFieldProps;
|
|
10
|
-
|
|
11
|
-
export const FormFieldPassword = <
|
|
12
|
-
TFieldValues extends FieldValues = FieldValues,
|
|
13
|
-
TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,
|
|
14
|
-
>({
|
|
15
|
-
label,
|
|
16
|
-
name,
|
|
17
|
-
tooltip,
|
|
18
|
-
onTooltipClick,
|
|
19
|
-
sx,
|
|
20
|
-
defaultValue = '',
|
|
21
|
-
...inputProps
|
|
22
|
-
}: FormFieldPasswordProps<TName>) => {
|
|
23
|
-
return (
|
|
24
|
-
<FormField
|
|
25
|
-
name={name}
|
|
26
|
-
label={label}
|
|
27
|
-
disabled={inputProps.disabled}
|
|
28
|
-
tooltip={tooltip}
|
|
29
|
-
onTooltipClick={onTooltipClick}
|
|
30
|
-
sx={sx}
|
|
31
|
-
defaultValue={defaultValue as FieldPathValue<TFieldValues, TName>}
|
|
32
|
-
render={({ field, fieldState }) => {
|
|
33
|
-
return (
|
|
34
|
-
<InputPassword
|
|
35
|
-
{...inputProps}
|
|
36
|
-
{...field}
|
|
37
|
-
aria-invalid={fieldState.error ? 'true' : undefined}
|
|
38
|
-
/>
|
|
39
|
-
);
|
|
40
|
-
}}
|
|
41
|
-
/>
|
|
42
|
-
);
|
|
43
|
-
};
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { FormField } from './FormField';
|
|
2
|
-
import { Input } from '@ttoss/ui';
|
|
3
|
-
import { PatternFormat, PatternFormatProps } from 'react-number-format';
|
|
4
|
-
|
|
5
|
-
export type FormFieldPatternFormatProps = {
|
|
6
|
-
label?: string;
|
|
7
|
-
name: string;
|
|
8
|
-
} & PatternFormatProps;
|
|
9
|
-
|
|
10
|
-
export const FormFieldPatternFormat = ({
|
|
11
|
-
label,
|
|
12
|
-
name,
|
|
13
|
-
...patternFormatProps
|
|
14
|
-
}: FormFieldPatternFormatProps) => {
|
|
15
|
-
return (
|
|
16
|
-
<FormField
|
|
17
|
-
name={name}
|
|
18
|
-
label={label}
|
|
19
|
-
render={({ field, fieldState }) => {
|
|
20
|
-
return (
|
|
21
|
-
<PatternFormat
|
|
22
|
-
name={field.name}
|
|
23
|
-
value={field.value}
|
|
24
|
-
onBlur={field.onBlur}
|
|
25
|
-
onValueChange={(values) => {
|
|
26
|
-
field.onChange(values.value);
|
|
27
|
-
}}
|
|
28
|
-
customInput={Input}
|
|
29
|
-
aria-invalid={Boolean(fieldState.error).valueOf()}
|
|
30
|
-
{...patternFormatProps}
|
|
31
|
-
/>
|
|
32
|
-
);
|
|
33
|
-
}}
|
|
34
|
-
/>
|
|
35
|
-
);
|
|
36
|
-
};
|