Sha256: b34e7b0b84b68215918a14caa4d2b33f2b3d0270072c1f36df7bd6ab234b13af

Contents?: true

Size: 1.59 KB

Versions: 32

Compression:

Stored size: 1.59 KB

Contents

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 TabbedNavigation < Component

      attr_reader :menu

      # Build a new tabbed navigation component.
      #
      # @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(default_options.merge(options))
        build_menu
      end

      # The top-level menu items that should be displayed.
      def menu_items
        menu.items(self)
      end

      def tag_name
        'ul'
      end

      private

      def build_menu
        menu_items.each do |item|
          build_menu_item(item)
        end
      end

      def build_menu_item(item)
        li id: item.id do |li|
          li.add_class "current" if item.current? assigns[:current_tab]

          if url = item.url(self)
            text_node link_to item.label(self), url, item.html_options
          else
            span item.label(self), item.html_options
          end

          if children = item.items(self).presence
            li.add_class "has_nested"
            ul do
              children.each{ |child| build_menu_item child }
            end
          end
        end
      end

      def default_options
        { id: "tabs" }
      end
    end
  end
end

Version data entries

32 entries across 32 versions & 4 rubygems

Version Path
activeadmin-1.3.1 lib/active_admin/views/tabbed_navigation.rb
activeadmin-1.3.0 lib/active_admin/views/tabbed_navigation.rb
activeadmin-1.2.1 lib/active_admin/views/tabbed_navigation.rb
activeadmin_addons-1.1.2 vendor/bundle/ruby/2.3.0/bundler/gems/activeadmin-a5a53c3f2b8f/lib/active_admin/views/tabbed_navigation.rb
activeadmin-1.2.0 lib/active_admin/views/tabbed_navigation.rb
activeadmin_addons-1.1.1 vendor/bundle/ruby/2.2.0/bundler/gems/activeadmin-a5a53c3f2b8f/lib/active_admin/views/tabbed_navigation.rb
yousty-activeadmin-1.0.17.pre lib/active_admin/views/tabbed_navigation.rb
yousty-activeadmin-1.0.16.pre lib/active_admin/views/tabbed_navigation.rb
activeadmin_addons-1.1.0 vendor/bundle/ruby/2.2.0/bundler/gems/activeadmin-a5a53c3f2b8f/lib/active_admin/views/tabbed_navigation.rb
activeadmin_addons-1.0.1 vendor/bundle/ruby/2.2.0/bundler/gems/activeadmin-a5a53c3f2b8f/lib/active_admin/views/tabbed_navigation.rb
activeadmin_addons-1.0.0 vendor/bundle/ruby/2.2.0/bundler/gems/activeadmin-a5a53c3f2b8f/lib/active_admin/views/tabbed_navigation.rb
activeadmin-1.1.0 lib/active_admin/views/tabbed_navigation.rb
yousty-activeadmin-1.0.15.pre lib/active_admin/views/tabbed_navigation.rb
activeadmin-1.0.0 lib/active_admin/views/tabbed_navigation.rb
activeadmin-1.0.0.pre5 lib/active_admin/views/tabbed_navigation.rb
activeadmin-orac-1.0.0.pre4 lib/active_admin/views/tabbed_navigation.rb
activeadmin-orac-1.0.0 lib/active_admin/views/tabbed_navigation.rb
activeadmin-orac-1.0.0.pre.orac lib/active_admin/views/tabbed_navigation.rb
yousty-activeadmin-1.0.14.pre lib/active_admin/views/tabbed_navigation.rb
yousty-activeadmin-1.0.13.pre lib/active_admin/views/tabbed_navigation.rb