import { css } from '@emotion/css'; import React from 'react'; import { GrafanaTheme2, PageLayoutType } from '@grafana/data'; import { locationService } from '@grafana/runtime'; import { SceneObjectBase, SceneComponentProps, SceneObject, SceneObjectState } from '@grafana/scenes'; import { ToolbarButton, useStyles2 } from '@grafana/ui'; import { AppChromeUpdate } from 'app/core/components/AppChrome/AppChromeUpdate'; import { Page } from 'app/core/components/Page/Page'; interface DashboardSceneState extends SceneObjectState { title: string; uid?: string; body: SceneObject; actions?: SceneObject[]; controls?: SceneObject[]; } export class DashboardScene extends SceneObjectBase { static Component = DashboardSceneRenderer; } function DashboardSceneRenderer({ model }: SceneComponentProps) { const { title, body, actions = [], uid, controls } = model.useState(); const styles = useStyles2(getStyles); const toolbarActions = (actions ?? []).map((action) => ); if (uid?.length) { toolbarActions.push( locationService.push(`/d/${uid}`)} tooltip="View as Dashboard" key="scene-to-dashboard-switch" /> ); } return ( {controls && (
{controls.map((control) => ( ))}
)}
); } function getStyles(theme: GrafanaTheme2) { return { body: css({ flexGrow: 1, display: 'flex', gap: '8px', }), controls: css({ display: 'flex', paddingBottom: theme.spacing(2), flexWrap: 'wrap', alignItems: 'center', gap: theme.spacing(1), }), }; }