UNPKG

@grafana/ui

Version:
63 lines (60 loc) 2.13 kB
import { jsx } from 'react/jsx-runtime'; import { css } from '@emotion/css'; import { selectors } from '@grafana/e2e-selectors'; import { useStyles2 } from '../../themes/ThemeContext.mjs'; import { linkModelToContextMenuItems } from '../../utils/dataLinks.mjs'; import { WithContextMenu } from '../ContextMenu/WithContextMenu.mjs'; import { MenuGroup } from '../Menu/MenuGroup.mjs'; import { MenuItem } from '../Menu/MenuItem.mjs'; "use strict"; const DataLinksContextMenu = ({ children, links, style }) => { const styles = useStyles2(getStyles); const itemsGroup = [ { items: linkModelToContextMenuItems(links), label: Boolean(links().length) ? "Data links" : "" } ]; const linksCounter = itemsGroup[0].items.length; const renderMenuGroupItems = () => { return itemsGroup.map((group, groupIdx) => /* @__PURE__ */ jsx(MenuGroup, { label: group.label, children: (group.items || []).map((item, itemIdx) => /* @__PURE__ */ jsx( MenuItem, { url: item.url, label: item.label, target: item.target, icon: item.icon, active: item.active, onClick: item.onClick, className: styles.itemWrapper }, `${group.label}-${groupIdx}-${itemIdx}}` )) }, `${group.label}${groupIdx}`)); }; const targetClassName = css({ cursor: "context-menu" }); if (linksCounter > 1) { return /* @__PURE__ */ jsx(WithContextMenu, { renderMenuItems: renderMenuGroupItems, children: ({ openMenu }) => { return children({ openMenu, targetClassName }); } }); } else { const linkModel = links()[0]; return /* @__PURE__ */ jsx( "a", { href: linkModel.href, onClick: linkModel.onClick, target: linkModel.target, title: linkModel.title, style: { ...style, overflow: "hidden", display: "flex" }, "data-testid": selectors.components.DataLinksContextMenu.singleLink, children: children({}) } ); } }; const getStyles = (theme) => ({ itemWrapper: css({ fontSize: 12 }) }); export { DataLinksContextMenu }; //# sourceMappingURL=DataLinksContextMenu.mjs.map