blacklight 9.0.0.beta1 → 9.0.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 (263) hide show
  1. checksums.yaml +4 -4
  2. data/.docker/app/Dockerfile +2 -1
  3. data/.github/matrix.json +55 -0
  4. data/.github/workflows/build.yml +16 -0
  5. data/.github/workflows/lint.yml +25 -0
  6. data/.github/workflows/main.yml +22 -0
  7. data/.github/workflows/release_7_x_scheduled.yml +39 -0
  8. data/.github/workflows/release_8_x_scheduled.yml +39 -0
  9. data/.github/workflows/test.yml +53 -0
  10. data/.rubocop.yml +81 -3
  11. data/.rubocop_todo.yml +46 -71
  12. data/.solr_wrapper.yml +3 -1
  13. data/README.md +2 -2
  14. data/VERSION +1 -1
  15. data/app/assets/builds/blacklight.css +51 -38
  16. data/app/assets/javascripts/blacklight/blacklight.esm.js +62 -77
  17. data/app/assets/javascripts/blacklight/blacklight.esm.js.map +1 -1
  18. data/app/assets/javascripts/blacklight/blacklight.js +62 -77
  19. data/app/assets/javascripts/blacklight/blacklight.js.map +1 -1
  20. data/app/assets/stylesheets/blacklight/_blacklight_base.scss +0 -1
  21. data/app/assets/stylesheets/blacklight/_bootstrap_overrides.scss +4 -0
  22. data/app/assets/stylesheets/blacklight/_facets.scss +37 -29
  23. data/app/assets/stylesheets/blacklight/_header.scss +4 -0
  24. data/app/assets/stylesheets/blacklight/_modal.scss +9 -8
  25. data/app/assets/stylesheets/blacklight/_pagination.scss +1 -3
  26. data/app/assets/stylesheets/blacklight/_search_history.scss +0 -4
  27. data/app/assets/stylesheets/blacklight/blacklight_defaults.scss +3 -0
  28. data/app/components/blacklight/advanced_search_form_component.html.erb +4 -4
  29. data/app/components/blacklight/advanced_search_form_component.rb +6 -5
  30. data/app/components/blacklight/constraint_component.html.erb +1 -5
  31. data/app/components/blacklight/constraint_component.rb +11 -0
  32. data/app/components/blacklight/constraint_layout_component.html.erb +1 -6
  33. data/app/components/blacklight/constraint_layout_component.rb +9 -0
  34. data/app/components/blacklight/constraints_component.html.erb +3 -8
  35. data/app/components/blacklight/constraints_component.rb +59 -14
  36. data/app/components/blacklight/document/action_component.rb +1 -3
  37. data/app/components/blacklight/document/bookmark_component.html.erb +3 -3
  38. data/app/components/blacklight/document/bookmark_component.rb +10 -4
  39. data/app/components/blacklight/document/group_component.html.erb +1 -1
  40. data/app/components/blacklight/document/more_like_this_component.rb +2 -2
  41. data/app/components/blacklight/document/page_header_component.rb +3 -3
  42. data/app/components/blacklight/document/thumbnail_component.html.erb +3 -7
  43. data/app/components/blacklight/document/thumbnail_component.rb +7 -6
  44. data/app/components/blacklight/document_component.html.erb +3 -3
  45. data/app/components/blacklight/document_component.rb +22 -26
  46. data/app/components/blacklight/document_title_component.rb +6 -10
  47. data/app/components/blacklight/facet_field_checkboxes_component.rb +4 -18
  48. data/app/components/blacklight/facet_field_component.rb +4 -15
  49. data/app/components/blacklight/facet_field_filter_component.rb +4 -19
  50. data/app/components/blacklight/facet_field_inclusive_constraint_component.rb +4 -23
  51. data/app/components/blacklight/facet_field_list_component.rb +4 -30
  52. data/app/components/blacklight/facet_field_no_layout_component.rb +4 -8
  53. data/app/components/blacklight/facet_field_pagination_component.html.erb +2 -2
  54. data/app/components/blacklight/facet_item_component.rb +4 -72
  55. data/app/components/blacklight/facet_item_pivot_component.rb +8 -4
  56. data/app/components/blacklight/{facet_field_checkboxes_component.html.erb → facets/checkboxes_component.html.erb} +4 -4
  57. data/app/components/blacklight/facets/checkboxes_component.rb +26 -0
  58. data/app/components/blacklight/facets/count_component.rb +23 -0
  59. data/app/components/blacklight/{facet_field_component.html.erb → facets/field_component.html.erb} +1 -3
  60. data/app/components/blacklight/facets/field_component.rb +23 -0
  61. data/app/components/blacklight/facets/filters_component.html.erb +4 -0
  62. data/app/components/blacklight/facets/filters_component.rb +39 -0
  63. data/app/components/blacklight/{facet_field_inclusive_constraint_component.html.erb → facets/inclusive_constraint_component.html.erb} +1 -1
  64. data/app/components/blacklight/facets/inclusive_constraint_component.rb +31 -0
  65. data/app/components/blacklight/{facet_field_filter_component.html.erb → facets/index_navigation_component.html.erb} +1 -1
  66. data/app/components/blacklight/facets/index_navigation_component.rb +32 -0
  67. data/app/components/blacklight/facets/item_component.rb +76 -0
  68. data/app/components/blacklight/facets/list_component.html.erb +11 -0
  69. data/app/components/blacklight/facets/list_component.rb +46 -0
  70. data/app/components/blacklight/facets/no_layout_component.rb +16 -0
  71. data/app/components/blacklight/facets/pivot_list_component.rb +14 -0
  72. data/app/components/blacklight/facets/selected_value_component.rb +29 -0
  73. data/app/components/blacklight/facets/suggest_component.html.erb +17 -0
  74. data/app/components/blacklight/facets/suggest_component.rb +21 -0
  75. data/app/components/blacklight/header_component.rb +2 -2
  76. data/app/components/blacklight/icons/remove_component.rb +2 -2
  77. data/app/components/blacklight/metadata_field_component.html.erb +2 -2
  78. data/app/components/blacklight/metadata_field_component.rb +2 -1
  79. data/app/components/blacklight/metadata_field_layout_component.rb +9 -4
  80. data/app/components/blacklight/metadata_field_plain_text_layout_component.rb +2 -2
  81. data/app/components/blacklight/response/facet_group_component.html.erb +3 -3
  82. data/app/components/blacklight/response/facet_group_component.rb +9 -1
  83. data/app/components/blacklight/search_bar_component.html.erb +2 -2
  84. data/app/components/blacklight/system/dropdown_component.html.erb +1 -1
  85. data/app/components/blacklight/system/dropdown_component.rb +1 -1
  86. data/app/components/blacklight/system/flash_message_component.html.erb +1 -1
  87. data/app/components/blacklight/system/flash_message_component.rb +0 -9
  88. data/app/components/blacklight/system/modal_component.html.erb +1 -2
  89. data/app/components/blacklight/top_navbar_component.html.erb +2 -2
  90. data/app/controllers/concerns/blacklight/bookmarks.rb +13 -3
  91. data/app/controllers/concerns/blacklight/catalog.rb +27 -30
  92. data/app/controllers/concerns/blacklight/controller.rb +1 -1
  93. data/app/controllers/concerns/blacklight/search_context.rb +1 -1
  94. data/app/controllers/concerns/blacklight/searchable.rb +1 -1
  95. data/app/helpers/blacklight/catalog_helper_behavior.rb +5 -3
  96. data/app/helpers/blacklight/configuration_helper_behavior.rb +2 -2
  97. data/app/helpers/blacklight/document_helper_behavior.rb +3 -1
  98. data/app/helpers/blacklight/facets_helper_behavior.rb +7 -12
  99. data/app/helpers/blacklight/icon_helper_behavior.rb +2 -2
  100. data/app/javascript/blacklight-frontend/bookmark_toggle.js +7 -2
  101. data/app/javascript/blacklight-frontend/button_focus.js +1 -1
  102. data/app/javascript/blacklight-frontend/checkbox_submit.js +9 -2
  103. data/app/javascript/blacklight-frontend/debounce.js +1 -1
  104. data/app/javascript/blacklight-frontend/facet_suggest.js +27 -3
  105. data/app/javascript/blacklight-frontend/index.js +0 -2
  106. data/app/javascript/blacklight-frontend/modal.js +15 -8
  107. data/app/javascript/blacklight-frontend/search_context.js +3 -2
  108. data/app/presenters/blacklight/constraint_presenter.rb +22 -0
  109. data/app/presenters/blacklight/document_presenter.rb +6 -5
  110. data/app/presenters/blacklight/facet_field_presenter.rb +18 -2
  111. data/app/presenters/blacklight/facet_grouped_item_presenter.rb +6 -0
  112. data/app/presenters/blacklight/facet_item_pivot_presenter.rb +1 -5
  113. data/app/presenters/blacklight/facet_item_presenter.rb +5 -18
  114. data/app/presenters/blacklight/field_presenter.rb +4 -2
  115. data/app/presenters/blacklight/json_presenter.rb +8 -4
  116. data/app/presenters/blacklight/rendering/abstract_step.rb +7 -1
  117. data/app/presenters/blacklight/rendering/helper_method.rb +4 -4
  118. data/app/presenters/blacklight/rendering/join.rb +11 -7
  119. data/app/presenters/blacklight/rendering/terminator.rb +1 -1
  120. data/app/services/blacklight/field_retriever.rb +1 -1
  121. data/app/services/blacklight/search_service.rb +10 -8
  122. data/app/values/blacklight/types.rb +2 -2
  123. data/app/views/blacklight/nav/_bookmark.html.erb +1 -1
  124. data/app/views/catalog/_document.atom.builder +1 -1
  125. data/app/views/catalog/_document.html.erb +1 -1
  126. data/app/views/catalog/_email_form.html.erb +4 -4
  127. data/app/views/catalog/_home_text.html.erb +2 -2
  128. data/app/views/catalog/_show_main_content.html.erb +9 -5
  129. data/app/views/catalog/_sms_form.html.erb +4 -4
  130. data/app/views/catalog/_sort_and_per_page.html.erb +1 -1
  131. data/app/views/catalog/advanced_search.html.erb +1 -1
  132. data/app/views/catalog/facet.html.erb +8 -10
  133. data/app/views/catalog/index.html.erb +0 -1
  134. data/app/views/catalog/index.json.jbuilder +5 -3
  135. data/app/views/catalog/show.html.erb +2 -2
  136. data/app/views/layouts/blacklight/base.html.erb +1 -1
  137. data/blacklight.gemspec +1 -1
  138. data/config/locales/blacklight.ar.yml +14 -14
  139. data/config/locales/blacklight.ca.yml +2 -2
  140. data/config/locales/blacklight.de.yml +13 -13
  141. data/config/locales/blacklight.en.yml +3 -3
  142. data/config/locales/blacklight.es.yml +13 -13
  143. data/config/locales/blacklight.fr.yml +14 -14
  144. data/config/locales/blacklight.hu.yml +15 -15
  145. data/config/locales/blacklight.it.yml +16 -16
  146. data/config/locales/blacklight.nl.yml +13 -13
  147. data/config/locales/blacklight.pt-BR.yml +15 -15
  148. data/config/locales/blacklight.sq.yml +14 -14
  149. data/config/locales/blacklight.zh.yml +12 -12
  150. data/lib/blacklight/abstract_repository.rb +2 -2
  151. data/lib/blacklight/component.rb +7 -1
  152. data/lib/blacklight/configuration/context.rb +3 -3
  153. data/lib/blacklight/configuration/facet_field.rb +11 -6
  154. data/lib/blacklight/configuration/field.rb +4 -4
  155. data/lib/blacklight/configuration/fields.rb +0 -1
  156. data/lib/blacklight/configuration/search_field.rb +1 -1
  157. data/lib/blacklight/configuration/view_config.rb +32 -18
  158. data/lib/blacklight/configuration.rb +64 -10
  159. data/lib/blacklight/nested_open_struct_with_hash_access.rb +1 -1
  160. data/lib/blacklight/open_struct_with_hash_access.rb +2 -2
  161. data/lib/blacklight/routes/searchable.rb +1 -1
  162. data/lib/blacklight/search_builder.rb +2 -1
  163. data/lib/blacklight/search_state/filter_field.rb +4 -4
  164. data/lib/blacklight/search_state/pivot_filter_field.rb +5 -5
  165. data/lib/blacklight/search_state.rb +2 -0
  166. data/lib/blacklight/solr/abstract_filter_query_builder.rb +77 -0
  167. data/lib/blacklight/solr/default_filter_query_builder.rb +20 -0
  168. data/lib/blacklight/solr/field_reflection_search_builder.rb +11 -0
  169. data/lib/blacklight/solr/repository.rb +17 -15
  170. data/lib/blacklight/solr/response/facets.rb +2 -2
  171. data/lib/blacklight/solr/response/params.rb +0 -4
  172. data/lib/blacklight/solr/response.rb +5 -1
  173. data/lib/blacklight/solr/search_builder_behavior.rb +48 -97
  174. data/lib/blacklight/solr/single_doc_search_builder.rb +25 -0
  175. data/lib/blacklight.rb +6 -4
  176. data/lib/generators/blacklight/assets/importmap_generator.rb +3 -5
  177. data/lib/generators/blacklight/assets_generator.rb +1 -1
  178. data/lib/generators/blacklight/search_builder_generator.rb +1 -1
  179. data/lib/generators/blacklight/templates/.solr_wrapper.yml +3 -1
  180. data/lib/generators/blacklight/templates/catalog_controller.rb +34 -8
  181. data/lib/generators/blacklight/templates/solr/conf/solrconfig.xml +0 -71
  182. data/package.json +3 -3
  183. data/spec/components/blacklight/advanced_search_form_component_spec.rb +18 -22
  184. data/spec/components/blacklight/constraint_layout_component_spec.rb +8 -8
  185. data/spec/components/blacklight/constraints_component_spec.rb +11 -11
  186. data/spec/components/blacklight/document/action_component_spec.rb +23 -15
  187. data/spec/components/blacklight/document/group_component_spec.rb +10 -15
  188. data/spec/components/blacklight/document/page_header_component_spec.rb +35 -28
  189. data/spec/components/blacklight/document/sidebar_component_spec.rb +5 -11
  190. data/spec/components/blacklight/document_component_spec.rb +105 -79
  191. data/spec/components/blacklight/facet_component_spec.rb +12 -8
  192. data/spec/components/blacklight/facet_item_pivot_component_spec.rb +12 -12
  193. data/spec/components/blacklight/{facet_field_checkboxes_component_spec.rb → facets/checkboxes_component_spec.rb} +13 -13
  194. data/spec/components/blacklight/facets/filters_component_spec.rb +36 -0
  195. data/spec/components/blacklight/facets/index_navigation_component_spec.rb +41 -0
  196. data/spec/components/blacklight/{facet_item_component_spec.rb → facets/item_component_spec.rb} +10 -10
  197. data/spec/components/blacklight/{facet_field_list_component_spec.rb → facets/list_component_spec.rb} +34 -23
  198. data/spec/components/blacklight/facets/pivot_list_component_spec.rb +53 -0
  199. data/spec/components/blacklight/facets/suggest_component_spec.rb +82 -0
  200. data/spec/components/blacklight/header_component_spec.rb +2 -4
  201. data/spec/components/blacklight/hidden_search_state_component_spec.rb +7 -7
  202. data/spec/components/blacklight/metadata_field_component_spec.rb +17 -15
  203. data/spec/components/blacklight/response/facet_group_component_spec.rb +37 -0
  204. data/spec/components/blacklight/response/pagination_component_spec.rb +1 -1
  205. data/spec/components/blacklight/response/spellcheck_component_spec.rb +1 -1
  206. data/spec/components/blacklight/search_bar_component_spec.rb +28 -5
  207. data/spec/components/blacklight/search_context/server_applied_params_component_spec.rb +2 -2
  208. data/spec/components/blacklight/search_context/server_item_pagination_component_spec.rb +3 -5
  209. data/spec/components/blacklight/skip_link_component_spec.rb +8 -11
  210. data/spec/components/blacklight/start_over_button_component_spec.rb +4 -4
  211. data/spec/components/blacklight/system/dropdown_component_spec.rb +26 -0
  212. data/spec/components/blacklight/system/flash_message_component_spec.rb +7 -11
  213. data/spec/controllers/blacklight/catalog_spec.rb +1 -1
  214. data/spec/controllers/catalog_controller_spec.rb +12 -20
  215. data/spec/features/advanced_search_spec.rb +42 -21
  216. data/spec/features/facets_spec.rb +84 -12
  217. data/spec/features/modal_spec.rb +1 -1
  218. data/spec/features/search_filters_spec.rb +6 -4
  219. data/spec/features/search_spec.rb +3 -3
  220. data/spec/helpers/blacklight/facets_helper_behavior_spec.rb +10 -0
  221. data/spec/lib/blacklight/configuration/facet_field_spec.rb +2 -2
  222. data/spec/lib/blacklight/parameters_spec.rb +12 -1
  223. data/spec/lib/blacklight/search_state/filter_field_spec.rb +18 -0
  224. data/spec/models/blacklight/configuration_spec.rb +178 -28
  225. data/spec/models/blacklight/solr/default_filter_query_builder_spec.rb +72 -0
  226. data/spec/models/blacklight/solr/document_spec.rb +0 -4
  227. data/spec/models/blacklight/solr/repository_spec.rb +37 -29
  228. data/spec/models/blacklight/solr/response/facets_spec.rb +86 -40
  229. data/spec/models/blacklight/solr/response/group_response_spec.rb +8 -5
  230. data/spec/models/blacklight/solr/response/group_spec.rb +9 -5
  231. data/spec/models/blacklight/solr/response_spec.rb +96 -64
  232. data/spec/models/blacklight/solr/search_builder_behavior_spec.rb +38 -57
  233. data/spec/models/solr_document_spec.rb +5 -1
  234. data/spec/presenters/blacklight/constraint_presenter_spec.rb +32 -0
  235. data/spec/presenters/blacklight/document_presenter_spec.rb +3 -3
  236. data/spec/presenters/blacklight/facet_item_presenter_spec.rb +0 -7
  237. data/spec/presenters/blacklight/field_presenter_spec.rb +103 -22
  238. data/spec/presenters/blacklight/json_presenter_spec.rb +17 -0
  239. data/spec/presenters/blacklight/rendering/pipeline_spec.rb +130 -14
  240. data/spec/services/blacklight/search_service_spec.rb +6 -27
  241. data/spec/spec_helper.rb +0 -1
  242. data/spec/support/presenter_test_helpers.rb +1 -1
  243. data/spec/support/view_component_test_helpers.rb +0 -18
  244. data/spec/views/catalog/facet.html.erb_spec.rb +10 -3
  245. data/spec/views/catalog/index.atom.builder_spec.rb +8 -3
  246. data/spec/views/catalog/index.html.erb_spec.rb +3 -1
  247. metadata +69 -38
  248. data/.github/workflows/ruby.yml +0 -98
  249. data/app/assets/stylesheets/blacklight/_icons.scss +0 -4
  250. data/app/components/blacklight/facet_field_list_component.html.erb +0 -19
  251. data/app/components/blacklight/search/facet_suggest_input.html.erb +0 -9
  252. data/app/components/blacklight/search/facet_suggest_input.rb +0 -16
  253. data/app/javascript/blacklight-frontend/modalForm.js +0 -60
  254. data/app/views/catalog/_facet_index_navigation.html.erb +0 -1
  255. data/app/views/catalog/_facet_layout.html.erb +0 -8
  256. data/app/views/catalog/_facet_pagination.html.erb +0 -1
  257. data/app/views/catalog/_facet_pivot.html.erb +0 -3
  258. data/app/views/shared/_sitelinks_search_box.html.erb +0 -12
  259. data/spec/components/blacklight/document_metadata_component_spec.rb +0 -0
  260. data/spec/components/blacklight/search/facet_suggest_input_spec.rb +0 -33
  261. data/spec/features/sitelinks_search_box_spec.rb +0 -13
  262. data/spec/views/catalog/_facet_index_navigation.html.erb_spec.rb +0 -43
  263. data/spec/views/catalog/_facet_layout.html.erb_spec.rb +0 -41
