@@ -129,7 +129,8 @@ export default function App() {
129129``` typescript copy
130130export type UseFormReturn <
131131 TFieldValues extends FieldValues = FieldValues ,
132- TContext = any
132+ TContext = any ,
133+ TTransformedValues extends FieldValues | undefined = undefined ,
133134> = {
134135 watch: UseFormWatch <TFieldValues >
135136 getValues: UseFormGetValues <TFieldValues >
@@ -238,16 +239,24 @@ export default function App() {
238239```typescript copy
239240export type UseFormProps<
240241 TFieldValues extends FieldValues = FieldValues,
241- TContext extends object = object
242+ TContext extends object = object,
243+ TTransformedValues extends FieldValues | undefined = undefined,
242244> = Partial<{
243245 mode: Mode
244- reValidateMode : Mode
245- defaultValues : DeepPartial < TFieldValues >
246+ disabled : boolean
247+ reValidateMode : Exclude < Mode , ' onTouched' | ' all' >
248+ defaultValues: DefaultValues < TFieldValues > | AsyncDefaultValues < TFieldValues >
249+ values : TFieldValues
250+ errors : FieldErrors < TFieldValues >
251+ resetOptions : Parameters < UseFormReset < TFieldValues >> [1 ]
246252 resolver : Resolver < TFieldValues , TContext>
247253 context: TContext
248254 shouldFocusError : boolean
249255 shouldUnregister : boolean
250- criteriaMode : " firstError" | " all"
256+ shouldUseNativeValidation : boolean
257+ progressive : boolean
258+ criteriaMode : CriteriaMode
259+ delayError : number
251260}>
252261` ` `
253262
@@ -261,37 +270,14 @@ export type UseFieldArrayReturn<
261270 TFieldArrayName extends FieldArrayPath < TFieldValues > = FieldArrayPath < TFieldValues > ,
262271 TKeyName extends string = " id"
263272> = {
264- swap : (indexA : number , indexB : number ) => void
265- move : (indexA : number , indexB : number ) => void
266- prepend : (
267- value :
268- | Partial <FieldArray <TFieldValues , TFieldArrayName >>
269- | Partial <FieldArray <TFieldValues , TFieldArrayName >>[],
270- options ? : FieldArrayMethodProps
271- ) => void
272- append : (
273- value :
274- | Partial <FieldArray <TFieldValues , TFieldArrayName >>
275- | Partial <FieldArray <TFieldValues , TFieldArrayName >>[],
276- options ? : FieldArrayMethodProps
277- ) => void
278- remove : (index ? : number | number []) => void
279- insert : (
280- index : number ,
281- value :
282- | Partial <FieldArray <TFieldValues , TFieldArrayName >>
283- | Partial <FieldArray <TFieldValues , TFieldArrayName >>[],
284- options ? : FieldArrayMethodProps
285- ) => void
286- update : (
287- index : number ,
288- value : Partial <FieldArray <TFieldValues , TFieldArrayName >>
289- ) => void
290- replace : (
291- value :
292- | Partial <FieldArray <TFieldValues , TFieldArrayName >>
293- | Partial <FieldArray <TFieldValues , TFieldArrayName >>[]
294- ) => void
273+ swap: UseFieldArraySwap
274+ move : UseFieldArrayMove
275+ prepend : UseFieldArrayPrepend < TFieldValues , TFieldArrayName>
276+ append: UseFieldArrayAppend < TFieldValues , TFieldArrayName>
277+ remove: UseFieldArrayRemove
278+ insert : UseFieldArrayInsert < TFieldValues , TFieldArrayName>
279+ update: UseFieldArrayUpdate < TFieldValues , TFieldArrayName>
280+ replace: UseFieldArrayReplace < TFieldValues , TFieldArrayName>
295281 fields: FieldArrayWithId < TFieldValues , TFieldArrayName , TKeyName>[]
296282}
297283```
@@ -302,16 +288,25 @@ export type UseFieldArrayReturn<
302288
303289```typescript copy
304290export type UseFieldArrayProps<
305- TKeyName extends string = "id",
306- TControl extends Control = Control
291+ TFieldValues extends FieldValues = FieldValues,
292+ TFieldArrayName extends FieldArrayPath<TFieldValues> = FieldArrayPath<TFieldValues>,
293+ TKeyName extends string = 'id',
307294> = {
308- name: string
295+ name: TFieldArrayName
309296 keyName ?: TKeyName
310- control ?: TControl
311- rules ?: Pick <
297+ control ?: Control < TFieldValues >
298+ rules ?: {
299+ validate?
300+ | Validate<FieldArray<TFieldValues , TFieldArrayName>[], TFieldValues>
301+ | Record<
302+ string,
303+ Validate<FieldArray<TFieldValues, TFieldArrayName>[], TFieldValues>
304+ >
305+ } & Pick<
312306 RegisterOptions<TFieldValues>,
313- " maxLength" | " minLength" | " validate " | " required"
307+ ' maxLength' | ' minLength' | ' required'
314308 >
309+ shouldUnregister?: boolean
315310}
316311` ` `
317312
@@ -347,6 +342,7 @@ export type UseControllerProps<
347342 shouldUnregister?: boolean
348343 defaultValue ?: FieldPathValue < TFieldValues , TName>
349344 control?: Control < TFieldValues >
345+ disabled ?: boolean
350346}
351347` ` `
352348
@@ -356,7 +352,8 @@ export type UseControllerProps<
356352
357353` ` ` typescript copy
358354export type FieldError = {
359- type: string
355+ type: LiteralUnion < keyof RegisterOptions , string>
356+ root?: FieldError
360357 ref ?: Ref
361358 types ?: MultipleFieldErrors
362359 message ?: Message
@@ -383,10 +380,13 @@ export type FieldErrors<T extends FieldValues = FieldValues> = Partial<
383380
384381` ` ` typescript copy
385382export type Field = {
386- ref: Ref
387- mutationWatcher ?: MutationWatcher
388- options ?: RadioOrCheckboxOption []
389- } & RegisterOptions
383+ _f: {
384+ ref: Ref
385+ name : InternalFieldName
386+ refs ?: HTMLInputElement []
387+ mount ?: boolean
388+ } & RegisterOptions
389+ }
390390` ` `
391391
392392---
@@ -406,15 +406,14 @@ export type FieldPath<TFieldValues extends FieldValues> = Path<TFieldValues>
406406This type will return union with all available paths that match the passed value
407407
408408` ` ` typescript copy
409- function Field<
410- TFieldValues extends FieldValues ,
411- TPath extends FieldPathByValue <TFieldValues , Date >
412- >({ control , name }: { control: Control <TFieldValues >; name: TPath }) {
413- const { field } = useController ({
414- control ,
415- name ,
416- })
417- }
409+ export type FieldPathByValue < TFieldValues extends FieldValues , TValue > = {
410+ [Key in FieldPath < TFieldValues > ]: FieldPathValue <
411+ TFieldValues ,
412+ Key
413+ > extends TValue
414+ ? Key
415+ : never
416+ }[FieldPath < TFieldValues > ]
418417` ` `
419418
420419---
@@ -432,39 +431,68 @@ export type FieldValues = Record<string, any>
432431` ` ` typescript copy
433432export type FieldArrayWithId <
434433 TFieldValues extends FieldValues = FieldValues ,
435- TFieldArrayName extends FieldArrayPath < TFieldValues > = FieldArrayPath < TFieldValues > ,
436- TKeyName extends string = " id"
434+ TFieldArrayName extends
435+ FieldArrayPath < TFieldValues > = FieldArrayPath < TFieldValues > ,
436+ TKeyName extends string = ' id' ,
437437> = FieldArray < TFieldValues , TFieldArrayName > & Record < TKeyName , string >
438+
438439` ` `
439440
440441---
441442
442443## \< /> Mode {#Mode}
443444
444445` ` ` typescript copy
445- export type Mode = {
446- onBlur: " onBlur"
447- onChange : " onChange"
448- onSubmit : " onSubmit"
449- onTouched : " onTouched"
450- all : " all"
451- }
446+ export type ValidationMode = typeof VALIDATION_MODE
447+
448+ export type Mode = keyof ValidationMode
452449` ` `
453450
454451---
455452
456453## \< /> RegisterOptions {#RegisterOptions}
457454
458455` ` ` typescript copy
459- export type RegisterOptions = Partial <{
456+ export type RegisterOptions <
457+ TFieldValues extends FieldValues = FieldValues ,
458+ TFieldName extends FieldPath < TFieldValues > = FieldPath < TFieldValues > ,
459+ > = Partial <{
460460 required: Message | ValidationRule <boolean >
461461 min: ValidationRule <number | string >
462462 max: ValidationRule <number | string >
463- maxLength: ValidationRule <number | string >
464- minLength: ValidationRule <number | string >
465- pattern: ValidationRule <RegExp >
466- validate: Validate | Record <string , Validate >
467- }>
463+ maxLength: ValidationRule <number >
464+ minLength: ValidationRule <number >
465+ validate:
466+ | Validate <FieldPathValue <TFieldValues , TFieldName >, TFieldValues >
467+ | Record <
468+ string ,
469+ Validate <FieldPathValue <TFieldValues , TFieldName >, TFieldValues >
470+ >
471+ value : FieldPathValue <TFieldValues , TFieldName >
472+ setValueAs : (value : any ) => any
473+ shouldUnregister ?: boolean
474+ onChange ?: (event : any ) => void
475+ onBlur ?: (event : any ) => void
476+ disabled : boolean
477+ deps : FieldPath <TFieldValues > | FieldPath <TFieldValues >[]
478+ }> &
479+ (
480+ | {
481+ pattern?: ValidationRule < RegExp >
482+ valueAsNumber ?: false
483+ valueAsDate ?: false
484+ }
485+ | {
486+ pattern?: undefined
487+ valueAsNumber ?: false
488+ valueAsDate ?: true
489+ }
490+ | {
491+ pattern?: undefined
492+ valueAsNumber ?: true
493+ valueAsDate ?: false
494+ }
495+ )
468496` ` `
469497
470498---
@@ -474,14 +502,14 @@ export type RegisterOptions = Partial<{
474502` ` ` typescript copy
475503export type FormStateProxy < TFieldValues extends FieldValues = FieldValues > = {
476504 isDirty: boolean
477- dirtyFields : Dirtied < TFieldValues >
478- isSubmitted : boolean
479- submitCount : number
480- touched : FieldNames < TFieldValues >
481- isSubmitting : boolean
505+ isValidating : boolean
506+ dirtyFields : FieldNamesMarkedBoolean < TFieldValues >
507+ touchedFields : FieldNamesMarkedBoolean < TFieldValues >
508+ validatingFields : FieldNamesMarkedBoolean < TFieldValues >
509+ errors : boolean
482510 isValid : boolean
483- errors : FieldErrors < TFieldValues >
484511}
512+
485513` ` `
486514
487515---
0 commit comments