blacklight 8.8.0 → 9.0.0.beta1

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.
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
- }