From 943148fb496ff663539736b29b495796fed73094 Mon Sep 17 00:00:00 2001 From: Daniel Volz Date: Sat, 21 Feb 2026 18:00:12 +0100 Subject: [PATCH] feat: close modals with browser back button on mobile (#257) * feat: close modals with browser back button on mobile Create reusable useModalHistory hook that pushes history state when a modal opens and listens for popstate to close it. Apply to ReportModal, ClearMissedConfirm, ExportModal, ImportConfirm, and all modals using ConfirmModal/ShareDialog/Auth/ExportModal base components. Escape key handling was already in place for desktop. Closes #253 * fix: update tests for renamed button labels and missing useModalHistory mock --- frontend/src/components/Auth.tsx | 2 +- frontend/src/components/ConfirmModal.tsx | 2 +- frontend/src/components/ExportModal.tsx | 2 +- frontend/src/components/ReportModal.tsx | 2 +- frontend/src/components/ShareDialog.tsx | 2 +- frontend/src/hooks/index.ts | 1 + frontend/src/hooks/useModalHistory.ts | 32 +++++++++++++++++++ frontend/src/pages/DashboardPage.tsx | 3 ++ frontend/src/pages/MedicationsPage.tsx | 28 +++++++++++++++- frontend/src/styles/modals-base.css | 13 ++++++++ frontend/src/test/components/Auth.test.tsx | 2 +- .../src/test/components/ExportModal.test.tsx | 4 +-- .../src/test/components/ReportModal.test.tsx | 2 +- .../src/test/components/ShareDialog.test.tsx | 3 +- .../src/test/pages/MedicationsPage.test.tsx | 1 + 15 files changed, 88 insertions(+), 11 deletions(-) create mode 100644 frontend/src/hooks/useModalHistory.ts diff --git a/frontend/src/components/Auth.tsx b/frontend/src/components/Auth.tsx index 9fc860b..2a69c2c 100644 --- a/frontend/src/components/Auth.tsx +++ b/frontend/src/components/Auth.tsx @@ -756,7 +756,7 @@ export function UserProfile({ onClose }: { onClose?: () => void }) {
diff --git a/frontend/src/components/ReportModal.tsx b/frontend/src/components/ReportModal.tsx index 67932a5..b71570a 100644 --- a/frontend/src/components/ReportModal.tsx +++ b/frontend/src/components/ReportModal.tsx @@ -256,7 +256,7 @@ export function ReportModal({ isOpen, onClose, medications }: ReportModalProps) {/* Actions */}