blacklight 8.8.0 → 9.0.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (178) hide show
  1. checksums.yaml +4 -4
  2. data/.env +3 -3
  3. data/.github/pull_request_template.md +7 -0
  4. data/.github/workflows/ruby.yml +16 -19
  5. data/.rubocop.yml +2 -2
  6. data/.rubocop_todo.yml +0 -9
  7. data/README.md +30 -8
  8. data/VERSION +1 -1
  9. data/app/assets/builds/blacklight.css +448 -0
  10. data/app/assets/javascripts/blacklight/blacklight.esm.js +19 -16
  11. data/app/assets/javascripts/blacklight/blacklight.esm.js.map +1 -1
  12. data/app/assets/javascripts/blacklight/blacklight.js +19 -16
  13. data/app/assets/javascripts/blacklight/blacklight.js.map +1 -1
  14. data/app/assets/stylesheets/blacklight/_balanced_list.scss +1 -4
  15. data/app/assets/stylesheets/blacklight/_blacklight_base.scss +1 -3
  16. data/app/assets/stylesheets/blacklight/_bookmark.scss +44 -41
  17. data/app/assets/stylesheets/blacklight/_bootstrap_overrides.scss +7 -26
  18. data/app/assets/stylesheets/blacklight/_constraints.scss +15 -24
  19. data/app/assets/stylesheets/blacklight/_controls.scss +2 -18
  20. data/app/assets/stylesheets/blacklight/_facets.scss +15 -82
  21. data/app/assets/stylesheets/blacklight/_group.scss +2 -5
  22. data/app/assets/stylesheets/blacklight/_header.scss +4 -11
  23. data/app/assets/stylesheets/blacklight/_icons.scss +0 -8
  24. data/app/assets/stylesheets/blacklight/_modal.scss +2 -2
  25. data/app/assets/stylesheets/blacklight/_pagination.scss +0 -4
  26. data/app/assets/stylesheets/blacklight/_search_form.scss +7 -1
  27. data/app/assets/stylesheets/blacklight/_search_history.scss +0 -4
  28. data/app/assets/stylesheets/blacklight/_search_results.scss +1 -15
  29. data/app/assets/stylesheets/blacklight/blacklight_defaults.scss +9 -14
  30. data/app/assets/stylesheets/blacklight/build.scss +4 -0
  31. data/app/components/blacklight/advanced_search_form_component.rb +1 -1
  32. data/app/components/blacklight/constraint_component.rb +1 -1
  33. data/app/components/blacklight/constraint_layout_component.html.erb +2 -2
  34. data/app/components/blacklight/constraints_component.html.erb +2 -2
  35. data/app/components/blacklight/constraints_component.rb +1 -1
  36. data/app/components/blacklight/document/bookmark_component.html.erb +3 -3
  37. data/app/components/blacklight/document/group_component.html.erb +1 -1
  38. data/app/components/blacklight/document/page_header_component.rb +1 -1
  39. data/app/components/blacklight/document/sidebar_component.rb +5 -5
  40. data/app/components/blacklight/document_component.rb +9 -13
  41. data/app/components/blacklight/document_title_component.rb +3 -2
  42. data/app/components/blacklight/facet_field_component.html.erb +4 -4
  43. data/app/components/blacklight/facet_field_list_component.rb +4 -22
  44. data/app/components/blacklight/facet_field_pagination_component.html.erb +4 -4
  45. data/app/components/blacklight/facet_field_pagination_component.rb +2 -1
  46. data/app/components/blacklight/facet_item_component.rb +2 -2
  47. data/app/components/blacklight/facet_item_pivot_component.rb +2 -2
  48. data/app/components/blacklight/response/facet_group_component.html.erb +3 -18
  49. data/app/components/blacklight/response/facet_group_component.rb +7 -23
  50. data/app/components/blacklight/response/facet_toggle_button_component.html.erb +16 -0
  51. data/app/components/blacklight/response/facet_toggle_button_component.rb +14 -0
  52. data/app/components/blacklight/response/pagination_component.html.erb +1 -1
  53. data/app/components/blacklight/response/pagination_component.rb +2 -1
  54. data/app/components/blacklight/response/sort_component.rb +1 -0
  55. data/app/components/blacklight/response/view_type_button_component.html.erb +1 -1
  56. data/app/components/blacklight/response/view_type_component.html.erb +1 -1
  57. data/app/components/blacklight/search/facet_suggest_input.html.erb +7 -7
  58. data/app/components/blacklight/search/facet_suggest_input.rb +0 -4
  59. data/app/components/blacklight/search/per_page_component.html.erb +1 -1
  60. data/app/components/blacklight/search/per_page_component.rb +1 -0
  61. data/app/components/blacklight/search/sidebar_component.html.erb +1 -1
  62. data/app/components/blacklight/search/sidebar_component.rb +1 -1
  63. data/app/components/blacklight/search_bar_component.html.erb +3 -3
  64. data/app/components/blacklight/search_bar_component.rb +2 -2
  65. data/app/components/blacklight/search_button_component.rb +2 -2
  66. data/app/components/blacklight/search_context/server_applied_params_component.html.erb +2 -2
  67. data/app/components/blacklight/search_context/server_applied_params_component.rb +9 -0
  68. data/app/components/blacklight/skip_link_component.html.erb +1 -1
  69. data/app/components/blacklight/skip_link_component.rb +7 -3
  70. data/app/components/blacklight/skip_link_item_component.rb +18 -0
  71. data/app/components/blacklight/top_navbar_component.html.erb +1 -1
  72. data/app/controllers/concerns/blacklight/catalog.rb +3 -2
  73. data/app/controllers/concerns/blacklight/search_context.rb +0 -12
  74. data/app/helpers/blacklight/blacklight_helper_behavior.rb +0 -6
  75. data/app/helpers/blacklight/catalog_helper_behavior.rb +6 -12
  76. data/app/helpers/blacklight/configuration_helper_behavior.rb +0 -12
  77. data/app/helpers/blacklight/document_helper_behavior.rb +0 -26
  78. data/app/helpers/blacklight/icon_helper_behavior.rb +1 -9
  79. data/app/helpers/blacklight/layout_helper_behavior.rb +2 -2
  80. data/app/helpers/blacklight/render_partials_helper_behavior.rb +0 -14
  81. data/app/helpers/blacklight/url_helper_behavior.rb +1 -1
  82. data/app/javascript/{blacklight → blacklight-frontend}/bookmark_toggle.js +1 -1
  83. data/app/javascript/{blacklight → blacklight-frontend}/core.js +2 -10
  84. data/app/javascript/{blacklight → blacklight-frontend}/debounce.js +1 -1
  85. data/app/javascript/{blacklight → blacklight-frontend}/facet_suggest.js +4 -4
  86. data/app/javascript/blacklight-frontend/index.js +18 -0
  87. data/app/javascript/{blacklight → blacklight-frontend}/modal.js +16 -2
  88. data/app/models/blacklight/facet_paginator.rb +1 -1
  89. data/app/models/concerns/blacklight/document.rb +0 -11
  90. data/app/models/concerns/blacklight/user.rb +1 -1
  91. data/app/presenters/blacklight/facet_field_presenter.rb +2 -2
  92. data/app/services/blacklight/search_params_yaml_coder.rb +0 -2
  93. data/app/views/bookmarks/_clear_bookmarks_widget.html.erb +0 -2
  94. data/app/views/bookmarks/index.html.erb +1 -1
  95. data/app/views/catalog/_results_pagination.html.erb +2 -5
  96. data/app/views/catalog/_search_results.html.erb +4 -4
  97. data/app/views/catalog/_search_results_header.html.erb +1 -1
  98. data/app/views/catalog/_sort_and_per_page.html.erb +1 -1
  99. data/app/views/catalog/_sort_widget.html.erb +1 -0
  100. data/app/views/catalog/facet.html.erb +1 -1
  101. data/app/views/catalog/show.html.erb +2 -3
  102. data/app/views/kaminari/blacklight/_paginator.html.erb +1 -2
  103. data/app/views/layouts/blacklight/base.html.erb +3 -7
  104. data/app/views/search_history/index.html.erb +0 -2
  105. data/blacklight.gemspec +4 -4
  106. data/compose.yaml +1 -0
  107. data/config/importmap.rb +1 -1
  108. data/config/locales/blacklight.ar.yml +4 -4
  109. data/config/locales/blacklight.ca.yml +124 -124
  110. data/config/locales/blacklight.de.yml +2 -2
  111. data/config/locales/blacklight.en.yml +14 -14
  112. data/config/locales/blacklight.es.yml +4 -4
  113. data/config/locales/blacklight.fr.yml +4 -4
  114. data/config/locales/blacklight.hu.yml +4 -4
  115. data/config/locales/blacklight.it.yml +3 -3
  116. data/config/locales/blacklight.nl.yml +3 -3
  117. data/config/locales/blacklight.pt-BR.yml +3 -3
  118. data/config/locales/blacklight.sq.yml +4 -4
  119. data/config/locales/blacklight.zh.yml +4 -4
  120. data/lib/blacklight/configuration/display_field.rb +1 -1
  121. data/lib/blacklight/configuration/fields.rb +3 -3
  122. data/lib/blacklight/configuration/view_config.rb +0 -2
  123. data/lib/blacklight/configuration.rb +7 -12
  124. data/lib/blacklight/engine.rb +0 -6
  125. data/lib/blacklight/open_struct_with_hash_access.rb +4 -4
  126. data/lib/blacklight/search_builder.rb +4 -4
  127. data/lib/blacklight/solr/request.rb +1 -7
  128. data/lib/blacklight/solr/response/group_response.rb +2 -2
  129. data/lib/blacklight.rb +1 -1
  130. data/lib/generators/blacklight/assets/importmap_generator.rb +8 -24
  131. data/lib/generators/blacklight/assets/propshaft_generator.rb +1 -1
  132. data/lib/generators/blacklight/assets_generator.rb +3 -3
  133. data/lib/generators/blacklight/controller_generator.rb +3 -3
  134. data/lib/generators/blacklight/templates/solr/conf/solrconfig.xml +1 -1
  135. data/lib/generators/blacklight/user_generator.rb +9 -10
  136. data/package.json +14 -4
  137. data/rollup.config.js +1 -1
  138. data/spec/components/blacklight/document/action_component_spec.rb +1 -5
  139. data/spec/components/blacklight/document/sidebar_component_spec.rb +5 -20
  140. data/spec/components/blacklight/facet_field_checkboxes_component_spec.rb +2 -2
  141. data/spec/components/blacklight/facet_field_list_component_spec.rb +2 -2
  142. data/spec/components/blacklight/search/facet_suggest_input_spec.rb +2 -18
  143. data/spec/components/blacklight/search_bar_component_spec.rb +1 -1
  144. data/spec/features/axe_spec.rb +6 -11
  145. data/spec/features/bookmarks_spec.rb +48 -11
  146. data/spec/features/facets_spec.rb +25 -14
  147. data/spec/features/search_context_spec.rb +1 -2
  148. data/spec/features/search_filters_spec.rb +6 -6
  149. data/spec/helpers/blacklight/configuration_helper_behavior_spec.rb +0 -9
  150. data/spec/helpers/blacklight/render_partials_helper_behavior_spec.rb +1 -1
  151. data/spec/helpers/catalog_helper_spec.rb +8 -0
  152. data/spec/models/blacklight/solr/request_spec.rb +7 -0
  153. data/spec/test_app_templates/Gemfile.extra +0 -1
  154. data/spec/views/catalog/_facet_layout.html.erb_spec.rb +3 -3
  155. data/spec/views/catalog/index.html.erb_spec.rb +6 -3
  156. data/spec/views/catalog/show.html.erb_spec.rb +1 -0
  157. data/tasks/blacklight.rake +8 -5
  158. metadata +30 -57
  159. data/app/assets/stylesheets/blacklight/_autocomplete.scss +0 -25
  160. data/app/assets/stylesheets/blacklight/_mixins.scss +0 -20
  161. data/app/components/blacklight/icons/legacy_icon_component.rb +0 -30
  162. data/app/javascript/blacklight/index.js +0 -18
  163. data/app/views/catalog/_constraints.html.erb +0 -1
  164. data/app/views/catalog/_facets.html.erb +0 -5
  165. data/app/views/catalog/_search_form.html.erb +0 -7
  166. data/app/views/catalog/_search_header.html.erb +0 -1
  167. data/app/views/catalog/_show_sidebar.html.erb +0 -3
  168. data/app/views/catalog/_show_tools.html.erb +0 -2
  169. data/app/views/catalog/_start_over.html.erb +0 -1
  170. data/app/views/shared/_header_navbar.html.erb +0 -1
  171. data/lib/generators/blacklight/assets/sprockets_generator.rb +0 -68
  172. data/spec/views/catalog/_search_header.erb_spec.rb +0 -14
  173. data/spec/views/catalog/_show_sidebar.erb_spec.rb +0 -24
  174. data/spec/views/catalog/_show_tools.html.erb_spec.rb +0 -37
  175. /data/app/javascript/{blacklight → blacklight-frontend}/button_focus.js +0 -0
  176. /data/app/javascript/{blacklight → blacklight-frontend}/checkbox_submit.js +0 -0
  177. /data/app/javascript/{blacklight → blacklight-frontend}/modalForm.js +0 -0
  178. /data/app/javascript/{blacklight → blacklight-frontend}/search_context.js +0 -0
