From 80a7938f7811264be8ee5c76737bce0b2256fb89 Mon Sep 17 00:00:00 2001 From: Sergej-Vlasov <37613182+Sergej-Vlasov@users.noreply.github.com> Date: Tue, 11 Nov 2025 09:46:52 +0000 Subject: [PATCH] [release-12.0.7] DashboardScene: Ignore defaults changes when exiting edit mode (#113505) DashboardScene: Ignore defaults changes when exiting edit mode (#112796) * exit dashboard without confirmation with only optional changes * centralise * clean up logic * export to util (cherry picked from commit 51b39d8c6ec715d9b4eaa9bf2757b88a2c0368df) --- .../features/dashboard-scene/saving/DashboardPrompt.tsx | 4 ++-- .../app/features/dashboard-scene/scene/DashboardScene.tsx | 3 ++- public/app/features/dashboard-scene/utils/utils.ts | 8 ++++++++ 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/public/app/features/dashboard-scene/saving/DashboardPrompt.tsx b/public/app/features/dashboard-scene/saving/DashboardPrompt.tsx index 59beb406ddb..6c0cde826f1 100644 --- a/public/app/features/dashboard-scene/saving/DashboardPrompt.tsx +++ b/public/app/features/dashboard-scene/saving/DashboardPrompt.tsx @@ -10,7 +10,7 @@ import { contextSrv } from 'app/core/services/context_srv'; import { SaveLibraryVizPanelModal } from '../panel-edit/SaveLibraryVizPanelModal'; import { DashboardScene } from '../scene/DashboardScene'; -import { getLibraryPanelBehavior, isLibraryPanel } from '../utils/utils'; +import { getLibraryPanelBehavior, hasActualSaveChanges, isLibraryPanel } from '../utils/utils'; interface DashboardPromptProps { dashboard: DashboardScene; @@ -183,5 +183,5 @@ export function ignoreChanges(scene: DashboardScene | null) { return true; } - return !canSave || fromScript || fromFile; + return !canSave || fromScript || fromFile || (scene.state.isEditing && !hasActualSaveChanges(scene)); } diff --git a/public/app/features/dashboard-scene/scene/DashboardScene.tsx b/public/app/features/dashboard-scene/scene/DashboardScene.tsx index 2a6d6abece9..371c2d51cd0 100644 --- a/public/app/features/dashboard-scene/scene/DashboardScene.tsx +++ b/public/app/features/dashboard-scene/scene/DashboardScene.tsx @@ -65,6 +65,7 @@ import { getDefaultVizPanel, getLayoutManagerFor, getPanelIdForVizPanel, + hasActualSaveChanges, } from '../utils/utils'; import { SchemaV2EditorDrawer } from '../v2schema/SchemaV2EditorDrawer'; @@ -322,7 +323,7 @@ export class DashboardScene extends SceneObjectBase impleme return; } - if (!this.state.isDirty || skipConfirm) { + if (!this.state.isDirty || skipConfirm || !hasActualSaveChanges(this)) { this.exitEditModeConfirmed(restoreInitialState || this.state.isDirty); this.state.scopesBridge?.setReadOnly(false); return; diff --git a/public/app/features/dashboard-scene/utils/utils.ts b/public/app/features/dashboard-scene/utils/utils.ts index e4e302dd652..89add9b02c4 100644 --- a/public/app/features/dashboard-scene/utils/utils.ts +++ b/public/app/features/dashboard-scene/utils/utils.ts @@ -468,3 +468,11 @@ export function useInterpolatedTitle