Files
zkldi_Tachi/client/src/components/util/useComponentVisible.tsx
T
2022-06-26 19:27:09 +01:00

22 lines
641 B
TypeScript

import { useState, useEffect, useRef } from "react";
export default function useComponentVisible(initialIsVisible: boolean) {
const [isComponentVisible, setIsComponentVisible] = useState(initialIsVisible);
const ref = useRef<any>(null);
const handleClickOutside = (event: MouseEvent) => {
if (ref.current && !ref.current.contains(event.target)) {
setIsComponentVisible(false);
}
};
useEffect(() => {
document.addEventListener("click", handleClickOutside, true);
return () => {
document.removeEventListener("click", handleClickOutside, true);
};
}, []);
return { ref, isComponentVisible, setIsComponentVisible };
}