zzz / frontend /src /hooks /use-click-outside-element.ts
ar08's picture
Upload 1040 files
246d201 verified
raw
history blame contribute delete
704 Bytes
import React from "react";
/**
* Hook to call a callback function when an element is clicked outside
* @param callback The callback function to call when the element is clicked outside
*/
export const useClickOutsideElement = <T extends HTMLElement>(
callback: () => void,
) => {
const ref = React.useRef<T>(null);
React.useEffect(() => {
const handleClickOutside = (event: MouseEvent) => {
if (ref.current && !ref.current.contains(event.target as Node)) {
callback();
}
};
document.addEventListener("click", handleClickOutside);
return () => document.removeEventListener("click", handleClickOutside);
}, []);
return ref;
};