UNPKG

@grafana/ui

Version:
52 lines (47 loc) 1.62 kB
'use strict'; 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'); "use strict"; 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