Module: Plutonium::UI::Component::Kit

Extended by:
ActiveSupport::Concern
Included in:
Behaviour
Defined in:
lib/plutonium/ui/component/kit.rb

Overview

Note:

All components are automatically rendered when called without the ‘Build’ prefix. For example, calling ‘TabList(…)` will internally call `BuildTabList(…)` and render the result.

Component Kit automatically handles component instantiation and rendering through a convention-based approach using Build* methods.

Examples:

Basic component usage

class MyView
  include Plutonium::UI::Component::Kit

  def view_template
    PageHeader(title: "Dashboard")
    TabList(items: tabs)
    Panel(class: "mt-4") do
      content
    end
  end
end

Adding a new component

def BuildCustomComponent(title:, **options)
  Plutonium::UI::CustomComponent.new(
    title: title,
    **options
  )
end

Instance Method Summary collapse

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method_name, *args, **kwargs, &block) ⇒ Object



38
39
40
41
42
43
44
45
46
# File 'lib/plutonium/ui/component/kit.rb', line 38

def method_missing(method_name, *args, **kwargs, &block)
  build_method = "Build#{method_name}"

  if self.class.method_defined?(build_method)
    render send(build_method, *args, **kwargs, &block)
  else
    super
  end
end

Instance Method Details

#BuildActionButtonObject



71
# File 'lib/plutonium/ui/component/kit.rb', line 71

def BuildActionButton(...) = Plutonium::UI::ActionButton.new(...)

#BuildActionsDropdownObject



73
# File 'lib/plutonium/ui/component/kit.rb', line 73

def BuildActionsDropdown(...) = Plutonium::UI::ActionsDropdown.new(...)

#BuildBlockObject



57
# File 'lib/plutonium/ui/component/kit.rb', line 57

def BuildBlock(...) = Plutonium::UI::Block.new(...)

#BuildBreadcrumbsObject



53
# File 'lib/plutonium/ui/component/kit.rb', line 53

def BuildBreadcrumbs(...) = Plutonium::UI::Breadcrumbs.new(...)

#BuildBulkActionsToolbarObject



87
# File 'lib/plutonium/ui/component/kit.rb', line 87

def BuildBulkActionsToolbar(...) = Plutonium::UI::Table::Components::BulkActionsToolbar.new(...)

#BuildColorModeSelectorObject



89
# File 'lib/plutonium/ui/component/kit.rb', line 89

def BuildColorModeSelector(...) = Plutonium::UI::ColorModeSelector.new(...)

#BuildDynaFrameContentObject



67
# File 'lib/plutonium/ui/component/kit.rb', line 67

def BuildDynaFrameContent(...) = Plutonium::UI::DynaFrame::Content.new(...)

#BuildDynaFrameHostObject



65
# File 'lib/plutonium/ui/component/kit.rb', line 65

def BuildDynaFrameHost(...) = Plutonium::UI::DynaFrame::Host.new(...)

#BuildEmptyCardObject



75
# File 'lib/plutonium/ui/component/kit.rb', line 75

def BuildEmptyCard(...) = Plutonium::UI::EmptyCard.new(...)

#BuildFrameNavigatorPanelObject



61
# File 'lib/plutonium/ui/component/kit.rb', line 61

def BuildFrameNavigatorPanel(...) = Plutonium::UI::FrameNavigatorPanel.new(...)

#BuildPageHeaderObject



69
# File 'lib/plutonium/ui/component/kit.rb', line 69

def BuildPageHeader(...) = Plutonium::UI::PageHeader.new(...)

#BuildPanelObject



59
# File 'lib/plutonium/ui/component/kit.rb', line 59

def BuildPanel(...) = Plutonium::UI::Panel.new(...)

#BuildRowActionsDropdownObject



85
# File 'lib/plutonium/ui/component/kit.rb', line 85

def BuildRowActionsDropdown(...) = Plutonium::UI::Table::Components::RowActionsDropdown.new(...)

#BuildSkeletonTableObject



55
# File 'lib/plutonium/ui/component/kit.rb', line 55

def BuildSkeletonTable(...) = Plutonium::UI::SkeletonTable.new(...)

#BuildTableInfoObject



81
# File 'lib/plutonium/ui/component/kit.rb', line 81

def BuildTableInfo(...) = Plutonium::UI::Table::Components::PagyInfo.new(...)

#BuildTablePaginationObject



83
# File 'lib/plutonium/ui/component/kit.rb', line 83

def BuildTablePagination(...) = Plutonium::UI::Table::Components::PagyPagination.new(...)

#BuildTableScopesBarObject



79
# File 'lib/plutonium/ui/component/kit.rb', line 79

def BuildTableScopesBar(...) = Plutonium::UI::Table::Components::ScopesBar.new(...)

#BuildTableSearchBarObject



77
# File 'lib/plutonium/ui/component/kit.rb', line 77

def BuildTableSearchBar(...) = Plutonium::UI::Table::Components::SearchBar.new(...)

#BuildTabListObject



63
# File 'lib/plutonium/ui/component/kit.rb', line 63

def BuildTabList(...) = Plutonium::UI::TabList.new(...)

#respond_to_missing?(method_name, include_private = false) ⇒ Boolean

Returns:

  • (Boolean)


48
49
50
51
# File 'lib/plutonium/ui/component/kit.rb', line 48

def respond_to_missing?(method_name, include_private = false)
  build_method = "Build#{method_name}"
  self.class.method_defined?(build_method) || super
end