UNPKG

@motor-js/cli

Version:

CLI tool for generating Qlik Sense Mashups

33 lines (30 loc) 774 B
import { useCallback, useEffect, useRef } from "react"; const useClickOutside = (onClose) => { const ref = useRef(); const escapeListener = useCallback( (e) => { if (e.key === "Escape") { onClose(); } }, [onClose] ); const clickListener = useCallback( (e) => { if (!ref.current?.contains(e.target)) { onClose?.(); } }, [onClose] ); useEffect(() => { document.addEventListener("click", clickListener); document.addEventListener("keyup", escapeListener); return () => { document.removeEventListener("click", clickListener); document.removeEventListener("keyup", escapeListener); }; }, [escapeListener, clickListener]); return ref; }; export default useClickOutside;