diff --git a/public/components/locker/locker.js b/public/components/locker/locker.js index ee074def..e7ef8543 100644 --- a/public/components/locker/locker.js +++ b/public/components/locker/locker.js @@ -11,7 +11,10 @@ export class Locker { this.renderUnlock(); document.addEventListener("keydown", (event) => { - if (window.disableShortcuts) { + const isNetworkViewHidden = this.networkView.classList.contains("hidden"); + const isTargetInput = event.target.tagName === "INPUT"; + const isTargetPopup = event.target.id === "popup--background"; + if (isNetworkViewHidden || isTargetInput || isTargetPopup) { return; } diff --git a/public/components/navigation/navigation.js b/public/components/navigation/navigation.js index fcf05462..53696e47 100644 --- a/public/components/navigation/navigation.js +++ b/public/components/navigation/navigation.js @@ -29,11 +29,10 @@ export class ViewNavigation { } document.addEventListener("keydown", (event) => { - if (window.disableShortcuts) { - return; - } - - if (window.searchbar.background.classList.contains("show")) { + const isWikiOpen = document.getElementById("documentation-root-element").classList.contains("slide-in"); + const isTargetPopup = event.target.id === "popup--background"; + const isTargetInput = event.target.tagName === "INPUT"; + if (isTargetPopup || isWikiOpen || isTargetInput) { return; } diff --git a/public/components/popup/popup.js b/public/components/popup/popup.js index 8e765b41..d31be8cc 100644 --- a/public/components/popup/popup.js +++ b/public/components/popup/popup.js @@ -25,8 +25,6 @@ export class Popup { return; } - window.disableShortcuts = true; - this.templateName = template.name; this.dom.popup.appendChild(template.HTMLElement); // TODO: apply additional css customization @@ -61,7 +59,6 @@ export class Popup { return; } - window.disableShortcuts = false; this.dom.popup.innerHTML = ""; this.templateName = null; this.#cleanupClickOutside(); diff --git a/public/components/views/settings/settings.js b/public/components/views/settings/settings.js index 1493c424..3ac2d79b 100644 --- a/public/components/views/settings/settings.js +++ b/public/components/views/settings/settings.js @@ -14,6 +14,7 @@ const kDefaultHotKeys = { wiki: "W", lock: "L" }; +const kShortcutInputTargetIds = new Set(Object.keys(kDefaultHotKeys)); export class Settings { static defaultMenuName = "info"; @@ -52,7 +53,7 @@ export class Settings { input.value = ""; const onKeyDown = (event) => { - if (window.disableShortcuts) { + if (kShortcutInputTargetIds.has(event.target.id) === false) { return; } diff --git a/public/components/wiki/wiki.js b/public/components/wiki/wiki.js index b8546901..b9244570 100644 --- a/public/components/wiki/wiki.js +++ b/public/components/wiki/wiki.js @@ -31,7 +31,9 @@ export class Wiki { }); document.addEventListener("keydown", (event) => { - if (window.disableShortcuts) { + const isTargetInput = event.target.tagName === "INPUT"; + const isTargetPopup = event.target.id === "popup--background"; + if (isTargetInput || isTargetPopup) { return; } diff --git a/public/core/network-navigation.js b/public/core/network-navigation.js index 3b0c50ed..1cb280ee 100644 --- a/public/core/network-navigation.js +++ b/public/core/network-navigation.js @@ -112,14 +112,11 @@ export class NetworkNavigation { this.#dependenciesMapByLevel.set(0, this.rootNodeParams); document.addEventListener("keydown", (event) => { - if (window.disableShortcuts) { - return; - } - const isNetworkViewHidden = document.getElementById("network--view").classList.contains("hidden"); const isWikiOpen = document.getElementById("documentation-root-element").classList.contains("slide-in"); - const isSearchOpen = window.searchbar.background.classList.contains("show"); - if (isNetworkViewHidden || isWikiOpen || isSearchOpen) { + const isTargetPopup = event.target.id === "popup--background"; + const isTargetInput = event.target.tagName === "INPUT"; + if (isNetworkViewHidden || isWikiOpen || isTargetPopup || isTargetInput) { return; } diff --git a/workspaces/documentation-ui/index.js b/workspaces/documentation-ui/index.js index 2a32d2ef..0b9d005e 100644 --- a/workspaces/documentation-ui/index.js +++ b/workspaces/documentation-ui/index.js @@ -92,14 +92,8 @@ export function render(rootElement, options = {}) { rootElement.appendChild(mainContainer); document.addEventListener("keydown", (event) => { - if (window.disableShortcuts) { - return; - } - const isWikiOpen = document.getElementById("documentation-root-element").classList.contains("slide-in"); - // should not be possible but just in case - const isSearchOpen = window.searchbar.background.classList.contains("show"); - if (!isWikiOpen || isSearchOpen) { + if (!isWikiOpen) { return; }