Sha256: 11d326124873023ad43c02213c8d08150359ce6dc36136433d533f0f616b6bb9

Contents?: true

Size: 1.32 KB

Versions: 18

Compression:

Stored size: 1.32 KB

Contents

module ActiveAdmin
  module Views

    # Arbre component used to render ActiveAdmin::MenuItem
    class MenuItem < Component
      builder_method :menu_item
      attr_reader :label
      attr_reader :url
      attr_reader :priority

      def build(item, options = {})
        super(options.merge(id: item.id))
        @label = helpers.render_in_context self, item.label
        @url = helpers.render_in_context self, item.url
        @priority = item.priority
        @submenu = nil

        add_class "current" if item.current? assigns[:current_tab]

        if url
          text_node link_to label, url, item.html_options
        else
          span label, item.html_options
        end

        if item.items.any?
          add_class "has_nested"
          @submenu = menu(item)
        end
      end

      def tag_name
        'li'
      end

      # Sorts by priority first, then alphabetically by label if needed.
      def <=>(other)
        result = priority <=> other.priority
        result == 0 ? label <=> other.label : result
      end

      def visible?
        url.nil? || real_url? || @submenu && @submenu.children.any?
      end

      def to_s
        visible? ? super : ''
      end

      private

      # URL is not nil, empty, or '#'
      def real_url?
        url && url.present? && url != '#'
      end
    end
  end
end

Version data entries

18 entries across 18 versions & 2 rubygems

Version Path
activeadmin-rb-1.5.1 lib/active_admin/views/components/menu_item.rb
activeadmin-2.7.0 lib/active_admin/views/components/menu_item.rb
activeadmin-2.6.1 lib/active_admin/views/components/menu_item.rb
activeadmin-2.6.0 lib/active_admin/views/components/menu_item.rb
activeadmin-2.5.0 lib/active_admin/views/components/menu_item.rb
activeadmin-2.4.0 lib/active_admin/views/components/menu_item.rb
activeadmin-2.3.1 lib/active_admin/views/components/menu_item.rb
activeadmin-2.3.0 lib/active_admin/views/components/menu_item.rb
activeadmin-2.2.0 lib/active_admin/views/components/menu_item.rb
activeadmin-2.1.0 lib/active_admin/views/components/menu_item.rb
activeadmin-2.0.0 lib/active_admin/views/components/menu_item.rb
activeadmin-rb-1.5.0 lib/active_admin/views/components/menu_item.rb
activeadmin-2.0.0.rc2 lib/active_admin/views/components/menu_item.rb
activeadmin-2.0.0.rc1 lib/active_admin/views/components/menu_item.rb
activeadmin-rb-1.4.0 lib/active_admin/views/components/menu_item.rb
activeadmin-1.4.3 lib/active_admin/views/components/menu_item.rb
activeadmin-1.4.2 lib/active_admin/views/components/menu_item.rb
activeadmin-1.4.1 lib/active_admin/views/components/menu_item.rb