Files
abra/vendor/github.com/evertras/bubble-table/table/scrolling.go

51 lines
1.1 KiB
Go

package table
func (m *Model) scrollRight() {
if m.horizontalScrollOffsetCol < m.maxHorizontalColumnIndex {
m.horizontalScrollOffsetCol++
}
}
func (m *Model) scrollLeft() {
if m.horizontalScrollOffsetCol > 0 {
m.horizontalScrollOffsetCol--
}
}
func (m *Model) recalculateLastHorizontalColumn() {
if m.horizontalScrollFreezeColumnsCount >= len(m.columns) {
m.maxHorizontalColumnIndex = 0
return
}
if m.totalWidth <= m.maxTotalWidth {
m.maxHorizontalColumnIndex = 0
return
}
const (
leftOverflowWidth = 2
borderAdjustment = 1
)
// Always have left border
visibleWidth := borderAdjustment + leftOverflowWidth
for i := 0; i < m.horizontalScrollFreezeColumnsCount; i++ {
visibleWidth += m.columns[i].width + borderAdjustment
}
m.maxHorizontalColumnIndex = len(m.columns) - 1
// Work backwards from the right
for i := len(m.columns) - 1; i >= m.horizontalScrollFreezeColumnsCount && visibleWidth <= m.maxTotalWidth; i-- {
visibleWidth += m.columns[i].width + borderAdjustment
if visibleWidth <= m.maxTotalWidth {
m.maxHorizontalColumnIndex = i - m.horizontalScrollFreezeColumnsCount
}
}
}