blacklight 8.11.0 → 9.0.0.beta2

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 (288) hide show
  1. checksums.yaml +4 -4
  2. data/.env +3 -3
  3. data/.github/matrix.json +11 -42
  4. data/.github/pull_request_template.md +7 -0
  5. data/.github/workflows/main.yml +0 -2
  6. data/.github/workflows/release_7_x_scheduled.yml +39 -0
  7. data/.github/workflows/release_8_x_scheduled.yml +39 -0
  8. data/.github/workflows/test.yml +0 -5
  9. data/.rubocop.yml +71 -3
  10. data/.rubocop_todo.yml +43 -76
  11. data/.solr_wrapper.yml +2 -0
  12. data/README.md +30 -8
  13. data/VERSION +1 -1
  14. data/app/assets/builds/blacklight.css +452 -0
  15. data/app/assets/javascripts/blacklight/blacklight.esm.js +6 -76
  16. data/app/assets/javascripts/blacklight/blacklight.esm.js.map +1 -1
  17. data/app/assets/javascripts/blacklight/blacklight.js +6 -76
  18. data/app/assets/javascripts/blacklight/blacklight.js.map +1 -1
  19. data/app/assets/stylesheets/blacklight/_balanced_list.scss +1 -4
  20. data/app/assets/stylesheets/blacklight/_blacklight_base.scss +1 -3
  21. data/app/assets/stylesheets/blacklight/_bookmark.scss +44 -41
  22. data/app/assets/stylesheets/blacklight/_bootstrap_overrides.scss +0 -25
  23. data/app/assets/stylesheets/blacklight/_constraints.scss +15 -24
  24. data/app/assets/stylesheets/blacklight/_controls.scss +2 -18
  25. data/app/assets/stylesheets/blacklight/_facets.scss +17 -84
  26. data/app/assets/stylesheets/blacklight/_group.scss +2 -5
  27. data/app/assets/stylesheets/blacklight/_header.scss +8 -11
  28. data/app/assets/stylesheets/blacklight/_icons.scss +0 -8
  29. data/app/assets/stylesheets/blacklight/_modal.scss +1 -1
  30. data/app/assets/stylesheets/blacklight/_pagination.scss +0 -4
  31. data/app/assets/stylesheets/blacklight/_search_form.scss +0 -1
  32. data/app/assets/stylesheets/blacklight/_search_history.scss +0 -8
  33. data/app/assets/stylesheets/blacklight/_search_results.scss +1 -15
  34. data/app/assets/stylesheets/blacklight/blacklight_defaults.scss +9 -14
  35. data/app/assets/stylesheets/blacklight/build.scss +4 -0
  36. data/app/components/blacklight/advanced_search_form_component.rb +3 -3
  37. data/app/components/blacklight/constraint_component.rb +1 -1
  38. data/app/components/blacklight/constraint_layout_component.html.erb +2 -2
  39. data/app/components/blacklight/constraints_component.html.erb +2 -2
  40. data/app/components/blacklight/constraints_component.rb +3 -3
  41. data/app/components/blacklight/document/bookmark_component.html.erb +3 -3
  42. data/app/components/blacklight/document/bookmark_component.rb +2 -2
  43. data/app/components/blacklight/document/group_component.html.erb +1 -1
  44. data/app/components/blacklight/document/more_like_this_component.rb +2 -2
  45. data/app/components/blacklight/document/page_header_component.rb +1 -1
  46. data/app/components/blacklight/document/sidebar_component.rb +5 -5
  47. data/app/components/blacklight/document/thumbnail_component.html.erb +3 -7
  48. data/app/components/blacklight/document/thumbnail_component.rb +7 -6
  49. data/app/components/blacklight/document_component.rb +12 -16
  50. data/app/components/blacklight/document_title_component.rb +5 -11
  51. data/app/components/blacklight/facet_field_checkboxes_component.rb +2 -20
  52. data/app/components/blacklight/facet_field_component.rb +2 -17
  53. data/app/components/blacklight/facet_field_filter_component.rb +2 -21
  54. data/app/components/blacklight/facet_field_inclusive_constraint_component.rb +4 -25
  55. data/app/components/blacklight/facet_field_list_component.rb +2 -50
  56. data/app/components/blacklight/facet_field_no_layout_component.rb +2 -10
  57. data/app/components/blacklight/facet_item_component.rb +2 -74
  58. data/app/components/blacklight/facet_item_pivot_component.rb +3 -3
  59. data/app/components/blacklight/facets/checkboxes_component.rb +26 -0
  60. data/app/components/blacklight/facets/count_component.rb +23 -0
  61. data/app/components/blacklight/{facet_field_component.html.erb → facets/field_component.html.erb} +4 -4
  62. data/app/components/blacklight/facets/field_component.rb +23 -0
  63. data/app/components/blacklight/facets/filters_component.html.erb +4 -0
  64. data/app/components/blacklight/facets/filters_component.rb +27 -0
  65. data/app/components/blacklight/{facet_field_inclusive_constraint_component.html.erb → facets/inclusive_constraint_component.html.erb} +1 -1
  66. data/app/components/blacklight/facets/inclusive_constraint_component.rb +31 -0
  67. data/app/components/blacklight/{facet_field_filter_component.html.erb → facets/index_navigation_component.html.erb} +1 -1
  68. data/app/components/blacklight/facets/index_navigation_component.rb +32 -0
  69. data/app/components/blacklight/facets/item_component.rb +73 -0
  70. data/app/components/blacklight/facets/list_component.html.erb +11 -0
  71. data/app/components/blacklight/facets/list_component.rb +38 -0
  72. data/app/components/blacklight/facets/no_layout_component.rb +16 -0
  73. data/app/components/blacklight/facets/selected_value_component.rb +29 -0
  74. data/app/components/blacklight/facets/suggest_component.html.erb +12 -0
  75. data/app/components/blacklight/facets/suggest_component.rb +22 -0
  76. data/app/components/blacklight/metadata_field_plain_text_layout_component.rb +2 -2
  77. data/app/components/blacklight/response/facet_group_component.html.erb +3 -18
  78. data/app/components/blacklight/response/facet_group_component.rb +11 -23
  79. data/app/components/blacklight/response/facet_toggle_button_component.html.erb +16 -0
  80. data/app/components/blacklight/response/facet_toggle_button_component.rb +14 -0
  81. data/app/components/blacklight/response/pagination_component.html.erb +1 -1
  82. data/app/components/blacklight/response/pagination_component.rb +2 -1
  83. data/app/components/blacklight/response/sort_component.rb +1 -0
  84. data/app/components/blacklight/response/view_type_button_component.html.erb +1 -1
  85. data/app/components/blacklight/response/view_type_component.html.erb +1 -1
  86. data/app/components/blacklight/search/per_page_component.html.erb +1 -1
  87. data/app/components/blacklight/search/per_page_component.rb +1 -0
  88. data/app/components/blacklight/search/sidebar_component.html.erb +1 -1
  89. data/app/components/blacklight/search/sidebar_component.rb +1 -1
  90. data/app/components/blacklight/search_bar_component.html.erb +3 -3
  91. data/app/components/blacklight/search_bar_component.rb +2 -2
  92. data/app/components/blacklight/search_button_component.rb +2 -2
  93. data/app/components/blacklight/search_context/server_applied_params_component.html.erb +2 -2
  94. data/app/components/blacklight/search_context/server_applied_params_component.rb +9 -0
  95. data/app/components/blacklight/skip_link_component.html.erb +1 -1
  96. data/app/components/blacklight/skip_link_component.rb +2 -1
  97. data/app/components/blacklight/top_navbar_component.html.erb +2 -2
  98. data/app/controllers/concerns/blacklight/bookmarks.rb +3 -3
  99. data/app/controllers/concerns/blacklight/catalog.rb +9 -23
  100. data/app/controllers/concerns/blacklight/controller.rb +1 -1
  101. data/app/controllers/concerns/blacklight/facetable.rb +34 -0
  102. data/app/controllers/concerns/blacklight/search_context.rb +0 -12
  103. data/app/controllers/concerns/blacklight/searchable.rb +1 -1
  104. data/app/helpers/blacklight/blacklight_helper_behavior.rb +0 -6
  105. data/app/helpers/blacklight/catalog_helper_behavior.rb +0 -10
  106. data/app/helpers/blacklight/configuration_helper_behavior.rb +2 -14
  107. data/app/helpers/blacklight/document_helper_behavior.rb +3 -27
  108. data/app/helpers/blacklight/facets_helper_behavior.rb +9 -0
  109. data/app/helpers/blacklight/icon_helper_behavior.rb +3 -11
  110. data/app/helpers/blacklight/layout_helper_behavior.rb +2 -2
  111. data/app/helpers/blacklight/render_partials_helper_behavior.rb +0 -14
  112. data/app/helpers/blacklight/url_helper_behavior.rb +1 -1
  113. data/app/javascript/{blacklight → blacklight-frontend}/bookmark_toggle.js +1 -1
  114. data/app/javascript/{blacklight → blacklight-frontend}/checkbox_submit.js +3 -0
  115. data/app/javascript/{blacklight → blacklight-frontend}/core.js +2 -10
  116. data/app/javascript/{blacklight → blacklight-frontend}/facet_suggest.js +1 -3
  117. data/app/javascript/blacklight-frontend/index.js +16 -0
  118. data/app/javascript/{blacklight → blacklight-frontend}/modal.js +1 -5
  119. data/app/models/concerns/blacklight/document.rb +0 -11
  120. data/app/models/concerns/blacklight/user.rb +1 -1
  121. data/app/models/facet_search_builder.rb +5 -0
  122. data/app/presenters/blacklight/facet_field_presenter.rb +3 -3
  123. data/app/presenters/blacklight/rendering/helper_method.rb +4 -4
  124. data/app/presenters/blacklight/rendering/join.rb +2 -2
  125. data/app/services/blacklight/facet_search_service.rb +44 -0
  126. data/app/services/blacklight/field_retriever.rb +1 -1
  127. data/app/services/blacklight/search_params_yaml_coder.rb +0 -2
  128. data/app/services/blacklight/search_service.rb +6 -6
  129. data/app/values/blacklight/types.rb +2 -2
  130. data/app/views/bookmarks/_clear_bookmarks_widget.html.erb +0 -2
  131. data/app/views/bookmarks/index.html.erb +1 -1
  132. data/app/views/catalog/_facet_pivot.html.erb +1 -1
  133. data/app/views/catalog/_home_text.html.erb +2 -2
  134. data/app/views/catalog/_results_pagination.html.erb +2 -5
  135. data/app/views/catalog/_search_results.html.erb +3 -3
  136. data/app/views/catalog/_search_results_header.html.erb +1 -1
  137. data/app/views/catalog/_sort_and_per_page.html.erb +1 -1
  138. data/app/views/catalog/_sort_widget.html.erb +1 -0
  139. data/app/views/catalog/facet.html.erb +4 -6
  140. data/app/views/catalog/show.html.erb +2 -3
  141. data/app/views/kaminari/blacklight/_paginator.html.erb +1 -2
  142. data/app/views/layouts/blacklight/base.html.erb +3 -7
  143. data/app/views/search_history/index.html.erb +0 -2
  144. data/blacklight.gemspec +4 -4
  145. data/config/importmap.rb +1 -1
  146. data/config/locales/blacklight.ar.yml +2 -2
  147. data/config/locales/blacklight.ca.yml +124 -124
  148. data/config/locales/blacklight.de.yml +2 -2
  149. data/config/locales/blacklight.en.yml +14 -14
  150. data/config/locales/blacklight.es.yml +2 -2
  151. data/config/locales/blacklight.fr.yml +2 -2
  152. data/config/locales/blacklight.hu.yml +2 -2
  153. data/config/locales/blacklight.it.yml +1 -1
  154. data/config/locales/blacklight.nl.yml +2 -2
  155. data/config/locales/blacklight.pt-BR.yml +1 -1
  156. data/config/locales/blacklight.sq.yml +2 -2
  157. data/config/locales/blacklight.zh.yml +2 -2
  158. data/lib/blacklight/abstract_repository.rb +2 -2
  159. data/lib/blacklight/abstract_search_builder.rb +154 -0
  160. data/lib/blacklight/configuration/context.rb +3 -3
  161. data/lib/blacklight/configuration/display_field.rb +1 -1
  162. data/lib/blacklight/configuration/facet_field.rb +6 -6
  163. data/lib/blacklight/configuration/field.rb +4 -4
  164. data/lib/blacklight/configuration/fields.rb +3 -4
  165. data/lib/blacklight/configuration/search_field.rb +1 -1
  166. data/lib/blacklight/configuration/view_config.rb +2 -4
  167. data/lib/blacklight/configuration.rb +11 -18
  168. data/lib/blacklight/engine.rb +0 -6
  169. data/lib/blacklight/facet_search_builder.rb +18 -0
  170. data/lib/blacklight/nested_open_struct_with_hash_access.rb +1 -1
  171. data/lib/blacklight/open_struct_with_hash_access.rb +5 -5
  172. data/lib/blacklight/search_builder.rb +1 -159
  173. data/lib/blacklight/search_state/filter_field.rb +2 -2
  174. data/lib/blacklight/search_state/pivot_filter_field.rb +4 -4
  175. data/lib/blacklight/solr/abstract_filter_query_builder.rb +77 -0
  176. data/lib/blacklight/solr/default_filter_query_builder.rb +20 -0
  177. data/lib/blacklight/solr/facet_search_builder_behavior.rb +62 -0
  178. data/lib/blacklight/solr/repository.rb +8 -9
  179. data/lib/blacklight/solr/request.rb +1 -7
  180. data/lib/blacklight/solr/response/facets.rb +2 -2
  181. data/lib/blacklight/solr/response/group_response.rb +2 -2
  182. data/lib/blacklight/solr/response/params.rb +0 -4
  183. data/lib/blacklight/solr/response.rb +5 -1
  184. data/lib/blacklight/solr/search_builder_behavior.rb +17 -132
  185. data/lib/blacklight.rb +2 -2
  186. data/lib/generators/blacklight/assets/importmap_generator.rb +6 -24
  187. data/lib/generators/blacklight/assets/propshaft_generator.rb +1 -1
  188. data/lib/generators/blacklight/assets_generator.rb +3 -3
  189. data/lib/generators/blacklight/controller_generator.rb +3 -3
  190. data/lib/generators/blacklight/search_builder_generator.rb +1 -1
  191. data/lib/generators/blacklight/templates/.solr_wrapper.yml +2 -0
  192. data/lib/generators/blacklight/templates/catalog_controller.rb +3 -1
  193. data/lib/generators/blacklight/templates/solr/conf/solrconfig.xml +0 -4
  194. data/lib/generators/blacklight/user_generator.rb +9 -10
  195. data/package.json +15 -5
  196. data/rollup.config.js +1 -1
  197. data/spec/components/blacklight/advanced_search_form_component_spec.rb +18 -22
  198. data/spec/components/blacklight/constraint_layout_component_spec.rb +8 -8
  199. data/spec/components/blacklight/constraints_component_spec.rb +11 -11
  200. data/spec/components/blacklight/document/action_component_spec.rb +21 -17
  201. data/spec/components/blacklight/document/group_component_spec.rb +10 -15
  202. data/spec/components/blacklight/document/page_header_component_spec.rb +35 -28
  203. data/spec/components/blacklight/document/sidebar_component_spec.rb +9 -30
  204. data/spec/components/blacklight/document_component_spec.rb +98 -65
  205. data/spec/components/blacklight/facet_component_spec.rb +12 -8
  206. data/spec/components/blacklight/facet_item_pivot_component_spec.rb +12 -12
  207. data/spec/components/blacklight/{facet_field_checkboxes_component_spec.rb → facets/checkboxes_component_spec.rb} +14 -14
  208. data/spec/components/blacklight/facets/filters_component_spec.rb +36 -0
  209. data/spec/components/blacklight/facets/index_navigation_component_spec.rb +40 -0
  210. data/spec/components/blacklight/{facet_item_component_spec.rb → facets/item_component_spec.rb} +10 -10
  211. data/spec/components/blacklight/{facet_field_list_component_spec.rb → facets/list_component_spec.rb} +24 -24
  212. data/spec/components/blacklight/facets/suggest_component_spec.rb +68 -0
  213. data/spec/components/blacklight/header_component_spec.rb +2 -4
  214. data/spec/components/blacklight/hidden_search_state_component_spec.rb +7 -7
  215. data/spec/components/blacklight/metadata_field_component_spec.rb +17 -15
  216. data/spec/components/blacklight/response/facet_group_component_spec.rb +37 -0
  217. data/spec/components/blacklight/response/pagination_component_spec.rb +1 -1
  218. data/spec/components/blacklight/response/spellcheck_component_spec.rb +1 -1
  219. data/spec/components/blacklight/search_bar_component_spec.rb +5 -5
  220. data/spec/components/blacklight/search_context/server_applied_params_component_spec.rb +2 -2
  221. data/spec/components/blacklight/search_context/server_item_pagination_component_spec.rb +3 -5
  222. data/spec/components/blacklight/skip_link_component_spec.rb +8 -11
  223. data/spec/components/blacklight/start_over_button_component_spec.rb +4 -4
  224. data/spec/components/blacklight/system/flash_message_component_spec.rb +7 -11
  225. data/spec/controllers/catalog_controller_spec.rb +11 -19
  226. data/spec/features/axe_spec.rb +6 -11
  227. data/spec/features/bookmarks_spec.rb +48 -11
  228. data/spec/features/facets_spec.rb +58 -63
  229. data/spec/features/search_context_spec.rb +1 -2
  230. data/spec/features/search_filters_spec.rb +6 -6
  231. data/spec/helpers/blacklight/configuration_helper_behavior_spec.rb +0 -9
  232. data/spec/helpers/blacklight/facets_helper_behavior_spec.rb +10 -0
  233. data/spec/helpers/blacklight/render_partials_helper_behavior_spec.rb +1 -1
  234. data/spec/lib/blacklight/configuration/facet_field_spec.rb +2 -2
  235. data/spec/models/blacklight/configuration_spec.rb +32 -28
  236. data/spec/models/blacklight/facet_search_builder_spec.rb +19 -0
  237. data/spec/models/blacklight/search_builder_spec.rb +1 -11
  238. data/spec/models/blacklight/solr/default_filter_query_builder_spec.rb +72 -0
  239. data/spec/models/blacklight/solr/document_spec.rb +0 -4
  240. data/spec/models/blacklight/solr/facet_search_builder_behavior_spec.rb +929 -0
  241. data/spec/models/blacklight/solr/repository_spec.rb +31 -29
  242. data/spec/models/blacklight/solr/request_spec.rb +7 -0
  243. data/spec/models/blacklight/solr/response/facets_spec.rb +86 -40
  244. data/spec/models/blacklight/solr/response/group_response_spec.rb +8 -5
  245. data/spec/models/blacklight/solr/response/group_spec.rb +9 -5
  246. data/spec/models/blacklight/solr/response_spec.rb +96 -64
  247. data/spec/models/blacklight/solr/search_builder_behavior_spec.rb +2 -227
  248. data/spec/models/solr_document_spec.rb +5 -1
  249. data/spec/services/blacklight/search_service_spec.rb +5 -26
  250. data/spec/spec_helper.rb +0 -1
  251. data/spec/support/view_component_test_helpers.rb +0 -18
  252. data/spec/views/catalog/facet.html.erb_spec.rb +10 -11
  253. data/spec/views/catalog/index.atom.builder_spec.rb +6 -3
  254. data/spec/views/catalog/index.html.erb_spec.rb +8 -3
  255. data/spec/views/catalog/show.html.erb_spec.rb +1 -0
  256. data/tasks/blacklight.rake +8 -5
  257. metadata +76 -81
  258. data/app/assets/stylesheets/blacklight/_autocomplete.scss +0 -25
  259. data/app/assets/stylesheets/blacklight/_mixins.scss +0 -20
  260. data/app/components/blacklight/facet_field_list_component.html.erb +0 -19
  261. data/app/components/blacklight/icons/legacy_icon_component.rb +0 -30
  262. data/app/components/blacklight/search/facet_suggest_input.html.erb +0 -12
  263. data/app/components/blacklight/search/facet_suggest_input.rb +0 -20
  264. data/app/javascript/blacklight/index.js +0 -18
  265. data/app/javascript/blacklight/modalForm.js +0 -60
  266. data/app/views/catalog/_constraints.html.erb +0 -1
  267. data/app/views/catalog/_facet_index_navigation.html.erb +0 -1
  268. data/app/views/catalog/_facet_layout.html.erb +0 -8
  269. data/app/views/catalog/_facet_pagination.html.erb +0 -1
  270. data/app/views/catalog/_facets.html.erb +0 -5
  271. data/app/views/catalog/_search_form.html.erb +0 -7
  272. data/app/views/catalog/_search_header.html.erb +0 -1
  273. data/app/views/catalog/_show_sidebar.html.erb +0 -3
  274. data/app/views/catalog/_show_tools.html.erb +0 -2
  275. data/app/views/catalog/_start_over.html.erb +0 -1
  276. data/app/views/shared/_header_navbar.html.erb +0 -1
  277. data/lib/generators/blacklight/assets/sprockets_generator.rb +0 -68
  278. data/spec/components/blacklight/document_metadata_component_spec.rb +0 -0
  279. data/spec/components/blacklight/search/facet_suggest_input_spec.rb +0 -57
  280. data/spec/views/catalog/_facet_index_navigation.html.erb_spec.rb +0 -43
  281. data/spec/views/catalog/_facet_layout.html.erb_spec.rb +0 -41
  282. data/spec/views/catalog/_search_header.erb_spec.rb +0 -14
  283. data/spec/views/catalog/_show_sidebar.erb_spec.rb +0 -24
  284. data/spec/views/catalog/_show_tools.html.erb_spec.rb +0 -37
  285. /data/app/components/blacklight/{facet_field_checkboxes_component.html.erb → facets/checkboxes_component.html.erb} +0 -0
  286. /data/app/javascript/{blacklight → blacklight-frontend}/button_focus.js +0 -0
  287. /data/app/javascript/{blacklight → blacklight-frontend}/debounce.js +0 -0
  288. /data/app/javascript/{blacklight → blacklight-frontend}/search_context.js +0 -0
