From 9e598c42a61fe3ac58737e0220c0ab0745276779 Mon Sep 17 00:00:00 2001 From: Onion-L <71209582+Onion-L@users.noreply.github.com> Date: Fri, 13 Sep 2024 00:14:25 +0800 Subject: [PATCH] fix(onClickOutside): improve cross-browser compatibility (#4185) Co-authored-by: Anthony Fu --- packages/core/onClickOutside/index.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/core/onClickOutside/index.ts b/packages/core/onClickOutside/index.ts index 4f7037fed2e..1430952a66d 100644 --- a/packages/core/onClickOutside/index.ts +++ b/packages/core/onClickOutside/index.ts @@ -86,8 +86,18 @@ export function onClickOutside( handler(event) } + let isProcessingClick = false + const cleanup = [ - useEventListener(window, 'click', listener, { passive: true, capture }), + useEventListener(window, 'click', (event: PointerEvent) => { + if (!isProcessingClick) { + isProcessingClick = true + setTimeout(() => { + isProcessingClick = false + }, 0) + listener(event) + } + }, { passive: true, capture }), useEventListener(window, 'pointerdown', (e) => { const el = unrefElement(target) shouldListen = !shouldIgnore(e) && !!(el && !e.composedPath().includes(el))