File tree 2 files changed +47
-0
lines changed
2 files changed +47
-0
lines changed Original file line number Diff line number Diff line change @@ -110,6 +110,8 @@ export function metaHelper<
110
110
const nextFieldMeta = formApi . getFieldMeta ( nextFieldKey )
111
111
if ( nextFieldMeta ) {
112
112
formApi . setFieldMeta ( fieldKey , nextFieldMeta )
113
+ } else {
114
+ formApi . setFieldMeta ( fieldKey , getEmptyFieldMeta ( ) )
113
115
}
114
116
} )
115
117
}
Original file line number Diff line number Diff line change @@ -1760,4 +1760,49 @@ describe('field api', () => {
1760
1760
nameField . mount ( )
1761
1761
expect ( nameField . getMeta ( ) . errors ) . toEqual ( [ 'THERE IS AN ERROR' ] )
1762
1762
} )
1763
+
1764
+ it ( 'should remove the meta from deleted fields' , async ( ) => {
1765
+ const form = new FormApi ( {
1766
+ defaultValues : {
1767
+ names : [
1768
+ {
1769
+ firstName : 'John' ,
1770
+ lastName : '' ,
1771
+ } ,
1772
+ {
1773
+ firstName : 'Martha' ,
1774
+ lastName : 'Mustermann' ,
1775
+ } ,
1776
+ ] ,
1777
+ } ,
1778
+ } )
1779
+
1780
+ const field = new FieldApi ( {
1781
+ form,
1782
+ name : `names[${ 0 } ].lastName` ,
1783
+ validators : {
1784
+ onMount : ( { value } ) =>
1785
+ value . length > 0 ? undefined : 'Last name is required' ,
1786
+ onChange : ( { value } ) =>
1787
+ value . length > 0 ? undefined : 'Last name is required' ,
1788
+ } ,
1789
+ } )
1790
+
1791
+ form . mount ( )
1792
+ field . mount ( )
1793
+
1794
+ expect ( form . state . canSubmit ) . toBe ( false )
1795
+
1796
+ await form . removeFieldValue ( 'names' , 0 )
1797
+
1798
+ expect ( form . getFieldValue ( 'names' ) ) . toEqual ( [
1799
+ {
1800
+ firstName : 'Martha' ,
1801
+ lastName : 'Mustermann' ,
1802
+ } ,
1803
+ ] )
1804
+
1805
+ expect ( field . getMeta ( ) . errors ) . toStrictEqual ( [ ] )
1806
+ expect ( form . state . canSubmit ) . toBe ( true )
1807
+ } )
1763
1808
} )
You can’t perform that action at this time.
0 commit comments