UNPKG

@grafana/ui

Version:
48 lines (45 loc) 1.45 kB
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'; "use strict"; 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