Pular para o conteúdo principal

Condicionais

Campos e containers podem ser exibidos, ocultados ou ter seus valores modificados com base no estado do formulário, usando expressões condicionais.

Condição básica (folha simples)

{
"nome": "outro_pais",
"tipo": "texto",
"condicional": {
"campoId": "pais",
"operador": "igual",
"valor": "Outro"
}
}

O campo outro_pais só é visível quando pais === "Outro".

Operadores disponíveis

OperadorSignificado
igual==
diferente!=
vaziovalor está vazio / falsy
naoVaziovalor não está vazio
contemarray inclui / string inclui
naoContemarray não inclui
maiorQue>
menorQue<
maiorOuIgual>=
menorOuIgual<=

Grupo AND

Todas as condições precisam ser verdadeiras:

{
"condicional": {
"and": [
{ "campoId": "tipo_cliente", "operador": "igual", "valor": "PJ" },
{
"campoId": "faturamento_anual",
"operador": "maiorQue",
"valor": 1000000
}
]
}
}

Grupo OR

Pelo menos uma condição precisa ser verdadeira:

{
"condicional": {
"or": [
{ "campoId": "canal", "operador": "igual", "valor": "email" },
{ "campoId": "canal", "operador": "igual", "valor": "sms" }
]
}
}

Grupos aninhados

Grupos podem ser aninhados para criar lógica complexa:

{
"condicional": {
"and": [
{
"or": [
{ "campoId": "plano", "operador": "igual", "valor": "pro" },
{ "campoId": "plano", "operador": "igual", "valor": "enterprise" }
]
},
{ "campoId": "aceite_termos", "operador": "igual", "valor": true }
]
}
}

Lendo de externalData

Use source: "evento" para comparar contra um valor de externalData:

{
"condicional": {
"campoId": "evento.modoEdicao",
"operador": "igual",
"valor": true,
"source": "evento"
}
}

O renderer vai ler externalData["evento.modoEdicao"] para a comparação.

Condicionais no nível do container

Aplique uma condição a um FormContainer inteiro para exibir/ocultar uma seção:

{
"titulo": "Endereço Comercial",
"id": "secao_comercial",
"ordem": 2,
"condicional": {
"campoId": "tipo_cliente",
"operador": "igual",
"valor": "PJ"
},
"campos": [
{
"nome": "cnpj",
"tipo": "texto",
"label": "CNPJ",
"ordem": 1,
"obrigatorio": true
},
{
"nome": "razao_social",
"tipo": "texto",
"label": "Razão Social",
"ordem": 2,
"obrigatorio": true
}
]
}

Quando o container está oculto, todos os seus campos são excluídos da validação e do envio.

setValues — autopreenchimento de outros campos

Use setValues para preencher automaticamente outros campos quando uma condição torna-se verdadeira:

{
"nome": "mesmo_endereco",
"tipo": "switch",
"label": "Cobrança igual à entrega",
"setValues": [
{ "campo": "cep_cobranca", "valor": null },
{ "campo": "cidade_cobranca", "valor": null }
],
"condicional": {
"campoId": "mesmo_endereco",
"operador": "igual",
"valor": true
}
}

O valor suporta strings literais, números, booleanos ou null para limpar o campo.

clearedValue — resetar valor ao ocultar

Define o valor aplicado ao campo quando ele é ocultado por uma condicional:

{
"nome": "desconto_parceiro",
"tipo": "number",
"condicional": {
"campoId": "eh_parceiro",
"operador": "igual",
"valor": true
},
"clearedValue": 0
}

Sem clearedValue, o valor anterior do campo permanece mesmo após ser ocultado. Defina como null para apagar explicitamente:

{
"nome": "numero_filhos",
"clearedValue": null
}