Pular para o conteúdo

DocsFormulárioSelect

Formulário

Select

Lista de opções com teclado completo, tom de status por opção e evento de troca.

data-u="select"

Exemplo

Instalação

Select vem no pacote completo, em unslop.css e unslop.js:

curl -fsSL unslop.leallabs.dev/i | sh

Sem build O add por nome serve pra gráficos e blocos. Componentes com JS moram em unslop.js, que monta sozinho todo data-u da página.

Props

Vão em data-u-props, como JSON.

PropTipoPadrãoO que faz
optionsarray[]Strings ou objetos {v, l, tone}. v é o valor, l o texto, tone pinta um ponto: ok, warn, err, info ou accent.
valuestringprimeira opçãoValor que abre selecionado. Compara com v (ou com o texto, quando a opção é string).
labelstringsem padrãoNome do botão e da lista (aria-label).

Classes e variantes

ClasseO que faz
u-select--smNo host: versão compacta, usada dentro de tabela.

Acessibilidade e teclado

Estado e papéis

OndeAtributoO que diz
botãoaria-haspopup="listbox", aria-expandedDiz que abre uma lista e se ela está aberta.
botãoaria-controls, aria-activedescendantLigam o botão à lista e à opção ativa enquanto aberta.
lista e opçõesrole="listbox", role="option", aria-selectedA opção escolhida tem aria-selected="true".

Teclado

TeclaFaz
Enter, Espaço ou setasabrem a lista
Seta para cima e para baixoandam pelas opções
Home e Endprimeira e última opção
Letrapula pra próxima opção que começa com ela
Enter ou Espaçoescolhem e fecham
Escfecha e volta o foco ao botão
Tabfecha e segue

Eventos e API

EventodetailQuando
u:change{ value, label, index }Ao escolher uma opção diferente da atual.

Todo evento sobe pela página (bubbles). Escute no próprio elemento: el.addEventListener("u:change", (e) => e.detail).

el._u.value lê o valor, el._u.set(v) troca sem emitir evento, el._u.close() fecha.

Digite pra buscar. Setas escolhem, Enter abre.