in src/shared/utils.ts [72:119]
export function getActionFromKey(event: KeyboardEvent, menuOpen: boolean): MenuActions {
const { key, altKey, ctrlKey, metaKey } = event;
const openKeys = ['ArrowDown', 'ArrowUp', 'Enter', ' ', 'Home', 'End']; // all keys that will open the combo
// handle opening when closed
if (!menuOpen && openKeys.includes(key)) {
return MenuActions.Open;
}
// handle typing characters when open or closed
if (key === Keys.Backspace || key === Keys.Clear || (key.length === 1 && key !== ' ' && !altKey && !ctrlKey && !metaKey)) {
return MenuActions.Type;
}
// handle keys when open
if (menuOpen) {
if (key === Keys.Down && !altKey || key === Keys.Right) {
return MenuActions.Next;
}
else if (key === Keys.Up && altKey) {
return MenuActions.CloseSelect;
}
else if (key === Keys.Up || key === Keys.Left) {
return MenuActions.Previous;
}
else if (key === Keys.Home) {
return MenuActions.First;
}
else if (key === Keys.End) {
return MenuActions.Last;
}
else if (key === Keys.PageUp) {
return MenuActions.PageUp;
}
else if (key === Keys.PageDown) {
return MenuActions.PageDown;
}
else if (key === Keys.Escape) {
return MenuActions.Close;
}
else if (key === Keys.Enter) {
return MenuActions.CloseSelect;
}
else if (key === Keys.Space) {
return MenuActions.Space;
}
}
}