UNPKG

monday-ui-react-core

Version:

Official monday.com UI resources for application development in React.js

26 lines (24 loc) 946 B
import { MutableRefObject, useEffect, useRef, useState } from "react"; // Standard hook implementation https://usehooks.com/useHover/ export default function useHover<T extends HTMLElement = HTMLElement>(): [MutableRefObject<T>, boolean] { const [value, setValue] = useState<boolean>(false); const ref = useRef<T>(null); const handleMouseOver = (): void => setValue(true); const handleMouseOut = (): void => setValue(false); useEffect( () => { const node = ref.current; if (node) { node.addEventListener("mouseover", handleMouseOver); node.addEventListener("mouseout", handleMouseOut); return () => { node.removeEventListener("mouseover", handleMouseOver); node.removeEventListener("mouseout", handleMouseOut); }; } }, // eslint-disable-next-line react-hooks/exhaustive-deps [ref.current] // Recall only if ref changes ); return [ref, value]; }