@@ -1,6 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  RSpec.describe "Bookmarks" do
4
+ before do
5
+ # Prevent any existing bookmarks from interfering
6
+ Bookmark.delete_all
7
+ end
8
+
4
9
  describe "navigating from the homepage" do
5
10
  it "has a link to the history page" do
6
11
  sign_in 'user1'
@@ -40,13 +45,25 @@ RSpec.describe "Bookmarks" do
40
45
  expect(page).to have_content 'Successfully removed bookmark.'
41
46
  end
42
47
 
43
- it 'shows bookmarks as checkboxes', :js do
44
- visit solr_document_path('2007020969')
45
- check 'Bookmark'
48
+ context 'when bookmark_icon_component is set to nil' do
49
+ let!(:default_bookmark_icon_component) { CatalogController.blacklight_config.bookmark_icon_component }
46
50
 
47
- visit solr_document_path('2007020969')
48
- expect(page).to have_css('input[type="checkbox"][checked]')
49
- uncheck 'In Bookmarks'
51
+ before do
52
+ CatalogController.blacklight_config.bookmark_icon_component = nil
53
+ end
54
+
55
+ after do
56
+ CatalogController.blacklight_config.bookmark_icon_component = default_bookmark_icon_component
57
+ end
58
+
59
+ it 'shows bookmarks as checkboxes', :js do
60
+ visit solr_document_path('2007020969')
61
+ check 'Bookmark'
62
+
63
+ visit solr_document_path('2007020969')
64
+ expect(page).to have_css('input[type="checkbox"][checked]')
65
+ uncheck 'In Bookmarks'
66
+ end
50
67
  end
