feat: add BorderHeader to Styles

This commit is contained in:
bashbunni
2024-09-11 14:40:42 -07:00
parent 0ce4f9250e
commit 63869e3889
2 changed files with 23 additions and 26 deletions
+12 -11
View File
@@ -113,29 +113,30 @@ func DefaultKeyMap() KeyMap {
// Styles contains style definitions for this list component. By default, these
// values are generated by DefaultStyles.
type Styles struct {
// TODO is there a way to extract the border from the style?
Border lipgloss.Border
// Why doesn't setting the BorderStyle overwrite the default lip gloss table border?
BorderStyle lipgloss.Style
Header lipgloss.Style
Cell lipgloss.Style
Selected lipgloss.Style
Border lipgloss.Border
BorderStyle lipgloss.Style
BorderHeader bool
Header lipgloss.Style
Cell lipgloss.Style
Selected lipgloss.Style
}
// DefaultStyles returns a set of default style definitions for this table.
func DefaultStyles() Styles {
return Styles{
BorderStyle: lipgloss.NewStyle().BorderStyle(lipgloss.HiddenBorder()),
Selected: lipgloss.NewStyle().Bold(true).Foreground(lipgloss.Color("212")),
Header: lipgloss.NewStyle().Bold(true).Padding(0, 1),
Cell: lipgloss.NewStyle().Padding(0, 1),
BorderHeader: true,
Selected: lipgloss.NewStyle().Bold(true).Foreground(lipgloss.Color("212")),
Header: lipgloss.NewStyle().Bold(true).Padding(0, 1),
Cell: lipgloss.NewStyle().Margin(0, 1),
}
}
// SetStyles sets the table styles.
func (m *Model) SetStyles(s Styles) {
m.styles = s
m.table.Border(s.Border)
m.table.BorderStyle(s.BorderStyle)
m.table.BorderHeader(s.BorderHeader)
m.table.StyleFunc(func(row, col int) lipgloss.Style {
if row == HEADER {
return s.Header
+11 -15
View File
@@ -61,14 +61,16 @@ func deepEqual(a, b []Row) bool {
return true
}
var cols = []Column{
{Title: "col1", Width: 10},
{Title: "col2", Width: 10},
{Title: "col3", Width: 10},
}
// func TestWithColumns(t *testing.T) {
// t.Run("With columns")
//
// t.Run("set headers directly")
// }
func TestTableAlignment(t *testing.T) {
t.Run("No border", func(t *testing.T) {
s := DefaultStyles()
s.BorderHeader = false
biscuits := New(
WithHeight(5),
WithColumns([]Column{
@@ -81,21 +83,15 @@ func TestTableAlignment(t *testing.T) {
{"Tim Tams", "Australia", "No"},
{"Hobnobs", "UK", "Yes"},
}),
WithStyles(Styles{BorderStyle: lipgloss.NewStyle().BorderStyle(lipgloss.HiddenBorder())}),
WithStyles(s),
)
got := ansi.Strip(biscuits.View())
golden.RequireEqual(t, []byte(got))
})
t.Run("With border", func(t *testing.T) {
baseStyle := lipgloss.NewStyle().
BorderStyle(lipgloss.NormalBorder()).
BorderForeground(lipgloss.Color("240"))
s := DefaultStyles()
s.Header = s.Header.
BorderBottom(true).
Bold(false)
s.Border = lipgloss.NormalBorder()
s.BorderStyle = lipgloss.NewStyle().BorderForeground(lipgloss.Color("240"))
biscuits := New(
WithHeight(5),
@@ -111,7 +107,7 @@ func TestTableAlignment(t *testing.T) {
}),
WithStyles(s),
)
got := ansi.Strip(baseStyle.Render(biscuits.View()))
got := ansi.Strip(biscuits.View())
golden.RequireEqual(t, []byte(got))
})
}