fix: FormApi's deleteField method now updates the store

* Add basic tests for arrays

* Ran prettier

* Ran prettier

* Add new test for bug

* Fix bug regarding preserved values even if field is umounted

* Run prettier

* Update store subscription when removingFields

* Fix delete field

* Fix delete field

* chore: fix linting

---------

Co-authored-by: Corbin Crutchley <git@crutchcorn.dev>
This commit is contained in:
Christian24
2023-11-05 15:16:29 +01:00
committed by GitHub
parent 90bd06ff56
commit 1a37fabcf4
2 changed files with 8 additions and 5 deletions

View File

@@ -551,11 +551,12 @@ export class FormApi<TFormData, ValidatorType> {
} }
deleteField = <TField extends DeepKeys<TFormData>>(field: TField) => { deleteField = <TField extends DeepKeys<TFormData>>(field: TField) => {
const newState = { ...this.state } this.store.setState((prev) => {
delete newState.values[field as keyof TFormData] const newState = { ...prev }
delete newState.fieldMeta[field] delete newState.values[field as keyof TFormData]
delete newState.fieldMeta[field]
this.store.setState((_) => newState) return newState
})
} }
pushFieldValue = <TField extends DeepKeys<TFormData>>( pushFieldValue = <TField extends DeepKeys<TFormData>>(

View File

@@ -611,5 +611,7 @@ describe('field api', () => {
// Field should have been removed from the form as well // Field should have been removed from the form as well
expect(form.state.values.name).toBeUndefined() expect(form.state.values.name).toBeUndefined()
expect(form.state.fieldMeta.name).toBeUndefined() expect(form.state.fieldMeta.name).toBeUndefined()
expect(form.store.state.values.name).toBeUndefined()
expect(form.store.state.fieldMeta.name).toBeUndefined()
}) })
}) })