data/.rubocop_todo.yml CHANGED
@@ -1,6 +1,6 @@
1
1
  # This configuration was generated by
2
2
  # `rubocop --auto-gen-config`
3
- # on 2024-09-03 14:22:19 UTC using RuboCop version 1.66.0.
3
+ # on 2025-07-01 15:50:17 UTC using RuboCop version 1.77.0.
4
4
  # The point is for the user to remove these configuration records
5
5
  # one by one as the offenses are removed from the code base.
6
6
  # Note that changes in the inspected code, or installation of new
@@ -12,6 +12,16 @@ Capybara/CurrentPathExpectation:
12
12
  Exclude:
13
13
  - 'spec/features/alternate_controller_spec.rb'
14
14
 
15
+ # Offense count: 7
16
+ Capybara/NegationMatcherAfterVisit:
17
+ Exclude:
18
+ - 'spec/features/bookmarks_spec.rb'
19
+ - 'spec/features/facets_spec.rb'
20
+ - 'spec/features/modal_spec.rb'
21
+ - 'spec/features/record_view_spec.rb'
22
+ - 'spec/features/search_context_spec.rb'
23
+ - 'spec/features/sitelinks_search_box_spec.rb'
24
+
15
25
  # Offense count: 13
16
26
  Capybara/VisibilityMatcher:
