Skip to content

Commit 668560b

Browse files
authored
Merge branch '15.0.x' into vkombov/fix-12391-15.0.x
2 parents b691a44 + ff0e9c2 commit 668560b

File tree

3 files changed

+32
-9
lines changed

3 files changed

+32
-9
lines changed

projects/igniteui-angular/src/lib/action-strip/grid-actions/grid-editing-actions.component.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,9 @@ export class IgxGridEditingActionsComponent extends IgxGridActionsBaseDirective
117117
// be sure row is in view
118118
if (grid.rowList.filter(r => r === row).length !== 0) {
119119
grid.gridAPI.crudService.enterEditMode(firstEditable, event);
120-
firstEditable.activate(event);
120+
if (!grid.gridAPI.crudService.nonEditable){
121+
firstEditable.activate(event);
122+
}
121123
}
122124
this.strip.hide();
123125
}

projects/igniteui-angular/src/lib/grids/common/crud.service.ts

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -312,6 +312,10 @@ export class IgxRowCrudState extends IgxCellCrudState {
312312
return this.grid.rowEditable;
313313
}
314314

315+
public get nonEditable(): boolean {
316+
return this.grid.rowEditable && (this.grid.primaryKey === undefined || this.grid.primaryKey === null);
317+
}
318+
315319
public get rowEditingBlocked() {
316320
return this._rowEditingBlocked;
317321
}
@@ -322,10 +326,6 @@ export class IgxRowCrudState extends IgxCellCrudState {
322326

323327
/** Enters row edit mode */
324328
public beginRowEdit(event?: Event) {
325-
if (this.grid.rowEditable && (this.grid.primaryKey === undefined || this.grid.primaryKey === null)) {
326-
console.warn('The grid must have a `primaryKey` specified when using `rowEditable`!');
327-
}
328-
329329
if (!this.row || !(this.row.getClassName() === IgxEditRow.name)) {
330330
if (!this.row) {
331331
this.createRow(this.cell);
@@ -576,6 +576,11 @@ export class IgxGridCRUDService extends IgxRowAddCrudState {
576576
return;
577577
}
578578

579+
if (this.nonEditable){
580+
console.warn('The grid must have a `primaryKey` specified when using `rowEditable`!');
581+
return;
582+
}
583+
579584
if (this.cellInEditMode) {
580585
// TODO: case solely for f2/enter nav that uses enterEditMode as toggle. Refactor.
581586
const canceled = this.endEdit(true, event);

projects/igniteui-angular/src/lib/grids/grid/grid-row-editing.spec.ts

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -86,15 +86,11 @@ describe('IgxGrid - Row Editing #grid', () => {
8686
// Throws warning but still sets the property correctly
8787
expect(grid.rowEditable).toBeTruthy();
8888

89-
spyOn(grid, 'openRowOverlay');
9089
UIInteractions.simulateDoubleClickAndSelectEvent(cellElem);
9190

92-
9391
fix.detectChanges();
9492
expect(console.warn).toHaveBeenCalledWith('The grid must have a `primaryKey` specified when using `rowEditable`!');
9593
expect(console.warn).toHaveBeenCalledTimes(1);
96-
// Still calls openRowOverlay, just logs the warning
97-
expect(grid.openRowOverlay).toHaveBeenCalled();
9894
});
9995

10096
it('Should be able to enter edit mode on dblclick, enter and f2', () => {
@@ -126,6 +122,26 @@ describe('IgxGrid - Row Editing #grid', () => {
126122
expect(row.inEditMode).toBe(false);
127123
});
128124

125+
it('Should not be able to enter edit mode on dblclick, enter and f2 when [rowEditable] is set on a grid w/o [primaryKey]', () => {
126+
grid.primaryKey = null;
127+
grid.rowEditable = true;
128+
fix.detectChanges();
129+
130+
const row = grid.gridAPI.get_row_by_index(2);
131+
132+
UIInteractions.simulateDoubleClickAndSelectEvent(cellElem);
133+
fix.detectChanges();
134+
expect(row.inEditMode).toBe(false);
135+
136+
UIInteractions.triggerEventHandlerKeyDown('enter', gridContent);
137+
fix.detectChanges();
138+
expect(row.inEditMode).toBe(false);
139+
140+
UIInteractions.triggerEventHandlerKeyDown('f2', gridContent);
141+
fix.detectChanges();
142+
expect(row.inEditMode).toBe(false);
143+
});
144+
129145
it('Emit all events with proper arguments', () => {
130146
const row = grid.gridAPI.get_row_by_index(2);
131147
const initialRowData = { ...cell.row.data };

0 commit comments

Comments
 (0)