@ttoss/forms 0.25.6 → 0.26.1

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 (43) hide show
  1. package/LICENSE +21 -674
  2. package/dist/Brazil/index.d.ts +24 -0
  3. package/dist/FormFieldPatternFormat-CkcL14ho.d.ts +10 -0
  4. package/dist/MultistepForm/index.d.ts +65 -0
  5. package/dist/esm/Brazil/index.js +51 -0
  6. package/dist/esm/MultistepForm/index.js +2502 -0
  7. package/dist/esm/chunk-6U527R3X.js +741 -0
  8. package/dist/esm/index.js +3 -0
  9. package/dist/index.d.ts +107 -0
  10. package/{src/yup/typings.d.ts → dist/typings.d-HZBqJJjn.d.ts} +1 -3
  11. package/package.json +11 -11
  12. package/src/Brazil/FormFieldCEP.tsx +0 -25
  13. package/src/Brazil/FormFieldCNPJ.tsx +0 -93
  14. package/src/Brazil/FormFieldPhone.tsx +0 -41
  15. package/src/Brazil/index.ts +0 -4
  16. package/src/Form.tsx +0 -29
  17. package/src/FormErrorMessage.tsx +0 -60
  18. package/src/FormField.tsx +0 -86
  19. package/src/FormFieldCheckbox.tsx +0 -49
  20. package/src/FormFieldCreditCardNumber.tsx +0 -25
  21. package/src/FormFieldCurrencyInput.tsx +0 -36
  22. package/src/FormFieldInput.tsx +0 -43
  23. package/src/FormFieldNumericFormat.tsx +0 -35
  24. package/src/FormFieldPassword.tsx +0 -43
  25. package/src/FormFieldPatternFormat.tsx +0 -36
  26. package/src/FormFieldRadio.tsx +0 -57
  27. package/src/FormFieldSelect.tsx +0 -47
  28. package/src/FormFieldTextarea.tsx +0 -36
  29. package/src/FormGroup.tsx +0 -136
  30. package/src/MultistepForm/MultistepFlowMessage.tsx +0 -14
  31. package/src/MultistepForm/MultistepFlowMessageImageText.tsx +0 -37
  32. package/src/MultistepForm/MultistepFooter.tsx +0 -18
  33. package/src/MultistepForm/MultistepForm.tsx +0 -117
  34. package/src/MultistepForm/MultistepFormStepper.tsx +0 -70
  35. package/src/MultistepForm/MultistepHeader.tsx +0 -78
  36. package/src/MultistepForm/MultistepNavigation.tsx +0 -38
  37. package/src/MultistepForm/MultistepQuestion.tsx +0 -28
  38. package/src/MultistepForm/index.ts +0 -1
  39. package/src/MultistepForm/types.ts +0 -7
  40. package/src/index.ts +0 -35
  41. package/src/yup/i18n.ts +0 -31
  42. package/src/yup/schema.ts +0 -26
  43. package/src/yup/yup.ts +0 -4