17
27
  Exclude:
@@ -35,7 +45,7 @@ Lint/AmbiguousOperator:
35
45
  - 'spec/models/blacklight/facet_paginator_spec.rb'
36
46
  - 'spec/services/blacklight/search_service_spec.rb'
37
47
 
38
- # Offense count: 45
48
+ # Offense count: 43
39
49
  # This cop supports safe autocorrection (--autocorrect).
40
50
  Lint/AmbiguousRegexpLiteral:
41
51
  Exclude:
@@ -45,7 +55,6 @@ Lint/AmbiguousRegexpLiteral:
45
55
  - 'spec/helpers/catalog_helper_spec.rb'
46
56
  - 'spec/models/record_mailer_spec.rb'
47
57
  - 'spec/views/catalog/_document.html.erb_spec.rb'
48
- - 'spec/views/catalog/_search_header.erb_spec.rb'
49
58
  - 'spec/views/catalog/_sort_and_per_page.html.erb_spec.rb'
50
59
  - 'spec/views/catalog/index.html.erb_spec.rb'
51
60
  - 'spec/views/catalog/show.html.erb_spec.rb'
@@ -75,13 +84,7 @@ Lint/EmptyBlock:
75
84
  - 'app/controllers/concerns/blacklight/bookmarks.rb'
