Skip to content

Commit 9d01216

Browse files
committed
add circular navigation wrapping to completion component
Signed-off-by: maxcleme <maxime.clement@docker.com>
1 parent 1588d8d commit 9d01216

File tree

1 file changed

+8
-0
lines changed

1 file changed

+8
-0
lines changed

pkg/tui/components/completion/completion.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,16 +236,24 @@ func (c *manager) Update(msg tea.Msg) (layout.Model, tea.Cmd) {
236236
case key.Matches(msg, c.keyMap.Up):
237237
if c.selected > 0 {
238238
c.selected--
239+
} else if len(c.filteredItems) > 0 {
240+
c.selected = len(c.filteredItems) - 1
239241
}
240242
if c.selected < c.scrollOffset {
241243
c.scrollOffset = c.selected
242244
}
245+
if c.selected >= c.scrollOffset+maxItems {
246+
c.scrollOffset = c.selected - maxItems + 1
247+
}
243248
cmd := c.notifySelectionChanged()
244249
return c, cmd
245250

246251
case key.Matches(msg, c.keyMap.Down):
247252
if c.selected < len(c.filteredItems)-1 {
248253
c.selected++
254+
} else if len(c.filteredItems) > 0 {
255+
c.selected = 0
256+
c.scrollOffset = 0
249257
}
250258
if c.selected >= c.scrollOffset+maxItems {
251259
c.scrollOffset = c.selected - maxItems + 1

0 commit comments

Comments
 (0)