blacklight 7.33.0 → 8.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 (427) hide show
  1. checksums.yaml +4 -4
  2. data/.env +3 -2
  3. data/.github/workflows/ruby.yml +38 -107
  4. data/.gitignore +1 -0
  5. data/.rubocop.yml +243 -2
  6. data/.rubocop_todo.yml +216 -270
  7. data/Gemfile +7 -6
  8. data/README.md +12 -4
  9. data/Rakefile +18 -0
  10. data/VERSION +1 -1
  11. data/app/assets/config/blacklight/manifest.js +3 -0
  12. data/app/assets/javascripts/blacklight/blacklight.esm.js +376 -0
  13. data/app/assets/javascripts/blacklight/blacklight.esm.js.map +1 -0
  14. data/app/assets/javascripts/blacklight/blacklight.js +332 -485
  15. data/app/assets/javascripts/blacklight/blacklight.js.map +1 -0
  16. data/app/assets/stylesheets/blacklight/_autocomplete.scss +25 -0
  17. data/app/assets/stylesheets/blacklight/_blacklight_base.scss +1 -1
  18. data/app/assets/stylesheets/blacklight/_bookmark.scss +16 -0
  19. data/app/assets/stylesheets/blacklight/_bootstrap_overrides.scss +8 -0
  20. data/app/assets/stylesheets/blacklight/_facets.scss +104 -49
  21. data/app/assets/stylesheets/blacklight/_header.scss +0 -15
  22. data/app/assets/stylesheets/blacklight/_icons.scss +0 -14
  23. data/app/assets/stylesheets/blacklight/_mixins.scss +20 -0
  24. data/app/assets/stylesheets/blacklight/_modal.scss +8 -2
  25. data/app/assets/stylesheets/blacklight/_search_form.scss +30 -3
  26. data/app/assets/stylesheets/blacklight/_search_history.scss +10 -1
  27. data/app/assets/stylesheets/blacklight/_search_results.scss +6 -2
  28. data/app/assets/stylesheets/blacklight/blacklight_defaults.scss +4 -1
  29. data/app/builders/blacklight/action_builder.rb +18 -9
  30. data/app/components/blacklight/advanced_search_form_component.html.erb +1 -1
  31. data/app/components/blacklight/advanced_search_form_component.rb +7 -9
  32. data/app/components/blacklight/constraints_component.rb +27 -37
  33. data/app/components/blacklight/document/action_component.html.erb +2 -9
  34. data/app/components/blacklight/document/action_component.rb +26 -8
  35. data/app/components/blacklight/document/actions_component.rb +2 -2
  36. data/app/components/blacklight/document/bookmark_component.html.erb +9 -0
  37. data/app/components/blacklight/document/bookmark_component.rb +4 -2
  38. data/app/components/blacklight/document/citation_component.rb +5 -3
  39. data/app/components/blacklight/document/group_component.rb +7 -3
  40. data/app/components/blacklight/document/show_tools_component.html.erb +12 -0
  41. data/app/components/blacklight/document/show_tools_component.rb +23 -0
  42. data/app/components/blacklight/document/sidebar_component.html.erb +2 -0
  43. data/app/components/blacklight/document/sidebar_component.rb +16 -0
  44. data/app/components/blacklight/document/thumbnail_component.html.erb +2 -7
  45. data/app/components/blacklight/document/thumbnail_component.rb +1 -9
  46. data/app/components/blacklight/document_component.html.erb +4 -0
  47. data/app/components/blacklight/document_component.rb +54 -42
  48. data/app/components/blacklight/document_metadata_component.html.erb +4 -2
  49. data/app/components/blacklight/document_metadata_component.rb +11 -6
  50. data/app/components/blacklight/document_title_component.rb +4 -1
  51. data/app/components/blacklight/facet_component.rb +1 -1
  52. data/app/components/blacklight/facet_field_checkboxes_component.html.erb +3 -3
  53. data/app/components/blacklight/facet_field_checkboxes_component.rb +1 -1
  54. data/app/components/blacklight/facet_field_component.html.erb +5 -5
  55. data/app/components/blacklight/facet_field_component.rb +9 -2
  56. data/app/components/blacklight/facet_field_list_component.html.erb +3 -3
  57. data/app/components/blacklight/facet_field_list_component.rb +37 -5
  58. data/app/components/blacklight/facet_field_no_layout_component.rb +0 -2
  59. data/app/components/blacklight/facet_item_component.rb +1 -43
  60. data/app/components/blacklight/facet_item_pivot_component.rb +21 -23
  61. data/app/components/blacklight/header_component.html.erb +2 -0
  62. data/app/components/blacklight/header_component.rb +26 -0
  63. data/app/components/blacklight/hidden_search_state_component.rb +1 -2
  64. data/app/components/blacklight/icons/legacy_icon_component.rb +30 -0
  65. data/app/components/blacklight/icons/list_component.rb +16 -0
  66. data/app/components/blacklight/icons/search_component.rb +16 -0
  67. data/app/components/blacklight/metadata_field_component.html.erb +2 -2
  68. data/app/components/blacklight/metadata_field_component.rb +24 -8
  69. data/app/components/blacklight/metadata_field_layout_component.rb +7 -22
  70. data/app/components/blacklight/metadata_field_plain_text_layout_component.rb +17 -0
  71. data/app/components/blacklight/response/facet_group_component.html.erb +5 -6
  72. data/app/components/blacklight/response/facet_group_component.rb +29 -8
  73. data/app/components/blacklight/response/sort_component.rb +2 -2
  74. data/app/components/blacklight/response/spellcheck_component.rb +18 -7
  75. data/app/components/blacklight/response/view_type_button_component.rb +3 -7
  76. data/app/components/blacklight/response/view_type_component.rb +4 -6
  77. data/app/components/blacklight/search/sidebar_component.html.erb +8 -0
  78. data/app/components/blacklight/search/sidebar_component.rb +17 -0
  79. data/app/components/blacklight/search_bar_component.html.erb +20 -15
  80. data/app/components/blacklight/search_bar_component.rb +2 -16
  81. data/app/components/blacklight/search_button_component.rb +3 -3
  82. data/app/components/blacklight/search_context/server_applied_params_component.html.erb +4 -0
  83. data/app/components/blacklight/search_context/server_applied_params_component.rb +13 -0
  84. data/app/components/blacklight/search_context/server_item_pagination_component.rb +71 -0
  85. data/app/components/blacklight/search_header_component.html.erb +2 -0
  86. data/app/components/blacklight/search_header_component.rb +6 -0
  87. data/app/components/blacklight/search_navbar_component.html.erb +5 -0
  88. data/app/components/blacklight/search_navbar_component.rb +34 -0
  89. data/app/components/blacklight/start_over_button_component.rb +5 -3
  90. data/app/components/blacklight/system/dropdown_component.rb +3 -3
  91. data/app/components/blacklight/system/flash_message_component.html.erb +3 -1
  92. data/app/components/blacklight/system/flash_message_component.rb +12 -3
  93. data/app/components/blacklight/system/modal_component.html.erb +1 -1
  94. data/app/components/blacklight/system/modal_component.rb +1 -3
  95. data/app/components/blacklight/top_navbar_component.html.erb +12 -0
  96. data/app/components/blacklight/top_navbar_component.rb +17 -0
  97. data/app/controllers/bookmarks_controller.rb +1 -0
  98. data/app/controllers/catalog_controller.rb +1 -0
  99. data/app/controllers/concerns/blacklight/bookmarks.rb +11 -6
  100. data/app/controllers/concerns/blacklight/catalog.rb +21 -72
  101. data/app/controllers/concerns/blacklight/controller.rb +6 -43
  102. data/app/controllers/concerns/blacklight/search_context.rb +71 -13
  103. data/app/controllers/concerns/blacklight/search_history.rb +2 -0
  104. data/app/controllers/concerns/blacklight/searchable.rb +12 -1
  105. data/app/controllers/concerns/blacklight/token_based_user.rb +1 -0
  106. data/app/controllers/search_history_controller.rb +1 -0
  107. data/app/helpers/blacklight/blacklight_helper_behavior.rb +1 -400
  108. data/app/helpers/blacklight/catalog_helper_behavior.rb +40 -182
  109. data/app/helpers/blacklight/component_helper_behavior.rb +1 -63
  110. data/app/helpers/blacklight/configuration_helper_behavior.rb +2 -117
  111. data/app/helpers/blacklight/document_helper_behavior.rb +76 -0
  112. data/app/helpers/blacklight/facets_helper_behavior.rb +4 -321
  113. data/app/helpers/blacklight/icon_helper_behavior.rb +5 -4
  114. data/app/helpers/blacklight/layout_helper_behavior.rb +60 -0
  115. data/app/helpers/blacklight/render_partials_helper_behavior.rb +12 -30
  116. data/app/helpers/blacklight/url_helper_behavior.rb +21 -97
  117. data/app/helpers/blacklight_helper.rb +1 -0
  118. data/app/helpers/catalog_helper.rb +1 -0
  119. data/app/javascript/blacklight/bookmark_toggle.js +9 -22
  120. data/app/javascript/blacklight/button_focus.js +9 -7
  121. data/app/javascript/blacklight/checkbox_submit.js +68 -122
  122. data/app/javascript/blacklight/core.js +6 -5
  123. data/app/javascript/blacklight/index.js +14 -0
  124. data/app/javascript/blacklight/modal.js +100 -165
  125. data/app/javascript/blacklight/modalForm.js +60 -0
  126. data/app/javascript/blacklight/search_context.js +13 -29
  127. data/app/models/blacklight/facet_paginator.rb +3 -2
  128. data/app/models/blacklight/icon.rb +4 -2
  129. data/app/models/bookmark.rb +0 -2
  130. data/app/models/concerns/blacklight/configurable.rb +5 -4
  131. data/app/models/concerns/blacklight/document/active_model_shim.rb +1 -0
  132. data/app/models/concerns/blacklight/document/attributes.rb +50 -0
  133. data/app/models/concerns/blacklight/document/cache_key.rb +1 -0
  134. data/app/models/concerns/blacklight/document/dublin_core.rb +2 -1
  135. data/app/models/concerns/blacklight/document/export.rb +2 -1
  136. data/app/models/concerns/blacklight/document/extensions.rb +1 -0
  137. data/app/models/concerns/blacklight/document/schema_org.rb +1 -0
  138. data/app/models/concerns/blacklight/document/semantic_fields.rb +1 -0
  139. data/app/models/concerns/blacklight/document.rb +23 -20
  140. data/app/models/concerns/blacklight/suggest/response.rb +1 -0
  141. data/app/models/concerns/blacklight/user.rb +17 -8
  142. data/app/models/record_mailer.rb +23 -18
  143. data/app/models/search.rb +0 -1
  144. data/app/models/solr_document.rb +1 -0
  145. data/app/presenters/blacklight/clause_presenter.rb +1 -1
  146. data/app/presenters/blacklight/document_presenter.rb +24 -30
  147. data/app/presenters/blacklight/facet_field_presenter.rb +39 -14
  148. data/app/presenters/blacklight/facet_grouped_item_presenter.rb +1 -5
  149. data/app/presenters/blacklight/facet_item_pivot_presenter.rb +60 -0
  150. data/app/presenters/blacklight/facet_item_presenter.rb +3 -9
  151. data/app/presenters/blacklight/field_presenter.rb +1 -0
  152. data/app/presenters/blacklight/index_presenter.rb +2 -40
  153. data/app/presenters/blacklight/json_presenter.rb +7 -5
  154. data/app/presenters/blacklight/rendering/abstract_step.rb +4 -0
  155. data/app/presenters/blacklight/rendering/join.rb +7 -1
  156. data/app/presenters/blacklight/rendering/link_to_facet.rb +3 -6
  157. data/app/presenters/blacklight/rendering/microdata.rb +1 -1
  158. data/app/presenters/blacklight/show_presenter.rb +1 -9
  159. data/app/presenters/blacklight/thumbnail_presenter.rb +1 -1
  160. data/app/services/blacklight/bookmarks_search_builder.rb +22 -0
  161. data/app/services/blacklight/field_retriever.rb +1 -8
  162. data/app/services/blacklight/search_service.rb +9 -7
  163. data/app/values/blacklight/types.rb +95 -11
  164. data/app/views/bookmarks/_clear_bookmarks_widget.html.erb +8 -1
  165. data/app/views/bookmarks/_tools.html.erb +7 -12
  166. data/app/views/catalog/_advanced_search_form.html.erb +0 -1
  167. data/app/views/catalog/_bookmark_control.html.erb +1 -1
  168. data/app/views/catalog/_constraints.html.erb +1 -14
  169. data/app/views/catalog/_document.atom.builder +12 -14
  170. data/app/views/catalog/_document.html.erb +3 -6
  171. data/app/views/catalog/_document.rss.builder +2 -4
  172. data/app/views/catalog/_document_list.html.erb +2 -1
  173. data/app/views/catalog/_facet_layout.html.erb +2 -2
  174. data/app/views/catalog/_facets.html.erb +5 -4
  175. data/app/views/catalog/_home_text.html.erb +2 -14
  176. data/app/views/catalog/_search_form.html.erb +3 -3
  177. data/app/views/catalog/_search_header.html.erb +1 -2
  178. data/app/views/catalog/_search_results.html.erb +2 -2
  179. data/app/views/catalog/_search_sidebar.html.erb +5 -1
  180. data/app/views/catalog/_show_main_content.html.erb +8 -19
  181. data/app/views/catalog/_show_sidebar.html.erb +2 -2
  182. data/app/views/catalog/_show_tools.html.erb +1 -19
  183. data/app/views/catalog/_view_type_group.html.erb +1 -1
  184. data/app/views/catalog/email_success.html.erb +5 -6
  185. data/app/views/catalog/facet.html.erb +7 -5
  186. data/app/views/catalog/index.atom.builder +12 -14
  187. data/app/views/catalog/index.html.erb +7 -1
  188. data/app/views/catalog/index.json.jbuilder +19 -19
  189. data/app/views/catalog/index.rss.builder +1 -1
  190. data/app/views/catalog/opensearch.xml.builder +1 -1
  191. data/app/views/catalog/show.html.erb +1 -6
  192. data/app/views/catalog/sms_success.html.erb +5 -6
  193. data/app/views/catalog/suggest.html.erb +3 -0
  194. data/app/views/layouts/blacklight/base.html.erb +19 -9
  195. data/app/views/record_mailer/email_record.text.erb +4 -3
  196. data/app/views/record_mailer/sms_record.text.erb +4 -4
  197. data/app/views/search_history/index.html.erb +6 -2
  198. data/app/views/shared/_header_navbar.html.erb +1 -22
  199. data/app/views/shared/_modal.html.erb +3 -3
  200. data/blacklight.gemspec +8 -10
  201. data/config/importmap.rb +3 -0
  202. data/config/locales/blacklight.ar.yml +209 -233
  203. data/config/locales/blacklight.ca.yml +0 -7
  204. data/config/locales/blacklight.de.yml +197 -216
  205. data/config/locales/blacklight.en.yml +2 -7
  206. data/config/locales/blacklight.es.yml +196 -216
  207. data/config/locales/blacklight.fr.yml +196 -220
  208. data/config/locales/blacklight.hu.yml +193 -213
  209. data/config/locales/blacklight.it.yml +197 -216
  210. data/config/locales/blacklight.nl.yml +193 -213
  211. data/config/locales/blacklight.pt-BR.yml +195 -216
  212. data/config/locales/blacklight.sq.yml +193 -213
  213. data/config/locales/blacklight.zh.yml +194 -214
  214. data/config/routes.rb +3 -2
  215. data/db/migrate/20140202020201_create_searches.rb +1 -0
  216. data/db/migrate/20140202020202_create_bookmarks.rb +1 -0
  217. data/db/migrate/20140320000000_add_polymorphic_type_to_bookmarks.rb +1 -0
  218. data/docker-compose.yml +1 -0
  219. data/lib/blacklight/abstract_repository.rb +1 -0
  220. data/lib/blacklight/configuration/context.rb +4 -4
  221. data/lib/blacklight/configuration/display_field.rb +7 -9
  222. data/lib/blacklight/configuration/facet_field.rb +17 -11
  223. data/lib/blacklight/configuration/field.rb +1 -0
  224. data/lib/blacklight/configuration/fields.rb +12 -15
  225. data/lib/blacklight/configuration/index_field.rb +1 -0
  226. data/lib/blacklight/configuration/null_display_field.rb +17 -0
  227. data/lib/blacklight/configuration/search_field.rb +1 -0
  228. data/lib/blacklight/configuration/session_tracking_config.rb +45 -0
  229. data/lib/blacklight/configuration/show_field.rb +1 -0
  230. data/lib/blacklight/configuration/sort_field.rb +1 -0
  231. data/lib/blacklight/configuration/tool_config.rb +1 -0
  232. data/lib/blacklight/configuration/view_config.rb +16 -10
  233. data/lib/blacklight/configuration.rb +322 -341
  234. data/lib/blacklight/engine.rb +13 -15
  235. data/lib/blacklight/exceptions.rb +2 -2
  236. data/lib/blacklight/nested_open_struct_with_hash_access.rb +6 -12
  237. data/lib/blacklight/open_struct_with_hash_access.rb +19 -17
  238. data/lib/blacklight/parameters.rb +7 -21
  239. data/lib/blacklight/routes/exportable.rb +1 -0
  240. data/lib/blacklight/routes/searchable.rb +3 -1
  241. data/lib/blacklight/routes.rb +1 -0
  242. data/lib/blacklight/search_builder.rb +10 -10
  243. data/lib/blacklight/search_state/filter_field.rb +8 -25
  244. data/lib/blacklight/search_state/pivot_filter_field.rb +144 -0
  245. data/lib/blacklight/search_state.rb +23 -79
  246. data/lib/blacklight/solr/document.rb +1 -0
  247. data/lib/blacklight/solr/facet_paginator.rb +1 -0
  248. data/lib/blacklight/solr/repository.rb +1 -0
  249. data/lib/blacklight/solr/request.rb +3 -0
  250. data/lib/blacklight/solr/response/facets.rb +21 -5
  251. data/lib/blacklight/solr/response/group.rb +1 -0
  252. data/lib/blacklight/solr/response/group_response.rb +1 -0
  253. data/lib/blacklight/solr/response/more_like_this.rb +1 -0
  254. data/lib/blacklight/solr/response/pagination_methods.rb +4 -3
  255. data/lib/blacklight/solr/response/params.rb +5 -4
  256. data/lib/blacklight/solr/response/response.rb +1 -0
  257. data/lib/blacklight/solr/response/spelling.rb +1 -0
  258. data/lib/blacklight/solr/response.rb +4 -3
  259. data/lib/blacklight/solr/search_builder_behavior.rb +16 -32
  260. data/lib/blacklight/solr.rb +1 -0
  261. data/lib/blacklight/version.rb +1 -0
  262. data/lib/blacklight.rb +8 -11
  263. data/lib/generators/blacklight/assets/importmap_generator.rb +56 -0
  264. data/lib/generators/blacklight/assets/propshaft_generator.rb +34 -0
  265. data/lib/generators/blacklight/assets/sprockets_generator.rb +68 -0
  266. data/lib/generators/blacklight/assets_generator.rb +14 -88
  267. data/lib/generators/blacklight/controller_generator.rb +3 -2
  268. data/lib/generators/blacklight/document_generator.rb +1 -0
  269. data/lib/generators/blacklight/install_generator.rb +7 -4
  270. data/lib/generators/blacklight/models_generator.rb +1 -0
  271. data/lib/generators/blacklight/search_builder_generator.rb +1 -0
  272. data/lib/generators/blacklight/solr_generator.rb +1 -1
  273. data/lib/generators/blacklight/templates/catalog_controller.rb +37 -7
  274. data/lib/generators/blacklight/templates/solr_document.rb +1 -7
  275. data/lib/generators/blacklight/test_support_generator.rb +4 -2
  276. data/lib/generators/blacklight/user_generator.rb +7 -9
  277. data/lib/railties/blacklight.rake +2 -3
  278. data/package.json +10 -10
  279. data/rollup.config.js +37 -0
  280. data/spec/components/blacklight/constraints_component_spec.rb +17 -13
  281. data/spec/components/blacklight/document_component_spec.rb +74 -33
  282. data/spec/components/blacklight/facet_component_spec.rb +2 -7
  283. data/spec/components/blacklight/facet_field_checkboxes_component_spec.rb +1 -2
  284. data/spec/components/blacklight/facet_field_list_component_spec.rb +7 -6
  285. data/spec/components/blacklight/facet_item_pivot_component_spec.rb +9 -7
  286. data/spec/components/blacklight/header_component_spec.rb +20 -0
  287. data/spec/components/blacklight/response/view_type_component_spec.rb +83 -0
  288. data/spec/components/blacklight/search_bar_component_spec.rb +1 -1
  289. data/spec/components/blacklight/search_context/server_applied_params_component_spec.rb +29 -0
  290. data/spec/components/blacklight/search_context/server_item_pagination_component_spec.rb +51 -0
  291. data/spec/controllers/blacklight/catalog/component_configuration_spec.rb +1 -6
  292. data/spec/controllers/blacklight/{base_spec.rb → catalog_spec.rb} +2 -2
  293. data/spec/controllers/bookmarks_controller_spec.rb +2 -3
  294. data/spec/controllers/catalog_controller_spec.rb +24 -126
  295. data/spec/features/autocomplete_spec.rb +1 -1
  296. data/spec/features/axe_spec.rb +1 -1
  297. data/spec/features/bookmarks_spec.rb +1 -1
  298. data/spec/features/component_template_override_spec.rb +8 -0
  299. data/spec/features/facets_spec.rb +1 -1
  300. data/spec/features/modal_spec.rb +12 -0
  301. data/spec/features/search_context_spec.rb +4 -10
  302. data/spec/features/search_results_spec.rb +0 -33
  303. data/spec/features/sitelinks_search_box_spec.rb +13 -0
  304. data/spec/helpers/blacklight/configuration_helper_behavior_spec.rb +2 -138
  305. data/spec/helpers/blacklight/facets_helper_behavior_spec.rb +0 -387
  306. data/spec/helpers/blacklight/icon_helper_behavior_spec.rb +8 -0
  307. data/spec/helpers/blacklight/render_partials_helper_behavior_spec.rb +5 -7
  308. data/spec/helpers/blacklight/url_helper_behavior_spec.rb +10 -132
  309. data/spec/helpers/blacklight_helper_spec.rb +3 -298
  310. data/spec/helpers/catalog_helper_spec.rb +60 -115
  311. data/spec/i18n_spec.rb +1 -0
  312. data/spec/integration/generators/blacklight/solr_generator_spec.rb +1 -1
  313. data/spec/lib/blacklight/configuration/facet_field_spec.rb +27 -16
  314. data/spec/lib/blacklight/configuration/field_spec.rb +1 -1
  315. data/spec/lib/blacklight/configuration/session_tracking_config_spec.rb +38 -0
  316. data/spec/lib/blacklight/configuration/view_config_spec.rb +1 -1
  317. data/spec/lib/blacklight/open_struct_with_hash_access_spec.rb +4 -4
  318. data/spec/lib/blacklight/parameters_spec.rb +1 -4
  319. data/spec/lib/blacklight/search_state/filter_field_spec.rb +4 -4
  320. data/spec/lib/blacklight/search_state/pivot_filter_field_spec.rb +117 -0
  321. data/spec/lib/blacklight/search_state_spec.rb +80 -198
  322. data/spec/lib/tasks/blacklight_task_spec.rb +1 -0
  323. data/spec/models/blacklight/configuration_spec.rb +41 -53
  324. data/spec/models/blacklight/document/active_model_shim_spec.rb +2 -2
  325. data/spec/models/blacklight/icon_spec.rb +29 -15
  326. data/spec/models/blacklight/search_builder_spec.rb +12 -12
  327. data/spec/models/blacklight/solr/document_spec.rb +3 -3
  328. data/spec/models/blacklight/solr/request_spec.rb +2 -2
  329. data/spec/models/blacklight/solr/response/facets_spec.rb +27 -27
  330. data/spec/models/blacklight/solr/response/group_response_spec.rb +1 -0
  331. data/spec/models/blacklight/solr/response/group_spec.rb +1 -0
  332. data/spec/models/blacklight/solr/response_spec.rb +9 -2
  333. data/spec/models/blacklight/solr/search_builder_spec.rb +32 -23
  334. data/spec/models/blacklight/user_spec.rb +22 -0
  335. data/spec/models/record_mailer_spec.rb +36 -23
  336. data/spec/models/solr_document_spec.rb +21 -3
  337. data/spec/presenters/blacklight/clause_presenter_spec.rb +1 -0
  338. data/spec/presenters/blacklight/document_presenter_spec.rb +3 -2
  339. data/spec/presenters/blacklight/facet_field_presenter_spec.rb +85 -12
  340. data/spec/presenters/blacklight/facet_grouped_item_presenter_spec.rb +1 -0
  341. data/spec/presenters/blacklight/facet_item_presenter_spec.rb +14 -13
  342. data/spec/presenters/blacklight/field_presenter_spec.rb +2 -16
  343. data/spec/presenters/blacklight/index_presenter_spec.rb +3 -4
  344. data/spec/presenters/blacklight/json_presenter_spec.rb +1 -0
  345. data/spec/presenters/blacklight/link_alternate_presenter_spec.rb +3 -2
  346. data/spec/presenters/blacklight/show_presenter_spec.rb +11 -25
  347. data/spec/presenters/pipeline_spec.rb +13 -2
  348. data/spec/presenters/thumbnail_presenter_spec.rb +1 -1
  349. data/spec/requests/load_suggestions_spec.rb +16 -0
  350. data/spec/routing/catalog_routing_spec.rb +6 -1
  351. data/spec/services/blacklight/search_service_spec.rb +31 -68
  352. data/spec/spec_helper.rb +4 -3
  353. data/spec/support/controller_level_helpers.rb +1 -2
  354. data/spec/support/features/search_helpers.rb +39 -0
  355. data/spec/support/features/session_helpers.rb +1 -0
  356. data/spec/support/features.rb +3 -0
  357. data/spec/support/view_component_test_helpers.rb +21 -0
  358. data/spec/test_app_templates/Gemfile.extra +4 -0
  359. data/spec/test_app_templates/lib/generators/test_app_generator.rb +17 -2
  360. data/spec/views/catalog/_document.html.erb_spec.rb +23 -33
  361. data/spec/views/catalog/_document_list.html.erb_spec.rb +7 -2
  362. data/spec/views/catalog/_facet_index_navigation.html.erb_spec.rb +1 -1
  363. data/spec/views/catalog/_search_header.erb_spec.rb +1 -0
  364. data/spec/views/catalog/_show_sidebar.erb_spec.rb +1 -0
  365. data/spec/views/catalog/_show_tools.html.erb_spec.rb +7 -54
  366. data/spec/views/catalog/_view_type_group.html.erb_spec.rb +17 -9
  367. data/spec/views/catalog/email_success.html.erb_spec.rb +2 -2
  368. data/spec/views/catalog/facet.html.erb_spec.rb +6 -3
  369. data/spec/views/catalog/index.atom.builder_spec.rb +18 -11
  370. data/spec/views/catalog/index.html.erb_spec.rb +5 -6
  371. data/spec/views/catalog/index.json.jbuilder_spec.rb +3 -3
  372. data/spec/views/catalog/show.html.erb_spec.rb +3 -25
  373. data/spec/views/catalog/sms_success.html.erb_spec.rb +2 -2
  374. data/tasks/blacklight.rake +7 -5
  375. metadata +95 -123
  376. data/.babelrc +0 -11
  377. data/app/assets/images/blacklight/list.svg +0 -1
  378. data/app/assets/images/blacklight/search.svg +0 -1
  379. data/app/assets/stylesheets/blacklight/_twitter_typeahead.scss +0 -37
  380. data/app/components/blacklight/content_areas_shim.rb +0 -13
  381. data/app/components/blacklight/search_context_component.rb +0 -34
  382. data/app/controllers/concerns/blacklight/base.rb +0 -7
  383. data/app/controllers/concerns/blacklight/default_component_configuration.rb +0 -64
  384. data/app/controllers/concerns/blacklight/facet.rb +0 -69
  385. data/app/controllers/concerns/blacklight/search_fields.rb +0 -46
  386. data/app/helpers/blacklight/hash_as_hidden_fields_helper_behavior.rb +0 -27
  387. data/app/helpers/blacklight/render_constraints_helper_behavior.rb +0 -188
  388. data/app/helpers/blacklight/search_history_constraints_helper_behavior.rb +0 -97
  389. data/app/helpers/blacklight/suggest_helper_behavior.rb +0 -13
  390. data/app/javascript/blacklight/autocomplete.js +0 -36
  391. data/app/javascript/blacklight/facet_load.js +0 -22
  392. data/app/models/concerns/blacklight/document/email.rb +0 -26
  393. data/app/models/concerns/blacklight/document/sms.rb +0 -24
  394. data/app/presenters/blacklight/search_bar_presenter.rb +0 -47
  395. data/app/views/catalog/_constraints_element.html.erb +0 -14
  396. data/app/views/catalog/_document_action.html.erb +0 -5
  397. data/app/views/catalog/_facet_group.html.erb +0 -5
  398. data/app/views/catalog/_facet_limit.html.erb +0 -3
  399. data/app/views/catalog/_index.html.erb +0 -1
  400. data/app/views/catalog/_index_header.html.erb +0 -22
  401. data/app/views/catalog/_previous_next_doc.html.erb +0 -2
  402. data/app/views/catalog/_show.html.erb +0 -6
  403. data/app/views/catalog/_show_header.html.erb +0 -2
  404. data/app/views/catalog/_thumbnail.html.erb +0 -1
  405. data/lib/blacklight/deprecations/engine_configuration.rb +0 -66
  406. data/lib/blacklight/deprecations/search_state_normalization.rb +0 -52
  407. data/spec/controllers/blacklight/facet_spec.rb +0 -33
  408. data/spec/controllers/blacklight/search_fields_spec.rb +0 -62
  409. data/spec/features/sitelinks_search_box.rb +0 -13
  410. data/spec/helpers/blacklight/hash_as_hidden_fields_behavior_spec.rb +0 -26
  411. data/spec/helpers/blacklight/render_constraints_helper_behavior_spec.rb +0 -92
  412. data/spec/helpers/blacklight/search_history_constraints_helper_behavior_spec.rb +0 -108
  413. data/spec/helpers/blacklight/suggest_helper_behavior_spec.rb +0 -48
  414. data/spec/lib/blacklight/engine_spec.rb +0 -41
  415. data/spec/models/blacklight/document/email_spec.rb +0 -57
  416. data/spec/models/blacklight/document/sms_spec.rb +0 -58
  417. data/spec/presenters/blacklight/search_bar_presenter_spec.rb +0 -94
  418. data/spec/support/view_component_capybara_test_helpers.rb +0 -8
  419. data/spec/views/catalog/_constraints.html.erb_spec.rb +0 -33
  420. data/spec/views/catalog/_facet_group.html.erb_spec.rb +0 -84
  421. data/spec/views/catalog/_facets.html.erb_spec.rb +0 -15
  422. data/spec/views/catalog/_index.html.erb_spec.rb +0 -62
  423. data/spec/views/catalog/_index_header.html.erb_spec.rb +0 -35
  424. data/spec/views/catalog/_previous_next_doc.html.erb_spec.rb +0 -22
  425. data/spec/views/catalog/_show.html.erb_spec.rb +0 -62
  426. data/spec/views/catalog/_thumbnail.html.erb_spec.rb +0 -38
  427. /data/app/components/blacklight/{search_context_component.html.erb → search_context/server_item_pagination_component.html.erb} +0 -0
