Select
Um botão que abre uma lista de opções para escolher.
Instalação
O Shadwire segue o modelo open code do shadcn/ui: o código-fonte do componente é copiado para o seu app e passa a ser seu. Instale com a CLI:
O item select do registry instala estes arquivos:
-
app/components/ui_component.rb -
app/components/ui/select_component.rb -
app/components/ui/select/trigger_component.rb -
app/components/ui/select/value_component.rb -
app/components/ui/select/content_component.rb -
app/components/ui/select/item_component.rb -
app/components/ui/select/group_component.rb -
app/components/ui/select/label_component.rb -
app/components/ui/select/separator_component.rb -
app/components/ui/icon_component.rb -
app/helpers/ui/select_helper.rb -
app/helpers/ui/icon_helper.rb -
app/javascript/controllers/ui_select_controller.js -
vendor/shadwire/shadwire.css
Este componente usa Stimulus, então a aplicação precisa de importmap-rails e stimulus-rails com carregamento automático de controllers.
Ainda não instalou a CLI? gem install shadwire e depois shadwire init.
Uso
O controller ui-select
segue o padrão select-only combobox da APG: o foco permanece no gatilho
(role="combobox") e a opção
ativa é anunciada por aria-activedescendant.
A seleção atualiza um input hidden e dispara
change.
Ou renderize os componentes diretamente:
Composição
Exemplos
Padrão
Um combobox no padrão APG: o foco fica no gatilho, as setas e a digitação navegam, e a opção ativa usa aria-activedescendant.
Grupos
Agrupe opções com label e separador; itens podem ser desabilitados.
Com form_with
O valor vai num input hidden (name:). O required nativo não funciona aqui, então valide no servidor.
Referência da API
Todas as partes aceitam class /
class_name e
**attrs.
| Componente | Argumento | Padrão | Descrição |
|---|---|---|---|
Select |
name |
nil |
Nome do input hidden para submissão em formulários. |
Select |
value |
nil |
Valor inicialmente selecionado. |
Select |
placeholder |
nil |
Texto exibido quando nada está selecionado. |
Select::Trigger |
size |
:default |
:default ou :sm. |
Select::Item |
value: (obrigatório), disabled |
— | Valor da opção; itens desabilitados são pulados na navegação. |