76
85
  - 'lib/blacklight/solr/search_builder_behavior.rb'
77
86
 
78
- # Offense count: 1
79
- # Configuration parameters: AllowComments.
80
- Lint/EmptyFile:
81
- Exclude:
82
- - 'spec/components/blacklight/document_metadata_component_spec.rb'
83
-
84
- # Offense count: 48
87
+ # Offense count: 52
85
88
  # Configuration parameters: AllowedParentClasses.
86
89
  Lint/MissingSuper:
87
90
  Enabled: false
@@ -96,15 +99,10 @@ Lint/ParenthesesAsGroupedExpression:
96
99
  - 'spec/features/search_spec.rb'
97
100
  - 'spec/models/blacklight/solr/repository_spec.rb'
98
101
 
99
- # Offense count: 2
100
- Lint/ShadowingOuterLocalVariable:
101
- Exclude:
102
- - 'spec/models/blacklight/configuration_spec.rb'
103
-
104
- # Offense count: 83
102
+ # Offense count: 81
105
103
  # Configuration parameters: AllowedMethods, AllowedPatterns, CountRepeatedAttributes.
106
104
  Metrics/AbcSize:
107
- Max: 46
105
+ Max: 43
108
106
 
109
107
  # Offense count: 1
110
108
  # Configuration parameters: CountComments, CountAsOne, AllowedMethods, AllowedPatterns, inherit_mode.
