_content: added 'ESC' event handler to avoid focus trap.
https://screencast.googleplex.com/cast/NTYwNTg4MTkwODU1OTg3Mnw3Mzg5NzAyNi04Ng
Change-Id: I4246a560be1dbbd1f7a8126715940373249f5ac8
Reviewed-on: https://go-review.googlesource.com/c/website/+/517778
Auto-Submit: Jamal Carvalho <jamal@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Jamal Carvalho <jamal@golang.org>
Reviewed-by: Jamal Carvalho <jamal@golang.org>
diff --git a/_content/js/site.js b/_content/js/site.js
index 3f397ed..09ac6f3 100644
--- a/_content/js/site.js
+++ b/_content/js/site.js
@@ -54,20 +54,28 @@
e.target.classList.add('forced-closed');
e.target.classList.remove('forced-open');
});
- // ensure desktop submenus are closed when esc is pressed
- const closeSubmenuOnEsc = e => {
+
+ // ensure focus is removed when esc is pressed
+ const focusOutOnEsc = e => {
if (e.key === 'Escape') {
- const forcedOpenItem = document.querySelector('.forced-open');
- const target = e.currentTarget;
- if (forcedOpenItem) {
- forcedOpenItem.classList.remove('forced-open');
- forcedOpenItem.blur();
- forcedOpenItem.classList.add('forced-closed');
+ const textarea = document.getElementById('code');
+ if (e.target == textarea) {
+ e.preventDefault();
+ textarea.blur();
+ }
+ else {
+ const forcedOpenItem = document.querySelector('.forced-open');
+ const target = e.currentTarget;
+ if (forcedOpenItem) {
+ forcedOpenItem.classList.remove('forced-open');
+ forcedOpenItem.blur();
+ forcedOpenItem.classList.add('forced-closed');
+ e.target.focus();
+ }
}
}
- e.target.focus();
};
- document.addEventListener('keydown', closeSubmenuOnEsc);
+ document.addEventListener('keydown', focusOutOnEsc);
});
// Mobile menu subnav menus
@@ -212,18 +220,6 @@
handleNavigationDrawerInactive(header);
}
- function registerPlaygroundListeners() {
- const textarea = document.getElementById('code');
- const preContainer = document.querySelector('.Playground-preContainer');
-
- textarea?.addEventListener('keydown', e => {
- if (e.key === 'Escape') {
- e.preventDefault();
- textarea.blur();
- }
- });
- }
-
/**
* Attempts to detect user's operating system and sets the download
* links accordingly
@@ -359,7 +355,6 @@
const onPageLoad = () => {
registerHeaderListeners();
- registerPlaygroundListeners();
setDownloadLinks();
setThemeButtons();
setVersionSpans();