@geist-ui/react
Version:
Modern and minimalist React UI library.
22 lines (19 loc) • 609 B
JavaScript
import { useEffect, useRef } from 'react';
var useClickAway = function useClickAway(ref, handler) {
var handlerRef = useRef(handler);
useEffect(function () {
handlerRef.current = handler;
}, [handlerRef]);
useEffect(function () {
var callback = function callback(event) {
var el = ref.current;
if (!event || !el || el.contains(event.target)) return;
handlerRef.current(event);
};
document.addEventListener('click', callback);
return function () {
return document.removeEventListener('click', callback);
};
}, [ref]);
};
export default useClickAway;