@@ -112,27 +110,27 @@ Metrics/AbcSize:
112
110
  Metrics/BlockLength:
113
111
  Max: 26
114
112
 
115
- # Offense count: 42
113
+ # Offense count: 37
116
114
  # Configuration parameters: AllowedMethods, AllowedPatterns.
117
115
  Metrics/CyclomaticComplexity:
118
- Max: 14
116
+ Max: 13
119
117
 
120
- # Offense count: 78
118
+ # Offense count: 81
121
119
  # Configuration parameters: CountComments, CountAsOne, AllowedMethods, AllowedPatterns.
122
120
  Metrics/MethodLength:
123
121
  Max: 27
124
122
 
125
- # Offense count: 4
123
+ # Offense count: 3
126
124
  # Configuration parameters: CountComments, CountAsOne.
127
125
  Metrics/ModuleLength:
128
- Max: 124
126
+ Max: 115
129
127
 
130
- # Offense count: 8
128
+ # Offense count: 7
131
129
  # Configuration parameters: CountKeywordArgs, MaxOptionalParameters.
132
130
  Metrics/ParameterLists:
133
131
  Max: 6
134
132
 
135
- # Offense count: 36
133
+ # Offense count: 30
136
134
  # Configuration parameters: AllowedMethods, AllowedPatterns.
137
135
  Metrics/PerceivedComplexity:
138
136
  Max: 14
@@ -161,7 +159,7 @@ Naming/MethodParameterName:
161
159
  # Offense count: 9
162
160
  # Configuration parameters: EnforcedStyle, CheckMethodNames, CheckSymbols, AllowedIdentifiers, AllowedPatterns.
163
161
  # SupportedStyles: snake_case, normalcase, non_integer
164
- # AllowedIdentifiers: capture3, iso8601, rfc1123_date, rfc822, rfc2822, rfc3339, x86_64
162
+ # AllowedIdentifiers: TLS1_1, TLS1_2, capture3, iso8601, rfc1123_date, rfc822, rfc2822, rfc3339, x86_64
165
163
  Naming/VariableNumber:
166
164
  Exclude:
167
165
  - 'spec/lib/blacklight/search_state_spec.rb'
@@ -175,13 +173,13 @@ RSpec/BeforeAfterAll:
175
173
  - 'spec/models/blacklight/document/dublin_core_spec.rb'
176
174
  - 'spec/models/blacklight/solr/document_spec.rb'
177
175
 
178
- # Offense count: 109
176
+ # Offense count: 107
179
177
  # Configuration parameters: Prefixes, AllowedPatterns.
180
178
  # Prefixes: when, with, without
181
179
  RSpec/ContextWording:
182
180
  Enabled: false
183
181
 
184
- # Offense count: 138
182
+ # Offense count: 143
185
183
  # Configuration parameters: CountAsOne.
186
184
  RSpec/ExampleLength:
187
185
  Max: 33
@@ -191,7 +189,7 @@ RSpec/ExpectInHook:
191
189
  Exclude:
192
190
  - 'spec/controllers/catalog_controller_spec.rb'
193
191
 
194
- # Offense count: 108
192
+ # Offense count: 107
195
193
  # Configuration parameters: AssignmentOnly.
196
194
  RSpec/InstanceVariable:
197
195
  Exclude:
@@ -205,7 +203,6 @@ RSpec/InstanceVariable:
205
203
  - 'spec/models/blacklight/solr/document_spec.rb'
206
204
  - 'spec/models/record_mailer_spec.rb'
207
205
  - 'spec/services/blacklight/search_service_spec.rb'
208
- - 'spec/views/catalog/index.atom.builder_spec.rb'
209
206
 
210
207
  # Offense count: 4
211
208
  RSpec/IteratedExpectation:
@@ -232,7 +229,7 @@ RSpec/MessageChain:
232
229
  - 'spec/presenters/blacklight/field_presenter_spec.rb'
233
230
  - 'spec/views/shared/_user_util_links.html.erb_spec.rb'
234
231
 
235
- # Offense count: 28
232
+ # Offense count: 27
236
233
  # Configuration parameters: EnforcedStyle.
237
234
  # SupportedStyles: have_received, receive
238
235
  RSpec/MessageSpies:
@@ -246,7 +243,7 @@ RSpec/MessageSpies:
246
243
  - 'spec/models/blacklight/suggest_search_spec.rb'
247
244
  - 'spec/presenters/blacklight/field_presenter_spec.rb'
248
245
 
249
- # Offense count: 390
246
+ # Offense count: 400
250
247
  RSpec/MultipleExpectations:
251
248
  Max: 16
252
249
 
@@ -255,13 +252,13 @@ RSpec/MultipleExpectations:
255
252
  RSpec/MultipleMemoizedHelpers:
256
253
  Max: 14
257
254
 
258
- # Offense count: 399
255
+ # Offense count: 429
259
256
  # Configuration parameters: EnforcedStyle, IgnoreSharedExamples.
260
257
  # SupportedStyles: always, named_only
261
258
  RSpec/NamedSubject:
262
259
  Enabled: false
263
260
 
264
- # Offense count: 60
261
+ # Offense count: 71
265
262
  # Configuration parameters: AllowedGroups.
266
263
  RSpec/NestedGroups:
267
264
  Max: 5
@@ -289,7 +286,7 @@ RSpec/ScatteredLet:
289
286
  Exclude:
290
287
  - 'spec/views/catalog/index.atom.builder_spec.rb'
291
288
 
292
- # Offense count: 20
289
+ # Offense count: 19
293
290
  RSpec/StubbedMock:
294
291
  Exclude:
295
292
  - 'spec/controllers/catalog_controller_spec.rb'