@@ -1,38 +1,7 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Blacklight
3
4
  module ComponentHelperBehavior
4
- extend Deprecation
5
-
6
- # @deprecated
7
- def document_action_label action, opts
8
- t("blacklight.tools.#{action}", default: opts.label || action.to_s.humanize)
9
- end
10
- deprecation_deprecate :document_action_label
11
-
12
- # @deprecated
13
- def document_action_path action_opts, url_opts = {}
14
- if action_opts.path
15
- send(action_opts.path, url_opts)
16
- elsif url_opts[:id].class.respond_to?(:model_name)
17
- url_for([action_opts.key.to_sym, url_opts[:id]])
18
- else
19
- send("#{action_opts.key}_#{controller_name}_path", url_opts)
20
- end
21
- end
22
- deprecation_deprecate :document_action_path
23
-
24
- ##
25
- # Render "document actions" area for navigation header
26
- # (normally renders "Saved Searches", "History", "Bookmarks")
27
- # These things are added by add_nav_action and the default config is
28
- # provided by DefaultComponentConfiguration
29
- #
30
- # @param [Hash] options
31
- # @return [String]
32
- def render_nav_actions(options = {}, &block)
33
- render_filtered_partials(blacklight_config.navbar.partials, options, &block)
34
- end
35
-
36
5
  ##
