lib/active_admin/views/components/menu.rb



module ActiveAdmin
  module Views

    # Renders an ActiveAdmin::Menu as a set of unordered list items.
    #
    # This component takes cares of deciding which items should be
    # displayed given the current context and renders them appropriately.
    #
    # The entire component is rendered within one ul element.
    class Menu < Component
      attr_reader :menu
      builder_method :menu

      # @param [ActiveAdmin::Menu] menu the Menu to render
      # @param [Hash] options the options as passed to the underlying ul element.
      #
      def build(menu, options = {})
        @menu = menu
        super(options)

        menu.items.each do |item|
          menu_item(item) if helpers.render_in_context self, item.should_display
        end
        children.sort!
      end

      def tag_name
        'ul'
      end
    end
  end
end