From 92be088e6c5ed3bc203ea24a192e93b71619ffc3 Mon Sep 17 00:00:00 2001 From: Gregory Schier Date: Mon, 31 Mar 2025 11:57:50 -0700 Subject: [PATCH] useClickOutside account for right click --- src-web/hooks/useClickOutside.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src-web/hooks/useClickOutside.ts b/src-web/hooks/useClickOutside.ts index 9d149430..6a6ae51d 100644 --- a/src-web/hooks/useClickOutside.ts +++ b/src-web/hooks/useClickOutside.ts @@ -13,21 +13,27 @@ export function useClickOutside( ignored?: RefObject, ) { const savedCallback = useRef(onClickAway); + useEffect(() => { savedCallback.current = onClickAway; }, [onClickAway]); + useEffect(() => { const handler = (event: MouseEvent) => { - if (ref.current == null || !(event.target instanceof HTMLElement)) return; + if (ref.current == null || !(event.target instanceof HTMLElement)) { + return; + } const isIgnored = ignored?.current?.contains(event.target); const clickedOutside = !ref.current.contains(event.target); if (!isIgnored && clickedOutside) { savedCallback.current(event); } }; - document.addEventListener('click', handler); + document.addEventListener('click', handler, { capture: true }); + document.addEventListener('contextmenu', handler, { capture: true }); return () => { document.removeEventListener('click', handler); + document.removeEventListener('contextmenu', handler); }; }, [ignored, ref]); }