From 7783342875e1325d61514a2dbf53509b4f81df17 Mon Sep 17 00:00:00 2001 From: Stalgia Grigg Date: Mon, 4 Dec 2023 15:34:10 -0800 Subject: [PATCH] Revert "Handle focus leaving non-focusable header element backwards in FocusTrapper" This reverts commit 57012cb4eb87aba7c9a4b05981d15da0a6573d4e. --- client/components/common/BasicModal/index.jsx | 8 +----- .../components/common/FocusTrapper/index.jsx | 27 +++++-------------- 2 files changed, 8 insertions(+), 27 deletions(-) diff --git a/client/components/common/BasicModal/index.jsx b/client/components/common/BasicModal/index.jsx index 8b4d52dda..936a85b89 100644 --- a/client/components/common/BasicModal/index.jsx +++ b/client/components/common/BasicModal/index.jsx @@ -48,13 +48,7 @@ const BasicModal = ({ }, []); return ( - + { +const FocusTrapper = ({ children, isActive, trappedElId }) => { const focusableElsRef = useRef([]); + const updateFocusableElements = () => { if (focusableElsRef.current.length > 0) return; @@ -40,22 +41,13 @@ const FocusTrapper = ({ children, isActive, initialFocusRef, trappedElId }) => { const firstFocusableEl = focusableEls[1]; // Last focusable element is before the blank 'after' div const lastFocusableEl = focusableEls[focusableEls.length - 2]; - // When SHIFT + TAB is pressed and the active element is the first focusable element - if ( - event.shiftKey && - (document.activeElement === firstFocusableEl || - document.activeElement === focusableEls[0] || - document.activeElement === initialFocusRef.current) - ) { + + if (event.shiftKey && document.activeElement === firstFocusableEl) { lastFocusableEl.focus(); event.preventDefault(); - } - // When TAB is pressed and the active element is the last focusable element - else if ( + } else if ( !event.shiftKey && - (document.activeElement === lastFocusableEl || - document.activeElement === - focusableEls[focusableEls.length - 1]) + document.activeElement === lastFocusableEl ) { firstFocusableEl.focus(); event.preventDefault(); @@ -68,11 +60,9 @@ const FocusTrapper = ({ children, isActive, initialFocusRef, trappedElId }) => { document.addEventListener('keydown', trapFocus); } else { document.removeEventListener('keydown', trapFocus); - focusableElsRef.current = []; } return () => { - focusableElsRef.current = []; document.removeEventListener('keydown', trapFocus); }; }, [isActive]); @@ -83,10 +73,7 @@ const FocusTrapper = ({ children, isActive, initialFocusRef, trappedElId }) => { FocusTrapper.propTypes = { children: PropTypes.node.isRequired, isActive: PropTypes.bool.isRequired, - trappedElId: PropTypes.string.isRequired, - initialFocusRef: PropTypes.shape({ - current: PropTypes.object - }) + trappedElId: PropTypes.string.isRequired }; export default FocusTrapper;