51
68
 
52
69
  it "adds bookmarks after a user logs in" do
@@ -82,17 +99,37 @@ RSpec.describe "Bookmarks" do
82
99
  expect(page).to have_content 'Ci an zhou bian'
83
100
  end
84
101
 
85
- context "has bookmark icon" do
102
+ context "when the bookmark icon is configured (default)" do
103
+ it 'shows bookmark icon', :js do
104
+ visit solr_document_path('2007020969')
105
+ expect(page).to have_css('.blacklight-icons-bookmark')
106
+ find('.blacklight-icons-bookmark').click
107
+
108
+ expect(find('.toggle-bookmark-input', visible: false)).to be_checked
109
+ find('.blacklight-icons-bookmark').click
110
+ end
111
+ end
112
+
113
+ context "without bookmark navbar element" do
114
+ let!(:default_nav_partials) { CatalogController.blacklight_config.navbar.partials }
115
+
86
116
  before do
87
- CatalogController.blacklight_config.bookmark_icon_component = Blacklight::Icons::BookmarkIconComponent
117
+ CatalogController.blacklight_config.navbar.partials = CatalogController.blacklight_config.navbar.partials.except(:bookmark)
118
+ end
119
+
120
+ after do
121
+ CatalogController.blacklight_config.navbar.partials = default_nav_partials
88
122
  end
89
123
 
90
- it 'shows bookmark icon instead of checkbox', :js do
124
+ it 'adds and removes bookmarks', :js do
91
125
  visit solr_document_path('2007020969')
92
- expect(page).to have_css('.blacklight-icons-bookmark')
126
+ expect(page).to have_no_css('#bookmarks_nav')
93
127
  find('.blacklight-icons-bookmark').click
94
128
 
