@@ -129,7 +129,8 @@ export default function App() {
129
129
``` typescript copy
130
130
export type UseFormReturn <
131
131
TFieldValues extends FieldValues = FieldValues ,
132
- TContext = any
132
+ TContext = any ,
133
+ TTransformedValues extends FieldValues | undefined = undefined ,
133
134
> = {
134
135
watch: UseFormWatch <TFieldValues >
135
136
getValues: UseFormGetValues <TFieldValues >
@@ -238,16 +239,24 @@ export default function App() {
238
239
```typescript copy
239
240
export type UseFormProps<
240
241
TFieldValues extends FieldValues = FieldValues,
241
- TContext extends object = object
242
+ TContext extends object = object,
243
+ TTransformedValues extends FieldValues | undefined = undefined,
242
244
> = Partial<{
243
245
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 ]
246
252
resolver : Resolver < TFieldValues , TContext>
247
253
context: TContext
248
254
shouldFocusError : boolean
249
255
shouldUnregister : boolean
250
- criteriaMode : " firstError" | " all"
256
+ shouldUseNativeValidation : boolean
257
+ progressive : boolean
258
+ criteriaMode : CriteriaMode
259
+ delayError : number
251
260
}>
252
261
` ` `
253
262
@@ -261,37 +270,14 @@ export type UseFieldArrayReturn<
261
270
TFieldArrayName extends FieldArrayPath < TFieldValues > = FieldArrayPath < TFieldValues > ,
262
271
TKeyName extends string = " id"
263
272
> = {
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>
295
281
fields: FieldArrayWithId < TFieldValues , TFieldArrayName , TKeyName>[]
296
282
}
297
283
```
@@ -302,16 +288,25 @@ export type UseFieldArrayReturn<
302
288
303
289
```typescript copy
304
290
export 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',
307
294
> = {
308
- name: string
295
+ name: TFieldArrayName
309
296
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<
312
306
RegisterOptions<TFieldValues>,
313
- " maxLength" | " minLength" | " validate " | " required"
307
+ ' maxLength' | ' minLength' | ' required'
314
308
>
309
+ shouldUnregister?: boolean
315
310
}
316
311
` ` `
317
312
@@ -347,6 +342,7 @@ export type UseControllerProps<
347
342
shouldUnregister?: boolean
348
343
defaultValue ?: FieldPathValue < TFieldValues , TName>
349
344
control?: Control < TFieldValues >
345
+ disabled ?: boolean
350
346
}
351
347
` ` `
352
348
@@ -356,7 +352,8 @@ export type UseControllerProps<
356
352
357
353
` ` ` typescript copy
358
354
export type FieldError = {
359
- type: string
355
+ type: LiteralUnion < keyof RegisterOptions , string>
356
+ root?: FieldError
360
357
ref ?: Ref
361
358
types ?: MultipleFieldErrors
362
359
message ?: Message
@@ -383,10 +380,13 @@ export type FieldErrors<T extends FieldValues = FieldValues> = Partial<
383
380
384
381
` ` ` typescript copy
385
382
export 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
+ }
390
390
` ` `
391
391
392
392
---
@@ -406,15 +406,14 @@ export type FieldPath<TFieldValues extends FieldValues> = Path<TFieldValues>
406
406
This type will return union with all available paths that match the passed value
407
407
408
408
` ` ` 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 > ]
418
417
` ` `
419
418
420
419
---
@@ -432,39 +431,68 @@ export type FieldValues = Record<string, any>
432
431
` ` ` typescript copy
433
432
export type FieldArrayWithId <
434
433
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' ,
437
437
> = FieldArray < TFieldValues , TFieldArrayName > & Record < TKeyName , string >
438
+
438
439
` ` `
439
440
440
441
---
441
442
442
443
## \< /> Mode {#Mode}
443
444
444
445
` ` ` 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
452
449
` ` `
453
450
454
451
---
455
452
456
453
## \< /> RegisterOptions {#RegisterOptions}
457
454
458
455
` ` ` 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 <{
460
460
required: Message | ValidationRule <boolean >
461
461
min: ValidationRule <number | string >
462
462
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
+ )
468
496
` ` `
469
497
470
498
---
@@ -474,14 +502,14 @@ export type RegisterOptions = Partial<{
474
502
` ` ` typescript copy
475
503
export type FormStateProxy < TFieldValues extends FieldValues = FieldValues > = {
476
504
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
482
510
isValid : boolean
483
- errors : FieldErrors < TFieldValues >
484
511
}
512
+
485
513
` ` `
486
514
487
515
---
0 commit comments