37
6
  # Render "document actions" area for search results view
38
7
  # (normally renders next to title in the list view)
@@ -60,37 +29,6 @@ module Blacklight
60
29
  render(component.new(actions: actions, classes: wrapping_class))
61
30
  end
62
31
 
63
- ##
64
- # Render "document actions" for the item detail 'show' view.
65
- # (this normally renders next to title)
66
- #
67
- # By default includes 'Bookmarks'
68
- #
69
- # @param [SolrDocument] document
70
- # @param [Hash] options
71
- # @return [String]
72
- def render_show_doc_actions(document = @document, url_opts: {}, **options)
73
- document = options[:document] if options.key? :document
74
-
75
- actions = document_actions(document, options: options)
76
-
77
- if block_given?
78
- # TODO: Deprecate this behavior and replace it with a separate component?
79
- # Deprecation.warn(Blacklight::ComponentHelperBehavior, 'Pass a block to #render_show_doc_actions is deprecated')
80
- actions.each do |action|
81
- yield action, render((action.component || Blacklight::Document::ActionComponent).new(action: action, document: document, options: options, url_opts: url_opts))
82
- end
83
-
84
- nil
85
- else
86
- render(Blacklight::Document::ActionsComponent.new(document: document, actions: actions, options: options, url_opts: url_opts))
87
- end
88
- end
89
-
90
- def render_show_doc_actions_method_from_blacklight?
91
- method(:render_show_doc_actions).owner == Blacklight::ComponentHelperBehavior
92
- end
93
-
94
32
  def show_doc_actions?(document = @document, options = {})