95
- expect(find('.toggle-bookmark[type="checkbox"]', visible: false)).to be_checked
129
+ expect(page).to have_content 'In Bookmarks'
130
+
131
+ visit solr_document_path('2007020969')
132
+ expect(find('.toggle-bookmark-input', visible: false)).to be_checked
96
133
  find('.blacklight-icons-bookmark').click
97
134
  end
98
135
  end
@@ -100,23 +100,34 @@ RSpec.describe "Facets" do
100
100
  end
101
101
 
102
102
  describe 'Facet modal' do
103
- context 'when configured' do
104
- before do
105
- enabled = CatalogController.blacklight_config.dup
106
- enabled.facet_fields[:subject_ssim].merge!({ suggest: true })
107
- allow(CatalogController).to receive(:blacklight_config).and_return enabled
108
- end
103
+ it 'allows the user to filter a long list of facet values', :js do
104
+ visit '/catalog/facet/subject_ssim'
105
+ expect(page).to have_no_link 'Old age' # This is on the second page of facet values
106
+ expect(page).to have_css 'a.facet-select', count: 20
107
+
108
+ fill_in 'facet_suggest_subject_ssim', with: "ag"
109
109
 
110
- it 'allows the user to filter a long list of facet values', :js do
111
- visit '/catalog/facet/subject_ssim'
112
- expect(page).to have_no_link 'Old age' # This is on the second page of facet values
113
- expect(page).to have_css 'a.facet-select', count: 20
110
+ expect(page).to have_link 'Old age'
111
+ expect(page).to have_css 'a.facet-select', count: 2
112
+ end
114
113
 
115
- fill_in 'facet_suggest_subject_ssim', with: "ag"
114
+ it 'shows the user facet suggestions that are relevant to their q param', :js do
115
+ visit '/catalog/facet/subject_ssim?q=tibet&search_field=all_fields'
116
+ fill_in 'facet_suggest_subject_ssim', with: 'la'
116
117
 
117
- expect(page).to have_link 'Old age'
118
- expect(page).to have_css 'a.facet-select', count: 2
119
- end
118
+ expect(page).to have_link 'Tibetan language'
119
+ expect(page).to have_css 'a.facet-select', count: 1
120
+ end
121
+
122
+ it 'allows the user to filter more than once', :js do
123
+ visit '/catalog/facet/subject_ssim'
124
+ expect(page).to have_no_link 'Old age' # This is on the second page of facet values
125
+ expect(page).to have_css 'a.facet-select', count: 20
126
+
127
+ fill_in 'facet_suggest_subject_ssim', with: "ag"
128
+
129
+ expect(page).to have_link 'Old age'
130
+ expect(page).to have_link('Old age', href: '/?f%5Bsubject_ssim%5D%5B%5D=Old+age')
120
131
  end
121
132
  end
122
133
  end
@@ -47,10 +47,9 @@ RSpec.describe "Search Results context" do
47
47
  search_for ''
48
48
  expect(page).to have_content "1 - 10"
49
49
  find_all('.index_title a').last.click
50
- expect(page).to have_css "h1", text: "Pluvial nectar"
51
50
  click_on "Next »"
52
51
 
53
- expect(page).to have_css "h1", text: "Naqdī barā-yi tamām-i"
52
+ expect(page).to have_content "Naqdī barā-yi tamām-i"
54
53
  click_on "Back to Search"
55
54
  expect(page).to have_content "11 - 20"
56
55
  end
@@ -171,7 +171,7 @@ RSpec.describe "Facets" do
171
171
  visit root_path
172
172
 
173
173
  within(".blacklight-subject_ssim") do
174
- expect(page).to have_no_css(".card-body", visible: true)
174
+ expect(page).to have_no_css(".accordion-body", visible: true)
175
175
  end
176
176
  end
177
177
 
@@ -179,9 +179,9 @@ RSpec.describe "Facets" do
179
179
  visit root_path
180
180
 
181
181
  within(".blacklight-subject_ssim") do
182
- expect(page).to have_no_css(".card-body", visible: true)
182
+ expect(page).to have_no_css(".accordion-body", visible: true)
183
183
  click_on 'Topic'
184
- expect(page).to have_css(".card-body", visible: true)
184
+ expect(page).to have_css(".accordion-body", visible: true)
185
185
  end
186
186
  end
187
187
 
@@ -189,9 +189,9 @@ RSpec.describe "Facets" do
189
189
  visit root_path
190
190
 
191
191
  within(".blacklight-subject_ssim") do
192
- expect(page).to have_no_css(".card-body", visible: true)
193
- find(".card-header").click
194
- expect(page).to have_css(".card-body", visible: true)
192
+ expect(page).to have_no_css(".accordion-body", visible: true)
193
+ find(".accordion-header").click
194
+ expect(page).to have_css(".accordion-body", visible: true)
195
195
  end
196
196
  end
197
197
 
@@ -93,15 +93,6 @@ RSpec.describe Blacklight::ConfigurationHelperBehavior do
93
93
  end
94
94
  end
95
95
 
96
- describe "#per_page_options_for_select" do
97
- it "is the per-page values formatted as options_for_select" do
98
- allow(helper).to receive_messages(blacklight_config: double(per_page: [11, 22, 33]))
99
- expect(helper.per_page_options_for_select).to include ["11<span class=\"sr-only visually-hidden\"> per page</span>", 11]
100
- expect(helper.per_page_options_for_select).to include ["22<span class=\"sr-only visually-hidden\"> per page</span>", 22]
101
- expect(helper.per_page_options_for_select).to include ["33<span class=\"sr-only visually-hidden\"> per page</span>", 33]
102
- end
103
- end
104
-
105
96
  describe "#should_render_field?" do
