forked from Mirrors/bubbletea
Add paginator example
This commit is contained in:
parent
295f7bd246
commit
64ae19f37e
|
@ -0,0 +1,76 @@
|
|||
package main
|
||||
|
||||
// A simple program demonstrating the paginator component from the Bubbles
|
||||
// component library.
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"strings"
|
||||
|
||||
"github.com/charmbracelet/bubbles/paginator"
|
||||
"github.com/charmbracelet/lipgloss"
|
||||
|
||||
tea "github.com/charmbracelet/bubbletea"
|
||||
)
|
||||
|
||||
func newModel() model {
|
||||
var items []string
|
||||
for i := 1; i < 101; i++ {
|
||||
text := fmt.Sprintf("Item %d", i)
|
||||
items = append(items, text)
|
||||
}
|
||||
|
||||
p := paginator.NewModel()
|
||||
p.Type = paginator.Dots
|
||||
p.PerPage = 10
|
||||
p.ActiveDot = lipgloss.NewStyle().Foreground(lipgloss.AdaptiveColor{Light: "#847A85", Dark: "#979797"}).Render("•")
|
||||
p.InactiveDot = lipgloss.NewStyle().Foreground(lipgloss.AdaptiveColor{Light: "#C2B8C2", Dark: "#4D4D4D"}).Render("•")
|
||||
p.SetTotalPages(len(items))
|
||||
|
||||
return model{
|
||||
paginator: p,
|
||||
items: items,
|
||||
}
|
||||
}
|
||||
|
||||
type model struct {
|
||||
items []string
|
||||
paginator paginator.Model
|
||||
}
|
||||
|
||||
func (m model) Init() tea.Cmd {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
||||
var cmd tea.Cmd
|
||||
switch msg := msg.(type) {
|
||||
case tea.KeyMsg:
|
||||
switch msg.String() {
|
||||
case "q":
|
||||
return m, tea.Quit
|
||||
}
|
||||
}
|
||||
m.paginator, cmd = m.paginator.Update(msg)
|
||||
return m, cmd
|
||||
}
|
||||
|
||||
func (m model) View() string {
|
||||
var b strings.Builder
|
||||
b.WriteString("\n Paginator Example\n\n")
|
||||
start, end := m.paginator.GetSliceBounds(len(m.items))
|
||||
for _, item := range m.items[start:end] {
|
||||
b.WriteString(" • " + item + "\n\n")
|
||||
}
|
||||
b.WriteString(" " + m.paginator.View())
|
||||
b.WriteString("\n\n h/l ←/→ page • q: quit\n")
|
||||
return b.String()
|
||||
}
|
||||
|
||||
func main() {
|
||||
p := tea.NewProgram(newModel())
|
||||
if err := p.Start(); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue