allow selected items in filter

This commit is contained in:
2023-03-02 11:32:56 -08:00
parent 1b47179339
commit 10bd84e984
3 changed files with 54 additions and 11 deletions

View File

@@ -46,7 +46,7 @@ type delegateKeyMap struct {
func newDelegateKeyMap() *delegateKeyMap {
return &delegateKeyMap{
toggle: key.NewBinding(
key.WithKeys("space"),
key.WithKeys(" "),
key.WithHelp("space", "choose"),
),
}

View File

@@ -49,7 +49,7 @@ func (i selectablelist) GetSelected() []string {
var settingsKey = key.NewBinding(
key.WithKeys("ctrl+g"),
key.WithHelp("", "press ctrl+g to open settings"),
key.WithHelp("ctrl+g", "press ctrl+g to open settings"),
)
func (m Settings) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
@@ -60,31 +60,74 @@ func (m Settings) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
switch m.cursor {
case authors:
var cmd tea.Cmd
batch := []tea.Cmd{}
switch msg := msg.(type) {
case tea.KeyMsg:
switch msg.String() {
case "space", "enter":
selected := m.AuthorList.Cursor()
case " ", "enter":
selected := 0
if !m.AuthorList.IsFiltered() {
selected = m.AuthorList.Index()
m.AllAuthors[selected].selected = !m.AllAuthors[selected].selected
cmd = m.AuthorList.SetItem(selected, m.AllAuthors[selected])
batch = append(batch, cmd)
} else {
val := m.AuthorList.SelectedItem()
selectedItem, ok := val.(selectable)
if ok {
for i, v := range m.AllAuthors {
if v.text == selectedItem.text {
selected = i
break
}
}
m.AllAuthors[selected].selected = !m.AllAuthors[selected].selected
cmd = m.AuthorList.SetItem(selected, m.AllAuthors[selected])
batch = append(batch, cmd)
}
}
}
}
m.SelectedAuthors = m.AllAuthors.GetSelected()
m.AuthorList, cmd = m.AuthorList.Update(msg)
return m, cmd
batch = append(batch, cmd)
return m, tea.Batch(batch...)
case repos:
var cmd tea.Cmd
batch := []tea.Cmd{}
switch msg := msg.(type) {
case tea.KeyMsg:
switch msg.String() {
case "space", "enter":
selected := m.RepoList.Cursor()
case " ", "enter":
selected := 0
if !m.RepoList.IsFiltered() {
selected = m.RepoList.Index()
m.AllRepos[selected].selected = !m.AllRepos[selected].selected
cmd = m.RepoList.SetItem(selected, m.AllRepos[selected])
batch = append(batch, cmd)
} else {
val := m.RepoList.SelectedItem()
selectedItem, ok := val.(selectable)
if ok {
for i, v := range m.AllRepos {
if v.text == selectedItem.text {
selected = i
break
}
}
m.AllRepos[selected].selected = !m.AllRepos[selected].selected
cmd = m.RepoList.SetItem(selected, m.AllRepos[selected])
batch = append(batch, cmd)
}
}
}
}
m.SelectedRepos = m.AllRepos.GetSelected()
m.RepoList, cmd = m.RepoList.Update(msg)
return m, cmd
batch = append(batch, cmd)
return m, tea.Batch(batch...)
}
return m, nil
}

View File

@@ -29,7 +29,7 @@ type (
)
var quitKeys = key.NewBinding(
key.WithKeys("q", "esc", "ctrl+c"),
key.WithKeys("q", "ctrl+c"),
key.WithHelp("", "press q to quit"),
)