106
97
  let(:field_config) { double('field config', if: true, unless: false) }
107
98
 
@@ -31,7 +31,7 @@ RSpec.describe Blacklight::RenderPartialsHelperBehavior do
31
31
  end
32
32
  end
33
33
 
34
- describe "#render_document_partials" do
34
+ describe "#render_document_partial" do
35
35
  let(:doc) { double }
36
36
 
37
37
  before do
@@ -261,6 +261,14 @@ RSpec.describe CatalogHelper do
261
261
  it "renders a facet with more than two values" do
262
262
  expect(helper.render_search_to_page_title_filter('foo', %w[bar baz foobar])).to eq "Foo: 3 selected"
263
263
  end
264
+
265
+ it "strips tags from html_safe values" do
266
+ expect(helper.render_search_to_page_title_filter('Year', ['<span class="from" data-blrl-begin="1990">1990</span> to <span class="to" data-blrl-end="1999">1999</span>'.html_safe])).to eq "Year: 1990 to 1999"
267
+ end
268
+
269
+ it "does not strip tags from non-html_safe values" do
270
+ expect(helper.render_search_to_page_title_filter('Folder', ['Some > Nested > <span>Hierarchy</span>'])).to eq "Folder: Some > Nested > <span>Hierarchy</span>"
271
+ end
264
272
  end
265
273
 
266
274
  describe "#render_search_to_page_title" do
@@ -64,5 +64,12 @@ RSpec.describe Blacklight::Solr::Request, :api do
64
64
 
65
65
  expect(subject.dig('json', 'query', 'bool', 'must')).to contain_exactly('some query', 'also required')
66
66
  end
67
+
68
+ it 'filters out empty query' do
69
+ subject['q'] = ""
70
+ subject.append_boolean_query :must, 'present query'
71
+
72
+ expect(subject.dig('json', 'query', 'bool', 'must')).to contain_exactly('present query')
73
+ end
67
74
  end
68
75
  end
@@ -1,5 +1,4 @@
1
1
  gem 'rails-controller-testing'
2
- gem 'rails-i18n', github: 'Shopify/rails-i18n', branch: 'schwad_rails_8'
3
2
 
4
3
  unless ENV['VIEW_COMPONENT_VERSION'].to_s == ""
5
4
  gem 'view_component', ENV.fetch('VIEW_COMPONENT_VERSION')
@@ -28,14 +28,14 @@ RSpec.describe "catalog/facet_layout" do
28
28
  it "is collapsable" do
29
29
  render partial: 'catalog/facet_layout', locals: { facet_field: facet_field }
30
30
  expect(rendered).to have_css 'button.collapsed[data-toggle="collapse"][data-bs-toggle="collapse"][aria-expanded="false"]'
31
- expect(rendered).to have_css '.collapse .card-body'
31
+ expect(rendered).to have_css '.collapse .accordion-body'
32
32
  end
33
33
 
34
34
  it "is configured to be open by default" do
35
35
  allow(facet_field).to receive_messages(collapse: false)
36
36
  render partial: 'catalog/facet_layout', locals: { facet_field: facet_field }
37
37
  expect(rendered).to have_css 'button[data-toggle="collapse"][data-bs-toggle="collapse"][aria-expanded="true"]'
38
- expect(rendered).to have_no_css '.card-header.collapsed'
39
- expect(rendered).to have_css '.collapse.show .card-body'
38
+ expect(rendered).to have_no_css '.accordion-header.collapsed'
39
+ expect(rendered).to have_css '.collapse.show .accordion-body'
40
40
  end
41
41
  end
@@ -19,14 +19,17 @@ RSpec.describe "catalog/index.html.erb" do
19
19
  describe "with search parameters" do
20
20
  before do
21
21
  stub_template "catalog/_results_pagination.html.erb" => ""
22
- stub_template "catalog/_search_header.html.erb" => "header_content"
23
22
  allow(view).to receive_messages(has_search_parameters?: true, blacklight_config: Blacklight::Configuration.new)
24
- @response = instance_double(Blacklight::Solr::Response, empty?: true, total: 11, start: 1, limit_value: 10)
23
+ allow(controller).to receive_messages(blacklight_config: Blacklight::Configuration.new)
24
+
25
+ @response = response
25
26
  end
26
27
 
28
+ let(:response) { Blacklight::Solr::Response.new({ response: { numFound: 30 } }, start: 10, rows: 10) }
29
+
27
30
  it "renders the search_header partial" do
28
31
  render
29
- expect(rendered).to match /header_content/
32
+ expect(rendered).to match /sortAndPerPage/
30
33
  end
31
34
  end
32
35
  end
@@ -7,6 +7,7 @@ RSpec.describe "catalog/show.html.erb" do
7
7
 
8
8
  before do
9
9
  allow(presenter).to receive(:html_title).and_return('Heading')
10
+ allow(document).to receive(:more_like_this).and_return([])
10
11
  allow(view).to receive_messages(has_user_authentication_provider?: false)
11
12
  allow(view).to receive_messages(render_document_sidebar_partial: "Sidebar")
12
13
  allow(view).to receive_messages(current_search_session: nil, search_session: {})
@@ -3,7 +3,7 @@
3
3
  require 'engine_cart/rake_task'
4
4
 
5
5
  require 'rspec/core/rake_task'
6
- RSpec::Core::RakeTask.new(:spec) do |t|
6
+ RSpec::Core::RakeTask.new(spec: 'blacklight:build_host_assets') do |t|
7
7
  t.pattern = 'spec/**/*_spec.rb'
8
8
  end
9
9
 
@@ -46,15 +46,18 @@ desc "Run test suite"
46
46
  task ci: ['build:npm'] do
