blacklight 8.8.1 → 9.0.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (173) 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/blacklight/facet_paginator.rb +1 -1
  87. data/app/models/concerns/blacklight/document.rb +0 -11
  88. data/app/models/concerns/blacklight/user.rb +1 -1
  89. data/app/presenters/blacklight/facet_field_presenter.rb +2 -2
  90. data/app/services/blacklight/search_params_yaml_coder.rb +0 -2
  91. data/app/views/bookmarks/_clear_bookmarks_widget.html.erb +0 -2
  92. data/app/views/bookmarks/index.html.erb +1 -1
  93. data/app/views/catalog/_results_pagination.html.erb +2 -5
  94. data/app/views/catalog/_search_results.html.erb +4 -4
  95. data/app/views/catalog/_search_results_header.html.erb +1 -1
  96. data/app/views/catalog/_sort_and_per_page.html.erb +1 -1
  97. data/app/views/catalog/_sort_widget.html.erb +1 -0
  98. data/app/views/catalog/facet.html.erb +1 -1
  99. data/app/views/catalog/show.html.erb +2 -3
  100. data/app/views/kaminari/blacklight/_paginator.html.erb +1 -2
  101. data/app/views/layouts/blacklight/base.html.erb +3 -7
  102. data/app/views/search_history/index.html.erb +0 -2
  103. data/blacklight.gemspec +4 -4
  104. data/config/importmap.rb +1 -1
  105. data/config/locales/blacklight.ar.yml +4 -4
  106. data/config/locales/blacklight.ca.yml +124 -124
  107. data/config/locales/blacklight.de.yml +2 -2
  108. data/config/locales/blacklight.en.yml +14 -14
  109. data/config/locales/blacklight.es.yml +4 -4
  110. data/config/locales/blacklight.fr.yml +4 -4
  111. data/config/locales/blacklight.hu.yml +4 -4
  112. data/config/locales/blacklight.it.yml +3 -3
  113. data/config/locales/blacklight.nl.yml +3 -3
  114. data/config/locales/blacklight.pt-BR.yml +3 -3
  115. data/config/locales/blacklight.sq.yml +4 -4
  116. data/config/locales/blacklight.zh.yml +4 -4
  117. data/lib/blacklight/configuration/display_field.rb +1 -1
  118. data/lib/blacklight/configuration/fields.rb +3 -3
  119. data/lib/blacklight/configuration/view_config.rb +0 -2
  120. data/lib/blacklight/configuration.rb +7 -12
  121. data/lib/blacklight/engine.rb +0 -6
  122. data/lib/blacklight/open_struct_with_hash_access.rb +4 -4
  123. data/lib/blacklight/search_builder.rb +4 -4
  124. data/lib/blacklight/solr/request.rb +1 -7
  125. data/lib/blacklight/solr/response/group_response.rb +2 -2
  126. data/lib/blacklight.rb +1 -1
  127. data/lib/generators/blacklight/assets/importmap_generator.rb +8 -24
  128. data/lib/generators/blacklight/assets/propshaft_generator.rb +1 -1
  129. data/lib/generators/blacklight/assets_generator.rb +3 -3
  130. data/lib/generators/blacklight/controller_generator.rb +3 -3
  131. data/lib/generators/blacklight/user_generator.rb +9 -10
  132. data/package.json +14 -4
  133. data/rollup.config.js +1 -1
  134. data/spec/components/blacklight/document/action_component_spec.rb +1 -5
  135. data/spec/components/blacklight/document/sidebar_component_spec.rb +5 -20
  136. data/spec/components/blacklight/facet_field_checkboxes_component_spec.rb +2 -2
  137. data/spec/components/blacklight/facet_field_list_component_spec.rb +2 -2
  138. data/spec/components/blacklight/search/facet_suggest_input_spec.rb +2 -18
  139. data/spec/components/blacklight/search_bar_component_spec.rb +1 -1
  140. data/spec/features/axe_spec.rb +6 -11
  141. data/spec/features/bookmarks_spec.rb +48 -11
  142. data/spec/features/facets_spec.rb +23 -20
  143. data/spec/features/search_context_spec.rb +1 -2
  144. data/spec/features/search_filters_spec.rb +6 -6
  145. data/spec/helpers/blacklight/configuration_helper_behavior_spec.rb +0 -9
  146. data/spec/helpers/blacklight/render_partials_helper_behavior_spec.rb +1 -1
  147. data/spec/models/blacklight/solr/request_spec.rb +7 -0
  148. data/spec/test_app_templates/Gemfile.extra +0 -1
  149. data/spec/views/catalog/_facet_layout.html.erb_spec.rb +3 -3
  150. data/spec/views/catalog/index.html.erb_spec.rb +6 -3
  151. data/spec/views/catalog/show.html.erb_spec.rb +1 -0
  152. data/tasks/blacklight.rake +8 -5
  153. metadata +30 -54
  154. data/app/assets/stylesheets/blacklight/_autocomplete.scss +0 -25
  155. data/app/assets/stylesheets/blacklight/_mixins.scss +0 -20
  156. data/app/components/blacklight/icons/legacy_icon_component.rb +0 -30
  157. data/app/javascript/blacklight/index.js +0 -18
  158. data/app/views/catalog/_constraints.html.erb +0 -1
  159. data/app/views/catalog/_facets.html.erb +0 -5
  160. data/app/views/catalog/_search_form.html.erb +0 -7
  161. data/app/views/catalog/_search_header.html.erb +0 -1
  162. data/app/views/catalog/_show_sidebar.html.erb +0 -3
  163. data/app/views/catalog/_show_tools.html.erb +0 -2
  164. data/app/views/catalog/_start_over.html.erb +0 -1
  165. data/app/views/shared/_header_navbar.html.erb +0 -1
  166. data/lib/generators/blacklight/assets/sprockets_generator.rb +0 -68
  167. data/spec/views/catalog/_search_header.erb_spec.rb +0 -14
  168. data/spec/views/catalog/_show_sidebar.erb_spec.rb +0 -24
  169. data/spec/views/catalog/_show_tools.html.erb_spec.rb +0 -37
  170. /data/app/javascript/{blacklight → blacklight-frontend}/button_focus.js +0 -0
  171. /data/app/javascript/{blacklight → blacklight-frontend}/checkbox_submit.js +0 -0
  172. /data/app/javascript/{blacklight → blacklight-frontend}/modalForm.js +0 -0
  173. /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