diff --git a/lib/simple-navigation-bootstrap/version.rb b/lib/simple-navigation-bootstrap/version.rb index d493a8b..e2ab2d4 100644 --- a/lib/simple-navigation-bootstrap/version.rb +++ b/lib/simple-navigation-bootstrap/version.rb @@ -1,3 +1,3 @@ module SimpleNavigationBootstrap - VERSION = "1.0.2" + VERSION = "1.0.3" end diff --git a/lib/simple_navigation/rendering/renderer/bootstrap.rb b/lib/simple_navigation/rendering/renderer/bootstrap.rb index ef105d0..d20df96 100644 --- a/lib/simple_navigation/rendering/renderer/bootstrap.rb +++ b/lib/simple_navigation/rendering/renderer/bootstrap.rb @@ -6,13 +6,15 @@ def render(item_container) config_selected_class = SimpleNavigation.config.selected_class SimpleNavigation.config.selected_class = 'active' list_content = item_container.items.inject([]) do |list, item| - li_options = item.html_options.reject {|k, v| k == :link} + # li_options = item.html_options.reject {|k, v| k == :link} + li_options = item.html_options icon = li_options.delete(:icon) dropdown = item_container.dropdown.nil? ? true : item_container.dropdown split = item_container.split split = (include_sub_navigation?(item) and li_options.delete(:split)) if li_options.include?(:split) dropdown = (include_sub_navigation?(item) and li_options.delete(:dropdown)) if li_options.include?(:dropdown) li_content = tag_for(item, item.name, icon, split, dropdown) + to_skip = false if include_sub_navigation?(item) if split lio = li_options.dup @@ -23,10 +25,16 @@ def render(item_container) li_content = tag_for(item) end item.sub_navigation.dom_class = [item.sub_navigation.dom_class, dropdown ? 'dropdown-menu' : nil, split ? 'pull-right' : nil].flatten.compact.join(' ') - li_content << render_sub_navigation_for(item) + sub_content = render_sub_navigation_for(item) + to_skip = true if respond_to?(:skip_if_empty?) && skip_if_empty? && sub_content.blank? + li_content << sub_content li_options[:class] = [li_options[:class], dropdown ? 'dropdown' : nil, split ? 'dropdown-split-right' : nil].flatten.compact.join(' ') end - list << content_tag(:li, li_content, li_options) + if to_skip + list << '' + else + list << content_tag(:li, li_content, li_options) + end end.join SimpleNavigation.config.selected_class = config_selected_class if item_container.respond_to?(:dom_attributes) @@ -49,18 +57,17 @@ def tag_for(item, name = '', icon = nil, split = false, dropdown = false) link << content_tag(:i, '', :class => [icon].flatten.compact.join(' ')) unless icon.nil? link << name if include_sub_navigation?(item) - item_options = item.html_options - item_options[:link] = Hash.new if item_options[:link].nil? - item_options[:link][:class] = Array.new if item_options[:link][:class].nil? + item_link_html_opts = item.link_html_options || Hash.new + item_link_html_opts[:class] = Array.new if item_link_html_opts[:class].nil? unless split if dropdown - item_options[:link][:class] << 'dropdown-toggle' - item_options[:link][:'data-toggle'] = 'dropdown' - item_options[:link][:'data-target'] = '#' + item_link_html_opts[:class] << 'dropdown-toggle' + item_link_html_opts[:'data-toggle'] = 'dropdown' + item_link_html_opts[:'data-target'] = '#' end link << content_tag(:b, '', :class => 'caret') end - item.html_options = item_options + item.instance_variable_set(:'@link_html_options', item_link_html_opts) end link_to(link.join(" ").html_safe, url, options_for(item)) end diff --git a/simple-navigation-bootstrap.gemspec b/simple-navigation-bootstrap.gemspec index 535e2f2..6c43b81 100644 --- a/simple-navigation-bootstrap.gemspec +++ b/simple-navigation-bootstrap.gemspec @@ -18,6 +18,6 @@ Gem::Specification.new do |s| # specify any dependencies here; for example: s.add_development_dependency "rake" - s.add_runtime_dependency "simple-navigation", ">= 3.7.0", "< 4.0.0" + s.add_runtime_dependency "simple-navigation", ">= 4.0.0" s.add_runtime_dependency "railties", ">= 3.1" end