use-keyboard-list-navigation
v2.4.2
Published
[![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release) [![npm](https://img.shields.io/npm/v/use-keyboard-list-navigation)](https://www.npmjs.com
Downloads
12,654
Readme
use-keyboard-list-navigation
What is this?
A React hook to navigate through lists with your keyboard.
Installation
yarn add use-keyboard-list-navigation
Usage
import React from "react";
import { useKeyboardListNavigation } from "use-keyboard-list-navigation";
const App: React.FC = () => {
const list = ["one", "two", "three"];
const { index, cursor, interactive, selected } = useKeyboardListNavigation({
list,
onEnter: console.log.bind(console),
});
return (
<pre>
<code>{JSON.stringify({ index, cursor, interactive, selected })}</code>
</pre>
);
};
Interface
type UseKeyboardListNavigationProps<T> = {
ref?: React.MutableRefObject<any> | undefined;
list: T[];
waitForInteractive?: boolean | undefined;
defaultValue?: T | undefined;
bindAxis?: "vertical" | "horizontal" | "both" | undefined;
onEnter({
event,
element,
state,
index,
}: {
event: KeyboardEvent;
element: T;
state: UseKeyboardListNavigationState;
index: number;
}): void;
extractValue?(item: T): string;
};
const useKeyboardListNavigation: <T>({
ref,
list,
waitForInteractive,
defaultValue,
onEnter,
extractValue,
}: UseKeyboardListNavigationProps<T>) => {
index: number;
selected: T;
cursor: number;
length: number;
interactive: boolean;
};