lecoffre-front/src/front/Hooks/useHoverable.ts
Maxime Lalo 55501ba801 new menu
2024-04-09 16:02:37 +02:00

27 lines
529 B
TypeScript

import { useState } from "react";
export default function useHoverable(delay: number = 0) {
const [isHovered, setIsHovered] = useState(false);
const [stateTimeout, setStateTimeout] = useState<NodeJS.Timeout | null>(null);
const handleMouseEnter = () => {
if (stateTimeout) clearTimeout(stateTimeout);
setIsHovered(true);
};
const handleMouseLeave = () => {
setStateTimeout(
setTimeout(() => {
setIsHovered(false);
}, delay),
);
};
return {
isHovered,
handleMouseEnter,
handleMouseLeave,
};
}