Dropdown Menu
Um menu de ações ou opções disparado por um botão.
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 dropdown-menu do registry instala estes arquivos:
-
app/components/ui_component.rb -
app/components/ui/dropdown_menu_component.rb -
app/components/ui/dropdown_menu/trigger_component.rb -
app/components/ui/dropdown_menu/content_component.rb -
app/components/ui/dropdown_menu/item_component.rb -
app/components/ui/dropdown_menu/label_component.rb -
app/components/ui/dropdown_menu/separator_component.rb -
app/components/ui/dropdown_menu/group_component.rb -
app/components/ui/dropdown_menu/shortcut_component.rb -
app/components/ui/button_component.rb -
app/helpers/ui/dropdown_menu_helper.rb -
app/helpers/ui/button_helper.rb -
app/javascript/controllers/ui_dropdown_menu_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-dropdown-menu
implementa o padrão WAI-ARIA de menu: ↑/↓
movem o foco entre os itens (do último, voltam ao primeiro),
Home/End vão para as pontas,
digitar as primeiras letras leva ao item, e o menu fecha com
Esc, Tab ou um clique fora.
Ou renderize os componentes diretamente:
Composição
Exemplos
Referência da API
Todas as partes aceitam class /
class_name e
**attrs.
| Componente | Argumento | Padrão | Descrição |
|---|---|---|---|
DropdownMenu::Trigger |
variant, size |
:outline, :default |
Repassados ao Ui::ButtonComponent que ele renderiza. |
DropdownMenu::Content |
side, align |
:bottom, :start |
A posição do menu, feita com utilitários. |
DropdownMenu::Item |
variant |
:default |
:destructive destaca ações perigosas. |
DropdownMenu::Item |
inset, disabled |
false |
Recua o item para alinhar com os que têm ícone; um item desabilitado é pulado na navegação. |
DropdownMenu::Item |
tag |
:button |
Use :a com href para itens de link. |