5d584ff815
Cierra dos limitaciones documentadas del commit anterior: los
formularios ahora aceptan teclado real, y los clicks en menus +
botones mutan estado correctamente.
Cambios:
- Cada FieldSpec del Form materializa un Entity<TextInput> de
yahweh-widget-text-input al entrar a la vista. Los entities se
reemplazan al cambiar (drop limpio). Soporta: escribir caracteres,
Backspace, Enter (Confirmed event no usado todavia), Escape.
Cursor renderea como "|" al final.
- Click handlers wired via cx.listener: menus invocan select_view,
botones invocan apply_action. Tienen acceso real al
Context<MetaUi> y mutan el modelo + cx.notify.
- commit_seed reemplaza el buffer ad-hoc por
input.read(cx).text() por cada field. El value parseado va al
MemoryStore con tipo correcto.
- Reset de inputs tras submit (set_text("")) si no hay next_view —
flujo de alta consecutiva sin re-tipear.
- Hover states en sidebar y botones.
- Theme::install_default(cx) al inicio (requerido por text_input).
Wire: deps nuevas yahweh-widget-text-input + yahweh-theme.
Limitaciones que siguen:
- Action::Morphism: requiere cargar Manifest de nakui-core.
- Sin persistencia entre runs (wire con EventLog cuando daemon Nakui
exista).
- Widget input es simple (sin cursor positioning, selection, IME,
multilinea, copy/paste).
- Enter no envia (TextInputEvent::Confirmed no suscrito; submit va
por click). Trivial de wirear si se necesita.
Tests: 6 unit verdes. Visual requiere cargo run + manual.
Activacion:
NAKUI_MODULES_DIR=examples/nakui-modules cargo run -p nakui-ui
23 lines
789 B
TOML
23 lines
789 B
TOML
[package]
|
|
name = "nakui-ui"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
description = "Nakui — runtime GPUI de la metainterfaz: carga module.json desde un directorio, monta sidebar de menús + área principal con listas y formularios sin código compilado por módulo."
|
|
|
|
[dependencies]
|
|
nakui-core = { path = "../../modules/nakui/core" }
|
|
nakui-ui-schema = { path = "../../modules/nakui/ui-schema" }
|
|
yahweh-widget-text-input = { path = "../../modules/ui_engine/widgets/text_input" }
|
|
yahweh-theme = { path = "../../modules/ui_engine/libs/theme" }
|
|
gpui = { workspace = true }
|
|
serde_json = { workspace = true }
|
|
uuid = { workspace = true, features = ["serde"] }
|
|
|
|
[[bin]]
|
|
name = "nakui-ui"
|
|
path = "src/main.rs"
|
|
|
|
[dev-dependencies]
|
|
tempfile = { workspace = true }
|