mad-display-field
Read-only formatado para views de detalhe.
Campo somente-leitura para views de detalhe. Exibe valores formatados com label uppercase, sem borda nem input. Integra com form->set() / form->fill() via MadRenderContext.
Props
| Prop | Tipo | Default | Descricao |
|---|---|---|---|
| name | string | '' | Nome do campo (le do MadRenderContext) |
| label | string | '' | Label superior |
| value | string | null | Valor direto (override do context) |
| format | string | '' | Formatacao: money:R$, date, datetime, email, phone, url, cpf, cnpj |
| badge | string | '' | Mapa de badges: val:variant:label|... (mesma sintaxe do <mad-col>) |
| icon | string | '' | Icone Lucide ao lado do label |
| variant | string | '' | Cor do valor: success, warning, danger, info, primary |
| copyable | bool | false | Botao copiar ao hover |
| expandable | bool | false | Trunca em 3 linhas com "ver mais" |
| empty | string | '—' | Texto quando valor vazio |
| hint | string | '' | Texto de ajuda abaixo do valor |
| width | string | '' | Largura do campo (valor CSS: '200px', '50%') |
| max-width | string | '' | Largura maxima (maxWidth internamente) |
| class | string | '' | Classes CSS extras |
Uso basico (valor via form->set)
// Controller
$this->form->set('nome', $cliente->nome);
$this->form->set('email', $cliente->email);
<mad-display-field name="nome" label="Nome" />
<mad-display-field name="email" label="Email" format="email" />
Valor direto (sem form->set)
<mad-display-field label="Razao Social" :value="$empresa->razao_social" />
Formatacoes disponiveis
{{-- Monetario --}}
<mad-display-field name="valor" label="Valor" format="money:R$" />
{{-- Data --}}
<mad-display-field name="dt_nascimento" label="Nascimento" format="date" />
{{-- Data e hora --}}
<mad-display-field name="dt_criacao" label="Criado em" format="datetime" />
{{-- Email (link mailto) --}}
<mad-display-field name="email" label="Email" format="email" />
{{-- Telefone (link tel, DDI +55 fixo) --}}
<mad-display-field name="telefone" label="Telefone" format="phone" />
{{-- URL (link externo) --}}
<mad-display-field name="site" label="Website" format="url" />
{{-- CPF (xxx.xxx.xxx-xx) --}}
<mad-display-field name="cpf" label="CPF" format="cpf" copyable />
{{-- CNPJ (xx.xxx.xxx/xxxx-xx) --}}
<mad-display-field name="cnpj" label="CNPJ" format="cnpj" copyable />
Badge (status colorido)
<mad-display-field name="status" label="Status"
badge="A:success:Ativo|I:danger:Inativo|P:warning:Pendente" />
Com icone e copy-to-clipboard
<mad-display-field name="cpf" label="CPF" icon="id-card" format="cpf" copyable />
O botao de copiar aparece no hover e copia o valor cru (sem formatacao).
Texto longo com expandir/recolher
<mad-display-field name="observacoes" label="Observacoes" expandable />
Trunca em 3 linhas com botao "ver mais" / "ver menos".
Variant (cor no valor)
<mad-display-field name="saldo" label="Saldo" format="money:R$" variant="success" />
<mad-display-field name="divida" label="Divida" format="money:R$" variant="danger" />
Layout em grid
<mad-form-grid :cols="3">
<mad-display-field name="nome" label="Nome" />
<mad-display-field name="email" label="Email" format="email" />
<mad-display-field name="telefone" label="Telefone" format="phone" />
</mad-form-grid>
Com hint
<mad-display-field name="codigo" label="Codigo interno" hint="Gerado automaticamente pelo sistema" />
Dentro de form-section
<mad-form-section title="Dados do cliente" icon="user">
<mad-form-grid :cols="2">
<mad-display-field name="nome" label="Nome" icon="user" />
<mad-display-field name="email" label="Email" format="email" icon="mail" />
</mad-form-grid>
<mad-display-field name="obs" label="Observacoes" expandable />
</mad-form-section>
Quando usar display-field vs input-field readonly
| Cenario | Usar |
|---|---|
| View de detalhe (somente visualizacao) | <mad-display-field> |
| Campo que pode ser editado mas esta temporariamente bloqueado | <mad-input-field ... readonly /> |
| Formulario misto (alguns campos editaveis, outros nao) | <mad-input-field ... readonly /> para os bloqueados |
| Pagina/drawer de visualizacao sem nenhum campo editavel | <mad-display-field> para todos |
NUNCA fazer
{{-- ERRADO: usar input readonly para views de detalhe --}}
<mad-input-field name="nome" label="Nome" readonly />
{{-- CERTO: usar display-field --}}
<mad-display-field name="nome" label="Nome" />
{{-- ERRADO: montar display manualmente com HTML --}}
<div>
<span class="label">Nome</span>
<span>{{ $nome }}</span>
</div>
{{-- CERTO --}}
<mad-display-field name="nome" label="Nome" />
{{-- ERRADO: montar o valor formatado manualmente em PHP e ecoar --}}
$display = '<span style="font-weight:bold;color:#333;">' . $value . '</span>';
echo $display;
{{-- CERTO --}}
<mad-display-field name="campo" label="Label" />