fix(tui): preserve current selection across list updates (#39774)

This commit is contained in:
Kit Langton 2026-07-30 20:48:51 -04:00 committed by GitHub
commit 865f512a44
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 21 additions and 3 deletions

View file

@ -240,7 +240,7 @@ export function DialogSelect<T>(props: DialogSelectProps<T>) {
on(
() => props.options,
() => {
if (!props.preserveSelection) {
if (!props.preserveSelection && props.current === undefined) {
const count = flat().length
if (count === 0) return
const next = reconcileSelection(store.selected, count)
@ -276,7 +276,7 @@ export function DialogSelect<T>(props: DialogSelectProps<T>) {
setStore("selected", index)
selection = option
if (!moved) return
if (!props.preserveSelection || store.filter.length > 0) return
if ((!props.preserveSelection && props.current === undefined) || store.filter.length > 0) return
scrollAfterLayout(false, option.value)
return
}