@grafana/ui
Version:
Grafana Components Library
52 lines (47 loc) • 1.62 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var jsxRuntime = require('react/jsx-runtime');
var css = require('@emotion/css');
var React = require('react');
var e2eSelectors = require('@grafana/e2e-selectors');
var i18n = require('@grafana/i18n');
var Button = require('../Button/Button.cjs');
var Dropdown = require('../Dropdown/Dropdown.cjs');
;
function PanelMenu({
menu,
title,
placement = "bottom",
offset,
dragClassCancel,
menuButtonClass,
onOpenMenu
}) {
const testId = title ? e2eSelectors.selectors.components.Panels.Panel.menu(title) : `panel-menu-button`;
const handleVisibility = React.useCallback(
(show) => {
if (show && onOpenMenu) {
onOpenMenu();
}
},
[onOpenMenu]
);
const overlay = () => {
const menuContent = typeof menu === "function" ? menu() : menu;
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: dragClassCancel, children: menuContent });
};
return /* @__PURE__ */ jsxRuntime.jsx(Dropdown.Dropdown, { overlay, placement, offset, onVisibleChange: handleVisibility, children: /* @__PURE__ */ jsxRuntime.jsx(
Button.Button,
{
"aria-label": i18n.t("grafana-ui.panel-menu.label", "Menu for panel {{ title }}", { title: title != null ? title : "Untitled" }),
title: i18n.t("grafana-ui.panel-menu.title", "Menu"),
icon: "ellipsis-v",
variant: "secondary",
size: "sm",
"data-testid": testId,
className: css.cx(menuButtonClass, dragClassCancel)
}
) });
}
exports.PanelMenu = PanelMenu;
//# sourceMappingURL=PanelMenu.cjs.map