diff --git a/packages/core/src/utilities/dismiss/create-dismiss.ts b/packages/core/src/utilities/dismiss/create-dismiss.ts index 50e05b2..2f51350 100644 --- a/packages/core/src/utilities/dismiss/create-dismiss.ts +++ b/packages/core/src/utilities/dismiss/create-dismiss.ts @@ -44,13 +44,19 @@ export function createDismiss(options: CreateDismissOptions): Dismiss { options.onDismiss(); }; + let attached = false; + const dismiss: Dismiss = { attach() { + if (attached) return; + attached = true; layerStack.push(dismiss); document.addEventListener("keydown", handleKeyDown); document.addEventListener("pointerdown", handlePointerDown); }, detach() { + if (!attached) return; + attached = false; const index = layerStack.indexOf(dismiss); if (index !== -1) layerStack.splice(index, 1); document.removeEventListener("keydown", handleKeyDown);