Documentation
¶
Overview ¶
Package table is a vendored copy of github.com/charmbracelet/bubbles/table at v1.0.0, with one fix applied.
Upstream measures cell and header widths with runewidth.Truncate, and runewidth.StringWidth counts the bytes of an ANSI escape sequence as display width. A styled string whose escaped length exceeds the column width is therefore cut in the middle of an escape sequence, and the terminal swallows the remainder — the styled text disappears entirely. asql hits this on every column narrower than about 27 cells: column type annotations vanish and diff-highlighted cells in compare mode lose their contents.
The fix is to truncate with ansi.Truncate, which is escape-aware. It is the same change upstream accepted as charmbracelet/bubbles#884, but that landed only on the v2 branch; the identical PR against v1 (#883) was closed without merging, so it will never reach the v1.0.0 line asql depends on. Migrating to bubbles v2 would drag in bubbletea v2 and lipgloss v2, which is not a trade worth making for a two-line fix.
The diff against upstream is exactly: the go-runewidth import, and the two Truncate calls in headersView and renderRow. Keep it that way — anything else makes re-syncing with upstream a merge instead of a copy. Upstream's own test suite (table/table_test.go) is not vendored; table_test.go here covers the patched behaviour. Licensed MIT, see LICENSE in this directory.
Index ¶
- type Column
- type KeyMap
- type Model
- func (m *Model) Blur()
- func (m Model) Columns() []Column
- func (m Model) Cursor() int
- func (m *Model) Focus()
- func (m Model) Focused() bool
- func (m *Model) FromValues(value, separator string)
- func (m *Model) GotoBottom()
- func (m *Model) GotoTop()
- func (m Model) Height() int
- func (m Model) HelpView() string
- func (m *Model) MoveDown(n int)
- func (m *Model) MoveUp(n int)
- func (m Model) Rows() []Row
- func (m Model) SelectedRow() Row
- func (m *Model) SetColumns(c []Column)
- func (m *Model) SetCursor(n int)
- func (m *Model) SetHeight(h int)
- func (m *Model) SetRows(r []Row)
- func (m *Model) SetStyles(s Styles)
- func (m *Model) SetWidth(w int)
- func (m Model) Update(msg tea.Msg) (Model, tea.Cmd)
- func (m *Model) UpdateViewport()
- func (m Model) View() string
- func (m Model) Width() int
- type Option
- type Row
- type Styles
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type KeyMap ¶
type KeyMap struct {
LineUp key.Binding
LineDown key.Binding
PageUp key.Binding
PageDown key.Binding
HalfPageUp key.Binding
HalfPageDown key.Binding
GotoTop key.Binding
GotoBottom key.Binding
}
KeyMap defines keybindings. It satisfies to the help.KeyMap interface, which is used to render the help menu.
func DefaultKeyMap ¶
func DefaultKeyMap() KeyMap
DefaultKeyMap returns a default set of keybindings.
type Model ¶
Model defines a state for the table widget.
func (*Model) Focus ¶
func (m *Model) Focus()
Focus focuses the table, allowing the user to move around the rows and interact.
func (*Model) FromValues ¶
FromValues create the table rows from a simple string. It uses `\n` by default for getting all the rows and the given separator for the fields on each row.
func (*Model) GotoBottom ¶
func (m *Model) GotoBottom()
GotoBottom moves the selection to the last row.
func (Model) HelpView ¶
HelpView is a helper method for rendering the help menu from the keymap. Note that this view is not rendered by default and you must call it manually in your application, where applicable.
func (*Model) MoveDown ¶
MoveDown moves the selection down by any number of rows. It can not go below the last row.
func (*Model) MoveUp ¶
MoveUp moves the selection up by any number of rows. It can not go above the first row.
func (Model) SelectedRow ¶
SelectedRow returns the selected row. You can cast it to your own implementation.
func (*Model) SetColumns ¶
SetColumns sets a new columns state.
func (*Model) UpdateViewport ¶
func (m *Model) UpdateViewport()
UpdateViewport updates the list content based on the previously defined columns and rows.
type Option ¶
type Option func(*Model)
Option is used to set options in New. For example:
table := New(WithColumns([]Column{{Title: "ID", Width: 10}}))
func WithColumns ¶
WithColumns sets the table columns (headers).
type Styles ¶
Styles contains style definitions for this list component. By default, these values are generated by DefaultStyles.
func DefaultStyles ¶
func DefaultStyles() Styles
DefaultStyles returns a set of default style definitions for this table.