@@ -328,9 +325,9 @@ Rails/Date:
328
325
  Exclude:
329
326
  - 'spec/models/search_spec.rb'
330
327
 
331
- # Offense count: 20
328
+ # Offense count: 17
332
329
  # Configuration parameters: Include.
333
- # Include: app/helpers/**/*.rb
330
+ # Include: **/app/helpers/**/*.rb
334
331
  Rails/HelperInstanceVariable:
335
332
  Exclude:
336
333
  - 'app/helpers/blacklight/catalog_helper_behavior.rb'
@@ -351,12 +348,12 @@ Rails/OutputSafety:
351
348
  Exclude:
352
349
  - 'app/presenters/blacklight/rendering/join.rb'
353
350
 
354
- # Offense count: 14
351
+ # Offense count: 11
355
352
  Security/Eval:
356
353
  Exclude:
357
354
  - 'spec/models/blacklight/solr/response_spec.rb'
358
355
 
359
- # Offense count: 9
356
+ # Offense count: 7
360
357
  # This cop supports safe autocorrection (--autocorrect).
361
358
  # Configuration parameters: EnforcedStyle.
362
359
  # SupportedStyles: prefer_alias, prefer_alias_method
@@ -381,10 +378,12 @@ Style/BlockDelimiters:
381
378
  - 'app/views/catalog/index.rss.builder'
382
379
  - 'app/views/catalog/opensearch.xml.builder'
383
380
 
384
- # Offense count: 52
381
+ # Offense count: 57
385
382
  # This cop supports unsafe autocorrection (--autocorrect-all).
386
- # Configuration parameters: EnforcedStyle.
383
+ # Configuration parameters: EnforcedStyle, EnforcedStyleForClasses, EnforcedStyleForModules.
387
384
  # SupportedStyles: nested, compact
385
+ # SupportedStylesForClasses: ~, nested, compact
386
+ # SupportedStylesForModules: ~, nested, compact
388
387
  Style/ClassAndModuleChildren:
389
388
  Enabled: false
390
389
 
@@ -409,7 +408,7 @@ Style/DocumentDynamicEvalDefinition:
409
408
  - 'app/builders/blacklight/action_builder.rb'
410
409
  - 'lib/blacklight/configuration/fields.rb'
411
410
 
412
- # Offense count: 133
411
+ # Offense count: 144
413
412
  # Configuration parameters: AllowedConstants.
414
413
  Style/Documentation:
415
414
  Enabled: false
@@ -428,9 +427,9 @@ Style/ExpandPathArguments:
428
427
  - 'lib/generators/blacklight/test_support_generator.rb'
429
428
  - 'lib/generators/blacklight/user_generator.rb'
430
429
 
431
- # Offense count: 16
430
+ # Offense count: 17
432
431
  # This cop supports safe autocorrection (--autocorrect).
433
- # Configuration parameters: MaxUnannotatedPlaceholdersAllowed, AllowedMethods, AllowedPatterns.
432
+ # Configuration parameters: MaxUnannotatedPlaceholdersAllowed, Mode, AllowedMethods, AllowedPatterns.
434
433
  # SupportedStyles: annotated, template, unannotated
435
434
  # AllowedMethods: redirect
436
435
  Style/FormatStringToken:
@@ -447,18 +446,17 @@ Style/GuardClause:
447
446
  - 'app/helpers/blacklight/catalog_helper_behavior.rb'
448
447
  - 'lib/blacklight/solr/search_builder_behavior.rb'
449
448
 
450
- # Offense count: 29
449
+ # Offense count: 32
451
450
  # This cop supports safe autocorrection (--autocorrect).
452
451
  Style/IfUnlessModifier:
453
452
  Enabled: false
454
453
 
455
- # Offense count: 6
454
+ # Offense count: 4
456
455
  # This cop supports safe autocorrection (--autocorrect).
457
456
  Style/MultilineIfModifier:
458
457
  Exclude:
459
458
  - 'app/views/catalog/index.atom.builder'
460
459
  - 'lib/blacklight/solr/response/facets.rb'
461
- - 'lib/blacklight/solr/search_builder_behavior.rb'
462
460
 
463
461
  # Offense count: 1
464
462
  # This cop supports safe autocorrection (--autocorrect).
@@ -467,15 +465,7 @@ Style/MultipleComparison:
467
465
  Exclude:
468
466
  - 'lib/blacklight/configuration/context.rb'
469
467
 
470
- # Offense count: 2
471
- # This cop supports unsafe autocorrection (--autocorrect-all).
472
- # Configuration parameters: EnforcedStyle.
473
- # SupportedStyles: literals, strict
474
- Style/MutableConstant:
475
- Exclude:
476
- - 'lib/blacklight/solr/request.rb'
477
-
478
- # Offense count: 9
468
+ # Offense count: 8
479
469
  # This cop supports unsafe autocorrection (--autocorrect-all).
480
470
  # Configuration parameters: EnforcedStyle, AllowedMethods, AllowedPatterns.
481
471
  # SupportedStyles: predicate, comparison
@@ -507,13 +497,12 @@ Style/ParenthesesAroundCondition:
507
497
  Exclude:
508
498
  - 'app/views/catalog/_document.atom.builder'
509
499
 
510
- # Offense count: 3
500
+ # Offense count: 1
511
501
  # This cop supports safe autocorrection (--autocorrect).
512
502
  # Configuration parameters: PreferredDelimiters.
513
503
  Style/PercentLiteralDelimiters:
514
504
  Exclude:
515
505
  - 'lib/blacklight/engine.rb'
516
- - 'lib/blacklight/solr/request.rb'
517
506
 
518
507
  # Offense count: 2
519
508
  # This cop supports safe autocorrection (--autocorrect).
@@ -532,20 +521,6 @@ Style/RescueStandardError:
532
521
  - 'lib/blacklight/configuration/fields.rb'
533
522
  - 'lib/railties/blacklight.rake'
534
523
 
