import { useEffect, useRef, useState } from 'react'; import { Wrapper } from './styles'; import { Text } from '..'; type ContextMenuProps = { className?: string; items: Array<{ label: string; action?: () => void }>; component: string; }; const ContextMenu = ({ items, component, className }: ContextMenuProps) => { const [open, setOpen] = useState(false); const ref = useRef(null); useEffect(() => { const wrapper = ref.current; const openMenu = () => setOpen(true); const closeMenu = () => setOpen(false); (document.querySelector(`#${component}`) as HTMLElement)?.addEventListener( 'mouseenter', openMenu ); ref.current?.addEventListener('mouseleave', closeMenu); return () => { (document.querySelector( `#${component}` ) as HTMLElement)?.removeEventListener('mouseenter', openMenu); wrapper?.removeEventListener('mouseleave', closeMenu); }; // eslint-disable-next-line }, [ref.current]); return ( {open && ( )} ); }; export default ContextMenu;