blacklight 9.0.0.beta8 → 9.1.0

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 (185) hide show
  1. checksums.yaml +4 -4
  2. data/.env +3 -3
  3. data/.github/matrix.json +18 -34
  4. data/.github/workflows/lint.yml +1 -1
  5. data/.github/workflows/test.yml +4 -3
  6. data/.rubocop.yml +72 -7
  7. data/.rubocop_todo.yml +142 -268
  8. data/Gemfile +1 -1
  9. data/README.md +4 -11
  10. data/VERSION +1 -1
  11. data/app/assets/builds/blacklight.css +37 -23
  12. data/app/assets/images/blacklight/logo-dark.svg +184 -0
  13. data/app/assets/images/blacklight/logo.svg +184 -0
  14. data/app/assets/javascripts/blacklight/blacklight.esm.js +134 -48
  15. data/app/assets/javascripts/blacklight/blacklight.esm.js.map +1 -1
  16. data/app/assets/javascripts/blacklight/blacklight.js +134 -48
  17. data/app/assets/javascripts/blacklight/blacklight.js.map +1 -1
  18. data/app/assets/stylesheets/blacklight/_balanced_list.scss +1 -1
  19. data/app/assets/stylesheets/blacklight/_bootstrap_overrides.scss +17 -0
  20. data/app/assets/stylesheets/blacklight/_constraints.scss +2 -2
  21. data/app/assets/stylesheets/blacklight/_facets.scss +14 -10
  22. data/app/assets/stylesheets/blacklight/_header.scss +0 -4
  23. data/app/assets/stylesheets/blacklight/blacklight_defaults.scss +5 -9
  24. data/app/components/blacklight/facets/filters_component.rb +1 -1
  25. data/app/components/blacklight/facets/inclusive_constraint_component.html.erb +1 -1
  26. data/app/components/blacklight/facets/suggest_component.html.erb +17 -12
  27. data/app/components/blacklight/icons/checkmark_component.rb +16 -0
  28. data/app/components/blacklight/icons/circle_half_component.rb +16 -0
  29. data/app/components/blacklight/icons/moon_stars_component.rb +17 -0
  30. data/app/components/blacklight/icons/sun_component.rb +16 -0
  31. data/app/components/blacklight/metadata_field_component.rb +1 -1
  32. data/app/components/blacklight/search_navbar_component.html.erb +1 -1
  33. data/app/components/blacklight/theme_switcher_component.html.erb +31 -0
  34. data/app/components/blacklight/theme_switcher_component.rb +6 -0
  35. data/app/components/blacklight/top_navbar_component.html.erb +1 -1
  36. data/app/controllers/concerns/blacklight/bookmarks.rb +8 -14
  37. data/app/controllers/concerns/blacklight/catalog.rb +12 -14
  38. data/app/controllers/concerns/blacklight/controller.rb +54 -11
  39. data/app/controllers/concerns/blacklight/guest_user.rb +51 -0
  40. data/app/controllers/concerns/blacklight/search_context.rb +1 -1
  41. data/app/controllers/concerns/blacklight/search_history.rb +3 -1
  42. data/app/controllers/concerns/blacklight/searchable.rb +18 -0
  43. data/app/helpers/blacklight/layout_helper_behavior.rb +7 -0
  44. data/app/javascript/blacklight-frontend/checkbox_submit.js +2 -2
  45. data/app/javascript/blacklight-frontend/color_theme_switcher.js +85 -0
  46. data/app/javascript/blacklight-frontend/facet_suggest.js +4 -1
  47. data/app/javascript/blacklight-frontend/index.js +2 -0
  48. data/app/models/concerns/blacklight/document/dublin_core.rb +2 -2
  49. data/app/models/concerns/blacklight/document.rb +1 -1
  50. data/app/models/concerns/blacklight/user.rb +36 -0
  51. data/app/presenters/blacklight/field_presenter.rb +1 -1
  52. data/app/presenters/blacklight/rendering/microdata.rb +1 -0
  53. data/app/services/blacklight/bookmarks_search_builder.rb +4 -4
  54. data/app/services/blacklight/search_service.rb +50 -35
  55. data/app/values/blacklight/types.rb +1 -1
  56. data/app/views/catalog/_email_form.html.erb +3 -3
  57. data/app/views/catalog/_home_text.html.erb +1 -1
  58. data/app/views/catalog/_sms_form.html.erb +4 -4
  59. data/app/views/catalog/index.rss.builder +4 -4
  60. data/app/views/catalog/opensearch.json.jbuilder +3 -0
  61. data/app/views/catalog/opensearch.xml.builder +2 -2
  62. data/app/views/layouts/blacklight/base.html.erb +13 -1
  63. data/app/views/shared/_user_util_links.html.erb +18 -5
  64. data/blacklight.gemspec +3 -3
  65. data/config/locales/blacklight.ar.yml +5 -0
  66. data/config/locales/blacklight.ca.yml +5 -0
  67. data/config/locales/blacklight.de.yml +6 -2
  68. data/config/locales/blacklight.en.yml +5 -0
  69. data/config/locales/blacklight.es.yml +5 -0
  70. data/config/locales/blacklight.fr.yml +5 -0
  71. data/config/locales/blacklight.hu.yml +5 -0
  72. data/config/locales/blacklight.it.yml +6 -2
  73. data/config/locales/blacklight.nl.yml +5 -0
  74. data/config/locales/blacklight.pt-BR.yml +6 -2
  75. data/config/locales/blacklight.sq.yml +5 -0
  76. data/config/locales/blacklight.zh.yml +5 -0
  77. data/lib/blacklight/component.rb +1 -1
  78. data/lib/blacklight/configuration/action_config_map_entry.rb +31 -0
  79. data/lib/blacklight/configuration/display_field.rb +1 -0
  80. data/lib/blacklight/configuration/field.rb +6 -6
  81. data/lib/blacklight/configuration/fields.rb +1 -1
  82. data/lib/blacklight/configuration/sort_field.rb +2 -2
  83. data/lib/blacklight/configuration.rb +30 -23
  84. data/lib/blacklight/parameters.rb +1 -1
  85. data/lib/blacklight/routes/searchable.rb +1 -1
  86. data/lib/blacklight/search_builder.rb +208 -10
  87. data/lib/blacklight/search_state.rb +4 -0
  88. data/lib/blacklight/solr/request.rb +8 -1
  89. data/lib/blacklight/solr/response/group_response.rb +1 -1
  90. data/lib/blacklight/solr/response/spelling.rb +8 -8
  91. data/lib/blacklight/solr/response.rb +2 -21
  92. data/lib/blacklight/solr/search_builder_behavior.rb +59 -16
  93. data/lib/blacklight.rb +2 -2
  94. data/lib/generators/blacklight/assets/importmap_generator.rb +2 -2
  95. data/lib/generators/blacklight/assets_generator.rb +1 -1
  96. data/lib/generators/blacklight/controller_generator.rb +1 -1
  97. data/lib/generators/blacklight/document_generator.rb +1 -1
  98. data/lib/generators/blacklight/install_generator.rb +6 -4
  99. data/lib/generators/blacklight/models_generator.rb +1 -1
  100. data/lib/generators/blacklight/search_builder_generator.rb +1 -1
  101. data/lib/generators/blacklight/solr_generator.rb +1 -1
  102. data/lib/generators/blacklight/templates/catalog_controller.rb +21 -2
  103. data/lib/generators/blacklight/templates/solr/conf/schema.xml +264 -178
  104. data/lib/generators/blacklight/templates/solr/conf/solrconfig.xml +6 -14
  105. data/lib/generators/blacklight/test_support_generator.rb +1 -1
  106. data/lib/generators/blacklight/user_generator.rb +66 -5
  107. data/lib/railties/blacklight.rake +4 -4
  108. data/package.json +2 -2
  109. data/spec/components/blacklight/document/action_component_spec.rb +1 -1
  110. data/spec/components/blacklight/document/group_component_spec.rb +1 -1
  111. data/spec/components/blacklight/document_component_spec.rb +9 -9
  112. data/spec/components/blacklight/facet_component_spec.rb +2 -2
  113. data/spec/components/blacklight/facets/filters_component_spec.rb +1 -1
  114. data/spec/components/blacklight/facets/index_navigation_component_spec.rb +1 -2
  115. data/spec/components/blacklight/facets/list_component_spec.rb +1 -1
  116. data/spec/components/blacklight/facets/suggest_component_spec.rb +2 -3
  117. data/spec/components/blacklight/metadata_field_component_spec.rb +26 -0
  118. data/spec/components/blacklight/skip_link_component_spec.rb +2 -2
  119. data/spec/controllers/application_controller_spec.rb +71 -0
  120. data/spec/controllers/bookmarks_controller_spec.rb +18 -5
  121. data/spec/controllers/catalog_controller_spec.rb +7 -5
  122. data/spec/features/advanced_search_spec.rb +29 -16
  123. data/spec/features/alternate_controller_spec.rb +4 -4
  124. data/spec/features/axe_spec.rb +34 -22
  125. data/spec/features/bookmarks_spec.rb +13 -13
  126. data/spec/features/dark_mode_spec.rb +42 -0
  127. data/spec/features/did_you_mean_spec.rb +27 -27
  128. data/spec/features/facet_missing_spec.rb +3 -3
  129. data/spec/features/facets_spec.rb +9 -0
  130. data/spec/features/record_view_spec.rb +14 -14
  131. data/spec/features/search_context_spec.rb +8 -8
  132. data/spec/features/search_filters_spec.rb +16 -16
  133. data/spec/features/search_formats_spec.rb +2 -2
  134. data/spec/features/search_history_spec.rb +11 -11
  135. data/spec/features/search_pagination_spec.rb +17 -17
  136. data/spec/features/search_results_spec.rb +3 -3
  137. data/spec/features/search_sort_spec.rb +4 -4
  138. data/spec/features/search_spec.rb +20 -20
  139. data/spec/helpers/blacklight/url_helper_behavior_spec.rb +15 -15
  140. data/spec/helpers/blacklight_helper_spec.rb +1 -1
  141. data/spec/helpers/catalog_helper_spec.rb +7 -7
  142. data/spec/integration/generators/blacklight/user_generator_spec.rb +60 -0
  143. data/spec/lib/blacklight/search_state/pivot_filter_field_spec.rb +1 -1
  144. data/spec/models/blacklight/configurable_spec.rb +1 -1
  145. data/spec/models/blacklight/configuration_spec.rb +0 -19
  146. data/spec/models/blacklight/document/dublin_core_spec.rb +2 -2
  147. data/spec/models/blacklight/facet_paginator_spec.rb +1 -1
  148. data/spec/models/blacklight/search_builder_spec.rb +26 -4
  149. data/spec/models/blacklight/solr/repository_spec.rb +10 -2
  150. data/spec/models/blacklight/solr/search_builder_behavior_spec.rb +165 -7
  151. data/spec/models/blacklight/user_spec.rb +32 -5
  152. data/spec/models/bookmark_spec.rb +1 -1
  153. data/spec/models/record_mailer_spec.rb +8 -8
  154. data/spec/models/search_spec.rb +1 -1
  155. data/spec/models/solr_document_spec.rb +4 -0
  156. data/spec/presenters/blacklight/index_presenter_spec.rb +1 -0
  157. data/spec/presenters/blacklight/rendering/pipeline_spec.rb +1 -0
  158. data/spec/presenters/blacklight/show_presenter_spec.rb +1 -0
  159. data/spec/presenters/blacklight/thumbnail_presenter_spec.rb +1 -0
  160. data/spec/services/blacklight/search_service_spec.rb +7 -7
  161. data/spec/spec_helper.rb +3 -12
  162. data/spec/support/features/session_helpers.rb +13 -4
  163. data/spec/support/features/turbo_helpers.rb +13 -0
  164. data/spec/support/features.rb +2 -0
  165. data/spec/support/user_helpers.rb +24 -0
  166. data/spec/test_app_templates/lib/generators/test_app_generator.rb +1 -1
  167. data/spec/views/catalog/_document.html.erb_spec.rb +4 -4
  168. data/spec/views/catalog/_paginate_compact.html.erb_spec.rb +2 -2
  169. data/spec/views/catalog/_sort_and_per_page.html.erb_spec.rb +5 -5
  170. data/spec/views/catalog/index.html.erb_spec.rb +2 -2
  171. data/spec/views/catalog/show.html.erb_spec.rb +3 -4
  172. data/spec/views/shared/_user_util_links.html.erb_spec.rb +56 -0
  173. data/template.demo.rb +2 -1
  174. metadata +30 -29
  175. data/.hound.yml +0 -4
  176. data/.jshintrc +0 -22
  177. data/app/assets/images/blacklight/logo.png +0 -0
  178. data/app/controllers/concerns/blacklight/facetable.rb +0 -34
  179. data/app/models/facet_search_builder.rb +0 -5
  180. data/app/services/blacklight/facet_search_service.rb +0 -44
  181. data/lib/blacklight/abstract_search_builder.rb +0 -154
  182. data/lib/blacklight/facet_search_builder.rb +0 -18
  183. data/lib/blacklight/solr/facet_search_builder_behavior.rb +0 -62
  184. data/spec/models/blacklight/facet_search_builder_spec.rb +0 -19
  185. data/spec/models/blacklight/solr/facet_search_builder_behavior_spec.rb +0 -929
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Blacklight
4
4
  class AssetsGenerator < Rails::Generators::Base
