Skip to content

Commit 5681c28

Browse files
committed
Extract FacetFiltersComponent so it's display can be customized
1 parent bb8b429 commit 5681c28

File tree

6 files changed

+38
-20
lines changed

6 files changed

+38
-20
lines changed

app/assets/builds/blacklight.css

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -409,12 +409,6 @@ main {
409409
background: transparent url('data:image/svg+xml,%3csvg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-dash-square" viewBox="0 0 16 16"%3e%3cpath d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h12zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z" /%3e%3cpath d="M4 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 4 8z" /%3e%3c/svg%3e') center/1em auto no-repeat;
410410
}
411411

412-
/* Facet browse pages & modals
413-
-------------------------------------------------- */
414-
.facet-filters:not(:has(*)) {
415-
display: none;
416-
}
417-
418412
/* Search History */
419413
.search-history {
420414
--bl-history-filter-name-color: var(--bs-secondary-color);

app/assets/stylesheets/blacklight/_facets.scss

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -205,9 +205,3 @@ $facet-toggle-height: $facet-toggle-width !default;
205205
$facet-toggle-width auto no-repeat;
206206
}
207207
}
208-
209-
/* Facet browse pages & modals
210-
-------------------------------------------------- */
211-
.facet-filters:not(:has(*)) {
212-
display: none;
213-
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<div class="<%= classes %>">
2+
<%= render Blacklight::Search::FacetSuggestInput.new(facet: facet, presenter: presenter) %>
3+
<%= render 'facet_index_navigation' if render_index_navigation? %>
4+
</div>
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# frozen_string_literal: true
2+
3+
module Blacklight::Search
4+
class FacetFiltersComponent < Blacklight::Component
5+
# @param [Blacklight::FacetFieldPresenter] presenter
6+
def initialize(presenter:, classes: 'facet-filters card card-body bg-light p-3 mb-3 border-0')
7+
@presenter = presenter
8+
@classes = classes
9+
end
10+
11+
def facet
12+
@presenter.facet_field
13+
end
14+
15+
attr_reader :classes, :presenter
16+
17+
delegate :display_facet, to: :presenter
18+
19+
def render?
20+
facet.suggest != false || render_index_navigation?
21+
end
22+
23+
def render_index_navigation?
24+
facet.index_range && display_facet.index?
25+
end
26+
end
27+
end

app/views/catalog/facet.html.erb

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
<%= render Blacklight::System::ModalComponent.new do |component| %>
22
<% component.with_title { facet_field_label(@facet.key) } %>
33

4-
<div class="facet-filters card card-body bg-light p-3 mb-3 border-0">
5-
<%= render Blacklight::Search::FacetSuggestInput.new(facet: @facet, presenter: @presenter) %>
6-
<%= render partial: 'facet_index_navigation' if @facet.index_range && @display_facet.index? %>
7-
</div>
4+
<%= render Blacklight::Search::FacetFiltersComponent.new(presenter: @presenter) %>
85

96
<div class="facet-pagination top d-flex flex-wrap w-100 justify-content-between border-bottom pb-3 mb-3">
107
<%= render :partial=>'facet_pagination' %>

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

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,15 @@
55
let(:blacklight_config) { Blacklight::Configuration.new }
66
let(:component) { instance_double(Blacklight::FacetComponent) }
77
let(:facet_suggest_input) { instance_double(Blacklight::Search::FacetSuggestInput) }
8+
let(:facet_filters) { instance_double(Blacklight::Search::FacetFiltersComponent) }
89

910
before do
1011
allow(Blacklight::FacetComponent).to receive(:new).and_return(component)
11-
allow(Blacklight::Search::FacetSuggestInput).to receive(:new).and_return(facet_suggest_input)
12+
allow(Blacklight::Search::FacetFiltersComponent).to receive(:new).and_return(facet_filters)
13+
1214
allow(view).to receive(:render).and_call_original
1315
allow(view).to receive(:render).with(component)
14-
allow(view).to receive(:render).with(facet_suggest_input)
16+
allow(view).to receive(:render).with(facet_filters)
1517

1618
blacklight_config.add_facet_field 'xyz', label: "Facet title"
1719
allow(view).to receive(:blacklight_config).and_return(blacklight_config)
@@ -25,9 +27,9 @@
2527
expect(rendered).to have_css 'h1', text: "Facet title"
2628
end
2729

28-
it "renders the facet suggest input" do
30+
it "renders the facet filters" do
2931
render
30-
expect(view).to have_received(:render).with(facet_suggest_input)
32+
expect(view).to have_received(:render).with(facet_filters)
3133
end
3234

3335
it "renders facet pagination" do

0 commit comments

Comments
 (0)