diff --git a/src/frontend/src/Components/shared/header/UserNavigation.js b/src/frontend/src/Components/shared/header/UserNavigation.js index 2b1df7713..b035d0fc9 100644 --- a/src/frontend/src/Components/shared/header/UserNavigation.js +++ b/src/frontend/src/Components/shared/header/UserNavigation.js @@ -56,6 +56,18 @@ export default function UserNavigation(props) { /* Helpers */ const toggleAuthModal = (action) => { + // Hide screen reader content behind the lightbox + const allFocuses = document.querySelectorAll("a, button, input"); + allFocuses.forEach((element) => { + element.setAttribute("aria-hidden", "true"); + element.setAttribute("tabindex", "-1"); + }); + + const modalContent = document.getElementById("modal-content"); + if (modalContent) { + modalContent.focus(); + } + setAuthContext((prior) => { if (!prior.showingModal) { return { ...prior, showingModal: true, action }; diff --git a/src/frontend/src/Modal.js b/src/frontend/src/Modal.js index 92e916dd2..ffbe690ae 100644 --- a/src/frontend/src/Modal.js +++ b/src/frontend/src/Modal.js @@ -41,6 +41,13 @@ export default function Modal() { }; const resetAuthModal = () => { + // Reset focus and screen reader content + const allFocuses = document.querySelectorAll("a, button, input"); + allFocuses.forEach((element) => { + element.removeAttribute("aria-hidden"); + element.removeAttribute("tabindex"); + }); + setAuthContext((prior) => { return { ...prior, showingModal: !prior.showingModal, action: null } }); @@ -75,21 +82,26 @@ export default function Modal() {