From 40f1b2c92c43a5f3ff16ff5e68a3ea387baff8a2 Mon Sep 17 00:00:00 2001 From: Alexa V <239999+axelavargas@users.noreply.github.com> Date: Tue, 16 Apr 2024 10:04:25 +0200 Subject: [PATCH] Dashboard: Migration - Add public dashboard tag in the nav bar (#86204) Migrate public dashboard badge to scenes dashboard --- .../scene/NavToolbarActions.tsx | 53 ++++++++++++++++--- 1 file changed, 45 insertions(+), 8 deletions(-) diff --git a/public/app/features/dashboard-scene/scene/NavToolbarActions.tsx b/public/app/features/dashboard-scene/scene/NavToolbarActions.tsx index ebf62af5d59..8f11489cb8d 100644 --- a/public/app/features/dashboard-scene/scene/NavToolbarActions.tsx +++ b/public/app/features/dashboard-scene/scene/NavToolbarActions.tsx @@ -4,7 +4,17 @@ import React, { useEffect, useState } from 'react'; import { GrafanaTheme2 } from '@grafana/data'; import { selectors } from '@grafana/e2e-selectors'; import { config, locationService } from '@grafana/runtime'; -import { Button, ButtonGroup, Dropdown, Icon, Menu, ToolbarButton, ToolbarButtonRow, useStyles2 } from '@grafana/ui'; +import { + Badge, + Button, + ButtonGroup, + Dropdown, + Icon, + Menu, + ToolbarButton, + ToolbarButtonRow, + useStyles2, +} from '@grafana/ui'; import { AppChromeUpdate } from 'app/core/components/AppChrome/AppChromeUpdate'; import { NavToolbarSeparator } from 'app/core/components/AppChrome/NavToolbar/NavToolbarSeparator'; import { contextSrv } from 'app/core/core'; @@ -51,7 +61,7 @@ export function ToolbarActions({ dashboard }: Props) { const canSaveAs = contextSrv.hasEditPermissionInFolders; const toolbarActions: ToolbarAction[] = []; - const buttonWithExtraMargin = useStyles2(getStyles); + const styles = useStyles2(getStyles); const isEditingPanel = Boolean(editPanel); const isViewingPanel = Boolean(viewPanelScene); const isEditingLibraryPanel = useEditingLibraryPanel(editPanel); @@ -88,6 +98,24 @@ export function ToolbarActions({ dashboard }: Props) { }, }); + if (meta.publicDashboardEnabled) { + toolbarActions.push({ + group: 'icon-actions', + condition: uid && Boolean(meta.canStar) && isShowingDashboard && !isEditing, + render: () => { + return ( + + ); + }, + }); + } + const isDevEnv = config.buildInfo.env === 'development'; toolbarActions.push({ @@ -280,7 +308,7 @@ export function ToolbarActions({ dashboard }: Props) { key="share-dashboard-button" tooltip={t('dashboard.toolbar.share', 'Share dashboard')} size="sm" - className={buttonWithExtraMargin} + className={styles.buttonWithExtraMargin} fill="outline" onClick={() => { DashboardInteractions.toolbarShareClick(); @@ -302,7 +330,7 @@ export function ToolbarActions({ dashboard }: Props) { }} tooltip="Enter edit mode" key="edit" - className={buttonWithExtraMargin} + className={styles.buttonWithExtraMargin} variant="primary" size="sm" > @@ -427,7 +455,7 @@ export function ToolbarActions({ dashboard }: Props) { DashboardInteractions.toolbarSaveClick(); dashboard.openSaveDrawer({}); }} - className={buttonWithExtraMargin} + className={styles.buttonWithExtraMargin} tooltip="Save changes" key="save" size="sm" @@ -446,7 +474,7 @@ export function ToolbarActions({ dashboard }: Props) { DashboardInteractions.toolbarSaveClick(); dashboard.openSaveDrawer({ saveAsCopy: true }); }} - className={buttonWithExtraMargin} + className={styles.buttonWithExtraMargin} tooltip="Save as copy" key="save" size="sm" @@ -480,7 +508,7 @@ export function ToolbarActions({ dashboard }: Props) { ); return ( - +