monday-ui-react-core
Version:
Official monday.com UI resources for application development in React.js
46 lines (39 loc) • 979 B
JavaScript
import { useEffect } from "react";
import useIsMouseEnter from "../../../../hooks/useIsMouseEnter";
import usePrevious from "../../../../hooks/usePrevious";
export default function useMenuItemMouseEvents(
ref,
resetOpenSubMenuIndex,
setSubMenuIsOpenByIndex,
isActive,
setActiveItemIndex,
index,
hasChildren
) {
const isMouseEnter = useIsMouseEnter({ ref });
const prevIsMouseEnter = usePrevious(isMouseEnter);
useEffect(() => {
if (!isMouseEnter) return;
if (isMouseEnter === prevIsMouseEnter) return;
if (!isActive) {
setActiveItemIndex(index);
if (hasChildren) {
setSubMenuIsOpenByIndex(index, true);
} else {
resetOpenSubMenuIndex();
}
}
if (isActive) {
setSubMenuIsOpenByIndex(index, !!isMouseEnter);
}
}, [
resetOpenSubMenuIndex,
prevIsMouseEnter,
isMouseEnter,
setSubMenuIsOpenByIndex,
isActive,
setActiveItemIndex,
index,
hasChildren
]);
}