blacklight 9.0.0 → 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 (170) hide show
  1. checksums.yaml +4 -4
  2. data/.env +3 -3
  3. data/.github/matrix.json +12 -18
  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 +2 -9
  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 +128 -45
  15. data/app/assets/javascripts/blacklight/blacklight.esm.js.map +1 -1
  16. data/app/assets/javascripts/blacklight/blacklight.js +128 -45
  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/inclusive_constraint_component.html.erb +1 -1
  25. data/app/components/blacklight/icons/checkmark_component.rb +16 -0
  26. data/app/components/blacklight/icons/circle_half_component.rb +16 -0
  27. data/app/components/blacklight/icons/moon_stars_component.rb +17 -0
  28. data/app/components/blacklight/icons/sun_component.rb +16 -0
  29. data/app/components/blacklight/metadata_field_component.rb +1 -1
  30. data/app/components/blacklight/search_navbar_component.html.erb +1 -1
  31. data/app/components/blacklight/theme_switcher_component.html.erb +31 -0
  32. data/app/components/blacklight/theme_switcher_component.rb +6 -0
  33. data/app/components/blacklight/top_navbar_component.html.erb +1 -1
  34. data/app/controllers/concerns/blacklight/bookmarks.rb +8 -14
  35. data/app/controllers/concerns/blacklight/catalog.rb +9 -10
  36. data/app/controllers/concerns/blacklight/controller.rb +54 -11
  37. data/app/controllers/concerns/blacklight/guest_user.rb +51 -0
  38. data/app/controllers/concerns/blacklight/search_context.rb +1 -1
  39. data/app/controllers/concerns/blacklight/search_history.rb +3 -1
  40. data/app/controllers/concerns/blacklight/searchable.rb +18 -0
  41. data/app/helpers/blacklight/layout_helper_behavior.rb +7 -0
  42. data/app/javascript/blacklight-frontend/color_theme_switcher.js +85 -0
  43. data/app/javascript/blacklight-frontend/index.js +2 -0
  44. data/app/models/concerns/blacklight/document/dublin_core.rb +2 -2
  45. data/app/models/concerns/blacklight/document.rb +1 -1
  46. data/app/models/concerns/blacklight/user.rb +36 -0
  47. data/app/presenters/blacklight/field_presenter.rb +1 -1
  48. data/app/presenters/blacklight/rendering/microdata.rb +1 -0
  49. data/app/services/blacklight/bookmarks_search_builder.rb +4 -4
  50. data/app/services/blacklight/search_service.rb +46 -33
  51. data/app/values/blacklight/types.rb +1 -1
  52. data/app/views/catalog/_email_form.html.erb +3 -3
  53. data/app/views/catalog/_home_text.html.erb +1 -1
  54. data/app/views/catalog/_sms_form.html.erb +4 -4
  55. data/app/views/catalog/index.rss.builder +4 -4
  56. data/app/views/catalog/opensearch.json.jbuilder +3 -0
  57. data/app/views/catalog/opensearch.xml.builder +2 -2
  58. data/app/views/layouts/blacklight/base.html.erb +13 -1
  59. data/app/views/shared/_user_util_links.html.erb +18 -5
  60. data/blacklight.gemspec +3 -3
  61. data/config/locales/blacklight.ar.yml +5 -0
  62. data/config/locales/blacklight.ca.yml +5 -0
  63. data/config/locales/blacklight.de.yml +6 -2
  64. data/config/locales/blacklight.en.yml +5 -0
  65. data/config/locales/blacklight.es.yml +5 -0
  66. data/config/locales/blacklight.fr.yml +5 -0
  67. data/config/locales/blacklight.hu.yml +5 -0
  68. data/config/locales/blacklight.it.yml +6 -2
  69. data/config/locales/blacklight.nl.yml +5 -0
  70. data/config/locales/blacklight.pt-BR.yml +6 -2
  71. data/config/locales/blacklight.sq.yml +5 -0
  72. data/config/locales/blacklight.zh.yml +5 -0
  73. data/lib/blacklight/component.rb +1 -1
  74. data/lib/blacklight/configuration/action_config_map_entry.rb +31 -0
  75. data/lib/blacklight/configuration/display_field.rb +1 -0
  76. data/lib/blacklight/configuration/field.rb +6 -6
  77. data/lib/blacklight/configuration/fields.rb +1 -1
  78. data/lib/blacklight/configuration/sort_field.rb +2 -2
  79. data/lib/blacklight/configuration.rb +30 -19
  80. data/lib/blacklight/parameters.rb +1 -1
  81. data/lib/blacklight/search_builder.rb +58 -19
  82. data/lib/blacklight/search_state.rb +4 -0
  83. data/lib/blacklight/solr/request.rb +8 -1
  84. data/lib/blacklight/solr/response/group_response.rb +1 -1
  85. data/lib/blacklight/solr/response/spelling.rb +8 -8
  86. data/lib/blacklight/solr/response.rb +2 -21
  87. data/lib/blacklight/solr/search_builder_behavior.rb +3 -9
  88. data/lib/blacklight.rb +2 -2
  89. data/lib/generators/blacklight/assets/importmap_generator.rb +2 -2
  90. data/lib/generators/blacklight/assets_generator.rb +1 -1
  91. data/lib/generators/blacklight/controller_generator.rb +1 -1
  92. data/lib/generators/blacklight/document_generator.rb +1 -1
  93. data/lib/generators/blacklight/install_generator.rb +6 -4
  94. data/lib/generators/blacklight/models_generator.rb +1 -1
  95. data/lib/generators/blacklight/search_builder_generator.rb +1 -1
  96. data/lib/generators/blacklight/solr_generator.rb +1 -1
  97. data/lib/generators/blacklight/templates/catalog_controller.rb +20 -1
  98. data/lib/generators/blacklight/templates/solr/conf/schema.xml +264 -178
  99. data/lib/generators/blacklight/templates/solr/conf/solrconfig.xml +6 -14
  100. data/lib/generators/blacklight/test_support_generator.rb +1 -1
  101. data/lib/generators/blacklight/user_generator.rb +66 -5
  102. data/lib/railties/blacklight.rake +4 -4
  103. data/package.json +2 -2
  104. data/spec/components/blacklight/document/action_component_spec.rb +1 -1
  105. data/spec/components/blacklight/document/group_component_spec.rb +1 -1
  106. data/spec/components/blacklight/document_component_spec.rb +9 -9
  107. data/spec/components/blacklight/facet_component_spec.rb +2 -2
  108. data/spec/components/blacklight/facets/index_navigation_component_spec.rb +1 -2
  109. data/spec/components/blacklight/facets/list_component_spec.rb +1 -1
  110. data/spec/components/blacklight/facets/suggest_component_spec.rb +1 -2
  111. data/spec/components/blacklight/metadata_field_component_spec.rb +26 -0
  112. data/spec/components/blacklight/skip_link_component_spec.rb +2 -2
  113. data/spec/controllers/application_controller_spec.rb +71 -0
  114. data/spec/controllers/bookmarks_controller_spec.rb +18 -5
  115. data/spec/controllers/catalog_controller_spec.rb +7 -5
  116. data/spec/features/advanced_search_spec.rb +29 -16
  117. data/spec/features/alternate_controller_spec.rb +4 -4
  118. data/spec/features/axe_spec.rb +34 -22
  119. data/spec/features/bookmarks_spec.rb +13 -13
  120. data/spec/features/dark_mode_spec.rb +42 -0
  121. data/spec/features/did_you_mean_spec.rb +27 -27
  122. data/spec/features/facet_missing_spec.rb +3 -3
  123. data/spec/features/record_view_spec.rb +14 -14
  124. data/spec/features/search_context_spec.rb +8 -8
  125. data/spec/features/search_filters_spec.rb +16 -16
  126. data/spec/features/search_formats_spec.rb +2 -2
  127. data/spec/features/search_history_spec.rb +11 -11
  128. data/spec/features/search_pagination_spec.rb +17 -17
  129. data/spec/features/search_results_spec.rb +3 -3
  130. data/spec/features/search_sort_spec.rb +4 -4
  131. data/spec/features/search_spec.rb +20 -20
  132. data/spec/helpers/blacklight/url_helper_behavior_spec.rb +15 -15
  133. data/spec/helpers/blacklight_helper_spec.rb +1 -1
  134. data/spec/helpers/catalog_helper_spec.rb +7 -7
  135. data/spec/integration/generators/blacklight/user_generator_spec.rb +60 -0
  136. data/spec/lib/blacklight/search_state/pivot_filter_field_spec.rb +1 -1
  137. data/spec/models/blacklight/configurable_spec.rb +1 -1
  138. data/spec/models/blacklight/configuration_spec.rb +0 -19
  139. data/spec/models/blacklight/document/dublin_core_spec.rb +2 -2
  140. data/spec/models/blacklight/facet_paginator_spec.rb +1 -1
  141. data/spec/models/blacklight/search_builder_spec.rb +15 -3
  142. data/spec/models/blacklight/solr/repository_spec.rb +10 -2
  143. data/spec/models/blacklight/solr/search_builder_behavior_spec.rb +3 -5
  144. data/spec/models/blacklight/user_spec.rb +32 -5
  145. data/spec/models/bookmark_spec.rb +1 -1
  146. data/spec/models/record_mailer_spec.rb +8 -8
  147. data/spec/models/search_spec.rb +1 -1
  148. data/spec/models/solr_document_spec.rb +4 -0
  149. data/spec/presenters/blacklight/index_presenter_spec.rb +1 -0
  150. data/spec/presenters/blacklight/rendering/pipeline_spec.rb +1 -0
  151. data/spec/presenters/blacklight/show_presenter_spec.rb +1 -0
  152. data/spec/presenters/blacklight/thumbnail_presenter_spec.rb +1 -0
  153. data/spec/services/blacklight/search_service_spec.rb +7 -7
  154. data/spec/spec_helper.rb +3 -12
  155. data/spec/support/features/session_helpers.rb +13 -4
  156. data/spec/support/features/turbo_helpers.rb +13 -0
  157. data/spec/support/features.rb +2 -0
  158. data/spec/support/user_helpers.rb +24 -0
  159. data/spec/test_app_templates/lib/generators/test_app_generator.rb +1 -1
  160. data/spec/views/catalog/_document.html.erb_spec.rb +4 -4
  161. data/spec/views/catalog/_paginate_compact.html.erb_spec.rb +2 -2
  162. data/spec/views/catalog/_sort_and_per_page.html.erb_spec.rb +5 -5
  163. data/spec/views/catalog/index.html.erb_spec.rb +2 -2
  164. data/spec/views/catalog/show.html.erb_spec.rb +3 -4
  165. data/spec/views/shared/_user_util_links.html.erb_spec.rb +56 -0
  166. data/template.demo.rb +2 -1
  167. metadata +30 -22
  168. data/.hound.yml +0 -4
  169. data/.jshintrc +0 -22
  170. data/app/assets/images/blacklight/logo.png +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7e40641612cebe399faf9868c171d6cf711b59d66c1bc473785ebc801fc5529b
