UNPKG

@grafana/ui

Version:
1 lines 2.14 kB
{"version":3,"file":"WithContextMenu.mjs","sources":["../../../../src/components/ContextMenu/WithContextMenu.tsx"],"sourcesContent":["import { useState } from 'react';\nimport * as React from 'react';\n\nimport { ContextMenu } from '../ContextMenu/ContextMenu';\n\nexport interface WithContextMenuProps {\n /** Menu item trigger that accepts openMenu prop */\n children: (props: { openMenu: React.MouseEventHandler<HTMLElement> }) => JSX.Element;\n /** A function that returns an array of menu items */\n renderMenuItems: () => React.ReactNode;\n /** On menu open focus the first element */\n focusOnOpen?: boolean;\n}\n\nexport const WithContextMenu = ({ children, renderMenuItems, focusOnOpen = true }: WithContextMenuProps) => {\n const [isMenuOpen, setIsMenuOpen] = useState(false);\n const [menuPosition, setMenuPosition] = useState({ x: 0, y: 0 });\n return (\n <>\n {children({\n openMenu: (e) => {\n setIsMenuOpen(true);\n setMenuPosition({\n x: e.pageX,\n y: e.pageY - window.scrollY,\n });\n },\n })}\n\n {isMenuOpen && (\n <ContextMenu\n onClose={() => setIsMenuOpen(false)}\n x={menuPosition.x}\n y={menuPosition.y}\n renderMenuItems={renderMenuItems}\n focusOnOpen={focusOnOpen}\n />\n )}\n </>\n );\n};\n"],"names":[],"mappings":";;;;AAcO,MAAM,kBAAkB,CAAC,EAAE,UAAU,eAAiB,EAAA,WAAA,GAAc,MAAiC,KAAA;AAC1G,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,SAAS,KAAK,CAAA;AAClD,EAAM,MAAA,CAAC,YAAc,EAAA,eAAe,CAAI,GAAA,QAAA,CAAS,EAAE,CAAG,EAAA,CAAA,EAAG,CAAG,EAAA,CAAA,EAAG,CAAA;AAC/D,EAAA,uBAEK,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,IAAS,QAAA,CAAA;AAAA,MACR,QAAA,EAAU,CAAC,CAAM,KAAA;AACf,QAAA,aAAA,CAAc,IAAI,CAAA;AAClB,QAAgB,eAAA,CAAA;AAAA,UACd,GAAG,CAAE,CAAA,KAAA;AAAA,UACL,CAAA,EAAG,CAAE,CAAA,KAAA,GAAQ,MAAO,CAAA;AAAA,SACrB,CAAA;AAAA;AACH,KACD,CAAA;AAAA,IAEA,UACC,oBAAA,GAAA;AAAA,MAAC,WAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,MAAM,aAAA,CAAc,KAAK,CAAA;AAAA,QAClC,GAAG,YAAa,CAAA,CAAA;AAAA,QAChB,GAAG,YAAa,CAAA,CAAA;AAAA,QAChB,eAAA;AAAA,QACA;AAAA;AAAA;AACF,GAEJ,EAAA,CAAA;AAEJ;;;;"}