@@ -10,7 +10,6 @@ module Blacklight::Solr
10
10
  :add_query_to_solr, :add_facet_fq_to_solr,
11
11
  :add_facetting_to_solr, :add_solr_fields_to_query, :add_paging_to_solr,
12
12
  :add_sorting_to_solr, :add_group_config_to_solr,
13
- :add_facet_paging_to_solr, :add_facet_suggestion_parameters,
14
13
  :add_adv_search_clauses,
15
14
  :add_additional_filters
16
15
  ]
@@ -128,25 +127,19 @@ module Blacklight::Solr
128
127
  end
129
128
 
130
129
  search_state.filters.each do |filter|
131
- if filter.config.filter_query_builder
132
- filter_query, subqueries = filter.config.filter_query_builder.call(self, filter, solr_parameters)
133
-
134
- Array(filter_query).each do |fq|
135
- solr_parameters.append_filter_query(fq)
136
- end
137
- solr_parameters.merge!(subqueries) if subqueries
130
+ filter_query_builder_class_or_proc = filter.config.filter_query_builder || DefaultFilterQueryBuilder
131
+ if filter_query_builder_class_or_proc.is_a?(Class)
132
+ filter_query_builder = filter_query_builder_class_or_proc.new(blacklight_config: blacklight_config)
133
+ filter_query, subqueries = filter_query_builder.call(filter, solr_parameters)
138
134
  else
