handleKeyboardEvent
ts
function LSM.handleKeyboardEvent<T>(
lsm: LSM<T>,
evt: {
ctrlKey: boolean;
key: string;
metaKey: boolean;
shiftKey: boolean;
},
options?: {
multiselect: boolean;
}
): [boolean, LSM<T>];Handles keyboard navigation events and returns a tuple of [handled, newState].
Supported Keys
| Key | Modifier | Action |
|---|---|---|
ArrowDown | - | goToNext |
ArrowDown | Shift | selectNext |
ArrowDown | Meta | goToBottom |
ArrowDown | Meta+Shift | selectToBottom |
ArrowUp | - | goToPrev |
ArrowUp | Shift | selectPrev |
ArrowUp | Meta | goToTop |
ArrowUp | Meta+Shift | selectToTop |
Home | - | goToTop |
Home | Shift | selectToTop |
End | - | goToBottom |
End | Shift | selectToBottom |
Options
multiselect- Iffalse, disables shift-based selection extensions. Default:true
Example
ts
import { LSM } from "@monstermann/lsm";
let lsm = LSM.create(["a", "b", "c"]);
const [handled, newLsm] = LSM.handleKeyboardEvent(lsm, {
key: "ArrowDown",
shiftKey: false,
metaKey: false,
ctrlKey: false,
});
handled; // true
newLsm.selected; // ["a"]