@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.
- package/README.md +408 -220
- package/dist/Brazil/index.d.ts +10 -35
- package/dist/FormFieldPatternFormat-CxkCeniP.d.ts +39 -0
- package/dist/esm/Brazil/index.js +32 -14
- package/dist/esm/MultistepForm/index.js +2 -1
- package/dist/esm/chunk-WZLEU3SB.js +812 -0
- package/dist/esm/chunk-X42ZUF2A.js +360 -0
- package/dist/esm/index.js +2 -1
- package/dist/index.d.ts +47 -109
- package/package.json +17 -17
- package/dist/FormFieldPatternFormat-3gBOUVd9.d.ts +0 -20
- package/dist/esm/chunk-7OXUGQSF.js +0 -983
|
@@ -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,
|
|
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,
|
|
3
|
-
import * as React
|
|
4
|
-
import { FieldValues, FormProviderProps, FieldName, FieldPath
|
|
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-
|
|
8
|
-
export {
|
|
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 =
|
|
16
|
-
children?: React
|
|
17
|
-
onSubmit?: (data:
|
|
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
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
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
|
-
}
|
|
87
|
-
declare const FormFieldCurrencyInput:
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
}
|
|
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
|
-
|
|
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?:
|
|
62
|
+
direction?: 'column' | 'row';
|
|
117
63
|
width?: string;
|
|
118
|
-
}
|
|
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
|
|
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
|
-
|
|
81
|
+
type FormFieldRadioCardIconyProps<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> = FormFieldProps<TFieldValues, TName> & {
|
|
135
82
|
options: FormRadioOption[];
|
|
136
|
-
direction?:
|
|
83
|
+
direction?: 'column' | 'row';
|
|
137
84
|
width?: string;
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
declare const
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
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,
|
|
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.
|
|
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": "^
|
|
36
|
-
"react-hook-form": "^7.
|
|
37
|
-
"react-number-format": "^5.4.
|
|
38
|
-
"yup": "^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.
|
|
43
|
-
"@ttoss/ui": "^5.10.
|
|
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.
|
|
47
|
+
"@types/react": "^19.2.6",
|
|
48
48
|
"jest": "^30.2.0",
|
|
49
49
|
"react": "^19.2.0",
|
|
50
|
-
"react-error-boundary": "^
|
|
51
|
-
"tsup": "^8.5.
|
|
52
|
-
"yup": "^1.
|
|
53
|
-
"@ttoss/
|
|
54
|
-
"@ttoss/
|
|
55
|
-
"@ttoss/i18n
|
|
56
|
-
"@ttoss/react-
|
|
57
|
-
"@ttoss/test-utils": "^3.0.
|
|
58
|
-
"@ttoss/ui": "^5.10.
|
|
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 };
|