@grafana/ui
Version:
Grafana Components Library
44 lines (41 loc) • 1.29 kB
JavaScript
import { jsx } from 'react/jsx-runtime';
import { cx } from '@emotion/css';
import { useCallback } from 'react';
import { selectors } from '@grafana/e2e-selectors';
import { t } from '@grafana/i18n';
import { Dropdown } from '../Dropdown/Dropdown.mjs';
import { ToolbarButton } from '../ToolbarButton/ToolbarButton.mjs';
;
function PanelMenu({
menu,
title,
placement = "bottom",
offset,
dragClassCancel,
menuButtonClass,
onOpenMenu
}) {
const testId = title ? selectors.components.Panels.Panel.menu(title) : `panel-menu-button`;
const handleVisibility = useCallback(
(show) => {
if (show && onOpenMenu) {
onOpenMenu();
}
},
[onOpenMenu]
);
return /* @__PURE__ */ jsx(Dropdown, { overlay: menu, placement, offset, onVisibleChange: handleVisibility, children: /* @__PURE__ */ jsx(
ToolbarButton,
{
"aria-label": t("grafana-ui.panel-menu.label", "Menu for panel {{ title }}", { title: title != null ? title : "Untitled" }),
title: t("grafana-ui.panel-menu.title", "Menu"),
icon: "ellipsis-v",
iconSize: "md",
narrow: true,
"data-testid": testId,
className: cx(menuButtonClass, dragClassCancel)
}
) });
}
export { PanelMenu };
//# sourceMappingURL=PanelMenu.mjs.map