Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Item ¶ added in v0.0.2
type Item struct {
ID string // clave de selección
Label string // texto principal
Description string // texto secundario (un SKU, una IP, un subtítulo)
}
Item es UNA fila proyectada de la lista — la forma neutra desde la que cualquier renderer dibuja una tarjeta/fila. No lleva markup: solo lo que una lista necesita para mostrar y dejar elegir un registro.
type Option ¶ added in v0.0.2
type Option func(*presenter)
Option representa una opción funcional de configuración opcional para el presentador.
func WithArgs ¶ added in v0.0.2
WithArgs inyecta una función para obtener los argumentos de la ListOp.
func WithDeleteOp ¶ added in v0.0.2
WithDeleteOp asigna la operación de eliminación (DeleteOp).
func WithFill ¶ added in v0.0.2
WithFill inyecta una función para mapear un id a su modelo completo (típicamente de la caché).
func WithSaveOp ¶ added in v0.0.2
WithSaveOp asigna la operación de guardado (SaveOp).
func WithSearchPlaceholder ¶ added in v0.0.2
WithSearchPlaceholder asigna un texto de ayuda para la barra de búsqueda.
type Presenter ¶ added in v0.0.2
type Presenter interface {
Title() string
SearchPlaceholder() string
Record() model.Model
Items() []Item // la lista decodificada actual (resultado del último Reload)
Reload() error // invoca ListOp y decodifica en Items síncronamente; retorna error
Selected() string // el id que Select fijó por última vez ("" si ninguno)
Select(id string) model.Model // marca id como actual y devuelve su registro (via Fill); id=="" limpia y devuelve nil
CanSave() bool // ¿se ofreció SaveOp?
Save(payload model.Model) error // envía el payload explícito a SaveOp síncronamente
CanDelete() bool // ¿se ofreció DeleteOp?
Delete(id string) error // envía el registro completo de id (via Fill) a DeleteOp síncronamente
}
Presenter es el motor agnóstico de tecnología detrás de cualquier vista CRUD: listar, seleccionar, guardar, eliminar — manejado SOLO por el Caller y el model.Model de forma síncrona. Sin DOM, sin form, y sin callbacks colgados.
func New ¶
func New( caller router.Caller, record model.Model, listOp string, newList func() model.FielderSlice, project func(list model.FielderSlice) []Item, opts ...Option, ) Presenter
New construye el Presenter a partir de sus componentes requeridos invariantes en tiempo de compilación, más opciones funcionales adicionales.