summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDavid Hill <[email protected]>2026-01-24 21:08:04 +0000
committerDavid Hill <[email protected]>2026-01-24 22:02:09 +0000
commit8845f2b92687c72a454766879d1c41517d6b0ba9 (patch)
tree54a2cab5c08f64f6d97ddef404735d28331536c7
parentdf4d839577b69d90246f494949783ce212677db8 (diff)
downloadopencode-8845f2b92687c72a454766879d1c41517d6b0ba9.tar.gz
opencode-8845f2b92687c72a454766879d1c41517d6b0ba9.zip
feat(ui): add onFilter callback to List, discard add server row when searching
-rw-r--r--packages/app/src/components/dialog-select-server.tsx5
-rw-r--r--packages/ui/src/components/list.tsx2
2 files changed, 7 insertions, 0 deletions
diff --git a/packages/app/src/components/dialog-select-server.tsx b/packages/app/src/components/dialog-select-server.tsx
index 99fd22162..8f4b99a4f 100644
--- a/packages/app/src/components/dialog-select-server.tsx
+++ b/packages/app/src/components/dialog-select-server.tsx
@@ -367,6 +367,11 @@ export function DialogSelectServer() {
onSelect={(x) => {
if (x) select(x)
}}
+ onFilter={(value) => {
+ if (value && store.addServer.showForm && !store.addServer.adding) {
+ resetAdd()
+ }
+ }}
divider={true}
class="px-5 [&_[data-slot=list-search-wrapper]]:w-full [&_[data-slot=list-scroll]]:max-h-[300px] [&_[data-slot=list-scroll]]:overflow-y-auto [&_[data-slot=list-items]]:bg-surface-raised-base [&_[data-slot=list-items]]:rounded-md [&_[data-slot=list-item]]:h-14 [&_[data-slot=list-item]]:p-3 [&_[data-slot=list-item]]:!bg-transparent [&_[data-slot=list-item-add]]:px-0"
add={
diff --git a/packages/ui/src/components/list.tsx b/packages/ui/src/components/list.tsx
index 5f585f90c..2132897f7 100644
--- a/packages/ui/src/components/list.tsx
+++ b/packages/ui/src/components/list.tsx
@@ -38,6 +38,7 @@ export interface ListProps<T> extends FilteredListProps<T> {
loadingMessage?: string
onKeyEvent?: (event: KeyboardEvent, item: T | undefined) => void
onMove?: (item: T | undefined) => void
+ onFilter?: (value: string) => void
activeIcon?: IconProps["name"]
filter?: string
search?: ListSearchProps | boolean
@@ -98,6 +99,7 @@ export function List<T>(props: ListProps<T> & { ref?: (ref: ListRef) => void })
const current = internalFilter()
if (prev !== current) {
onInput(current)
+ props.onFilter?.(current)
}
return current
}, "")