47
47
  with_solr do
48
48
  Rake::Task['blacklight:internal:seed'].invoke
49
- within_test_app do
50
- # Precompiles the assets
51
- system "bin/rake spec:prepare"
52
- end
53
49
  Rake::Task['blacklight:coverage'].invoke
54
50
  end
55
51
  end
56
52
 
57
53
  namespace :blacklight do
54
+ task :build_host_assets do
55
+ within_test_app do
56
+ # Precompiles the assets
57
+ `bin/rails spec:prepare`
58
+ end
59
+ end
60
+
58
61
  desc "Run tests with coverage"
59
62
  task :coverage do
60
63
  ENV['COVERAGE'] = 'true'
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: 8.8.0
4
+ version: 9.0.0.beta1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonathan Rochkind
@@ -14,10 +14,9 @@ authors:
14
14
  - Dan Funk
15
15
  - Naomi Dushay
16
16
  - Justin Coyne
17
- autorequire:
18
17
  bindir: exe
19
18
  cert_chain: []
20
- date: 2025-01-21 00:00:00.000000000 Z
19
+ date: 2025-02-06 00:00:00.000000000 Z
21
20
  dependencies:
22
21
  - !ruby/object:Gem::Dependency
23
22
  name: rails
@@ -25,7 +24,7 @@ dependencies:
25
24
  requirements:
26
25
  - - ">="
27
26
  - !ruby/object:Gem::Version
28
- version: '6.1'
27
+ version: '7.0'
29
28
  - - "<"
30
29
  - !ruby/object:Gem::Version
31
30
  version: '9'
@@ -35,7 +34,7 @@ dependencies:
35
34
  requirements:
36
35
  - - ">="
37
36
  - !ruby/object:Gem::Version
38
- version: '6.1'
37
+ version: '7.0'
39
38
  - - "<"
40
39
  - !ruby/object:Gem::Version
41
40
  version: '9'
@@ -113,22 +112,16 @@ dependencies:
113
112
  name: view_component
114
113
  requirement: !ruby/object:Gem::Requirement
115
114
  requirements:
116
- - - ">="
117
- - !ruby/object:Gem::Version
118
- version: '2.74'
119
- - - "<"
115
+ - - "~>"
120
116
  - !ruby/object:Gem::Version
121
- version: '4'
117
+ version: '3.9'
122
118
  type: :runtime
123
119
  prerelease: false
124
120
  version_requirements: !ruby/object:Gem::Requirement
125
121
  requirements:
126
- - - ">="
127
- - !ruby/object:Gem::Version
128
- version: '2.74'
129
- - - "<"
122
+ - - "~>"
130
123
  - !ruby/object:Gem::Version
131
- version: '4'
124
+ version: '3.9'
132
125
  - !ruby/object:Gem::Dependency
133
126
  name: zeitwerk
134
127
  requirement: !ruby/object:Gem::Requirement
@@ -167,22 +160,16 @@ dependencies:
167
160
  name: rspec-rails
168
161
  requirement: !ruby/object:Gem::Requirement
169
162
  requirements:
170
- - - ">="
171
- - !ruby/object:Gem::Version
172
- version: '6.1'
173
- - - "<"
163
+ - - "~>"
174
164
  - !ruby/object:Gem::Version
175
- version: '8'
165
+ version: '7.0'
176
166
  type: :development
177
167
  prerelease: false
178
168
  version_requirements: !ruby/object:Gem::Requirement
179
169
  requirements:
180
- - - ">="
181
- - !ruby/object:Gem::Version
182
- version: '6.1'
183
- - - "<"
170
+ - - "~>"
184
171
  - !ruby/object:Gem::Version
185
- version: '8'
172
+ version: '7.0'
186
173
  - !ruby/object:Gem::Dependency
187
174
  name: rspec-collection_matchers
188
175
  requirement: !ruby/object:Gem::Requirement
@@ -422,6 +409,7 @@ files:
422
409
  - ".docker/app/entrypoint.sh"
423
410
  - ".dockerignore"
424
411
  - ".env"
412
+ - ".github/pull_request_template.md"
425
413
  - ".github/workflows/ruby.yml"
426
414
  - ".gitignore"
427
415
  - ".hound.yml"
@@ -437,6 +425,7 @@ files:
437
425
  - README.md
438
426
  - Rakefile
439
427
  - VERSION
428
+ - app/assets/builds/blacklight.css
440
429
  - app/assets/config/blacklight/manifest.js
441
430
  - app/assets/images/blacklight/logo.png
442
431
  - app/assets/images/favicon.ico
@@ -444,7 +433,6 @@ files:
444
433
  - app/assets/javascripts/blacklight/blacklight.esm.js.map
445
434
  - app/assets/javascripts/blacklight/blacklight.js
446
435
  - app/assets/javascripts/blacklight/blacklight.js.map
447
- - app/assets/stylesheets/blacklight/_autocomplete.scss
448
436
  - app/assets/stylesheets/blacklight/_balanced_list.scss
449
437
  - app/assets/stylesheets/blacklight/_blacklight_base.scss
450
438
  - app/assets/stylesheets/blacklight/_bookmark.scss
@@ -456,7 +444,6 @@ files:
456
444
  - app/assets/stylesheets/blacklight/_header.scss
457
445
  - app/assets/stylesheets/blacklight/_icons.scss
458
446
  - app/assets/stylesheets/blacklight/_layout.scss
459
- - app/assets/stylesheets/blacklight/_mixins.scss
460
447
  - app/assets/stylesheets/blacklight/_modal.scss
461
448
  - app/assets/stylesheets/blacklight/_pagination.scss
