2023-06-02 12:04:36 +02:00
|
|
|
import { RefObject, useEffect } from "react";
|
|
|
|
|
|
|
|
|
|
export const useHandleClickOutside = (
|
2025-01-07 23:28:47 +01:00
|
|
|
ref: RefObject<HTMLDivElement | null>,
|
2023-07-18 15:43:56 +02:00
|
|
|
onClickOutside: any,
|
2023-06-02 12:04:36 +02:00
|
|
|
) => {
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
const outsideListenerEvent = (event: MouseEvent) => {
|
|
|
|
|
if (!ref.current || ref.current.contains(event.target as Node)) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
onClickOutside();
|
|
|
|
|
};
|
|
|
|
|
document.addEventListener("click", outsideListenerEvent, true);
|
|
|
|
|
return () =>
|
|
|
|
|
document.removeEventListener("click", outsideListenerEvent, true);
|
|
|
|
|
}, []);
|
|
|
|
|
};
|