@ttoss/forms 0.32.0 → 0.32.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.
@@ -0,0 +1,360 @@
1
+ /** Powered by @ttoss/config. https://ttoss.dev/docs/modules/packages/config/ */
2
+ import * as React from 'react';
3
+ var __defProp = Object.defineProperty;
4
+ var __name = (target, value) => __defProp(target, "name", {
5
+ value,
6
+ configurable: true
7
+ });
8
+
9
+ // src/FormErrorMessage.tsx
10
+ import { ErrorMessage } from "@hookform/error-message";
11
+ import { FormattedMessage } from "@ttoss/react-i18n";
12
+ import { HelpText } from "@ttoss/ui";
13
+ import { useFormContext } from "react-hook-form";
14
+ var isMessageDescriptor = /* @__PURE__ */__name(possibleMessageDescriptor => {
15
+ return possibleMessageDescriptor !== void 0 && possibleMessageDescriptor.defaultMessage !== void 0;
16
+ }, "isMessageDescriptor");
17
+ var FormErrorMessage = /* @__PURE__ */__name(({
18
+ name,
19
+ disabled
20
+ }) => {
21
+ const {
22
+ formState: {
23
+ errors
24
+ }
25
+ } = useFormContext();
26
+ return /* @__PURE__ */React.createElement(ErrorMessage, {
27
+ name,
28
+ errors,
29
+ render: /* @__PURE__ */__name(({
30
+ message
31
+ }) => {
32
+ return /* @__PURE__ */React.createElement(HelpText, {
33
+ negative: true,
34
+ disabled
35
+ }, (() => {
36
+ if (typeof message === "string") {
37
+ return message;
38
+ }
39
+ if (isMessageDescriptor(message)) {
40
+ return /* @__PURE__ */React.createElement(FormattedMessage, message);
41
+ }
42
+ return JSON.stringify(message);
43
+ })());
44
+ }, "render")
45
+ });
46
+ }, "FormErrorMessage");
47
+
48
+ // src/FormField.tsx
49
+ import { Checkbox, Flex, Label, Switch, Tooltip } from "@ttoss/ui";
50
+ import * as React2 from "react";
51
+ import { useController, useFormContext as useFormContext2 } from "react-hook-form";
52
+ var FormField = /* @__PURE__ */__name(({
53
+ label,
54
+ id: idProp,
55
+ name,
56
+ defaultValue,
57
+ disabled,
58
+ tooltip,
59
+ inputTooltip,
60
+ sx,
61
+ css,
62
+ render,
63
+ warning,
64
+ rules
65
+ }) => {
66
+ const controllerReturn = useController({
67
+ name,
68
+ defaultValue,
69
+ rules
70
+ });
71
+ const {
72
+ formState: {
73
+ errors
74
+ }
75
+ } = useFormContext2();
76
+ const hasError = !!errors[name];
77
+ const uniqueId = React2.useId();
78
+ const id = idProp || `form-field-${name}-${uniqueId}`;
79
+ const tooltipId = `${id}-tooltip`;
80
+ const [showInputTooltip, setShowInputTooltip] = React2.useState(false);
81
+ const inputRef = React2.useRef(null);
82
+ const handleClickOutside = React2.useCallback(event => {
83
+ if (inputRef.current && !inputRef.current.contains(event.target)) {
84
+ setShowInputTooltip(false);
85
+ }
86
+ }, []);
87
+ const handleEscapeKey = React2.useCallback(event => {
88
+ if (event.key === "Escape") {
89
+ setShowInputTooltip(false);
90
+ }
91
+ }, []);
92
+ React2.useEffect(() => {
93
+ if (!inputTooltip || !showInputTooltip) {
94
+ return;
95
+ }
96
+ document.addEventListener("mousedown", handleClickOutside);
97
+ document.addEventListener("keydown", handleEscapeKey);
98
+ return () => {
99
+ document.removeEventListener("mousedown", handleClickOutside);
100
+ document.removeEventListener("keydown", handleEscapeKey);
101
+ };
102
+ }, [showInputTooltip, inputTooltip, handleClickOutside, handleEscapeKey]);
103
+ const handleInputClick = React2.useCallback(() => {
104
+ if (inputTooltip) {
105
+ setShowInputTooltip(true);
106
+ }
107
+ }, [inputTooltip]);
108
+ const handleInputFocus = React2.useCallback(() => {
109
+ if (inputTooltip && !inputTooltip.openOnClick) {
110
+ setShowInputTooltip(true);
111
+ }
112
+ }, [inputTooltip]);
113
+ const handleInputBlur = React2.useCallback(() => {
114
+ if (inputTooltip && !inputTooltip.openOnClick) {
115
+ setShowInputTooltip(false);
116
+ }
117
+ }, [inputTooltip]);
118
+ const tooltipElement = React2.useMemo(() => {
119
+ if (!inputTooltip || !showInputTooltip) {
120
+ return null;
121
+ }
122
+ return /* @__PURE__ */React2.createElement(Flex, {
123
+ sx: {
124
+ width: "full",
125
+ fontSize: "sm"
126
+ }
127
+ }, /* @__PURE__ */React2.createElement(Tooltip, {
128
+ id: tooltipId,
129
+ place: inputTooltip.place,
130
+ clickable: inputTooltip.clickable,
131
+ isOpen: showInputTooltip,
132
+ variant: inputTooltip.variant,
133
+ sx: inputTooltip.sx
134
+ }, inputTooltip.render));
135
+ }, [inputTooltip, showInputTooltip, tooltipId]);
136
+ const isCheckboxOrSwitch = /* @__PURE__ */__name(element => {
137
+ return [Checkbox, Switch].some(component => {
138
+ return element.type === component;
139
+ });
140
+ }, "isCheckboxOrSwitch");
141
+ const memoizedRender = React2.useMemo(() => {
142
+ return React2.Children.map(render(controllerReturn), child => {
143
+ if (! /* @__PURE__ */React2.isValidElement(child)) {
144
+ return null;
145
+ }
146
+ const childProps = child.props;
147
+ const inputProps = {
148
+ ...childProps,
149
+ ref: inputRef,
150
+ onClick: /* @__PURE__ */__name(e => {
151
+ childProps.onClick?.(e);
152
+ handleInputClick();
153
+ }, "onClick"),
154
+ onFocus: /* @__PURE__ */__name(e => {
155
+ childProps.onFocus?.(e);
156
+ handleInputFocus();
157
+ }, "onFocus"),
158
+ onBlur: /* @__PURE__ */__name(e => {
159
+ childProps.onBlur?.(e);
160
+ handleInputBlur();
161
+ }, "onBlur"),
162
+ ...(inputTooltip && showInputTooltip ? {
163
+ "data-tooltip-id": tooltipId
164
+ } : {})
165
+ };
166
+ const elementProps = {
167
+ id,
168
+ ...inputProps,
169
+ ...(warning && {
170
+ trailingIcon: "warning-alt"
171
+ })
172
+ };
173
+ if (label && isCheckboxOrSwitch(child)) {
174
+ return /* @__PURE__ */React2.createElement(React2.Fragment, null, /* @__PURE__ */React2.createElement(Label, {
175
+ "aria-disabled": disabled,
176
+ tooltip
177
+ }, /* @__PURE__ */React2.createElement(Flex, {
178
+ sx: {
179
+ position: "relative"
180
+ }
181
+ }, /* @__PURE__ */React2.createElement(child.type, elementProps)), label), tooltipElement);
182
+ }
183
+ return /* @__PURE__ */React2.createElement(Flex, {
184
+ sx: {
185
+ width: "full",
186
+ flexDirection: "column",
187
+ gap: "2"
188
+ }
189
+ }, label && /* @__PURE__ */React2.createElement(Label, {
190
+ "aria-disabled": disabled,
191
+ htmlFor: id,
192
+ tooltip
193
+ }, label), /* @__PURE__ */React2.createElement(child.type, elementProps), tooltipElement);
194
+ });
195
+ }, [render, controllerReturn, label, disabled, id, tooltip, warning, inputTooltip, showInputTooltip, tooltipId, handleInputClick, handleInputFocus, handleInputBlur, tooltipElement]);
196
+ return /* @__PURE__ */React2.createElement(Flex, {
197
+ sx: {
198
+ flexDirection: "column",
199
+ width: "100%",
200
+ gap: "1",
201
+ ...sx
202
+ },
203
+ css
204
+ }, memoizedRender, /* @__PURE__ */React2.createElement(FormErrorMessage, {
205
+ name
206
+ }), warning && !hasError && /* @__PURE__ */React2.createElement(Flex, {
207
+ className: "warning",
208
+ sx: {
209
+ color: "feedback.text.caution.default",
210
+ fontSize: "sm",
211
+ gap: "2",
212
+ paddingBottom: "1",
213
+ alignItems: "center"
214
+ }
215
+ }, warning));
216
+ }, "FormField");
217
+
218
+ // src/FormFieldPatternFormat.tsx
219
+ import { Input } from "@ttoss/ui";
220
+ import { PatternFormat } from "react-number-format";
221
+ var FormFieldPatternFormat = /* @__PURE__ */__name(({
222
+ disabled,
223
+ ...props
224
+ }) => {
225
+ const {
226
+ label,
227
+ name,
228
+ tooltip,
229
+ inputTooltip,
230
+ warning,
231
+ sx,
232
+ css,
233
+ rules,
234
+ id,
235
+ defaultValue,
236
+ ...patternFormatProps
237
+ } = props;
238
+ return /* @__PURE__ */React.createElement(FormField, {
239
+ id,
240
+ label,
241
+ name,
242
+ tooltip,
243
+ inputTooltip,
244
+ warning,
245
+ sx,
246
+ css,
247
+ defaultValue,
248
+ rules,
249
+ disabled,
250
+ render: /* @__PURE__ */__name(({
251
+ field,
252
+ fieldState
253
+ }) => {
254
+ return /* @__PURE__ */React.createElement(PatternFormat, {
255
+ ...patternFormatProps,
256
+ name: field.name,
257
+ value: field.value,
258
+ onBlur: field.onBlur,
259
+ onValueChange: /* @__PURE__ */__name(values => {
260
+ field.onChange(values.value);
261
+ }, "onValueChange"),
262
+ customInput: Input,
263
+ disabled,
264
+ "aria-invalid": fieldState.error ? "true" : void 0
265
+ });
266
+ }, "render")
267
+ });
268
+ }, "FormFieldPatternFormat");
269
+
270
+ // src/Brazil/FormFieldCNPJ.tsx
271
+ import { Input as Input2 } from "@ttoss/ui";
272
+ import { PatternFormat as PatternFormat2 } from "react-number-format";
273
+ var isCnpjValid = /* @__PURE__ */__name(cnpj => {
274
+ if (cnpj?.length != 14) {
275
+ return false;
276
+ }
277
+ if (cnpj == "00000000000000" || cnpj == "11111111111111" || cnpj == "22222222222222" || cnpj == "33333333333333" || cnpj == "44444444444444" || cnpj == "55555555555555" || cnpj == "66666666666666" || cnpj == "77777777777777" || cnpj == "88888888888888" || cnpj == "99999999999999") {
278
+ return false;
279
+ }
280
+ let size = cnpj.length - 2;
281
+ let numbers = cnpj.substring(0, size);
282
+ const digits = cnpj.substring(size);
283
+ let soma = 0;
284
+ let pos = size - 7;
285
+ for (let i = size; i >= 1; i--) {
286
+ soma += numbers.charAt(size - i) * pos--;
287
+ if (pos < 2) {
288
+ pos = 9;
289
+ }
290
+ }
291
+ let result = soma % 11 < 2 ? 0 : 11 - soma % 11;
292
+ if (result != digits.charAt(0)) {
293
+ return false;
294
+ }
295
+ size = size + 1;
296
+ numbers = cnpj.substring(0, size);
297
+ soma = 0;
298
+ pos = size - 7;
299
+ for (let i = size; i >= 1; i--) {
300
+ soma += numbers.charAt(size - i) * pos--;
301
+ if (pos < 2) {
302
+ pos = 9;
303
+ }
304
+ }
305
+ result = soma % 11 < 2 ? 0 : 11 - soma % 11;
306
+ if (result != digits.charAt(1)) {
307
+ return false;
308
+ }
309
+ return true;
310
+ }, "isCnpjValid");
311
+ var FormFieldCNPJ = /* @__PURE__ */__name(({
312
+ disabled,
313
+ ...props
314
+ }) => {
315
+ const {
316
+ label,
317
+ name,
318
+ tooltip,
319
+ inputTooltip,
320
+ warning,
321
+ sx,
322
+ css,
323
+ rules,
324
+ id,
325
+ defaultValue,
326
+ placeholder = "12.345.678/0000-00",
327
+ ...patternFormatProps
328
+ } = props;
329
+ return /* @__PURE__ */React.createElement(FormField, {
330
+ id,
331
+ label,
332
+ name,
333
+ tooltip,
334
+ inputTooltip,
335
+ warning,
336
+ sx,
337
+ css,
338
+ defaultValue,
339
+ rules,
340
+ disabled,
341
+ render: /* @__PURE__ */__name(({
342
+ field
343
+ }) => {
344
+ return /* @__PURE__ */React.createElement(PatternFormat2, {
345
+ ...patternFormatProps,
346
+ name: field.name,
347
+ value: field.value,
348
+ onBlur: field.onBlur,
349
+ onValueChange: /* @__PURE__ */__name(values => {
350
+ field.onChange(values.value);
351
+ }, "onValueChange"),
352
+ format: "##.###.###/####-##",
353
+ customInput: Input2,
354
+ placeholder,
355
+ disabled
356
+ });
357
+ }, "render")
358
+ });
359
+ }, "FormFieldCNPJ");
360
+ export { __name, FormErrorMessage, FormField, FormFieldPatternFormat, isCnpjValid, FormFieldCNPJ };
package/dist/esm/index.js CHANGED
@@ -1,3 +1,4 @@
1
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, FormFieldRadioCard, FormFieldRadioCardIcony, FormFieldSelect, FormFieldSwitch, FormFieldTextarea, FormGroup, FormProvider, useController, useFieldArray, useForm, useFormContext, useFormGroup, useFormState, useWatch, yup, yupResolver } from "./chunk-7OXUGQSF.js";
2
+ import { Controller, Form, FormFieldCheckbox, FormFieldCreditCardNumber, FormFieldCurrencyInput, FormFieldInput, FormFieldNumericFormat, FormFieldPassword, FormFieldRadio, FormFieldRadioCard, FormFieldRadioCardIcony, FormFieldSelect, FormFieldSwitch, FormFieldTextarea, FormGroup, FormProvider, useController, useFieldArray, useForm, useFormContext, useFormGroup, useFormState, useWatch, yup, yupResolver } from "./chunk-WZLEU3SB.js";
3
+ import { FormErrorMessage, FormField, FormFieldPatternFormat } from "./chunk-X42ZUF2A.js";
3
4
  export { Controller, Form, FormErrorMessage, FormField, FormFieldCheckbox, FormFieldCreditCardNumber, FormFieldCurrencyInput, FormFieldInput, FormFieldNumericFormat, FormFieldPassword, FormFieldPatternFormat, FormFieldRadio, FormFieldRadioCard, FormFieldRadioCardIcony, FormFieldSelect, FormFieldSwitch, FormFieldTextarea, FormGroup, FormProvider, useController, useFieldArray, useForm, useFormContext, useFormGroup, useFormState, useWatch, yup, yupResolver };
