@szhsin/react-menu
Version:
React component for building accessible menu, dropdown, submenu, context menu, and more
33 lines (29 loc) • 720 B
JavaScript
;
var react = require('react');
var useClick = require('./useClick.cjs');
const useHover = (isOpen, onToggle, {
openDelay = 100,
closeDelay = 300
} = {}) => {
const [config] = react.useState({});
const clearTimer = () => clearTimeout(config.t);
const delayAction = toOpen => e => {
clearTimer();
config.t = setTimeout(() => onToggle(toOpen, e), toOpen ? openDelay : closeDelay);
};
const props = {
onMouseEnter: delayAction(true),
onMouseLeave: delayAction(false)
};
return {
anchorProps: {
...props,
...useClick.useClick(isOpen, onToggle)
},
hoverProps: {
...props,
onMouseEnter: clearTimer
}
};
};
exports.useHover = useHover;