Class: Primer::ButtonComponent
- Defined in:
- app/components/primer/button_component.rb
Constant Summary collapse
- DEFAULT_BUTTON_TYPE =
:default- BUTTON_TYPE_MAPPINGS =
{ DEFAULT_BUTTON_TYPE => "", :primary => "btn-primary", :danger => "btn-danger", :outline => "btn-outline" }.freeze
- BUTTON_TYPE_OPTIONS =
BUTTON_TYPE_MAPPINGS.keys
- DEFAULT_VARIANT =
:medium- VARIANT_MAPPINGS =
{ :small => "btn-sm", DEFAULT_VARIANT => "", :large => "btn-large", }.freeze
- VARIANT_OPTIONS =
VARIANT_MAPPINGS.keys
- DEFAULT_TAG =
:button- TAG_OPTIONS =
[DEFAULT_TAG, :a].freeze
- DEFAULT_TYPE =
:button- TYPE_OPTIONS =
[DEFAULT_TYPE, :reset, :submit].freeze
Constants included from FetchOrFallbackHelper
FetchOrFallbackHelper::InvalidValueError
Instance Method Summary collapse
- #call ⇒ Object
-
#initialize(button_type: DEFAULT_BUTTON_TYPE, variant: DEFAULT_VARIANT, tag: DEFAULT_TAG, type: DEFAULT_TYPE, group_item: false, **kwargs) ⇒ ButtonComponent
constructor
A new instance of ButtonComponent.
Methods included from FetchOrFallbackHelper
Methods included from ClassNameHelper
Constructor Details
#initialize(button_type: DEFAULT_BUTTON_TYPE, variant: DEFAULT_VARIANT, tag: DEFAULT_TAG, type: DEFAULT_TYPE, group_item: false, **kwargs) ⇒ ButtonComponent
Returns a new instance of ButtonComponent.
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'app/components/primer/button_component.rb', line 28 def initialize( button_type: DEFAULT_BUTTON_TYPE, variant: DEFAULT_VARIANT, tag: DEFAULT_TAG, type: DEFAULT_TYPE, group_item: false, **kwargs ) @kwargs = kwargs @kwargs[:tag] = fetch_or_fallback(TAG_OPTIONS, tag, DEFAULT_TAG) if @kwargs[:tag] == :a @kwargs[:role] = :button else @kwargs[:type] = type end @kwargs[:classes] = class_names( "btn", kwargs[:classes], BUTTON_TYPE_MAPPINGS[fetch_or_fallback(BUTTON_TYPE_OPTIONS, .to_sym, DEFAULT_BUTTON_TYPE)], VARIANT_MAPPINGS[fetch_or_fallback(VARIANT_OPTIONS, variant, DEFAULT_VARIANT)], group_item ? "BtnGroup-item" : "" ) end |
Instance Method Details
#call ⇒ Object
54 55 56 |
# File 'app/components/primer/button_component.rb', line 54 def call render(Primer::BaseComponent.new(**@kwargs)) { content } end |