Sha256: 8ed2213ec9836f32a7dbf22f093eb423378feb805dee7969cca79e0ef3485870

Contents?: true

Size: 1.49 KB

Versions: 2

Compression:

Stored size: 1.49 KB

Contents

# frozen_string_literal: true

module Blacklight
  module Search
    class PerPageComponent < Blacklight::Component
      def initialize(blacklight_config:, response:, search_state:)
        @blacklight_config = blacklight_config
        @response = response
        @search_state = search_state
      end

      def render?
        helpers.show_sort_and_per_page?
      end

      # You may override this method in a subclass if you want to use a different dropdown component
      def dropdown_class
        Blacklight::System::DropdownComponent
      end

      def dropdown
        render(dropdown_class.new(
                 param: :per_page,
                 choices: per_page_options_for_select,
                 id: 'per_page-dropdown',
                 search_state: @search_state,
                 selected: current_per_page,
                 interpolation: :count
               ))
      end

      #
      # @return [Integer]
      def current_per_page
        (@response.rows if @response && @response.rows > 0) || # rubocop:disable Style/NumericPredicate
          params.fetch(:per_page, @blacklight_config.default_per_page).to_i
      end

      ##
      # The available options for results per page, in the style of #options_for_select
      def per_page_options_for_select
        return [] if @blacklight_config.per_page.blank?

        @blacklight_config.per_page.map do |count|
          [t(:'blacklight.search.per_page.label', count: count).html_safe, count]
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
blacklight-7.40.0 app/components/blacklight/search/per_page_component.rb
blacklight-7.39.0 app/components/blacklight/search/per_page_component.rb