Module: EffectiveBootstrapHelper
- Defined in:
- app/helpers/effective_bootstrap_helper.rb
Overview
Boostrap4 Helpers
Instance Method Summary collapse
- #merge_class_key(hash, value) ⇒ Object
- #nav_divider ⇒ Object
- #nav_dropdown(label, right: false, link_class: [], list_class: [], &block) ⇒ Object
-
#nav_link_to(label, path, opts = {}) ⇒ Object
%ul.navbar-nav = nav_link_to 'Sign In', new_user_session_path = nav_dropdown 'Settings' do = nav_link_to 'Account Settings', user_settings_path = nav_dropdown_divider = nav_link_to 'Sign In', new_user_session_path, method: :delete.
Instance Method Details
#merge_class_key(hash, value) ⇒ Object
42 43 44 45 46 47 48 49 50 |
# File 'app/helpers/effective_bootstrap_helper.rb', line 42 def merge_class_key(hash, value) return { :class => value } unless hash.kind_of?(Hash) if hash[:class].present? hash.merge!(:class => "#{hash[:class]} #{value}") else hash.merge!(:class => value) end end |
#nav_divider ⇒ Object
38 39 40 |
# File 'app/helpers/effective_bootstrap_helper.rb', line 38 def nav_divider content_tag(:div, '', class: 'dropdown-divider') end |
#nav_dropdown(label, right: false, link_class: [], list_class: [], &block) ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'app/helpers/effective_bootstrap_helper.rb', line 24 def nav_dropdown(label, right: false, link_class: [], list_class: [], &block) raise 'expected a block' unless block_given? id = "dropdown-#{''.object_id}" content_tag(:li, class: 'nav-item dropdown') do content_tag(:a, class: 'nav-link dropdown-toggle', href: '#', id: id, role: 'button', 'data-toggle': 'dropdown', 'aria-haspopup': true, 'aria-expanded': false) do label.html_safe end + content_tag(:div, class: (right ? 'dropdown-menu dropdown-menu-right' : 'dropdown-menu'), 'aria-labelledby': id) do @_nav_mode = :dropdown; yield; @_nav_mode = nil end end end |
#nav_link_to(label, path, opts = {}) ⇒ Object
%ul.navbar-nav
nav_link_to 'Sign In', new_user_session_path
nav_dropdown 'Settings' do
= nav_link_to 'Account Settings', user_settings_path
= nav_dropdown_divider
= nav_link_to 'Sign In', new_user_session_path, method: :delete
13 14 15 16 17 18 19 20 21 22 |
# File 'app/helpers/effective_bootstrap_helper.rb', line 13 def nav_link_to(label, path, opts = {}) if @_nav_mode == :dropdown # We insert dropdown-items return link_to(label, path, merge_class_key(opts, 'dropdown-item')) end # Regular nav link item content_tag(:li, class: (request.fullpath.include?(path) ? 'nav-item active' : 'nav-item')) do link_to(label, path, merge_class_key(opts, 'nav-link')) end end |