DynamicDashboards: Replace discard changes modal (#114789)

This commit is contained in:
Marc M.
2025-12-12 11:24:53 +01:00
committed by GitHub
parent a832e5f222
commit e3510f6eb3
2 changed files with 55 additions and 14 deletions
@@ -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<DashboardSceneState> 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) {
+13 -1
View File
@@ -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": {