95
33
  filter_partials(blacklight_config.view_config(:show).document_actions, { document: document }.merge(options)).any?
96
34
  end
@@ -1,17 +1,6 @@
1
1
  # frozen_string_literal: true
2
- module Blacklight::ConfigurationHelperBehavior
3
- extend Deprecation
4
-
5
- ##
6
- # Index fields to display for a type of document
7
- #
8
- # @param [SolrDocument] _document
9
- # @return [Array<Blacklight::Configuration::Field>]
10
- def index_fields _document = nil
11
- Deprecation.warn(self, "index_fields is deprecated and will be removed in Blacklight 8. Use IndexPresenter#fields instead")
12
- blacklight_config.index_fields
13
- end
14
2
 
3
+ module Blacklight::ConfigurationHelperBehavior
15
4
  ##
16
5
  # Return the available sort fields
17
6
  # @return [Array<Blacklight::Configuration::Field>]
@@ -19,75 +8,13 @@ module Blacklight::ConfigurationHelperBehavior
19
8
  blacklight_config.sort_fields.select { |_sort_key, field_config| should_render_field?(field_config) }
20
9
  end
21
10
 
22
- # Used in the search form partial for building a select tag
23
- # @see #search_field_options_for_select
24
- def search_fields
25
- search_field_options_for_select
26
- end
27
- deprecation_deprecate search_fields: 'removed without replacement'
28
-
29
- # Returns suitable argument to options_for_select method, to create
30
- # an html select based on #search_field_list. Skips search_fields
31
- # marked :include_in_simple_select => false
32
- # @return [Array<Array>] the first element of the array is the label, the second is the sort field key
33
- def search_field_options_for_select
34
- blacklight_config.search_fields.collect do |_key, field_def|
35
- [label_for_search_field(field_def.key), field_def.key] if should_render_field?(field_def)
36
- end.compact
37
- end
38
- deprecation_deprecate search_field_options_for_select: 'removed without replacement'
39
-
40
- # used in the catalog/_show partial
41
- # @return [Array<Blacklight::Configuration::Field>]
42
- def document_show_fields _document = nil
43
- Deprecation.warn(self, "document_show_fields is deprecated and will be removed in Blacklight 8. Use ShowPresenter#fields instead")
44
- blacklight_config.show_fields
45
- end
46
-
47
- ##
48
- # Return a label for the currently selected search field.
49
- # If no "search_field" or the default (e.g. "all_fields") is selected, then return nil
50
- # Otherwise grab the label of the selected search field.
51
- # @param [Hash] localized_params query parameters
52
- # @return [String]
53
- def constraint_query_label(localized_params = params)
54
- label_for_search_field(localized_params[:search_field]) unless default_search_field?(localized_params[:search_field])
55
- end
56
- deprecation_deprecate constraint_query_label: 'Moving to Blacklight::ConstraintsComponent'
57
-
58
11
  ##