4
- data.tar.gz: 68c5ee0c75357603704e1ff05c3b0cf05e9671d5d4f59f5980e795031125da79
3
+ metadata.gz: f2b7ef7b0e6e3924f62386fe3616e459ffc84875ceb3f9a00b225f765de60c87
4
+ data.tar.gz: b4b9154df43849054ab080a1e904a38aae03e0fdf35cd0d4d6b5f3c2256ea4e8
5
5
  SHA512:
6
- metadata.gz: 6c2775c6c51e94929bfb33f8fe539e827999e5622d0a02b2bce5b9df9c7c756b6e2e12143e6e26e3a179a1d2a56bf53b42ca9d452f1309ffebeb3566cef9b2ff
7
- data.tar.gz: e99e05050ac7160926a2ce94a9581a6a6454d7d611e63a59881ce4d2882364bf7c346c96722a839ff43f1efbf3d44b010b9ab54792e7be339c0146599c8114a9
6
+ metadata.gz: 22c974165abd744e806c376dfb91700868b821e461bc8229b32318192413f09e74b6e6ba6ede7640cc42b55806eb5c7d7ed5aa462b1d272caf87fb77c5508d0e
7
+ data.tar.gz: abad542f7ddd3ac0ecab4d7de65825a29815de79ee30ed4318bbcc09ff9e24ceae22310526d7849503bdff0ac45fe16ad60a131d23503f2bf29042f9cbd4ce38
data/.env CHANGED
@@ -1,6 +1,6 @@
1
- ALPINE_RUBY_VERSION=3.3
2
- RAILS_VERSION=7.2.1
3
- VIEW_COMPONENT_VERSION=3.14.0
1
+ ALPINE_RUBY_VERSION=4.0
2
+ RAILS_VERSION=8.1.3
3
+ VIEW_COMPONENT_VERSION=4.11.0
4
4
  SOLR_PORT=8983
