From 82a16a7852f02e41366d395c5e985c518a796234 Mon Sep 17 00:00:00 2001 From: Hazem Krimi Date: Thu, 6 Apr 2023 16:49:36 +0100 Subject: [PATCH] Fix context menu positioning --- src/components/ContextMenu/index.tsx | 29 +++++++++------------------- src/components/Sidebar/index.tsx | 2 +- 2 files changed, 10 insertions(+), 21 deletions(-) diff --git a/src/components/ContextMenu/index.tsx b/src/components/ContextMenu/index.tsx index 623a712..91296f7 100644 --- a/src/components/ContextMenu/index.tsx +++ b/src/components/ContextMenu/index.tsx @@ -10,49 +10,38 @@ type ContextMenuProps = { const ContextMenu = ({ items, component, className }: ContextMenuProps) => { const [open, setOpen] = useState(false); - const ref = useRef(null); + const parentComponentRef = useRef(); useEffect(() => { - const wrapper = ref.current; + parentComponentRef.current = document.querySelector(`#${component}`) as HTMLDivElement; const openMenu = () => setOpen(true); const closeMenu = () => setOpen(false); - (document.querySelector(`#${component}`) as HTMLElement)?.addEventListener( + parentComponentRef.current?.addEventListener( 'mouseenter', openMenu ); - (document.querySelector(`#${component}`) as HTMLElement)?.addEventListener( + parentComponentRef.current?.addEventListener( 'mouseleave', closeMenu ); return () => { - ( - document.querySelector(`#${component}`) as HTMLElement - )?.removeEventListener('mouseenter', openMenu); - wrapper?.removeEventListener('mouseleave', closeMenu); + parentComponentRef.current?.removeEventListener('mouseenter', openMenu); + parentComponentRef.current?.removeEventListener('mouseleave', closeMenu); }; - - // eslint-disable-next-line - }, [ref.current]); + }, []); return ( {open && (
    {items.map(({ label, action }) => ( - // eslint-disable-next-line
  • { if (action) { diff --git a/src/components/Sidebar/index.tsx b/src/components/Sidebar/index.tsx index ebaeac9..235d61e 100644 --- a/src/components/Sidebar/index.tsx +++ b/src/components/Sidebar/index.tsx @@ -153,7 +153,7 @@ const Sidebar = () => { ))} {templates && templates.map((template, index) => ( - +