package/dist/index.d.ts CHANGED
@@ -1,127 +1,74 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { BoxProps, ThemeUIStyleObject, Theme, SxProp, CheckboxProps, InputProps, InputPasswordProps, RadioProps, SelectProps, SwitchProps, TextareaProps } from '@ttoss/ui';
3
- import * as React$1 from 'react';
4
- import { FieldValues, FormProviderProps, FieldName, FieldPath, UseControllerReturn, FieldPathValue } from 'react-hook-form';
2
+ import { BoxProps, CheckboxProps, InputProps, InputPasswordProps, RadioProps, ThemeUIStyleObject, SelectProps, SwitchProps, TextareaProps } from '@ttoss/ui';
3
+ import * as React from 'react';
4
+ import { FieldValues, FormProviderProps, FieldName, FieldPath } from 'react-hook-form';
5
5
  export * from 'react-hook-form';
6
6
  export { Controller, FormProvider, useController, useFieldArray, useForm, useFormContext, useFormState, useWatch } from 'react-hook-form';
7
- import { F as FormFieldPatternFormatProps } from './FormFieldPatternFormat-3gBOUVd9.js';
8
- export { a as FormFieldPatternFormat } from './FormFieldPatternFormat-3gBOUVd9.js';
7
+ import { F as FormFieldProps, a as FormFieldPatternFormatProps } from './FormFieldPatternFormat-CxkCeniP.js';
8
+ export { b as FormField, c as FormFieldPatternFormat } from './FormFieldPatternFormat-CxkCeniP.js';
9
9
  import { NumericFormatProps } from 'react-number-format';