139
- filter.values.compact_blank.each do |value|
140
- filter_query, subqueries = if value.is_a?(Array)
141
- facet_inclusive_value_to_fq_string(filter.key, value.compact_blank)
142
- else
143
- facet_value_to_fq_string(filter.config.key, value)
144
- end
145
-
146
- solr_parameters.append_filter_query filter_query
147
- solr_parameters.merge!(subqueries) if subqueries
148
- end
135
+ # TODO: Maybe deprecate proc?
136
+ filter_query, subqueries = filter_query_builder_class_or_proc.call(self, filter, solr_parameters)
137
+ end
138
+
139
+ Array(filter_query).each do |fq|
140
+ solr_parameters.append_filter_query(fq)
149
141
  end
142
+ solr_parameters.merge!(subqueries) if subqueries
150
143
  end
151
144
  end
152
145
 
@@ -190,10 +183,8 @@ module Blacklight::Solr
190
183
  solr_parameters[:"f.#{facet.field}.facet.sort"] = facet.sort
191
184
  end
192
185
 
193
- if facet.solr_params
194
- facet.solr_params.each do |k, v|
195
- solr_parameters[:"f.#{facet.field}.#{k}"] = v
196
- end
186
+ facet.solr_params&.each do |k, v|
187
+ solr_parameters[:"f.#{facet.field}.#{k}"] = v
197
188
  end