5
- class_option :'bootstrap-version', type: :string, default: ENV.fetch('BOOTSTRAP_VERSION', '5.3.5'), desc: "Set the generated app's bootstrap version"
5
+ class_option :'bootstrap-version', type: :string, default: ENV.fetch('BOOTSTRAP_VERSION', '5.3.8'), desc: "Set the generated app's bootstrap version"
6
6
 
7
7
  def run_asset_pipeline_specific_generator
8
8
  generated_options = "--bootstrap-version='#{options[:'bootstrap-version']}'" if options[:'bootstrap-version']
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Blacklight
4
4
  class ControllerGenerator < Rails::Generators::Base
5
- source_root File.expand_path('../templates', __FILE__)
5
+ source_root File.expand_path('templates', __dir__)
6
6
 
7
7
  argument :controller_name, type: :string, default: "catalog"
8
8
 
@@ -6,7 +6,7 @@ module Blacklight
6
6
  class DocumentGenerator < Rails::Generators::Base
7
7
  include Rails::Generators::Migration
8
8
 
9
- source_root File.expand_path('../templates', __FILE__)
9
+ source_root File.expand_path('templates', __dir__)
10
10
 
11
11
  argument :model_name, type: :string, default: "solr_document"
12
12
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Blacklight
4
4
  class Install < Rails::Generators::Base