10
10
  import './typings.d-HZBqJJjn.js';
11
11
  import * as yup from 'yup';
12
12
  export { yup };
13
13
  export { yupResolver } from '@hookform/resolvers/yup';
14
14
 
15
- declare const Form: <TFieldValues extends FieldValues = FieldValues>({ children, onSubmit, sx, ...formMethods }: {
16
- children?: React$1.ReactNode;
17
- onSubmit?: (data: TFieldValues) => Promise<void> | void;
15
+ declare const Form: <TFieldValues extends FieldValues, TContext = any, TTransformedValues = TFieldValues>({ children, onSubmit, sx, ...formMethods }: {
16
+ children?: React.ReactNode;
17
+ onSubmit?: (data: TTransformedValues) => Promise<void> | void;
18
18
  sx?: BoxProps["sx"];
19
- } & FormProviderProps<TFieldValues>) => react_jsx_runtime.JSX.Element;
19
+ } & FormProviderProps<TFieldValues, TContext, TTransformedValues>) => react_jsx_runtime.JSX.Element;
20
20
 
21
21
  declare const FormErrorMessage: <TFieldValues extends FieldValues = FieldValues>({ name, disabled, }: {
22
22
  name: FieldName<TFieldValues>;
23
23
  disabled?: boolean;
24
24
  }) => react_jsx_runtime.JSX.Element;
