32 lines
509 B
Go
32 lines
509 B
Go
package tui
|
|
|
|
type Checkbox struct {
|
|
Label string
|
|
Checked bool
|
|
}
|
|
|
|
func (c *Checkbox) Toggle() {
|
|
c.Checked = !c.Checked
|
|
}
|
|
|
|
func (c Checkbox) Render(focused bool) string {
|
|
marker := "[ ]"
|
|
if c.Checked {
|
|
marker = "[x]"
|
|
}
|
|
|
|
if c.Checked {
|
|
marker = checkedStyle.Render(marker)
|
|
} else {
|
|
marker = uncheckedStyle.Render(marker)
|
|
}
|
|
|
|
label := labelStyle.Render(c.Label)
|
|
if focused {
|
|
label = focusedStyle.Render("▶ " + marker + " " + c.Label)
|
|
return label
|
|
}
|
|
|
|
return " " + marker + " " + label
|
|
}
|