fix: event listeners

This commit is contained in:
saberzero1 2026-02-09 21:07:41 +01:00
parent 61970ce89f
commit 9520e0dcf9
No known key found for this signature in database

View file

@ -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);
};
}