Sha256: 1e432a5407679487d81afc116b55898f31c2def12e27976169eb80b7f15bd028

Contents?: true

Size: 1.84 KB

Versions: 25

Compression:

Stored size: 1.84 KB

Contents

require 'active_admin/helpers/collection'

module ActiveAdmin
  module Views

    # Renders a collection of index views available to the resource
    # as a list with a separator
    class IndexList < ActiveAdmin::Component
      builder_method :index_list_renderer

      include ::ActiveAdmin::Helpers::Collection

      def default_class_name
        "indexes table_tools_segmented_control"
      end

      def tag_name
        'ul'
      end

      # Builds the links for presenting different index views to the user
      #
      # @param [Array] index_classes The class constants that represent index page presenters
      def build(index_classes)
        unless current_filter_search_empty?
          index_classes.each do |index_class|
            build_index_list(index_class)
          end
        end
      end

      protected

      # Builds the individual link and HTML classes for each index page presenter
      #
      # @param [Class] index_class The class on which to build the link and html classes
      def build_index_list(index_class)
        li class: classes_for_index(index_class) do
          a href: url_for(params.merge(as: index_class.index_name.to_sym)), class: "table_tools_button" do
            name = index_class.index_name
            I18n.t("active_admin.index_list.#{name}", default: name.to_s.titleize)
          end
        end
      end

      def classes_for_index(index_class)
        classes = ["index"]
        classes << "selected" if current_index?(index_class)
        classes.join(" ")
      end

      def current_index?(index_class)
        if params[:as]
          params[:as] == index_class.index_name
        else
          active_admin_config.default_index_class == index_class
        end
      end

      def current_filter_search_empty?
        params.include?(:q) && collection_is_empty?
      end

    end
  end
end


Version data entries

25 entries across 25 versions & 5 rubygems

Version Path
activeadmin_addons-1.1.2 vendor/bundle/ruby/2.3.0/bundler/gems/activeadmin-a5a53c3f2b8f/lib/active_admin/views/components/index_list.rb
activeadmin_addons-1.1.1 vendor/bundle/ruby/2.2.0/bundler/gems/activeadmin-a5a53c3f2b8f/lib/active_admin/views/components/index_list.rb
yousty-activeadmin-1.0.17.pre lib/active_admin/views/components/index_list.rb
yousty-activeadmin-1.0.16.pre lib/active_admin/views/components/index_list.rb
activeadmin_addons-1.1.0 vendor/bundle/ruby/2.2.0/bundler/gems/activeadmin-a5a53c3f2b8f/lib/active_admin/views/components/index_list.rb
activeadmin_addons-1.0.1 vendor/bundle/ruby/2.2.0/bundler/gems/activeadmin-a5a53c3f2b8f/lib/active_admin/views/components/index_list.rb
activeadmin_addons-1.0.0 vendor/bundle/ruby/2.2.0/bundler/gems/activeadmin-a5a53c3f2b8f/lib/active_admin/views/components/index_list.rb
yousty-activeadmin-1.0.15.pre lib/active_admin/views/components/index_list.rb
yousty-activeadmin-1.0.14.pre lib/active_admin/views/components/index_list.rb
yousty-activeadmin-1.0.13.pre lib/active_admin/views/components/index_list.rb
yousty-activeadmin-1.0.12.pre lib/active_admin/views/components/index_list.rb
yousty-activeadmin-1.0.11.pre lib/active_admin/views/components/index_list.rb
yousty-activeadmin-1.0.10.pre lib/active_admin/views/components/index_list.rb
yousty-activeadmin-1.0.9.pre lib/active_admin/views/components/index_list.rb
yousty-activeadmin-1.0.8.pre lib/active_admin/views/components/index_list.rb
activeadmin-1.0.0.pre2 lib/active_admin/views/components/index_list.rb
activeadmin-1.0.0.pre1 lib/active_admin/views/components/index_list.rb
yousty-activeadmin-1.0.7.pre lib/active_admin/views/components/index_list.rb
yousty-activeadmin-1.0.6.pre lib/active_admin/views/components/index_list.rb
yousty-activeadmin-1.0.5.pre lib/active_admin/views/components/index_list.rb