diff --git a/docs/01-builder-fields.md b/docs/01-builder-fields.md index b04b4d9..ab11838 100644 --- a/docs/01-builder-fields.md +++ b/docs/01-builder-fields.md @@ -294,6 +294,54 @@ Recomendación de uso: - Reparto habitual: **Contenido** (textos e imágenes), **Estilos** (colores, alineación, bordes), **Ajustes** (opciones de comportamiento, límites, enlaces). - Mantén los nombres de grupo consistentes entre módulos y en español. Son literales: `Estilos` y `estilos` generan dos pestañas distintas. +## Mostrar u ocultar campos y pestañas (`data-field-show`) + +Un campo o una pestaña entera pueden depender del valor de otro campo del mismo módulo. Se declara con dos atributos, que viajan al `builder.json` por el mismo mecanismo genérico que `data-field-group` (`customDataField.show` y `customDataField['group-show']`): + +- `data-field-show="campo=valor"` — en el elemento del campo que se quiere condicionar. +- `data-field-group-show="campo=valor"` — en **una** var del grupo; condiciona la pestaña completa. + +Gramática: + +| Condición | Se muestra cuando | +|-----------|-------------------| +| `modo=1` | el valor es `1` | +| `modo=1,2` | el valor es `1` o `2` | +| `modo=` | el campo está **vacío** — es la clave de la primera opción de todo `list` | +| `modo!=1` | el valor NO es `1` | +| `modo=1;otro=2` | se cumplen ambas (AND) | + +El campo se referencia por su **nombre de variable**, no por su label: se aplican las [reglas de nomenclatura](#reglas-de-nomenclatura-de-variables), así que `Mostrar Estilos` se referencia como `mostrarestilos` y `Título` como `ttulo` (los acentos se borran, no se transliteran). Los valores no pueden contener coma ni punto y coma. + +```html +
+ +
+
+ + +
+
+
+
+
+``` + +Comportamiento del panel: +- **Ocultar no borra.** El valor sigue guardado y sigue llegando al Twig; si el usuario vuelve a mostrar el campo, lo escrito sigue ahí. +- **Por eso la plantilla debe repetir la condición con `c-if`.** Ocultar el campo en el panel NO lo quita de la web: si `Texto de Estilos` no debe pintarse cuando `mostrarestilos` está a `0`, el `index-base.tpl` necesita su propio `c-if="mostrarestilos = '1'"`. +- Una pestaña se oculta sola cuando todos sus campos han quedado ocultos por su `show`; en la mayoría de casos basta con condicionar los campos y no hace falta `data-field-group-show`. +- Si varias vars del mismo grupo declaran `data-field-group-show`, **gana la primera** y las demás se ignoran. +- Si una condición apunta a un campo que no existe (typo, o un label renombrado que cambió el nombre de variable), el campo **se muestra igualmente** y el aviso queda en la consola del navegador. Nunca desaparece en silencio. +- Dentro de `multiv2` la condición se evalúa contra los valores **de ese item**, no contra los del módulo. +- En modo traducción las condiciones se evalúan contra los valores del **idioma base**. + ## Atributos Acai ### `c-if` — Renderizado condicional