monday-ui-react-core
Version:
Official monday.com UI resources for application development in React.js
23 lines (18 loc) • 778 B
text/typescript
import { useCallback, useState, RefObject } from "react";
import useEventListener from "./useEventListener";
// TODO can be replaced with useIsMouseOver
export default function useIsMouseEnter({ ref }: { ref: RefObject<HTMLElement> }) {
const [isHovered, setIsHover] = useState<boolean>(false);
const setHovered = useCallback(
(event: MouseEvent) => {
const element = ref && ref.current;
const isEventHover = event.target === element;
setIsHover(isEventHover);
},
[ ]
);
const setNotHovered = useCallback(() => setIsHover(false), [setIsHover]);
useEventListener({ eventName: "mouseenter", callback: setHovered, ref });
useEventListener({ eventName: "mouseleave", callback: setNotHovered, ref });
return isHovered;
}