From 9520e0dcf98d478b71ebb5166c5de53d0236e6e2 Mon Sep 17 00:00:00 2001 From: saberzero1 Date: Mon, 9 Feb 2026 21:07:41 +0100 Subject: [PATCH] fix: event listeners --- src/dom.ts | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/src/dom.ts b/src/dom.ts index 5ca99c6..b93ec41 100644 --- a/src/dom.ts +++ b/src/dom.ts @@ -10,25 +10,20 @@ export function registerEscapeHandler( ): () => void { if (!outsideContainer) return () => {}; - const onKeydown = (e: KeyboardEvent) => { - if (e.key === "Escape") { - e.preventDefault(); - onEscape(); - } - }; - + // Click handler: only trigger when clicking directly on the container backdrop, + // not when clicking on children or elements outside const onClick = (e: MouseEvent) => { - if (e.target instanceof Node && !outsideContainer.contains(e.target)) { + if (e.target === outsideContainer) { + e.preventDefault(); + e.stopPropagation(); onEscape(); } }; - document.addEventListener("keydown", onKeydown); - document.addEventListener("click", onClick); + outsideContainer.addEventListener("click", onClick); return () => { - document.removeEventListener("keydown", onKeydown); - document.removeEventListener("click", onClick); + outsideContainer.removeEventListener("click", onClick); }; }