Skip to content

Commit 3225a08

Browse files
authored
Merge pull request #3605 from projectblacklight/facet_index
Remove unnecessary partial and move render conditions to component
2 parents 9db61d2 + 2134a4a commit 3225a08

File tree

8 files changed

+79
-67
lines changed

8 files changed

+79
-67
lines changed
Lines changed: 2 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,6 @@
11
# frozen_string_literal: true
22

33
module Blacklight
4-
class FacetFieldFilterComponent < Blacklight::Component
5-
def initialize(facet_field:)
6-
@facet_field = facet_field
7-
end
8-
9-
def render?
10-
@facet_field.facet_field.index_range.any?
11-
end
12-
13-
def prefix
14-
@facet_field.paginator.prefix
15-
end
16-
17-
def clear_facet_prefix_url
18-
@facet_field.paginator.params_for_resort_url('index', @facet_field.search_state.to_h.except(@facet_field.paginator.request_keys[:prefix]))
19-
end
20-
21-
def facet_prefix_url(letter)
22-
@facet_field.paginator.params_for_resort_url('index', @facet_field.search_state.to_h.merge(@facet_field.paginator.request_keys[:prefix] => letter))
23-
end
24-
end
4+
class FacetFieldFilterComponent < Facets::IndexNavigationComponent; end
5+
FacetFieldFilterComponent = ActiveSupport::Deprecation::DeprecatedConstantProxy.new("FacetFieldFilterComponent", "Blacklight::Facets::IndexNavigationComponent", ActiveSupport::Deprecation.new)
256
end
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
<div class="<%= classes %>">
22
<%= render Blacklight::Facets::SuggestComponent.new(presenter: presenter) %>
3-
<%= render 'facet_index_navigation' if render_index_navigation? %>
3+
<%= render Blacklight::Facets::IndexNavigationComponent.new(presenter: presenter) %>
44
</div>

app/components/blacklight/facet_field_filter_component.html.erb renamed to app/components/blacklight/facets/index_navigation_component.html.erb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<li class="page-item <%= 'active' if prefix.blank? %>">
44
<%= link_to t('blacklight.search.facets.all'), clear_facet_prefix_url, data: { blacklight_modal: "preserve" }, class: 'page-link' %>
55
</li>
6-
<% @facet_field.facet_field.index_range.each do |letter| %>
6+
<% index_range.each do |letter| %>
77
<li class="page-item <%= 'active' if prefix == letter %>">
88
<%= link_to(letter, facet_prefix_url(letter), class: 'page-link', data: { blacklight_modal: "preserve" }) %>
99
</li>
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# frozen_string_literal: true
2+
3+
module Blacklight
4+
module Facets
5+
class IndexNavigationComponent < Blacklight::Component
6+
# @params [Blacklight::FacetFieldPresenter] presenter
7+
def initialize(presenter:)
8+
@presenter = presenter
9+
end
10+
11+
def render?
12+
index_range && @presenter.display_facet.index?
13+
end
14+
15+
def index_range
16+
@presenter.facet_field.index_range
17+
end
18+
19+
def prefix
20+
@presenter.paginator.prefix
21+
end
22+
23+
def clear_facet_prefix_url
24+
@presenter.paginator.params_for_resort_url('index', @presenter.search_state.to_h.except(@presenter.paginator.request_keys[:prefix]))
25+
end
26+
27+
def facet_prefix_url(letter)
28+
@presenter.paginator.params_for_resort_url('index', @presenter.search_state.to_h.merge(@presenter.paginator.request_keys[:prefix] => letter))
29+
end
30+
end
31+
end
32+
end

app/controllers/concerns/blacklight/catalog.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ def track
7979

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

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

94+
# @presenter is a Blacklight::FacetFieldPresenter
9295
@presenter = @facet.presenter.new(@facet, @display_facet, view_context)
9396
@pagination = @presenter.paginator
9497
respond_to do |format|

app/views/catalog/_facet_index_navigation.html.erb

Lines changed: 0 additions & 1 deletion
This file was deleted.
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# frozen_string_literal: true
2+
3+
RSpec.describe Blacklight::Facets::IndexNavigationComponent, type: :component do
4+
let(:pagination) { Blacklight::Solr::FacetPaginator.new([]) }
5+
let(:facet) { Blacklight::Configuration::FacetField.new(index_range: '0'..'9', presenter: Blacklight::FacetFieldPresenter) }
6+
let(:display_facet) { instance_double(Blacklight::Solr::Response::Facets::FacetField, items: [], offset: 0, prefix: '', sort: 'index', index?: true) }
7+
let(:blacklight_config) { Blacklight::Configuration.new }
8+
9+
let(:presenter) { facet.presenter.new(facet, display_facet, vc_test_controller.view_context) }
10+
11+
before do
12+
with_request_url "/catalog/facet/language" do
13+
render_inline(described_class.new(presenter: presenter))
14+
end
15+
end
16+
17+
it 'renders the facet index navigation range' do
18+
expect(page).to have_css '.pagination'
19+
expect(page).to have_link '0', href: '/catalog/facet/language.html?facet.prefix=0&facet.sort=index'
20+
expect(page).to have_link '1'
21+
expect(page).to have_link '8'
22+
expect(page).to have_link '9'
23+
end
24+
25+
it 'renders an "all" button' do
26+
expect(page).to have_css '.page-link', text: 'All'
27+
end
28+
29+
context 'with a selected index' do
30+
let(:display_facet) { instance_double(Blacklight::Solr::Response::Facets::FacetField, items: [], offset: 0, prefix: '5', sort: 'index', index?: true) }
31+
32+
it 'highlights the selected index' do
33+
expect(page).to have_css '.active', text: '5'
34+
end
35+
36+
it 'enables the clear facets button' do
37+
expect(page).to have_link 'All'
38+
end
39+
end
40+
end

spec/views/catalog/_facet_index_navigation.html.erb_spec.rb

Lines changed: 0 additions & 43 deletions
This file was deleted.

0 commit comments

Comments
 (0)