Demonstração da Macro field()

Exemplos de todos os tipos de campos disponíveis na macro field().

Campos de Texto

Senha com Botão Toggle

Área de Texto

Descreva em detalhes o que você precisa.

Select (Dropdown)

Checkbox

Checkbox Switch

Radio Buttons (Padrão)

Radio Buttons (Horizontal)

Radio Buttons (Button Group)

Radio Buttons (Button Group com Ícones)

Selecione o tipo de conta que deseja criar

Máscaras de Digitação

Máscaras de Digitação

As máscaras formatam automaticamente o valor durante a digitação. Padrões: 0=número, A=maiúscula, a=minúscula

Apenas números serão aceitos
Digite no formato DD/MM/AAAA
Formato: 3 letras + hífen + 4 números
Formato: ABC-1D23
MM/AA

Máscara com Unmask

Quando unmask=true, o valor enviado no formulário será sem formatação.

Valor enviado: apenas números, sem pontos e hífen

Máscara com Eventos JavaScript

Ao sair do campo, simula busca de endereço (veja o console)

Data e Hora (Nativos do HTML5)

Campos Numéricos

Campos Decimais (com formatação automática)

Campos Decimais

Formatam automaticamente valores decimais com separadores de milhar (ponto) e decimais (vírgula), seguindo o padrão brasileiro. Exemplo: 1.234,56

Exemplos Básicos

2 casas decimais com separador de milhares
Com prefixo R$
Com sufixo %
3 casas decimais com sufixo kg

Opções Avançadas

Permite valores negativos
Sem separador de milhares
1 casa decimal (ex: 9,5)
Área em metros quadrados
Valor obrigatório com prefixo monetário

Campo com Erro (Simulação)

Este campo contém um erro de validação.

Como Usar a Macro

Importe a macro no topo do seu template:

{% from "macros/form_fields.html" import field %}

Exemplos de uso:

{{ field(name='email', label='E-mail', type='email', required=true) }}

{{ field(name='senha', label='Senha', type='password',
         append_icon='bi-eye', append_button_onclick="togglePassword('senha')") }}

{{ field(name='perfil', label='Perfil', type='select',
         options={'Admin': 'Administrador', 'Cliente': 'Cliente'}) }}

{{ field(name='ativo', label='Ativo', type='checkbox', checkbox_style='switch') }}

{{ field(name='tipo', label='Tipo', type='radio', radio_style='buttons',
         options={'1': 'Opção 1', '2': 'Opção 2'}) }}

{# Radio horizontal #}
{{ field(name='tamanho', label='Tamanho', type='radio', radio_layout='horizontal',
         options={'P': 'Pequeno', 'M': 'Médio', 'G': 'Grande'}) }}

{# Radio com ícones #}
{{ field(name='perfil', label='Perfil', type='radio', radio_style='buttons',
         options={'Cliente': 'Comprador', 'Vendedor': 'Vendedor'},
         radio_icons={'Cliente': 'bi-cart3', 'Vendedor': 'bi-shop'}) }}

{# Máscaras de digitação #}
{{ field(name='cpf', label='CPF', mask='000.000.000-00') }}

{{ field(name='telefone', label='Telefone', mask='(00) 00000-0000', unmask=true) }}

{{ field(name='cep', label='CEP', mask='00000-000',
         onblur='buscarEndereco(this.value)') }}

{# Campos decimais #}
{{ field(name='preco', label='Preço', type='decimal', decimal_prefix='R$ ') }}

{{ field(name='peso', label='Peso', type='decimal', decimal_suffix=' kg', decimal_places=3) }}

{{ field(name='temperatura', label='Temperatura', type='decimal',
         decimal_suffix=' °C', allow_negative=true) }}

{{ field(name='valor_simples', label='Valor', type='decimal', show_thousands=false) }}

A macro busca automaticamente:

  • Erros: de erros[name] (se disponível no contexto)
  • Valores: de dados[name] (se value não for fornecido)
Máscaras Disponíveis

Padrões de máscara:

  • 0 = dígito numérico (0-9)
  • A = letra maiúscula (A-Z)
  • a = letra minúscula (a-z)
  • Qualquer outro caractere = literal (inserido automaticamente)

Máscaras comuns:

  • CPF: 000.000.000-00
  • CNPJ: 00.000.000/0000-00
  • Telefone: (00) 00000-0000
  • Telefone Fixo: (00) 0000-0000
  • CEP: 00000-000
  • Data: 00/00/0000
  • Hora: 00:00
  • Placa Antiga: AAA-0000
  • Placa Mercosul: AAA-0A00
  • Cartão: 0000 0000 0000 0000
  • CVV: 000 ou 0000
  • Validade Cartão: 00/00
Parâmetros da Macro

Parâmetros básicos:

  • name - Nome do campo (obrigatório)
  • label - Texto do label (obrigatório)
  • type - Tipo do campo (text, email, password, textarea, select, checkbox, radio, etc.)
  • value - Valor inicial (se não fornecido, busca de dados[name])
  • required - Campo obrigatório (padrão: false)
  • disabled - Campo desabilitado (padrão: false)
  • readonly - Campo somente leitura (padrão: false)

Radio buttons:

  • radio_style - Estilo dos radio: 'default' ou 'buttons'
  • radio_layout - Layout para radio default: 'vertical' (padrão) ou 'horizontal'
  • radio_icons - Dict com ícones Bootstrap para radio buttons: {'valor': 'bi-icon'}

Checkbox:

  • checkbox_style - Estilo do checkbox: 'default' ou 'switch'

Máscaras de digitação:

  • mask - Padrão da máscara (ex: '000.000.000-00')
  • unmask - Se true, envia valor sem formatação (padrão: false)

Campos decimais (type='decimal'):

  • decimal_places - Número de casas decimais (padrão: 2)
  • show_thousands - Exibir separador de milhares (padrão: true)
  • allow_negative - Permitir valores negativos (padrão: false)
  • decimal_prefix - Prefixo (ex: 'R$ ')
  • decimal_suffix - Sufixo (ex: ' kg', ' %')

Eventos JavaScript:

  • oninput, onchange, onblur, onfocus, onkeyup, onkeydown, onpaste - Eventos JavaScript

Outros:

  • attributes - Dict com atributos HTML extras (minlength, maxlength, pattern, data-*, etc.)
  • append_icon - Ícone Bootstrap para botão anexado (ex: 'bi-eye')
  • help_text - Texto de ajuda abaixo do campo
  • class_extra - Classes CSS adicionais
  • wrapper_class - Classes para o wrapper do campo