public handleKeyPress()

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();
    }