Skip to content

Commit 4e25ceb

Browse files
authored
Merge pull request #3609 from projectblacklight/facet_filters_component
Extract Facets::FiltersComponent so it's display can be customized
2 parents c8f85f6 + 8b28435 commit 4e25ceb

File tree

7 files changed

+72
-20
lines changed

7 files changed

+72
-20
lines changed

app/assets/builds/blacklight.css

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -414,12 +414,6 @@ main {
414414
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;
415415
}
416416

417-
/* Facet browse pages & modals
418-
-------------------------------------------------- */
419-
.facet-filters:not(:has(*)) {
420-
display: none;
421-
}
422-
423417
/* Search History */
424418
.search-history {
425419
--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
@@ -206,9 +206,3 @@ $facet-toggle-height: $facet-toggle-width !default;
206206
$facet-toggle-width auto no-repeat;
207207
}
208208
}
209-
210-
/* Facet browse pages & modals
211-
-------------------------------------------------- */
212-
.facet-filters:not(:has(*)) {
213-
display: none;
214-
}
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::Facets::SuggestComponent.new(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::Facets
4+
class FiltersComponent < 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
@@ -2,10 +2,7 @@
22
<% component.with_title { facet_field_label(@facet.key) } %>
33
<% view_config = blacklight_config.view_config(document_index_view_type) %>
44

5-
<div class="facet-filters card card-body bg-light p-3 mb-3 border-0">
6-
<%= render Blacklight::Facets::SuggestComponent.new(presenter: @presenter) %>
7-
<%= render partial: 'facet_index_navigation' if @facet.index_range && @display_facet.index? %>
8-
</div>
5+
<%= render Blacklight::Facets::FiltersComponent.new(presenter: @presenter) %>
96

107
<div class="facet-pagination top d-flex flex-wrap w-100 justify-content-between border-bottom pb-3 mb-3">
118
<%= render view_config.facet_pagination_component.new(facet_field: @presenter) %>
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# frozen_string_literal: true
2+
3+
require 'spec_helper'
4+
5+
RSpec.describe Blacklight::Facets::FiltersComponent, type: :component do
6+
let(:facet_field) { Blacklight::Configuration::FacetField.new key: 'language_facet', suggest: true }
7+
let(:presenter) do
8+
instance_double(Blacklight::FacetFieldPresenter, facet_field: facet_field, label: 'Lang',
9+
view_context: view_context, suggest: true, key: 'lang')
10+
end
11+
let(:view_context) { vc_test_controller.view_context }
12+
13+
before do
14+
allow(view_context).to receive(:search_facet_path).and_return('/catalog/facet/language_facet')
15+
16+
with_request_url '/catalog?q=foo' do
17+
render_inline(component)
18+
end
19+
end
20+
21+
context 'with default classes' do
22+
let(:component) { described_class.new(presenter: presenter) }
23+
24+
it 'draws default classes' do
25+
expect(page).to have_css(".facet-filters.card.card-body.bg-light.p-3.mb-3.border-0")
26+
end
27+
end
28+
29+
context 'with custom classes' do
30+
let(:component) { described_class.new(presenter: presenter, classes: 'foo') }
31+
32+
it 'draws default classes' do
33+
expect(page).to have_css(".foo")
34+
end
35+
end
36+
end

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,17 @@
44
let(:display_facet) { double }
55
let(:blacklight_config) { Blacklight::Configuration.new }
66
let(:component) { instance_double(Blacklight::FacetComponent) }
7-
let(:facet_suggest_input) { instance_double(Blacklight::Facets::SuggestComponent) }
87
let(:pagination) { instance_double(Blacklight::FacetFieldPaginationComponent) }
8+
let(:facet_filters) { instance_double(Blacklight::Facets::FiltersComponent) }
99

1010
before do
1111
allow(Blacklight::FacetComponent).to receive(:new).and_return(component)
12-
allow(Blacklight::Facets::SuggestComponent).to receive(:new).and_return(facet_suggest_input)
12+
allow(Blacklight::Facets::FiltersComponent).to receive(:new).and_return(facet_filters)
1313
allow(Blacklight::FacetFieldPaginationComponent).to receive(:new).and_return(pagination)
1414

1515
allow(view).to receive(:render).and_call_original
1616
allow(view).to receive(:render).with(component)
17-
allow(view).to receive(:render).with(facet_suggest_input)
17+
allow(view).to receive(:render).with(facet_filters)
1818
allow(view).to receive(:render).with(pagination)
1919

2020
blacklight_config.add_facet_field 'xyz', label: "Facet title"
@@ -30,7 +30,7 @@
3030

3131
it "renders the subcomponents" do
3232
render
33-
expect(view).to have_received(:render).with(facet_suggest_input)
33+
expect(view).to have_received(:render).with(facet_filters)
3434
expect(view).to have_received(:render).with(pagination).twice
3535
end
3636

0 commit comments

Comments
 (0)