D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
usr
/
share
/
grafana
/
public
/
app
/
features
/
dashboard
/
dashgrid
/
PanelHeader
/
Filename :
PanelHeaderMenuProvider.tsx
back
Copy
import { ReactElement, useEffect, useState } from 'react'; import { LoadingState, PanelMenuItem } from '@grafana/data'; import { getPanelStateForModel } from 'app/features/panel/state/selectors'; import { useSelector } from 'app/types'; import { DashboardModel, PanelModel } from '../../state'; import { getPanelMenu } from '../../utils/getPanelMenu'; interface PanelHeaderMenuProviderApi { items: PanelMenuItem[]; } interface Props { panel: PanelModel; dashboard: DashboardModel; loadingState?: LoadingState; children: (props: PanelHeaderMenuProviderApi) => ReactElement; } export function PanelHeaderMenuProvider({ panel, dashboard, loadingState, children }: Props) { const [items, setItems] = useState<PanelMenuItem[]>([]); const angularComponent = useSelector((state) => getPanelStateForModel(state, panel)?.angularComponent); useEffect(() => { setItems(getPanelMenu(dashboard, panel, angularComponent)); }, [dashboard, panel, angularComponent, loadingState, setItems]); return children({ items }); }