From 96e2542c93ec479b1a6c3d28c4e727c1f172aafa Mon Sep 17 00:00:00 2001 From: Jens Wittmann Date: Thu, 12 Sep 2024 19:01:28 +0200 Subject: [PATCH] A11y: add keydown escape for manager main nav #16612 --- manager/assets/modext/core/modx.layout.js | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/manager/assets/modext/core/modx.layout.js b/manager/assets/modext/core/modx.layout.js index 568b51e47b..c51f04ced1 100644 --- a/manager/assets/modext/core/modx.layout.js +++ b/manager/assets/modext/core/modx.layout.js @@ -507,13 +507,22 @@ Ext.extend(MODx.Layout, Ext.Viewport, { return; } if (!submenu.contains(document.activeElement)) { - this.focusRestoreEls.pop()?.focus(); + this.focusRestoreEls?.pop()?.focus(); this.hideMenu(); window.removeEventListener('focusout', focusRestore); } }, 1); }; + var menuArrowKeysNavigation = (e) => { + if (e.code == 'Escape') { + this.hideMenu(); + this.focusRestoreEls[0]?.focus(); + this.focusRestoreEls = []; + window.removeEventListener('keyup', menuArrowKeysNavigation); + } + }; window.addEventListener('focusout', focusRestore); + window.addEventListener('keyup', menuArrowKeysNavigation); } this.hideSubMenu(); } @@ -578,9 +587,9 @@ Ext.extend(MODx.Layout, Ext.Viewport, { var focusRestore = (e) => { requestAnimationFrame(() => { if (!menu.contains(document.activeElement)) { + _this.focusRestoreEls?.pop()?.parentNode?.nextSibling?.focus(); hide(button); window.removeEventListener('focusout', focusRestore); - _this.focusRestoreEls.pop()?.parentNode?.nextSibling?.focus(); } }); };