535
- # Offense count: 11
536
- # This cop supports unsafe autocorrection (--autocorrect-all).
537
- # Configuration parameters: ConvertCodeThatCanStartToReturnNil, AllowedMethods, MaxChainLength.
538
- # AllowedMethods: present?, blank?, presence, try, try!
539
- Style/SafeNavigation:
540
- Exclude:
541
- - 'app/controllers/concerns/blacklight/bookmarks.rb'
542
- - 'app/controllers/concerns/blacklight/controller.rb'
543
- - 'app/services/blacklight/field_retriever.rb'
544
- - 'lib/blacklight.rb'
545
- - 'lib/blacklight/configuration/facet_field.rb'
546
- - 'lib/blacklight/configuration/search_field.rb'
547
- - 'lib/blacklight/solr/search_builder_behavior.rb'
548
-
549
524
  # Offense count: 6
550
525
  # This cop supports safe autocorrection (--autocorrect).
551
526
  # Configuration parameters: AllowAsExpressionSeparator.
data/.solr_wrapper.yml CHANGED
@@ -1,5 +1,7 @@
1
1
  # Place any default configuration for solr_wrapper here
2
2
  # port: 8983
3
+ env:
4
+ SOLR_MODULES: analysis-extras
3
5
  collection:
4
- dir: lib/generators/blacklight/templates/solr/conf
6
+ dir: lib/generators/blacklight/templates/solr/
5
7
  name: blacklight-core