5
5
  SOLR_URL=http://solr:8983/solr/blacklight-core
6
6
  SOLR_VERSION=latest
data/.github/matrix.json CHANGED
@@ -1,24 +1,24 @@
1
1
  {
2
2
  "ruby": ["3.4"],
3
- "rails_version": ["8.1.1"],
3
+ "rails_version": ["8.1.3"],
4
4
  "bootstrap_version": [null],
5
+ "bundler_version": ["2.7.2"],
5
6
  "view_component_version": ["~> 4.0"],
6
7
  "api": [null],
7
8
  "additional_engine_cart_rails_options": ["--css=bootstrap"],
8
9
  "additional_name": [""],
9
10
  "include": [
10
11
  {
11
- "ruby": "3.4",
12
- "rails_version": "8.1.1",
13
- "additional_engine_cart_rails_options": "--css=bootstrap --js=esbuild",
14
- "additional_name": "| esbuild"
12
+ "ruby": "4.0",
13
+ "rails_version": "8.1.3",
14
+ "additional_engine_cart_rails_options": "--css=bootstrap",
15
+ "additional_name": "| Ruby 4"
15
16
  },
16
17
  {
17
18
  "ruby": "3.4",
18
- "rails_version": "8.0.4",
19
- "additional_engine_cart_rails_options": "--css=bootstrap",
20
- "view_component_version": "~> 3.0",
21
- "additional_name": "ViewComponent 3"
19
+ "rails_version": "8.1.3",
20
+ "additional_engine_cart_rails_options": "--css=bootstrap --js=esbuild",
21
+ "additional_name": "| esbuild"
22
22
  },
23
23
  {
24
24
  "ruby": "3.3",
@@ -33,10 +33,10 @@
33
33
  "additional_name": "| esbuild"
34
34
  },
35
35
  {
36
- "ruby": "3.2",
36
+ "ruby": "3.3",
37
37
  "rails_version": "8.0.4",
38
- "solr_version": "8.11.2",
39
- "additional_name": "| Solr 8.11.2 and Ruby 3.2"
38
+ "solr_version": "9",
39
+ "additional_name": "| Solr 9 and Ruby 3.3"
40
40
  },
41
41
  {
42
42
  "ruby": "3.4",
@@ -44,12 +44,6 @@
44
44
  "api": "true",
45
45
  "additional_engine_cart_rails_options": "--api --skip-yarn",
46
46
  "additional_name": "| API"
47
- },
48
- {
49
- "ruby": "3.4",
50
- "rails_version": "7.2.3",
51
- "additional_engine_cart_rails_options": "-a propshaft --css=bootstrap --js=esbuild",
52
- "additional_name": "| Rails 7.2 + Propshaft, esbuild"
53
47
  }
54
48
  ]
55
49
  }