462
449
  - app/assets/stylesheets/blacklight/_search_form.scss
@@ -464,6 +451,7 @@ files:
464
451
  - app/assets/stylesheets/blacklight/_search_results.scss
465
452
  - app/assets/stylesheets/blacklight/blacklight.scss
466
453
  - app/assets/stylesheets/blacklight/blacklight_defaults.scss
454
+ - app/assets/stylesheets/blacklight/build.scss
467
455
  - app/builders/blacklight/action_builder.rb
468
456
  - app/components/blacklight/advanced_search_form_component.html.erb
469
457
  - app/components/blacklight/advanced_search_form_component.rb
@@ -520,7 +508,6 @@ files:
520
508
  - app/components/blacklight/hidden_search_state_component.rb
521
509
  - app/components/blacklight/icons/bookmark_icon_component.rb
522
510
  - app/components/blacklight/icons/icon_component.rb
523
- - app/components/blacklight/icons/legacy_icon_component.rb
524
511
  - app/components/blacklight/icons/list_component.rb
525
512
  - app/components/blacklight/icons/remove_component.rb
526
513
  - app/components/blacklight/icons/search_component.rb
@@ -531,6 +518,8 @@ files:
531
518
  - app/components/blacklight/metadata_field_plain_text_layout_component.rb
532
519
  - app/components/blacklight/response/facet_group_component.html.erb
533
520
  - app/components/blacklight/response/facet_group_component.rb
521
+ - app/components/blacklight/response/facet_toggle_button_component.html.erb
522
+ - app/components/blacklight/response/facet_toggle_button_component.rb
534
523
  - app/components/blacklight/response/pagination_component.html.erb
535
524
  - app/components/blacklight/response/pagination_component.rb
536
525
  - app/components/blacklight/response/sort_component.html.erb
@@ -561,6 +550,7 @@ files:
561
550
  - app/components/blacklight/search_navbar_component.rb
562
551
  - app/components/blacklight/skip_link_component.html.erb
563
552
  - app/components/blacklight/skip_link_component.rb
553
+ - app/components/blacklight/skip_link_item_component.rb
564
554
  - app/components/blacklight/start_over_button_component.rb
565
555
  - app/components/blacklight/system/dropdown_button_component.rb
566
556
  - app/components/blacklight/system/dropdown_component.html.erb
@@ -593,16 +583,16 @@ files:
593
583
  - app/helpers/blacklight/url_helper_behavior.rb
594
584
  - app/helpers/blacklight_helper.rb
595
585
  - app/helpers/catalog_helper.rb
596
- - app/javascript/blacklight/bookmark_toggle.js
597
- - app/javascript/blacklight/button_focus.js
598
- - app/javascript/blacklight/checkbox_submit.js
599
- - app/javascript/blacklight/core.js
600
- - app/javascript/blacklight/debounce.js
601
- - app/javascript/blacklight/facet_suggest.js
602
- - app/javascript/blacklight/index.js
603
- - app/javascript/blacklight/modal.js
604
- - app/javascript/blacklight/modalForm.js
605
- - app/javascript/blacklight/search_context.js
586
+ - app/javascript/blacklight-frontend/bookmark_toggle.js
587
+ - app/javascript/blacklight-frontend/button_focus.js
588
+ - app/javascript/blacklight-frontend/checkbox_submit.js
589
+ - app/javascript/blacklight-frontend/core.js
590
+ - app/javascript/blacklight-frontend/debounce.js
591
+ - app/javascript/blacklight-frontend/facet_suggest.js
592
+ - app/javascript/blacklight-frontend/index.js
593
+ - app/javascript/blacklight-frontend/modal.js
594
+ - app/javascript/blacklight-frontend/modalForm.js
595
+ - app/javascript/blacklight-frontend/search_context.js
606
596
  - app/models/blacklight/facet_paginator.rb
607
597
  - app/models/blacklight/icon.rb
608
598
  - app/models/blacklight/suggest_search.rb
@@ -659,7 +649,6 @@ files:
659
649
  - app/views/catalog/_advanced_search_help.html.erb
660
650
  - app/views/catalog/_bookmark_control.html.erb
661
651
  - app/views/catalog/_citation.html.erb
662
- - app/views/catalog/_constraints.html.erb
663
652
  - app/views/catalog/_did_you_mean.html.erb
664
653
  - app/views/catalog/_document.atom.builder
665
654
  - app/views/catalog/_document.html.erb
@@ -670,7 +659,6 @@ files:
670
659
  - app/views/catalog/_facet_layout.html.erb
671
660
  - app/views/catalog/_facet_pagination.html.erb
672
661
  - app/views/catalog/_facet_pivot.html.erb
673
- - app/views/catalog/_facets.html.erb
674
662
  - app/views/catalog/_field.json.jbuilder
675
663
  - app/views/catalog/_group.html.erb
676
664
  - app/views/catalog/_home.html.erb
@@ -679,19 +667,14 @@ files:
679
667
  - app/views/catalog/_paginate_compact.html.erb
680
668
  - app/views/catalog/_per_page_widget.html.erb
681
669
  - app/views/catalog/_results_pagination.html.erb
682
- - app/views/catalog/_search_form.html.erb
683
- - app/views/catalog/_search_header.html.erb
684
670
  - app/views/catalog/_search_results.html.erb
685
671
  - app/views/catalog/_search_results_header.html.erb
686
672
  - app/views/catalog/_search_sidebar.html.erb
687
673
  - app/views/catalog/_show_main_content.html.erb
688
674
  - app/views/catalog/_show_more_like_this.html.erb
689
- - app/views/catalog/_show_sidebar.html.erb
690
- - app/views/catalog/_show_tools.html.erb
691
675
  - app/views/catalog/_sms_form.html.erb
