Class: UI::ButtonComponent

Inherits:
ViewComponent::Base
  • Object
show all
Includes:
ButtonBehavior
Defined in:
app/view_components/ui/button_component.rb

Overview

ButtonComponent - ViewComponent implementation

A versatile button component with multiple variants and sizes. Uses ButtonBehavior module for shared styling logic.

Examples:

Basic usage

<%= render UI::ButtonComponent.new do %>
  Click me
<% end %>

With variant and size

<%= render UI::ButtonComponent.new(variant: "destructive", size: "lg") do %>
  Delete
<% end %>

Disabled state

<%= render UI::ButtonComponent.new(disabled: true) do %>
  Disabled
<% end %>

Instance Method Summary collapse

Methods included from ButtonBehavior

#button_classes, #button_html_attributes, #render_button

Constructor Details

#initialize(variant: "default", size: "default", type: "button", disabled: false, classes: "", **attributes) ⇒ ButtonComponent

Returns a new instance of ButtonComponent.

Parameters:

  • variant (String) (defaults to: "default")

    Visual style variant (default, destructive, outline, secondary, ghost, link)

  • size (String) (defaults to: "default")

    Size variant (default, sm, lg, icon, icon-sm, icon-lg)

  • type (String) (defaults to: "button")

    Button type attribute (button, submit, reset)

  • disabled (Boolean) (defaults to: false)

    Whether the button is disabled

  • classes (String) (defaults to: "")

    Additional CSS classes to merge

  • attributes (Hash)

    Additional HTML attributes



31
32
33
34
35
36
37
38
# File 'app/view_components/ui/button_component.rb', line 31

def initialize(variant: "default", size: "default", type: "button", disabled: false, classes: "", **attributes)
  @variant = variant
  @size = size
  @type = type
  @disabled = disabled
  @classes = classes
  @attributes = attributes
end

Instance Method Details

#callObject



40
41
42
# File 'app/view_components/ui/button_component.rb', line 40

def call
  render_button { content }
end