Sha256: c860c62f7d587bf71bf51b8cdc9c17baa0bc75fafd5b47ff2806908db726e642

Contents?: true

Size: 955 Bytes

Versions: 5

Compression:

Stored size: 955 Bytes

Contents

module MenuMaker
  class CustomMenuRenderer < MenuRenderer
    render do
      output = build_menu do |item, css_class|
        html = build_html { render_link(item) + item.render_submenu }

        css_class << 'dropdown'    if item.has_submenu?
        css_class << 'active open' if item.has_path? current_path

        options = { class: css_class.join(' ') } if css_class.any?
        h.li(html, nil, options || {})
      end

      h.content_tag(:ul, output, class: 'nav navbar-nav side-nav')
    end

    private

    def render_title(item)
      build_html do
        caret = item.has_submenu? ? ' <b class="caret"></b>' : ''
        i = %{<i class="#{item.icon}"></i>}

        "#{i} #{item.title}#{caret}"
      end
    end

    def render_link(item)
      if item.has_submenu?
        options = { class: 'dropdown-toggle', data: { toggle: 'dropdown' } }
      end

      h.link_to(render_title(item), item.path, options || {})
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
menu_maker-0.3.0 lib/menu_maker/custom_menu_renderer.rb
menu_maker-0.2.0 lib/menu_maker/custom_menu_renderer.rb
menu_maker-0.1.0 lib/menu_maker/custom_menu_renderer.rb
menu_maker-0.0.4 lib/menu_maker/custom_menu_renderer.rb
menu_maker-0.0.3 lib/menu_maker/custom_menu_renderer.rb