198
189
 
199
190
  limit = facet_limit_with_pagination(field_name)
@@ -203,9 +194,9 @@ module Blacklight::Solr
203
194
 
204
195
  def add_solr_fields_to_query solr_parameters
205
196
  blacklight_config.show_fields.select(&method(:should_add_field_to_request?)).each_value do |field|
206
- field.solr_params.each do |k, v|
197
+ field.solr_params&.each do |k, v|
207
198
  solr_parameters[:"f.#{field.field}.#{k}"] = v
208
- end if field.solr_params
199
+ end
209
200
  end
210
201
 
211
202
  blacklight_config.index_fields.select(&method(:should_add_field_to_request?)).each_value do |field|
@@ -214,9 +205,9 @@ module Blacklight::Solr
214
205
  solr_parameters.append_highlight_field field.field
215
206
  end
216
207
 
217
- field.solr_params.each do |k, v|
208
+ field.solr_params&.each do |k, v|
218
209
  solr_parameters[:"f.#{field.field}.#{k}"] = v
219
- end if field.solr_params
210
+ end
220
211
  end
221
212
  end
222
213
 
@@ -242,48 +233,6 @@ module Blacklight::Solr
242
233
  solr_parameters[:group] = false if search_state.filter(grouped_key_for_results).any?
243
234
  end
