blacklight 7.37.0 → 8.0.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (400) hide show
  1. checksums.yaml +4 -4
  2. data/.env +2 -3
  3. data/.github/workflows/ruby.yml +33 -133
  4. data/.rubocop.yml +241 -2
  5. data/.rubocop_todo.yml +214 -270
  6. data/Gemfile +7 -10
  7. data/README.md +11 -3
  8. data/VERSION +1 -1
  9. data/app/assets/javascripts/blacklight/blacklight.esm.js +384 -0
  10. data/app/assets/javascripts/blacklight/blacklight.esm.js.map +1 -0
  11. data/app/assets/javascripts/blacklight/blacklight.js +374 -493
  12. data/app/assets/javascripts/blacklight/blacklight.js.map +1 -0
  13. data/app/assets/stylesheets/blacklight/_autocomplete.scss +25 -0
  14. data/app/assets/stylesheets/blacklight/_blacklight_base.scss +1 -1
  15. data/app/assets/stylesheets/blacklight/_bookmark.scss +16 -0
  16. data/app/assets/stylesheets/blacklight/_bootstrap_overrides.scss +8 -0
  17. data/app/assets/stylesheets/blacklight/_facets.scss +72 -44
  18. data/app/assets/stylesheets/blacklight/_header.scss +0 -15
  19. data/app/assets/stylesheets/blacklight/_icons.scss +0 -14
  20. data/app/assets/stylesheets/blacklight/_mixins.scss +20 -0
  21. data/app/assets/stylesheets/blacklight/_modal.scss +8 -2
  22. data/app/assets/stylesheets/blacklight/_search_form.scss +30 -3
  23. data/app/assets/stylesheets/blacklight/_search_history.scss +10 -1
  24. data/app/assets/stylesheets/blacklight/_search_results.scss +6 -2
  25. data/app/assets/stylesheets/blacklight/blacklight_defaults.scss +4 -1
  26. data/app/builders/blacklight/action_builder.rb +18 -9
  27. data/app/components/blacklight/advanced_search_form_component.html.erb +2 -2
  28. data/app/components/blacklight/advanced_search_form_component.rb +8 -10
  29. data/app/components/blacklight/constraints_component.rb +27 -37
  30. data/app/components/blacklight/document/action_component.rb +9 -9
  31. data/app/components/blacklight/document/actions_component.rb +2 -2
  32. data/app/components/blacklight/document/bookmark_component.html.erb +9 -0
  33. data/app/components/blacklight/document/bookmark_component.rb +4 -2
  34. data/app/components/blacklight/document/citation_component.rb +5 -3
  35. data/app/components/blacklight/document/group_component.rb +7 -3
  36. data/app/components/blacklight/document/sidebar_component.html.erb +2 -0
  37. data/app/components/blacklight/document/sidebar_component.rb +16 -0
  38. data/app/components/blacklight/document/thumbnail_component.html.erb +2 -7
  39. data/app/components/blacklight/document/thumbnail_component.rb +1 -9
  40. data/app/components/blacklight/document_component.html.erb +4 -0
  41. data/app/components/blacklight/document_component.rb +14 -53
  42. data/app/components/blacklight/document_metadata_component.html.erb +2 -4
  43. data/app/components/blacklight/document_metadata_component.rb +5 -10
  44. data/app/components/blacklight/document_title_component.rb +4 -1
  45. data/app/components/blacklight/facet_component.rb +1 -1
  46. data/app/components/blacklight/facet_field_checkboxes_component.html.erb +3 -3
  47. data/app/components/blacklight/facet_field_checkboxes_component.rb +1 -1
  48. data/app/components/blacklight/facet_field_component.html.erb +4 -5
  49. data/app/components/blacklight/facet_field_component.rb +9 -2
  50. data/app/components/blacklight/facet_field_list_component.html.erb +3 -3
  51. data/app/components/blacklight/facet_field_list_component.rb +37 -5
  52. data/app/components/blacklight/facet_field_no_layout_component.rb +0 -2
  53. data/app/components/blacklight/facet_item_component.rb +1 -43
  54. data/app/components/blacklight/facet_item_pivot_component.rb +21 -23
  55. data/app/components/blacklight/header_component.rb +1 -1
  56. data/app/components/blacklight/hidden_search_state_component.rb +1 -2
  57. data/app/components/blacklight/icons/legacy_icon_component.rb +30 -0
  58. data/app/components/blacklight/icons/list_component.rb +16 -0
  59. data/app/components/blacklight/icons/search_component.rb +16 -0
  60. data/app/components/blacklight/metadata_field_component.html.erb +2 -2
  61. data/app/components/blacklight/metadata_field_component.rb +24 -8
  62. data/app/components/blacklight/metadata_field_layout_component.rb +4 -25
  63. data/app/components/blacklight/response/facet_group_component.html.erb +3 -5
  64. data/app/components/blacklight/response/facet_group_component.rb +29 -8
  65. data/app/components/blacklight/response/pagination_component.html.erb +1 -1
  66. data/app/components/blacklight/response/pagination_component.rb +1 -5
  67. data/app/components/blacklight/response/sort_component.rb +1 -1
  68. data/app/components/blacklight/response/spellcheck_component.rb +17 -6
  69. data/app/components/blacklight/response/view_type_button_component.rb +2 -6
  70. data/app/components/blacklight/response/view_type_component.rb +3 -5
  71. data/app/components/blacklight/search/sidebar_component.html.erb +8 -0
  72. data/app/components/blacklight/search/sidebar_component.rb +17 -0
  73. data/app/components/blacklight/search_bar_component.html.erb +20 -15
  74. data/app/components/blacklight/search_bar_component.rb +2 -16
  75. data/app/components/blacklight/search_button_component.rb +3 -3
  76. data/app/components/blacklight/search_context_component.rb +43 -9
  77. data/app/components/blacklight/search_header_component.html.erb +2 -0
  78. data/app/components/blacklight/search_header_component.rb +6 -0
  79. data/app/components/blacklight/start_over_button_component.rb +5 -3
  80. data/app/components/blacklight/system/dropdown_component.rb +2 -2
  81. data/app/components/blacklight/system/flash_message_component.html.erb +3 -1
  82. data/app/components/blacklight/system/flash_message_component.rb +11 -2
  83. data/app/components/blacklight/system/modal_component.html.erb +1 -1
  84. data/app/components/blacklight/system/modal_component.rb +0 -2
  85. data/app/components/blacklight/top_navbar_component.html.erb +1 -1
  86. data/app/components/blacklight/top_navbar_component.rb +0 -4
  87. data/app/controllers/bookmarks_controller.rb +1 -0
  88. data/app/controllers/catalog_controller.rb +1 -0
  89. data/app/controllers/concerns/blacklight/bookmarks.rb +10 -9
  90. data/app/controllers/concerns/blacklight/catalog.rb +21 -83
  91. data/app/controllers/concerns/blacklight/controller.rb +3 -41
  92. data/app/controllers/concerns/blacklight/search_context.rb +25 -7
  93. data/app/controllers/concerns/blacklight/search_history.rb +2 -0
  94. data/app/controllers/concerns/blacklight/searchable.rb +12 -1
  95. data/app/controllers/concerns/blacklight/token_based_user.rb +13 -1
  96. data/app/controllers/search_history_controller.rb +1 -0
  97. data/app/helpers/blacklight/blacklight_helper_behavior.rb +12 -310
  98. data/app/helpers/blacklight/catalog_helper_behavior.rb +22 -137
  99. data/app/helpers/blacklight/component_helper_behavior.rb +2 -53
  100. data/app/helpers/blacklight/configuration_helper_behavior.rb +2 -117
  101. data/app/helpers/blacklight/facets_helper_behavior.rb +4 -321
  102. data/app/helpers/blacklight/icon_helper_behavior.rb +5 -4
  103. data/app/helpers/blacklight/layout_helper_behavior.rb +1 -0
  104. data/app/helpers/blacklight/render_partials_helper_behavior.rb +11 -31
  105. data/app/helpers/blacklight/url_helper_behavior.rb +13 -97
  106. data/app/helpers/blacklight_helper.rb +1 -0
  107. data/app/helpers/catalog_helper.rb +1 -0
  108. data/app/javascript/blacklight/bookmark_toggle.js +13 -19
  109. data/app/javascript/blacklight/button_focus.js +12 -10
  110. data/app/javascript/blacklight/checkbox_submit.js +68 -123
  111. data/app/javascript/blacklight/core.js +5 -7
  112. data/app/javascript/blacklight/index.js +13 -0
  113. data/app/javascript/blacklight/modal.js +99 -164
  114. data/app/javascript/blacklight/modalForm.js +60 -0
  115. data/app/javascript/blacklight/search_context.js +46 -54
  116. data/app/models/blacklight/facet_paginator.rb +3 -2
  117. data/app/models/blacklight/icon.rb +4 -2
  118. data/app/models/bookmark.rb +0 -2
  119. data/app/models/concerns/blacklight/configurable.rb +5 -4
  120. data/app/models/concerns/blacklight/document/active_model_shim.rb +1 -10
  121. data/app/models/concerns/blacklight/document/cache_key.rb +1 -0
  122. data/app/models/concerns/blacklight/document/dublin_core.rb +2 -1
  123. data/app/models/concerns/blacklight/document/email.rb +1 -0
  124. data/app/models/concerns/blacklight/document/export.rb +2 -1
  125. data/app/models/concerns/blacklight/document/extensions.rb +1 -0
  126. data/app/models/concerns/blacklight/document/schema_org.rb +1 -0
  127. data/app/models/concerns/blacklight/document/semantic_fields.rb +1 -0
  128. data/app/models/concerns/blacklight/document/sms.rb +1 -0
  129. data/app/models/concerns/blacklight/suggest/response.rb +1 -0
  130. data/app/models/concerns/blacklight/user.rb +17 -8
  131. data/app/models/record_mailer.rb +13 -12
  132. data/app/models/search.rb +1 -7
  133. data/app/models/solr_document.rb +1 -0
  134. data/app/presenters/blacklight/clause_presenter.rb +1 -1
  135. data/app/presenters/blacklight/document_presenter.rb +13 -21
  136. data/app/presenters/blacklight/facet_field_presenter.rb +39 -14
  137. data/app/presenters/blacklight/facet_grouped_item_presenter.rb +1 -5
  138. data/app/presenters/blacklight/facet_item_pivot_presenter.rb +60 -0
  139. data/app/presenters/blacklight/facet_item_presenter.rb +3 -9
  140. data/app/presenters/blacklight/field_presenter.rb +1 -0
  141. data/app/presenters/blacklight/index_presenter.rb +2 -40
  142. data/app/presenters/blacklight/json_presenter.rb +7 -5
  143. data/app/presenters/blacklight/rendering/link_to_facet.rb +2 -5
  144. data/app/presenters/blacklight/show_presenter.rb +1 -9
  145. data/app/presenters/blacklight/thumbnail_presenter.rb +1 -1
  146. data/app/services/blacklight/bookmarks_search_builder.rb +22 -0
  147. data/app/services/blacklight/field_retriever.rb +12 -21
  148. data/app/services/blacklight/search_service.rb +8 -7
  149. data/app/values/blacklight/types.rb +0 -18
  150. data/app/views/bookmarks/_clear_bookmarks_widget.html.erb +8 -1
  151. data/app/views/bookmarks/_tools.html.erb +7 -12
  152. data/app/views/catalog/_advanced_search_form.html.erb +0 -1
  153. data/app/views/catalog/_bookmark_control.html.erb +1 -1
  154. data/app/views/catalog/_citation.html.erb +1 -1
  155. data/app/views/catalog/_constraints.html.erb +1 -14
  156. data/app/views/catalog/_document.atom.builder +12 -14
  157. data/app/views/catalog/_document.html.erb +5 -3
  158. data/app/views/catalog/_document.rss.builder +2 -4
  159. data/app/views/catalog/_facet_layout.html.erb +2 -2
  160. data/app/views/catalog/_facets.html.erb +5 -4
  161. data/app/views/catalog/_home_text.html.erb +2 -14
  162. data/app/views/catalog/_search_form.html.erb +2 -2
  163. data/app/views/catalog/_search_header.html.erb +1 -2
  164. data/app/views/catalog/_search_results.html.erb +2 -2
  165. data/app/views/catalog/_search_sidebar.html.erb +5 -1
  166. data/app/views/catalog/_show_main_content.html.erb +11 -16
  167. data/app/views/catalog/_show_sidebar.html.erb +2 -2
  168. data/app/views/catalog/_show_tools.html.erb +8 -14
  169. data/app/views/catalog/_view_type_group.html.erb +1 -1
  170. data/app/views/catalog/email.html.erb +2 -2
  171. data/app/views/catalog/email_success.html.erb +5 -6
  172. data/app/views/catalog/facet.html.erb +7 -5
  173. data/app/views/catalog/index.atom.builder +12 -14
  174. data/app/views/catalog/index.html.erb +4 -1
  175. data/app/views/catalog/index.json.jbuilder +19 -19
  176. data/app/views/catalog/index.rss.builder +1 -1
  177. data/app/views/catalog/opensearch.xml.builder +1 -1
  178. data/app/views/catalog/sms.html.erb +2 -2
  179. data/app/views/catalog/sms_success.html.erb +5 -6
  180. data/app/views/catalog/suggest.html.erb +3 -0
  181. data/app/views/layouts/blacklight/base.html.erb +13 -2
  182. data/app/views/search_history/index.html.erb +6 -2
  183. data/app/views/shared/_modal.html.erb +3 -3
  184. data/blacklight.gemspec +8 -9
  185. data/config/importmap.rb +3 -0
  186. data/config/locales/blacklight.ar.yml +0 -1
  187. data/config/locales/blacklight.ca.yml +0 -1
  188. data/config/locales/blacklight.de.yml +0 -1
  189. data/config/locales/blacklight.en.yml +0 -2
  190. data/config/locales/blacklight.es.yml +0 -1
  191. data/config/locales/blacklight.fr.yml +0 -1
  192. data/config/locales/blacklight.hu.yml +0 -1
  193. data/config/locales/blacklight.it.yml +0 -1
  194. data/config/locales/blacklight.nl.yml +0 -1
  195. data/config/locales/blacklight.pt-BR.yml +0 -1
  196. data/config/locales/blacklight.sq.yml +0 -1
  197. data/config/locales/blacklight.zh.yml +0 -1
  198. data/config/routes.rb +3 -2
  199. data/db/migrate/20140202020201_create_searches.rb +1 -0
  200. data/db/migrate/20140202020202_create_bookmarks.rb +1 -0
  201. data/db/migrate/20140320000000_add_polymorphic_type_to_bookmarks.rb +1 -0
  202. data/docker-compose.yml +0 -1
  203. data/lib/blacklight/abstract_repository.rb +1 -0
  204. data/lib/blacklight/configuration/context.rb +4 -4
  205. data/lib/blacklight/configuration/display_field.rb +7 -9
  206. data/lib/blacklight/configuration/facet_field.rb +17 -11
  207. data/lib/blacklight/configuration/field.rb +1 -0
  208. data/lib/blacklight/configuration/fields.rb +12 -15
  209. data/lib/blacklight/configuration/index_field.rb +1 -0
  210. data/lib/blacklight/configuration/null_display_field.rb +17 -0
  211. data/lib/blacklight/configuration/search_field.rb +1 -0
  212. data/lib/blacklight/configuration/show_field.rb +1 -0
  213. data/lib/blacklight/configuration/sort_field.rb +1 -0
  214. data/lib/blacklight/configuration/tool_config.rb +1 -0
  215. data/lib/blacklight/configuration/view_config.rb +16 -6
  216. data/lib/blacklight/configuration.rb +294 -358
  217. data/lib/blacklight/engine.rb +8 -24
  218. data/lib/blacklight/exceptions.rb +2 -2
  219. data/lib/blacklight/nested_open_struct_with_hash_access.rb +6 -12
  220. data/lib/blacklight/open_struct_with_hash_access.rb +19 -17
  221. data/lib/blacklight/parameters.rb +7 -21
  222. data/lib/blacklight/routes/exportable.rb +1 -0
  223. data/lib/blacklight/routes/searchable.rb +2 -1
  224. data/lib/blacklight/routes.rb +1 -0
  225. data/lib/blacklight/search_builder.rb +10 -10
  226. data/lib/blacklight/search_state/filter_field.rb +8 -25
  227. data/lib/blacklight/search_state/pivot_filter_field.rb +144 -0
  228. data/lib/blacklight/search_state.rb +23 -79
  229. data/lib/blacklight/solr/document.rb +1 -0
  230. data/lib/blacklight/solr/facet_paginator.rb +1 -0
  231. data/lib/blacklight/solr/repository.rb +3 -14
  232. data/lib/blacklight/solr/request.rb +1 -0
  233. data/lib/blacklight/solr/response/facets.rb +21 -5
  234. data/lib/blacklight/solr/response/group.rb +1 -0
  235. data/lib/blacklight/solr/response/group_response.rb +1 -0
  236. data/lib/blacklight/solr/response/more_like_this.rb +1 -0
  237. data/lib/blacklight/solr/response/pagination_methods.rb +4 -3
  238. data/lib/blacklight/solr/response/params.rb +5 -4
  239. data/lib/blacklight/solr/response/response.rb +1 -0
  240. data/lib/blacklight/solr/response/spelling.rb +1 -0
  241. data/lib/blacklight/solr/response.rb +4 -3
  242. data/lib/blacklight/solr/search_builder_behavior.rb +17 -34
  243. data/lib/blacklight/solr.rb +1 -0
  244. data/lib/blacklight/version.rb +1 -0
  245. data/lib/blacklight.rb +7 -10
  246. data/lib/generators/blacklight/assets/importmap_generator.rb +55 -0
  247. data/lib/generators/blacklight/assets/propshaft_generator.rb +25 -0
  248. data/lib/generators/blacklight/assets/sprockets_generator.rb +66 -0
  249. data/lib/generators/blacklight/assets_generator.rb +13 -89
  250. data/lib/generators/blacklight/controller_generator.rb +3 -2
  251. data/lib/generators/blacklight/document_generator.rb +1 -0
  252. data/lib/generators/blacklight/install_generator.rb +4 -3
  253. data/lib/generators/blacklight/models_generator.rb +1 -0
  254. data/lib/generators/blacklight/search_builder_generator.rb +1 -0
  255. data/lib/generators/blacklight/solr_generator.rb +1 -1
  256. data/lib/generators/blacklight/templates/catalog_controller.rb +34 -8
  257. data/lib/generators/blacklight/templates/solr/conf/solrconfig.xml +0 -69
  258. data/lib/generators/blacklight/test_support_generator.rb +4 -2
  259. data/lib/generators/blacklight/user_generator.rb +7 -9
  260. data/lib/railties/blacklight.rake +6 -7
  261. data/package.json +10 -13
  262. data/rollup.config.js +27 -0
  263. data/spec/components/blacklight/constraints_component_spec.rb +17 -13
  264. data/spec/components/blacklight/document_component_spec.rb +23 -82
  265. data/spec/components/blacklight/facet_component_spec.rb +3 -18
  266. data/spec/components/blacklight/facet_field_checkboxes_component_spec.rb +1 -2
  267. data/spec/components/blacklight/facet_field_list_component_spec.rb +7 -6
  268. data/spec/components/blacklight/facet_item_pivot_component_spec.rb +10 -9
  269. data/spec/components/blacklight/response/view_type_component_spec.rb +66 -0
  270. data/spec/components/blacklight/search_bar_component_spec.rb +1 -1
  271. data/spec/components/blacklight/search_context_component_spec.rb +40 -0
  272. data/spec/controllers/blacklight/catalog/component_configuration_spec.rb +1 -6
  273. data/spec/controllers/blacklight/{base_spec.rb → catalog_spec.rb} +2 -2
  274. data/spec/controllers/bookmarks_controller_spec.rb +2 -3
  275. data/spec/controllers/catalog_controller_spec.rb +13 -135
  276. data/spec/features/advanced_search_spec.rb +0 -56
  277. data/spec/features/autocomplete_spec.rb +1 -1
  278. data/spec/features/axe_spec.rb +1 -6
  279. data/spec/features/bookmarks_spec.rb +1 -1
  280. data/spec/features/facets_spec.rb +1 -1
  281. data/spec/features/search_context_spec.rb +4 -10
  282. data/spec/features/search_results_spec.rb +0 -33
  283. data/spec/features/sitelinks_search_box.rb +13 -0
  284. data/spec/helpers/blacklight/configuration_helper_behavior_spec.rb +2 -138
  285. data/spec/helpers/blacklight/facets_helper_behavior_spec.rb +0 -387
  286. data/spec/helpers/blacklight/icon_helper_behavior_spec.rb +8 -0
  287. data/spec/helpers/blacklight/render_partials_helper_behavior_spec.rb +5 -7
  288. data/spec/helpers/blacklight/url_helper_behavior_spec.rb +9 -131
  289. data/spec/helpers/blacklight_helper_spec.rb +8 -252
  290. data/spec/helpers/catalog_helper_spec.rb +7 -118
  291. data/spec/i18n_spec.rb +1 -0
  292. data/spec/integration/generators/blacklight/solr_generator_spec.rb +1 -1
  293. data/spec/lib/blacklight/configuration/facet_field_spec.rb +27 -16
  294. data/spec/lib/blacklight/configuration/field_spec.rb +1 -1
  295. data/spec/lib/blacklight/configuration/view_config_spec.rb +1 -1
  296. data/spec/lib/blacklight/open_struct_with_hash_access_spec.rb +2 -2
  297. data/spec/lib/blacklight/parameters_spec.rb +1 -4
  298. data/spec/lib/blacklight/search_state/filter_field_spec.rb +4 -4
  299. data/spec/lib/blacklight/search_state/pivot_filter_field_spec.rb +117 -0
  300. data/spec/lib/blacklight/search_state_spec.rb +80 -198
  301. data/spec/lib/tasks/blacklight_task_spec.rb +1 -0
  302. data/spec/models/blacklight/configuration_spec.rb +17 -51
  303. data/spec/models/blacklight/document/active_model_shim_spec.rb +2 -2
  304. data/spec/models/blacklight/icon_spec.rb +31 -15
  305. data/spec/models/blacklight/search_builder_spec.rb +9 -9
  306. data/spec/models/blacklight/solr/document_spec.rb +3 -3
  307. data/spec/models/blacklight/solr/repository_spec.rb +0 -27
  308. data/spec/models/blacklight/solr/response/facets_spec.rb +27 -27
  309. data/spec/models/blacklight/solr/response/group_response_spec.rb +1 -0
  310. data/spec/models/blacklight/solr/response/group_spec.rb +1 -0
  311. data/spec/models/blacklight/solr/response_spec.rb +9 -2
  312. data/spec/models/blacklight/solr/search_builder_spec.rb +24 -31
  313. data/spec/models/blacklight/user_spec.rb +22 -0
  314. data/spec/models/solr_document_spec.rb +2 -6
  315. data/spec/presenters/blacklight/clause_presenter_spec.rb +1 -0
  316. data/spec/presenters/blacklight/document_presenter_spec.rb +2 -2
  317. data/spec/presenters/blacklight/facet_field_presenter_spec.rb +85 -12
  318. data/spec/presenters/blacklight/facet_grouped_item_presenter_spec.rb +1 -0
  319. data/spec/presenters/blacklight/facet_item_presenter_spec.rb +14 -13
  320. data/spec/presenters/blacklight/field_presenter_spec.rb +0 -14
  321. data/spec/presenters/blacklight/index_presenter_spec.rb +2 -4
  322. data/spec/presenters/blacklight/json_presenter_spec.rb +1 -0
  323. data/spec/presenters/blacklight/link_alternate_presenter_spec.rb +3 -2
  324. data/spec/presenters/blacklight/show_presenter_spec.rb +20 -29
  325. data/spec/presenters/thumbnail_presenter_spec.rb +1 -1
  326. data/spec/requests/load_suggestions_spec.rb +16 -0
  327. data/spec/routing/catalog_routing_spec.rb +2 -1
  328. data/spec/services/blacklight/search_service_spec.rb +31 -68
  329. data/spec/spec_helper.rb +6 -32
  330. data/spec/support/controller_level_helpers.rb +1 -2
  331. data/spec/support/features/search_helpers.rb +39 -0
  332. data/spec/support/features/session_helpers.rb +1 -0
  333. data/spec/support/features.rb +3 -0
  334. data/spec/support/view_component_capybara_test_helpers.rb +8 -0
  335. data/spec/test_app_templates/lib/generators/test_app_generator.rb +9 -2
  336. data/spec/views/catalog/_document.html.erb_spec.rb +3 -34
  337. data/spec/views/catalog/_facet_index_navigation.html.erb_spec.rb +1 -1
  338. data/spec/views/catalog/_search_header.erb_spec.rb +1 -0
  339. data/spec/views/catalog/_show_sidebar.erb_spec.rb +1 -0
  340. data/spec/views/catalog/_show_tools.html.erb_spec.rb +5 -66
  341. data/spec/views/catalog/_view_type_group.html.erb_spec.rb +17 -9
  342. data/spec/views/catalog/email_success.html.erb_spec.rb +2 -2
  343. data/spec/views/catalog/facet.html.erb_spec.rb +6 -3
  344. data/spec/views/catalog/index.atom.builder_spec.rb +18 -11
  345. data/spec/views/catalog/index.html.erb_spec.rb +5 -6
  346. data/spec/views/catalog/index.json.jbuilder_spec.rb +2 -2
  347. data/spec/views/catalog/show.html.erb_spec.rb +3 -25
  348. data/spec/views/catalog/sms_success.html.erb_spec.rb +2 -2
  349. data/tasks/blacklight.rake +6 -4
  350. metadata +81 -134
  351. data/.babelrc +0 -11
  352. data/app/assets/images/blacklight/list.svg +0 -1
  353. data/app/assets/images/blacklight/search.svg +0 -1
  354. data/app/assets/stylesheets/blacklight/_twitter_typeahead.scss +0 -37
  355. data/app/components/blacklight/content_areas_shim.rb +0 -13
  356. data/app/controllers/concerns/blacklight/base.rb +0 -12
  357. data/app/controllers/concerns/blacklight/default_component_configuration.rb +0 -64
  358. data/app/controllers/concerns/blacklight/facet.rb +0 -69
  359. data/app/controllers/concerns/blacklight/search_fields.rb +0 -46
  360. data/app/helpers/blacklight/hash_as_hidden_fields_helper_behavior.rb +0 -27
  361. data/app/helpers/blacklight/render_constraints_helper_behavior.rb +0 -188
  362. data/app/helpers/blacklight/search_history_constraints_helper_behavior.rb +0 -97
  363. data/app/helpers/blacklight/suggest_helper_behavior.rb +0 -13
  364. data/app/javascript/blacklight/autocomplete.js +0 -36
  365. data/app/javascript/blacklight/facet_load.js +0 -22
  366. data/app/presenters/blacklight/search_bar_presenter.rb +0 -47
  367. data/app/views/catalog/_constraints_element.html.erb +0 -14
  368. data/app/views/catalog/_document_action.html.erb +0 -5
  369. data/app/views/catalog/_facet_group.html.erb +0 -5
  370. data/app/views/catalog/_facet_limit.html.erb +0 -3
  371. data/app/views/catalog/_index.html.erb +0 -1
  372. data/app/views/catalog/_index_header.html.erb +0 -22
  373. data/app/views/catalog/_previous_next_doc.html.erb +0 -2
  374. data/app/views/catalog/_show.html.erb +0 -6
  375. data/app/views/catalog/_show_header.html.erb +0 -2
  376. data/app/views/catalog/_thumbnail.html.erb +0 -1
  377. data/lib/blacklight/deprecations/engine_configuration.rb +0 -66
  378. data/lib/blacklight/deprecations/search_state_normalization.rb +0 -52
  379. data/spec/components/blacklight/header_component_spec.rb +0 -20
  380. data/spec/controllers/blacklight/facet_spec.rb +0 -33
  381. data/spec/controllers/blacklight/search_fields_spec.rb +0 -62
  382. data/spec/features/citation_spec.rb +0 -10
  383. data/spec/features/sitelinks_search_box_spec.rb +0 -13
  384. data/spec/features/sms_spec.rb +0 -12
  385. data/spec/helpers/blacklight/hash_as_hidden_fields_behavior_spec.rb +0 -26
  386. data/spec/helpers/blacklight/render_constraints_helper_behavior_spec.rb +0 -92
  387. data/spec/helpers/blacklight/search_history_constraints_helper_behavior_spec.rb +0 -101
  388. data/spec/helpers/blacklight/suggest_helper_behavior_spec.rb +0 -48
  389. data/spec/lib/blacklight/engine_spec.rb +0 -41
  390. data/spec/presenters/blacklight/search_bar_presenter_spec.rb +0 -94
  391. data/spec/services/blacklight/field_retriever_spec.rb +0 -17
  392. data/spec/support/view_component_test_helpers.rb +0 -35
  393. data/spec/views/catalog/_constraints.html.erb_spec.rb +0 -33
  394. data/spec/views/catalog/_facet_group.html.erb_spec.rb +0 -84
  395. data/spec/views/catalog/_facets.html.erb_spec.rb +0 -15
  396. data/spec/views/catalog/_index.html.erb_spec.rb +0 -62
  397. data/spec/views/catalog/_index_header.html.erb_spec.rb +0 -35
  398. data/spec/views/catalog/_previous_next_doc.html.erb_spec.rb +0 -22
  399. data/spec/views/catalog/_show.html.erb_spec.rb +0 -62
  400. data/spec/views/catalog/_thumbnail.html.erb_spec.rb +0 -38
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0V0z"/><path d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"/></svg>
@@ -1,37 +0,0 @@
1
- .twitter-typeahead {
2
- display: inline-flex !important;
3
- flex-grow: 2;
4
- z-index: $zindex-typeahead;
5
-
6
- input.tt-input.form-control {
7
- width: 100%;
8
- }
9
-
10
- input.tt-hint.form-control {
11
- width: 100%;
12
- filter: opacity(0.33);
13
- }
14
-
15
- .tt-menu {
16
- @extend .dropdown-menu;
17
- font-family: $font-family-base;
18
- width: 100%;
19
- }
20
-
21
- .tt-cursor {
22
- background-color: $dropdown-link-hover-bg;
23
- color: $dropdown-link-hover-color;
24
- text-decoration: none;
25
- }
26
-
27
- .tt-suggestion {
28
- font-size: 14px;
29
- padding: 5px 5px 5px 10px;
30
- }
31
-
32
- .tt-suggestion:hover {
33
- background-color: $dropdown-link-hover-bg;
34
- color: $dropdown-link-hover-color;
35
- cursor: pointer;
36
- }
37
- }
@@ -1,13 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Blacklight
4
- # Shim to support ViewComponent v2 slots using the content_areas API for backwards compatibility
5
- module ContentAreasShim
6
- # Shim the `with` helper to write content into slots instead
7
- def with(slot_name, *args, **kwargs, &block)
8
- Deprecation.warn(Blacklight::ContentAreasShim,
9
- 'ViewComponents deprecated `with` and it will be removed in ViewComponents 3.0. content_areas. Use slots (https://viewcomponent.org/guide/slots.html) instead.')
10
- public_send("with_#{slot_name}", *args, **kwargs, &block)
11
- end
12
- end
13
- end
@@ -1,12 +0,0 @@
1
- # frozen_string_literal: true
2
- module Blacklight::Base
3
- extend ActiveSupport::Concern
4
-
5
- include Blacklight::Configurable
6
- include Blacklight::SearchContext
7
-
8
- def self.included(mod)
9
- Deprecation.warn(Blacklight::Base, "Blacklight::Base is deprecated and will be removed in Blacklight 8.0.0.
10
- Include Blacklight::Configurable and Blacklight::SearchContext as needed (included in #{mod}).")
11
- end
12
- end
@@ -1,64 +0,0 @@
1
- # frozen_string_literal: true
2
- module Blacklight
3
- module DefaultComponentConfiguration
4
- extend ActiveSupport::Concern
5
-
6
- included do
7
- Deprecation.warn(self, "Blacklight::DefaultComponentConfiguration is deprecated and will be removed in the next release." \
8
- "this means you must call add_results_document_tool, add_results_collection_tool, " \
9
- "add_show_tools_partial and add_nav_action manually in your config")
10
- add_results_document_tool(:bookmark, partial: 'bookmark_control', if: :render_bookmarks_control?)
11
-
12
- add_results_collection_tool(:sort_widget)
13
- add_results_collection_tool(:per_page_widget)
14
- add_results_collection_tool(:view_type_group)
15
-
16
- add_show_tools_partial(:bookmark, partial: 'bookmark_control', if: :render_bookmarks_control?)
17
- add_show_tools_partial(:email, callback: :email_action, validator: :validate_email_params)
18
- add_show_tools_partial(:sms, if: :render_sms_action?, callback: :sms_action, validator: :validate_sms_params)
19
- add_show_tools_partial(:citation)
20
-
21
- add_nav_action(:bookmark, partial: 'blacklight/nav/bookmark', if: :render_bookmarks_control?)
22
- add_nav_action(:search_history, partial: 'blacklight/nav/search_history')
23
- end
24
-
25
- module ClassMethods
26
- # YARD will include inline disabling as docs, cannot do multiline inside @!macro. AND this must be separate from doc block.
27
- # rubocop:disable Layout/LineLength
28
-
29
- # @!macro partial_if_unless
30
- # @param name [String] the name of the document partial
31
- # @param opts [Hash]
32
- # @option opts [Symbol,Proc] :if render this action if the method identified by the symbol or the proc evaluates to true. The proc will receive the action configuration and the document or documents for the action.
33
- # @option opts [Symbol,Proc] :unless render this action unless the method identified by the symbol or the proc evaluates to true. The proc will receive the action configuration and the document or documents for the action.
34
-
35
- # Add a partial to the tools for rendering a document
36
- # @!macro partial_if_unless
37
- # @option opts [Boolean] :define_method define a controller method as named, default: true
38
- # @option opts [Symbol] :validator method for toggling between success and failure, should return Boolean (true if valid)
39
- # @option opts [Symbol] :callback method for further processing of documents, receives Array of documents
40
- def add_show_tools_partial(name, opts = {})
41
- blacklight_config.add_show_tools_partial(name, opts)
42
- ActionBuilder.new(self, name, opts).build
43
- end
44
- # rubocop:enable Layout/LineLength
45
-
46
- deprecation_deprecate add_show_tools_partial: 'use blacklight_config.add_show_tools_partial instead'
47
-
48
- # Add a tool to be displayed for each document in the search results.
49
- # @!macro partial_if_unless
50
- delegate :add_results_document_tool, to: :blacklight_config
51
- deprecation_deprecate add_results_document_tool: 'use blacklight_config.add_results_document_tool instead'
52
-
53
- # Add a tool to be displayed for the list of search results themselves.
54
- # @!macro partial_if_unless
55
- delegate :add_results_collection_tool, to: :blacklight_config
56
- deprecation_deprecate add_results_collection_tool: 'use blacklight_config.add_results_collection_tool instead'
57
-
58
- # Add a partial to the header navbar.
59
- # @!macro partial_if_unless
60
- delegate :add_nav_action, to: :blacklight_config
61
- deprecation_deprecate add_nav_action: 'use blacklight_config.add_nav_action instead'
62
- end
63
- end
64
- end
@@ -1,69 +0,0 @@
1
- # frozen_string_literal: true
2
- module Blacklight
3
- # These are methods that are used at both the view helper and controller layers
4
- # They are only dependent on `blacklight_config` and `@response`
5
- #
6
- module Facet
7
- extend Deprecation
8
- delegate :facet_configuration_for_field, :facet_field_names, to: :blacklight_config
9
-
10
- # @deprecated
11
- # @param [Blacklight::Configuration::Facet] field_config
12
- # @param [Object] response_data
13
- # @return [Blacklight::FacetPaginator]
14
- def facet_paginator(field_config, response_data)
15
- blacklight_config.facet_paginator_class.new(
16
- response_data.items,
17
- sort: response_data.sort,
18
- offset: response_data.offset,
19
- prefix: response_data.prefix,
20
- limit: Deprecation.silence(Blacklight::Catalog) { facet_limit_for(field_config.key) }
21
- )
22
- end
23
- deprecation_deprecate facet_paginator: 'Use Blacklight::FacetFieldPresenter#paginator instead'
24
-
25
- # @param fields [Array<String>] a list of facet field names
26
- # @return [Array<Solr::Response::Facets::FacetField>]
27
- # @deprecated
28
- def facets_from_request(fields = facet_field_names, response = nil)
29
- unless response
30
- Deprecation.warn(self, 'Calling facets_from_request without passing the ' \
31
- 'second argument (response) is deprecated and will be removed in Blacklight ' \
32
- '8.0.0')
33
- response = @response
34
- end
35
-
36
- Deprecation.silence(Blacklight::Facet) do
37
- fields.map { |field| facet_by_field_name(field, response) }.compact
38
- end
39
- end
40
- deprecation_deprecate facets_from_request: 'Removed without replacement'
41
-
42
- delegate :facet_group_names, to: :blacklight_config
43
- deprecation_deprecate facet_group_names: 'Use blacklight_config.facet_group_names instead'
44
-
45
- # Get a FacetField object from the @response
46
- # @deprecated
47
- # @private
48
- # @return [Blacklight::Solr::Response::Facets::FacetField]
49
- def facet_by_field_name(field_or_field_name, response = nil)
50
- unless response
51
- Deprecation.warn(self, 'Calling facet_by_field_name without passing the ' \
52
- 'second argument (response) is deprecated and will be removed in Blacklight ' \
53
- '8.0.0')
54
- response = @response
55
- end
56
- case field_or_field_name
57
- when String, Symbol
58
- facet_field = facet_configuration_for_field(field_or_field_name)
59
- response.aggregations[facet_field.field]
60
- when Blacklight::Configuration::FacetField
61
- response.aggregations[field_or_field_name.field]
62
- else
63
- # is this really a useful case?
64
- field_or_field_name
65
- end
66
- end
67
- deprecation_deprecate facet_by_field_name: 'Removed without replacement'
68
- end
69
- end
@@ -1,46 +0,0 @@
1
- # frozen_string_literal: true
2
- ##
3
- # Module to deal with accessing (and setting some defaults) in an array of
4
- # hashes that describe Blacklight search fields. Requires the base class this
5
- # module is added to implements a #blacklight_config method that returns a hash, where
6
- # blacklight_config[:search_fields] will be an array of hashes describing search fields.
7
- #
8
- # = Search Field blacklight_configuration Hash =
9
- # [:key]
10
- # "title", required, unique key used in search URLs to specify search_field
11
- # [:label]
12
- # "Title", # user-displayable label, optional, if not supplied :key.titlecase will be used
13
- # [:qt]
14
- # "search", # Solr qt param, request handler, usually can be left blank; defaults to nil if not explicitly specified
15
- # [:solr_parameters]
16
- # { :qf => "something" } # optional hash of additional parameters to pass to solr for searches on this field.
17
- # [:solr_local_parameters]
18
- # { :qf => "$something" } # optional hash of additional parameters that will be passed using Solr LocalParams syntax, that can use dollar sign to reference other solr variables.
19
- # [:include_in_simple_select]
20
- # false. Defaults to true, but you can set to false to have a search field defined for deep-links or BL extensions, but not actually included in the HTML select for simple search choice.
21
- #
22
- # Optionally you can supply a :key, which is what Blacklight will use
23
- # to identify this search field in HTTP query params. If no :key is
24
- # supplied, one will be computed from the :label. If that will
25
- # result in a collision of keys, you should supply one explicitly.
26
- #
27
- ##
28
- module Blacklight::SearchFields
29
- extend Deprecation
30
-
31
- # Looks up search field config list from blacklight_config[:search_fields], and
32
- # 'normalizes' all field config hashes using normalize_config method.
33
- # @deprecated
34
- def search_field_list
35
- blacklight_config.search_fields.values
36
- end
37
- deprecation_deprecate search_field_list: 'Use blacklight_config.search_fields instead'
38
-
39
- # Returns default search field, used for simpler display in history, etc.
40
- # if not set in blacklight_config, defaults to first field listed in #search_field_list
41
- # @deprecated
42
- def default_search_field
43
- blacklight_config.default_search_field || (Deprecation.silence(Blacklight::SearchFields) { search_field_list.first })
44
- end
45
- deprecation_deprecate default_search_field: 'Use Blacklight::Configuration#default_search_field'
46
- end
@@ -1,27 +0,0 @@
1
- # frozen_string_literal: true
2
- # Rails Helper methods to take a hash and turn it to form <input type="hidden">
3
- # fields, works with hash nested with other hashes and arrays, standard rails
4
- # serialization style. Oddly while Hash#to_query will do this for a URL
5
- # query parameters, there seems to be no built in way to do it to create
6
- # hidden form fields instead.
7
- #
8
- # Code taken from http://marklunds.com/articles/one/314
9
- #
10
- # This is used to serialize a complete current query from current params
11
- # to form fields used for sort and change per-page
12
- module Blacklight::HashAsHiddenFieldsHelperBehavior
13
- extend Deprecation
14
-
15
- ##
16
- # Writes out zero or more <input type="hidden"> elements, completely
17
- # representing a hash passed in using Rails-style request parameters
18
- # for hashes nested with arrays and other hashes.
19
- #
20
- # @deprecated
21
- # @param [Hash] hash
22
- # @return [String]
23
- def render_hash_as_hidden_fields(hash)
24
- render Blacklight::HiddenSearchStateComponent.new(params: hash)
25
- end
26
- deprecation_deprecate render_hash_as_hidden_fields: 'Use Blacklight::HiddenSearchStateComponent instead'
27
- end
@@ -1,188 +0,0 @@
1
- # frozen_string_literal: true
2
- # All methods in here are 'api' that may be over-ridden by plugins and local
3
- # code, so method signatures and semantics should not be changed casually.
4
- # implementations can be of course.
5
- #
6
- # Includes methods for rendering contraints graphically on the
7
- # search results page (render_constraints(_*))
8
- module Blacklight::RenderConstraintsHelperBehavior
9
- extend Deprecation
10
- self.deprecation_horizon = 'blacklight 8.0'
11
-
12
- ##
13
- # Check if the query has any constraints defined (a query, facet, etc)
14
- #
15
- # @deprecated
16
- # @param [Blacklight::SearchState,Hash] params_or_search_state query parameters
17
- # @return [Boolean]
18
- def query_has_constraints?(params_or_search_state = search_state)
19
- search_state = convert_to_search_state(params_or_search_state)
20
- search_state.has_constraints?
21
- end
22
- deprecation_deprecate query_has_constraints?: 'use search_state#has_constraints?'
23
-
24
- ##
25
- # Render the actual constraints, not including header or footer
26
- # info.
27
- #
28
- # @param [Hash] localized_params query parameters
29
- # @return [String]
30
- def render_constraints(localized_params = params, local_search_state = search_state)
31
- params_or_search_state = if localized_params != params
32
- localized_params
33
- else
34
- local_search_state
35
- end
36
-
37
- Deprecation.silence(Blacklight::RenderConstraintsHelperBehavior) do
38
- render_constraints_query(params_or_search_state) + render_constraints_clauses(params_or_search_state) + render_constraints_filters(params_or_search_state)
39
- end
40
- end
41
-
42
- ##
43
- # Render the query constraints
44
- #
45
- # @deprecated
46
- # @param [Blacklight::SearchState,ActionController::Parameters] params_or_search_state query parameters
47
- # @return [String]
48
- def render_constraints_query(params_or_search_state = search_state)
49
- Deprecation.warn(Blacklight::RenderConstraintsHelperBehavior, 'render_constraints_query is deprecated')
50
- search_state = convert_to_search_state(params_or_search_state)
51
-
52
- # So simple don't need a view template, we can just do it here.
53
- return "".html_safe if search_state.query_param.blank?
54
-
55
- Deprecation.silence(Blacklight::RenderConstraintsHelperBehavior) do
56
- render_constraint_element(constraint_query_label(search_state.params),
57
- search_state.query_param,
58
- classes: ["query"],
59
- remove: remove_constraint_url(search_state))
60
- end
61
- end
62
-
63
- ##
64
- # Render the query constraints
65
- #
66
- # @deprecated
67
- # @param [Blacklight::SearchState,ActionController::Parameters] params_or_search_state query parameters
68
- # @return [String]
69
- def render_constraints_clauses(params_or_search_state = search_state)
70
- search_state = convert_to_search_state(params_or_search_state)
71
-
72
- clause_presenters = search_state.clause_params.map do |key, clause|
73
- field_config = blacklight_config.search_fields[clause[:field]]
74
- Blacklight::ClausePresenter.new(key, clause, field_config, self, search_state)
75
- end
76
-
77
- render(Blacklight::ConstraintComponent.with_collection(clause_presenters))
78
- end
79
- deprecation_deprecate :render_constraints_clauses
80
-
81
- ##
82
- # Provide a url for removing a particular constraint. This can be overriden
83
- # in the case that you want parameters other than the defaults to be removed
84
- # (e.g. :search_field)
85
- #
86
- # @deprecated
87
- # @param [Blacklight::SearchState,ActionController::Parameters] params_or_search_state query parameters
88
- # @return [String]
89
- def remove_constraint_url(params_or_search_state = search_state)
90
- Deprecation.warn(Blacklight::RenderConstraintsHelperBehavior, 'remove_constraint_url is deprecated')
91
- search_state = convert_to_search_state(params_or_search_state)
92
-
93
- search_action_path(search_state.remove_query_params)
94
- end
95
-
96
- ##
97
- # Render the facet constraints
98
- # @deprecated
99
- # @param [Blacklight::SearchState,Hash] params_or_search_state query parameters
100
- # @return [String]
101
- def render_constraints_filters(params_or_search_state = search_state)
102
- Deprecation.warn(Blacklight::RenderConstraintsHelperBehavior, 'render_constraints_filters is deprecated')
103
- search_state = convert_to_search_state(params_or_search_state)
104
-
105
- return "".html_safe unless search_state.filters.any?
106
-
107
- Deprecation.silence(Blacklight::RenderConstraintsHelperBehavior) do
108
- safe_join(search_state.filters.map do |field|
109
- render_filter_element(field.key, field.values, search_state)
110
- end, "\n")
111
- end
112
- end
113
-
114
- ##
115
- # Render a single facet's constraint
116
- # @deprecated
117
- # @param [String] facet field
118
- # @param [Array<String>] values selected facet values
119
- # @param [Blacklight::SearchState] search_state path query parameters
120
- # @return [String]
121
- def render_filter_element(facet, values, search_state)
122
- Deprecation.warn(Blacklight::RenderConstraintsHelperBehavior, 'render_filter_element is deprecated')
123
- facet_config = facet_configuration_for_field(facet)
124
-
125
- safe_join(Array(values).map do |val|
126
- next if val.blank? # skip empty string
127
-
128
- Deprecation.silence(Blacklight::RenderConstraintsHelperBehavior) do
129
- presenter = if val.is_a? Array
130
- inclusive_facet_item_presenter(facet_config, val, facet)
131
- else
132
- facet_item_presenter(facet_config, val, facet)
133
- end
134
-
135
- render_constraint_element(presenter.field_label,
136
- presenter.label,
137
- remove: presenter.remove_href(search_state),
138
- classes: ["filter", "filter-" + facet.parameterize])
139
- end
140
- end, "\n")
141
- end
142
-
143
- def inclusive_facet_item_presenter(facet_config, facet_item, facet_field)
144
- Blacklight::InclusiveFacetItemPresenter.new(facet_item, facet_config, self, facet_field)
145
- end
146
-
147
- # Render a label/value constraint on the screen. Can be called
148
- # by plugins and such to get application-defined rendering.
149
- #
150
- # Can be over-ridden locally to render differently if desired,
151
- # although in most cases you can just change CSS instead.
152
- #
153
- # Can pass in nil label if desired.
154
- #
155
- # @deprecated
156
- # @param [String] label to display
157
- # @param [String] value to display
158
- # @param [Hash] options
159
- # @option options [String] :remove url to execute for a 'remove' action
160
- # @option options [Array<String>] :classes an array of classes to add to container span for constraint.
161
- # @return [String]
162
- def render_constraint_element(label, value, options = {})
163
- Deprecation.warn(Blacklight::RenderConstraintsHelperBehavior, 'render_constraints_element is deprecated')
164
- render(partial: "catalog/constraints_element", locals: { label: label, value: value, options: options })
165
- end
166
-
167
- # @private
168
- def constraints_helpers_and_partials_from_blacklight?
169
- method(:render_constraints).owner == Blacklight::RenderConstraintsHelperBehavior &&
170
- method(:render_constraints_query).owner == Blacklight::RenderConstraintsHelperBehavior &&
171
- method(:remove_constraint_url).owner == Blacklight::RenderConstraintsHelperBehavior &&
172
- method(:render_constraints_filters).owner == Blacklight::RenderConstraintsHelperBehavior &&
173
- method(:render_filter_element).owner == Blacklight::RenderConstraintsHelperBehavior &&
174
- method(:render_constraint_element).owner == Blacklight::RenderConstraintsHelperBehavior &&
175
- partial_from_blacklight?('catalog/constraints_element')
176
- end
177
-
178
- private
179
-
180
- def convert_to_search_state(params_or_search_state)
181
- if params_or_search_state.is_a? Blacklight::SearchState
182
- params_or_search_state
183
- else
184
- # deprecated
185
- controller.search_state_class.new(params_or_search_state, blacklight_config, controller)
186
- end
187
- end
188
- end
@@ -1,97 +0,0 @@
1
- # frozen_string_literal: true
2
- # All methods in here are 'api' that may be over-ridden by plugins and local
3
- # code, so method signatures and semantics should not be changed casually.
4
- # implementations can be of course.
5
- #
6
- # Includes methods for rendering more textually on Search History page
7
- # (render_search_to_s(_*))
8
- module Blacklight::SearchHistoryConstraintsHelperBehavior
9
- extend Deprecation
10
- self.deprecation_horizon = '8.0'
11
-
12
- # Simpler textual version of constraints, used on Search History page.
13
- # Theoretically can may be DRY'd up with results page render_constraints,
14
- # maybe even using the very same HTML with different CSS?
15
- # But too tricky for now, too many changes to existing CSS. TODO.
16
- def render_search_to_s(params)
17
- return render(Blacklight::ConstraintsComponent.for_search_history(search_state: convert_to_search_state(params))) unless overridden_search_history_constraints_helper_methods?
18
-
19
- Deprecation.warn(Blacklight::SearchHistoryConstraintsHelperBehavior, 'Calling out to potentially overridden helpers for backwards compatibility.')
20
-
21
- Deprecation.silence(Blacklight::SearchHistoryConstraintsHelperBehavior) do
22
- render_search_to_s_q(params) +
23
- render_search_to_s_filters(params)
24
- end
25
- end
26
- deprecation_deprecate render_search_to_s: 'Use Blacklight::ConstraintsComponent.for_search_history instead'
27
-
28
- ##
29
- # Render the search query constraint
30
- def render_search_to_s_q(params)
31
- Deprecation.warn(Blacklight::SearchHistoryConstraintsHelperBehavior, '#render_search_to_s_q is deprecated without replacement')
32
- return "".html_safe if params['q'].blank?
33
-
34
- label = label_for_search_field(params[:search_field]) unless default_search_field?(params[:search_field])
35
-
36
- render_search_to_s_element(label, render_filter_value(params['q']))
37
- end
38
-
39
- ##
40
- # Render the search facet constraints
41
- def render_search_to_s_filters(params)
42
- Deprecation.warn(Blacklight::SearchHistoryConstraintsHelperBehavior, '#render_search_to_s_filters is deprecated without replacement')
43
- return "".html_safe unless params[:f]
44
-
45
- safe_join(params[:f].collect do |facet_field, value_list|
46
- render_search_to_s_element(facet_field_label(facet_field),
47
- safe_join(value_list.collect do |value|
48
- render_filter_value(value, facet_field)
49
- end,
50
- tag.span(" #{t('blacklight.and')} ", class: 'filter-separator')))
51
- end, " \n ")
52
- end
53
-
54
- # value can be Array, in which case elements are joined with
55
- # 'and'. Pass in option :escape_value => false to pass in pre-rendered
56
- # html for value. key with escape_key if needed.
57
- def render_search_to_s_element(key, value, _options = {})
58
- Deprecation.warn(Blacklight::SearchHistoryConstraintsHelperBehavior, '#render_search_to_s_element is deprecated without replacement')
59
- tag.span(render_filter_name(key) + tag.span(value, class: 'filter-values'),
60
- class: 'constraint')
61
- end
62
-
63
- ##
64
- # Render the name of the facet
65
- def render_filter_name name
66
- Deprecation.warn(Blacklight::SearchHistoryConstraintsHelperBehavior, '#render_filter_name is deprecated without replacement')
67
- return "".html_safe if name.blank?
68
-
69
- tag.span(t('blacklight.search.filters.label', label: name),
70
- class: 'filter-name')
71
- end
72
-
73
- ##
74
- # Render the value of the facet
75
- def render_filter_value value, key = nil
76
- Deprecation.warn(Blacklight::SearchHistoryConstraintsHelperBehavior, '#render_filter_value is deprecated without replacement')
77
- display_value = value
78
- Deprecation.silence(Blacklight::FacetsHelperBehavior) do
79
- display_value = facet_display_value(key, value) if key
80
- end
81
- tag.span(h(display_value),
82
- class: 'filter-value')
83
- end
84
-
85
- private
86
-
87
- # Check if the downstream application has overridden these methods
88
- # @deprecated
89
- # @private
90
- def overridden_search_history_constraints_helper_methods?
91
- method(:render_search_to_s_q).owner != Blacklight::FacetsHelperBehavior ||
92
- method(:render_search_to_s_filters).owner != Blacklight::FacetsHelperBehavior ||
93
- method(:render_search_to_s_element).owner != Blacklight::FacetsHelperBehavior ||
94
- method(:render_filter_name).owner != Blacklight::FacetsHelperBehavior ||
95
- method(:render_filter_value).owner != Blacklight::FacetsHelperBehavior
96
- end
97
- end
@@ -1,13 +0,0 @@
1
- # frozen_string_literal: true
2
- module Blacklight
3
- module SuggestHelperBehavior
4
- ##
5
- # @deprecated
6
- # @return [Boolean] should autocomplete be enabled in the UI
7
- def autocomplete_enabled?
8
- blacklight_config.autocomplete_enabled.present? &&
9
- blacklight_config.autocomplete_path.present?
10
- end
11
- deprecation_deprecate autocomplete_enabled?: "use SearchBarPresenter#autocomplete_enabled?"
12
- end
13
- end
@@ -1,36 +0,0 @@
1
- /*global Bloodhound */
2
- import Bloodhound from 'typeahead.js/dist/bloodhound.js'
3
-
4
- Blacklight.onLoad(function() {
5
- 'use strict';
6
-
7
- $('[data-autocomplete-enabled="true"]').each(function() {
8
- var $el = $(this);
9
- if($el.hasClass('tt-hint')) {
10
- return;
11
- }
12
- var suggestUrl = $el.data().autocompletePath;
13
-
14
- var terms = new Bloodhound({
15
- datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),
16
- queryTokenizer: Bloodhound.tokenizers.whitespace,
17
- remote: {
18
- url: suggestUrl + '?q=%QUERY',
19
- wildcard: '%QUERY'
20
- }
21
- });
22
-
23
- terms.initialize();
24
-
25
- $el.typeahead({
26
- hint: true,
27
- highlight: true,
28
- minLength: 2
29
- },
30
- {
31
- name: 'terms',
32
- displayKey: 'term',
33
- source: terms.ttAdapter()
34
- });
35
- });
36
- });
@@ -1,22 +0,0 @@
1
- /*global Blacklight */
2
-
3
- 'use strict';
4
-
5
- Blacklight.doResizeFacetLabelsAndCounts = function() {
6
- // adjust width of facet columns to fit their contents
7
- function longer (a,b) { return b.textContent.length - a.textContent.length }
8
-
9
- document.querySelectorAll('.facet-values, .pivot-facet').forEach(function(elem){
10
- const nodes = elem.querySelectorAll('.facet-count')
11
- // TODO: when we drop ie11 support, this can become the spread operator:
12
- const longest = Array.from(nodes).sort(longer)[0]
13
- if (longest && longest.textContent) {
14
- const width = longest.textContent.length + 1 + 'ch'
15
- elem.querySelector('.facet-count').style.width = width
16
- }
17
- })
18
- }
19
-
20
- Blacklight.onLoad(function() {
21
- Blacklight.doResizeFacetLabelsAndCounts()
22
- })