Layouts¶
Extiende o compone la estructura visual de pantallas con LayoutBuilder y el hook register_layouts.
Cuándo usar¶
- Un plugin debe añadir nodos a un layout existente (banner, slot lateral).
- Compones dashboards con secciones, tabs o wizard sin ResourceBuilder completo.
Beta
register_layouts y LayoutRegistry están implementados en el framework. Aún no hay plugin de referencia en el monorepo; valida en tests antes de producción.
Hook register_layouts¶
from cortex_framework.layout.registry import LayoutRegistry
def register_layouts(registry: LayoutRegistry) -> None:
registry.append(
"panel.sidebar.footer",
(
{"type": "section", "config": {"title": "Ayuda"}},
),
module_id="mi-modulo",
sort=100,
)
Operaciones:
| Método | Efecto |
|---|---|
extend(handle, nodes, module_id, sort=1000) | Inserta nodos en un handle existente |
append(handle, nodes, module_id, sort=1000) | Añade al final del slot |
Handles y merge: ADR 016.
LayoutBuilder¶
Para dashboards manuales, LayoutBuilder genera nodos section, grids y anidación. Se usa junto a emit_dashboard() en plugins con UI programática (ej. booking).
Al componer dashboards, respeta la jerarquía de títulos: usa hide_title=True en emit_dashboard cuando el shell muestra el título de pantalla.
Validación¶
Los nodos deben ser JSON CUS válidos (type + config). El merge ocurre en bootstrap antes de servir manifests.
Siguiente paso¶
Configuración para pantallas de ajustes por panel.