@seasketch/geoprocessing
Version:
Geoprocessing and reporting framework for SeaSketch 2.0
23 lines • 825 B
JavaScript
import { useEffect, useRef } from "react";
/**
* Creates and returns reference to a div element, which the caller can
* populate. `callback` is invoked if a click occurs outside of the reference
* Useful for dropdown implementation
*/
export default function useClickOutside(callback) {
const ref = useRef(null);
useEffect(() => {
const handleClickOutside = (event) => {
if (ref.current &&
!ref.current.contains(event.target)) {
Reflect.apply(callback, null, [false]);
}
};
document.addEventListener("click", handleClickOutside, true);
return () => {
document.removeEventListener("click", handleClickOutside, true);
};
}, [callback]);
return { ref };
}
//# sourceMappingURL=useClickOutside.js.map