244
235
 
245
- def add_facet_paging_to_solr(solr_params)
246
- return if facet.blank?
247
-
248
- facet_config = blacklight_config.facet_fields[facet]
249
-
250
- solr_params[:rows] = 0
251
-
252
- limit = if solr_params["facet.limit"]
253
- solr_params["facet.limit"].to_i
254
- else
255
- facet_config.fetch(:more_limit, blacklight_config.default_more_limit)
256
- end
257
-
258
- page = search_state.facet_page
259
- sort = search_state.facet_sort
260
- prefix = search_state.facet_prefix
261
- offset = (page - 1) * limit
262
-
263
- if facet_config.json
264
- add_solr_facet_json_params(solr_parameters, facet, facet_config, limit: limit + 1, offset: offset, sort: sort, prefix: prefix)
265
- return
266
- end
267
-
268
- # Now override with our specific things for fetching facet values
269
- facet_ex = facet_config.respond_to?(:ex) ? facet_config.ex : nil
270
- solr_params[:'facet.field'] = with_ex_local_param(facet_ex, facet_config.field)
271
-
272
- # Need to set as f.facet_field.facet.* to make sure we
273
- # override any field-specific default in the solr request handler.
274
- solr_params[:"f.#{facet_config.field}.facet.limit"] = limit + 1
275
- solr_params[:"f.#{facet_config.field}.facet.offset"] = offset
276
- solr_params[:"f.#{facet_config.field}.facet.sort"] = sort if sort
277
- solr_params[:"f.#{facet_config.field}.facet.prefix"] = prefix if prefix
278
- end
279
-
280
- def add_facet_suggestion_parameters(solr_params)
281
- return if facet.blank? || facet_suggestion_query.blank?
282
-
283
- solr_params[:'facet.contains'] = facet_suggestion_query[0..50]
284
- solr_params[:'facet.contains.ignoreCase'] = true
285
- end
286
-
287
236
  def with_ex_local_param(ex, value)
288
237
  if ex
289
238
  "{!ex=#{ex}}#{value}"
@@ -340,70 +289,6 @@ module Blacklight::Solr
340
289
 
341
290
  private
342
291
 
