Skip to content

Commit 08f897d

Browse files
committed
playsite: Add esc listener
Add esc listener to close sidebar and sample / challenge selector modal if open.
1 parent 2dfc6f5 commit 08f897d

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

frontend/play/index.js

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -439,12 +439,19 @@ async function fetchSamples() {
439439
}
440440

441441
function ctrlEnterListener(e) {
442-
if ((e.metaKey || e.ctrlKey) && event.key === "Enter") {
442+
if ((e.metaKey || e.ctrlKey) && e.key === "Enter") {
443443
document.querySelector(".editor textarea").blur()
444444
handleRun()
445445
}
446446
}
447447

448+
function escListener(e) {
449+
if (e.key === "Escape") {
450+
hideModal()
451+
hideSidebar()
452+
}
453+
}
454+
448455
// --- UI: URL-hash change handling ------------------------------------
449456

450457
// handleHashChange is triggered by browser back/forwards buttons, manual
@@ -1104,6 +1111,7 @@ function initModal() {
11041111
function hideModal() {
11051112
const el = document.querySelector("#modal")
11061113
el.classList.add("hidden")
1114+
document.removeEventListener("keydown", escListener)
11071115
}
11081116

11091117
function showSamples() {
@@ -1113,6 +1121,7 @@ function showSamples() {
11131121
modal.classList.remove("hidden")
11141122
samples.querySelectorAll("a").forEach((a) => a.classList.remove("highlight"))
11151123
samples.querySelector(`a[href$="#${currentSample}"]`)?.classList.add("highlight")
1124+
document.addEventListener("keydown", escListener)
11161125
}
11171126

11181127
function showPreviousSample() {
@@ -1162,11 +1171,13 @@ function showSidebar() {
11621171
document.querySelector(".editor textarea").style.pointerEvents = "none"
11631172
document.querySelector("#sidebar").classList.remove("hidden")
11641173
document.addEventListener("click", handleOutsideSidebarClick)
1174+
document.addEventListener("keydown", escListener)
11651175
}
11661176
function hideSidebar() {
11671177
document.querySelector(".editor textarea").style.pointerEvents = ""
11681178
document.querySelector("#sidebar").classList.add("hidden")
11691179
document.removeEventListener("click", handleOutsideSidebarClick)
1180+
document.removeEventListener("keydown", escListener)
11701181
}
11711182
function handleOutsideSidebarClick(e) {
11721183
const sidebar = document.querySelector("#sidebar")

0 commit comments

Comments
 (0)