59
12
  # Is the search form using the default search field ("all_fields" by default)?
60
13
  # @param [String] selected_search_field the currently selected search_field
61
14
  # @return [Boolean]
62
15
  def default_search_field?(selected_search_field)
63
- Deprecation.silence(Blacklight::SearchFields) do
64
- selected_search_field.blank? || (default_search_field && selected_search_field == default_search_field[:key])
65
- end
66
- end
67
-
68
- ##
69
- # Look up the label for the index field
70
- # @deprecated
71
- # @return [String]
72
- def index_field_label document, field
73
- field_config = blacklight_config.index_fields_for(document_presenter(document).display_type)[field]
74
- field_config ||= Blacklight::Configuration::NullField.new(key: field)
75
-
76
- field_config.display_label('index')
77
- end
78
- deprecation_deprecate :index_field_label
79
-
80
- ##
81
- # Look up the label for the show field
82
- # @deprecated
83
- # @return [String]
84
- def document_show_field_label document, field
85
- field_config = blacklight_config.show_fields_for(document_presenter(document).display_type)[field]
86
- field_config ||= Blacklight::Configuration::NullField.new(key: field)
87
-
88
- field_config.display_label('show')
16
+ selected_search_field.blank? || (blacklight_config.default_search_field && selected_search_field == blacklight_config.default_search_field[:key])
89
17
  end
