diff --git a/internal/dynamo-browse/ui/teamodels/dynamoitemview/model.go b/internal/dynamo-browse/ui/teamodels/dynamoitemview/model.go index dd4a5c6..bcc65cf 100644 --- a/internal/dynamo-browse/ui/teamodels/dynamoitemview/model.go +++ b/internal/dynamo-browse/ui/teamodels/dynamoitemview/model.go @@ -22,7 +22,7 @@ var ( Background(lipgloss.Color("#4479ff")) fieldTypeStyle = lipgloss.NewStyle(). - Foreground(lipgloss.Color("#31e131")) + Foreground(lipgloss.AdaptiveColor{Light: "#2B800C", Dark: "#73C653"}) metaInfoStyle = lipgloss.NewStyle(). Foreground(lipgloss.Color("#888888")) ) diff --git a/internal/dynamo-browse/ui/teamodels/dynamotableview/model.go b/internal/dynamo-browse/ui/teamodels/dynamotableview/model.go index 6e51a22..c3b3777 100644 --- a/internal/dynamo-browse/ui/teamodels/dynamotableview/model.go +++ b/internal/dynamo-browse/ui/teamodels/dynamotableview/model.go @@ -2,6 +2,7 @@ package dynamotableview import ( table "github.com/calyptia/go-bubble-table" + "github.com/charmbracelet/bubbles/key" tea "github.com/charmbracelet/bubbletea" "github.com/charmbracelet/lipgloss" "github.com/lmika/awstools/internal/dynamo-browse/controllers" @@ -18,10 +19,22 @@ var ( Background(lipgloss.Color("#4479ff")) ) +type KeyBinding struct { + MoveUp key.Binding + MoveDown key.Binding + PageUp key.Binding + PageDown key.Binding + Home key.Binding + End key.Binding + ColLeft key.Binding + ColRight key.Binding +} + type Model struct { frameTitle frame.FrameTitle table table.Model w, h int + keyBinding KeyBinding // model state colOffset int @@ -39,6 +52,16 @@ func New() *Model { return &Model{ frameTitle: frameTitle, table: tbl, + keyBinding: KeyBinding{ + MoveUp: key.NewBinding(key.WithKeys("i", "up")), + MoveDown: key.NewBinding(key.WithKeys("k", "down")), + PageUp: key.NewBinding(key.WithKeys("I", "pgup")), + PageDown: key.NewBinding(key.WithKeys("K", "pgdown")), + Home: key.NewBinding(key.WithKeys("I", "home")), + End: key.NewBinding(key.WithKeys("K", "end")), + ColLeft: key.NewBinding(key.WithKeys("j", "left")), + ColRight: key.NewBinding(key.WithKeys("l", "right")), + }, } } @@ -53,26 +76,32 @@ func (m *Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) { m.updateTable() return m, m.postSelectedItemChanged case tea.KeyMsg: - switch msg.String() { + switch { // Table nav - case "i", "up": + case key.Matches(msg, m.keyBinding.MoveUp): m.table.GoUp() return m, m.postSelectedItemChanged - case "k", "down": + case key.Matches(msg, m.keyBinding.MoveDown): m.table.GoDown() return m, m.postSelectedItemChanged - case "j": - m.setLeftmostDisplayedColumn(m.colOffset - 1) - return m, nil - case "l": - m.setLeftmostDisplayedColumn(m.colOffset + 1) - return m, nil - case "I", "pgup": + case key.Matches(msg, m.keyBinding.PageUp): m.table.GoPageUp() return m, m.postSelectedItemChanged - case "K", "pgdn": + case key.Matches(msg, m.keyBinding.PageDown): m.table.GoPageDown() return m, m.postSelectedItemChanged + case key.Matches(msg, m.keyBinding.Home): + m.table.GoTop() + return m, m.postSelectedItemChanged + case key.Matches(msg, m.keyBinding.End): + m.table.GoBottom() + return m, m.postSelectedItemChanged + case key.Matches(msg, m.keyBinding.ColLeft): + m.setLeftmostDisplayedColumn(m.colOffset - 1) + return m, nil + case key.Matches(msg, m.keyBinding.ColRight): + m.setLeftmostDisplayedColumn(m.colOffset + 1) + return m, nil } }