@@ -15,7 +15,7 @@ jobs:
15
15
  - name: Set up Ruby
16
16
  uses: ruby/setup-ruby@v1
17
17
  with:
18
- ruby-version: 3.2
18
+ ruby-version: 4.0
19
19
  bundler: "latest"
20
20
  - name: Change permissions
21
21
  run: "chmod -f -R o-w /opt/hostedtoolcache/Ruby/3.2.5/x64/lib/ruby/gems/3.2.0/gems | :"
@@ -4,7 +4,7 @@ on:
4
4
  ref:
5
5
  required: false
6
6
  type: string
7
- default: ''
7
+ default: ""
8
8
  description: The branch or reference to run the workflow against
9
9
  jobs:
10
10
  set_matrix:
@@ -35,7 +35,8 @@ jobs:
35
35
  VIEW_COMPONENT_VERSION: ${{ matrix.view_component_version }}
36
36
  BOOTSTRAP_VERSION: ${{ matrix.bootstrap_version }}
37
37
  BLACKLIGHT_API_TEST: ${{ matrix.api }}
38
- ENGINE_CART_RAILS_OPTIONS: "--skip-git --skip-listen --skip-spring --skip-keeps --skip-kamal --skip-solid --skip-coffee --skip-test ${{ matrix.additional_engine_cart_rails_options }}"
38
+ ENGINE_CART_RAILS_OPTIONS: "--skip-git --skip-listen --skip-spring --skip-keeps --skip-kamal --skip-thruster --skip-solid --skip-coffee --skip-test ${{ matrix.additional_engine_cart_rails_options }}"
39
+ BUNDLER_VERSION: ${{ matrix.bundler_version || '2.7.2' }}
39
40
  steps:
