@@ -31,40 +31,32 @@ import { cn } from '../utils';
31
31
export { useFormState , useWatch , useFieldArray , useFormField } ;
32
32
33
33
export type UseFormProps <
34
- TFieldValues extends TSchema extends ZodSchema
35
- ? z . infer < TSchema >
36
- : FieldValues ,
34
+ TSchema extends ZodSchema ,
37
35
TContext = any ,
38
- TSchema extends ZodSchema | undefined = undefined ,
39
- > = UseHookFormProps < TFieldValues , TContext > & {
40
- schema ?: TSchema ;
36
+ > = UseHookFormProps < z . infer < TSchema > , TContext > & {
37
+ schema : TSchema ;
41
38
} ;
42
39
43
40
export interface UseFormReturn <
44
- TFieldValues extends FieldValues = FieldValues ,
41
+ TSchema extends ZodSchema ,
45
42
TContext = any ,
46
- TTransformedValues extends FieldValues | undefined = undefined ,
47
- > extends UseHookFormReturn < TFieldValues , TContext , TTransformedValues > {
43
+ TTransformedValues extends FieldValues = z . infer < TSchema > ,
44
+ > extends UseHookFormReturn < z . infer < TSchema > , TContext , TTransformedValues > {
48
45
Field : React . FunctionComponent <
49
- FormFieldProps < TFieldValues , FieldPath < TFieldValues > >
46
+ FormFieldProps < z . infer < TSchema > , FieldPath < z . infer < TSchema > > >
50
47
> ;
51
48
}
52
49
53
50
export function useForm <
54
- TFieldValues extends TSchema extends ZodSchema
55
- ? z . infer < TSchema >
56
- : FieldValues ,
51
+ TSchema extends ZodSchema ,
57
52
TContext = any ,
58
- TTransformedValues extends FieldValues | undefined = undefined ,
59
- TSchema extends ZodSchema | undefined = undefined ,
53
+ TTransformedValues extends FieldValues = z . infer < TSchema > ,
60
54
> (
61
- props ?: UseFormProps < TFieldValues , TContext , TSchema > ,
62
- ) : UseFormReturn < TFieldValues , TContext , TTransformedValues > {
63
- const schema = props ?. schema ;
64
-
55
+ props : UseFormProps < TSchema , TContext > ,
56
+ ) : UseFormReturn < TSchema , TContext , TTransformedValues > {
65
57
return Object . assign (
66
58
useHookForm ( {
67
- resolver : schema ? zodResolver ( schema ) : undefined ,
59
+ resolver : zodResolver ( props . schema ) ,
68
60
...props ,
69
61
} ) ,
70
62
{
@@ -74,21 +66,21 @@ export function useForm<
74
66
}
75
67
76
68
export const useFormContext : <
77
- TFieldValues extends FieldValues ,
69
+ TSchema extends ZodSchema ,
78
70
TContext = any ,
79
- TransformedValues extends FieldValues | undefined = undefined ,
80
- > ( ) => UseFormReturn < TFieldValues , TContext , TransformedValues > =
71
+ TTransformedValues extends FieldValues = z . infer < TSchema > ,
72
+ > ( ) => UseFormReturn < TSchema , TContext , TTransformedValues > =
81
73
useHookFormContext as any ;
82
74
83
75
export interface FormProps <
84
- TFieldValues extends FieldValues = FieldValues ,
76
+ TSchema extends ZodSchema ,
85
77
TContext = any ,
86
- TTransformedValues extends FieldValues | undefined = undefined ,
78
+ TTransformedValues extends FieldValues = z . infer < TSchema > ,
87
79
> extends Omit <
88
- FormProviderProps < TFieldValues , TContext , TTransformedValues > ,
80
+ FormProviderProps < z . infer < TSchema > , TContext , TTransformedValues > ,
89
81
'children'
90
82
> ,
91
- Omit < HookFormProps < TFieldValues , TTransformedValues > , 'control' > {
83
+ Omit < HookFormProps < z . infer < TSchema > , TTransformedValues > , 'control' > {
92
84
/**
93
85
* @default 'top'
94
86
*/
@@ -98,10 +90,10 @@ export interface FormProps<
98
90
}
99
91
100
92
export function Form <
101
- TFieldValues extends FieldValues = FieldValues ,
93
+ TSchema extends ZodSchema ,
102
94
TContext = any ,
103
- TTransformedValues extends FieldValues | undefined = undefined ,
104
- > ( props : FormProps < TFieldValues , TContext , TTransformedValues > ) {
95
+ TTransformedValues extends FieldValues = z . infer < TSchema > ,
96
+ > ( props : FormProps < TSchema , TContext , TTransformedValues > ) {
105
97
const {
106
98
labelPosition = 'top' ,
107
99
labelClassName,
@@ -128,7 +120,7 @@ export function Form<
128
120
} = props ;
129
121
130
122
return (
131
- < FormProvider < TFieldValues , TContext , TTransformedValues >
123
+ < FormProvider < z . infer < TSchema > , TContext , TTransformedValues >
132
124
watch = { watch }
133
125
getValues = { getValues }
134
126
getFieldState = { getFieldState }
@@ -156,20 +148,20 @@ export function Form<
156
148
}
157
149
158
150
export interface FormFieldProps <
159
- TFieldValues extends FieldValues = FieldValues ,
160
- TName extends FieldPath < TFieldValues > = FieldPath < TFieldValues > ,
161
- > extends Omit < ControllerProps < TFieldValues , TName > , 'control' | 'render' > {
151
+ TSchema extends ZodSchema ,
152
+ TName extends FieldPath < z . infer < TSchema > > = FieldPath < z . infer < TSchema > > ,
153
+ > extends Omit < ControllerProps < z . infer < TSchema > , TName > , 'control' | 'render' > {
162
154
label ?: React . ReactNode ;
163
155
desc ?: React . ReactNode ;
164
- children ?: ReactElement | ControllerProps < TFieldValues , TName > [ 'render' ] ;
156
+ children ?: ReactElement | ControllerProps < z . infer < TSchema > , TName > [ 'render' ] ;
165
157
}
166
158
167
159
function FormField <
168
- TFieldValues extends FieldValues = FieldValues ,
169
- TName extends FieldPath < TFieldValues > = FieldPath < TFieldValues > ,
170
- > ( props : FormFieldProps < TFieldValues , TName > ) {
160
+ TSchema extends ZodSchema ,
161
+ TName extends FieldPath < z . infer < TSchema > > = FieldPath < z . infer < TSchema > > ,
162
+ > ( props : FormFieldProps < TSchema , TName > ) {
171
163
const { labelPosition, labelClassName, labelStyle, control } =
172
- useFormContext < TFieldValues > ( ) as FormProps < TFieldValues > ;
164
+ useFormContext < TSchema > ( ) as FormProps < TSchema > ;
173
165
174
166
const { label, desc, children, ...restProps } = props ;
175
167
@@ -249,7 +241,7 @@ export interface FormSlotProps {
249
241
250
242
function FormSlot ( props : FormSlotProps ) {
251
243
const { labelPosition, labelClassName, labelStyle } =
252
- useFormContext ( ) as FormProps ;
244
+ useFormContext ( ) as FormProps < any > ;
253
245
const { label, children } = props ;
254
246
255
247
if ( labelPosition === 'left' ) {
0 commit comments