class UiBibz::Ui::Core::Forms::Dropdowns::Dropdown
Create a dropdown
This element is an extend of UiBibz::Ui::Core::Component
.
Attributes¶ ↑
-
content
- Content of element -
options
- Options of element -
html_options
- Html Options of element
Options¶ ↑
You can add HTML attributes using the html_options
. You can pass arguments in options attribute:
-
status
- status of element with symbol value: (:primary
,:secondary
,:info
,:warning
,:danger
) -
size
-
open
- Boolean (:xs
,:sm
,:lg
) -
glyph
- Add glyph with name or hash options-
name
- String -
size
- Integer -
type
- Symbol
-
-
html_button
- Hash -
theme
- Symbol, defaut::dark
-
position
- Symbol (:up
,:right
,:down
,:left
) -
alignment
- Symbol/Hash - eq. { direction: :start, size: :lg } (:left
,:right
,:start
,:end
)
Signatures¶ ↑
UiBibz::Ui::Core::Forms::Dropdowns::Dropdown.new(options = nil, html_options = nil).tap do |d| ... d.header content = nil, options = nil, html_options = nil, &block d.divider d.link content = nil, options = nil, html_options = nil, &block ... end
Examples¶ ↑
UiBibz::Ui::Core::Forms::Dropdowns::Dropdown.new(name, status: :success).tap do |d| d.link 'test', { url: '#' } d.divider d.header 'Header 1' d.link 'test2', { url: '#' } end.render
Helper¶ ↑
dropdown(name, options = {}, html_options = {}) do |d| d.link(content, options = {}, html_options = {}) d.link(options = {}, html_options = {}) do content end d.divider d.header(content, options = {}, html_options = {}) d.header(options = {}, html_options = {}) do content end end
Public Class Methods
UiBibz::Ui::Core::Component::new
# File lib/ui_bibz/ui/core/forms/dropdowns/dropdown.rb, line 73 def initialize(content, options = nil, html_options = nil, &block) super @items = [] @status = @options.delete(:status) end
Public Instance Methods
Add dropdown Separator See UiBibz::Ui::Core::Forms::Dropdowns::Components::DropdownDivider
# File lib/ui_bibz/ui/core/forms/dropdowns/dropdown.rb, line 95 def divider @items << UiBibz::Ui::Core::Forms::Dropdowns::Components::DropdownDivider.new.render end
Add dropdown header See UiBibz::Ui::Core::Forms::Dropdowns::Components::DropdownHeader
# File lib/ui_bibz/ui/core/forms/dropdowns/dropdown.rb, line 89 def header(content = nil, options = nil, html_options = nil, &block) @items << UiBibz::Ui::Core::Forms::Dropdowns::Components::DropdownHeader.new(content, options, html_options, &block).render end
# File lib/ui_bibz/ui/core/forms/dropdowns/dropdown.rb, line 105 def id @id ||= html_options[:id] || generate_id('dropdown') end
Add dropdown link in list See UiBibz::Ui::Core::Forms::Dropdowns::Components::DropdownLink
# File lib/ui_bibz/ui/core/forms/dropdowns/dropdown.rb, line 101 def link(content = nil, options = nil, html_options = nil, &block) @items << UiBibz::Ui::Core::Forms::Dropdowns::Components::DropdownLink.new(content, options, html_options, &block).render end
Render html tag
# File lib/ui_bibz/ui/core/forms/dropdowns/dropdown.rb, line 80 def pre_render content_tag :div, html_options do concat button_html concat ul_html end end
Protected Instance Methods
# File lib/ui_bibz/ui/core/forms/dropdowns/dropdown.rb, line 136 def alignment return nil if @options[:alignment].nil? if @options[:alignment].is_a? Hash ['dropdown-menu', @options[:alignment][:size], match_direction[@options[:alignment][:direction]]].join('-') else "dropdown-menu-#{match_direction[@options[:alignment]]}" end end
# File lib/ui_bibz/ui/core/forms/dropdowns/dropdown.rb, line 111 def component_html_classes [position, open, inline, without_caret, keep_open] end
# File lib/ui_bibz/ui/core/forms/dropdowns/dropdown.rb, line 132 def dropdown_tag options[:tag] || :button end
# File lib/ui_bibz/ui/core/forms/dropdowns/dropdown.rb, line 158 def inline 'btn-group' if @options[:inline] || @options[:alignment] end
# File lib/ui_bibz/ui/core/forms/dropdowns/dropdown.rb, line 154 def keep_open 'keep-open' if @options[:keep_open] end
Match end and start directions
# File lib/ui_bibz/ui/core/forms/dropdowns/dropdown.rb, line 184 def match_direction { up: 'up', right: 'end', down: 'down', left: 'start', start: 'start', end: 'end' }.with_indifferent_access end
# File lib/ui_bibz/ui/core/forms/dropdowns/dropdown.rb, line 150 def open 'show' if @options[:open] end
# File lib/ui_bibz/ui/core/forms/dropdowns/dropdown.rb, line 166 def outline 'outline' if @options[:outline] end
# File lib/ui_bibz/ui/core/forms/dropdowns/dropdown.rb, line 146 def position "drop#{match_direction[@options[:position] || :down]}" end
:lg, :sm or :xs
# File lib/ui_bibz/ui/core/forms/dropdowns/dropdown.rb, line 175 def size "btn-#{@options[:size]}" if @options[:size] end
# File lib/ui_bibz/ui/core/forms/dropdowns/dropdown.rb, line 179 def theme 'dropdown-menu-dark' if @options[:theme] end
# File lib/ui_bibz/ui/core/forms/dropdowns/dropdown.rb, line 128 def ul_html content_tag :div, @items.join.html_safe, class: join_classes('dropdown-menu', theme, alignment, open), 'arial-labelledby' => id end
# File lib/ui_bibz/ui/core/forms/dropdowns/dropdown.rb, line 162 def without_caret 'without-caret' if @options[:caret] == false end