UNPKG

@grafana/ui

Version:
43 lines (38 loc) 1.24 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var jsxRuntime = require('react/jsx-runtime'); var React = require('react'); "use strict"; function ClickOutsideWrapper({ includeButtonPress = true, parent = window, useCapture = false, onClick, children }) { const wrapperRef = React.useRef(null); const onOutsideClick = React.useCallback( (event) => { const domNode = wrapperRef.current; if (!domNode || event.target instanceof Node && !domNode.contains(event.target)) { onClick(); } }, [onClick] ); React.useEffect(() => { parent.addEventListener("click", onOutsideClick, useCapture); if (includeButtonPress) { parent.addEventListener("keyup", onOutsideClick, useCapture); } return () => { parent.removeEventListener("click", onOutsideClick, useCapture); if (includeButtonPress) { parent.removeEventListener("keyup", onOutsideClick, useCapture); } }; }, [includeButtonPress, onOutsideClick, parent, useCapture]); return /* @__PURE__ */ jsxRuntime.jsx("div", { ref: wrapperRef, children }); } exports.ClickOutsideWrapper = ClickOutsideWrapper; //# sourceMappingURL=ClickOutsideWrapper.cjs.map