UNPKG

@grafana/ui

Version:
48 lines (43 loc) 1.42 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var jsxRuntime = require('react/jsx-runtime'); var React = require('react'); var ContextMenu = require('./ContextMenu.cjs'); "use strict"; function resolveTriggerPosition(trigger) { if (trigger instanceof Element) { const rect = trigger.getBoundingClientRect(); return { x: rect.left + rect.width / 2 + window.scrollX, y: rect.top + rect.height / 2 }; } if ("pageX" in trigger && "pageY" in trigger) { return { x: trigger.pageX, y: trigger.pageY - window.scrollY }; } return { x: trigger.x, y: trigger.y }; } const WithContextMenu = ({ children, renderMenuItems, focusOnOpen = true }) => { const [isMenuOpen, setIsMenuOpen] = React.useState(false); const [menuPosition, setMenuPosition] = React.useState({ x: 0, y: 0 }); return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [ children({ openMenu: (trigger) => { setIsMenuOpen(true); setMenuPosition(resolveTriggerPosition(trigger)); } }), isMenuOpen && /* @__PURE__ */ jsxRuntime.jsx( ContextMenu.ContextMenu, { onClose: () => setIsMenuOpen(false), x: menuPosition.x, y: menuPosition.y, renderMenuItems, focusOnOpen } ) ] }); }; exports.WithContextMenu = WithContextMenu; //# sourceMappingURL=WithContextMenu.cjs.map