25
25
 
26
- type FormFieldProps<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> = {
27
- label?: React$1.ReactNode;
28
- id?: string;
29
- name: TName;
30
- defaultValue?: FieldPathValue<TFieldValues, TName>;
31
- disabled?: boolean;
32
- tooltip?: {
33
- render: string | React$1.ReactNode;
34
- place: 'top';
35
- openOnClick?: boolean;
36
- clickable?: boolean;
37
- };
38
- inputTooltip?: {
39
- render: string | React$1.ReactNode;
40
- place: 'bottom' | 'top' | 'left' | 'right';
41
- openOnClick?: boolean;
42
- clickable?: boolean;
43
- variant?: 'info' | 'warning' | 'success' | 'error';
44
- sx?: ThemeUIStyleObject<Theme>;
45
- } & SxProp;
46
- warning?: string | React$1.ReactNode;
47
- } & SxProp;
48
- type FormFieldCompleteProps<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> = {
49
- render: (props: UseControllerReturn<TFieldValues, TName>) => React$1.ReactElement;
50
- } & FormFieldProps<TFieldValues, TName>;
51
- declare const FormField: <TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ label, id: idProp, name, defaultValue, disabled, tooltip, inputTooltip, sx, css, render, warning, }: FormFieldCompleteProps<TFieldValues, TName>) => react_jsx_runtime.JSX.Element;
52
-
53
- declare const FormFieldCheckbox: <TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ label, name, sx, tooltip, ...checkboxProps }: FormFieldProps<TFieldValues, TName> & CheckboxProps) => react_jsx_runtime.JSX.Element;
54
-
55
- type FormFieldCreditCardNumberProps = {
56
- label: string;
57
- name: string;
58
- } & Partial<FormFieldPatternFormatProps>;
59
- declare const FormFieldCreditCardNumber: ({ label, name, ...formFieldPatternFormatProps }: FormFieldCreditCardNumberProps) => react_jsx_runtime.JSX.Element;
60
-
61
- type FormFieldNumericFormatProps = {
62
- label?: string;
63
- name: string;
64
- warning?: string | React$1.ReactNode;
65
- tooltip?: {
66
- render: string | React$1.ReactNode;
67
- place: 'top';
68
- openOnClick?: boolean;
69
- clickable?: boolean;
70
- };
71
- inputTooltip?: {
72
- render: string | React$1.ReactNode;
73
- place: 'bottom' | 'top' | 'left' | 'right';
74
- openOnClick?: boolean;
75
- clickable?: boolean;
76
- variant?: 'info' | 'warning' | 'success' | 'error';
77
- sx?: ThemeUIStyleObject<Theme>;
78
- } & SxProp;
79
- } & NumericFormatProps;
80
- declare const FormFieldNumericFormat: ({ label, name, warning, tooltip, inputTooltip, ...numericFormatProps }: FormFieldNumericFormatProps) => react_jsx_runtime.JSX.Element;
81
-
82
- type FormFieldCurrencyInputProps = {
83
- label?: string;
84
- name: string;
26
+ type FormFieldCheckboxProps<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> = FormFieldProps<TFieldValues, TName> & Omit<CheckboxProps, 'name'>;
27
+ declare const FormFieldCheckbox: <TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ disabled, ...props }: FormFieldCheckboxProps<TFieldValues, TName>) => react_jsx_runtime.JSX.Element;
28
+
29
+ type FormFieldCreditCardNumberProps<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> = FormFieldPatternFormatProps<TFieldValues, TName>;
30
+ declare const FormFieldCreditCardNumber: <TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ format, placeholder, ...formFieldPatternFormatProps }: FormFieldCreditCardNumberProps<TFieldValues, TName>) => react_jsx_runtime.JSX.Element;
31
+
32
+ type FormFieldNumericFormatProps<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> = FormFieldProps<TFieldValues, TName> & Omit<NumericFormatProps, 'name'>;
33
+ declare const FormFieldNumericFormat: <TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ disabled, ...props }: FormFieldNumericFormatProps<TFieldValues, TName>) => react_jsx_runtime.JSX.Element;
34
+
35
+ type FormFieldCurrencyInputProps<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> = FormFieldNumericFormatProps<TFieldValues, TName> & {
85
36
  prefix: string;
86
- } & FormFieldNumericFormatProps;
87
- declare const FormFieldCurrencyInput: ({ label, name, prefix, decimalSeparator, thousandSeparator, ...formFieldNumericFormatProps }: FormFieldCurrencyInputProps) => react_jsx_runtime.JSX.Element;
37
+ };
38
+ declare const FormFieldCurrencyInput: <TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ prefix, decimalSeparator, thousandSeparator, ...formFieldNumericFormatProps }: FormFieldCurrencyInputProps<TFieldValues, TName>) => react_jsx_runtime.JSX.Element;
88
39
 