@@ -0,0 +1,3 @@
1
+ /** Powered by @ttoss/config. https://ttoss.dev/docs/modules/packages/config/ */
2
+ import { Controller, Form, FormErrorMessage, FormField, FormFieldCheckbox, FormFieldCreditCardNumber, FormFieldCurrencyInput, FormFieldInput, FormFieldNumericFormat, FormFieldPassword, FormFieldPatternFormat, FormFieldRadio, FormFieldSelect, FormFieldTextarea, FormGroup, FormProvider, useController, useFieldArray, useForm, useFormContext, useFormGroup, useFormState, useWatch, yup, yupResolver } from "./chunk-6U527R3X.js";
3
+ export { Controller, Form, FormErrorMessage, FormField, FormFieldCheckbox, FormFieldCreditCardNumber, FormFieldCurrencyInput, FormFieldInput, FormFieldNumericFormat, FormFieldPassword, FormFieldPatternFormat, FormFieldRadio, FormFieldSelect, FormFieldTextarea, FormGroup, FormProvider, useController, useFieldArray, useForm, useFormContext, useFormGroup, useFormState, useWatch, yup, yupResolver };
@@ -0,0 +1,107 @@
1
+ export { yupResolver } from '@hookform/resolvers/yup';
2
+ import './typings.d-HZBqJJjn.js';
3
+ import * as yup from 'yup';
4
+ export { yup };
5
+ import * as react_jsx_runtime from 'react/jsx-runtime';
6
+ import * as React from 'react';
7
+ import { BoxProps, SxProp, CheckboxProps, InputProps, InputPasswordProps, RadioProps, SelectProps, TextareaProps } from '@ttoss/ui';
8
+ import { FieldValues, FormProviderProps, FieldName, FieldPath, UseControllerReturn, FieldPathValue } from 'react-hook-form';
9
+ export * from 'react-hook-form';
10
+ export { Controller, FormProvider, useController, useFieldArray, useForm, useFormContext, useFormState, useWatch } from 'react-hook-form';
11
+ import { F as FormFieldPatternFormatProps } from './FormFieldPatternFormat-CkcL14ho.js';
12
+ export { a as FormFieldPatternFormat } from './FormFieldPatternFormat-CkcL14ho.js';
13
+ import { NumericFormatProps } from 'react-number-format';
14
+
15
+ declare const Form: <TFieldValues extends FieldValues = FieldValues>({ children, onSubmit, sx, ...formMethods }: {
16
+ children?: React.ReactNode;
17
+ onSubmit?: (data: TFieldValues) => Promise<void> | void;
18
+ sx?: BoxProps["sx"];
19
+ } & FormProviderProps<TFieldValues>) => react_jsx_runtime.JSX.Element;
20
+
21
+ declare const FormErrorMessage: <TFieldValues extends FieldValues = FieldValues>({ name, disabled, }: {
22
+ name: FieldName<TFieldValues>;
23
+ disabled?: boolean;
24
+ }) => react_jsx_runtime.JSX.Element;
25
+
26
+ type FormFieldProps<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> = {
27
+ label?: string;
28
+ id?: string;
29
+ name: TName;
30
+ defaultValue?: FieldPathValue<TFieldValues, TName>;
31
+ disabled?: boolean;
32
+ tooltip?: boolean;
33
+ onTooltipClick?: () => void;
34
+ } & SxProp;
35
+ type FormFieldCompleteProps<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> = {
36
+ render: (props: UseControllerReturn<TFieldValues, TName>) => React.ReactElement;
37
+ } & FormFieldProps<TFieldValues, TName>;
38
+ declare const FormField: <TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ label, id: idProp, name, defaultValue, disabled, tooltip, onTooltipClick, sx, css, render, }: FormFieldCompleteProps<TFieldValues, TName>) => react_jsx_runtime.JSX.Element;
39
+
40
+ declare const FormFieldCheckbox: <TFieldValues extends FieldValues = FieldValues>({ label, name, sx, ...checkboxProps }: {
41
+ label?: string;
42
+ name: FieldPath<TFieldValues>;
43
+ } & CheckboxProps) => react_jsx_runtime.JSX.Element;
44
+
45
+ type FormFieldCreditCardNumberProps = {
46
+ label: string;
47
+ name: string;
48
+ } & Partial<FormFieldPatternFormatProps>;
49
+ declare const FormFieldCreditCardNumber: ({ label, name, ...formFieldPatternFormatProps }: FormFieldCreditCardNumberProps) => react_jsx_runtime.JSX.Element;
50
+
51
+ type FormFieldNumericFormatProps = {
52
+ label?: string;
53
+ name: string;
54
+ } & NumericFormatProps;
55
+ declare const FormFieldNumericFormat: ({ label, name, ...numericFormatProps }: FormFieldNumericFormatProps) => react_jsx_runtime.JSX.Element;
56
+
57
+ type FormFieldCurrencyInputProps = {
58
+ label?: string;
59
+ name: string;
60
+ prefix: string;
61
+ decimalSeparator: string;
62
+ thousandSeparator: string;
63
+ } & FormFieldNumericFormatProps;
64
+ declare const FormFieldCurrencyInput: ({ label, name, prefix, decimalSeparator, thousandSeparator, ...formFieldNumericFormatProps }: FormFieldCurrencyInputProps) => react_jsx_runtime.JSX.Element;
65
+
66
+ type FormFieldInputProps<TName> = {
67
+ label?: string;
68
+ name: TName;
69
+ } & InputProps & FormFieldProps;
70
+ declare const FormFieldInput: <TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ label, name, tooltip, onTooltipClick, sx, defaultValue, ...inputProps }: FormFieldInputProps<TName>) => react_jsx_runtime.JSX.Element;
71
+
72
+ type FormFieldPasswordProps<TName> = {
73
+ label?: string;
74
+ name: TName;
75
+ } & InputPasswordProps & FormFieldProps;
76
+ declare const FormFieldPassword: <TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ label, name, tooltip, onTooltipClick, sx, defaultValue, ...inputProps }: FormFieldPasswordProps<TName>) => react_jsx_runtime.JSX.Element;
77
+
78
+ type FormRadioOption = {
79
+ value: string | number;
80
+ label: string;
81
+ };
82
+ declare const FormFieldRadio: <TFieldValues extends FieldValues = FieldValues>({ label, name, options, sx, ...radioProps }: {
83
+ label?: string;
84
+ name: FieldPath<TFieldValues>;
85
+ options: FormRadioOption[];
86
+ } & RadioProps) => react_jsx_runtime.JSX.Element;
87
+
88
+ type FormFieldSelectProps<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> = Omit<SelectProps, 'defaultValue'> & FormFieldProps<TFieldValues, TName>;
89
+ declare const FormFieldSelect: <TFieldValues extends FieldValues = FieldValues>({ label, name, id, defaultValue, sx, css, disabled, tooltip, onTooltipClick, ...selectProps }: FormFieldSelectProps<TFieldValues>) => react_jsx_runtime.JSX.Element;
90
+
91
+ declare const FormFieldTextarea: <TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ label, name, sx, ...textareaProps }: {
92
+ label?: string;
93
+ name: TName;
94
+ } & TextareaProps) => react_jsx_runtime.JSX.Element;
95
+
96
+ declare const useFormGroup: () => {
97
+ level: number | undefined;
98
+ levelsLength: number;
99
+ };
100
+ type FormGroupProps = {
101
+ name?: string;
102
+ title?: string;
103
+ direction?: 'column' | 'row';
104
+ } & BoxProps;
105
+ declare const FormGroup: (props: FormGroupProps) => react_jsx_runtime.JSX.Element;
106
+
107
+ export { Form, FormErrorMessage, FormField, FormFieldCheckbox, FormFieldCreditCardNumber, FormFieldCurrencyInput, FormFieldInput, FormFieldNumericFormat, FormFieldPassword, FormFieldRadio, FormFieldSelect, FormFieldTextarea, FormGroup, useFormGroup };
@@ -1,4 +1,4 @@
1
- import { AnyObject, Flags, Maybe, Schema } from 'yup';
1
+ import { Maybe, AnyObject, Flags, Schema } from 'yup';
2
2
 
