diff --git a/src/components/DataEntry/DataEntryTable/NewEntry/index.tsx b/src/components/DataEntry/DataEntryTable/NewEntry/index.tsx index d0c738d166..37597271b7 100644 --- a/src/components/DataEntry/DataEntryTable/NewEntry/index.tsx +++ b/src/components/DataEntry/DataEntryTable/NewEntry/index.tsx @@ -45,6 +45,7 @@ interface NewEntryProps { vernacularLang: WritingSystem; // Parent component handles new entry state: addNewEntry: () => Promise; + resetNewEntry: () => void; updateWordWithNewGloss: (wordId: string) => Promise; newAudioUrls: string[]; addNewAudioUrl: (file: File) => void; @@ -72,6 +73,7 @@ export default function NewEntry(props: NewEntryProps): ReactElement { vernacularLang, // Parent component handles new entry state: addNewEntry, + resetNewEntry, updateWordWithNewGloss, newAudioUrls, addNewAudioUrl, @@ -116,13 +118,10 @@ export default function NewEntry(props: NewEntryProps): ReactElement { ); const resetState = useCallback((): void => { - setNewGloss(""); - setNewNote(""); - setNewVern(""); + resetNewEntry(); setVernOpen(false); - // May also need to reset newAudioUrls in the parent component. focus(FocusTarget.Vernacular); - }, [focus, setNewGloss, setNewNote, setNewVern, setVernOpen]); + }, [focus, resetNewEntry, setVernOpen]); /** Reset when tree opens, except for the first time it is open. */ useEffect(() => { diff --git a/src/components/DataEntry/DataEntryTable/NewEntry/tests/index.test.tsx b/src/components/DataEntry/DataEntryTable/NewEntry/tests/index.test.tsx index 8f945c4ff9..e9705063cd 100644 --- a/src/components/DataEntry/DataEntryTable/NewEntry/tests/index.test.tsx +++ b/src/components/DataEntry/DataEntryTable/NewEntry/tests/index.test.tsx @@ -25,6 +25,7 @@ describe("NewEntry", () => { vernacularLang={newWritingSystem()} // Parent component handles new entry state: addNewEntry={jest.fn()} + resetNewEntry={jest.fn()} updateWordWithNewGloss={jest.fn()} newAudioUrls={[]} addNewAudioUrl={jest.fn()} diff --git a/src/components/DataEntry/DataEntryTable/index.tsx b/src/components/DataEntry/DataEntryTable/index.tsx index 5c1f91754b..f237550364 100644 --- a/src/components/DataEntry/DataEntryTable/index.tsx +++ b/src/components/DataEntry/DataEntryTable/index.tsx @@ -346,6 +346,17 @@ export default function DataEntryTable( }); }; + /*** Clear all new entry state elements. */ + const resetNewEntry = (): void => { + setState((prevState) => ({ + ...prevState, + newAudioUrls: [], + newGloss: "", + newNote: "", + newVern: "", + })); + }; + /*** Add an audio file to newAudioUrls. */ const addNewAudioUrl = (file: File): void => { setState((prevState) => { @@ -893,6 +904,7 @@ export default function DataEntryTable( vernacularLang={vernacularLang} // Parent handles new entry state of child: addNewEntry={addNewEntry} + resetNewEntry={resetNewEntry} updateWordWithNewGloss={updateWordWithNewEntry} newAudioUrls={state.newAudioUrls} addNewAudioUrl={addNewAudioUrl}