89
- type FormFieldInputProps<TName> = {
90
- label?: string;
91
- name: TName;
92
- } & InputProps & FormFieldProps;
93
- declare const FormFieldInput: <TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ label, name, tooltip, sx, defaultValue, ...inputProps }: FormFieldInputProps<TName>) => react_jsx_runtime.JSX.Element;
40
+ type FormFieldInputProps<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> = FormFieldProps<TFieldValues, TName> & Omit<InputProps, 'name'>;
41
+ declare const FormFieldInput: <TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ defaultValue, disabled, ...props }: FormFieldInputProps<TFieldValues, TName>) => react_jsx_runtime.JSX.Element;
94
42
 
95
- type FormFieldPasswordProps<TName> = {
96
- label?: string;
97
- name: TName;
98
- } & InputPasswordProps & FormFieldProps;
99
- declare const FormFieldPassword: <TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ label, name, tooltip, sx, defaultValue, ...inputProps }: FormFieldPasswordProps<TName>) => react_jsx_runtime.JSX.Element;
43
+ type FormFieldPasswordProps<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> = FormFieldProps<TFieldValues, TName> & Omit<InputPasswordProps, 'name'>;
44
+ declare const FormFieldPassword: <TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ defaultValue, disabled, ...props }: FormFieldPasswordProps<TFieldValues, TName>) => react_jsx_runtime.JSX.Element;
100
45
 
