diff --git a/rsconcept/frontend/src/hooks/useClickedOutside.ts b/rsconcept/frontend/src/hooks/useClickedOutside.ts index 2ae34ecf..96307ec6 100644 --- a/rsconcept/frontend/src/hooks/useClickedOutside.ts +++ b/rsconcept/frontend/src/hooks/useClickedOutside.ts @@ -4,10 +4,13 @@ import { useEffect } from 'react'; import { assertIsNode } from '@/utils/utils'; -function useClickedOutside({ ref, callback }: { ref: React.RefObject; callback?: () => void }) { +function useClickedOutside(enabled: boolean, ref: React.RefObject, callback?: () => void) { useEffect(() => { + if (!enabled) { + return; + } + function handleClickOutside(event: MouseEvent) { - console.log(1); assertIsNode(event.target); if (ref.current && !ref.current.contains(event.target)) { if (callback) callback(); @@ -17,7 +20,7 @@ function useClickedOutside({ ref, callback }: { ref: React.RefObject { document.removeEventListener('mouseup', handleClickOutside); }; - }, [ref, callback]); + }, [ref, callback, enabled]); } export default useClickedOutside; diff --git a/rsconcept/frontend/src/hooks/useDropdown.ts b/rsconcept/frontend/src/hooks/useDropdown.ts index 9ab6af57..f7e8b383 100644 --- a/rsconcept/frontend/src/hooks/useDropdown.ts +++ b/rsconcept/frontend/src/hooks/useDropdown.ts @@ -8,7 +8,7 @@ function useDropdown() { const [isOpen, setIsOpen] = useState(false); const ref = useRef(null); - useClickedOutside({ ref, callback: () => setIsOpen(false) }); + useClickedOutside(isOpen, ref, () => setIsOpen(false)); return { ref, diff --git a/rsconcept/frontend/src/pages/OssPage/EditorOssGraph/NodeContextMenu.tsx b/rsconcept/frontend/src/pages/OssPage/EditorOssGraph/NodeContextMenu.tsx index 5c845343..796a4970 100644 --- a/rsconcept/frontend/src/pages/OssPage/EditorOssGraph/NodeContextMenu.tsx +++ b/rsconcept/frontend/src/pages/OssPage/EditorOssGraph/NodeContextMenu.tsx @@ -77,7 +77,7 @@ function NodeContextMenu({ onHide(); }, [onHide]); - useClickedOutside({ ref, callback: handleHide }); + useClickedOutside(isOpen, ref, handleHide); useEffect(() => setIsOpen(true), []);