private _handleKeydownOpen()

in desktop/src/@batch-flask/ui/select/select.component.ts [527:555]


    private _handleKeydownOpen(event: KeyboardEvent) {
        if (this.displayedOptions.length === 0) { return; }

        const keyCode = event.keyCode;
        const isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW;

        const navigator = this._keyNavigator;
        if (keyCode === HOME || keyCode === END) {
            event.preventDefault();
            keyCode === HOME ? navigator.focusFirstItem() : navigator.focusLastItem();
        } else if (isArrowKey && event.altKey || keyCode === ESCAPE) {
            // Close the select on ALT + arrow key to match the native <select>
            event.preventDefault();
            event.stopPropagation();
            this.closeDropdown();
        } else if ((keyCode === ENTER || keyCode === SPACE) && navigator.focusedItem) {
            event.preventDefault();
            this.selectOption(navigator.focusedItem);
        } else {
            const previouslyFocusedIndex = navigator.focusedItemIndex;

            navigator.onKeydown(event);

            if (this.multiple && isArrowKey && event.shiftKey && navigator.focusedItem &&
                navigator.focusedItemIndex !== previouslyFocusedIndex) {
                this.selectOption(navigator.focusedItem);
            }
        }
    }