From 8fa80a9311d8e09a884f2d896d9c4dfaa58b6f17 Mon Sep 17 00:00:00 2001 From: MKirova Date: Tue, 8 Apr 2025 12:20:46 +0300 Subject: [PATCH 1/3] fix(igxGrid): Update editValue if grid data is changed externally. --- .../src/lib/grids/cell.component.ts | 3 +++ .../lib/grids/grid/grid-cell-editing.spec.ts | 21 +++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/projects/igniteui-angular/src/lib/grids/cell.component.ts b/projects/igniteui-angular/src/lib/grids/cell.component.ts index eaacd3064e5..343ce74fb92 100644 --- a/projects/igniteui-angular/src/lib/grids/cell.component.ts +++ b/projects/igniteui-angular/src/lib/grids/cell.component.ts @@ -926,6 +926,9 @@ export class IgxGridCellComponent implements OnInit, OnChanges, OnDestroy, CellT this.highlight.lastSearchInfo.caseSensitive = this.grid.lastSearchInfo.caseSensitive; this.highlight.lastSearchInfo.exactMatch = this.grid.lastSearchInfo.exactMatch; } + if (this.formControl && this.formControl.value !== changes.value.currentValue) { + this.formControl.setValue(changes.value.currentValue); + } } } diff --git a/projects/igniteui-angular/src/lib/grids/grid/grid-cell-editing.spec.ts b/projects/igniteui-angular/src/lib/grids/grid/grid-cell-editing.spec.ts index 7cfb9e4dc46..ea4399b326e 100644 --- a/projects/igniteui-angular/src/lib/grids/grid/grid-cell-editing.spec.ts +++ b/projects/igniteui-angular/src/lib/grids/grid/grid-cell-editing.spec.ts @@ -1165,6 +1165,27 @@ describe('IgxGrid - Cell Editing #grid', () => { expect(cell.value).not.toEqual(cellValue); expect(cell.value).toEqual(newValue); }); + + it('should update editValue when externally changing grid data.', () => { + const cell = grid.getCellByColumn(0, 'fullName'); + cell.editMode = true; + fixture.detectChanges(); + + expect(cell.editMode).toBeTruthy(); + expect(cell.editValue).toBe('John Brown'); + + fixture.detectChanges(); + cell.editMode = false; + fixture.detectChanges(); + + grid.data[0].fullName = "Test"; + fixture.detectChanges(); + + cell.editMode = true; + fixture.detectChanges(); + expect(cell.editMode).toBeTruthy(); + expect(cell.editValue).toBe('Test'); + }); }); describe('Integration tests', () => { From 86c785fdf950e0bfb6779a5e8d930cfad479eece Mon Sep 17 00:00:00 2001 From: MKirova Date: Tue, 8 Apr 2025 14:34:19 +0300 Subject: [PATCH 2/3] chore(*): Update only if it's not in edit mode. --- projects/igniteui-angular/src/lib/grids/cell.component.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/projects/igniteui-angular/src/lib/grids/cell.component.ts b/projects/igniteui-angular/src/lib/grids/cell.component.ts index 343ce74fb92..3c739bf8ff8 100644 --- a/projects/igniteui-angular/src/lib/grids/cell.component.ts +++ b/projects/igniteui-angular/src/lib/grids/cell.component.ts @@ -926,7 +926,8 @@ export class IgxGridCellComponent implements OnInit, OnChanges, OnDestroy, CellT this.highlight.lastSearchInfo.caseSensitive = this.grid.lastSearchInfo.caseSensitive; this.highlight.lastSearchInfo.exactMatch = this.grid.lastSearchInfo.exactMatch; } - if (this.formControl && this.formControl.value !== changes.value.currentValue) { + const isInEdit = this.grid.rowEditable ? this.row.inEditMode : this.editMode; + if (this.formControl && this.formControl.value !== changes.value.currentValue && !isInEdit) { this.formControl.setValue(changes.value.currentValue); } } From a5b8c0756c31a9d0df69ed53eaee8b50692ac70d Mon Sep 17 00:00:00 2001 From: MKirova Date: Tue, 8 Apr 2025 15:02:31 +0300 Subject: [PATCH 3/3] chore(*): Force change detection in grid test. --- .../src/lib/grids/grid/grid-cell-editing.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/igniteui-angular/src/lib/grids/grid/grid-cell-editing.spec.ts b/projects/igniteui-angular/src/lib/grids/grid/grid-cell-editing.spec.ts index ea4399b326e..d5d97f56799 100644 --- a/projects/igniteui-angular/src/lib/grids/grid/grid-cell-editing.spec.ts +++ b/projects/igniteui-angular/src/lib/grids/grid/grid-cell-editing.spec.ts @@ -1179,7 +1179,7 @@ describe('IgxGrid - Cell Editing #grid', () => { fixture.detectChanges(); grid.data[0].fullName = "Test"; - fixture.detectChanges(); + grid.cdr.detectChanges(); cell.editMode = true; fixture.detectChanges();