MCPcopy Create free account
hub / github.com/dailydotdev/apps / useAutoComplete

Function useAutoComplete

packages/shared/src/hooks/useAutoComplete.ts:9–38  ·  view source on GitHub ↗
(
  items: string[],
  submitQuery: (query?: string) => unknown,
)

Source from the content-addressed store, hash-verified

7};
8
9export function useAutoComplete(
10 items: string[],
11 submitQuery: (query?: string) => unknown,
12): UseAutoCompleteReturn {
13 const [selectedItemIndex, setSelectedItemIndex] = useState(-1);
14
15 useEffect(() => {
16 setSelectedItemIndex(-1);
17 }, [items]);
18
19 return {
20 selectedItemIndex,
21 onKeyDown: (event) => {
22 if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {
23 event.preventDefault();
24 const n = items.length + 1;
25 if (selectedItemIndex > -1) {
26 const step = event.key === 'ArrowDown' ? 1 : -1;
27 setSelectedItemIndex((((selectedItemIndex + step) % n) + n) % n);
28 } else {
29 setSelectedItemIndex(event.key === 'ArrowDown' ? 0 : n - 1);
30 }
31 } else if (event.key === 'Enter') {
32 submitQuery(
33 (selectedItemIndex > -1 && items[selectedItemIndex]) || undefined,
34 );
35 }
36 },
37 };
38}

Callers 1

PostsSearchFunction · 0.90

Calls 1

submitQueryFunction · 0.85

Tested by

no test coverage detected