diff --git a/lib/core/datatable/components/datatable/datatable.component.html b/lib/core/datatable/components/datatable/datatable.component.html index 4e2240b378..8f2a83fba9 100644 --- a/lib/core/datatable/components/datatable/datatable.component.html +++ b/lib/core/datatable/components/datatable/datatable.component.html @@ -59,6 +59,7 @@ [row]="row" (select)="onEnterKeyPressed(row, $event)" (keyup)="onRowKeyUp(row, $event)" + (keydown)="onRowEnterKeyDown(row, $event)" [adf-upload]="allowDropFiles && rowAllowsDrop(row)" [adf-upload-data]="row" [ngStyle]="rowStyle" diff --git a/lib/core/datatable/components/datatable/datatable.component.spec.ts b/lib/core/datatable/components/datatable/datatable.component.spec.ts index 1e80ed72ad..06a5e780b7 100644 --- a/lib/core/datatable/components/datatable/datatable.component.spec.ts +++ b/lib/core/datatable/components/datatable/datatable.component.spec.ts @@ -297,6 +297,34 @@ describe('DataTable', () => { expect(rows[1].getValue('name')).toEqual('test2'); }); + it('should double click if keydown "enter key" on row', () => { + const event = new KeyboardEvent('keydown', { + code: 'Enter', + key: 'Enter' + } as KeyboardEventInit ); + const dataRows = + [ { name: 'test1'}, { name: 'test2' } ]; + + dataTable.data = new ObjectDataTableAdapter([], + [new ObjectDataColumn({ key: 'name' })] + ); + + dataTable.ngOnChanges({ + rows: new SimpleChange(null, dataRows, false) + }); + + fixture.detectChanges(); + dataTable.ngAfterViewInit(); + + const rowElement = document.querySelectorAll('.adf-datatable-body .adf-datatable-row')[0]; + + spyOn(dataTable.rowDblClick, 'emit'); + + rowElement.dispatchEvent(event); + + expect(dataTable.rowDblClick.emit).toHaveBeenCalled(); + }); + it('should set custom sort order', () => { const dataSortObj = new DataSorting('dummyName', 'asc'); const dataRows = diff --git a/lib/core/datatable/components/datatable/datatable.component.ts b/lib/core/datatable/components/datatable/datatable.component.ts index 82ed8108a1..c1624f7dfe 100644 --- a/lib/core/datatable/components/datatable/datatable.component.ts +++ b/lib/core/datatable/components/datatable/datatable.component.ts @@ -474,11 +474,17 @@ export class DataTableComponent implements AfterContentInit, OnChanges, DoCheck, this.clickObserver.next(dataRowEvent); } - onRowKeyUp(row: DataRow, e: KeyboardEvent) { + onRowEnterKeyDown(row: DataRow, keyboardEvent: KeyboardEvent) { + if (keyboardEvent.key === 'Enter') { + this.onKeyboardNavigate(row, keyboardEvent); + } + } + + onRowKeyUp(row: DataRow, keyboardEvent: KeyboardEvent) { const event = new CustomEvent('row-keyup', { detail: { row: row, - keyboardEvent: e, + keyboardEvent: keyboardEvent, sender: this }, bubbles: true @@ -487,11 +493,7 @@ export class DataTableComponent implements AfterContentInit, OnChanges, DoCheck, this.elementRef.nativeElement.dispatchEvent(event); if (event.defaultPrevented) { - e.preventDefault(); - } else { - if (e.key === 'Enter') { - this.onKeyboardNavigate(row, e); - } + keyboardEvent.preventDefault(); } }