in desktop/src/@batch-flask/ui/abstract-list/abstract-list-base.ts [373:401]
public handleKeyPress(event: KeyboardEvent) {
if (event.code === KeyCode.Space || event.code === KeyCode.Enter) {
this.activateItem(this.focusedItem);
event.preventDefault();
} else {
let previousFocusedId = null;
if (event.shiftKey) {
const focusedItem = this._keyNavigator.focusedItem;
previousFocusedId = focusedItem && focusedItem.id;
}
// Handle the navigation
this._keyNavigator.onKeydown(event);
const focusedItem = this._keyNavigator.focusedItem;
const focusedId = focusedItem && focusedItem.id;
if (previousFocusedId && previousFocusedId !== focusedId) {
if (!focusedId) { return; }
if (this.selection.has(focusedId)) {
this.selection.delete(previousFocusedId);
} else {
this.selection.add(focusedId);
}
} else if (event.code === KeyCode.ArrowDown || event.code === KeyCode.ArrowUp) {
this.selection = new ListSelection({ keys: [focusedId] });
}
}
this.changeDetector.markForCheck();
}