Skip to content

Commit

Permalink
feat: allow to set the height of the item
Browse files Browse the repository at this point in the history
The user might want to show more than 2 lines, and, right now, if they
try to do so, things break.

Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>
  • Loading branch information
caarlos0 committed May 24, 2022
1 parent 2a8d463 commit e8b9aeb
Showing 1 changed file with 23 additions and 2 deletions.
25 changes: 23 additions & 2 deletions list/defaultitem.go
Expand Up @@ -3,6 +3,7 @@ package list
import (
"fmt"
"io"
"strings"

"github.com/charmbracelet/bubbles/key"
tea "github.com/charmbracelet/bubbletea"
Expand Down Expand Up @@ -86,6 +87,7 @@ type DefaultDelegate struct {
UpdateFunc func(tea.Msg, *Model) tea.Cmd
ShortHelpFunc func() []key.Binding
FullHelpFunc func() [][]key.Binding
height int
spacing int
}

Expand All @@ -94,14 +96,22 @@ func NewDefaultDelegate() DefaultDelegate {
return DefaultDelegate{
ShowDescription: true,
Styles: NewDefaultItemStyles(),
height: 2,
spacing: 1,
}
}

// SetHeight sets delegate's preferred height.
func (d *DefaultDelegate) SetHeight(i int) {
d.height = i
}

// Height returns the delegate's preferred height.
// This has effect only if ShowDescription is true,
// otherwise height is always 1.
func (d DefaultDelegate) Height() int {
if d.ShowDescription {
return 2 //nolint:gomnd
return d.height
}
return 1
}
Expand Down Expand Up @@ -139,11 +149,22 @@ func (d DefaultDelegate) Render(w io.Writer, m Model, index int, item Item) {
return
}

if d.ShowDescription {
lines := strings.Split(desc, "\n")
if len(lines) > d.height-1 {
desc = strings.Join(lines[0:d.height-1], "\n")
}
}

// Prevent text from exceeding list width
if m.width > 0 {
textwidth := uint(m.width - s.NormalTitle.GetPaddingLeft() - s.NormalTitle.GetPaddingRight())
title = truncate.StringWithTail(title, textwidth, ellipsis)
desc = truncate.StringWithTail(desc, textwidth, ellipsis)
lines := strings.Split(desc, "\n")
for i, line := range lines {
lines[i] = truncate.StringWithTail(line, textwidth, ellipsis)
}
desc = strings.Join(lines, "\n")
}

// Conditions
Expand Down

0 comments on commit e8b9aeb

Please sign in to comment.