UNPKG

@hitachivantara/uikit-react-core

Version:
24 lines (23 loc) 816 B
import { useEffect } from "react"; //#region src/hooks/useClickOutside.ts var useClickOutside = (ref, handler) => { useEffect(() => { const listener = (event) => { const el = ref?.current; const isKeyUp = event.type === "keyup"; const isEscape = event.key === "Escape"; if (!el || el.contains(event?.target || null)) return {}; return isKeyUp ? isEscape ? handler(event) : null : handler(event); }; document.addEventListener("click", listener); document.addEventListener("touchstart", listener); document.addEventListener("keyup", listener); return () => { document.removeEventListener("click", listener); document.removeEventListener("touchstart", listener); document.removeEventListener("keyup", listener); }; }, [ref, handler]); }; //#endregion export { useClickOutside };