diff --git a/projects/igniteui-angular/src/lib/core/grid-selection.ts b/projects/igniteui-angular/src/lib/core/grid-selection.ts index 0986efd12bd..6aee9472269 100644 --- a/projects/igniteui-angular/src/lib/core/grid-selection.ts +++ b/projects/igniteui-angular/src/lib/core/grid-selection.ts @@ -126,6 +126,9 @@ export class IgxGridCRUDService { } beginRowEdit() { + if (this.grid.rowEditable && (this.grid.primaryKey === undefined || this.grid.primaryKey === null)) { + console.warn('The grid must have a `primaryKey` specified when using `rowEditable`!'); + } this.row = this.createRow(this.cell); const args = { rowID: this.row.id, diff --git a/projects/igniteui-angular/src/lib/grids/grid-base.component.ts b/projects/igniteui-angular/src/lib/grids/grid-base.component.ts index 308ae2d626b..6a224cff404 100644 --- a/projects/igniteui-angular/src/lib/grids/grid-base.component.ts +++ b/projects/igniteui-angular/src/lib/grids/grid-base.component.ts @@ -596,9 +596,6 @@ export abstract class IgxGridBaseComponent extends DisplayDensityBase implements * @memberof IgxGridBaseComponent */ set rowEditable(val: boolean) { - if (val && (this.primaryKey === undefined || this.primaryKey === null)) { - console.warn('The grid must have a `primaryKey` specified when using `rowEditable`!'); - } this._rowEditable = val; if (this.gridAPI.grid) { this.refreshGridState(); diff --git a/projects/igniteui-angular/src/lib/grids/grid/grid.component.spec.ts b/projects/igniteui-angular/src/lib/grids/grid/grid.component.spec.ts index 0e2aa401eba..73c04e998f0 100644 --- a/projects/igniteui-angular/src/lib/grids/grid/grid.component.spec.ts +++ b/projects/igniteui-angular/src/lib/grids/grid/grid.component.spec.ts @@ -1391,22 +1391,21 @@ describe('IgxGrid Component Tests', () => { grid.rowEditable = true; fix.detectChanges(); tick(16); - expect(console.warn).toHaveBeenCalledWith('The grid must have a `primaryKey` specified when using `rowEditable`!'); - expect(console.warn).toHaveBeenCalledTimes(1); // Throws warinig but still sets the property correctly expect(grid.rowEditable).toBeTruthy(); + const cell = grid.getRowByIndex(2).cells.toArray()[1].nativeElement; + spyOn(grid, 'openRowOverlay'); + cell.dispatchEvent(new Event('focus')); tick(16); fix.detectChanges(); - grid.primaryKey = 'ProductID'; - grid.rowEditable = false; - fix.detectChanges(); + cell.dispatchEvent(new Event('dblclick')); tick(16); - grid.rowEditable = true; fix.detectChanges(); - tick(16); + expect(console.warn).toHaveBeenCalledWith('The grid must have a `primaryKey` specified when using `rowEditable`!'); expect(console.warn).toHaveBeenCalledTimes(1); - expect(grid.rowEditable).toBeTruthy(); + // Still calls openRowOverlay, just logs the warning + expect(grid.openRowOverlay).toHaveBeenCalled(); })); it('Should be able to enter edit mode on dblclick, enter and f2', fakeAsync(() => { const fix = TestBed.createComponent(IgxGridRowEditingComponent);