5
- source_root File.expand_path('../templates', __FILE__)
5
+ source_root File.expand_path('templates', __dir__)
6
6
 
7
7
  argument :model_name, type: :string, default: "user"
8
8
  argument :controller_name, type: :string, default: "catalog"
@@ -10,6 +10,7 @@ module Blacklight
10
10
  argument :search_builder_name, type: :string, default: "search_builder"
11
11
 
12
12
  class_option :devise, type: :boolean, default: false, aliases: "-d", desc: "Use Devise as authentication logic."
13
+ class_option :authentication, type: :boolean, default: false, desc: "Use Rails' built-in authentication generator."
13
14
  class_option :marc, type: :boolean, default: false, aliases: "-m", desc: "Generate MARC-based demo."
14
15
  class_option :'bootstrap-version', type: :string, default: nil, desc: "Set the generated app's bootstrap version"
15
16
  class_option :'skip-assets', type: :boolean, default: false, desc: "Skip generating javascript and css assets into the application"
@@ -62,9 +63,10 @@ module Blacklight
62
63
 
63
64
  def generate_blacklight_user
64
65
  generator_args = [model_name]
65
- if options[:devise]
66
- generator_args << "--devise #{options[:devise]}"
67
- end
66
+ raise Thor::Error, "Choose either --devise or --authentication, not both." if options[:devise] && options[:authentication]
67
+
68
+ generator_args << "--devise" if options[:devise]
69
+ generator_args << "--authentication" if options[:authentication]
68
70
 
