diff --git a/src/components/mui/__tests__/additional-input-list.test.js b/src/components/mui/__tests__/additional-input-list.test.js index 42a421fd..0db6d195 100644 --- a/src/components/mui/__tests__/additional-input-list.test.js +++ b/src/components/mui/__tests__/additional-input-list.test.js @@ -149,6 +149,47 @@ describe("AdditionalInputList", () => { expect(screen.getByTestId("field-count")).toHaveTextContent("2"); }); }); + + test("new meta field starts with empty values when an existing field already has values", async () => { + let capturedFields = null; + + const TestWrapper = () => { + const { values } = useFormikContext(); + capturedFields = values.meta_fields; + return ; + }; + + render( + +
+ + +
+ ); + + const addButton = screen.getByTestId("add-btn-0"); + await userEvent.click(addButton); + + await waitFor(() => { + expect(capturedFields).toHaveLength(2); + expect(capturedFields[1].values).toEqual([]); + }); + }); }); describe("handleRemove", () => { diff --git a/src/components/mui/formik-inputs/additional-input/meta-field-values.js b/src/components/mui/formik-inputs/additional-input/meta-field-values.js index de179930..67fb685a 100644 --- a/src/components/mui/formik-inputs/additional-input/meta-field-values.js +++ b/src/components/mui/formik-inputs/additional-input/meta-field-values.js @@ -44,12 +44,11 @@ const MetaFieldValues = ({ }; const handleAddValue = () => { - const newFields = [...metaFields]; - newFields[fieldIndex].values.push({ - value: "", - name: "", - is_default: false - }); + const newFields = metaFields.map((f, i) => + i === fieldIndex + ? { ...f, values: [...f.values, { value: "", name: "", is_default: false }] } + : f + ); setFieldValue(baseName, newFields); };