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



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

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

#BuildActionsDropdownObject



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

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

#BuildAvatarObject



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

def BuildAvatar(...) = Plutonium::UI::Avatar.new(...)

#BuildBlockObject



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

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

#BuildBreadcrumbsObject



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

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

#BuildBulkActionsToolbarObject



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

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

#BuildColorModeSelectorObject



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

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

#BuildDynaFrameContentObject



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

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

#BuildDynaFrameHostObject



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

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

#BuildEmptyCardObject



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

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

#BuildFrameNavigatorPanelObject



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

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

#BuildModalCenteredObject



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

def BuildModalCentered(...) = Plutonium::UI::Modal::Centered.new(...)

#BuildModalSlideoverObject



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

def BuildModalSlideover(...) = Plutonium::UI::Modal::Slideover.new(...)

#BuildPageHeaderObject



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

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

#BuildPanelObject



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

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

#BuildRowActionsDropdownObject



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

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

#BuildSkeletonTableObject



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

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

#BuildTableFilterPillsObject



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

def BuildTableFilterPills(...) = Plutonium::UI::Table::Components::FilterPills.new(...)

#BuildTableInfoObject



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

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

#BuildTablePaginationObject



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

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

#BuildTableScopesBarObject



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

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

#BuildTableScopesPillsObject



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

def BuildTableScopesPills(...) = Plutonium::UI::Table::Components::ScopesPills.new(...)

#BuildTableSearchBarObject



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

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

#BuildTableToolbarObject



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

def BuildTableToolbar(...) = Plutonium::UI::Table::Components::Toolbar.new(...)

#BuildTableViewSwitcherObject



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

def BuildTableViewSwitcher(...) = Plutonium::UI::Table::Components::ViewSwitcher.new(...)

#BuildTabListObject



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

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