data/README.md CHANGED
@@ -48,8 +48,8 @@ Blacklight assumes a modern browser with support for [Baseline 2023](https://web
48
48
 
49
49
  ## Dependencies
50
50
 
51
- * [Ruby](https://www.ruby-lang.org/) 3.1+
52
- * [Ruby on Rails](https://rubyonrails.org/) 6.1+
51
+ * [Ruby](https://www.ruby-lang.org/) 3.2+
52
+ * [Ruby on Rails](https://rubyonrails.org/) 7.2+
53
53
 
54
54
  Blacklight aims to support the currently [supported versions of Ruby](https://www.ruby-lang.org/en/downloads/branches/) and the [supported versions of Ruby on Rails](https://guides.rubyonrails.org/maintenance_policy.html). We aim to keep our [test configuration](blob/main/.github/workflows/ruby.yml) up to date with these supported versions.
55
55
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 9.0.0.beta1
1
+ 9.0.0
@@ -18,6 +18,8 @@
18
18
  --bl-constraint-remove-hover-bg: #bb2d3b;
19
19
  --bl-constraint-remove-hover-border-color: #bb2d3b;
20
20
  --bl-field-name-color: var(--bs-secondary-color);
21
+ /* emulate Bootstrap backdrop bg & opacity */
22
+ --bl-modal-backdrop-bg: rgba(0, 0, 0, 0.5);
21
23
  }
22
24
 
23
25
  .page-link {
@@ -31,6 +33,9 @@ dialog.modal[open] {
31
33
  max-height: unset;
32
34
  max-width: unset;
33
35
  }
36
+ dialog.modal[open]::backdrop {
37
+ background-color: var(--bl-modal-backdrop-bg);
38
+ }
34
39
 
35
40
  /* Generic layout stuff */
36
41
  main {
@@ -40,6 +45,10 @@ main {
40
45
  /*
41
46
  Header bar at top (Bootstrap nav-bar)
42
47
  */
48
+ .navbar.bg-dark {
49
+ --bs-emphasis-color-rgb: 255, 255, 255;
50
+ }
51
+
43
52
  .navbar-logo {
44
53
  /* The main logo image for the Blacklight instance */
45
54
  background: transparent var(--bl-logo-image) no-repeat top left;
@@ -180,10 +189,8 @@ main {
180
189
  padding-left: 0;
181
190
  }
182
191
 
183
- @media (max-width: 575.98px) {
184
- .pagination {
185
- flex-wrap: wrap;
186
- }
192
+ .pagination {
193
+ flex-wrap: wrap;
187
194
  }
188
195
 
189
196
  .group-key {
@@ -246,25 +253,27 @@ main {
246
253
  }
247
254
  }
248
255
 
249
- .sidenav {
256
+ .facets {
250
257
  --bl-facet-active-bg: var(--bs-success);
258
+ --bl-facet-active-color: var(--bs-white);
251
259
  --bl-facet-active-item-color: var(--bs-success);
252
260
  --bl-facet-remove-color: var(--bs-secondary-color);
253
261
  --bl-facet-remove-hover-color: var(--bs-danger);
254
262
  --bl-facet-label-indent: -15px;
255
263
  --bl-facet-label-padding-left: 15px;
256
264
  --bl-facet-header-padding-y: 0.5rem;
265
+ --bl-facet-value-padding-y: 0.2rem;
257
266
  }
258
- .sidenav .facet-toggle-button [data-hide-label] {
267
+ .facets .facet-toggle-button [data-hide-label] {
259
268
  display: inline;
260
269
  }
261
- .sidenav .facet-toggle-button [data-show-label] {
270
+ .facets .facet-toggle-button [data-show-label] {
262
271
  display: none;
263
272
  }
264
- .sidenav .facet-toggle-button[aria-expanded=false] [data-hide-label] {
273
+ .facets .facet-toggle-button[aria-expanded=false] [data-hide-label] {
265
274
  display: none;
266
275
  }
267
- .sidenav .facet-toggle-button[aria-expanded=false] [data-show-label] {
276
+ .facets .facet-toggle-button[aria-expanded=false] [data-show-label] {
268
277
  display: inline;
269
278
  }
270
279
 
@@ -298,16 +307,21 @@ main {
298
307
 
299
308
  .facet-limit {
300
309
  --bs-accordion-btn-bg: var(--bs-gray-100);
301
- --bs-btn-hover-bg: var(--bs-gray-200);
310
+ --bs-btn-active-bg: var(--bs-accordion-btn-bg);
311
+ --bs-btn-hover-bg: var(--bs-accordion-btn-bg);
302
312
  --bs-accordion-active-bg: var(--bs-accordion-btn-bg);
303
313
  }
304
314
 
305
315
  .facet-limit-active {
306
316
  --bs-accordion-btn-bg: var(--bl-facet-active-bg);
307
317
  --bs-btn-hover-bg: var(--bs-accordion-btn-bg);
308
- --bs-accordion-btn-color: var(--bs-light);
318
+ --bs-btn-active-bg: var(--bl-facet-active-bg);
319
+ --bs-btn-active-color: var(--bl-facet-active-color);
320
+ --bs-accordion-btn-color: var(--bl-facet-active-color);
309
321
  --bs-btn-hover-color: var(--bs-accordion-btn-color);
310
322
  --bs-accordion-active-color: var(--bs-accordion-btn-color);
323
+ --bs-accordion-btn-icon: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='white' stroke-linecap='round' stroke-linejoin='round'><path d='m2 5 6 6 6-6'/></svg>");
324
+ --bs-accordion-btn-active-icon: var(--bs-accordion-btn-icon);
311
325
  }
312
326
 
313
327
  .facet-values {
@@ -319,7 +333,7 @@ main {
319
333
  .facet-values li {
320
334
  display: flex;
321
335
  align-items: flex-start;
322
- padding: 3px 0;
336
+ padding-block: var(--bl-facet-value-padding-y);
323
337
  }
324
338
  .facet-values li.treeitem {
325
339
  display: block;
@@ -330,7 +344,6 @@ main {
330
344
  .facet-values .remove {
331
345
  color: var(--bl-facet-remove-color);
332
346
  font-weight: bold;
333
- padding-left: 0.5rem;
334
347
  text-decoration: none;
335
348
  }
336
349
  .facet-values .remove:hover {
@@ -366,20 +379,29 @@ main {
366
379
  color: inherit;
367
380
  }
368
381
 
369
- /* Sidenav
382
+ /* Pivot Facets
370
383
  -------------------------------------------------- */
371
- .pivot-facet.show {
372
- display: flex;
384
+ .pivot-facet {
385
+ --bl-facet-toggle-width: 1em;
386
+ --bl-facet-toggle-height: var(--bl-facet-toggle-width);
387
+ --bl-facet-toggle-margin: 0.5em;
388
+ --bl-facet-toggle-show-icon: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-plus-square" viewBox="0 0 16 16"><path d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h12zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z" /><path d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4z" /></svg>');
389
+ --bl-facet-toggle-hide-icon: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-dash-square" viewBox="0 0 16 16"><path d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h12zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z" /><path d="M4 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 4 8z" /></svg>');
390
+ }
391
+ .pivot-facet li.treeitem:not(:has(button.facet-toggle-handle)) {
392
+ margin-left: calc(var(--bl-facet-toggle-width) + var(--bl-facet-toggle-margin));
373
393
  }
374
394
 
375
395
  .facet-toggle-handle {
396
+ --bs-btn-hover-bg: var(--bs-btn-hover-bg);
397
+ --bs-btn-active-bg: var(--bs-btn-active-bg);
376
398
  margin-block: 0;
377
399
  padding-block: 0;
378
- padding-inline: 0.5rem;
379
- margin-inline-start: -0.75rem;
380
- }
381
- .pivot-facet .facet-toggle-handle {
382
- margin-inline-start: -1.5rem;
400
+ padding: 0;
401
+ border: 0;
402
+ width: var(--bl-facet-toggle-width);
403
+ height: var(--bl-facet-toggle-height);
404
+ margin-right: var(--bl-facet-toggle-margin);
383
405
  }
384
406
  .facet-toggle-handle.collapsed .show {
385
407
  display: flex;
@@ -395,24 +417,20 @@ main {
395
417
  }
396
418
  .facet-toggle-handle .show .icon,
397
419
  .facet-toggle-handle .hide .icon {
398
- width: 1em;
399
- height: 1em;
400
- padding: 0.375rem 0.75rem;
420
+ width: var(--bl-facet-toggle-width);
421
+ height: var(--bl-facet-toggle-height);
401
422
  }
402
423
  .facet-toggle-handle .show .icon {
403
- background: transparent url('data:image/svg+xml,%3csvg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-plus-square" viewBox="0 0 16 16"%3e%3cpath d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h12zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z" /%3e%3cpath d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4z" /%3e%3c/svg%3e') center/1em auto no-repeat;
424
+ background: transparent var(--bl-facet-toggle-show-icon) center/var(--bl-facet-toggle-width) auto no-repeat;
404
425
  }
405
426
  .facet-toggle-handle .hide .icon {
406
- background: transparent url('data:image/svg+xml,%3csvg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-dash-square" viewBox="0 0 16 16"%3e%3cpath d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h12zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z" /%3e%3cpath d="M4 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 4 8z" /%3e%3c/svg%3e') center/1em auto no-repeat;
427
+ background: transparent var(--bl-facet-toggle-hide-icon) center/var(--bl-facet-toggle-width) auto no-repeat;
407
428
  }
408
429
 
409
430
  /* Search History */
410
431
  .search-history {
411
432
  --bl-history-filter-name-color: var(--bs-secondary-color);
412
433
  }
413
- .search-history td {
414
- padding: 1rem;
415
- }
416
434
  .search-history .constraint {
417
435
  padding-inline-end: 1rem;
418
436
  display: block;
@@ -425,24 +443,19 @@ main {
425
443
  border-radius: 5px;
426
444
  }
427
445
 
428
- .modal-content .facet-pagination.top {
429
- display: none; /* Doesn't display in a modal, but would display on a new page (e.g. without Javascript) */
430
- }
431
446
  .modal-content .page-sidebar {
432
447
  display: none;
433
448
  }
434
449
  .modal-content .blacklight-modal-close {
435
450
  display: block;
436
451
  }
437
- .modal-content .prev_next_links.btn-group .btn {
438
- border: 0;
439
- }
440
452
 
441
453
  .blacklight-modal-close {
442
454
  display: none;
443
455
  }
444
456
 
445
- .remove .bi {
446
- height: 1em;
447
- width: 1em;
457
+ .modal-footer:not(.modal .modal-footer) {
458
+ border-top: var(--bs-border-width) solid var(--bs-border-color);
459
+ padding-top: 1rem;
460
+ margin-top: 1rem;
448
461
  }