69
71
  generate 'blacklight:user', generator_args.join(" ")
70
72
  end
@@ -8,7 +8,7 @@ module Blacklight
8
8
  class ModelsGenerator < Rails::Generators::Base
9
9
  include Rails::Generators::Migration
10
10
 
11
- source_root File.expand_path('../templates', __FILE__)
11
+ source_root File.expand_path('templates', __dir__)
12
12
 
13
13
  desc <<-EOS
14
14
  This generator makes the following changes to your application:
@@ -6,7 +6,7 @@ module Blacklight
6
6
  class SearchBuilderGenerator < Rails::Generators::Base
7
7
  include Rails::Generators::Migration
8
8
 
9
- source_root File.expand_path('../templates', __FILE__)
9
+ source_root File.expand_path('templates', __dir__)
10
10
 
11
11
  argument :model_name, type: :string, default: "search_builder"
12
12
 
@@ -4,7 +4,7 @@ require 'rails/generators'
4
4
 
5
5
  module Blacklight
6
6
  class SolrGenerator < Rails::Generators::Base
7
- source_root ::File.expand_path('../templates', __FILE__)
7
+ source_root ::File.expand_path('templates', __dir__)
8
8
 
9
9
  desc <<-EOF
10
10
  This generator makes the following changes to your application:
