diff --git a/pkg/cli/prompt_test.go b/pkg/cli/prompt_test.go index b873b56..a5d2ddf 100644 --- a/pkg/cli/prompt_test.go +++ b/pkg/cli/prompt_test.go @@ -336,12 +336,12 @@ func TestChooseMulti_Good_Filter(t *testing.T) { assert.Equal(t, []string{"apple", "apricot"}, vals) } -func TestChooseMulti_Bad_FilteredDefaultDoesNotFallBackToFirstVisible(t *testing.T) { - SetStdin(strings.NewReader("ap\n\n2\n")) +func TestChooseMulti_Good_FilteredEmptyReturnsNone(t *testing.T) { + SetStdin(strings.NewReader("ap\n\n")) defer SetStdin(nil) vals := ChooseMulti("Pick", []string{"apple", "banana", "apricot"}, WithDefaultIndex[string](1), Filter[string]()) - assert.Equal(t, []string{"banana"}, vals) + assert.Empty(t, vals) } func TestChoose_Good_ClearFilter(t *testing.T) { @@ -352,12 +352,12 @@ func TestChoose_Good_ClearFilter(t *testing.T) { assert.Equal(t, "banana", val) } -func TestChooseMulti_Good_ClearFilter(t *testing.T) { - SetStdin(strings.NewReader("ap\n\n2\n")) +func TestChooseMulti_Good_EmptyClearsSelection(t *testing.T) { + SetStdin(strings.NewReader("ap\n\n")) defer SetStdin(nil) vals := ChooseMulti("Pick", []string{"apple", "banana", "apricot"}, Filter[string]()) - assert.Equal(t, []string{"banana"}, vals) + assert.Empty(t, vals) } func TestChooseMulti_Good_Commas(t *testing.T) { diff --git a/pkg/cli/utils.go b/pkg/cli/utils.go index e350612..0524fc2 100644 --- a/pkg/cli/utils.go +++ b/pkg/cli/utils.go @@ -469,7 +469,6 @@ func ChooseMulti[T any](prompt string, items []T, opts ...ChooseOption[T]) []T { for i := range items { visible[i] = i } - allVisible := append([]int(nil), visible...) for { renderChoices(prompt, items, visible, cfg.displayFn, -1, cfg.filter) @@ -482,13 +481,8 @@ func ChooseMulti[T any](prompt string, items []T, opts ...ChooseOption[T]) []T { response, _ := reader.ReadString('\n') response = strings.TrimSpace(response) - // Empty response returns no selections + // Empty response returns no selections. if response == "" { - if cfg.filter && len(visible) != len(allVisible) { - visible = append([]int(nil), allVisible...) - promptHint("Filter cleared.") - continue - } return nil }