.eg-grid-header-row {
}
+.eg-grid-body {
+ outline: none; /* for keyboard events */
+}
+
.eg-grid-body-row {
}
<div class="eg-grid">
+
<eg-grid-toolbar [gridContext]="context" [colWidthConfig]="colWidthConfig">
</eg-grid-toolbar>
</div>
</div>
- <div class="eg-grid-row eg-grid-body-row"
- [ngClass]="{'selected': context.rowSelector.contains(context.getRowIndex(row))}"
- *ngFor="let row of dataSource.getPageOfRows(context.pager); let idx = index">
+ <div class="eg-grid-body" tabindex="1" (keydown)="onGridKeyDown($event)">
+ <div class="eg-grid-row eg-grid-body-row"
+ [ngClass]="{'selected': context.rowSelector.contains(context.getRowIndex(row))}"
+ *ngFor="let row of dataSource.getPageOfRows(context.pager); let idx = index">
- <div class="eg-grid-cell eg-grid-checkbox-cell eg-grid-cell-skinny">
- <input type='checkbox' [(ngModel)]="context.rowSelector.indexes[context.getRowIndex(row)]">
- </div>
- <div class="eg-grid-cell eg-grid-header-cell eg-grid-number-cell eg-grid-cell-skinny">
- {{context.pager.rowNumber(idx)}}
+ <div class="eg-grid-cell eg-grid-checkbox-cell eg-grid-cell-skinny">
+ <input type='checkbox' [(ngModel)]="context.rowSelector.indexes[context.getRowIndex(row)]">
+ </div>
+ <div class="eg-grid-cell eg-grid-header-cell eg-grid-number-cell eg-grid-cell-skinny">
+ {{context.pager.rowNumber(idx)}}
+ </div>
+ <div class="eg-grid-cell eg-grid-body-cell" [ngStyle]="{flex:col.flex}"
+ (dblclick)="onRowDblClick(row)"
+ (click)="onRowClick($event, row, idx)"
+ *ngFor="let col of context.columnSet.displayColumns()">
+ {{context.getRowColumnValue(row, col)}}
+ </div>
</div>
- <div class="eg-grid-cell eg-grid-body-cell" [ngStyle]="{flex:col.flex}"
- (dblclick)="onRowDblClick(row)"
- (click)="onRowClick($event, row, idx)"
- *ngFor="let col of context.columnSet.displayColumns()">
- {{context.getRowColumnValue(row, col)}}
- </div>
- <div>
+ </div>
</div>
this.context.destroy();
}
- // Grid keyboard navigation handlers.
- @HostListener('window:keydown', ['$event']) onKeyDown(evt: KeyboardEvent) {
- if (evt.key == 'ArrowUp') {
- this.context.selectPreviousRow();
-
- } else if (evt.key == 'ArrowDown') {
- this.context.selectNextRow();
-
- } else if (evt.key == 'ArrowLeft') {
- this.context.toPrevPage()
+ // Not using @HostListener because it only works globally.
+ onGridKeyDown(evt: KeyboardEvent) {
+ switch(evt.key) {
+ case 'ArrowUp':
+ this.context.selectPreviousRow();
+ evt.stopPropagation();
+ break;
+ case 'ArrowDown':
+ this.context.selectNextRow();
+ evt.stopPropagation();
+ break;
+ case 'ArrowLeft':
+ this.context.toPrevPage()
.then(ok => this.context.selectFirstRow(), err => {});
-
- } else if (evt.key == 'ArrowRight') {
- this.context.toNextPage()
+ evt.stopPropagation();
+ break;
+ case 'ArrowRight':
+ this.context.toNextPage()
.then(ok => this.context.selectFirstRow(), err => {});
-
- } else if (evt.key == 'Enter') {
- if (this.context.lastSelectedIndex) {
- this.onRowActivate$.emit(
- this.context.getRowByIndex(
- this.context.lastSelectedIndex)
- );
- }
+ evt.stopPropagation();
+ break;
+ case 'Enter':
+ if (this.context.lastSelectedIndex) {
+ this.onRowActivate$.emit(
+ this.context.getRowByIndex(
+ this.context.lastSelectedIndex)
+ );
+ }
+ evt.stopPropagation();
+ break;
}
}
<input type="text" class="form-control"
id='first-query-input'
[(ngModel)]="searchContext.query[idx]"
- (keyup)="checkEnter($event)"
+ (keyup.enter)="formEnter()"
placeholder="Query..."/>
</div>
<div *ngIf="idx > 0">
this.searchContext.matchOp.splice(index, 1);
}
- checkEnter($event: any): void {
- if ($event.keyCode == 13) {
- this.searchContext.pager.offset = 0;
- this.searchByForm();
- }
+ formEnter() {
+ this.searchContext.pager.offset = 0;
+ this.searchByForm();
}
// https://stackoverflow.com/questions/42322968/angular2-dynamic-input-field-lose-focus-when-input-changes
id="username"
name="username"
required
- (keyup)="checkEnter($event)"
+ (keyup.enter)="login()"
autocomplete="username"
i18n-placeholder
placeholder="Username..."
id="password"
name="password"
required
- (keyup)="checkEnter($event)"
+ (keyup.enter)="login()"
autocomplete="current-password"
i18n-placeholder
placeholder="Password..."
);
}
- checkEnter($event: any): void {
- if ($event.keyCode == 13)
- this.login();
- }
-
login(): Promise<any> {
if (!(this.username && this.password))
return Promise.reject('Missing Params');
<input type="text" class="form-control"
[(ngModel)]="catSearchQuery"
id='catalog-search-input'
- (keyup)="checkEnter($event)"
+ (keyup.enter)="searchCatalog()"
i18n-placeholder placeholder="Search for...">
<span class="input-group-btn">
<button class="btn btn-outline-secondary"
this.renderer.selectRootElement('#catalog-search-input').focus();
}
- checkEnter($event: any): void {
- if ($event.keyCode == 13)
- this.searchCatalog();
- }
-
searchCatalog(): void {
if (!this.catSearchQuery) return;