@cfxjs/react-ui
Version:
Modern and minimalist React UI library.
32 lines (25 loc) • 740 B
JavaScript
import { useEffect } from 'react';
var useClickAway = function useClickAway(refs, handler) {
useEffect(function () {
var callback = function callback(event) {
var refsArray = Array.isArray(refs) ? refs : [refs];
var isAway = true;
while (refsArray.length) {
var el = refsArray[0].current;
if (!event || !el || el.contains(event.target)) {
isAway = false;
refsArray = [];
}
refsArray.shift();
}
if (isAway) {
handler(event);
}
};
document.addEventListener('click', callback);
return function () {
return document.removeEventListener('click', callback);
};
}, [refs, handler]);
};
export default useClickAway;