From 7b3db826115f420b52bf174a2c3233733680325d Mon Sep 17 00:00:00 2001 From: sibbng Date: Tue, 20 Dec 2022 14:19:48 +0300 Subject: [PATCH] feat(onClickOutside): allow selector strings for ignore list (#2439) Co-authored-by: Anthony Fu --- packages/core/onClickOutside/index.ts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/core/onClickOutside/index.ts b/packages/core/onClickOutside/index.ts index db8a170654d..560b0eddd12 100644 --- a/packages/core/onClickOutside/index.ts +++ b/packages/core/onClickOutside/index.ts @@ -9,7 +9,7 @@ export interface OnClickOutsideOptions extends ConfigurableWindow { /** * List of elements that should not trigger the event. */ - ignore?: MaybeElementRef[] + ignore?: (MaybeElementRef | string)[] /** * Use capturing phase for internal event listener. * @default true @@ -48,8 +48,14 @@ export function onClickOutside( const shouldIgnore = (event: PointerEvent) => { return ignore.some((target) => { - const el = unrefElement(target) - return el && (event.target === el || event.composedPath().includes(el)) + if (typeof target === 'string') { + return Array.from(window.document.querySelectorAll(target)) + .some(el => el === event.target || event.composedPath().includes(el)) + } + else { + const el = unrefElement(target) + return el && (event.target === el || event.composedPath().includes(el)) + } }) }