Class: Shadcn::DialogComponent

Inherits:
BaseComponent
  • Object
show all
Defined in:
app/components/shadcn/dialog_component.rb

Overview

Dialog component for modal windows Matches shadcn/ui Dialog component Uses Stimulus for interactivity

Examples:

Basic dialog

<%= render Shadcn::DialogComponent.new do |dialog| %>
  <% dialog.with_trigger do %>
    <%= render Shadcn::ButtonComponent.new(variant: :outline) { "Open Dialog" } %>
  <% end %>
  <% dialog.with_content do |content| %>
    <% content.with_header do %>
      <% content.with_title { "Dialog Title" } %>
      <% content.with_description { "Dialog description here." } %>
    <% end %>
    <p>Dialog body content</p>
    <% content.with_footer do %>
      <%= render Shadcn::ButtonComponent.new { "Save" } %>
    <% end %>
  <% end %>
<% end %>

Instance Attribute Summary

Attributes inherited from BaseComponent

#class_name, #data, #html_options

Instance Method Summary collapse

Methods inherited from BaseComponent

#content

Methods included from Rails::Helpers::ClassNameHelper

#cn

Constructor Details

#initialize(id: nil, open: false, modal: true, **options) ⇒ DialogComponent

Returns a new instance of DialogComponent.

Parameters:

  • id (String) (defaults to: nil)

    Unique identifier for the dialog (used for Turbo Stream targeting)

  • open (Boolean) (defaults to: false)

    Whether dialog starts open

  • modal (Boolean) (defaults to: true)

    Whether dialog is modal (traps focus, blocks interaction)



34
35
36
37
38
39
# File 'app/components/shadcn/dialog_component.rb', line 34

def initialize(id: nil, open: false, modal: true, **options)
  super(**options)
  @id = id
  @open = open
  @modal = modal
end