692
676
  - app/views/catalog/_sort_and_per_page.html.erb
693
677
  - app/views/catalog/_sort_widget.html.erb
694
- - app/views/catalog/_start_over.html.erb
695
678
  - app/views/catalog/_view_type_group.html.erb
696
679
  - app/views/catalog/_zero_results.html.erb
697
680
  - app/views/catalog/advanced_search.html.erb
@@ -732,7 +715,6 @@ files:
732
715
  - app/views/shared/_flash_messages.html.erb
733
716
  - app/views/shared/_flash_msg.html.erb
734
717
  - app/views/shared/_footer.html.erb
735
- - app/views/shared/_header_navbar.html.erb
736
718
  - app/views/shared/_modal.html.erb
737
719
  - app/views/shared/_sitelinks_search_box.html.erb
738
720
  - app/views/shared/_user_util_links.html.erb
@@ -805,7 +787,6 @@ files:
805
787
  - lib/blacklight/version.rb
806
788
  - lib/generators/blacklight/assets/importmap_generator.rb
807
789
  - lib/generators/blacklight/assets/propshaft_generator.rb
808
- - lib/generators/blacklight/assets/sprockets_generator.rb
809
790
  - lib/generators/blacklight/assets_generator.rb
810
791
  - lib/generators/blacklight/controller_generator.rb
811
792
  - lib/generators/blacklight/document_generator.rb
@@ -983,9 +964,6 @@ files:
983
964
  - spec/views/catalog/_facet_index_navigation.html.erb_spec.rb
984
965
  - spec/views/catalog/_facet_layout.html.erb_spec.rb
985
966
  - spec/views/catalog/_paginate_compact.html.erb_spec.rb
986
- - spec/views/catalog/_search_header.erb_spec.rb
987
- - spec/views/catalog/_show_sidebar.erb_spec.rb
988
- - spec/views/catalog/_show_tools.html.erb_spec.rb
989
967
  - spec/views/catalog/_sort_and_per_page.html.erb_spec.rb
990
968
  - spec/views/catalog/_sort_widget.html.erb_spec.rb
991
969
  - spec/views/catalog/_view_type_group.html.erb_spec.rb
@@ -1006,7 +984,6 @@ homepage: http://projectblacklight.org/
1006
984
  licenses:
1007
985
  - Apache 2.0
1008
986
  metadata: {}
1009
- post_install_message:
1010
987
  rdoc_options: []
1011
988
  require_paths:
1012
989
  - lib
@@ -1014,15 +991,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
1014
991
  requirements:
1015
992
  - - ">="
1016
993
  - !ruby/object:Gem::Version
1017
- version: '2.7'
994
+ version: '3.1'
1018
995
  required_rubygems_version: !ruby/object:Gem::Requirement
1019
996
  requirements:
1020
997
  - - ">="
1021
998
  - !ruby/object:Gem::Version
1022
999
  version: '0'
1023
1000
  requirements: []
1024
- rubygems_version: 3.4.19
1025
- signing_key:
1001
+ rubygems_version: 3.6.2
1026
1002
  specification_version: 4
1027
1003
  summary: Blacklight provides a discovery interface for any Solr (http://lucene.apache.org/solr)
1028
1004
  index.
@@ -1167,9 +1143,6 @@ test_files:
1167
1143
  - spec/views/catalog/_facet_index_navigation.html.erb_spec.rb
1168
1144
  - spec/views/catalog/_facet_layout.html.erb_spec.rb
1169
1145
  - spec/views/catalog/_paginate_compact.html.erb_spec.rb
1170
- - spec/views/catalog/_search_header.erb_spec.rb
1171
- - spec/views/catalog/_show_sidebar.erb_spec.rb
1172
- - spec/views/catalog/_show_tools.html.erb_spec.rb
1173
1146
  - spec/views/catalog/_sort_and_per_page.html.erb_spec.rb
1174
1147
  - spec/views/catalog/_sort_widget.html.erb_spec.rb
1175
1148
  - spec/views/catalog/_view_type_group.html.erb_spec.rb
@@ -1,25 +0,0 @@
1
- auto-complete [aria-selected="true"],
2
- auto-complete [role="option"]:hover {
3
- background-color: $dropdown-link-hover-bg;
4
- }
5
- auto-complete {
6
- position: relative;
7
- flex-grow: 3;
8
-
9
- ul {
10
- list-style-type: none;
11
- position: absolute;
12
- background-color: $dropdown-bg;
13
- padding-left: 0;
14
- border: 1px solid $dropdown-border-color;
15
- border-radius: $dropdown-border-radius;
16
- }
17
-
18
- [role="option"]{
19
- padding: 0.25rem 1.5rem;
20
- }
21
- }
22
-
23
- .no-js #autocomplete-popup {
24
- display: none;
25
- }
@@ -1,20 +0,0 @@
1
- // define a visually-hidden class that applies to a given breakpoint and below
2
- // https://getbootstrap.com/docs/5.3/helpers/visually-hidden/
3
- @if mixin-exists(visually-hidden) {
4
- @each $breakpoint in map-keys($grid-breakpoints) {
5
- .visually-hidden-#{$breakpoint} {
6
- @include media-breakpoint-down($breakpoint) {
7
- @include visually-hidden;
8
- }
9
- }
10
- }
11
- } @else if mixin-exists(sr-only) {
12
- // Bootstrap 4 version
13
- @each $breakpoint in map-keys($grid-breakpoints) {
14
- .visually-hidden-#{$breakpoint} {
15
- @include media-breakpoint-down($breakpoint) {
16
- @include sr-only;
17
- }
18
- }
19
- }
20
- }