Pular para o conteúdo

NumberField

Campo numérico com botões de incremento, formatação e limites.

O NumberField recebe um número com validação de limites e formatação por locale, como o prazo de uma rota ou o frete. Para escolher aproximadamente com o dedo, use Slider; os dois combinam bem lado a lado.

import { Label, NumberField } from "@rastreio-x/ui";

Padrão

Informe minValue e maxValue quando existirem limites reais. O grupo reúne os botões e o campo.

Passo e formato

step define o incremento; formatOptions aceita opções de Intl.NumberFormat, como moeda em reais.

Estados

Desabilitado e inválido. A mensagem de erro cita o intervalo permitido.

Anatomia

  • NumberField.Group: o conjunto de campo e botões.
  • NumberField.DecrementButton e NumberField.IncrementButton: subtrai e soma um step.
  • NumberField.Input: o campo editável.

Propriedades

Raiz (NumberField):

Campo (NumberField.Input):

Animações

Sem animação própria além da troca de cor no hover e no foco dos botões. A folha global da fachada reduz as transições com prefers-reduced-motion.

Acessibilidade

  • Papel spinbutton com aria-valuemin, aria-valuemax e aria-valuenow.
  • Setas para cima e para baixo incrementam; Page Up e Page Down saltam; Home e End vão aos limites.
  • Os botões de incremento têm nome acessível localizado (pelo I18nProvider pt-BR).
  • Número digitado respeita o formato do locale (vírgula decimal em pt-BR).

Boas práticas

Faça

Limites reais, unidade no rótulo e erro que cita o intervalo: Use um valor entre 25 e 40 dias.

Evite

Campo numérico sem unidade, ou limites que só aparecem depois do erro.
  • Mostre a unidade no rótulo ou no formato (dias, R$).
  • Ofereça Slider quando a precisão não for crítica.
  • Para códigos e identificadores (CEP, telefone), use TextField com inputMode.

Relacionados

  • Slider para ajustar visualmente a mesma grandeza.
  • TextField para texto e identificadores.
  • Select para escolher entre valores predefinidos.