Sheet
Estende o Dialog para exibir conteúdo complementar deslizando de uma borda da tela.
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 sheet
do registry instala estes arquivos:
-
app/components/ui_component.rb -
app/components/ui/sheet_component.rb -
app/components/ui/sheet/trigger_component.rb -
app/components/ui/sheet/content_component.rb -
app/components/ui/sheet/header_component.rb -
app/components/ui/sheet/footer_component.rb -
app/components/ui/sheet/title_component.rb -
app/components/ui/sheet/description_component.rb -
app/components/ui/sheet/close_component.rb -
app/components/ui/button_component.rb -
app/components/ui/icon_component.rb -
app/helpers/ui/sheet_helper.rb -
app/helpers/ui/button_helper.rb -
app/helpers/ui/icon_helper.rb -
app/javascript/controllers/ui_dialog_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
Mesmo contrato do Dialog (elemento
<dialog> +
controller ui-dialog),
com o painel ancorado em uma borda via side:.
Ou renderize os componentes diretamente:
Composição
Exemplos
Padrão
Um painel que desliza da direita, com formulário e footer.
Os quatro lados
side: :right, :left, :top ou :bottom controla a borda de origem e a animação.
Referência da API
Todas as partes aceitam class /
class_name e
**attrs.
| Componente | Argumento | Padrão | Descrição |
|---|---|---|---|
Sheet |
close_on_backdrop |
true |
Fecha ao clicar fora do painel. |
Sheet::Content |
side |
:right |
:right, :left, :top, :bottom — emite data-side. |
Sheet::Content |
show_close_button |
true |
Renderiza o botão X no canto superior direito. |
Sheet::Trigger / Sheet::Close |
variant, size |
:default / :outline |
Encapsulam Ui::ButtonComponent. |