Skip to content

Commit 97f174a

Browse files
authored
Merge pull request Expensify#68007 from software-mansion-labs/collectioneur/fix-confirm-modal-exit-animation
Collectioneur/fix confirm modal exit animation
2 parents fa54056 + f4c187b commit 97f174a

3 files changed

Lines changed: 20 additions & 16 deletions

File tree

src/components/Search/SearchPageHeader/SearchTypeMenuPopover.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,10 @@ function SearchTypeMenuPopover({queryJSON}: SearchTypeMenuNarrowProps) {
4242
scrollContainerStyle={styles.pv0}
4343
/>
4444
)}
45-
<DeleteConfirmModal />
45+
{/* DeleteConfirmModal is a stable JSX element returned by the hook.
46+
Returning the element directly keeps the component identity across re-renders so React
47+
can play its exit animation instead of removing it instantly. */}
48+
{DeleteConfirmModal}
4649
</>
4750
);
4851
}

src/hooks/useDeleteSavedSearch.tsx

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -32,20 +32,18 @@ export default function useDeleteSavedSearch() {
3232
}
3333
};
3434

35-
function DeleteConfirmModal() {
36-
return (
37-
<ConfirmModal
38-
title={translate('search.deleteSavedSearch')}
39-
onConfirm={handleDelete}
40-
onCancel={() => setIsDeleteModalVisible(false)}
41-
isVisible={isDeleteModalVisible}
42-
prompt={translate('search.deleteSavedSearchConfirm')}
43-
confirmText={translate('common.delete')}
44-
cancelText={translate('common.cancel')}
45-
danger
46-
/>
47-
);
48-
}
35+
const DeleteConfirmModal = (
36+
<ConfirmModal
37+
title={translate('search.deleteSavedSearch')}
38+
onConfirm={handleDelete}
39+
onCancel={() => setIsDeleteModalVisible(false)}
40+
isVisible={isDeleteModalVisible}
41+
prompt={translate('search.deleteSavedSearchConfirm')}
42+
confirmText={translate('common.delete')}
43+
cancelText={translate('common.cancel')}
44+
danger
45+
/>
46+
);
4947

5048
return {showDeleteModal, DeleteConfirmModal};
5149
}

src/pages/Search/SearchTypeMenu.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,10 @@ function SearchTypeMenu({queryJSON}: SearchTypeMenuProps) {
225225
{section.translationPath === 'search.savedSearchesMenuItemTitle' ? (
226226
<>
227227
{renderSavedSearchesSection(savedSearchesMenuItems)}
228-
<DeleteConfirmModal />
228+
{/* DeleteConfirmModal is a stable JSX element returned by the hook.
229+
Returning the element directly keeps the component identity across re-renders so React
230+
can play its exit animation instead of removing it instantly. */}
231+
{DeleteConfirmModal}
229232
</>
230233
) : (
231234
<>

0 commit comments

Comments
 (0)