40
41
  - uses: actions/checkout@v4
41
42
  with:
@@ -43,8 +44,8 @@ jobs:
43
44
  - name: Set up Ruby
44
45
  uses: ruby/setup-ruby@v1
45
46
  with:
46
- bundler: "latest"
47
47
  ruby-version: ${{ matrix.ruby }}
48
+ bundler: ${{ matrix.bundler_version || '2.7.2' }}
48
49
  - name: Change permissions
49
50
  run: "chmod -f -R o-w /opt/hostedtoolcache/Ruby/3.2.5/x64/lib/ruby/gems/3.2.0/gems | :"
50
51
  - name: Install dependencies
data/.rubocop.yml CHANGED
@@ -10,8 +10,8 @@ inherit_from:
10
10
 
11
11
  AllCops:
12
12
  DisplayCopNames: true
13
- TargetRubyVersion: 3.2
14
- TargetRailsVersion: 7.0
13
+ TargetRubyVersion: 3.3
14
+ TargetRailsVersion: 7.2
15
15
  Exclude:
16
16
  - "lib/generators/blacklight/templates/**/*"
17
17
  - "blacklight.gemspec"
@@ -89,6 +89,9 @@ Rails/ApplicationMailer:
89
89
  Style/AccessModifierDeclarations:
90
90
  Enabled: false
91
91
 
92
+ Style/FormatStringToken:
93
+ EnforcedStyle: template
94
+
92
95
  Style/MissingRespondToMissing:
93
96
  Exclude:
94
97
  - "lib/blacklight/nested_open_struct_with_hash_access.rb"
@@ -457,11 +460,11 @@ Style/SuperWithArgsParentheses: # new in 1.58
457
460
  Enabled: true
458
461
  Style/YAMLFileRead: # new in 1.53
459
462
  Enabled: true
460
- Capybara/ClickLinkOrButtonStyle: # new in 2.19
463
+ Capybara/AssertStyle: # new in 2.17
461
464
  Enabled: true
462
- Capybara/MatchStyle: # new in 2.17
465
+ Capybara/RSpec/MatchStyle:
463
466
  Enabled: true
464
- Capybara/NegationMatcher: # new in 2.14
467
+ Capybara/RSpec/NegationMatcher: # new in 2.14
465
468
  Enabled: true
466
469
  Exclude:
467
470
  - "spec/models/**/*"
@@ -471,7 +474,7 @@ Capybara/SpecificActions: # new in 2.14
471
474
  Enabled: true
