From a2ce62aa9f6d9ebe6138def3341a08eee363c011 Mon Sep 17 00:00:00 2001 From: zhendonghuang Date: Fri, 17 May 2024 18:36:54 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix():close=20=E9=97=AE=E9=A2=98=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=20ref=20FLOW-1117?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/hooks/useWinClick.ts | 6 +++--- src/index.tsx | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/hooks/useWinClick.ts b/src/hooks/useWinClick.ts index f33f05b0..1b6bea01 100644 --- a/src/hooks/useWinClick.ts +++ b/src/hooks/useWinClick.ts @@ -10,7 +10,7 @@ export default function useWinClick( popupEle: HTMLElement, mask: boolean, maskClosable: boolean, - inPopupOrChild: (target: EventTarget) => boolean, + inPopupOrChild: (target: EventTarget,composedPathTargetList:EventTarget[]) => boolean, triggerOpen: (open: boolean) => void, ) { const openRef = React.useRef(open); @@ -19,8 +19,8 @@ export default function useWinClick( // Click to hide is special action since click popup element should not hide React.useEffect(() => { if (clickToHide && popupEle && (!mask || maskClosable)) { - const onTriggerClose = ({ target }: MouseEvent) => { - if (openRef.current && !inPopupOrChild(target)) { + const onTriggerClose = ({ target,composedPath }: MouseEvent) => { + if (openRef.current && !inPopupOrChild(target,composedPath())) { triggerOpen(false); } }; diff --git a/src/index.tsx b/src/index.tsx index 4a7b990f..fda973e2 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -272,7 +272,7 @@ export function generateTrigger( const originChildProps = child?.props || {}; const cloneProps: typeof originChildProps = {}; - const inPopupOrChild = useEvent((ele: any) => { + const inPopupOrChild = useEvent((ele: any,composedPathTargetList:EventTarget[]) => { const childDOM = targetEle; return ( @@ -284,7 +284,7 @@ export function generateTrigger( ele === popupEle || Object.values(subPopupElements.current).some( (subPopupEle) => subPopupEle?.contains(ele) || ele === subPopupEle, - ) + )||composedPathTargetList.some(tar=>targetEle===tar) ); }); From 3e3b492d6f336f484c0f61ecc4fcd7e4a04946bd Mon Sep 17 00:00:00 2001 From: zhendonghuang Date: Sat, 18 May 2024 20:03:02 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix():=20generateTrigger=E5=9C=A8=E5=A4=9A?= =?UTF-8?q?=E5=B1=82shadowdom=E4=B8=AD=E4=BD=BF=E7=94=A8=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/hooks/useWinClick.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/hooks/useWinClick.ts b/src/hooks/useWinClick.ts index 1b6bea01..abcc80e5 100644 --- a/src/hooks/useWinClick.ts +++ b/src/hooks/useWinClick.ts @@ -19,8 +19,8 @@ export default function useWinClick( // Click to hide is special action since click popup element should not hide React.useEffect(() => { if (clickToHide && popupEle && (!mask || maskClosable)) { - const onTriggerClose = ({ target,composedPath }: MouseEvent) => { - if (openRef.current && !inPopupOrChild(target,composedPath())) { + const onTriggerClose = (e: MouseEvent) => { + if (openRef.current && !inPopupOrChild(e.target,e.composedPath())) { triggerOpen(false); } };