UNPKG

@grafana/ui

Version:
44 lines (41 loc) 1.28 kB
import { jsxs, Fragment, jsx } from 'react/jsx-runtime'; import { useState } from 'react'; import { ContextMenu } from './ContextMenu.mjs'; "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] = useState(false); const [menuPosition, setMenuPosition] = useState({ x: 0, y: 0 }); return /* @__PURE__ */ jsxs(Fragment, { children: [ children({ openMenu: (trigger) => { setIsMenuOpen(true); setMenuPosition(resolveTriggerPosition(trigger)); } }), isMenuOpen && /* @__PURE__ */ jsx( ContextMenu, { onClose: () => setIsMenuOpen(false), x: menuPosition.x, y: menuPosition.y, renderMenuItems, focusOnOpen } ) ] }); }; export { WithContextMenu }; //# sourceMappingURL=WithContextMenu.mjs.map