90
- deprecation_deprecate :document_show_field_label
91
18
 
92
19
  ##
93
20
  # Look up the label for the facet field
@@ -99,14 +26,6 @@ module Blacklight::ConfigurationHelperBehavior
99
26
  field_config.display_label('facet')
100
27
  end
101
28
 
102
- # Return the label for a search view
103
- # @return [String]
104
- def view_label(view)
105
- view_config = blacklight_config.view[view]
106
- view_config.display_label
107
- end
108
- deprecation_deprecate view_label: 'Moving to ViewConfig#display_label and Blacklight::Response::ViewTypeComponent'
109
-
110
29
  # Shortcut for commonly needed operation, look up display
111
30
  # label for the key specified.
112
31
  # @return [String]
@@ -166,46 +85,12 @@ module Blacklight::ConfigurationHelperBehavior
166
85
  document_index_views.select { |_k, config| config.respond_to?(:default) && config.default }.keys.first || document_index_views.keys.first
167
86
  end
168
87
 
169
- ##
170
- # Check if there are alternative views configuration
171
- # @return [Boolean]
172
- def has_alternative_views?
173
- document_index_views.keys.length > 1
174
- end
175
- deprecation_deprecate has_alternative_views?: 'Moving to Blacklight::Response::ViewTypeComponent'
176
-
177
- ##
178
- # Maximum number of results for spell checking
179
- # @return [Number]
180
- def spell_check_max
181
- blacklight_config.spell_max
182
- end
183
- deprecation_deprecate spell_check_max: 'Use blacklight_config.spell_max directly'
184
-
185
- # Used in the document list partial (search view) for creating a link to the document show action
186
- # @deprecated
187
- def document_show_link_field document = nil
188
- fields = Array(blacklight_config.view_config(document_index_view_type).title_field)
189
-
190
- field = fields.first if document.nil?
191
- field ||= fields.find { |f| document.has? f }
192
- field &&= field&.to_sym
193
-
194
- field
195
- end
196
- deprecation_deprecate document_show_link_field: 'Deprecated without replacement'
197
-
198
88
  ##
199
89
  # Default sort field
200
90
  def default_sort_field
201
91
  (active_sort_fields.find { |_k, config| config.respond_to?(:default) && config.default } || active_sort_fields.first)&.last
202
92
  end
203
93
 
204
- ##
205
- # The default value for search results per page
206
- delegate :default_per_page, to: :blacklight_config
207
- deprecation_deprecate default_per_page: "Use blacklight_config.default_per_page instead"
208
-
209
94
  ##
210
95
  # The available options for results per page, in the style of #options_for_select
211
96
  def per_page_options_for_select
@@ -0,0 +1,76 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Helper methods for catalog-like controllers that work with documents
4
+ module Blacklight::DocumentHelperBehavior
5
+ ##
6
+ # Get the classes to add to a document's div
7
+ #
8
+ # @param [Blacklight::Document] document
9
+ # @return [String]
10
+ def render_document_class(document = @document)
11
+ types = document_presenter(document).display_type
12
+ return if types.blank?
13
+
14
+ Array(types).compact.map do |t|
15
+ "#{document_class_prefix}#{t.try(:parameterize) || t}"
16
+ end.join(' ')
17
+ end
18
+
19
+ ##
20
+ # Return a prefix for the document classes infered from the document
21
+ # @see #render_document_class
22
+ # @return [String]
23
+ def document_class_prefix
24
+ 'blacklight-'
25
+ end
26
+
27
+ ##
28
+ # Render the sidebar partial for a document
29
+ # This is used as an integration point by downstream apps to add to the
30
+ # default sidebar.
31
+ # See: https://github.com/geoblacklight/geoblacklight/blob/7d3c31c7af3362879b97e2c1351a2496c728c59c/app/helpers/blacklight_helper.rb#L7
32
+ #
33
+ # @param [SolrDocument] document
34
+ # @return [String]
35
+ def render_document_sidebar_partial(document)
36
+ render 'show_sidebar', document: document
37
+ end
38
+
39
+ ##
40
+ # return the Bookmarks on a set of documents (all bookmarks on the page)
41
+ # @private
42
+ # @return [Enumerable<Bookmark>]
43
+ def current_bookmarks
44
+ @current_bookmarks ||= begin
45
+ documents = @document.presence || @response.documents
46
+ current_or_guest_user.bookmarks_for_documents(Array(documents)).to_a
47
+ end
48
+ end
49
+ private :current_bookmarks
50
+
51
+ ##
52
+ # Check if the document is in the user's bookmarks
53
+ # @param [Blacklight::Document] document
54
+ # @return [Boolean]
55
+ def bookmarked? document
56
+ current_bookmarks.any? { |x| x.document_id == document.id && x.document_type == document.class }
57
+ end
58
+
59
+ ##
60
+ # Returns a document presenter for the given document
61
+ def document_presenter(document)
62
+ document_presenter_class(document).new(document, self)
63
+ end
64
+
65
+ ##
66
+ # Override this method if you want to use a differnet presenter for your documents
67
+ # @param [Blacklight::Document] _document optional, here for extension + backwards compatibility only
68
+ def document_presenter_class(_document = nil)
69
+ case action_name
70
+ when 'show', 'citation'
71
+ blacklight_config.view_config(:show, action_name: action_name).document_presenter_class
72
+ else
73
+ blacklight_config.view_config(document_index_view_type, action_name: action_name).document_presenter_class
74
+ end
75
+ end
76
+ end
@@ -1,309 +1,11 @@
1
1
  # frozen_string_literal: true