101
46
  type FormRadioOption$2 = {
102
47
  value: string | number;
103
48
  label: string;
104
49
  };
105
- declare const FormFieldRadio: <TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ label, name, sx, options, tooltip, ...radioProps }: {
50
+ type FormFieldRadioProps<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> = FormFieldProps<TFieldValues, TName> & Omit<RadioProps, 'name'> & {
106
51
  options: FormRadioOption$2[];
107
- } & FormFieldProps<TFieldValues, TName> & RadioProps) => react_jsx_runtime.JSX.Element;
52
+ };
53
+ declare const FormFieldRadio: <TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ disabled, options, ...props }: FormFieldRadioProps<TFieldValues, TName>) => react_jsx_runtime.JSX.Element;
108
54
 
109
55
  type FormRadioOption$1 = {
110
56
  value: string | number;
111
57
  label: string;
112
58
  description?: string;
113
59
  };
114
- declare const FormFieldRadioCard: <TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ label, name, direction, width, sx, options, tooltip, ...radioProps }: {
60
+ type FormFieldRadioCardProps<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> = FormFieldProps<TFieldValues, TName> & Omit<RadioProps, 'name'> & {
115
61
  options: FormRadioOption$1[];
116
- direction?: "column" | "row";
62
+ direction?: 'column' | 'row';
117
63
  width?: string;
118
- } & FormFieldProps<TFieldValues, TName> & RadioProps) => react_jsx_runtime.JSX.Element;
64
+ };
65
+ declare const FormFieldRadioCard: <TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ disabled, ...props }: FormFieldRadioCardProps<TFieldValues, TName>) => react_jsx_runtime.JSX.Element;
119
66
 
