blacklight 8.8.2 → 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 (172) 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 +1 -9
  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 +18 -15
  11. data/app/assets/javascripts/blacklight/blacklight.esm.js.map +1 -1
  12. data/app/assets/javascripts/blacklight/blacklight.js +18 -15
  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 +0 -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_item_component.rb +2 -2
  45. data/app/components/blacklight/facet_item_pivot_component.rb +2 -2
  46. data/app/components/blacklight/response/facet_group_component.html.erb +3 -18
  47. data/app/components/blacklight/response/facet_group_component.rb +7 -23
  48. data/app/components/blacklight/response/facet_toggle_button_component.html.erb +16 -0
  49. data/app/components/blacklight/response/facet_toggle_button_component.rb +14 -0
  50. data/app/components/blacklight/response/pagination_component.html.erb +1 -1
  51. data/app/components/blacklight/response/pagination_component.rb +2 -1
  52. data/app/components/blacklight/response/sort_component.rb +1 -0
  53. data/app/components/blacklight/response/view_type_button_component.html.erb +1 -1
  54. data/app/components/blacklight/response/view_type_component.html.erb +1 -1
  55. data/app/components/blacklight/search/facet_suggest_input.html.erb +7 -7
  56. data/app/components/blacklight/search/facet_suggest_input.rb +0 -4
  57. data/app/components/blacklight/search/per_page_component.html.erb +1 -1
  58. data/app/components/blacklight/search/per_page_component.rb +1 -0
  59. data/app/components/blacklight/search/sidebar_component.html.erb +1 -1
  60. data/app/components/blacklight/search/sidebar_component.rb +1 -1
  61. data/app/components/blacklight/search_bar_component.html.erb +3 -3
  62. data/app/components/blacklight/search_bar_component.rb +2 -2
  63. data/app/components/blacklight/search_button_component.rb +2 -2
  64. data/app/components/blacklight/search_context/server_applied_params_component.html.erb +2 -2
  65. data/app/components/blacklight/search_context/server_applied_params_component.rb +9 -0
  66. data/app/components/blacklight/skip_link_component.html.erb +1 -1
  67. data/app/components/blacklight/skip_link_component.rb +7 -3
  68. data/app/components/blacklight/skip_link_item_component.rb +18 -0
  69. data/app/components/blacklight/top_navbar_component.html.erb +1 -1
  70. data/app/controllers/concerns/blacklight/catalog.rb +3 -2
  71. data/app/controllers/concerns/blacklight/search_context.rb +0 -12
  72. data/app/helpers/blacklight/blacklight_helper_behavior.rb +0 -6
  73. data/app/helpers/blacklight/catalog_helper_behavior.rb +1 -11
  74. data/app/helpers/blacklight/configuration_helper_behavior.rb +0 -12
  75. data/app/helpers/blacklight/document_helper_behavior.rb +0 -26
  76. data/app/helpers/blacklight/icon_helper_behavior.rb +1 -9
  77. data/app/helpers/blacklight/layout_helper_behavior.rb +2 -2
  78. data/app/helpers/blacklight/render_partials_helper_behavior.rb +0 -14
  79. data/app/helpers/blacklight/url_helper_behavior.rb +1 -1
  80. data/app/javascript/{blacklight → blacklight-frontend}/bookmark_toggle.js +1 -1
  81. data/app/javascript/{blacklight → blacklight-frontend}/core.js +2 -10
  82. data/app/javascript/{blacklight → blacklight-frontend}/debounce.js +1 -1
  83. data/app/javascript/{blacklight → blacklight-frontend}/facet_suggest.js +3 -3
  84. data/app/javascript/blacklight-frontend/index.js +18 -0
  85. data/app/javascript/{blacklight → blacklight-frontend}/modal.js +16 -2
  86. data/app/models/concerns/blacklight/document.rb +0 -11
  87. data/app/models/concerns/blacklight/user.rb +1 -1
  88. data/app/presenters/blacklight/facet_field_presenter.rb +2 -2
  89. data/app/services/blacklight/search_params_yaml_coder.rb +0 -2
  90. data/app/views/bookmarks/_clear_bookmarks_widget.html.erb +0 -2
  91. data/app/views/bookmarks/index.html.erb +1 -1
  92. data/app/views/catalog/_results_pagination.html.erb +2 -5
  93. data/app/views/catalog/_search_results.html.erb +4 -4
  94. data/app/views/catalog/_search_results_header.html.erb +1 -1
  95. data/app/views/catalog/_sort_and_per_page.html.erb +1 -1
  96. data/app/views/catalog/_sort_widget.html.erb +1 -0
  97. data/app/views/catalog/facet.html.erb +1 -1
  98. data/app/views/catalog/show.html.erb +2 -3
  99. data/app/views/kaminari/blacklight/_paginator.html.erb +1 -2
  100. data/app/views/layouts/blacklight/base.html.erb +3 -7
  101. data/app/views/search_history/index.html.erb +0 -2
  102. data/blacklight.gemspec +4 -4
  103. data/config/importmap.rb +1 -1
  104. data/config/locales/blacklight.ar.yml +4 -4
  105. data/config/locales/blacklight.ca.yml +124 -124
  106. data/config/locales/blacklight.de.yml +2 -2
  107. data/config/locales/blacklight.en.yml +14 -14
  108. data/config/locales/blacklight.es.yml +4 -4
  109. data/config/locales/blacklight.fr.yml +4 -4
  110. data/config/locales/blacklight.hu.yml +4 -4
  111. data/config/locales/blacklight.it.yml +3 -3
  112. data/config/locales/blacklight.nl.yml +3 -3
  113. data/config/locales/blacklight.pt-BR.yml +3 -3
  114. data/config/locales/blacklight.sq.yml +4 -4
  115. data/config/locales/blacklight.zh.yml +4 -4
  116. data/lib/blacklight/configuration/display_field.rb +1 -1
  117. data/lib/blacklight/configuration/fields.rb +3 -3
  118. data/lib/blacklight/configuration/view_config.rb +0 -2
  119. data/lib/blacklight/configuration.rb +7 -12
  120. data/lib/blacklight/engine.rb +0 -6
  121. data/lib/blacklight/open_struct_with_hash_access.rb +4 -4
  122. data/lib/blacklight/search_builder.rb +4 -4
  123. data/lib/blacklight/solr/request.rb +1 -7
  124. data/lib/blacklight/solr/response/group_response.rb +2 -2
  125. data/lib/blacklight.rb +1 -1
  126. data/lib/generators/blacklight/assets/importmap_generator.rb +8 -24
  127. data/lib/generators/blacklight/assets/propshaft_generator.rb +1 -1
  128. data/lib/generators/blacklight/assets_generator.rb +3 -3
  129. data/lib/generators/blacklight/controller_generator.rb +3 -3
  130. data/lib/generators/blacklight/user_generator.rb +9 -10
  131. data/package.json +14 -4
  132. data/rollup.config.js +1 -1
  133. data/spec/components/blacklight/document/action_component_spec.rb +1 -5
  134. data/spec/components/blacklight/document/sidebar_component_spec.rb +5 -20
  135. data/spec/components/blacklight/facet_field_checkboxes_component_spec.rb +2 -2
  136. data/spec/components/blacklight/facet_field_list_component_spec.rb +2 -2
  137. data/spec/components/blacklight/search/facet_suggest_input_spec.rb +2 -18
  138. data/spec/components/blacklight/search_bar_component_spec.rb +1 -1
  139. data/spec/features/axe_spec.rb +6 -11
  140. data/spec/features/bookmarks_spec.rb +48 -11
  141. data/spec/features/facets_spec.rb +21 -29
  142. data/spec/features/search_context_spec.rb +1 -2
  143. data/spec/features/search_filters_spec.rb +6 -6
  144. data/spec/helpers/blacklight/configuration_helper_behavior_spec.rb +0 -9
  145. data/spec/helpers/blacklight/render_partials_helper_behavior_spec.rb +1 -1
  146. data/spec/models/blacklight/solr/request_spec.rb +7 -0
  147. data/spec/test_app_templates/Gemfile.extra +0 -1
  148. data/spec/views/catalog/_facet_layout.html.erb_spec.rb +3 -3
  149. data/spec/views/catalog/index.html.erb_spec.rb +6 -3
  150. data/spec/views/catalog/show.html.erb_spec.rb +1 -0
  151. data/tasks/blacklight.rake +8 -5
  152. metadata +29 -53
  153. data/app/assets/stylesheets/blacklight/_autocomplete.scss +0 -25
  154. data/app/assets/stylesheets/blacklight/_mixins.scss +0 -20
  155. data/app/components/blacklight/icons/legacy_icon_component.rb +0 -30
  156. data/app/javascript/blacklight/index.js +0 -18
  157. data/app/views/catalog/_constraints.html.erb +0 -1
  158. data/app/views/catalog/_facets.html.erb +0 -5
  159. data/app/views/catalog/_search_form.html.erb +0 -7
  160. data/app/views/catalog/_search_header.html.erb +0 -1
  161. data/app/views/catalog/_show_sidebar.html.erb +0 -3
  162. data/app/views/catalog/_show_tools.html.erb +0 -2
  163. data/app/views/catalog/_start_over.html.erb +0 -1
  164. data/app/views/shared/_header_navbar.html.erb +0 -1
  165. data/lib/generators/blacklight/assets/sprockets_generator.rb +0 -68
  166. data/spec/views/catalog/_search_header.erb_spec.rb +0 -14
  167. data/spec/views/catalog/_show_sidebar.erb_spec.rb +0 -24
  168. data/spec/views/catalog/_show_tools.html.erb_spec.rb +0 -37
  169. /data/app/javascript/{blacklight → blacklight-frontend}/button_focus.js +0 -0
  170. /data/app/javascript/{blacklight → blacklight-frontend}/checkbox_submit.js +0 -0
  171. /data/app/javascript/{blacklight → blacklight-frontend}/modalForm.js +0 -0
  172. /data/app/javascript/{blacklight → blacklight-frontend}/search_context.js +0 -0
