Class: Bulmacomp::DropdownComponent
- Inherits:
-
ViewComponent::Base
- Object
- ViewComponent::Base
- Bulmacomp::DropdownComponent
- Defined in:
- app/components/bulmacomp/dropdown_component.rb
Overview
Make an html structure for a bulma dropdown
Instance Method Summary collapse
-
#call ⇒ String
Generated html string for bulma dropdown.
-
#default_button_options ⇒ Object
return [Hash] default option for button tag.
-
#default_icon ⇒ String
Default content for button icon.
-
#default_opts ⇒ Hash
Default option for content tag.
-
#initialize(title: nil, elements: [], icon: default_icon, button_options: {}, **opts) {|optional| ... } ⇒ DropdownComponent
constructor
A new instance of DropdownComponent.
-
#tag_content ⇒ String
generated html for ‘.dropdown-content’ div.
-
#tag_trigger ⇒ String
generated html for ‘.dropdown-trigger’ div.
Constructor Details
#initialize(title: nil, elements: [], icon: default_icon, button_options: {}, **opts) {|optional| ... } ⇒ DropdownComponent
Returns a new instance of DropdownComponent.
72 73 74 75 76 77 78 |
# File 'app/components/bulmacomp/dropdown_component.rb', line 72 def initialize(title: nil, elements: [], icon: default_icon, button_options: {}, **opts) @title = tag.span title if title.present? @elements = elements @icon = tag.span icon, class: "icon is-small" if icon.present? = .merge() @opts = default_opts.merge(opts) end |
Instance Method Details
#call ⇒ String
Generated html string for bulma dropdown
97 98 99 |
# File 'app/components/bulmacomp/dropdown_component.rb', line 97 def call tag.div safe_join([ tag_trigger, tag_content ]), **@opts end |
#default_button_options ⇒ Object
return [Hash] default option for button tag
91 92 93 |
# File 'app/components/bulmacomp/dropdown_component.rb', line 91 def { class: "button", aria: { haspopup: "true", controls: "dropdown-menu" } } end |
#default_icon ⇒ String
Returns default content for button icon.
81 82 83 |
# File 'app/components/bulmacomp/dropdown_component.rb', line 81 def default_icon '<i class="fas fa-angle-down" aria-hidden="true"></i>'.html_safe end |
#default_opts ⇒ Hash
Returns default option for content tag.
86 87 88 |
# File 'app/components/bulmacomp/dropdown_component.rb', line 86 def default_opts { class: "dropdown" } end |
#tag_content ⇒ String
generated html for ‘.dropdown-content’ div. Map each content of elements in a ‘.dropdown-item’ div and add yield content
110 111 112 |
# File 'app/components/bulmacomp/dropdown_component.rb', line 110 def tag_content tag.div safe_join([ @elements.map { |e| tag.div(e, class: "dropdown-item") }, content ]), class: "dropdown-content" end |
#tag_trigger ⇒ String
generated html for ‘.dropdown-trigger’ div
103 104 105 |
# File 'app/components/bulmacomp/dropdown_component.rb', line 103 def tag_trigger tag.div tag.(safe_join([ @title, @icon ]), **), class: "dropdown-trigger" end |