343
- ##
344
- # Convert a facet/value pair into a solr fq parameter
345
- # rubocop:disable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
346
- def facet_value_to_fq_string(facet_field, value, use_local_params: true)
347
- facet_config = blacklight_config.facet_fields[facet_field]
348
-
349
- solr_field = facet_config.field if facet_config && !facet_config.query
350
- solr_field ||= facet_field
351
-
352
- local_params = []
353
- local_params << "tag=#{facet_config.tag}" if use_local_params && facet_config && facet_config.tag
354
-
355
- if facet_config && facet_config.query
356
- if facet_config.query[value]
357
- facet_config.query[value][:fq]
358
- else
359
- # exclude all documents if the custom facet key specified was not found
360
- '-*:*'
361
- end
362
- elsif value.is_a?(Range)
363
- prefix = "{!#{local_params.join(' ')}}" unless local_params.empty?
364
- start = value.begin || '*'
365
- finish = value.end || '*'
366
- "#{prefix}#{solr_field}:[#{start} TO #{finish}]"
367
- elsif value == Blacklight::SearchState::FilterField::MISSING
368
- "-#{solr_field}:[* TO *]"
369
- else
370
- "{!term f=#{solr_field}#{" #{local_params.join(' ')}" unless local_params.empty?}}#{convert_to_term_value(value)}"
371
- end
372
- end
373
- # rubocop:enable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
374
-
375
- def facet_inclusive_value_to_fq_string(facet_field, values)
376
- return if values.blank?
377
-
378
- return facet_value_to_fq_string(facet_field, values.first) if values.length == 1
379
-
380
- facet_config = blacklight_config.facet_fields[facet_field]
381
-
382
- local_params = []
383
- local_params << "tag=#{facet_config.tag}" if facet_config && facet_config.tag
384
-
385
- solr_filters = values.each_with_object({}).with_index do |(v, h), index|
386
- h["f_inclusive.#{facet_field}.#{index}"] = facet_value_to_fq_string(facet_field, v, use_local_params: false)
387
- end
388
-
389
- filter_query = solr_filters.keys.map do |k|
390
- "{!query v=$#{k}}"
391
- end.join(' OR ')
392
-
393
- ["{!lucene#{" #{local_params.join(' ')}" unless local_params.empty?}}#{filter_query}", solr_filters]
394
- end
395
-
396
- def convert_to_term_value(value)
397
- case value
398
- when DateTime, Time
399
- value.utc.strftime("%Y-%m-%dT%H:%M:%SZ")
400
- when Date
401
- value.to_time(:local).strftime("%Y-%m-%dT%H:%M:%SZ")
402
- else
403
- value.to_s
404
- end
405
- end
406
-
407
292
  ##
408
293
  # The key to use to retrieve the grouped field to display
409
294
  def grouped_key_for_results
data/lib/blacklight.rb CHANGED
@@ -99,7 +99,7 @@ module Blacklight
99
99
  end
100
100
 
101
101
  def self.logger
102
- @logger ||= (::Rails.logger if defined? Rails && Rails.respond_to?(:logger))
102
+ @logger ||= ::Rails.logger
103
103
  end
104
104
 
105
105
  def self.logger= logger
@@ -116,7 +116,7 @@ module Blacklight
116
116
 
117
117
  # returns the full path the the blacklight plugin installation
118
118
  def self.root
119
- @root ||= File.expand_path(File.dirname(File.dirname(__FILE__)))
119
+ @root ||= File.expand_path(File.dirname(__FILE__, 2))
120
120
  end
121
121
 
122
122
  def self.deprecation
@@ -5,18 +5,12 @@ module Blacklight
5
5
  class ImportmapGenerator < Rails::Generators::Base
6
6
  class_option :'bootstrap-version', type: :string, default: ENV.fetch('BOOTSTRAP_VERSION', '~> 5.3'), desc: "Set the generated app's bootstrap version"
7
7
 
8
- # This could be skipped if you want to use webpacker
9
- def add_javascript_dependencies
10
- gem 'bootstrap', options[:'bootstrap-version'].presence # in rails 7, only for stylesheets
11
- gem 'jquery-rails' if bootstrap_4? # Bootstrap 4 has a dependency on jquery
12
- end
13
-
14
8
  def import_javascript_assets
15
9
  append_to_file 'config/importmap.rb' do
16
10
  <<~CONTENT
17
11
  pin "@github/auto-complete-element", to: "https://cdn.skypack.dev/@github/auto-complete-element"
18
12
  pin "@popperjs/core", to: "https://ga.jspm.io/npm:@popperjs/core@2.11.6/dist/umd/popper.min.js"
19
- pin "bootstrap", to: "https://ga.jspm.io/npm:bootstrap@#{(defined?(Bootstrap) && Bootstrap::VERSION) || '5.3.2'}/dist/js/bootstrap.js"
13
+ pin "bootstrap", to: "https://ga.jspm.io/npm:bootstrap@#{(defined?(Bootstrap) && Bootstrap::VERSION) || '5.3.5'}/dist/js/bootstrap.js"
20
14
  CONTENT
21
15
  end
22
16
 
@@ -40,39 +34,27 @@ module Blacklight
40
34
  append_to_file 'app/javascript/application.js' do
41
35
  <<~CONTENT
42
36
  import githubAutoCompleteElement from "@github/auto-complete-element"
43
- import Blacklight from "blacklight"
37
+ import Blacklight from "blacklight-frontend"
44
38
  CONTENT
45
39
  end
46
40
  end
47
41
 
48
42
  def add_stylesheet
49
43
  if File.exist? 'app/assets/stylesheets/application.bootstrap.scss'
50
- if ENV['CI']
51
- run "yarn add file:#{Blacklight::Engine.root}"
52
- else
53
- run "yarn add blacklight-frontend@#{Blacklight::VERSION}"
54
- end
55
-
56
44
  append_to_file 'app/assets/stylesheets/application.bootstrap.scss' do
57
45
  <<~CONTENT
58
- @import "blacklight-frontend/app/assets/stylesheets/blacklight/blacklight";
46
+ @import url("blacklight.css");
59
47
  CONTENT
60
48
  end
61
49
  else
62
- gem "sassc-rails", "~> 2.1"
63
-
64
- create_file 'app/assets/stylesheets/blacklight.scss' do
50
+ append_to_file 'app/assets/stylesheets/application.css' do
65
51
  <<~CONTENT
66
- @import 'bootstrap';
67
- @import 'blacklight/blacklight';
52
+ @import url(https://cdn.jsdelivr.net/npm/bootstrap@5.3.5/dist/css/bootstrap.min.css);
53
+ @import url("blacklight.css");
68
54
  CONTENT
69
55
  end
70
56
  end
71
57
  end
72
-
73
- def bootstrap_4?
74
- options[:'bootstrap-version'].match?(/\A[^0-9]*4\./)
75
- end
76
58
  end
77
59
  end
78
60
  end
@@ -18,7 +18,7 @@ module Blacklight
18
18
  def add_package_assets
19
19
  append_to_file 'app/assets/stylesheets/application.bootstrap.scss' do
20
20
  <<~CONTENT
21
- @import "blacklight-frontend/app/assets/stylesheets/blacklight/blacklight";
21
+ @import url("blacklight.css");
22
22
  CONTENT
23
23
  end
24
24
 
@@ -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'), desc: "Set the generated app's bootstrap version"
5
+ class_option :'bootstrap-version', type: :string, default: ENV.fetch('BOOTSTRAP_VERSION', '5.3.5'), 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']
@@ -11,8 +11,8 @@ module Blacklight
11
11
  'blacklight:assets:importmap'
12
12
  elsif defined?(Propshaft)
13
13
  'blacklight:assets:propshaft'
14
- elsif defined?(Sprockets)
15
- 'blacklight:assets:sprockets'
14
+ else
15
+ raise "Unsupported path"
16
16
  end
17
17
 
18
18
  generate generator, generated_options if generator
@@ -16,9 +16,9 @@ module Blacklight
16
16
  # Add Blacklight to the application controller
17
17
  def inject_blacklight_controller_behavior
18
18
  inject_into_class "app/controllers/application_controller.rb", "ApplicationController" do
19
- " # Adds a few additional behaviors into the application controller\n" \
20
- " include Blacklight::Controller\n" \
21
- " layout :determine_layout if respond_to? :layout\n\n"
19
+ " # Adds a few additional behaviors into the application controller\n " \
20
+ "include Blacklight::Controller\n " \
21
+ "layout :determine_layout if respond_to? :layout\n\n"
22
22
  end
23
23
  end
24
24
 
@@ -27,7 +27,7 @@ module Blacklight
27
27
  private
28
28
 
29
29
  def rspec_installed?
30
- defined?(RSpec) && defined?(RSpec::Rails)
30
+ defined?(RSpec::Rails)
31
31
  end
32
32
  end
33
33
  end
@@ -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
6
  dir: solr/conf/
5
7
  name: blacklight-core
@@ -105,9 +105,11 @@ class <%= controller_name.classify %>Controller < ApplicationController
105
105
  # :show may be set to false if you don't want the facet to be drawn in the
106
106
  # facet bar
107
107
  #
108
- # set :index_range to true if you want the facet pagination view to have facet prefix-based navigation
108
+ # Set :index_range to true if you want the facet pagination view to have facet prefix-based navigation.
109
109
  # (useful when user clicks "more" on a large facet and wants to navigate alphabetically across a large set of results)
110
110
  # :index_range can be an array or range of prefixes that will be used to create the navigation (note: It is case sensitive when searching values)
111
+ # This control only displays when the user has selected "A-Z Sort" (You make make this the default by setting "sort: 'index'"
112
+ # in the facet config)
111
113
 
112
114
  config.add_facet_field 'format', label: 'Format'
113
115
  config.add_facet_field 'pub_date_ssim', label: 'Publication Year', single: true
@@ -47,7 +47,6 @@
47
47
  full_title_tsim
48
48
  short_title_tsim
49
49
  alternative_title_tsim
50
- active_fedora_model_ssi
51
50
  title_tsim
52
51
  author_tsim
53
52
  subject_tsim
@@ -84,7 +83,6 @@
84
83
  <str name="facet">true</str>
85
84
  <str name="facet.mincount">1</str>
86
85
  <str name="facet.limit">10</str>
87
- <str name="facet.field">active_fedora_model_ssi</str>
88
86
  <str name="facet.field">subject_ssim</str>
89
87
 
90
88
  <str name="spellcheck">true</str>
@@ -116,7 +114,6 @@
116
114
  full_title_tsim
117
115
  short_title_tsim
118
116
  alternative_title_tsim
119
- active_fedora_model_ssi
120
117
  title_tsim
121
118
  author_tsim
122
119
  subject_tsim
@@ -153,7 +150,6 @@
153
150
  <str name="facet">true</str>
154
151
  <str name="facet.mincount">1</str>
155
152
  <str name="facet.limit">10</str>
156
- <str name="facet.field">active_fedora_model_ssi</str>
157
153
  <str name="facet.field">subject_ssim</str>
158
154
 
159
155
  <str name="spellcheck">true</str>
@@ -34,13 +34,6 @@ module Blacklight
34
34
  generate "devise", model_name.classify
35
35
  generate "devise_guests", model_name.classify
36
36
 
37
- # add the #to_s to the model.
38
- insert_into_file("app/models/#{model_name}.rb", before: /end(\n| )*$/) do
39
- "\n # Configuration added by Blacklight; Blacklight::User uses a method key on your\n" \
40
- " # user class to get a user-displayable login/identifier for\n" \
41
- " # the account.\n" \
42
- " self.string_display_key ||= :email\n"
43
- end
44
37
  gsub_file("config/initializers/devise.rb", "config.sign_out_via = :delete", "config.sign_out_via = :get")
45
38
  # Work around for https://github.com/heartcombo/devise/issues/5720
46
39
  gsub_file("config/initializers/devise.rb", "# config.reload_routes = true", "config.reload_routes = false")
@@ -51,13 +44,19 @@ module Blacklight
51
44
  file_path = "app/models/#{model_name.underscore}.rb"
52
45
  if File.exist?(File.expand_path(file_path, destination_root))
53
46
  inject_into_class file_path, model_name.classify do
54
- "\n # Connects this user object to Blacklights Bookmarks." \
55
- "\n include Blacklight::User\n"
47
+ <<~EOS
48
+ # Connects this user object to Blacklights Bookmarks.
49
+ include Blacklight::User
50
+
51
+ # Blacklight::User uses a method on your User class to get a user-displayable
52
+ # label (e.g. login or identifier) for the account. Blacklight uses `email' by default.
53
+ # self.string_display_key = :email
54
+ EOS
56
55
  end
57
56
  else
58
57
  say_status "warning", <<~EOS, :yellow
59
58
  Blacklight authenticated user functionality not installed, as a user model
60
- could not be found at /app/models/user.rb. If you used a different name,
59
+ could not be found at #{file_path}. If you used a different name,
61
60
  please re-run the migration and provide that name as an argument. E.g.:
62
61
 
63
62
  `rails -g blacklight:user client`
data/package.json CHANGED
@@ -1,11 +1,19 @@
1
1
  {
2
2
  "name": "blacklight-frontend",
3
- "version": "8.11.0",
3
+ "version": "9.0.0-beta2",
4
4
  "description": "The frontend code and styles for Blacklight",
5
- "main": "app/assets/javascripts/blacklight",
5
+ "exports": {
6
+ "./blacklight.esm.js": "./app/assets/javascripts/blacklight/blacklight.esm.js",
7
+ "./stylesheets/*": "./app/assets/stylesheets/blacklight/*",
8
+ ".": {
9
+ "import": "./app/javascript/blacklight-frontend/index.js",
10
+ "require": "./app/assets/javascripts/blacklight.js"
11
+ },
12
+ "./*": "./app/javascript/blacklight-frontend/*.js"
13
+ },
6
14
  "type": "module",
7
- "module": "app/assets/javascripts/blacklight/blacklight.esm.js",
8
15
  "scripts": {
16
+ "build": "sass ./app/assets/stylesheets/blacklight/build.scss:./app/assets/builds/blacklight.css --no-source-map --load-path=node_modules --quiet-deps",
9
17
  "prepare": "rollup --config rollup.config.js --sourcemap && ESM=true rollup --config rollup.config.js --sourcemap"
10
18
  },
11
19
  "repository": {
@@ -24,13 +32,15 @@
24
32
  "homepage": "https://github.com/projectblacklight/blacklight#readme",
25
33
  "devDependencies": {
26
34
  "rollup": "^4.24.0",
27
- "rollup-plugin-includepaths": "^0.2.4"
35
+ "rollup-plugin-includepaths": "^0.2.4",
36
+ "sass": "^1.80.3",
37
+ "bootstrap": "^5.3.5"
28
38
  },
29
39
  "browserslist": [
30
40
  "defaults",
31
41
  "not IE 11"
32
42
  ],
33
43
  "dependencies": {
34
- "bootstrap": ">=4.3.1 <6.0.0"
44
+ "bootstrap": ">=5.3.5 <6.0.0"
35
45
  }
36
46
  }
data/rollup.config.js CHANGED
@@ -16,7 +16,7 @@ let includePathOptions = {
16
16
  };
17
17
 
18
18
  const rollupConfig = {
19
- input: 'app/javascript/blacklight/index.js',
19
+ input: 'app/javascript/blacklight-frontend/index.js',
20
20
  output: {
21
21
  file: `app/assets/javascripts/blacklight/${fileDest}.js`,
22
22
  format: ESM ? 'es' : 'umd',
@@ -3,49 +3,45 @@
3
3
  require 'spec_helper'
4
4
 
5
5
  RSpec.describe Blacklight::AdvancedSearchFormComponent, type: :component do
6
- subject(:render) do
7
- component.render_in(view_context)
8
- end
9
-
10
6
  let(:component) { described_class.new(url: '/whatever', response: response, params: params) }
11
- let(:response) { Blacklight::Solr::Response.new({ facet_counts: { facet_fields: { format: { 'Book' => 10, 'CD' => 5 } } } }.with_indifferent_access, {}) }
12
- let(:params) { {} }
13
-
14
- let(:rendered) do
15
- Capybara::Node::Simple.new(render)
7
+ let(:response) { Blacklight::Solr::Response.new({ facet_counts: { facet_fields: { format: { 'Book' => 10, 'CD' => 5 } } } }.with_indifferent_access, search_builder) }
8
+ let(:search_builder) do
9
+ Blacklight::SearchBuilder.new(view_context)
16
10
  end
11
+ let(:params) { {} }
17
12
 
18
- let(:view_context) { controller.view_context }
13
+ let(:view_context) { vc_test_controller.view_context }
19
14
 
20
15
  before do
21
16
  allow(view_context).to receive(:facet_limit_for).and_return(nil)
17
+ render_inline component
22
18
  end
23
19
 
24
20
  context 'with additional parameters' do
25
21
  let(:params) { { some: :parameter, an_array: [1, 2] } }
26
22
 
27
23
  it 'adds additional parameters as hidden fields' do
28
- expect(rendered).to have_field 'some', with: 'parameter', type: :hidden
29
- expect(rendered).to have_field 'an_array[]', with: '1', type: :hidden
30
- expect(rendered).to have_field 'an_array[]', with: '2', type: :hidden
24
+ expect(page).to have_field 'some', with: 'parameter', type: :hidden
25
+ expect(page).to have_field 'an_array[]', with: '1', type: :hidden
26
+ expect(page).to have_field 'an_array[]', with: '2', type: :hidden
31
27
  end
32
28
  end
33
29
 
34
30
  it 'has text fields for each search field' do
35
- expect(rendered).to have_css '.advanced-search-field', count: 4
36
- expect(rendered).to have_field 'clause_0_field', with: 'all_fields', type: :hidden
37
- expect(rendered).to have_field 'clause_1_field', with: 'title', type: :hidden
38
- expect(rendered).to have_field 'clause_2_field', with: 'author', type: :hidden
39
- expect(rendered).to have_field 'clause_3_field', with: 'subject', type: :hidden
31
+ expect(page).to have_css '.advanced-search-field', count: 4
32
+ expect(page).to have_field 'clause_0_field', with: 'all_fields', type: :hidden
33
+ expect(page).to have_field 'clause_1_field', with: 'title', type: :hidden
34
+ expect(page).to have_field 'clause_2_field', with: 'author', type: :hidden
35
+ expect(page).to have_field 'clause_3_field', with: 'subject', type: :hidden
40
36
  end
41
37
 
42
38
  it 'has filters' do
43
- expect(rendered).to have_css '.blacklight-format'
44
- expect(rendered).to have_field 'f_inclusive[format][]', with: 'Book'
45
- expect(rendered).to have_field 'f_inclusive[format][]', with: 'CD'
39
+ expect(page).to have_css '.blacklight-format'
40
+ expect(page).to have_field 'f_inclusive[format][]', with: 'Book'
41
+ expect(page).to have_field 'f_inclusive[format][]', with: 'CD'
46
42
  end
47
43
 
48
44
  it 'has a sort field' do
49
- expect(rendered).to have_select 'sort', options: %w[relevance year author title]
45
+ expect(page).to have_select 'sort', options: %w[relevance year author title]
50
46
  end
51
47
  end
@@ -3,8 +3,8 @@
3
3
  require 'spec_helper'
4
4
 
5
5
  RSpec.describe Blacklight::ConstraintLayoutComponent, type: :component do
6
- subject(:rendered) do
7
- render_inline_to_capybara_node(described_class.new(**params))
6
+ before do
7
+ render_inline described_class.new(**params)
8
8
  end
9
9
 
10
10
  describe "for simple display" do
@@ -13,7 +13,7 @@ RSpec.describe Blacklight::ConstraintLayoutComponent, type: :component do
13
13
  end
14
14
 
15
15
  it "renders label and value" do
16
- expect(rendered).to have_css("span.applied-filter.constraint") do |s|
16
+ expect(page).to have_css("span.applied-filter.constraint") do |s|
17
17
  expect(s).to have_css("span.constraint-value")
18
18
  expect(s).to have_no_css("a.constraint-value")
19
19
  expect(s).to have_css "span.filter-name", text: "my label"
@@ -28,13 +28,13 @@ RSpec.describe Blacklight::ConstraintLayoutComponent, type: :component do
28
28
  end
29
29
 
30
30
  it "includes remove link" do
31
- expect(rendered).to have_css("span.applied-filter") do |s|
31
+ expect(page).to have_css("span.applied-filter") do |s|
32
32
  expect(s).to have_css(".remove[href='http://remove']")
33
33
  end
34
34
  end
35
35
 
36
36
  it "has an accessible remove label" do
37
- expect(rendered).to have_css(".remove") do |s|
37
+ expect(page).to have_css(".remove") do |s|
38
38
  expect(s).to have_css('.visually-hidden', text: 'Remove constraint my label: my value')
39
39
  end
40
40
  end
@@ -46,7 +46,7 @@ RSpec.describe Blacklight::ConstraintLayoutComponent, type: :component do
46
46
  end
47
47
 
48
48
  it "includes them" do
49
- expect(rendered).to have_css("span.applied-filter.constraint.class1.class2")
49
+ expect(page).to have_css("span.applied-filter.constraint.class1.class2")
50
50
  end
51
51
  end
52
52
 
@@ -56,8 +56,8 @@ RSpec.describe Blacklight::ConstraintLayoutComponent, type: :component do
56
56
  end
57
57
 
58
58
  it "does not escape key and value" do
59
- expect(rendered).to have_css("span.applied-filter.constraint span.filter-name span.custom_label")
60
- expect(rendered).to have_css("span.applied-filter.constraint span.filter-value span.custom_value")
59
+ expect(page).to have_css("span.applied-filter.constraint span.filter-name span.custom_label")
60
+ expect(page).to have_css("span.applied-filter.constraint span.filter-value span.custom_value")
61
61
  end
62
62
  end
63
63
  end