Unify project/user flex column layout into layoutFlexTable with per-subject policy in model. Add office-tui-table skill and AGENTS notes; fix CI go mod tidy drift and test matrix Go version to match go.mod 1.25. Co-authored-by: Cursor <cursoragent@cursor.com>
49 lines
1.3 KiB
Go
49 lines
1.3 KiB
Go
package ui
|
|
|
|
import (
|
|
"github.com/charmbracelet/lipgloss"
|
|
"github.com/eslider/go-onlyoffice/cmd/office/model"
|
|
)
|
|
|
|
func (t *DataTable) projectBaseStyle(item model.Item) lipgloss.Style {
|
|
if model.ProjectIsOpen(item.Raw) {
|
|
return lipgloss.NewStyle().
|
|
Background(lipgloss.Color("235")).
|
|
Foreground(lipgloss.Color("108"))
|
|
}
|
|
return lipgloss.NewStyle().
|
|
Background(lipgloss.Color("238")).
|
|
Foreground(lipgloss.Color("252"))
|
|
}
|
|
|
|
func (t *DataTable) projectCellStyle(row, col int, colKey string, selected bool, item model.Item) lipgloss.Style {
|
|
isRow := row == t.cursorRow
|
|
isCol := col == t.cursorCol
|
|
isCell := t.focused && isRow && isCol
|
|
|
|
switch {
|
|
case selected && isCell:
|
|
return t.styles.cellSelect
|
|
case selected && isRow:
|
|
return t.styles.rowSelect
|
|
case selected:
|
|
return t.styles.rowSelect
|
|
case isCell:
|
|
return t.styles.cellActive
|
|
case t.focused && (isRow || isCol):
|
|
return t.projectStatusStyle(colKey, item, t.projectBaseStyle(item))
|
|
default:
|
|
return t.projectStatusStyle(colKey, item, t.projectBaseStyle(item))
|
|
}
|
|
}
|
|
|
|
func (t *DataTable) projectStatusStyle(colKey string, item model.Item, base lipgloss.Style) lipgloss.Style {
|
|
if colKey != "status" {
|
|
return base
|
|
}
|
|
if model.ProjectIsOpen(item.Raw) {
|
|
return base.Foreground(lipgloss.Color("42")).Bold(true)
|
|
}
|
|
return base.Foreground(lipgloss.Color("245"))
|
|
}
|