3
3
  declare module 'yup' {
4
4
  interface StringSchema<
@@ -10,5 +10,3 @@ declare module 'yup' {
10
10
  cnpj(): this;
11
11
  }
12
12
  }
13
-
14
- export {};
package/package.json CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "name": "@ttoss/forms",
3
- "version": "0.25.6",
3
+ "version": "0.26.1",
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.2",
43
- "@ttoss/ui": "^5.0.6"
42
+ "@ttoss/react-i18n": "^2.0.4",
43
+ "@ttoss/ui": "^5.0.8"
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/i18n-cli": "^0.7.20",
54
- "@ttoss/config": "^1.33.0",
55
- "@ttoss/react-i18n": "^2.0.2",
56
- "@ttoss/react-icons": "^0.4.2",
57
- "@ttoss/test-utils": "^2.1.15",
58
- "@ttoss/ui": "^5.0.6"
53
+ "@ttoss/config": "^1.34.1",
54
+ "@ttoss/i18n-cli": "^0.7.22",
55
+ "@ttoss/react-icons": "^0.4.4",
56
+ "@ttoss/ui": "^5.0.8",
57
+ "@ttoss/react-i18n": "^2.0.4",
58
+ "@ttoss/test-utils": "^2.1.17"
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
- };
@@ -1,4 +0,0 @@
1
- export { FormFieldCNPJ } from './FormFieldCNPJ';
2
- export { FormFieldPhone } from './FormFieldPhone';
3
- export { FormFieldCEP } from './FormFieldCEP';
4
- export { isCnpjValid } from './FormFieldCNPJ';
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
- };
@@ -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
- };
@@ -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
- };