diff --git a/public/app/features/dashboard-scene/scene/DashboardScene.tsx b/public/app/features/dashboard-scene/scene/DashboardScene.tsx index d0fafd6f2bb..2312fdec7ed 100644 --- a/public/app/features/dashboard-scene/scene/DashboardScene.tsx +++ b/public/app/features/dashboard-scene/scene/DashboardScene.tsx @@ -1,6 +1,6 @@ import * as H from 'history'; -import { CoreApp, DataQueryRequest, NavIndex, NavModelItem, locationUtil } from '@grafana/data'; +import { CoreApp, DataQueryRequest, locationUtil, NavIndex, NavModelItem } from '@grafana/data'; import { t } from '@grafana/i18n'; import { config, locationService, RefreshEvent } from '@grafana/runtime'; import { @@ -32,7 +32,7 @@ import { PanelModel } from 'app/features/dashboard/state/PanelModel'; import { dashboardWatcher } from 'app/features/live/dashboard/dashboardWatcher'; import { DashboardJson } from 'app/features/manage-dashboards/types'; import { VariablesChanged } from 'app/features/variables/types'; -import { DashboardMeta, KioskMode, SaveDashboardResponseDTO, DashboardDTO } from 'app/types/dashboard'; +import { DashboardDTO, DashboardMeta, KioskMode, SaveDashboardResponseDTO } from 'app/types/dashboard'; import { ShowConfirmModalEvent } from 'app/types/events'; import { @@ -323,17 +323,46 @@ export class DashboardScene extends SceneObjectBase impleme return; } - appEvents.publish( - new ShowConfirmModalEvent({ - title: t('dashboard-scene.dashboard-scene.title.discard-changes-to-dashboard', 'Discard changes to dashboard?'), - text: `You have unsaved changes to this dashboard. Are you sure you want to discard them?`, - icon: 'trash-alt', - yesText: 'Discard', - onConfirm: () => { - this.exitEditModeConfirmed(); - }, - }) - ); + if (config.featureToggles.dashboardNewLayouts) { + appEvents.publish( + new ShowConfirmModalEvent({ + title: t('dashboard-scene.dashboard-scene.modal.title.unsaved-changes', 'Unsaved changes'), + text: t( + 'dashboard-scene.dashboard-scene.modal.text.save-changes-question', + 'Do you want to save your changes?' + ), + icon: 'trash-alt', + altActionText: t('dashboard-scene.dashboard-scene.modal.save', 'Save'), + noText: t('dashboard-scene.dashboard-scene.modal.cancel', 'Cancel'), + yesText: t('dashboard-scene.dashboard-scene.modal.discard', 'Discard'), + yesButtonVariant: 'destructive', + onAltAction: () => { + this.openSaveDrawer({}); + }, + onConfirm: () => { + this.exitEditModeConfirmed(); + }, + }) + ); + } else { + appEvents.publish( + new ShowConfirmModalEvent({ + title: t( + 'dashboard-scene.dashboard-scene.title.discard-changes-to-dashboard', + 'Discard changes to dashboard?' + ), + icon: 'trash-alt', + text: t( + 'dashboard-scene.dashboard-scene.title.unsaved-changes-question', + 'You have unsaved changes to this dashboard. Are you sure you want to discard them?' + ), + yesText: t('dashboard-scene.dashboard-scene.modal.discard', 'Discard'), + onConfirm: () => { + this.exitEditModeConfirmed(); + }, + }) + ); + } } private exitEditModeConfirmed(restoreInitialState = true) { diff --git a/public/locales/en-US/grafana.json b/public/locales/en-US/grafana.json index 90b047262a3..f0848b1fe3d 100644 --- a/public/locales/en-US/grafana.json +++ b/public/locales/en-US/grafana.json @@ -5950,13 +5950,25 @@ "title-error-loading-dashboard": "Error loading dashboard" }, "dashboard-scene": { + "modal": { + "cancel": "Cancel", + "discard": "Discard", + "save": "Save", + "text": { + "save-changes-question": "Do you want to save your changes?" + }, + "title": { + "unsaved-changes": "Unsaved changes" + } + }, "text": { "edit-panel": "Edit panel", "view-panel": "View panel" }, "title": { "dashboard": "Dashboard", - "discard-changes-to-dashboard": "Discard changes to dashboard?" + "discard-changes-to-dashboard": "Discard changes to dashboard?", + "unsaved-changes-question": "You have unsaved changes to this dashboard. Are you sure you want to discard them?" } }, "dashboard-scene-page-state-manager": {