@@ -126,7 +126,7 @@ export type FieldListenerFn<
126
126
*/
127
127
export type FieldMetaFn < TFormData , TMetaExtension extends object > = (
128
128
props : FormState < TFormData > ,
129
- ) => FieldMetaExtension < TMetaExtension >
129
+ ) => TMetaExtension
130
130
131
131
export interface FieldValidators <
132
132
TParentData ,
@@ -297,14 +297,14 @@ export interface FieldListeners<
297
297
export interface FieldOptions <
298
298
TParentData ,
299
299
TName extends DeepKeys < TParentData > ,
300
- TMetaExtension extends object ,
301
300
TFieldValidator extends
302
301
| Validator < DeepValue < TParentData , TName > , unknown >
303
302
| undefined = undefined ,
304
303
TFormValidator extends
305
304
| Validator < TParentData , unknown >
306
305
| undefined = undefined ,
307
306
TData extends DeepValue < TParentData , TName > = DeepValue < TParentData , TName > ,
307
+ TMetaExtension extends object = { } ,
308
308
> {
309
309
/**
310
310
* The field name. The type will be `DeepKeys<TParentData>` to ensure your name is a deep key of the parent dataset.
@@ -410,28 +410,25 @@ export type FieldMetaDerived = {
410
410
isPristine : boolean
411
411
}
412
412
413
- export type FieldMetaExtension < TMetaExtension extends object = { } > =
414
- TMetaExtension
415
-
416
413
/**
417
414
* An object type representing the metadata of a field in a form.
418
415
*/
419
416
export type FieldMeta < TMetaExtension extends object = { } > = FieldMetaBase &
420
417
FieldMetaDerived &
421
- FieldMetaExtension < TMetaExtension >
418
+ TMetaExtension
422
419
423
420
/**
424
421
* An object type representing the state of a field.
425
422
*/
426
- export type FieldState < TData > = {
423
+ export type FieldState < TData , TMetaExtension extends object = { } > = {
427
424
/**
428
425
* The current value of the field.
429
426
*/
430
427
value : TData
431
428
/**
432
429
* The current metadata of the field.
433
430
*/
434
- meta : FieldMeta
431
+ meta : FieldMeta < TMetaExtension >
435
432
}
436
433
437
434
/**
@@ -453,6 +450,7 @@ export class FieldApi<
453
450
| Validator < TParentData , unknown >
454
451
| undefined = undefined ,
455
452
TData extends DeepValue < TParentData , TName > = DeepValue < TParentData , TName > ,
453
+ TMetaExtension extends object = { } ,
456
454
> {
457
455
/**
458
456
* A reference to the form API instance.
@@ -481,7 +479,7 @@ export class FieldApi<
481
479
/**
482
480
* The field state store.
483
481
*/
484
- store ! : Derived < FieldState < TData > >
482
+ store ! : Derived < FieldState < TData , TMetaExtension > >
485
483
/**
486
484
* The current field state.
487
485
*/
@@ -529,7 +527,7 @@ export class FieldApi<
529
527
return {
530
528
value,
531
529
meta,
532
- } as FieldState < TData >
530
+ } as FieldState < TData , TMetaExtension >
533
531
} ,
534
532
} )
535
533
@@ -657,6 +655,11 @@ export class FieldApi<
657
655
this . setMeta ( this . state . meta )
658
656
}
659
657
658
+ this . setMeta ( ( prev ) => ( {
659
+ ...prev ,
660
+ ...this . options . meta ?.( this . form . state ) ,
661
+ } ) )
662
+
660
663
this . options = opts as never
661
664
this . name = opts . name
662
665
}
@@ -685,7 +688,9 @@ export class FieldApi<
685
688
686
689
getMeta = ( ) => this . store . state . meta
687
690
688
- meta = this . store . state . meta
691
+ get meta ( ) {
692
+ return this . store . state as FieldMeta < TMetaExtension >
693
+ }
689
694
690
695
/**
691
696
* Sets the field metadata.
0 commit comments