blacklight 7.7.0 → 7.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.docker/app/Dockerfile +26 -0
- data/.docker/app/entrypoint.sh +6 -0
- data/.env +5 -0
- data/.rubocop_todo.yml +13 -13
- data/.travis.yml +15 -23
- data/Gemfile +4 -1
- data/README.md +4 -0
- data/VERSION +1 -1
- data/app/assets/stylesheets/blacklight/_pagination.scss +4 -0
- data/app/components/blacklight/constraint_layout_component.html.erb +21 -0
- data/app/components/blacklight/constraint_layout_component.rb +16 -0
- data/app/components/blacklight/facet_field_component.html.erb +25 -0
- data/app/components/blacklight/facet_field_component.rb +11 -0
- data/app/components/blacklight/facet_field_list_component.html.erb +18 -0
- data/app/components/blacklight/facet_field_list_component.rb +22 -0
- data/app/components/blacklight/facet_field_no_layout_component.rb +13 -0
- data/app/components/blacklight/facet_item_component.rb +120 -0
- data/app/helpers/blacklight/catalog_helper_behavior.rb +2 -2
- data/app/helpers/blacklight/facets_helper_behavior.rb +84 -48
- data/app/helpers/blacklight/render_constraints_helper_behavior.rb +64 -33
- data/app/javascript/blacklight/modal.js +1 -1
- data/app/models/concerns/blacklight/document/extensions.rb +3 -0
- data/app/models/concerns/blacklight/document/semantic_fields.rb +0 -4
- data/app/presenters/blacklight/facet_field_presenter.rb +57 -0
- data/app/presenters/blacklight/facet_item_presenter.rb +81 -0
- data/app/views/catalog/_citation.html.erb +1 -1
- data/app/views/catalog/_constraints.html.erb +1 -1
- data/app/views/catalog/_constraints_element.html.erb +5 -24
- data/app/views/catalog/_email_form.html.erb +1 -1
- data/app/views/catalog/_facet_layout.html.erb +8 -17
- data/app/views/catalog/_facet_limit.html.erb +3 -12
- data/app/views/catalog/_facet_pagination.html.erb +2 -2
- data/app/views/catalog/_facet_pivot.html.erb +4 -4
- data/app/views/catalog/_sms_form.html.erb +1 -1
- data/blacklight.gemspec +1 -0
- data/config/locales/blacklight.ar.yml +29 -25
- data/docker-compose.yml +35 -0
- data/lib/blacklight/engine.rb +2 -6
- data/lib/blacklight/search_state.rb +32 -0
- data/lib/blacklight/solr/response/facets.rb +2 -0
- data/lib/generators/blacklight/assets_generator.rb +10 -0
- data/spec/{views/catalog/_constraints_element.html.erb_spec.rb → components/blacklight/constraint_layout_component_spec.rb} +21 -11
- data/spec/components/blacklight/facet_field_list_component_spec.rb +108 -0
- data/spec/components/blacklight/facet_item_component_spec.rb +50 -0
- data/spec/features/facets_spec.rb +1 -1
- data/spec/helpers/blacklight/facets_helper_behavior_spec.rb +24 -12
- data/spec/helpers/blacklight/render_constraints_helper_behavior_spec.rb +4 -23
- data/spec/lib/blacklight/search_state_spec.rb +38 -0
- data/spec/models/blacklight/solr/response/facets_spec.rb +30 -1
- data/spec/presenters/blacklight/facet_field_presenter_spec.rb +109 -0
- data/spec/presenters/blacklight/facet_item_presenter_spec.rb +92 -0
- data/spec/spec_helper.rb +2 -0
- data/spec/support/presenter_test_helpers.rb +11 -0
- data/spec/views/catalog/_facet_group.html.erb_spec.rb +1 -0
- data/tasks/blacklight.rake +30 -23
- metadata +43 -5
@@ -48,6 +48,44 @@ RSpec.describe Blacklight::SearchState do
|
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
51
|
+
describe '#query_param' do
|
52
|
+
let(:params) { parameter_class.new q: 'xyz' }
|
53
|
+
|
54
|
+
it 'returns the query param' do
|
55
|
+
expect(search_state.query_param).to eq 'xyz'
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
describe '#filter_params' do
|
60
|
+
let(:params) { parameter_class.new f: { ff: ['xyz'] } }
|
61
|
+
|
62
|
+
it 'returns the query param' do
|
63
|
+
expect(search_state.filter_params.deep_symbolize_keys).to eq(ff: ['xyz'])
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
describe '#has_constraints?' do
|
68
|
+
it 'is false' do
|
69
|
+
expect(search_state.has_constraints?).to eq false
|
70
|
+
end
|
71
|
+
|
72
|
+
context 'with a query param' do
|
73
|
+
let(:params) { parameter_class.new q: 'xyz' }
|
74
|
+
|
75
|
+
it 'is true' do
|
76
|
+
expect(search_state.has_constraints?).to eq true
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
context 'with a facet param' do
|
81
|
+
let(:params) { parameter_class.new f: { ff: ['xyz'] } }
|
82
|
+
|
83
|
+
it 'is true' do
|
84
|
+
expect(search_state.has_constraints?).to eq true
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
51
89
|
describe "params_for_search" do
|
52
90
|
let(:params) { parameter_class.new 'default' => 'params' }
|
53
91
|
|
@@ -168,9 +168,11 @@ RSpec.describe Blacklight::Solr::Response::Facets, api: true do
|
|
168
168
|
let(:facet_config) do
|
169
169
|
double(
|
170
170
|
key: 'my_query_facet_field',
|
171
|
+
sort: nil,
|
171
172
|
query: {
|
172
173
|
'a_simple_query' => { fq: 'field:search', label: 'A Human Readable label' },
|
173
174
|
'another_query' => { fq: 'field:different_search', label: 'Label' },
|
175
|
+
'query_with_many_results' => { fq: 'field:many_result_search', label: 'Yet another label' },
|
174
176
|
'without_results' => { fq: 'field:without_results', label: 'No results for this facet' }
|
175
177
|
}
|
176
178
|
)
|
@@ -184,6 +186,7 @@ RSpec.describe Blacklight::Solr::Response::Facets, api: true do
|
|
184
186
|
facet_queries: {
|
185
187
|
'field:search' => 10,
|
186
188
|
'field:different_search' => 2,
|
189
|
+
'field:many_result_search' => 100,
|
187
190
|
'field:not_appearing_in_the_config' => 50,
|
188
191
|
'field:without_results' => 0
|
189
192
|
}
|
@@ -197,7 +200,7 @@ RSpec.describe Blacklight::Solr::Response::Facets, api: true do
|
|
197
200
|
expect(field).to be_a_kind_of Blacklight::Solr::Response::Facets::FacetField
|
198
201
|
|
199
202
|
expect(field.name).to eq 'my_query_facet_field'
|
200
|
-
expect(field.items.size).to eq
|
203
|
+
expect(field.items.size).to eq 3
|
201
204
|
expect(field.items.map(&:value)).not_to include 'field:not_appearing_in_the_config'
|
202
205
|
|
203
206
|
facet_item = field.items.find { |x| x.value == 'a_simple_query' }
|
@@ -206,6 +209,32 @@ RSpec.describe Blacklight::Solr::Response::Facets, api: true do
|
|
206
209
|
expect(facet_item.hits).to eq 10
|
207
210
|
expect(facet_item.label).to eq 'A Human Readable label'
|
208
211
|
end
|
212
|
+
|
213
|
+
describe 'default/index sorting' do
|
214
|
+
it 'returns the results in the order they are requested by default' do
|
215
|
+
field = subject.aggregations['my_query_facet_field']
|
216
|
+
expect(field.items.map(&:value)).to eq %w[a_simple_query another_query query_with_many_results]
|
217
|
+
expect(field.items.map(&:hits)).to eq [10, 2, 100]
|
218
|
+
end
|
219
|
+
|
220
|
+
it 'returns the results in the order they are requested by when sort is explicitly set to "index"' do
|
221
|
+
allow(facet_config).to receive(:sort).and_return(:index)
|
222
|
+
|
223
|
+
field = subject.aggregations['my_query_facet_field']
|
224
|
+
expect(field.items.map(&:value)).to eq %w[a_simple_query another_query query_with_many_results]
|
225
|
+
expect(field.items.map(&:hits)).to eq [10, 2, 100]
|
226
|
+
end
|
227
|
+
end
|
228
|
+
|
229
|
+
describe 'count sorting' do
|
230
|
+
it 'returns the results sorted by count when requested' do
|
231
|
+
allow(facet_config).to receive(:sort).and_return(:count)
|
232
|
+
|
233
|
+
field = subject.aggregations['my_query_facet_field']
|
234
|
+
expect(field.items.map(&:value)).to eq %w[query_with_many_results a_simple_query another_query]
|
235
|
+
expect(field.items.map(&:hits)).to eq [100, 10, 2]
|
236
|
+
end
|
237
|
+
end
|
209
238
|
end
|
210
239
|
|
211
240
|
describe "pivot facets" do
|
@@ -0,0 +1,109 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
RSpec.describe Blacklight::FacetFieldPresenter, type: :presenter do
|
5
|
+
subject(:presenter) do
|
6
|
+
described_class.new(facet_field, display_facet, view_context, search_state)
|
7
|
+
end
|
8
|
+
|
9
|
+
let(:facet_field) { Blacklight::Configuration::FacetField.new(key: 'key') }
|
10
|
+
let(:display_facet) do
|
11
|
+
instance_double(Blacklight::Solr::Response::Facets::FacetField, items: items, sort: :index, offset: 0, prefix: nil)
|
12
|
+
end
|
13
|
+
let(:items) { [] }
|
14
|
+
let(:view_context) { controller.view_context }
|
15
|
+
let(:search_state) { view_context.search_state }
|
16
|
+
|
17
|
+
before do
|
18
|
+
allow(view_context).to receive(:facet_limit_for).and_return(20)
|
19
|
+
end
|
20
|
+
|
21
|
+
describe '#collapsed?' do
|
22
|
+
it "is collapsed by default" do
|
23
|
+
facet_field.collapse = true
|
24
|
+
expect(presenter.collapsed?).to be true
|
25
|
+
end
|
26
|
+
|
27
|
+
it "does not be collapse if the configuration says so" do
|
28
|
+
facet_field.collapse = false
|
29
|
+
expect(presenter).not_to be_collapsed
|
30
|
+
end
|
31
|
+
|
32
|
+
it "does not be collapsed if it is in the params" do
|
33
|
+
controller.params[:f] = ActiveSupport::HashWithIndifferentAccess.new(key: [1])
|
34
|
+
expect(presenter.collapsed?).to be false
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
describe '#active?' do
|
39
|
+
it "checks if any value is selected for a given facet" do
|
40
|
+
controller.params[:f] = ActiveSupport::HashWithIndifferentAccess.new(key: [1])
|
41
|
+
expect(presenter.active?).to eq true
|
42
|
+
end
|
43
|
+
|
44
|
+
it "is false if no value for facet is selected" do
|
45
|
+
expect(presenter.active?).to eq false
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
describe '#in_modal?' do
|
50
|
+
context 'for a modal-like action' do
|
51
|
+
before do
|
52
|
+
controller.params[:action] = 'facet'
|
53
|
+
end
|
54
|
+
|
55
|
+
it 'is true' do
|
56
|
+
expect(presenter.in_modal?).to eq true
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
it 'is false' do
|
61
|
+
expect(presenter.in_modal?).to eq false
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
describe '#modal_path' do
|
66
|
+
let(:paginator) { Blacklight::FacetPaginator.new([{}, {}], limit: 1) }
|
67
|
+
|
68
|
+
before do
|
69
|
+
allow(view_context).to receive(:facet_paginator).and_return(paginator)
|
70
|
+
end
|
71
|
+
|
72
|
+
context 'with no additional data' do
|
73
|
+
let(:paginator) { Blacklight::FacetPaginator.new([{}, {}], limit: 10) }
|
74
|
+
|
75
|
+
it 'is nil' do
|
76
|
+
expect(presenter.modal_path).to be_nil
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
it 'returns the path to the facet view' do
|
81
|
+
allow(view_context).to receive(:search_facet_path).with(id: 'key').and_return('/catalog/facet/key')
|
82
|
+
|
83
|
+
expect(presenter.modal_path).to eq '/catalog/facet/key'
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
describe '#label' do
|
88
|
+
it 'gets the label from the helper' do
|
89
|
+
allow(view_context).to receive(:facet_field_label).with('key').and_return('Label')
|
90
|
+
expect(presenter.label).to eq 'Label'
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
describe '#html_id' do
|
95
|
+
it 'gets the id from a helper' do
|
96
|
+
allow(view_context).to receive(:html_id).with('key').and_return('facet-key')
|
97
|
+
expect(presenter.html_id).to eq 'facet-key'
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
describe '#paginator' do
|
102
|
+
subject(:paginator) { presenter.paginator }
|
103
|
+
|
104
|
+
it 'return a paginator for the facet data' do
|
105
|
+
expect(paginator.current_page).to eq 1
|
106
|
+
expect(paginator.total_count).to eq 0
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
@@ -0,0 +1,92 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
RSpec.describe Blacklight::FacetItemPresenter, type: :presenter do
|
5
|
+
subject(:presenter) do
|
6
|
+
described_class.new(facet_item, facet_config, view_context, facet_field, search_state)
|
7
|
+
end
|
8
|
+
|
9
|
+
let(:facet_item) { instance_double(Blacklight::Solr::Response::Facets::FacetItem) }
|
10
|
+
let(:facet_config) { Blacklight::Configuration::FacetField.new(key: 'key') }
|
11
|
+
let(:facet_field) { instance_double(Blacklight::Solr::Response::Facets::FacetField) }
|
12
|
+
let(:view_context) { controller.view_context }
|
13
|
+
let(:search_state) { instance_double(Blacklight::SearchState) }
|
14
|
+
|
15
|
+
describe '#selected?' do
|
16
|
+
it 'works' do
|
17
|
+
allow(search_state).to receive(:has_facet?).and_return(true)
|
18
|
+
expect(presenter.selected?).to be true
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe '#label' do
|
23
|
+
it "is the facet value for an ordinary facet" do
|
24
|
+
allow(facet_config).to receive_messages(query: nil, date: nil, helper_method: nil, url_method: nil)
|
25
|
+
expect(presenter.label).to eq facet_item
|
26
|
+
end
|
27
|
+
|
28
|
+
it "allows you to pass in a :helper_method argument to the configuration" do
|
29
|
+
allow(facet_config).to receive_messages(query: nil, date: nil, url_method: nil, helper_method: :my_facet_value_renderer)
|
30
|
+
allow(view_context).to receive(:my_facet_value_renderer).with(facet_item).and_return('abc')
|
31
|
+
expect(presenter.label).to eq 'abc'
|
32
|
+
end
|
33
|
+
|
34
|
+
context 'with a query facet' do
|
35
|
+
let(:facet_item) { :query_key }
|
36
|
+
|
37
|
+
it "extracts the configuration label for a query facet" do
|
38
|
+
allow(facet_config).to receive_messages(query: { query_key: { label: 'XYZ' } }, date: nil, helper_method: nil, url_method: nil)
|
39
|
+
expect(presenter.label).to eq 'XYZ'
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
context 'with a date facet' do
|
44
|
+
let(:facet_item) { '2012-01-01' }
|
45
|
+
|
46
|
+
it "localizes the label for date-type facets" do
|
47
|
+
allow(facet_config).to receive_messages('date' => true, :query => nil, :helper_method => nil, :url_method => nil)
|
48
|
+
expect(presenter.label).to eq 'Sun, 01 Jan 2012 00:00:00 +0000'
|
49
|
+
end
|
50
|
+
|
51
|
+
it "localizes the label for date-type facets with the supplied localization options" do
|
52
|
+
allow(facet_config).to receive_messages(date: { format: :short }, query: nil, helper_method: nil, url_method: nil)
|
53
|
+
expect(presenter.label).to eq '01 Jan 00:00'
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
describe '#href' do
|
59
|
+
before do
|
60
|
+
allow(search_state).to receive(:has_facet?).and_return(false)
|
61
|
+
end
|
62
|
+
|
63
|
+
it 'is the url to apply the facet' do
|
64
|
+
allow(search_state).to receive(:add_facet_params_and_redirect).with('key', facet_item).and_return(f: 'x')
|
65
|
+
allow(view_context).to receive(:search_action_path).with(f: 'x').and_return('/catalog?f=x')
|
66
|
+
|
67
|
+
expect(presenter.href).to eq '/catalog?f=x'
|
68
|
+
end
|
69
|
+
|
70
|
+
context 'with url_method configuration' do
|
71
|
+
before do
|
72
|
+
allow(facet_config).to receive_messages(url_method: :some_helper_method)
|
73
|
+
end
|
74
|
+
|
75
|
+
it 'calls out to a helper to determine the url' do
|
76
|
+
allow(view_context).to receive(:some_helper_method).and_return('/xyz').with('key', facet_item)
|
77
|
+
|
78
|
+
expect(presenter.href).to eq '/xyz'
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
context 'with a selected facet' do
|
83
|
+
it 'is the url to remove the facet' do
|
84
|
+
allow(search_state).to receive(:has_facet?).and_return(true)
|
85
|
+
allow(search_state).to receive(:remove_facet_params).with('key', facet_item).and_return({})
|
86
|
+
allow(view_context).to receive(:search_action_path).with({}).and_return('/catalog')
|
87
|
+
|
88
|
+
expect(presenter.href).to eq '/catalog'
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -54,6 +54,8 @@ RSpec.configure do |config|
|
|
54
54
|
end
|
55
55
|
|
56
56
|
config.infer_spec_type_from_file_location!
|
57
|
+
config.include PresenterTestHelpers, type: :presenter
|
58
|
+
config.include ViewComponent::TestHelpers, type: :component
|
57
59
|
|
58
60
|
config.include(ControllerLevelHelpers, type: :helper)
|
59
61
|
config.before(:each, type: :helper) { initialize_controller_helpers(helper) }
|
@@ -0,0 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module PresenterTestHelpers
|
4
|
+
def controller
|
5
|
+
@controller ||= ViewComponent::Base.test_controller.constantize.new.tap { |c| c.request = request }.extend(Rails.application.routes.url_helpers)
|
6
|
+
end
|
7
|
+
|
8
|
+
def request
|
9
|
+
@request ||= ActionDispatch::TestRequest.create
|
10
|
+
end
|
11
|
+
end
|
@@ -6,6 +6,7 @@ RSpec.describe "catalog/_facet_group" do
|
|
6
6
|
before do
|
7
7
|
allow(view).to receive_messages(blacklight_config: blacklight_config)
|
8
8
|
allow(view).to receive(:search_action_path).and_return('/catalog')
|
9
|
+
allow(view).to receive(:search_facet_path).and_return('/catalog')
|
9
10
|
end
|
10
11
|
|
11
12
|
context "without any facet fields" do
|
data/tasks/blacklight.rake
CHANGED
@@ -10,12 +10,26 @@ end
|
|
10
10
|
require 'rubocop/rake_task'
|
11
11
|
RuboCop::RakeTask.new(:rubocop)
|
12
12
|
|
13
|
+
def with_solr
|
14
|
+
puts "Starting Solr"
|
15
|
+
system "docker-compose up -d solr"
|
16
|
+
yield
|
17
|
+
ensure
|
18
|
+
puts "Stopping Solr"
|
19
|
+
system "docker-compose stop solr"
|
20
|
+
end
|
21
|
+
|
13
22
|
desc "Run test suite"
|
14
|
-
task ci
|
15
|
-
|
16
|
-
|
23
|
+
task :ci do
|
24
|
+
with_solr do
|
25
|
+
Rake::Task['engine_cart:generate'].invoke
|
26
|
+
|
27
|
+
within_test_app do
|
28
|
+
system "RAILS_ENV=test bin/rake blacklight:index:seed"
|
29
|
+
end
|
30
|
+
|
31
|
+
Rake::Task['blacklight:coverage'].invoke
|
17
32
|
end
|
18
|
-
Rake::Task['blacklight:coverage'].invoke
|
19
33
|
end
|
20
34
|
|
21
35
|
namespace :blacklight do
|
@@ -25,34 +39,27 @@ namespace :blacklight do
|
|
25
39
|
Rake::Task["spec"].invoke
|
26
40
|
end
|
27
41
|
|
28
|
-
desc "Create the test rails app"
|
29
|
-
task generate: ['engine_cart:generate'] do
|
30
|
-
end
|
31
|
-
|
32
42
|
namespace :internal do
|
43
|
+
desc 'Index seed data in test app'
|
33
44
|
task seed: ['engine_cart:generate'] do
|
34
45
|
within_test_app do
|
35
|
-
system "
|
46
|
+
system "bin/rake blacklight:index:seed"
|
36
47
|
end
|
37
48
|
end
|
38
49
|
end
|
39
50
|
|
40
51
|
desc 'Run Solr and Blacklight for interactive development'
|
41
|
-
task :server, [:rails_server_args] do |_t, args|
|
42
|
-
|
43
|
-
|
44
|
-
system "bundle update"
|
45
|
-
end
|
46
|
-
else
|
47
|
-
Rake::Task['engine_cart:generate'].invoke
|
48
|
-
end
|
49
|
-
|
50
|
-
SolrWrapper.wrap do |solr|
|
51
|
-
solr.with_collection do
|
52
|
-
Rake::Task['blacklight:internal:seed'].invoke
|
52
|
+
task :server, [:rails_server_args] => ['engine_cart:generate'] do |_t, args|
|
53
|
+
with_solr do
|
54
|
+
Rake::Task['blacklight:internal:seed'].invoke
|
53
55
|
|
54
|
-
|
55
|
-
|
56
|
+
within_test_app do
|
57
|
+
begin
|
58
|
+
puts "Starting Blacklight (Rails server)"
|
59
|
+
system "bin/rails s #{args[:rails_server_args]}"
|
60
|
+
rescue Interrupt
|
61
|
+
# We expect folks to Ctrl-c to stop the server so don't barf at them
|
62
|
+
puts "\nStopping Blacklight (Rails server)"
|
56
63
|
end
|
57
64
|
end
|
58
65
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: blacklight
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 7.
|
4
|
+
version: 7.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jonathan Rochkind
|
@@ -17,7 +17,7 @@ authors:
|
|
17
17
|
autorequire:
|
18
18
|
bindir: exe
|
19
19
|
cert_chain: []
|
20
|
-
date: 2020-
|
20
|
+
date: 2020-05-21 00:00:00.000000000 Z
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
23
23
|
name: rails
|
@@ -95,6 +95,20 @@ dependencies:
|
|
95
95
|
- - ">="
|
96
96
|
- !ruby/object:Gem::Version
|
97
97
|
version: '0'
|
98
|
+
- !ruby/object:Gem::Dependency
|
99
|
+
name: view_component
|
100
|
+
requirement: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - ">="
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: '0'
|
105
|
+
type: :runtime
|
106
|
+
prerelease: false
|
107
|
+
version_requirements: !ruby/object:Gem::Requirement
|
108
|
+
requirements:
|
109
|
+
- - ">="
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: '0'
|
98
112
|
- !ruby/object:Gem::Dependency
|
99
113
|
name: rsolr
|
100
114
|
requirement: !ruby/object:Gem::Requirement
|
@@ -294,6 +308,9 @@ executables: []
|
|
294
308
|
extensions: []
|
295
309
|
extra_rdoc_files: []
|
296
310
|
files:
|
311
|
+
- ".docker/app/Dockerfile"
|
312
|
+
- ".docker/app/entrypoint.sh"
|
313
|
+
- ".env"
|
297
314
|
- ".gitignore"
|
298
315
|
- ".hound.yml"
|
299
316
|
- ".jshintrc"
|
@@ -335,6 +352,14 @@ files:
|
|
335
352
|
- app/assets/stylesheets/blacklight/blacklight.scss
|
336
353
|
- app/assets/stylesheets/blacklight/blacklight_defaults.scss
|
337
354
|
- app/builders/blacklight/action_builder.rb
|
355
|
+
- app/components/blacklight/constraint_layout_component.html.erb
|
356
|
+
- app/components/blacklight/constraint_layout_component.rb
|
357
|
+
- app/components/blacklight/facet_field_component.html.erb
|
358
|
+
- app/components/blacklight/facet_field_component.rb
|
359
|
+
- app/components/blacklight/facet_field_list_component.html.erb
|
360
|
+
- app/components/blacklight/facet_field_list_component.rb
|
361
|
+
- app/components/blacklight/facet_field_no_layout_component.rb
|
362
|
+
- app/components/blacklight/facet_item_component.rb
|
338
363
|
- app/controllers/bookmarks_controller.rb
|
339
364
|
- app/controllers/catalog_controller.rb
|
340
365
|
- app/controllers/concerns/blacklight/base.rb
|
@@ -393,6 +418,8 @@ files:
|
|
393
418
|
- app/models/search.rb
|
394
419
|
- app/models/solr_document.rb
|
395
420
|
- app/presenters/blacklight/document_presenter.rb
|
421
|
+
- app/presenters/blacklight/facet_field_presenter.rb
|
422
|
+
- app/presenters/blacklight/facet_item_presenter.rb
|
396
423
|
- app/presenters/blacklight/field_presenter.rb
|
397
424
|
- app/presenters/blacklight/index_presenter.rb
|
398
425
|
- app/presenters/blacklight/json_presenter.rb
|
@@ -518,6 +545,7 @@ files:
|
|
518
545
|
- db/migrate/20140202020201_create_searches.rb
|
519
546
|
- db/migrate/20140202020202_create_bookmarks.rb
|
520
547
|
- db/migrate/20140320000000_add_polymorphic_type_to_bookmarks.rb
|
548
|
+
- docker-compose.yml
|
521
549
|
- lib/blacklight.rb
|
522
550
|
- lib/blacklight/abstract_repository.rb
|
523
551
|
- lib/blacklight/configuration.rb
|
@@ -593,6 +621,9 @@ files:
|
|
593
621
|
- lib/railties/blacklight.rake
|
594
622
|
- package-lock.json
|
595
623
|
- package.json
|
624
|
+
- spec/components/blacklight/constraint_layout_component_spec.rb
|
625
|
+
- spec/components/blacklight/facet_field_list_component_spec.rb
|
626
|
+
- spec/components/blacklight/facet_item_component_spec.rb
|
596
627
|
- spec/controllers/alternate_controller_spec.rb
|
597
628
|
- spec/controllers/application_controller_spec.rb
|
598
629
|
- spec/controllers/blacklight/base_spec.rb
|
@@ -670,6 +701,8 @@ files:
|
|
670
701
|
- spec/models/search_spec.rb
|
671
702
|
- spec/models/solr_document_spec.rb
|
672
703
|
- spec/presenters/blacklight/document_presenter_spec.rb
|
704
|
+
- spec/presenters/blacklight/facet_field_presenter_spec.rb
|
705
|
+
- spec/presenters/blacklight/facet_item_presenter_spec.rb
|
673
706
|
- spec/presenters/blacklight/field_presenter_spec.rb
|
674
707
|
- spec/presenters/blacklight/index_presenter_spec.rb
|
675
708
|
- spec/presenters/blacklight/json_presenter_spec.rb
|
@@ -684,10 +717,10 @@ files:
|
|
684
717
|
- spec/support/controller_level_helpers.rb
|
685
718
|
- spec/support/features.rb
|
686
719
|
- spec/support/features/session_helpers.rb
|
720
|
+
- spec/support/presenter_test_helpers.rb
|
687
721
|
- spec/test_app_templates/Gemfile.extra
|
688
722
|
- spec/test_app_templates/lib/generators/test_app_generator.rb
|
689
723
|
- spec/views/catalog/_constraints.html.erb_spec.rb
|
690
|
-
- spec/views/catalog/_constraints_element.html.erb_spec.rb
|
691
724
|
- spec/views/catalog/_document.html.erb_spec.rb
|
692
725
|
- spec/views/catalog/_document_list.html.erb_spec.rb
|
693
726
|
- spec/views/catalog/_facet_group.html.erb_spec.rb
|
@@ -738,12 +771,15 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
738
771
|
- !ruby/object:Gem::Version
|
739
772
|
version: '0'
|
740
773
|
requirements: []
|
741
|
-
rubygems_version: 3.1.
|
774
|
+
rubygems_version: 3.1.2
|
742
775
|
signing_key:
|
743
776
|
specification_version: 4
|
744
777
|
summary: Blacklight provides a discovery interface for any Solr (http://lucene.apache.org/solr)
|
745
778
|
index.
|
746
779
|
test_files:
|
780
|
+
- spec/components/blacklight/constraint_layout_component_spec.rb
|
781
|
+
- spec/components/blacklight/facet_field_list_component_spec.rb
|
782
|
+
- spec/components/blacklight/facet_item_component_spec.rb
|
747
783
|
- spec/controllers/alternate_controller_spec.rb
|
748
784
|
- spec/controllers/application_controller_spec.rb
|
749
785
|
- spec/controllers/blacklight/base_spec.rb
|
@@ -821,6 +857,8 @@ test_files:
|
|
821
857
|
- spec/models/search_spec.rb
|
822
858
|
- spec/models/solr_document_spec.rb
|
823
859
|
- spec/presenters/blacklight/document_presenter_spec.rb
|
860
|
+
- spec/presenters/blacklight/facet_field_presenter_spec.rb
|
861
|
+
- spec/presenters/blacklight/facet_item_presenter_spec.rb
|
824
862
|
- spec/presenters/blacklight/field_presenter_spec.rb
|
825
863
|
- spec/presenters/blacklight/index_presenter_spec.rb
|
826
864
|
- spec/presenters/blacklight/json_presenter_spec.rb
|
@@ -835,10 +873,10 @@ test_files:
|
|
835
873
|
- spec/support/controller_level_helpers.rb
|
836
874
|
- spec/support/features.rb
|
837
875
|
- spec/support/features/session_helpers.rb
|
876
|
+
- spec/support/presenter_test_helpers.rb
|
838
877
|
- spec/test_app_templates/Gemfile.extra
|
839
878
|
- spec/test_app_templates/lib/generators/test_app_generator.rb
|
840
879
|
- spec/views/catalog/_constraints.html.erb_spec.rb
|
841
|
-
- spec/views/catalog/_constraints_element.html.erb_spec.rb
|
842
880
|
- spec/views/catalog/_document.html.erb_spec.rb
|
843
881
|
- spec/views/catalog/_document_list.html.erb_spec.rb
|
844
882
|
- spec/views/catalog/_facet_group.html.erb_spec.rb
|