Class: Plutonium::UI::ActionButton

Inherits:
Component::Base show all
Includes:
Phlex::Rails::Helpers::ButtonTo, Phlex::Rails::Helpers::LinkTo
Defined in:
lib/plutonium/ui/action_button.rb

Constant Summary collapse

COLOR_CLASSES =

Color to CSS class mapping for standard and soft button variants

{
  primary: {default: "pu-btn-primary", soft: "pu-btn-soft-primary"},
  success: {default: "pu-btn-success", soft: "pu-btn-soft-success"},
  info: {default: "pu-btn-info", soft: "pu-btn-soft-info"},
  warning: {default: "pu-btn-warning", soft: "pu-btn-soft-warning"},
  danger: {default: "pu-btn-danger", soft: "pu-btn-soft-danger"},
  accent: {default: "pu-btn-accent", soft: "pu-btn-soft-accent"},
  secondary: {default: "pu-btn-secondary", soft: "pu-btn-soft-secondary"}
}.freeze
{
  danger: "text-danger-600 dark:text-danger-400 hover:bg-danger-50 dark:hover:bg-danger-900/30"
}.freeze
"text-[var(--pu-text)] hover:bg-[var(--pu-surface-alt)]"

Instance Method Summary collapse

Methods included from Component::Behaviour

#around_template

Methods included from Component::Tokens

#classes, #tokens

Methods included from Component::Kit

#BuildActionButton, #BuildActionsDropdown, #BuildBlock, #BuildBreadcrumbs, #BuildBulkActionsToolbar, #BuildColorModeSelector, #BuildDynaFrameContent, #BuildDynaFrameHost, #BuildEmptyCard, #BuildFrameNavigatorPanel, #BuildPageHeader, #BuildPanel, #BuildRowActionsDropdown, #BuildSkeletonTable, #BuildTabList, #BuildTableInfo, #BuildTablePagination, #BuildTableScopesBar, #BuildTableSearchBar, #method_missing, #respond_to_missing?

Constructor Details

#initialize(action, url:, variant: :default) ⇒ ActionButton

Returns a new instance of ActionButton.



27
28
29
30
31
# File 'lib/plutonium/ui/action_button.rb', line 27

def initialize(action, url:, variant: :default)
  @action = action
  @url = url
  @variant = variant
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Plutonium::UI::Component::Kit

Instance Method Details

#view_templateObject



33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/plutonium/ui/action_button.rb', line 33

def view_template
  case @variant
  when :dropdown, :row_dropdown
    render_dropdown_item
  else
    if @action.route_options.method == :get
      render_link
    else
      render_button
    end
  end
end