diff --git a/public/app/features/dashboard/dashgrid/PanelHeader/PanelHeader.tsx b/public/app/features/dashboard/dashgrid/PanelHeader/PanelHeader.tsx index 7d8eff8de7d..c5bf73cf32b 100644 --- a/public/app/features/dashboard/dashgrid/PanelHeader/PanelHeader.tsx +++ b/public/app/features/dashboard/dashgrid/PanelHeader/PanelHeader.tsx @@ -3,7 +3,7 @@ import React, { FC } from 'react'; import { DataLink, GrafanaTheme2, PanelData } from '@grafana/data'; import { selectors } from '@grafana/e2e-selectors'; -import { Icon, useStyles2 } from '@grafana/ui'; +import { Icon, useStyles2, ClickOutsideWrapper } from '@grafana/ui'; import { DashboardModel } from 'app/features/dashboard/state/DashboardModel'; import { PanelModel } from 'app/features/dashboard/state/PanelModel'; import { getPanelLinksSupplier } from 'app/features/panel/panellinks/linkSuppliers'; @@ -48,34 +48,33 @@ export const PanelHeader: FC = ({ panel, error, isViewing, isEditing, dat {({ closeMenu, panelMenuOpen }) => { return ( -
- - {alertState ? ( - - ) : null} -

{title}

- {!dashboard.meta.publicDashboardAccessToken && ( -
- - +
+ + {alertState ? ( + -
- )} - {data.request && data.request.timeInfo && ( - - {data.request.timeInfo} - - )} -
+ ) : null} +

{title}

+ {!dashboard.meta.publicDashboardAccessToken && ( +
+ + {panelMenuOpen ? ( + + ) : null} +
+ )} + {data.request && data.request.timeInfo && ( + + {data.request.timeInfo} + + )} +
+ ); }}
diff --git a/public/app/features/dashboard/dashgrid/PanelHeader/PanelHeaderMenuTrigger.tsx b/public/app/features/dashboard/dashgrid/PanelHeader/PanelHeaderMenuTrigger.tsx index 174c07a2d49..8a52e5cec03 100644 --- a/public/app/features/dashboard/dashgrid/PanelHeader/PanelHeaderMenuTrigger.tsx +++ b/public/app/features/dashboard/dashgrid/PanelHeader/PanelHeaderMenuTrigger.tsx @@ -14,18 +14,18 @@ interface Props extends HTMLAttributes { export const PanelHeaderMenuTrigger: FC = ({ children, ...divProps }) => { const [clickCoordinates, setClickCoordinates] = useState({ x: 0, y: 0 }); const [panelMenuOpen, setPanelMenuOpen] = useState(false); + const onMenuToggle = useCallback( (event: MouseEvent) => { if (!isClick(clickCoordinates, eventToClickCoordinates(event))) { return; } - event.stopPropagation(); - setPanelMenuOpen(!panelMenuOpen); }, [clickCoordinates, panelMenuOpen, setPanelMenuOpen] ); + const onMouseDown = useCallback( (event: MouseEvent) => { setClickCoordinates(eventToClickCoordinates(event)); diff --git a/public/app/features/dashboard/dashgrid/PanelHeader/PanelHeaderMenuWrapper.tsx b/public/app/features/dashboard/dashgrid/PanelHeader/PanelHeaderMenuWrapper.tsx index 40d69a5efe7..cc2ac9b90b8 100644 --- a/public/app/features/dashboard/dashgrid/PanelHeader/PanelHeaderMenuWrapper.tsx +++ b/public/app/features/dashboard/dashgrid/PanelHeader/PanelHeaderMenuWrapper.tsx @@ -1,7 +1,5 @@ import React, { FC } from 'react'; -import { ClickOutsideWrapper } from '@grafana/ui'; - import { DashboardModel, PanelModel } from '../../state'; import { PanelHeaderMenu } from './PanelHeaderMenu'; @@ -10,22 +8,15 @@ import { PanelHeaderMenuProvider } from './PanelHeaderMenuProvider'; interface Props { panel: PanelModel; dashboard: DashboardModel; - show: boolean; onClose: () => void; } -export const PanelHeaderMenuWrapper: FC = ({ show, onClose, panel, dashboard }) => { - if (!show) { - return null; - } - +export const PanelHeaderMenuWrapper: FC = ({ panel, dashboard }) => { return ( - - - {({ items }) => { - return ; - }} - - + + {({ items }) => { + return ; + }} + ); };