tui: add session search functionality with debounced input and server-side filtering

This commit is contained in:
Dax Raad
2026-01-04 13:38:30 -05:00
parent cdd6ea514b
commit 7304ba616e
9 changed files with 79 additions and 12 deletions

View File

@@ -71,12 +71,14 @@ export function DialogSelect<T>(props: DialogSelectProps<T>) {
let input: InputRenderable
const filtered = createMemo(() => {
if (props.skipFilter) {
return props.options.filter((x) => x.disabled !== true)
}
const needle = store.filter.toLowerCase()
const result = pipe(
props.options,
filter((x) => x.disabled !== true),
(x) =>
!needle || props.skipFilter ? x : fuzzysort.go(needle, x, { keys: ["title", "category"] }).map((x) => x.obj),
(x) => (!needle ? x : fuzzysort.go(needle, x, { keys: ["title", "category"] }).map((x) => x.obj)),
)
return result
})