64 lines
1.4 KiB
Go
64 lines
1.4 KiB
Go
package dashboard
|
|
|
|
import (
|
|
"github.com/charmbracelet/bubbles/key"
|
|
tea "github.com/charmbracelet/bubbletea"
|
|
)
|
|
|
|
type DashboardKeyMap struct {
|
|
Help key.Binding
|
|
Quit key.Binding
|
|
SelectIssue key.Binding
|
|
BackToList key.Binding
|
|
ScrollUp key.Binding
|
|
ScrollDown key.Binding
|
|
}
|
|
|
|
var defaultDashboardKeyMap = DashboardKeyMap{
|
|
Help: key.NewBinding(
|
|
key.WithKeys("?"),
|
|
key.WithHelp("?", "help"),
|
|
),
|
|
Quit: key.NewBinding(
|
|
key.WithKeys("q", "ctrl+c"),
|
|
key.WithHelp("q", "quit"),
|
|
),
|
|
SelectIssue: key.NewBinding(
|
|
key.WithKeys("enter"),
|
|
key.WithHelp("enter", "view issue"),
|
|
),
|
|
BackToList: key.NewBinding(
|
|
key.WithKeys("b"),
|
|
key.WithHelp("b", "back to list"),
|
|
),
|
|
ScrollUp: key.NewBinding(
|
|
key.WithKeys("up", "k"),
|
|
key.WithHelp("↑/k", "up"),
|
|
),
|
|
ScrollDown: key.NewBinding(
|
|
key.WithKeys("down", "j"),
|
|
key.WithHelp("↓/j", "down"),
|
|
),
|
|
}
|
|
|
|
func (d *Model) handleKeyMsg(msg tea.KeyMsg) tea.Cmd {
|
|
var cmd tea.Cmd
|
|
|
|
switch {
|
|
case key.Matches(msg, d.keyMap.Help):
|
|
d.helpBar.ToggleHelp()
|
|
case key.Matches(msg, d.keyMap.Quit):
|
|
return tea.Quit
|
|
case d.IsFocusedOnList() && key.Matches(msg, d.keyMap.SelectIssue):
|
|
d.FocusDetail()
|
|
case d.IsFocusedOnDetail() && key.Matches(msg, d.keyMap.BackToList):
|
|
d.FocusList()
|
|
case d.IsFocusedOnDetail() && key.Matches(msg, d.keyMap.ScrollUp):
|
|
d.issueDetail.ScrollUp(1)
|
|
case d.IsFocusedOnDetail() && key.Matches(msg, d.keyMap.ScrollDown):
|
|
d.issueDetail.ScrollDown(1)
|
|
}
|
|
|
|
return cmd
|
|
}
|