From d5eb3e291a56c5892f04e0d0c64d4559b29babc1 Mon Sep 17 00:00:00 2001 From: Sergej-Vlasov <37613182+Sergej-Vlasov@users.noreply.github.com> Date: Tue, 2 Sep 2025 17:10:10 +0300 Subject: [PATCH] DashboardGridItem: Trigger row repeat behaviour on panel edit complete (#110397) reset SceneGridRow repeats on panel change --- .../scene/layout-default/DashboardGridItem.tsx | 8 ++++++++ .../scene/layout-default/RowRepeaterBehavior.ts | 4 ++++ 2 files changed, 12 insertions(+) diff --git a/public/app/features/dashboard-scene/scene/layout-default/DashboardGridItem.tsx b/public/app/features/dashboard-scene/scene/layout-default/DashboardGridItem.tsx index 86b67303f8e..13f3cec389e 100644 --- a/public/app/features/dashboard-scene/scene/layout-default/DashboardGridItem.tsx +++ b/public/app/features/dashboard-scene/scene/layout-default/DashboardGridItem.tsx @@ -12,6 +12,7 @@ import { MultiValueVariable, CustomVariable, VariableValueSingle, + SceneGridRow, } from '@grafana/scenes'; import { GRID_COLUMN_COUNT } from 'app/core/constants'; import { OptionsPaneCategoryDescriptor } from 'app/features/dashboard/components/PanelEditor/OptionsPaneCategoryDescriptor'; @@ -24,6 +25,7 @@ import { DashboardLayoutItem } from '../types/DashboardLayoutItem'; import { getDashboardGridItemOptions } from './DashboardGridItemEditor'; import { DashboardGridItemRenderer } from './DashboardGridItemRenderer'; import { DashboardGridItemVariableDependencyHandler } from './DashboardGridItemVariableDependencyHandler'; +import { RowRepeaterBehavior } from './RowRepeaterBehavior'; export interface DashboardGridItemState extends SceneGridItemStateLike { body: VizPanel; @@ -121,6 +123,12 @@ export class DashboardGridItem public editingCompleted(withChanges: boolean) { if (withChanges) { this._prevRepeatValues = undefined; + if (this.parent instanceof SceneGridRow) { + const repeater = this.parent.state.$behaviors?.find((b) => b instanceof RowRepeaterBehavior); + if (repeater) { + repeater.resetPrevRepeatValues(); + } + } } if (this.state.variableName && this.state.repeatDirection === 'h' && this.state.width !== GRID_COLUMN_COUNT) { diff --git a/public/app/features/dashboard-scene/scene/layout-default/RowRepeaterBehavior.ts b/public/app/features/dashboard-scene/scene/layout-default/RowRepeaterBehavior.ts index 5a6553dd941..14f844a39e6 100644 --- a/public/app/features/dashboard-scene/scene/layout-default/RowRepeaterBehavior.ts +++ b/public/app/features/dashboard-scene/scene/layout-default/RowRepeaterBehavior.ts @@ -183,6 +183,10 @@ export class RowRepeaterBehavior extends SceneObjectBase b !== this), $variables: undefined }); } + + public resetPrevRepeatValues() { + this._prevRepeatValues = undefined; + } } function getRowContentHeight(panels: SceneGridItemLike[]): number {