summaryrefslogtreecommitdiffhomepage
path: root/packages/ui/src/hooks
diff options
context:
space:
mode:
authorDavid Hill <[email protected]>2025-10-30 22:53:00 +0000
committerDavid Hill <[email protected]>2025-10-30 22:53:00 +0000
commit2f9f189f390401b3314c74bd9f83e64b2420cd65 (patch)
treeb275ca785719a54115752a79d4b66984ba125670 /packages/ui/src/hooks
parentf3c70f4ea8818bde5b1228482f72af9b10c71796 (diff)
parenta3ba740de41eb1e4825a99dc8f519e1225357e55 (diff)
downloadopencode-2f9f189f390401b3314c74bd9f83e64b2420cd65.tar.gz
opencode-2f9f189f390401b3314c74bd9f83e64b2420cd65.zip
Merge branch 'dev' of https://github.com/sst/opencode into dev
Diffstat (limited to 'packages/ui/src/hooks')
-rw-r--r--packages/ui/src/hooks/use-filtered-list.tsx13
1 files changed, 9 insertions, 4 deletions
diff --git a/packages/ui/src/hooks/use-filtered-list.tsx b/packages/ui/src/hooks/use-filtered-list.tsx
index b3ddf69ed..ca9bc5388 100644
--- a/packages/ui/src/hooks/use-filtered-list.tsx
+++ b/packages/ui/src/hooks/use-filtered-list.tsx
@@ -11,18 +11,22 @@ export interface FilteredListProps<T> {
current?: T
groupBy?: (x: T) => string
sortBy?: (a: T, b: T) => number
- sortGroupsBy?: (a: { category: string; items: T[] }, b: { category: string; items: T[] }) => number
+ sortGroupsBy?: (
+ a: { category: string; items: T[] },
+ b: { category: string; items: T[] },
+ ) => number
onSelect?: (value: T | undefined) => void
}
export function useFilteredList<T>(props: FilteredListProps<T>) {
const [store, setStore] = createStore<{ filter: string }>({ filter: "" })
- const [grouped] = createResource(
+ const [grouped, { refetch }] = createResource(
() => store.filter,
async (filter) => {
const needle = filter?.toLowerCase()
- const all = (typeof props.items === "function" ? await props.items(needle) : props.items) || []
+ const all =
+ (typeof props.items === "function" ? await props.items(needle) : props.items) || []
const result = pipe(
all,
(x) => {
@@ -76,10 +80,11 @@ export function useFilteredList<T>(props: FilteredListProps<T>) {
}
return {
- filter: () => store.filter,
grouped,
+ filter: () => store.filter,
flat,
reset,
+ refetch,
clear: () => setStore("filter", ""),
onKeyDown,
onInput,