on main help sign in
feat: add file picker help
e74dddbKujtim Hoxha
internal/tui/components/dialogs/filepicker/filepicker.go+16−2
@@ -5,6 +5,7 @@ import (
5 "strings"
5 "strings"
6
6
7 "github.com/charmbracelet/bubbles/v2/filepicker"
7 "github.com/charmbracelet/bubbles/v2/filepicker"
8+ "github.com/charmbracelet/bubbles/v2/help"
8 "github.com/charmbracelet/bubbles/v2/key"
9 "github.com/charmbracelet/bubbles/v2/key"
9 tea "github.com/charmbracelet/bubbletea/v2"
10 tea "github.com/charmbracelet/bubbletea/v2"
10 "github.com/charmbracelet/lipgloss/v2"
11 "github.com/charmbracelet/lipgloss/v2"
@@ -36,6 +37,8 @@ type model struct {
36 filePicker filepicker.Model
37 filePicker filepicker.Model
37 highlightedFile string
38 highlightedFile string
38 image image.Model
39 image image.Model
40+ keyMap KeyMap
41+ help help.Model
39}
42}
40
43
41func NewFilePickerCmp() FilePicker {
44func NewFilePickerCmp() FilePicker {
@@ -51,7 +54,15 @@ func NewFilePickerCmp() FilePicker {
51 fp.SetHeight(fileSelectionHight)
54 fp.SetHeight(fileSelectionHight)
52
55
53 image := image.New(1, 1, "")
56 image := image.New(1, 1, "")
57+
58+ help := help.New()
59+ help.Styles = t.S().Help
60+ return &model{
54− return &model{filePicker: fp, image: image}
61+ filePicker: fp,
62+ image: image,
63+ keyMap: DefaultKeyMap(),
64+ help: help,
65+ }
55}
66}
56
67
57func (m *model) Init() tea.Cmd {
68func (m *model) Init() tea.Cmd {
@@ -71,8 +82,10 @@ func (m *model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
71 styles.File = styles.File.Width(m.width)
82 styles.File = styles.File.Width(m.width)
72 m.filePicker.Styles = styles
83 m.filePicker.Styles = styles
73 return m, nil
84 return m, nil
74−
75 case tea.KeyPressMsg:
85 case tea.KeyPressMsg:
86+ if key.Matches(msg, m.keyMap.Close) {
87+ return m, util.CmdHandler(dialogs.CloseDialogMsg{})
88+ }
76 if key.Matches(msg, m.filePicker.KeyMap.Back) {
89 if key.Matches(msg, m.filePicker.KeyMap.Back) {
77 // make sure we don't go back if we are at the home directory
90 // make sure we don't go back if we are at the home directory
78 homeDir, _ := os.UserHomeDir()
91 homeDir, _ := os.UserHomeDir()
@@ -114,6 +127,7 @@ func (m *model) View() tea.View {
114 t.S().Base.Padding(0, 1, 1, 1).Render(core.Title("Add Image", m.width-4)),
127 t.S().Base.Padding(0, 1, 1, 1).Render(core.Title("Add Image", m.width-4)),
115 m.imagePreview(),
128 m.imagePreview(),
116 m.filePicker.View(),
129 m.filePicker.View(),
130+ t.S().Base.Width(m.width-2).PaddingLeft(1).AlignHorizontal(lipgloss.Left).Render(m.help.View(m.keyMap)),
117 )
131 )
118 return tea.NewView(m.style().Render(content))
132 return tea.NewView(m.style().Render(content))
119}
133}
internal/tui/components/dialogs/filepicker/keys.go+2−6
@@ -12,7 +12,6 @@ type KeyMap struct {
12 Up,
12 Up,
13 Forward,
13 Forward,
14 Backward,
14 Backward,
15− InsertCWD,
16 Close key.Binding
15 Close key.Binding
17}
16}
18
17
@@ -38,10 +37,7 @@ func DefaultKeyMap() KeyMap {
38 key.WithKeys("left", "h"),
37 key.WithKeys("left", "h"),
39 key.WithHelp("left/h", "move backward"),
38 key.WithHelp("left/h", "move backward"),
40 ),
39 ),
41− InsertCWD: key.NewBinding(
40+
42− key.WithKeys("i"),
43− key.WithHelp("i", "manual path input"),
44− ),
45 Close: key.NewBinding(
41 Close: key.NewBinding(
46 key.WithKeys("esc"),
42 key.WithKeys("esc"),
47 key.WithHelp("esc", "close/exit"),
43 key.WithHelp("esc", "close/exit"),
@@ -63,8 +59,8 @@ func (k KeyMap) FullHelp() [][]key.Binding {
63// ShortHelp implements help.KeyMap.
59// ShortHelp implements help.KeyMap.
64func (k KeyMap) ShortHelp() []key.Binding {
60func (k KeyMap) ShortHelp() []key.Binding {
65 return []key.Binding{
61 return []key.Binding{
66− k.InsertCWD,
67 key.NewBinding(
62 key.NewBinding(
63+ key.WithKeys("right", "l", "left", "h", "up", "k", "down", "j"),
68 key.WithHelp("↑↓←→", "navigate"),
64 key.WithHelp("↑↓←→", "navigate"),
69 ),
65 ),
70 k.Select,
66 k.Select,