Dynamic List y Selects

Hola a todos, me ayudarían a resolver esta duda.

Tengo un formulario donde tengo en una dynamic list dos elementos select, de los cuales quiero condicionar el segundo que dependa del primer valor.
Al agregar un nuevo “Repeatable”, se borran las lógicas.

Hola! Te ayudo con tu consulta sobre Dynamic Lists y elementos Select condicionales.

Clasificación de tu consulta

Esta es una pregunta general sobre cómo implementar lógica condicional en formularios con Dynamic Lists.

Solución para Select condicionales en Dynamic Lists

Basándome en la documentación de Camunda Forms, aquí tienes la forma correcta de implementar esta funcionalidad:

1. Estructura básica

  • Usa un Dynamic List con un path que vincule un array de elementos (ej: items[])
  • Coloca ambos componentes Select dentro del Dynamic List
  • Cada campo hijo se convierte en una propiedad de cada elemento de la lista

2. Configuración de la lógica condicional

Para el segundo Select que depende del primero:

En las propiedades del segundo Select:

  • Usa Hide if o Read only con expresiones FEEL
  • Ejemplo: =item.firstSelect = null or item.firstSelect = ""
  • O para mostrar solo cuando el primer select tenga un valor específico: =item.firstSelect != "categoria1"

Para opciones dinámicas:

  • Configura Options source como valuesExpression
  • Usa expresiones FEEL que referencien el valor del primer select
  • Ejemplo: =if item.categoria = "electronicos" then ["laptop", "telefono"] else if item.categoria = "ropa" then ["camisa", "pantalon"] else []

3. Problema con elementos repetibles

El comportamiento que describes (que se “borran las lógicas” al agregar nuevos elementos) puede deberse a:

Posibles soluciones:

  1. Inicializar valores por defecto en los datos de entrada para que las condiciones se evalúen correctamente
  2. Usar expresiones FEEL robustas que manejen valores nulos o indefinidos
  3. Configurar el contexto de datos apropiadamente antes de inicializar el formulario

4. Ejemplo práctico

// Estructura de datos sugerida
{
  "items": [
    {
      "categoria": "",
      "producto": ""
    }
  ]
}

Configuración del segundo Select:

  • Key: producto
  • Hide if: =item.categoria = null or item.categoria = ""
  • Options source: valuesExpression
  • Values expression: =if item.categoria = "electronicos" then [{"label": "Laptop", "value": "laptop"}, {"label": "Teléfono", "value": "telefono"}] else []

Recursos adicionales

¿Podrías compartir más detalles sobre cómo tienes configurados actualmente tus Select y qué expresiones FEEL estás usando? Esto me ayudaría a darte una solución más específica.