From c6bb4d16bb9dabc37092bdefd4a884ce4f9804dc Mon Sep 17 00:00:00 2001 From: pewdiepie-archdaemon Date: Mon, 1 Jun 2026 13:21:12 +0900 Subject: [PATCH] Make email escape close reliable --- static/js/emailLibrary.js | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/static/js/emailLibrary.js b/static/js/emailLibrary.js index 7e658ef..44c6011 100644 --- a/static/js/emailLibrary.js +++ b/static/js/emailLibrary.js @@ -453,7 +453,7 @@ export function openEmailLibrary(opts = {}) { const existing = document.getElementById('email-lib-modal'); if (existing) existing.remove(); if (state._libEscHandler) { - document.removeEventListener('keydown', state._libEscHandler); + document.removeEventListener('keydown', state._libEscHandler, true); state._libEscHandler = null; } state._libOpen = true; @@ -958,11 +958,13 @@ export function openEmailLibrary(opts = {}) { // ESC to close + Arrow nav + Delete on the selected / currently-expanded email. state._libEscHandler = (e) => { + const modal = document.getElementById('email-lib-modal'); + if (!modal || modal.classList.contains('hidden')) return; if (e.key === 'Escape') { + e.preventDefault(); + e.stopPropagation(); + e.stopImmediatePropagation?.(); if (state._selectMode) { - e.preventDefault(); - e.stopPropagation(); - e.stopImmediatePropagation?.(); state._selectMode = false; state._selectedUids.clear(); _updateBulkBar(); @@ -995,7 +997,7 @@ export function openEmailLibrary(opts = {}) { } } }; - document.addEventListener('keydown', state._libEscHandler); + document.addEventListener('keydown', state._libEscHandler, true); _loadAccounts(); _loadFolders(); @@ -1047,7 +1049,7 @@ export function closeEmailLibrary() { if (modal) modal.remove(); _clearEmailDocumentSplit(); if (state._libEscHandler) { - document.removeEventListener('keydown', state._libEscHandler); + document.removeEventListener('keydown', state._libEscHandler, true); state._libEscHandler = null; } state._libOpen = false;