Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions lib/simple_navigation_bootstrap.rb
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,4 @@ module SimpleNavigationBootstrap
SimpleNavigation.register_renderer(bootstrap2: SimpleNavigationBootstrap::Bootstrap2)
SimpleNavigation.register_renderer(bootstrap3: SimpleNavigationBootstrap::Bootstrap3)
SimpleNavigation.register_renderer(bootstrap4: SimpleNavigationBootstrap::Bootstrap4)
SimpleNavigation.register_renderer(bootstrap5: SimpleNavigationBootstrap::Bootstrap5)
27 changes: 27 additions & 0 deletions lib/simple_navigation_bootstrap/bootstrap5.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# frozen_string_literal: true

module SimpleNavigationBootstrap
class Bootstrap5 < SimpleNavigation::Renderer::Base

include BootstrapBase


private


def bootstrap_version
5
end


def navigation_class
'navbar-nav'
end


def render_item(*)
SimpleNavigationBootstrap::RenderedItem5.new(*).to_s
end

end
end
2 changes: 1 addition & 1 deletion lib/simple_navigation_bootstrap/rendered_item.rb
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ def splitted_dropdown_part # rubocop:disable Metrics/AbcSize


def dropdown_part(name) # rubocop:disable Metrics/AbcSize
options[:class] = [options[:class], 'dropdown'].flatten.compact.join(' ')
options[:class] = [options[:class], 'dropdown-menu'].flatten.compact.join(' ')
link_options[:class] = [link_options[:class], 'dropdown-toggle'].flatten.compact.join(' ')
link_options[:'data-toggle'] = 'dropdown'
link_options[:'data-target'] = '#'
Expand Down
55 changes: 55 additions & 0 deletions lib/simple_navigation_bootstrap/rendered_item5.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# frozen_string_literal: true

module SimpleNavigationBootstrap
class RenderedItem5 < RenderedItem
private

def li_link # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
if include_sub_navigation?(item)
if level == 1
if split
splitted_simple_part + splitted_dropdown_part
else
content = [item.name]
content << caret unless skip_caret
content = content.join(" ").html_safe
dropdown_part(content)
end
else
content_tag(:li, dropdown_submenu_link, options)
end
else
options[:class] = [options[:class], "nav-item"].flatten.compact.join(
" "
) if level == 1
content_tag(:li, simple_link, options)
end
end

def dropdown_part(name) # rubocop:disable Metrics/AbcSize
options[:class] = [options[:class], "nav-item", "dropdown"].flatten
.compact
.join(" ")
link_options[:class] = [
link_options[:class],
"nav-link",
"dropdown-toggle"
].flatten.compact.join(" ")
link_options[:"role"] = "button"
link_options[:"data-bs-toggle"] = "dropdown"
link_options[:"aria-expanded"] = "false"

content =
link_to(name, "#", link_options) + render_sub_navigation_for(item)
content_tag(:li, content, options)
end

def simple_link
link_class = level == 1 ? "nav-link" : "dropdown-item"
link_options[:class] = [options[:class], link_class].flatten.compact.join(" ")
link_options[:method] ||= item.method
url = item.url || "#"
link_to(item.name, url, link_options)
end
end
end
4 changes: 4 additions & 0 deletions spec/lib/simple_navigation_bootstrap_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,8 @@
it 'registers Bootstrap4 renderer' do
expect(SimpleNavigation.registered_renderers[:bootstrap4]).to eq SimpleNavigationBootstrap::Bootstrap4
end

it 'registers Bootstrap5 renderer' do
expect(SimpleNavigation.registered_renderers[:bootstrap5]).to eq SimpleNavigationBootstrap::Bootstrap5
end
end