@grafana/ui
Version:
Grafana Components Library
48 lines (45 loc) • 1.45 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 { Button } from '../Button/Button.mjs';
import { Dropdown } from '../Dropdown/Dropdown.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]
);
const overlay = () => {
const menuContent = typeof menu === "function" ? menu() : menu;
return /* @__PURE__ */ jsx("div", { className: dragClassCancel, children: menuContent });
};
return /* @__PURE__ */ jsx(Dropdown, { overlay, placement, offset, onVisibleChange: handleVisibility, children: /* @__PURE__ */ jsx(
Button,
{
"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",
variant: "secondary",
size: "sm",
"data-testid": testId,
className: cx(menuButtonClass, dragClassCancel)
}
) });
}
export { PanelMenu };
//# sourceMappingURL=PanelMenu.mjs.map