Sha256: 30330c397cf38dee7a1a0c4bd092e8cf42f02331e8977882231e1819265dd624

Contents?: true

Size: 1.78 KB

Versions: 7

Compression:

Stored size: 1.78 KB

Contents

module Avo
  module Concerns
    module Pagination
      extend ActiveSupport::Concern

      included do
        include Pagy::Backend

        class_attribute :pagination, default: {}

        unless defined? PAGINATION_METHOD
          PAGINATION_METHOD = {
            default: :pagy,
            countless: :pagy_countless,
          }
        end

        unless defined? PAGINATION_DEFAULTS
          PAGINATION_DEFAULTS = {
            type: :default,
            size: ::Pagy::VERSION >= ::Gem::Version.new("9.0") ? 9 : [1, 2, 2, 1],
          }
        end
      end

      def pagination_type
        @pagination_type ||= ActiveSupport::StringInquirer.new(pagination_hash[:type].to_s)
      end

      def apply_pagination(index_params:, query:)
        extra_pagy_params = {}

        # Reset open filters when a user navigates to a new page
        if params[:keep_filters_panel_open] == "1"
          extra_pagy_params[:keep_filters_panel_open] = "0"
        end

        data_turbo_frame = "data-turbo-frame=\"#{CGI.escapeHTML(params[:turbo_frame]) if params[:turbo_frame]}\""

        send PAGINATION_METHOD[pagination_type.to_sym],
          query,
          items: index_params[:per_page], # Add per page in pagy < 9
          limit: index_params[:per_page], # Add per page in pagy >= 9
          link_extra: data_turbo_frame, # Add extra arguments in pagy 7.
          anchor_string: data_turbo_frame, # Add extra arguments in pagy 8.
          params: extra_pagy_params,
          size: pagination_hash[:size]
      end

      private

      def pagination_hash
        @pagination ||= PAGINATION_DEFAULTS.merge(Avo.configuration.pagination).merge Avo::ExecutionContext.new(
          target: pagination,
          resource: self,
          view: @view
        ).handle
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
avo-3.12.0 lib/avo/concerns/pagination.rb
avo-3.11.10 lib/avo/concerns/pagination.rb
avo-3.11.9 lib/avo/concerns/pagination.rb
avo-3.11.8 lib/avo/concerns/pagination.rb
avo-3.11.7 lib/avo/concerns/pagination.rb
avo-3.11.6 lib/avo/concerns/pagination.rb
avo-3.11.5 lib/avo/concerns/pagination.rb