@@ -1,18 +0,0 @@
1
- import BookmarkToggle from 'blacklight/bookmark_toggle'
2
- import ButtonFocus from 'blacklight/button_focus'
3
- import FacetSuggest from 'blacklight/facet_suggest'
4
- import Modal from 'blacklight/modal'
5
- import ModalForm from 'blacklight/modalForm'
6
- import SearchContext from 'blacklight/search_context'
7
- import Core from 'blacklight/core'
8
-
9
- export default {
10
- BookmarkToggle,
11
- ButtonFocus,
12
- FacetSuggest,
13
- Modal,
14
- ModalForm,
15
- SearchContext,
16
- Core,
17
- onLoad: Core.onLoad
18
- }
@@ -1 +0,0 @@
1
- <%= render (blacklight_config&.view_config(document_index_view_type)&.constraints_component || Blacklight::ConstraintsComponent).new(search_state: search_state) %>
@@ -1,5 +0,0 @@
1
- <% # this partial is deprecated. catalog/index now renders the component %>
2
- <% conf = blacklight_config.view_config(document_index_view_type) %>
3
- <%= render conf.sidebar_component.new(blacklight_config: blacklight_config,
4
- response: @response,
5
- view_config: conf) %>
@@ -1,7 +0,0 @@
1
- <%= warn "#{__file__} is a deprecated partial." %>
2
- <%= render((blacklight_config&.view_config(document_index_view_type)&.search_bar_component || Blacklight::SearchBarComponent).new(
3
- url: search_action_url,
4
- advanced_search_url: search_action_url(action: 'advanced_search'),
5
- params: search_state.params_for_search.except(:qt),
6
- presenter: presenter,
7
- autocomplete_path: suggest_index_catalog_path)) %>
@@ -1 +0,0 @@
1
- <%= render blacklight_config.view_config(document_index_view_type).search_header_component.new %>
@@ -1,3 +0,0 @@
1
- <% Blacklight.deprecation.warn('The partial catalog/_show_sidebar.html.erb will be removed in Blacklight 9.0. Configure blacklight_config.show.sidebar_component instead (default Blacklight::Search::SidebarComponent).') unless local_assigns[:silence_deprecation] %>
2
- <% presenter = document_presenter(document) %>
3
- <%= render presenter.view_config.sidebar_component.new(presenter: presenter) %>
@@ -1,2 +0,0 @@
1
- <% Blacklight.deprecation.warn('The partial _show_tools.html.erb will be removed in Blacklight 9.0. Configure blacklight_config.show.show_tools_component instead (default Blacklight::Document::ShowToolsComponent).') unless local_assigns[:silence_deprecation] %>
2
- <%= render Blacklight::Document::ShowToolsComponent.new(document: document) %>
@@ -1 +0,0 @@
1
- <%= render Blacklight::StartOverButtonComponent.new %>
@@ -1 +0,0 @@
1
- <%= render blacklight_config.header_component.new(blacklight_config: blacklight_config) %>
@@ -1,68 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Blacklight
4
- module Assets
5
- class SprocketsGenerator < Rails::Generators::Base
6
- class_option :'bootstrap-version', type: :string, default: ENV.fetch('BOOTSTRAP_VERSION', '~> 5.3'), desc: "Set the generated app's bootstrap version"
7
-
8
- # This could be skipped if you want to use webpacker
9
- def add_javascript_dependencies
10
- gem 'bootstrap', options[:'bootstrap-version'].presence
11
- gem 'jquery-rails' if bootstrap_4? # Bootstrap 4 has a dependency on jquery
12
- end
13
-
14
- ##
15
- # Remove the empty generated app/assets/images directory. Without doing this,
16
- # the default Sprockets 4 manifest will raise an exception.
17
- def appease_sprockets4
18
- return if Rails.version > '7' || Sprockets::VERSION < '4'
19
-
20
- append_to_file 'app/assets/config/manifest.js', "\n//= link application.js"
21
- append_to_file 'app/assets/config/manifest.js', "\n//= link blacklight/manifest.js"
22
- empty_directory 'app/assets/images'
23
- end
24
-
25
- def assets
26
- create_file 'app/assets/stylesheets/blacklight.scss' do
27
- <<~CONTENT
28
- @import 'bootstrap';
29
- @import 'blacklight/blacklight';
30
- CONTENT
31
- end
32
-
33
- gem "sassc-rails", "~> 2.1" if Rails.version > '7'
34
-
35
- # Ensure this method is idempotent
36
- return if has_blacklight_assets?
37
-
38
- create_file 'app/assets/javascripts/application.js' do
39
- <<~CONTENT
40
- //= require rails-ujs
41
- #{'//= require jquery3' if bootstrap_4?}
42
-
43
- // Required by Blacklight
44
- //= require popper
45
- //= require bootstrap
46
- //= require blacklight/blacklight
47
- CONTENT
48
- end
49
- end
50
-
51
- private
52
-
53
- def bootstrap_4?
54
- options[:'bootstrap-version'].match?(/\A[^0-9]*4\./)
55
- end
56
-
57
- def has_blacklight_assets?
58
- application_js.include?('blacklight/blacklight')
59
- end
60
-
61
- def application_js
62
- path = File.expand_path("app/assets/javascripts/application.js", destination_root)
63
-
64
- File.exist?(path) ? File.read(path) : ''
65
- end
66
- end
67
- end
68
- end
@@ -1,14 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # spec for sidebar partial in catalog show view
4
-
5
- RSpec.describe "/catalog/_search_header.html.erb" do
6
- it "renders the default search header partials" do
7
- stub_template "_did_you_mean.html.erb" => "did_you_mean"
8
- stub_template "_sort_and_per_page.html.erb" => "sort_and_per_page"
9
- allow(view).to receive(:blacklight_config).and_return(CatalogController.blacklight_config)
10
- render
11
- expect(rendered).to match /did_you_mean/
12
- expect(rendered).to match /sort_and_per_page/
13
- end
14
- end
@@ -1,24 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # spec for sidebar partial in catalog show view
4
-
5
- RSpec.describe "catalog/_show_sidebar.html.erb" do
6
- let(:blacklight_config) do
7
- Blacklight::Configuration.new do |config|
8
- config.index.title_field = 'title_tsim'
9
- config.index.sidebar_component = Blacklight::Document::SidebarComponent
10
- end
11
- end
12
-
13
- before do
14
- allow(view).to receive_messages(blacklight_config: blacklight_config, has_user_authentication_provider?: false, document_actions: [], session_tracking_params: {})
15
- end
16
-
17
- it "shows more-like-this titles in the sidebar" do
18
- document = SolrDocument.new id: 1, title_s: 'abc', format: 'default'
19
- allow(document).to receive(:more_like_this).and_return([SolrDocument.new('id' => '2', 'title_tsim' => 'Title of MLT Document')])
20
- render 'catalog/show_sidebar', document: document
21
- expect(rendered).to include("More Like This")
22
- expect(rendered).to include("Title of MLT Document")
23
- end
24
- end
@@ -1,37 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe "catalog/_show_tools.html.erb" do
4
- let(:document) { SolrDocument.new id: 'xyz', format: 'a' }
5
- let(:blacklight_config) { Blacklight::Configuration.new }
6
- let(:component) { instance_double(Blacklight::Document::ShowToolsComponent) }
7
-
8
- before do
9
- allow(Blacklight::Document::ShowToolsComponent).to receive(:new).and_return(component)
10
- allow(view).to receive(:render).with(component)
11
- allow(view).to receive(:render).with('catalog/show_tools', { document: document }).and_call_original
12
- allow(view).to receive_messages(blacklight_config: blacklight_config, has_user_authentication_provider?: false)
13
- end
14
-
15
- describe "document actions" do
16
- let(:document_actions) { blacklight_config.show.document_actions }
17
-
18
- it "renders a document action" do
19
- allow(view).to receive(:some_action_solr_document_path).with(document, any_args).and_return 'x'
20
- document_actions[:some_action] = Blacklight::Configuration::ToolConfig.new key: :some_action, name: :some_action, partial: 'document_action'
21
- render 'catalog/show_tools', document: document
22
- expect(view).to have_received(:render).with(component)
23
- end
24
-
25
- context 'without any document actions defined' do
26
- before do
27
- document_actions.clear
28
- end
29
-
30
- it 'does not display the tools' do
31
- render 'catalog/show_tools', document: document
32
-
33
- expect(rendered).to be_blank
34
- end
35
- end
36
- end
37
- end