120
67
  type FormRadioOption = {
121
68
  value: string | number;
122
69
  label: string;
123
70
  description?: string;
124
- icon?: React$1.ComponentType<{
71
+ icon?: React.ComponentType<{
125
72
  size?: number;
126
73
  className?: string;
127
74
  }>;
@@ -131,30 +78,21 @@ type FormRadioOption = {
131
78
  sx?: ThemeUIStyleObject;
132
79
  };
133
80
  };
134
- declare const FormFieldRadioCardIcony: <TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ label, name, direction, width, sx, options, tooltip, }: {
81
+ type FormFieldRadioCardIconyProps<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> = FormFieldProps<TFieldValues, TName> & {
135
82
  options: FormRadioOption[];
136
- direction?: "column" | "row";
83
+ direction?: 'column' | 'row';
137
84
  width?: string;
138
- } & FormFieldProps<TFieldValues, TName>) => react_jsx_runtime.JSX.Element;
139
-
140
- type FormFieldSelectProps<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> = Omit<SelectProps, 'defaultValue'> & FormFieldProps<TFieldValues, TName>;
141
- declare const FormFieldSelect: <TFieldValues extends FieldValues = FieldValues>({ label, name, id, defaultValue, sx, css, disabled, tooltip, ...selectProps }: FormFieldSelectProps<TFieldValues>) => react_jsx_runtime.JSX.Element;
142
-
143
- declare const FormFieldSwitch: <TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ label, name, sx, tooltip, ...switchProps }: FormFieldProps<TFieldValues, TName> & SwitchProps) => react_jsx_runtime.JSX.Element;
144
-
145
- declare const FormFieldTextarea: <TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ label, name, warning, inputTooltip, sx, ...textareaProps }: {
146
- label?: string;
147
- name: TName;
148
- warning?: string | React.ReactNode;
149
- inputTooltip?: {
150
- render: string | React.ReactNode;
151
- place: "bottom" | "top" | "left" | "right";
152
- openOnClick?: boolean;
153
- clickable?: boolean;
154
- variant?: "info" | "warning" | "success" | "error";
155
- sx?: ThemeUIStyleObject<Theme>;
156
- };
157
- } & TextareaProps) => react_jsx_runtime.JSX.Element;
85
+ };
86
+ declare const FormFieldRadioCardIcony: <TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ disabled, ...props }: FormFieldRadioCardIconyProps<TFieldValues, TName>) => react_jsx_runtime.JSX.Element;
87
+
88
+ type FormFieldSelectProps<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> = FormFieldProps<TFieldValues, TName> & Omit<SelectProps, 'name' | 'defaultValue'>;
89
+ declare const FormFieldSelect: <TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ disabled, ...props }: FormFieldSelectProps<TFieldValues, TName>) => react_jsx_runtime.JSX.Element;
90
+
91
+ type FormFieldSwitchProps<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> = FormFieldProps<TFieldValues, TName> & Omit<SwitchProps, 'name'>;
92
+ declare const FormFieldSwitch: <TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ disabled, ...props }: FormFieldSwitchProps<TFieldValues, TName>) => react_jsx_runtime.JSX.Element;
93
+
94
+ type FormFieldTextareaProps<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> = FormFieldProps<TFieldValues, TName> & Omit<TextareaProps, 'name'>;
95
+ declare const FormFieldTextarea: <TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ defaultValue, disabled, ...props }: FormFieldTextareaProps<TFieldValues, TName>) => react_jsx_runtime.JSX.Element;
158
96
 
