blacklight 8.10.1 → 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 (189) 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 +98 -0
  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 +8 -40
  11. data/app/assets/javascripts/blacklight/blacklight.esm.js.map +1 -1
  12. data/app/assets/javascripts/blacklight/blacklight.js +8 -40
  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 +0 -29
  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 +9 -10
  25. data/app/assets/stylesheets/blacklight/_pagination.scss +3 -5
  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 -17
  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/action_component.rb +3 -1
  37. data/app/components/blacklight/document/bookmark_component.html.erb +3 -3
  38. data/app/components/blacklight/document/group_component.html.erb +1 -1
  39. data/app/components/blacklight/document/page_header_component.rb +1 -1
  40. data/app/components/blacklight/document/sidebar_component.rb +5 -5
  41. data/app/components/blacklight/document_component.rb +9 -13
  42. data/app/components/blacklight/document_title_component.rb +3 -2
  43. data/app/components/blacklight/facet_field_component.html.erb +5 -5
  44. data/app/components/blacklight/facet_field_list_component.rb +4 -22
  45. data/app/components/blacklight/facet_field_pagination_component.html.erb +2 -2
  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 -10
  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/system/dropdown_component.html.erb +1 -1
  72. data/app/components/blacklight/system/dropdown_component.rb +1 -1
  73. data/app/components/blacklight/top_navbar_component.html.erb +1 -1
  74. data/app/controllers/concerns/blacklight/catalog.rb +3 -2
  75. data/app/controllers/concerns/blacklight/search_context.rb +1 -13
  76. data/app/helpers/blacklight/blacklight_helper_behavior.rb +0 -6
  77. data/app/helpers/blacklight/catalog_helper_behavior.rb +1 -11
  78. data/app/helpers/blacklight/configuration_helper_behavior.rb +0 -12
  79. data/app/helpers/blacklight/document_helper_behavior.rb +0 -26
  80. data/app/helpers/blacklight/icon_helper_behavior.rb +1 -9
  81. data/app/helpers/blacklight/layout_helper_behavior.rb +2 -2
  82. data/app/helpers/blacklight/render_partials_helper_behavior.rb +0 -14
  83. data/app/helpers/blacklight/url_helper_behavior.rb +1 -1
  84. data/app/javascript/{blacklight → blacklight-frontend}/bookmark_toggle.js +1 -1
  85. data/app/javascript/{blacklight → blacklight-frontend}/core.js +2 -10
  86. data/app/javascript/{blacklight → blacklight-frontend}/debounce.js +1 -1
  87. data/app/javascript/blacklight-frontend/facet_suggest.js +26 -0
  88. data/app/javascript/blacklight-frontend/index.js +18 -0
  89. data/app/javascript/{blacklight → blacklight-frontend}/modal.js +2 -3
  90. data/app/javascript/{blacklight → blacklight-frontend}/search_context.js +2 -3
  91. data/app/models/concerns/blacklight/document.rb +0 -11
  92. data/app/models/concerns/blacklight/user.rb +1 -1
  93. data/app/presenters/blacklight/facet_field_presenter.rb +2 -2
  94. data/app/presenters/blacklight/json_presenter.rb +3 -1
  95. data/app/services/blacklight/search_params_yaml_coder.rb +0 -2
  96. data/app/views/bookmarks/_clear_bookmarks_widget.html.erb +0 -2
  97. data/app/views/bookmarks/index.html.erb +1 -1
  98. data/app/views/catalog/_results_pagination.html.erb +2 -5
  99. data/app/views/catalog/_search_results.html.erb +4 -4
  100. data/app/views/catalog/_search_results_header.html.erb +1 -1
  101. data/app/views/catalog/_sort_and_per_page.html.erb +1 -1
  102. data/app/views/catalog/_sort_widget.html.erb +1 -0
  103. data/app/views/catalog/facet.html.erb +9 -9
  104. data/app/views/catalog/show.html.erb +2 -3
  105. data/app/views/kaminari/blacklight/_paginator.html.erb +1 -2
  106. data/app/views/layouts/blacklight/base.html.erb +3 -7
  107. data/app/views/search_history/index.html.erb +0 -2
  108. data/blacklight.gemspec +4 -4
  109. data/config/importmap.rb +1 -1
  110. data/config/locales/blacklight.ar.yml +4 -4
  111. data/config/locales/blacklight.ca.yml +124 -124
  112. data/config/locales/blacklight.de.yml +2 -2
  113. data/config/locales/blacklight.en.yml +14 -14
  114. data/config/locales/blacklight.es.yml +4 -4
  115. data/config/locales/blacklight.fr.yml +4 -4
  116. data/config/locales/blacklight.hu.yml +4 -4
  117. data/config/locales/blacklight.it.yml +3 -3
  118. data/config/locales/blacklight.nl.yml +3 -3
  119. data/config/locales/blacklight.pt-BR.yml +3 -3
  120. data/config/locales/blacklight.sq.yml +4 -4
  121. data/config/locales/blacklight.zh.yml +4 -4
  122. data/lib/blacklight/configuration/display_field.rb +1 -1
  123. data/lib/blacklight/configuration/fields.rb +3 -3
  124. data/lib/blacklight/configuration/view_config.rb +0 -2
  125. data/lib/blacklight/configuration.rb +7 -12
  126. data/lib/blacklight/engine.rb +0 -6
  127. data/lib/blacklight/open_struct_with_hash_access.rb +4 -4
  128. data/lib/blacklight/search_builder.rb +4 -4
  129. data/lib/blacklight/search_state/filter_field.rb +2 -2
  130. data/lib/blacklight/solr/request.rb +1 -7
  131. data/lib/blacklight/solr/response/group_response.rb +2 -2
  132. data/lib/blacklight.rb +1 -1
  133. data/lib/generators/blacklight/assets/importmap_generator.rb +8 -24
  134. data/lib/generators/blacklight/assets/propshaft_generator.rb +1 -1
  135. data/lib/generators/blacklight/assets_generator.rb +3 -3
  136. data/lib/generators/blacklight/controller_generator.rb +3 -3
  137. data/lib/generators/blacklight/user_generator.rb +9 -10
  138. data/package.json +14 -4
  139. data/rollup.config.js +1 -1
  140. data/spec/components/blacklight/document/action_component_spec.rb +1 -5
  141. data/spec/components/blacklight/document/sidebar_component_spec.rb +5 -20
  142. data/spec/components/blacklight/facet_field_checkboxes_component_spec.rb +2 -2
  143. data/spec/components/blacklight/facet_field_list_component_spec.rb +2 -2
  144. data/spec/components/blacklight/search/facet_suggest_input_spec.rb +3 -27
  145. data/spec/components/blacklight/search_bar_component_spec.rb +1 -1
  146. data/spec/controllers/catalog_controller_spec.rb +1 -1
  147. data/spec/features/axe_spec.rb +6 -11
  148. data/spec/features/bookmarks_spec.rb +48 -11
  149. data/spec/features/facets_spec.rb +22 -90
  150. data/spec/features/search_context_spec.rb +1 -2
  151. data/spec/features/search_filters_spec.rb +6 -6
  152. data/spec/helpers/blacklight/configuration_helper_behavior_spec.rb +0 -9
  153. data/spec/helpers/blacklight/render_partials_helper_behavior_spec.rb +1 -1
  154. data/spec/lib/blacklight/parameters_spec.rb +1 -12
  155. data/spec/lib/blacklight/search_state/filter_field_spec.rb +0 -18
  156. data/spec/models/blacklight/solr/request_spec.rb +7 -0
  157. data/spec/services/blacklight/search_service_spec.rb +1 -1
  158. data/spec/views/catalog/_facet_layout.html.erb_spec.rb +3 -3
  159. data/spec/views/catalog/facet.html.erb_spec.rb +0 -8
  160. data/spec/views/catalog/index.html.erb_spec.rb +6 -3
  161. data/spec/views/catalog/show.html.erb_spec.rb +1 -0
  162. data/tasks/blacklight.rake +8 -5
  163. metadata +31 -61
  164. data/.github/matrix.json +0 -78
  165. data/.github/workflows/build.yml +0 -16
  166. data/.github/workflows/lint.yml +0 -25
  167. data/.github/workflows/main.yml +0 -24
  168. data/.github/workflows/test.yml +0 -58
  169. data/app/assets/stylesheets/blacklight/_autocomplete.scss +0 -25
  170. data/app/assets/stylesheets/blacklight/_mixins.scss +0 -20
  171. data/app/components/blacklight/icons/legacy_icon_component.rb +0 -30
  172. data/app/javascript/blacklight/facet_suggest.js +0 -48
  173. data/app/javascript/blacklight/index.js +0 -18
  174. data/app/views/catalog/_constraints.html.erb +0 -1
  175. data/app/views/catalog/_facets.html.erb +0 -5
  176. data/app/views/catalog/_search_form.html.erb +0 -7
  177. data/app/views/catalog/_search_header.html.erb +0 -1
  178. data/app/views/catalog/_show_sidebar.html.erb +0 -3
  179. data/app/views/catalog/_show_tools.html.erb +0 -2
  180. data/app/views/catalog/_start_over.html.erb +0 -1
  181. data/app/views/shared/_header_navbar.html.erb +0 -1
  182. data/lib/generators/blacklight/assets/sprockets_generator.rb +0 -68
  183. data/spec/components/blacklight/system/dropdown_component_spec.rb +0 -26
  184. data/spec/views/catalog/_search_header.erb_spec.rb +0 -14
  185. data/spec/views/catalog/_show_sidebar.erb_spec.rb +0 -24
  186. data/spec/views/catalog/_show_tools.html.erb_spec.rb +0 -37
  187. /data/app/javascript/{blacklight → blacklight-frontend}/button_focus.js +0 -0
  188. /data/app/javascript/{blacklight → blacklight-frontend}/checkbox_submit.js +0 -0
  189. /data/app/javascript/{blacklight → blacklight-frontend}/modalForm.js +0 -0
@@ -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,26 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- RSpec.describe Blacklight::System::DropdownComponent, type: :component do
6
- it 'includes a link for each choice' do
7
- search_state = double(Blacklight::SearchState)
8
- allow(search_state).to receive(:params_for_search).and_return('http://example.com')
9
- rendered = render_inline(described_class.new(
10
- param: :per_page,
11
- choices: [
12
- ['10 per page', 10],
13
- ['20 per page', 20]
14
- ],
15
- search_state: search_state,
16
- selected: 20,
17
- interpolation: :count
18
- ))
19
-
20
- expect(rendered.css('a').length).to eq 2
21
- expect(rendered.css('a')[0].text).to eq '10 per page'
22
- expect(rendered.css('a')[0].attributes).not_to have_key 'aria-current'
23
- expect(rendered.css('a')[1].text).to eq '20 per page'
24
- expect(rendered.css('a')[1].attributes).to have_key 'aria-current'
25
- end
26
- 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