UNPKG

@hitachivantara/uikit-react-core

Version:

Core React components for the NEXT Design System.

26 lines (25 loc) 929 B
"use strict"; Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); const React = require("react"); const useClickOutside = (ref, handler) => { React.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]); }; exports.useClickOutside = useClickOutside;