Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 2 additions & 21 deletions app/components/blacklight/facet_field_filter_component.rb
Original file line number Diff line number Diff line change
@@ -1,25 +1,6 @@
# frozen_string_literal: true

module Blacklight
class FacetFieldFilterComponent < Blacklight::Component
def initialize(facet_field:)
@facet_field = facet_field
end

def render?
@facet_field.facet_field.index_range.any?
end

def prefix
@facet_field.paginator.prefix
end

def clear_facet_prefix_url
@facet_field.paginator.params_for_resort_url('index', @facet_field.search_state.to_h.except(@facet_field.paginator.request_keys[:prefix]))
end

def facet_prefix_url(letter)
@facet_field.paginator.params_for_resort_url('index', @facet_field.search_state.to_h.merge(@facet_field.paginator.request_keys[:prefix] => letter))
end
end
class FacetFieldFilterComponent < Facets::IndexNavigationComponent; end
FacetFieldFilterComponent = ActiveSupport::Deprecation::DeprecatedConstantProxy.new("FacetFieldFilterComponent", "Blacklight::Facets::IndexNavigationComponent", ActiveSupport::Deprecation.new)
end
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<div class="<%= classes %>">
<%= render Blacklight::Facets::SuggestComponent.new(presenter: presenter) %>
<%= render 'facet_index_navigation' if render_index_navigation? %>
<%= render Blacklight::Facets::IndexNavigationComponent.new(presenter: presenter) %>
</div>
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<li class="page-item <%= 'active' if prefix.blank? %>">
<%= link_to t('blacklight.search.facets.all'), clear_facet_prefix_url, data: { blacklight_modal: "preserve" }, class: 'page-link' %>
</li>
<% @facet_field.facet_field.index_range.each do |letter| %>
<% index_range.each do |letter| %>
<li class="page-item <%= 'active' if prefix == letter %>">
<%= link_to(letter, facet_prefix_url(letter), class: 'page-link', data: { blacklight_modal: "preserve" }) %>
</li>
Expand Down
32 changes: 32 additions & 0 deletions app/components/blacklight/facets/index_navigation_component.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# frozen_string_literal: true

module Blacklight
module Facets
class IndexNavigationComponent < Blacklight::Component
# @params [Blacklight::FacetFieldPresenter] presenter
def initialize(presenter:)
@presenter = presenter
end

def render?
index_range && @presenter.display_facet.index?
end

def index_range
@presenter.facet_field.index_range
end

def prefix
@presenter.paginator.prefix
end

def clear_facet_prefix_url
@presenter.paginator.params_for_resort_url('index', @presenter.search_state.to_h.except(@presenter.paginator.request_keys[:prefix]))
end

def facet_prefix_url(letter)
@presenter.paginator.params_for_resort_url('index', @presenter.search_state.to_h.merge(@presenter.paginator.request_keys[:prefix] => letter))
end
end
end
end
3 changes: 3 additions & 0 deletions app/controllers/concerns/blacklight/catalog.rb
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ def track

# displays values and pagination links for a single facet field
def facet
# @facet is a Blacklight::Configuration::FacetField
@facet = blacklight_config.facet_fields[params[:id]]
raise ActionController::RoutingError, 'Not Found' unless @facet

Expand All @@ -87,8 +88,10 @@ def facet
else
search_service.facet_field_response(@facet.key)
end
# @display_facet is a Blacklight::Solr::Response::Facets::FacetField
@display_facet = @response.aggregations[@facet.field]

# @presenter is a Blacklight::FacetFieldPresenter
@presenter = @facet.presenter.new(@facet, @display_facet, view_context)
@pagination = @presenter.paginator
respond_to do |format|
Expand Down
1 change: 0 additions & 1 deletion app/views/catalog/_facet_index_navigation.html.erb

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# frozen_string_literal: true

RSpec.describe Blacklight::Facets::IndexNavigationComponent, type: :component do
let(:pagination) { Blacklight::Solr::FacetPaginator.new([]) }
let(:facet) { Blacklight::Configuration::FacetField.new(index_range: '0'..'9', presenter: Blacklight::FacetFieldPresenter) }
let(:display_facet) { instance_double(Blacklight::Solr::Response::Facets::FacetField, items: [], offset: 0, prefix: '', sort: 'index', index?: true) }
let(:blacklight_config) { Blacklight::Configuration.new }

let(:presenter) { facet.presenter.new(facet, display_facet, vc_test_controller.view_context) }

before do
with_request_url "/catalog/facet/language" do
render_inline(described_class.new(presenter: presenter))
end
end

it 'renders the facet index navigation range' do
expect(page).to have_css '.pagination'
expect(page).to have_link '0', href: '/catalog/facet/language.html?facet.prefix=0&facet.sort=index'
expect(page).to have_link '1'
expect(page).to have_link '8'
expect(page).to have_link '9'
end

it 'renders an "all" button' do
expect(page).to have_css '.page-link', text: 'All'
end

context 'with a selected index' do
let(:display_facet) { instance_double(Blacklight::Solr::Response::Facets::FacetField, items: [], offset: 0, prefix: '5', sort: 'index', index?: true) }

it 'highlights the selected index' do
expect(page).to have_css '.active', text: '5'
end

it 'enables the clear facets button' do
expect(page).to have_link 'All'
end
end
end
43 changes: 0 additions & 43 deletions spec/views/catalog/_facet_index_navigation.html.erb_spec.rb

This file was deleted.