@@ -12,9 +12,12 @@ class <%= controller_name.classify %>Controller < ApplicationController
12
12
  # rescue_from Blacklight::Exceptions::InvalidRequest, with: :my_handling_method
13
13
 
14
14
  configure_blacklight do |config|
15
- ## Specify the style of markup to be generated (may be 4 or 5)
15
+ ## Specify the style of markup to be generated
16
16
  # config.bootstrap_version = 5
17
17
  #
18
+ ## Show or hide the light/dark mode theme switcher component
19
+ # config.dark_mode_support = true
20
+ #
18
21
  ## Class for sending and receiving requests from a search index
19
22
  # config.repository_class = Blacklight::Solr::Repository
20
23
  #
@@ -36,12 +39,20 @@ class <%= controller_name.classify %>Controller < ApplicationController
36
39
  ## Optional fine-tuning for advanced search, e.g., set different limits for
37
40
  ## different facets.
38
41
  # config.advanced_search.form_solr_parameters = {}
39
-
42
+ #
43
+ ## What type of HTTP request to make to solr. Use `:post' to support requests longer than the URI length limit.
44
+ ## (default is `:get')
45
+ # config.http_method = :post
46
+ #
40
47
  ## Default parameters to send to solr for all search-like requests. See also SearchBuilder#processed_parameters
41
48
  config.default_solr_params = {
42
49
  rows: 10
43
50
  }
44
51
 
52
+ # If you add any inputs to the search form, you must specify them so that they are not stripped out as unpermitted.
53
+ # By default this includes the fields required for basic search and advanced search.
54
+ # config.search_state_fields += [:search_type]
55
+
45
56
  # solr path which will be added to solr base url before the other solr params.
46
57
  #config.solr_path = 'select'
47
58
  #config.document_solr_path = 'get'
@@ -164,6 +175,14 @@ class <%= controller_name.classify %>Controller < ApplicationController
164
175
 
165
176
  # solr fields to be displayed in the show (single result) view
166
177
  # The ordering of the field names is the order of the display
178
+ # You can configure some components related to the show field:
179
+ # - component: should have a similar API to
180
+ # Blacklight::MetadataFieldComponent, and describes how
181
+ # the values should be displayed
182
+ # - layout_component: should have a similar API to
183
+ # Blacklight::MetadataFieldLayoutComponent, and describes
184
+ # how the overall layout of the field (both label and
185
+ # values) should be displayed
167
186
  config.add_show_field 'title_tsim', label: 'Title'
168
187
  config.add_show_field 'title_vern_ssim', label: 'Title'
169
188
  config.add_show_field 'subtitle_tsim', label: 'Subtitle'