Popover
Um painel sobreposto, disparado por um botão, para exibir conteúdo rico.
Instalação
O Shadwire segue o modelo open-code do shadcn/ui: o código-fonte do componente é copiado para a sua aplicação e passa a ser seu. Instale com a CLI:
O item popover
do registry instala estes arquivos:
-
app/components/ui_component.rb -
app/components/ui/popover_component.rb -
app/components/ui/popover/trigger_component.rb -
app/components/ui/popover/content_component.rb -
app/components/ui/button_component.rb -
app/helpers/ui/popover_helper.rb -
app/helpers/ui/button_helper.rb -
app/javascript/controllers/ui_popover_controller.js -
vendor/shadwire/shadwire.css
Este componente usa Stimulus: 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-popover
alterna o painel, move o foco para dentro dele ao abrir e o devolve ao gatilho ao
fechar por Esc. Clique fora também fecha.
O posicionamento usa apenas utilitários (side/align),
sem floating-ui.
Ou renderize os componentes diretamente:
Composição
Exemplos
Padrão
Painel não-modal: abre no clique, foca o conteúdo e fecha por clique fora ou Esc.
Dimensões
Defina as dimensões da camada.
Alinhamento
align: :start, :center ou :end desloca o painel no eixo cruzado.
Alinhado a start no eixo horizontal.
Alinhado a center no eixo horizontal.
Alinhado a end no eixo horizontal.
Referência da API
Todas as partes aceitam class /
class_name e
**attrs.
| Componente | Argumento | Padrão | Descrição |
|---|---|---|---|
Popover::Trigger |
variant, size |
:outline |
Button que abre/fecha; mantém aria-expanded. |
Popover::Content |
side |
:bottom |
:top, :right, :bottom, :left. |
Popover::Content |
align |
:center |
:start, :center, :end no eixo cruzado. |