159
97
  declare const useFormGroup: () => {
160
98
  level: number | undefined;
@@ -167,4 +105,4 @@ type FormGroupProps = {
167
105
  } & BoxProps;
168
106
  declare const FormGroup: (props: FormGroupProps) => react_jsx_runtime.JSX.Element;
169
107
 
170
- export { Form, FormErrorMessage, FormField, FormFieldCheckbox, FormFieldCreditCardNumber, FormFieldCurrencyInput, FormFieldInput, FormFieldNumericFormat, FormFieldPassword, FormFieldRadio, FormFieldRadioCard, FormFieldRadioCardIcony, FormFieldSelect, FormFieldSwitch, FormFieldTextarea, FormGroup, type FormRadioOption, useFormGroup };
108
+ export { Form, FormErrorMessage, FormFieldCheckbox, FormFieldCreditCardNumber, FormFieldCurrencyInput, FormFieldInput, FormFieldNumericFormat, FormFieldPassword, FormFieldRadio, FormFieldRadioCard, FormFieldRadioCardIcony, FormFieldSelect, FormFieldSwitch, FormFieldTextarea, FormGroup, type FormRadioOption, useFormGroup };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ttoss/forms",
3
- "version": "0.32.0",
3
+ "version": "0.32.2",
4
4
  "license": "MIT",
5
5
  "author": "ttoss",
6
6
  "contributors": [
@@ -32,30 +32,30 @@
32
32
  "sideEffects": true,
33
33
  "dependencies": {
34
34
  "@hookform/error-message": "^2.0.1",
35
- "@hookform/resolvers": "^3.9.1",
36
- "react-hook-form": "^7.54.2",
37
- "react-number-format": "^5.4.3",
38
- "yup": "^1.6.1"
35
+ "@hookform/resolvers": "^5.2.2",
36
+ "react-hook-form": "^7.66.1",
37
+ "react-number-format": "^5.4.4",
38
+ "yup": "^1.7.1"
39
39
  },
40
40
  "peerDependencies": {
41
41
  "react": ">=16.8.0",
42
- "@ttoss/react-i18n": "^2.0.19",
43
- "@ttoss/ui": "^5.10.5"
42
+ "@ttoss/react-i18n": "^2.0.21",
43
+ "@ttoss/ui": "^5.10.7"
44
44
  },
45
45
  "devDependencies": {
46
46
  "@types/jest": "^30.0.0",
47
- "@types/react": "^19.2.2",
47
+ "@types/react": "^19.2.6",
48
48
  "jest": "^30.2.0",
49
49
  "react": "^19.2.0",
50
- "react-error-boundary": "^5.0.0",
51
- "tsup": "^8.5.0",
52
- "yup": "^1.6.1",
53
- "@ttoss/react-icons": "^0.5.0",
54
- "@ttoss/config": "^1.35.9",
55
- "@ttoss/i18n-cli": "^0.7.35",
56
- "@ttoss/react-i18n": "^2.0.19",
57
- "@ttoss/test-utils": "^3.0.1",
58
- "@ttoss/ui": "^5.10.5"
50
+ "react-error-boundary": "^6.0.0",
51
+ "tsup": "^8.5.1",
52
+ "yup": "^1.7.1",
53
+ "@ttoss/config": "^1.35.11",
54
+ "@ttoss/i18n-cli": "^0.7.37",
55
+ "@ttoss/react-i18n": "^2.0.21",
56
+ "@ttoss/react-icons": "^0.5.2",
57
+ "@ttoss/test-utils": "^3.0.3",
58
+ "@ttoss/ui": "^5.10.7"
59
59
  },
60
60
  "publishConfig": {
61
61
  "access": "public",
@@ -1,20 +0,0 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { ThemeUIStyleObject, Theme } from '@ttoss/ui';
3
- import { PatternFormatProps } from 'react-number-format';
4
-
5
- type FormFieldPatternFormatProps = {
6
- label?: string;
7
- name: string;
8
- warning?: string | React.ReactNode;
9
- inputTooltip?: {
10
- render: string | React.ReactNode;
11
- place: 'bottom' | 'top' | 'left' | 'right';
12
- openOnClick?: boolean;
13
- clickable?: boolean;
14
- variant?: 'info' | 'warning' | 'success' | 'error';
15
- sx?: ThemeUIStyleObject<Theme>;
16
- };
17
- } & PatternFormatProps;
18
- declare const FormFieldPatternFormat: ({ label, name, warning, inputTooltip, ...patternFormatProps }: FormFieldPatternFormatProps) => react_jsx_runtime.JSX.Element;
19
-
20
- export { type FormFieldPatternFormatProps as F, FormFieldPatternFormat as a };