-
Notifications
You must be signed in to change notification settings - Fork 0
/
page_menu_delegate.go
58 lines (43 loc) 路 1.11 KB
/
page_menu_delegate.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
package ui
import (
"fmt"
"io"
"github.com/charmbracelet/bubbles/list"
tea "github.com/charmbracelet/bubbletea"
)
type menuPageListItem struct {
title string
description string
}
var _ list.Item = (*menuPageListItem)(nil)
func (i menuPageListItem) FilterValue() string {
return ""
}
type menuPageListDelegate struct{}
var _ list.ItemDelegate = (*menuPageListDelegate)(nil)
func newMenuPageListDelegate() menuPageListDelegate {
return menuPageListDelegate{}
}
func (d menuPageListDelegate) Height() int {
return 2
}
func (d menuPageListDelegate) Spacing() int {
return 1
}
func (d menuPageListDelegate) Update(msg tea.Msg, m *list.Model) tea.Cmd {
return nil
}
func (d menuPageListDelegate) Render(w io.Writer, m list.Model, index int, item list.Item) {
i := item.(menuPageListItem)
selected := index == m.Index()
title := i.title
desc := i.description
if selected {
title = listSelectedTitleStyle.Render(title)
desc = listSelectedDescStyle.Render(desc)
} else {
title = listNormalTitleStyle.Render(title)
desc = listNormalDescStyle.Render(desc)
}
fmt.Fprintf(w, "%s\n%s", title, desc)
}