diff --git a/client/src/components/Planner/PlaceFormModal.test.tsx b/client/src/components/Planner/PlaceFormModal.test.tsx
index ed2595354..40fbc45e1 100644
--- a/client/src/components/Planner/PlaceFormModal.test.tsx
+++ b/client/src/components/Planner/PlaceFormModal.test.tsx
@@ -162,6 +162,17 @@ describe('PlaceFormModal', () => {
expect(screen.queryByDisplayValue('Old Place')).not.toBeInTheDocument();
});
+ it('clears the maps search input after the modal closes and reopens', async () => {
+ const user = userEvent.setup();
+ const { rerender } = render();
+ await user.type(screen.getByPlaceholderText('Search places...'), 'Eiffel Tower');
+
+ rerender();
+ rerender();
+
+ expect(screen.getByPlaceholderText('Search places...')).toHaveValue('');
+ });
+
// ── Maps search ──────────────────────────────────────────────────────────────
it('FE-PLANNER-PLACEFORM-018: maps search populates results via button click', async () => {
diff --git a/client/src/components/Planner/PlaceFormModal.tsx b/client/src/components/Planner/PlaceFormModal.tsx
index 781d62654..97843bb2d 100644
--- a/client/src/components/Planner/PlaceFormModal.tsx
+++ b/client/src/components/Planner/PlaceFormModal.tsx
@@ -318,6 +318,12 @@ function usePlaceFormModal(props: PlaceFormModalProps) {
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [place, prefillCoords, isOpen, assignmentId])
+ useEffect(() => {
+ if (!isOpen) {
+ setMapsSearch('')
+ }
+ }, [isOpen])
+
useEffect(() => {
if (isOpen) {
setTimeout(() => {