2
- module Blacklight::FacetsHelperBehavior
3
- extend Deprecation
4
- self.deprecation_horizon = 'blacklight 8.0'
5
-
6
- include Blacklight::Facet
7
-
8
- ##
9
- # Check if any of the given fields have values
10
- #
11
- # @deprecated
12
- # @param [Array<String>] fields
13
- # @return [Boolean]
14
- def has_facet_values? fields = facet_field_names, response = nil
15
- deprecated_method(:has_facet_values?)
16
- unless response
17
- Deprecation.warn(self, 'Calling has_facet_values? without passing the ' \
18
- 'second argument (response) is deprecated and will be removed in Blacklight ' \
19
- '8.0.0')
20
- response = @response
21
- end
22
- Deprecation.silence(Blacklight::FacetsHelperBehavior) do
23
- Deprecation.silence(Blacklight::Facet) do
24
- facets_from_request(fields, response).any? { |display_facet| should_render_facet?(display_facet) }
25
- end
26
- end
27
- end
28
-
29
- ##
30
- # Render a collection of facet fields.
31
- # @see #render_facet_limit
32
- #
33
- # @deprecated
34
- # @param [Array<String>] fields
35
- # @param [Hash] options
36
- # @option options [Blacklight::Solr::Response] :response the Solr response object
37
- # @return String
38
- def render_facet_partials fields = nil, options = {}
39
- deprecated_method(:render_facet_partials)
40
-
41
- unless fields
42
- Deprecation.warn(self.class, 'Calling render_facet_partials without passing the ' \
43
- 'first argument (fields) is deprecated and will be removed in Blacklight ' \
44
- '8.0.0')
45
- fields = facet_field_names
46
- end
47
-
48
- response = options.delete(:response)
49
- unless response
50
- Deprecation.warn(self.class, 'Calling render_facet_partials without passing the ' \
51
- 'response keyword is deprecated and will be removed in Blacklight ' \
52
- '8.0.0')
53
- response = @response
54
- end
55
- Deprecation.silence(Blacklight::FacetsHelperBehavior) do
56
- Deprecation.silence(Blacklight::Facet) do
57
- safe_join(facets_from_request(fields, response).map do |display_facet|
58
- render_facet_limit(display_facet, options)
59
- end.compact, "\n")
60
- end
61
- end
62
- end
63
-
64
- ##
65
- # Renders a single section for facet limit with a specified
66
- # solr field used for faceting. Can be over-ridden for custom
67
- # display on a per-facet basis.
68
- #
69
- # @param [Blacklight::Solr::Response::Facets::FacetField] display_facet
70
- # @param [Hash] options parameters to use for rendering the facet limit partial
71
- # @option options [String] :partial partial to render
72
- # @option options [String] :layout partial layout to render
73
- # @option options [Hash] :locals locals to pass to the partial
74
- # @return [String]
75
- def render_facet_limit(display_facet, options = {})
76
- field_config = facet_configuration_for_field(display_facet.name)
77
-
78
- if field_config.component
79
- return render(
80
- Blacklight::FacetComponent.new(
81
- display_facet: display_facet,
82
- field_config: field_config,
83
- layout: (params[:action] == 'facet' ? false : options[:layout])
84
- )
85
- )
86
- end
87
-
88
- Deprecation.warn(Blacklight::FacetsHelperBehavior, 'Calling #render_facet_limit on a non-componentized'\
89
- ' facet is deprecated and will be removed in Blacklight 8')
90
-
91
- Deprecation.silence(Blacklight::FacetsHelperBehavior) do
92
- return unless should_render_facet?(display_facet, field_config)
93
- end
94
- options = options.dup
95
-
96
- Deprecation.silence(Blacklight::FacetsHelperBehavior) do
97
- options[:partial] ||= facet_partial_name(display_facet)
98
- end
99
-
100
- options[:layout] ||= "facet_layout" unless options.key?(:layout)
101
- options[:locals] ||= {}
102
- options[:locals][:field_name] ||= display_facet.name
103
- options[:locals][:facet_field] ||= field_config
104
- options[:locals][:display_facet] ||= display_facet
105
-
106
- render(options)
107
- end
108
-
109
- ##
110
- # Renders the list of values
111
- # removes any elements where render_facet_item returns a nil value. This enables an application
112
- # to filter undesireable facet items so they don't appear in the UI
113
- # @deprecated
114
- def render_facet_limit_list(paginator, facet_field, wrapping_element = :li)
115
- facet_config ||= facet_configuration_for_field(facet_field)
116
-
117
- collection = paginator.items.map do |item|
118
- facet_item_presenter(facet_config, item, facet_field)
119
- end
120
-
121
- render(facet_item_component_class(facet_config).with_collection(collection, wrapping_element: wrapping_element))
122
- end
123
- deprecation_deprecate :render_facet_limit_list
124
-
125
- ##
126
- # Renders a single facet item
127
- # @deprecated
128
- def render_facet_item(facet_field, item)
129
- deprecated_method(:render_facet_item)
130
- if facet_in_params?(facet_field, item.value)
131
- render_selected_facet_value(facet_field, item)
132
- else
133
- render_facet_value(facet_field, item)
134
- end
135
- end
136
-
137
- ##
138
- # Determine if Blacklight should render the display_facet or not
139
- #
140
- # By default, only render facets with items.
141
- #
142
- # @deprecated
143
- # @param [Blacklight::Solr::Response::Facets::FacetField] display_facet
144
- # @param [Blacklight::Configuration::FacetField] facet_config
145
- # @return [Boolean]
146
- def should_render_facet? display_facet, facet_config = nil
147
- return false if display_facet.items.blank?
148
-
149
- # display when show is nil or true
150
- facet_config ||= facet_configuration_for_field(display_facet.name)
151
- should_render_field?(facet_config, display_facet)
152
- end
153
- deprecation_deprecate :should_render_facet?
154
2
 
155
- ##
156
- # Determine whether a facet should be rendered as collapsed or not.
157
- # - if the facet is 'active', don't collapse
158
- # - if the facet is configured to collapse (the default), collapse
159
- # - if the facet is configured not to collapse, don't collapse
160
- #
161
- # @deprecated
162
- # @param [Blacklight::Configuration::FacetField] facet_field
163
- # @return [Boolean]
164
- def should_collapse_facet? facet_field
165
- Deprecation.silence(Blacklight::FacetsHelperBehavior) do
166
- !facet_field_in_params?(facet_field.key) && facet_field.collapse
167
- end
168
- end
169
- deprecation_deprecate :should_collapse_facet?
170
-
171
- ##
172
- # The name of the partial to use to render a facet field.
173
- # uses the value of the "partial" field if set in the facet configuration
174
- # otherwise uses "facet_pivot" if this facet is a pivot facet
175
- # defaults to 'facet_limit'
176
- #
177
- # @return [String]
178
- def facet_partial_name(display_facet = nil)
179
- config = facet_configuration_for_field(display_facet.name)
180
- name = config.partial
181
- name ||= "facet_pivot" if config.pivot
182
- name || "facet_limit"
183
- end
184
- deprecation_deprecate :facet_partial_name
3
+ module Blacklight::FacetsHelperBehavior
4
+ delegate :facet_configuration_for_field, to: :blacklight_config
185
5
 
