@@ -512,6 +512,127 @@ describe('field group api', () => {
512512 expect ( form . state . values . nested . field . name ) . toBeUndefined ( )
513513 } )
514514
515+ it ( 'should deleteAllFields for string field groups' , ( ) => {
516+ const defaultValues = {
517+ nested : {
518+ field : {
519+ name : 'hello' ,
520+ } ,
521+ } ,
522+ }
523+
524+ const form = new FormApi ( {
525+ defaultValues,
526+ } )
527+ form . mount ( )
528+
529+ const field = new FieldApi ( {
530+ form,
531+ name : 'nested.field.name' ,
532+ } )
533+ field . mount ( )
534+
535+ const group = new FieldGroupApi ( {
536+ defaultValues : { name : '' } ,
537+ form,
538+ fields : 'nested.field' ,
539+ } )
540+ group . mount ( )
541+
542+ group . deleteAllFields ( )
543+
544+ expect ( form . state . values . nested . field ) . toEqual ( { } )
545+ } )
546+
547+ it ( 'should deleteAllFields for mapped field groups' , ( ) => {
548+ type FormVals = {
549+ a : string
550+ b : string
551+ }
552+
553+ const defaultValues : FormVals = { a : 'A' , b : 'B' }
554+ const form = new FormApi ( {
555+ defaultValues,
556+ } )
557+ form . mount ( )
558+
559+ const group = new FieldGroupApi ( {
560+ form,
561+ fields : {
562+ firstName : 'a' ,
563+ lastName : 'b' ,
564+ } ,
565+ defaultValues : { firstName : '' , lastName : '' } ,
566+ } )
567+ group . mount ( )
568+
569+ group . deleteAllFields ( )
570+
571+ expect ( form . state . values . a ) . toBeUndefined ( )
572+ expect ( form . state . values . b ) . toBeUndefined ( )
573+ } )
574+
575+ it ( 'should replaceAllFields for string field groups' , ( ) => {
576+ const defaultValues : FormValues = {
577+ name : '' ,
578+ age : 0 ,
579+ people : [ ] ,
580+ relatives : {
581+ father : {
582+ name : 'father' ,
583+ age : 10 ,
584+ } ,
585+ } ,
586+ }
587+
588+ const form = new FormApi ( {
589+ defaultValues,
590+ } )
591+ form . mount ( )
592+
593+ const group = new FieldGroupApi ( {
594+ defaultValues : { } as Person ,
595+ form,
596+ fields : 'relatives.father' ,
597+ } )
598+ group . mount ( )
599+
600+ group . replaceAllFields ( { name : 'New name' , age : 99 } )
601+
602+ expect ( form . state . values . relatives . father ) . toEqual ( {
603+ name : 'New name' ,
604+ age : 99 ,
605+ } )
606+ } )
607+
608+ it ( 'should replaceAllFields for mapped field groups' , ( ) => {
609+ type FormVals = {
610+ a : string
611+ b : string
612+ }
613+
614+ const defaultValues : FormVals = { a : 'A' , b : 'B' }
615+ const form = new FormApi ( {
616+ defaultValues,
617+ } )
618+ form . mount ( )
619+
620+ const group = new FieldGroupApi ( {
621+ form,
622+ fields : {
623+ firstName : 'a' ,
624+ lastName : 'b' ,
625+ } ,
626+ defaultValues : { firstName : '' , lastName : '' } ,
627+ } )
628+ group . mount ( )
629+
630+ group . replaceAllFields ( { firstName : 'X' , lastName : 'Y' } )
631+
632+ expect ( form . state . values . a ) . toBe ( 'X' )
633+ expect ( form . state . values . b ) . toBe ( 'Y' )
634+ } )
635+
515636 it ( 'should forward array methods to the form' , async ( ) => {
516637 vi . useFakeTimers ( )
517638 const defaultValues = {
0 commit comments