Работа над валидацией полей, работа над выполнением действий
This commit is contained in:
parent
e37cabadcc
commit
dc263b76bf
8 changed files with 220 additions and 23 deletions
|
|
@ -1,10 +1,9 @@
|
|||
package fields
|
||||
|
||||
import (
|
||||
"bubble/types"
|
||||
"fmt"
|
||||
"github.com/charmbracelet/bubbles/textinput"
|
||||
tea "github.com/charmbracelet/bubbletea"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
// CheckboxModel структура описывающая модель выбора из двух состояний да и нет
|
||||
|
|
@ -12,20 +11,19 @@ type CheckboxModel struct {
|
|||
label string //Имя поля
|
||||
description string //Описание поля
|
||||
checked bool //Выбранное состояние
|
||||
validate textinput.ValidateFunc //Функция валидации
|
||||
validate types.BoolValidateFunc //Функция валидации
|
||||
err error //Поле ошибки валидации
|
||||
}
|
||||
|
||||
// NewCheckboxModel создаем новую модель выбора
|
||||
func NewCheckboxModel(label, description string, checked bool, validator textinput.ValidateFunc) *CheckboxModel {
|
||||
func NewCheckboxModel(label, description string, checked bool, validator types.BoolValidateFunc) *CheckboxModel {
|
||||
checkbox := &CheckboxModel{
|
||||
label: label,
|
||||
description: description,
|
||||
validate: validator,
|
||||
checked: checked,
|
||||
}
|
||||
checkbox.err = validator(strconv.FormatBool(checked))
|
||||
|
||||
checkbox.CheckboxValidate()
|
||||
return checkbox
|
||||
}
|
||||
|
||||
|
|
@ -42,7 +40,7 @@ func (m *CheckboxModel) Update(msg tea.Msg) (FieldModel, tea.Cmd) {
|
|||
case " ", "enter":
|
||||
//Если был нажат enter или space, то меняем текущее значение на противоположное
|
||||
m.checked = !m.checked
|
||||
m.err = m.validate(strconv.FormatBool(m.checked))
|
||||
m.CheckboxValidate()
|
||||
}
|
||||
}
|
||||
return m, nil
|
||||
|
|
@ -83,3 +81,9 @@ func (m *CheckboxModel) GetLabel() string {
|
|||
func (m *CheckboxModel) GetValue() interface{} {
|
||||
return m.checked
|
||||
}
|
||||
|
||||
func (m *CheckboxModel) CheckboxValidate() {
|
||||
if m.validate != nil {
|
||||
m.err = m.validate(m.checked)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue