1# llimphi-widget-accordion
2
3*Read this in English: [README.md](README.md).*
4
5Secciones plegables (expansion panels).
6
7Cabecera clicable con chevron y cuerpo que aparece debajo. Dos modos: **acordeón**
8(abrir una cierra la anterior) o **panel múltiple** (cada una por su cuenta).
9
10Como el resto del catálogo es stateless: qué secciones están abiertas vive en el
11`Model` del caller. La máquina de «qué queda abierto tras este click» es
12`alternar`, pura y testeable — escribirla en cada app es como se termina con dos
13secciones abiertas en un acordeón que prometía una.
14
15El cuerpo **no se construye si la sección está cerrada**: se recibe como
16`Fn() -> View`, no como `View` ya armado. En un acordeón de veinte secciones con
17formularios adentro, armar los diecinueve que no se ven es el costo real del
18widget, y es justo el que se puede no pagar.
19
20---
21
22Parte de **llimphi** — ver [llimphi](../../LEEME.md).
LEEME.md
llimphi-widget-accordion
Read this in English: README.md.
Secciones plegables (expansion panels).
Cabecera clicable con chevron y cuerpo que aparece debajo. Dos modos: acordeón
(abrir una cierra la anterior) o panel múltiple (cada una por su cuenta).
Como el resto del catálogo es stateless: qué secciones están abiertas vive en el
Model del caller. La máquina de «qué queda abierto tras este click» es
alternar, pura y testeable — escribirla en cada app es como se termina con dos
secciones abiertas en un acordeón que prometía una.
El cuerpo no se construye si la sección está cerrada: se recibe como
Fn() -> View, no como View ya armado. En un acordeón de veinte secciones con
formularios adentro, armar los diecinueve que no se ven es el costo real del
widget, y es justo el que se puede no pagar.
Parte de llimphi — ver llimphi.