186
6
  def facet_field_presenter(facet_config, display_facet)
187
- (facet_config.presenter || Blacklight::FacetFieldPresenter).new(facet_config, display_facet, self)
188
- end
189
-
190
- ##
191
- # Standard display of a facet value in a list. Used in both _facets sidebar
192
- # partial and catalog/facet expanded list. Will output facet value name as
193
- # a link to add that to your restrictions, with count in parens.
194
- #
195
- # @param [Blacklight::Solr::Response::Facets::FacetField] facet_field
196
- # @param [Blacklight::Solr::Response::Facets::FacetItem] item
197
- # @param [Hash] options
198
- # @option options [Boolean] :suppress_link display the facet, but don't link to it
199
- # @return [String]
200
- def render_facet_value(facet_field, item, options = {})
201
- deprecated_method(:render_facet_value)
202
- facet_config = facet_configuration_for_field(facet_field)
203
- facet_item_component(facet_config, item, facet_field, **options).render_facet_value
204
- end
205
-
206
- ##
207
- # Where should this facet link to?
208
- #
209
- # @deprecated
210
- # @param [Blacklight::Solr::Response::Facets::FacetField] facet_field
211
- # @param [String] item
212
- # @return [String]
213
- def path_for_facet(facet_field, item, path_options = {})
214
- facet_config = facet_configuration_for_field(facet_field)
215
- facet_item_presenter(facet_config, item, facet_field).href(path_options)
216
- end
217
- deprecation_deprecate :path_for_facet
218
-
219
- ##
220
- # Standard display of a SELECTED facet value (e.g. without a link and with a remove button)
221
- #
222
- # @deprecated
223
- # @see #render_facet_value
224
- # @param [Blacklight::Solr::Response::Facets::FacetField] facet_field
225
- # @param [String] item
226
- def render_selected_facet_value(facet_field, item)
227
- deprecated_method(:render_selected_facet_value)
228
- facet_config = facet_configuration_for_field(facet_field)
229
- facet_item_component(facet_config, item, facet_field).render_selected_facet_value
230
- end
231
-
232
- ##
233
- # Renders a count value for facet limits. Can be over-ridden locally
234
- # to change style. And can be called by plugins to get consistent display.
235
- #
236
- # @deprecated
237
- # @param [Integer] num number of facet results
238
- # @param [Hash] options
239
- # @option options [Array<String>] an array of classes to add to count span.
240
- # @return [String]
241
- def render_facet_count(num, options = {})
242
- deprecated_method(:render_facet_count)
243
- classes = (options[:classes] || []) << "facet-count"
244
- tag.span(t('blacklight.search.facets.count', number: number_with_delimiter(num)), class: classes)
245
- end
246
-
247
- ##
248
- # Are any facet restrictions for a field in the query parameters?
249
- # @private
250
- # @param [String] field
251
- # @return [Boolean]
252
- def facet_field_in_params? field
253
- config = facet_configuration_for_field(field)
254
-
255
- Deprecation.silence(Blacklight::SearchState) do
256
- search_state.has_facet? config
257
- end
7
+ facet_config.presenter.new(facet_config, display_facet, self)
258
8
  end
259
- # Left undeprecated for the sake of temporary backwards compatibility
260
- # deprecation_deprecate :facet_field_in_params?
261
-
262
- ##
263
- # Check if the query parameters have the given facet field with the
264
- # given value.
265
- #
266
- # @deprecated
267
- # @param [String] field
268
- # @param [String] item facet value
269
- # @return [Boolean]
270
- def facet_in_params?(field, item)
271
- config = facet_configuration_for_field(field)
272
-
273
- Deprecation.silence(Blacklight::SearchState) do
274
- search_state.has_facet? config, value: facet_value_for_facet_item(item)
275
- end
276
- end
277
- deprecation_deprecate :facet_in_params?
278
-
279
- ##
280
- # Get the values of the facet set in the blacklight query string
281
- # @deprecated
282
- def facet_params field
283
- config = facet_configuration_for_field(field)
284
-
285
- search_state.params.dig(:f, config.key)
286
- end
287
- deprecation_deprecate :facet_params
288
-
289
- ##
290
- # Get the displayable version of a facet's value
291
- #
292
- # @param [Object] field
293
- # @param [String] item value
294
- # @return [String]
295
- # @deprecated
296
- def facet_display_value field, item
297
- deprecated_method(:facet_display_value)
298
- facet_config = facet_configuration_for_field(field)
299
- facet_item_presenter(facet_config, item, field).label
300
- end
301
-
302
- # @deprecated
303
- def facet_field_id facet_field
304
- "facet-#{facet_field.key.parameterize}"
305
- end
306
- deprecation_deprecate :facet_field_id
307
9
 
308
10
  private
309
11
 
@@ -316,25 +18,6 @@ module Blacklight::FacetsHelperBehavior
316
18
  end
317
19
 
318
20
  def facet_item_presenter(facet_config, facet_item, facet_field)
319
- (facet_config.item_presenter || Blacklight::FacetItemPresenter).new(facet_item, facet_config, self, facet_field)
320
- end
321
-
322
- def facet_item_component(facet_config, facet_item, facet_field, **args)
323
- facet_item_component_class(facet_config).new(facet_item: facet_item_presenter(facet_config, facet_item, facet_field), **args).with_view_context(self)
324
- end
325
-
326
- def facet_item_component_class(facet_config)
327
- default_component = facet_config.pivot ? Blacklight::FacetItemPivotComponent : Blacklight::FacetItemComponent
328
- facet_config.fetch(:item_component, default_component)
329
- end
330
-
331
- # We can't use .deprecation_deprecate here, because the new components need to
332
- # see the originally defined location for these methods in order to properly
333
- # call back into the helpers for backwards compatibility
334
- def deprecated_method(method_name)
335
- Deprecation.warn(Blacklight::FacetsHelperBehavior,
336
- Deprecation.deprecated_method_warning(Blacklight::FacetsHelperBehavior,
337
- method_name, {}),
338
- caller)
21
+ facet_config.item_presenter.new(facet_item, facet_config, self, facet_field)
339
22
  end
340
23
  end
@@ -12,9 +12,10 @@ module Blacklight::IconHelperBehavior
12
12
  def blacklight_icon(icon_name, **kwargs)
13
13
  render "Blacklight::Icons::#{icon_name.to_s.camelize}Component".constantize.new(**kwargs)
14
14
  rescue NameError
15
- Rails.cache.fetch([:blacklight_icons, icon_name, kwargs]) do
16
- icon = Blacklight::Icon.new(icon_name, **kwargs)
17
- tag.span(icon.svg.html_safe, **icon.options)
18
- end
15
+ Blacklight.deprecation.warn(
16
+ "Falling back on the LegacyIconComponent with \"#{icon_name}\" is deprecated. Instead create the component `Blacklight::Icons::#{icon_name.to_s.camelize}Component` for this icon."
17
+ )
18
+
19
+ render Blacklight::Icons::LegacyIconComponent.new(name: icon_name, **kwargs)
19
20
  end
20
21
  end