Pular para o conteúdo
// visualizar em
salvo em todas as páginas

Native select

Seleção nativa — o select do próprio navegador, com o visual do estilo. Ideal para listas longas e conhecidas e no celular, onde abre o seletor do sistema.

Feito com HTMLPadrão Native <select>Componente clienteCódigo ↗
minimal · light · #3fa34d
disabled

Instalação

Configure o Camaleo uma vez (Instalação) e importe o que precisar.

import { NativeSelect, Label } from "@camaleo/react";

Anatomia

Um invólucro em volta de um <select> de verdade e de uma seta. As opções são elementos <option> e <optgroup> comuns.

selectBrasilicon
[data-slot="native-select"][data-slot="native-select"] > select · [data-slot="icon"]<option> (children)

Exemplos

Cada exemplo é um arquivo real que você pode copiar. Todos usam o estilo, o modo e a cor escolhidos na barra acima.

minimal · light · #3fa34d

E-mails e notas fiscais são enviados neste idioma.

Com descrição

Dentro de um Field, o FieldDescription fica ligado ao select e é lido depois do rótulo.

Opção de placeholder

Uma primeira opção vazia e desativada, mais required, faz a pessoa escolher em vez de ficar com um palpite seu.

Grupos de opções

O <optgroup> divide uma lista longa em seções com nome, e o leitor de tela anuncia o grupo.

Lista longa

Oitenta anos cabem bem: a pessoa digita "19" para pular, e o celular abre a própria roleta.

À vista · total R$ 1.200,00

Parcelamento

Escolha o número de parcelas. Um value controlado atualiza o resumo, e o aria-live lê o novo valor.

Definida pelo país de cobrança. Fale com o suporte para mudar.

Desativado, com o motivo

Um select desativado não recebe foco, então coloque o motivo em texto visível logo ao lado.

Escolha como quer receber o pedido.

Obrigatório, com erro

Escolha uma forma de envio e o erro some. O Field invalid marca o select e liga o FieldError a ele.

Em linha

Numa barra de ferramentas, style={{ width: "auto" }} deixa ele do tamanho da maior opção, ao lado do rótulo.

Em contexto

São pedaços inteiros de interface para copiar, no estilo que você escolheu.

1–25 de 312

Rodapé de tabelaNativeSelect · Label · IconButton · Text
Filtros
Painel de filtrosFieldset · NativeSelect · Button

Entrega

EntregaCard · Field · NativeSelect · Input · Button

Boas práticas

FaçaListas longas e conhecidas.

Países, estados, anos: a pessoa passa o olho ou digita para achar.

EviteUm select para sim ou não.

Duas opções escondidas atrás de um clique. Use um Switch, um Checkbox ou um RadioGroup.

FaçaComece com uma opção neutra.

Em respostas que importam, "Escolha um motivo…" faz a pessoa escolher de fato.

EviteUma resposta já marcada.

A pessoa pula o campo, e você coleta o seu padrão como se fosse a resposta dela.

Props

O NativeSelect recebe todos os atributos de <select>. Estes são os mais usados:

PropriedadeTipoPadrãoDescrição
autoCompletestring—Deixa o navegador preencher, por exemplo "country" ou "address-level1".
disabledboolean—Desativa o select e o tira da ordem de tabulação.
namestring—Identifica o valor no envio do formulário.
requiredboolean—O formulário não é enviado enquanto a opção escolhida tiver valor vazio.
valuestring—O value da opção escolhida, controlado ou não.
onChange(event: ChangeEvent<HTMLSelectElement>) => void—Roda quando a pessoa escolhe outra opção. Leia event.target.value.
defaultValuestring—O value da opção escolhida, controlado ou não.

className e style vão para o <span> de fora, para você definir o tamanho; os outros atributos vão para o <select>.

Styling hooks

Mude o visual sem copiar o componente: use os atributos ou defina os tokens num elemento pai, num estilo ou no próprio select.

Atributos

data-slot"native-select" (o invólucro)
:disabledno select interno quando desativado
:focusno select interno enquanto focado
data-invalidno select interno quando o Field está inválido

Tokens que ele lê

Cor

--cml-border-control--cml-danger--cml-fg--cml-field-bg--cml-field-border-sides--cml-field-shadow--cml-focus-ring

Forma e tamanho

--cml-field-border-width--cml-field-height--cml-field-padding--cml-font-size-field--cml-radius-control--cml-radius-field

Tipografia e movimento

--cml-duration-fast--cml-ease-standard--cml-font-field

Só deste componente

--cml-corner-shape--cml-disabled-opacity
/* select sem borda dentro de uma barra de tabela */
.toolbar [data-slot="native-select"] > select {
  --cml-border-control: transparent;
}

Acessibilidade

TabLeva o foco ao select.
Arrow Up · Arrow DownTroca a opção escolhida (no macOS, abre a lista).
Alt + Arrow DownAbre a lista de opções.
A–ZPula para a próxima opção que começa com a letra digitada.

Relacionados

Esta página foi útil? · Editar esta página no GitHub