Docs›Componentes (Admin)›mad-number-field
Componentes (Admin)

mad-number-field

Input number nativo HTML5.

Campo numerico nativo HTML5 — renderiza um <input type="number"> puro, sem mascara e sem estado Alpine. O valor fica direto no input, com a UX padrao do browser (setinhas de incremento, scroll para alterar, validacao min/max/step nativa do HTML5).

Para decimal formatado em pt-BR (peso, cotacao, fator) use <mad-numeric-field>. Para valores monetarios (mascara reversa estilo calculadora) use <mad-money-field>.

Props

Prop Tipo Default Descricao
name string '' Nome do campo (obrigatorio)
label string '' Label
width string '' Largura fixa do campo (CSS, ex: 120px)
max-width string '' Largura maxima do campo (CSS)
prefix string '' Addon esquerdo (ex: R$, %)
suffix string '' Addon direito (ex: kg, un)
placeholder string '' Placeholder (sem default — vazio nao mostra nada)
min string '' Valor minimo (atributo HTML min)
max string '' Valor maximo (atributo HTML max)
step string '' Incremento (ex: 0.01, 0.001)
hint string '' Texto de ajuda
error string '' Mensagem de erro
required bool false Campo obrigatorio
disabled bool false Campo desabilitado
readonly bool false Campo somente leitura
align string '' Alinhamento do valor digitado: left (padrao), center ou right (comum em valores)
attrs string '' Atributos HTML extras

Binding automatico (mad:model implicito)

Quando name e informado e attrs nao contem mad:model nem data-mad-model, o componente injeta automaticamente value="..." (lido do contexto do MadWire) e mad:model="{name}" no input — nao e preciso declarar mad:model manualmente, basta informar name. Para customizar o binding (ex: handler de evento proprio), passe seu mad:model via attrs.

Validacao

O componente registra o campo no MadFormRegistry (label, required, min, max, step) para validacao do mad-form pai.

Exemplos

{{-- Quantidade inteira --}}
<mad-number-field name="quantidade" label="Quantidade" min="1" step="1" required />

{{-- Decimal com step fino --}}
<mad-number-field name="peso" label="Peso (kg)" suffix="kg" step="0.001" min="0" />

{{-- Percentual --}}
<mad-number-field name="percentual" label="Percentual" suffix="%" min="0" max="100" step="0.01" />

{{-- Ordem --}}
<mad-number-field name="ordem" label="Ordem" min="1" step="1" />

{{-- Largura fixa --}}
<mad-number-field name="qtd" label="Qtd" width="120px" min="0" step="1" />

Quando usar number-field vs numeric-field vs money-field

Preciso... Usar
Quantidade inteira ou decimal sem mascara (peso, ordem, percentual com step) <mad-number-field>
Decimal formatado pt-BR nao-monetario (cotacao, fator, medida) <mad-numeric-field>
Valor monetario (preco, total, desconto) <mad-money-field>

Ver numeric-field.md e money-field.md.

NUNCA fazer

{{-- ERRADO: input nativo cru, fora do MadForm --}}
<input type="number" name="valor" step="0.01">

{{-- CERTO --}}
<mad-number-field name="valor" label="Valor" step="0.01" />
{{-- ERRADO: number-field para dinheiro — sem mascara, browser mostra setinhas, UX ruim --}}
<mad-number-field name="preco" label="Preco" prefix="R$" step="0.01" />

{{-- CERTO: money-field tem mascara reversa pt-BR --}}
<mad-money-field name="preco" label="Preco" />
{{-- ERRADO: input-field (texto livre) para valor numerico --}}
<mad-input-field name="quantidade" label="Quantidade" />

{{-- CERTO --}}
<mad-number-field name="quantidade" label="Quantidade" min="1" step="1" />