472
475
  Capybara/SpecificFinders: # new in 2.13
473
476
  Enabled: true
474
- Capybara/SpecificMatcher: # new in 2.12
477
+ Capybara/RSpec/SpecificMatcher: # new in 2.12
475
478
  Enabled: true
476
479
  Capybara/RSpec/HaveSelector: # new in 2.19
477
480
  Enabled: true
@@ -649,7 +652,7 @@ Style/RedundantFormat: # new in 1.72
649
652
  Enabled: true
650
653
  Capybara/FindAllFirst: # new in 2.22
651
654
  Enabled: true
652
- Capybara/NegationMatcherAfterVisit: # new in 2.22
655
+ Capybara/RSpec/NegationMatcherAfterVisit: # new in 2.22
653
656
  Enabled: true
654
657
  RSpec/IncludeExamples: # new in 3.6
655
658
  Enabled: true
@@ -663,3 +666,65 @@ Style/EmptyStringInsideInterpolation: # new in 1.76
663
666
  Enabled: true
664
667
  Style/RedundantArrayFlatten: # new in 1.76
665
668
  Enabled: true
669
+ Gemspec/AttributeAssignment: # new in 1.77
670
+ Enabled: true
671
+ Layout/EmptyLinesAfterModuleInclusion: # new in 1.79
672
+ Enabled: true
673
+ Lint/DataDefineOverride: # new in 1.85
674
+ Enabled: true
675
+ Lint/UnreachablePatternBranch: # new in 1.85
676
+ Enabled: true
677
+ Style/ArrayIntersectWithSingleElement: # new in 1.81
678
+ Enabled: true
679
+ Style/CollectionQuerying: # new in 1.77
680
+ Enabled: true
681
+ Style/EmptyClassDefinition: # new in 1.84
682
+ Enabled: true
683
+ Style/FileOpen: # new in 1.85
684
+ Enabled: true
685
+ Style/MapJoin: # new in 1.85
686
+ Enabled: true
687
+ Style/ModuleMemberExistenceCheck: # new in 1.82
688
+ Enabled: true
689
+ Style/NegativeArrayIndex: # new in 1.84
690
+ Enabled: true
691
+ Style/OneClassPerFile: # new in 1.85
692
+ Enabled: true
693
+ Style/PartitionInsteadOfDoubleSelect: # new in 1.85
694
+ Enabled: true
695
+ Style/PredicateWithKind: # new in 1.85
696
+ Enabled: true
697
+ Style/ReduceToHash: # new in 1.85
698
+ Enabled: true
699
+ Style/RedundantMinMaxBy: # new in 1.85
700
+ Enabled: true
701
+ Style/ReverseFind: # new in 1.84
702
+ Enabled: true
703
+ Style/SelectByKind: # new in 1.85
704
+ Enabled: true
705
+ Style/SelectByRange: # new in 1.85
706
+ Enabled: true
707
+ Style/TallyMethod: # new in 1.85
708
+ Enabled: true
709
+ Capybara/RSpec/CurrentPathExpectation: # new in 1.18
710
+ Enabled: true
711
+ Capybara/RSpec/HaveContent: # new in 2.23
712
+ Enabled: true
713
+ Capybara/RSpec/VisibilityMatcher: # new in 1.39
714
+ Enabled: true
715
+ RSpec/LeakyLocalVariable: # new in 3.8
716
+ Enabled: true
717
+ RSpec/Output: # new in 3.9
718
+ Enabled: true
719
+ RSpecRails/HttpStatusNameConsistency: # new in 2.32
720
+ Enabled: true
721
+ Rails/FindByOrAssignmentMemoization: # new in 2.33
722
+ Enabled: true
723
+ Rails/OrderArguments: # new in 2.33
724
+ Enabled: true
725
+ Rails/RedirectBackOrTo: # new in 2.34
726
+ Enabled: true
727
+ RSpec/DiscardedMatcher: # new in 3.10
728
+ Enabled: true
729
+ RSpec/MatchWithSimpleRegex: # new in 3.10
730
+ Enabled: true