Files
cunningham/packages/react/src/hooks/useHandleClickOutside.ts
Lebaud Antoine 1d1cf81cf6 (react) add a popover component
A design system needs a popover mecanism.
In the select component, this logic is handled by downshift.
We introduce a new component, responsible to open an element in
a popin and close it when the user click outside of it.
2023-06-12 18:57:20 +02:00

19 lines
525 B
TypeScript

import { RefObject, useEffect } from "react";
export const useHandleClickOutside = (
ref: RefObject<HTMLDivElement>,
onClickOutside: any
) => {
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);
}, []);
};