UNPKG

@cfxjs/react-ui

Version:

Modern and minimalist React UI library.

32 lines (25 loc) 740 B
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;