blacklight 7.42.0 → 8.0.0.beta1

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 (426) hide show
  1. checksums.yaml +4 -4
  2. data/.env +2 -3
  3. data/.github/workflows/ruby.yml +81 -0
  4. data/.rubocop.yml +244 -15
  5. data/.rubocop_todo.yml +137 -429
  6. data/.solr_wrapper.yml +1 -3
  7. data/Gemfile +11 -6
  8. data/README.md +11 -3
  9. data/VERSION +1 -1
  10. data/app/assets/javascripts/blacklight/blacklight.esm.js +384 -0
  11. data/app/assets/javascripts/blacklight/blacklight.esm.js.map +1 -0
  12. data/app/assets/javascripts/blacklight/blacklight.js +374 -493
  13. data/app/assets/javascripts/blacklight/blacklight.js.map +1 -0
  14. data/app/assets/stylesheets/blacklight/_autocomplete.scss +25 -0
  15. data/app/assets/stylesheets/blacklight/_blacklight_base.scss +1 -1
  16. data/app/assets/stylesheets/blacklight/_bookmark.scss +16 -0
  17. data/app/assets/stylesheets/blacklight/_bootstrap_overrides.scss +8 -0
  18. data/app/assets/stylesheets/blacklight/_constraints.scss +4 -4
  19. data/app/assets/stylesheets/blacklight/_facets.scss +72 -44
  20. data/app/assets/stylesheets/blacklight/_header.scss +0 -15
  21. data/app/assets/stylesheets/blacklight/_icons.scss +0 -14
  22. data/app/assets/stylesheets/blacklight/_mixins.scss +20 -0
  23. data/app/assets/stylesheets/blacklight/_modal.scss +8 -2
  24. data/app/assets/stylesheets/blacklight/_search_form.scss +30 -3
  25. data/app/assets/stylesheets/blacklight/_search_history.scss +10 -1
  26. data/app/assets/stylesheets/blacklight/_search_results.scss +6 -2
  27. data/app/assets/stylesheets/blacklight/blacklight_defaults.scss +4 -1
  28. data/app/builders/blacklight/action_builder.rb +18 -9
  29. data/app/components/blacklight/advanced_search_form_component.html.erb +3 -3
  30. data/app/components/blacklight/advanced_search_form_component.rb +8 -10
  31. data/app/components/blacklight/constraints_component.rb +27 -37
  32. data/app/components/blacklight/document/action_component.rb +12 -10
  33. data/app/components/blacklight/document/actions_component.rb +2 -2
  34. data/app/components/blacklight/document/bookmark_component.html.erb +9 -0
  35. data/app/components/blacklight/document/bookmark_component.rb +4 -2
  36. data/app/components/blacklight/document/citation_component.rb +5 -3
  37. data/app/components/blacklight/document/group_component.rb +7 -3
  38. data/app/components/blacklight/document/sidebar_component.html.erb +2 -0
  39. data/app/components/blacklight/document/sidebar_component.rb +16 -0
  40. data/app/components/blacklight/document/thumbnail_component.html.erb +2 -7
  41. data/app/components/blacklight/document/thumbnail_component.rb +1 -9
  42. data/app/components/blacklight/document_component.html.erb +1 -1
  43. data/app/components/blacklight/document_component.rb +16 -78
  44. data/app/components/blacklight/document_metadata_component.html.erb +2 -4
  45. data/app/components/blacklight/document_metadata_component.rb +5 -10
  46. data/app/components/blacklight/facet_component.rb +3 -3
  47. data/app/components/blacklight/facet_field_checkboxes_component.html.erb +4 -4
  48. data/app/components/blacklight/facet_field_checkboxes_component.rb +1 -1
  49. data/app/components/blacklight/facet_field_component.html.erb +4 -5
  50. data/app/components/blacklight/facet_field_component.rb +9 -2
  51. data/app/components/blacklight/facet_field_list_component.html.erb +3 -3
  52. data/app/components/blacklight/facet_field_list_component.rb +37 -5
  53. data/app/components/blacklight/facet_field_no_layout_component.rb +0 -2
  54. data/app/components/blacklight/facet_item_component.rb +1 -43
  55. data/app/components/blacklight/facet_item_pivot_component.rb +21 -23
  56. data/app/components/blacklight/header_component.rb +1 -1
  57. data/app/components/blacklight/hidden_search_state_component.rb +1 -2
  58. data/app/components/blacklight/icons/icon_component.rb +4 -9
  59. data/app/components/blacklight/icons/legacy_icon_component.rb +30 -0
  60. data/app/components/blacklight/icons/list_component.rb +16 -0
  61. data/app/components/blacklight/icons/search_component.rb +16 -0
  62. data/app/components/blacklight/metadata_field_component.html.erb +2 -2
  63. data/app/components/blacklight/metadata_field_component.rb +24 -8
  64. data/app/components/blacklight/metadata_field_layout_component.rb +4 -25
  65. data/app/components/blacklight/response/facet_group_component.html.erb +3 -5
  66. data/app/components/blacklight/response/facet_group_component.rb +29 -8
  67. data/app/components/blacklight/response/pagination_component.html.erb +1 -1
  68. data/app/components/blacklight/response/pagination_component.rb +2 -11
  69. data/app/components/blacklight/response/sort_component.html.erb +6 -1
  70. data/app/components/blacklight/response/sort_component.rb +1 -16
  71. data/app/components/blacklight/response/spellcheck_component.rb +18 -7
  72. data/app/components/blacklight/response/view_type_button_component.rb +3 -7
  73. data/app/components/blacklight/response/view_type_component.rb +4 -6
  74. data/app/components/blacklight/search/sidebar_component.html.erb +8 -0
  75. data/app/components/blacklight/search/sidebar_component.rb +17 -0
  76. data/app/components/blacklight/search_bar_component.html.erb +20 -15
  77. data/app/components/blacklight/search_bar_component.rb +2 -16
  78. data/app/components/blacklight/search_button_component.rb +3 -3
  79. data/app/components/blacklight/search_context_component.rb +43 -10
  80. data/app/components/blacklight/search_header_component.html.erb +2 -0
  81. data/app/components/blacklight/search_header_component.rb +6 -0
  82. data/app/components/blacklight/start_over_button_component.rb +5 -3
  83. data/app/components/blacklight/system/dropdown_component.rb +8 -5
  84. data/app/components/blacklight/system/flash_message_component.html.erb +4 -2
  85. data/app/components/blacklight/system/flash_message_component.rb +12 -3
  86. data/app/components/blacklight/system/modal_component.html.erb +1 -1
  87. data/app/components/blacklight/system/modal_component.rb +1 -3
  88. data/app/components/blacklight/top_navbar_component.html.erb +1 -1
  89. data/app/components/blacklight/top_navbar_component.rb +0 -4
  90. data/app/controllers/bookmarks_controller.rb +1 -0
  91. data/app/controllers/catalog_controller.rb +1 -0
  92. data/app/controllers/concerns/blacklight/bookmarks.rb +10 -9
  93. data/app/controllers/concerns/blacklight/catalog.rb +21 -83
  94. data/app/controllers/concerns/blacklight/controller.rb +3 -41
  95. data/app/controllers/concerns/blacklight/search_context.rb +25 -7
  96. data/app/controllers/concerns/blacklight/search_history.rb +2 -0
  97. data/app/controllers/concerns/blacklight/searchable.rb +12 -1
  98. data/app/controllers/concerns/blacklight/token_based_user.rb +13 -1
  99. data/app/controllers/search_history_controller.rb +1 -0
  100. data/app/helpers/blacklight/blacklight_helper_behavior.rb +12 -310
  101. data/app/helpers/blacklight/catalog_helper_behavior.rb +22 -139
  102. data/app/helpers/blacklight/component_helper_behavior.rb +2 -53
  103. data/app/helpers/blacklight/configuration_helper_behavior.rb +2 -119
  104. data/app/helpers/blacklight/facets_helper_behavior.rb +4 -321
  105. data/app/helpers/blacklight/icon_helper_behavior.rb +5 -7
  106. data/app/helpers/blacklight/layout_helper_behavior.rb +4 -3
  107. data/app/helpers/blacklight/render_partials_helper_behavior.rb +11 -31
  108. data/app/helpers/blacklight/url_helper_behavior.rb +12 -97
  109. data/app/helpers/blacklight_helper.rb +1 -0
  110. data/app/helpers/catalog_helper.rb +1 -0
  111. data/app/javascript/blacklight/bookmark_toggle.js +13 -19
  112. data/app/javascript/blacklight/button_focus.js +12 -10
  113. data/app/javascript/blacklight/checkbox_submit.js +68 -123
  114. data/app/javascript/blacklight/core.js +5 -7
  115. data/app/javascript/blacklight/index.js +13 -0
  116. data/app/javascript/blacklight/modal.js +99 -164
  117. data/app/javascript/blacklight/modalForm.js +60 -0
  118. data/app/javascript/blacklight/search_context.js +46 -54
  119. data/app/models/blacklight/facet_paginator.rb +3 -2
  120. data/app/models/blacklight/icon.rb +4 -2
  121. data/app/models/bookmark.rb +0 -2
  122. data/app/models/concerns/blacklight/configurable.rb +5 -4
  123. data/app/models/concerns/blacklight/document/active_model_shim.rb +1 -10
  124. data/app/models/concerns/blacklight/document/cache_key.rb +1 -0
  125. data/app/models/concerns/blacklight/document/dublin_core.rb +2 -1
  126. data/app/models/concerns/blacklight/document/email.rb +1 -0
  127. data/app/models/concerns/blacklight/document/export.rb +2 -1
  128. data/app/models/concerns/blacklight/document/extensions.rb +1 -0
  129. data/app/models/concerns/blacklight/document/schema_org.rb +1 -0
  130. data/app/models/concerns/blacklight/document/semantic_fields.rb +2 -1
  131. data/app/models/concerns/blacklight/document/sms.rb +1 -0
  132. data/app/models/concerns/blacklight/suggest/response.rb +1 -0
  133. data/app/models/concerns/blacklight/user.rb +17 -8
  134. data/app/models/record_mailer.rb +13 -12
  135. data/app/models/search.rb +1 -7
  136. data/app/models/solr_document.rb +1 -0
  137. data/app/presenters/blacklight/clause_presenter.rb +1 -1
  138. data/app/presenters/blacklight/document_presenter.rb +23 -50
  139. data/app/presenters/blacklight/facet_field_presenter.rb +39 -14
  140. data/app/presenters/blacklight/facet_grouped_item_presenter.rb +1 -5
  141. data/app/presenters/blacklight/facet_item_pivot_presenter.rb +60 -0
  142. data/app/presenters/blacklight/facet_item_presenter.rb +3 -9
  143. data/app/presenters/blacklight/field_presenter.rb +1 -0
  144. data/app/presenters/blacklight/index_presenter.rb +2 -40
  145. data/app/presenters/blacklight/json_presenter.rb +10 -6
  146. data/app/presenters/blacklight/rendering/link_to_facet.rb +2 -5
  147. data/app/presenters/blacklight/show_presenter.rb +1 -9
  148. data/app/presenters/blacklight/thumbnail_presenter.rb +1 -1
  149. data/app/services/blacklight/bookmarks_search_builder.rb +22 -0
  150. data/app/services/blacklight/field_retriever.rb +12 -21
  151. data/app/services/blacklight/search_service.rb +10 -17
  152. data/app/values/blacklight/types.rb +0 -18
  153. data/app/views/bookmarks/_clear_bookmarks_widget.html.erb +8 -1
  154. data/app/views/bookmarks/_tools.html.erb +7 -12
  155. data/app/views/catalog/_advanced_search_form.html.erb +0 -1
  156. data/app/views/catalog/_bookmark_control.html.erb +1 -1
  157. data/app/views/catalog/_citation.html.erb +1 -1
  158. data/app/views/catalog/_constraints.html.erb +1 -14
  159. data/app/views/catalog/_document.atom.builder +12 -14
  160. data/app/views/catalog/_document.html.erb +5 -3
  161. data/app/views/catalog/_document.rss.builder +2 -4
  162. data/app/views/catalog/_facet_layout.html.erb +2 -2
  163. data/app/views/catalog/_facets.html.erb +5 -4
  164. data/app/views/catalog/_home_text.html.erb +2 -14
  165. data/app/views/catalog/_per_page_widget.html.erb +10 -1
  166. data/app/views/catalog/_search_form.html.erb +2 -2
  167. data/app/views/catalog/_search_header.html.erb +1 -2
  168. data/app/views/catalog/_search_results.html.erb +2 -2
  169. data/app/views/catalog/_search_sidebar.html.erb +5 -1
  170. data/app/views/catalog/_show_main_content.html.erb +11 -16
  171. data/app/views/catalog/_show_sidebar.html.erb +2 -2
  172. data/app/views/catalog/_show_tools.html.erb +8 -14
  173. data/app/views/catalog/_view_type_group.html.erb +1 -1
  174. data/app/views/catalog/email.html.erb +2 -2
  175. data/app/views/catalog/email_success.html.erb +5 -6
  176. data/app/views/catalog/facet.html.erb +7 -5
  177. data/app/views/catalog/index.atom.builder +12 -14
  178. data/app/views/catalog/index.html.erb +4 -1
  179. data/app/views/catalog/index.json.jbuilder +19 -19
  180. data/app/views/catalog/index.rss.builder +1 -1
  181. data/app/views/catalog/opensearch.xml.builder +1 -1
  182. data/app/views/catalog/sms.html.erb +2 -2
  183. data/app/views/catalog/sms_success.html.erb +5 -6
  184. data/app/views/catalog/suggest.html.erb +3 -0
  185. data/app/views/kaminari/blacklight/_page.html.erb +2 -1
  186. data/app/views/layouts/blacklight/base.html.erb +13 -2
  187. data/app/views/search_history/index.html.erb +6 -2
  188. data/app/views/shared/_flash_messages.html.erb +1 -1
  189. data/app/views/shared/_modal.html.erb +3 -3
  190. data/blacklight.gemspec +7 -11
  191. data/config/importmap.rb +1 -1
  192. data/config/locales/blacklight.ar.yml +0 -1
  193. data/config/locales/blacklight.ca.yml +0 -1
  194. data/config/locales/blacklight.de.yml +0 -1
  195. data/config/locales/blacklight.en.yml +0 -2
  196. data/config/locales/blacklight.es.yml +0 -1
  197. data/config/locales/blacklight.fr.yml +0 -1
  198. data/config/locales/blacklight.hu.yml +0 -1
  199. data/config/locales/blacklight.it.yml +0 -1
  200. data/config/locales/blacklight.nl.yml +0 -1
  201. data/config/locales/blacklight.pt-BR.yml +0 -1
  202. data/config/locales/blacklight.sq.yml +0 -1
  203. data/config/locales/blacklight.zh.yml +0 -1
  204. data/config/routes.rb +3 -2
  205. data/db/migrate/20140202020201_create_searches.rb +1 -0
  206. data/db/migrate/20140202020202_create_bookmarks.rb +1 -0
  207. data/db/migrate/20140320000000_add_polymorphic_type_to_bookmarks.rb +1 -0
  208. data/docker-compose.yml +3 -3
  209. data/lib/blacklight/abstract_repository.rb +1 -6
  210. data/lib/blacklight/component.rb +47 -10
  211. data/lib/blacklight/configuration/context.rb +4 -4
  212. data/lib/blacklight/configuration/display_field.rb +7 -9
  213. data/lib/blacklight/configuration/facet_field.rb +17 -11
  214. data/lib/blacklight/configuration/field.rb +7 -6
  215. data/lib/blacklight/configuration/fields.rb +12 -15
  216. data/lib/blacklight/configuration/index_field.rb +1 -0
  217. data/lib/blacklight/configuration/null_display_field.rb +17 -0
  218. data/lib/blacklight/configuration/search_field.rb +1 -0
  219. data/lib/blacklight/configuration/show_field.rb +1 -0
  220. data/lib/blacklight/configuration/sort_field.rb +3 -2
  221. data/lib/blacklight/configuration/tool_config.rb +1 -0
  222. data/lib/blacklight/configuration/view_config.rb +14 -10
  223. data/lib/blacklight/configuration.rb +310 -365
  224. data/lib/blacklight/engine.rb +8 -29
  225. data/lib/blacklight/exceptions.rb +2 -2
  226. data/lib/blacklight/nested_open_struct_with_hash_access.rb +7 -13
  227. data/lib/blacklight/open_struct_with_hash_access.rb +23 -6
  228. data/lib/blacklight/parameters.rb +7 -21
  229. data/lib/blacklight/routes/exportable.rb +1 -0
  230. data/lib/blacklight/routes/searchable.rb +2 -1
  231. data/lib/blacklight/routes.rb +1 -0
  232. data/lib/blacklight/search_builder.rb +10 -10
  233. data/lib/blacklight/search_state/filter_field.rb +8 -25
  234. data/lib/blacklight/search_state/pivot_filter_field.rb +144 -0
  235. data/lib/blacklight/search_state.rb +23 -79
  236. data/lib/blacklight/solr/document.rb +1 -0
  237. data/lib/blacklight/solr/facet_paginator.rb +1 -0
  238. data/lib/blacklight/solr/repository.rb +4 -24
  239. data/lib/blacklight/solr/request.rb +1 -0
  240. data/lib/blacklight/solr/response/facets.rb +21 -5
  241. data/lib/blacklight/solr/response/group.rb +1 -0
  242. data/lib/blacklight/solr/response/group_response.rb +1 -0
  243. data/lib/blacklight/solr/response/more_like_this.rb +1 -0
  244. data/lib/blacklight/solr/response/pagination_methods.rb +4 -3
  245. data/lib/blacklight/solr/response/params.rb +5 -4
  246. data/lib/blacklight/solr/response/response.rb +1 -0
  247. data/lib/blacklight/solr/response/spelling.rb +1 -0
  248. data/lib/blacklight/solr/response.rb +16 -3
  249. data/lib/blacklight/solr/search_builder_behavior.rb +16 -35
  250. data/lib/blacklight/solr.rb +7 -0
  251. data/lib/blacklight/version.rb +1 -0
  252. data/lib/blacklight.rb +26 -14
  253. data/lib/generators/blacklight/assets/importmap_generator.rb +8 -9
  254. data/lib/generators/blacklight/assets/propshaft_generator.rb +2 -11
  255. data/lib/generators/blacklight/assets/sprockets_generator.rb +17 -51
  256. data/lib/generators/blacklight/assets_generator.rb +11 -7
  257. data/lib/generators/blacklight/controller_generator.rb +4 -3
  258. data/lib/generators/blacklight/document_generator.rb +1 -0
  259. data/lib/generators/blacklight/install_generator.rb +2 -1
  260. data/lib/generators/blacklight/models_generator.rb +1 -0
  261. data/lib/generators/blacklight/search_builder_generator.rb +1 -0
  262. data/lib/generators/blacklight/solr_generator.rb +1 -1
  263. data/lib/generators/blacklight/templates/catalog_controller.rb +34 -8
  264. data/lib/generators/blacklight/templates/solr/conf/solrconfig.xml +6 -71
  265. data/lib/generators/blacklight/test_support_generator.rb +5 -3
  266. data/lib/generators/blacklight/user_generator.rb +7 -9
  267. data/lib/railties/blacklight.rake +6 -7
  268. data/package.json +10 -13
  269. data/rollup.config.js +27 -0
  270. data/spec/components/blacklight/constraints_component_spec.rb +17 -13
  271. data/spec/components/blacklight/document/action_component_spec.rb +6 -1
  272. data/spec/components/blacklight/document_component_spec.rb +22 -131
  273. data/spec/components/blacklight/facet_component_spec.rb +3 -18
  274. data/spec/components/blacklight/facet_field_checkboxes_component_spec.rb +1 -2
  275. data/spec/components/blacklight/facet_field_list_component_spec.rb +7 -6
  276. data/spec/components/blacklight/facet_item_pivot_component_spec.rb +10 -9
  277. data/spec/components/blacklight/response/view_type_component_spec.rb +66 -0
  278. data/spec/components/blacklight/search_bar_component_spec.rb +1 -1
  279. data/spec/components/blacklight/search_context_component_spec.rb +17 -8
  280. data/spec/controllers/blacklight/catalog/component_configuration_spec.rb +1 -6
  281. data/spec/controllers/blacklight/{base_spec.rb → catalog_spec.rb} +2 -2
  282. data/spec/controllers/bookmarks_controller_spec.rb +2 -3
  283. data/spec/controllers/catalog_controller_spec.rb +13 -135
  284. data/spec/features/advanced_search_spec.rb +0 -56
  285. data/spec/features/autocomplete_spec.rb +1 -1
  286. data/spec/features/axe_spec.rb +1 -6
  287. data/spec/features/bookmarks_spec.rb +1 -1
  288. data/spec/features/facets_spec.rb +6 -4
  289. data/spec/features/search_context_spec.rb +5 -11
  290. data/spec/features/search_results_spec.rb +0 -33
  291. data/spec/features/sitelinks_search_box.rb +13 -0
  292. data/spec/helpers/blacklight/configuration_helper_behavior_spec.rb +2 -138
  293. data/spec/helpers/blacklight/facets_helper_behavior_spec.rb +0 -386
  294. data/spec/helpers/blacklight/icon_helper_behavior_spec.rb +8 -0
  295. data/spec/helpers/blacklight/layout_helper_behavior_spec.rb +3 -20
  296. data/spec/helpers/blacklight/render_partials_helper_behavior_spec.rb +5 -7
  297. data/spec/helpers/blacklight/url_helper_behavior_spec.rb +9 -131
  298. data/spec/helpers/blacklight_helper_spec.rb +8 -252
  299. data/spec/helpers/catalog_helper_spec.rb +7 -118
  300. data/spec/i18n_spec.rb +1 -0
  301. data/spec/integration/generators/blacklight/solr_generator_spec.rb +1 -1
  302. data/spec/lib/blacklight/component_spec.rb +27 -32
  303. data/spec/lib/blacklight/configuration/facet_field_spec.rb +27 -16
  304. data/spec/lib/blacklight/configuration/field_spec.rb +1 -1
  305. data/spec/lib/blacklight/configuration/view_config_spec.rb +1 -1
  306. data/spec/lib/blacklight/open_struct_with_hash_access_spec.rb +2 -2
  307. data/spec/lib/blacklight/parameters_spec.rb +1 -4
  308. data/spec/lib/blacklight/search_state/filter_field_spec.rb +4 -4
  309. data/spec/lib/blacklight/search_state/pivot_filter_field_spec.rb +117 -0
  310. data/spec/lib/blacklight/search_state_spec.rb +80 -198
  311. data/spec/lib/tasks/blacklight_task_spec.rb +1 -0
  312. data/spec/models/blacklight/configuration_spec.rb +17 -51
  313. data/spec/models/blacklight/document/active_model_shim_spec.rb +2 -2
  314. data/spec/models/blacklight/icon_spec.rb +31 -15
  315. data/spec/models/blacklight/search_builder_spec.rb +9 -9
  316. data/spec/models/blacklight/solr/document_spec.rb +3 -3
  317. data/spec/models/blacklight/solr/repository_spec.rb +0 -45
  318. data/spec/models/blacklight/solr/response/facets_spec.rb +27 -27
  319. data/spec/models/blacklight/solr/response/group_response_spec.rb +1 -0
  320. data/spec/models/blacklight/solr/response/group_spec.rb +1 -0
  321. data/spec/models/blacklight/solr/response_spec.rb +9 -2
  322. data/spec/models/blacklight/solr/search_builder_spec.rb +24 -44
  323. data/spec/models/blacklight/user_spec.rb +22 -0
  324. data/spec/models/solr_document_spec.rb +3 -9
  325. data/spec/presenters/blacklight/clause_presenter_spec.rb +1 -0
  326. data/spec/presenters/blacklight/document_presenter_spec.rb +2 -3
  327. data/spec/presenters/blacklight/facet_field_presenter_spec.rb +85 -12
  328. data/spec/presenters/blacklight/facet_grouped_item_presenter_spec.rb +1 -0
  329. data/spec/presenters/blacklight/facet_item_presenter_spec.rb +14 -13
  330. data/spec/presenters/blacklight/field_presenter_spec.rb +0 -14
  331. data/spec/presenters/blacklight/index_presenter_spec.rb +2 -5
  332. data/spec/presenters/blacklight/json_presenter_spec.rb +1 -0
  333. data/spec/presenters/blacklight/link_alternate_presenter_spec.rb +3 -2
  334. data/spec/presenters/blacklight/show_presenter_spec.rb +20 -30
  335. data/spec/presenters/thumbnail_presenter_spec.rb +1 -1
  336. data/spec/requests/load_suggestions_spec.rb +16 -0
  337. data/spec/routing/catalog_routing_spec.rb +2 -1
  338. data/spec/services/blacklight/search_service_spec.rb +39 -76
  339. data/spec/spec_helper.rb +8 -9
  340. data/spec/support/controller_level_helpers.rb +1 -2
  341. data/spec/support/features/search_helpers.rb +39 -0
  342. data/spec/support/features/session_helpers.rb +1 -0
  343. data/spec/support/features.rb +3 -0
  344. data/spec/support/view_component_capybara_test_helpers.rb +8 -0
  345. data/spec/test_app_templates/Gemfile.extra +1 -0
  346. data/spec/test_app_templates/lib/generators/test_app_generator.rb +8 -1
  347. data/spec/views/catalog/_document.html.erb_spec.rb +3 -34
  348. data/spec/views/catalog/_facet_index_navigation.html.erb_spec.rb +1 -1
  349. data/spec/views/catalog/_paginate_compact.html.erb_spec.rb +0 -2
  350. data/spec/views/catalog/_search_header.erb_spec.rb +1 -0
  351. data/spec/views/catalog/_show_sidebar.erb_spec.rb +1 -0
  352. data/spec/views/catalog/_show_tools.html.erb_spec.rb +5 -66
  353. data/spec/views/catalog/_view_type_group.html.erb_spec.rb +17 -9
  354. data/spec/views/catalog/email_success.html.erb_spec.rb +2 -2
  355. data/spec/views/catalog/facet.html.erb_spec.rb +6 -3
  356. data/spec/views/catalog/index.atom.builder_spec.rb +17 -11
  357. data/spec/views/catalog/index.html.erb_spec.rb +5 -6
  358. data/spec/views/catalog/index.json.jbuilder_spec.rb +2 -2
  359. data/spec/views/catalog/show.html.erb_spec.rb +3 -25
  360. data/spec/views/catalog/sms_success.html.erb_spec.rb +2 -2
  361. data/tasks/blacklight.rake +11 -9
  362. data/template.demo.rb +7 -7
  363. metadata +73 -189
  364. data/.babelrc +0 -11
  365. data/.github/matrix.json +0 -71
  366. data/.github/workflows/build.yml +0 -16
  367. data/.github/workflows/lint.yml +0 -23
  368. data/.github/workflows/main.yml +0 -23
  369. data/.github/workflows/test.yml +0 -52
  370. data/app/assets/images/blacklight/list.svg +0 -1
  371. data/app/assets/images/blacklight/search.svg +0 -1
  372. data/app/assets/stylesheets/blacklight/_twitter_typeahead.scss +0 -37
  373. data/app/components/blacklight/content_areas_shim.rb +0 -13
  374. data/app/components/blacklight/search/per_page_component.html.erb +0 -2
  375. data/app/components/blacklight/search/per_page_component.rb +0 -50
  376. data/app/components/blacklight/search_context/server_item_pagination_component.html.erb +0 -10
  377. data/app/components/blacklight/search_context/server_item_pagination_component.rb +0 -15
  378. data/app/components/blacklight/system/dropdown_button_component.rb +0 -18
  379. data/app/controllers/concerns/blacklight/base.rb +0 -12
  380. data/app/controllers/concerns/blacklight/default_component_configuration.rb +0 -64
  381. data/app/controllers/concerns/blacklight/facet.rb +0 -69
  382. data/app/controllers/concerns/blacklight/search_fields.rb +0 -46
  383. data/app/helpers/blacklight/hash_as_hidden_fields_helper_behavior.rb +0 -27
  384. data/app/helpers/blacklight/render_constraints_helper_behavior.rb +0 -188
  385. data/app/helpers/blacklight/search_history_constraints_helper_behavior.rb +0 -97
  386. data/app/helpers/blacklight/suggest_helper_behavior.rb +0 -13
  387. data/app/javascript/blacklight/autocomplete.js +0 -36
  388. data/app/javascript/blacklight/facet_load.js +0 -22
  389. data/app/presenters/blacklight/search_bar_presenter.rb +0 -47
  390. data/app/views/catalog/_constraints_element.html.erb +0 -14
  391. data/app/views/catalog/_document_action.html.erb +0 -5
  392. data/app/views/catalog/_facet_group.html.erb +0 -5
  393. data/app/views/catalog/_facet_limit.html.erb +0 -3
  394. data/app/views/catalog/_index.html.erb +0 -1
  395. data/app/views/catalog/_index_header.html.erb +0 -22
  396. data/app/views/catalog/_previous_next_doc.html.erb +0 -2
  397. data/app/views/catalog/_show.html.erb +0 -6
  398. data/app/views/catalog/_show_header.html.erb +0 -2
  399. data/app/views/catalog/_thumbnail.html.erb +0 -1
  400. data/lib/blacklight/deprecations/engine_configuration.rb +0 -66
  401. data/lib/blacklight/deprecations/search_state_normalization.rb +0 -52
  402. data/spec/components/blacklight/header_component_spec.rb +0 -20
  403. data/spec/components/blacklight/icons/icon_component_spec.rb +0 -42
  404. data/spec/components/blacklight/response/pagination_component_spec.rb +0 -53
  405. data/spec/components/blacklight/search_context/server_item_pagination_component_spec.rb +0 -35
  406. data/spec/controllers/blacklight/facet_spec.rb +0 -33
  407. data/spec/controllers/blacklight/search_fields_spec.rb +0 -62
  408. data/spec/features/citation_spec.rb +0 -10
  409. data/spec/features/sitelinks_search_box_spec.rb +0 -13
  410. data/spec/features/sms_spec.rb +0 -12
  411. data/spec/helpers/blacklight/hash_as_hidden_fields_behavior_spec.rb +0 -26
  412. data/spec/helpers/blacklight/render_constraints_helper_behavior_spec.rb +0 -92
  413. data/spec/helpers/blacklight/search_history_constraints_helper_behavior_spec.rb +0 -101
  414. data/spec/helpers/blacklight/suggest_helper_behavior_spec.rb +0 -48
  415. data/spec/lib/blacklight/engine_spec.rb +0 -41
  416. data/spec/presenters/blacklight/search_bar_presenter_spec.rb +0 -94
  417. data/spec/services/blacklight/field_retriever_spec.rb +0 -17
  418. data/spec/support/view_component_test_helpers.rb +0 -35
  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
@@ -14,15 +14,10 @@ module Blacklight
14
14
  def import_javascript_assets
15
15
  append_to_file 'config/importmap.rb' do
16
16
  <<~CONTENT
17
- pin "@github/auto-complete-element", to: "https://cdn.skypack.dev/@github/auto-complete-element"
18
17
  pin "@popperjs/core", to: "https://ga.jspm.io/npm:@popperjs/core@2.11.6/dist/umd/popper.min.js"
19
18
  pin "bootstrap", to: "https://ga.jspm.io/npm:bootstrap@#{(defined?(Bootstrap) && Bootstrap::VERSION) || '5.2.2'}/dist/js/bootstrap.js"
20
- CONTENT
21
- end
22
-
23
- append_to_file 'app/assets/config/manifest.js' do
24
- <<~CONTENT
25
- //= link blacklight/manifest.js
19
+ pin "blacklight", to: "blacklight/blacklight.js"
20
+ pin "dialog-polyfill", to: "https://ga.jspm.io/npm:dialog-polyfill@0.5.6/dist/dialog-polyfill.js"
26
21
  CONTENT
27
22
  end
28
23
  end
@@ -31,8 +26,12 @@ module Blacklight
31
26
  append_to_file 'app/javascript/application.js' do
32
27
  <<~CONTENT
33
28
  import bootstrap from "bootstrap"
34
- import githubAutoCompleteElement from "@github/auto-complete-element"
35
- import Blacklight from "blacklight"
29
+ import "blacklight"
30
+ import dialogPolyfill from "dialog-polyfill"
31
+ Blacklight.onLoad(() => {
32
+ const dialog = document.querySelector('dialog')
33
+ dialogPolyfill.registerDialog(dialog)
34
+ })
36
35
  CONTENT
37
36
  end
38
37
  end
@@ -4,15 +4,7 @@ module Blacklight
4
4
  module Assets
5
5
  class PropshaftGenerator < Rails::Generators::Base
6
6
  def add_package
7
- if ENV['CI']
8
- run "yarn add blacklight-frontend:#{Blacklight::Engine.root}"
9
- else
10
- run 'yarn add blacklight-frontend'
11
- end
12
- end
13
-
14
- def add_third_party_packages
15
- run 'yarn add @github/auto-complete-element'
7
+ run 'yarn add blacklight-frontend'
16
8
  end
17
9
 
18
10
  def add_package_assets
@@ -24,8 +16,7 @@ module Blacklight
24
16
 
25
17
  append_to_file 'app/javascript/application.js' do
26
18
  <<~CONTENT
27
- import Blacklight from "blacklight-frontend";
28
- import githubAutoCompleteElement from "@github/auto-complete-element";
19
+ import Blacklight from "blacklight-frontend/app/assets/javascripts/blacklight/blacklight.esm";
29
20
  CONTENT
30
21
  end
31
22
  end
@@ -3,46 +3,25 @@
3
3
  module Blacklight
4
4
  module Assets
5
5
  class SprocketsGenerator < Rails::Generators::Base
6
- class_option :'bootstrap-version', type: :string, default: ENV.fetch('BOOTSTRAP_VERSION', '~> 4.0'), desc: "Set the generated app's bootstrap version"
7
-
8
- def replace_propshaft_with_sprockets
9
- return if defined?(Sprockets)
10
-
11
- # Rails 8+ defaults to Propshaft, but Blacklight 7.x JS requires Sprockets
12
- gsub_file 'Gemfile', /^gem ['"]propshaft['"].*$/, '# \0'
13
- gem 'sprockets-rails'
14
- end
6
+ class_option :'bootstrap-version', type: :string, default: ENV.fetch('BOOTSTRAP_VERSION', '~> 5.1'), desc: "Set the generated app's bootstrap version"
15
7
 
8
+ # This could be skipped if you want to use webpacker
16
9
  def add_javascript_dependencies
17
10
  gem 'bootstrap', options[:'bootstrap-version'].presence
18
- gem 'jquery-rails'
19
- gem 'twitter-typeahead-rails', '0.11.1.pre.corejavascript'
11
+ gem 'jquery-rails' if bootstrap_4? # Bootstrap 4 has a dependency on jquery
20
12
  end
21
13
 
22
- def add_sass_support
23
- gem "sassc-rails", "~> 2.1" if Rails.version > '7'
24
- end
14
+ ##
15
+ # Remove the empty generated app/assets/images directory. Without doing this,
16
+ # the default Sprockets 4 manifest will raise an exception.
17
+ def appease_sprockets4
18
+ return if Rails.version > '7' || Sprockets::VERSION < '4'
25
19
 
26
- def setup_sprockets_manifest
27
- if !defined?(Sprockets)
28
- # Rails 8+ with Propshaft replaced: create Sprockets config from scratch
29
- directory = File.expand_path('app/assets/config', destination_root)
30
- FileUtils.mkdir_p(directory)
31
- create_file 'app/assets/config/manifest.js' do
32
- <<~CONTENT
33
- //= link_tree ../images
34
- //= link_directory ../stylesheets .css
35
- //= link application.js
36
- CONTENT
37
- end
38
- empty_directory 'app/assets/images'
39
- elsif defined?(Sprockets::VERSION) && Sprockets::VERSION >= '4'
40
- append_to_file 'app/assets/config/manifest.js', "\n//= link application.js"
41
- empty_directory 'app/assets/images'
42
- end
20
+ append_to_file 'app/assets/config/manifest.js', "\n//= link application.js"
21
+ empty_directory 'app/assets/images'
43
22
  end
44
23
 
45
- def assets # rubocop:disable Metrics/MethodLength
24
+ def assets
46
25
  create_file 'app/assets/stylesheets/blacklight.scss' do
47
26
  <<~CONTENT
48
27
  @import 'bootstrap';
@@ -50,42 +29,29 @@ module Blacklight
50
29
  CONTENT
51
30
  end
52
31
 
53
- # Ensure application.css is a proper Sprockets manifest that loads blacklight styles
54
- application_css = File.expand_path('app/assets/stylesheets/application.css', destination_root)
55
- if File.exist?(application_css)
56
- content = File.read(application_css)
57
- unless content.include?('require blacklight')
58
- create_file 'app/assets/stylesheets/application.css', force: true do
59
- <<~CONTENT
60
- /*
61
- *= require blacklight
62
- *= require_self
63
- */
64
- CONTENT
65
- end
66
- end
67
- end
32
+ gem "sassc-rails", "~> 2.1" if Rails.version > '7'
68
33
 
69
34
  # Ensure this method is idempotent
70
35
  return if has_blacklight_assets?
71
36
 
72
37
  create_file 'app/assets/javascripts/application.js' do
73
38
  <<~CONTENT
74
- //= require jquery3
75
39
  //= require rails-ujs
40
+ #{'//= require jquery3' if bootstrap_4?}
76
41
 
77
42
  // Required by Blacklight
78
43
  //= require popper
79
- // Twitter Typeahead for autocomplete
80
- //= require twitter/typeahead
81
44
  //= require bootstrap
82
- //= require blacklight/blacklight
83
45
  CONTENT
84
46
  end
85
47
  end
86
48
 
87
49
  private
88
50
 
51
+ def bootstrap_4?
52
+ options[:'bootstrap-version'].match?(/\A[^0-9]*4\./)
53
+ end
54
+
89
55
  def has_blacklight_assets?
90
56
  application_js.include?('blacklight/blacklight')
91
57
  end
@@ -1,17 +1,21 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'shellwords'
4
-
5
3
  module Blacklight
6
4
  class AssetsGenerator < Rails::Generators::Base
7
- class_option :'bootstrap-version', type: :string, default: ENV.fetch('BOOTSTRAP_VERSION', '~> 4.0'), desc: "Set the generated app's bootstrap version"
5
+ class_option :'bootstrap-version', type: :string, default: ENV.fetch('BOOTSTRAP_VERSION', '~> 5.1'), desc: "Set the generated app's bootstrap version"
8
6
 
9
7
  def run_asset_pipeline_specific_generator
10
- generated_options = "--bootstrap-version='#{Shellwords.escape(options[:'bootstrap-version'])}'" if options[:'bootstrap-version']
8
+ generated_options = "--bootstrap-version='#{options[:'bootstrap-version']}'" if options[:'bootstrap-version']
9
+
10
+ generator = if defined?(Propshaft)
11
+ 'blacklight:assets:propshaft'
12
+ elsif defined?(Importmap)
13
+ 'blacklight:assets:importmap'
14
+ elsif defined?(Sprockets)
15
+ 'blacklight:assets:sprockets'
16
+ end
11
17
 
12
- # Blacklight 7.x JS is distributed via Sprockets (//= require directives, jQuery, etc.)
13
- # so we always use the sprockets generator regardless of what Rails defaulted to.
14
- generate 'blacklight:assets:sprockets', generated_options
18
+ generate generator, generated_options if generator
15
19
  end
16
20
  end
17
21
  end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Blacklight
3
4
  class ControllerGenerator < Rails::Generators::Base
4
5
  source_root File.expand_path('../templates', __FILE__)
@@ -16,8 +17,8 @@ module Blacklight
16
17
  def inject_blacklight_controller_behavior
17
18
  inject_into_class "app/controllers/application_controller.rb", "ApplicationController" do
18
19
  " # Adds a few additional behaviors into the application controller\n" \
19
- " include Blacklight::Controller\n" \
20
- " layout :determine_layout if respond_to? :layout\n\n"
20
+ " include Blacklight::Controller\n" \
21
+ " layout :determine_layout if respond_to? :layout\n\n"
21
22
  end
22
23
  end
23
24
 
@@ -30,7 +31,7 @@ module Blacklight
30
31
  route <<-EOF
31
32
  concern :searchable, Blacklight::Routes::Searchable.new
32
33
 
33
- resource :catalog, only: [], as: 'catalog', path: '/catalog', controller: 'catalog' do
34
+ resource :catalog, only: [:index], as: 'catalog', path: '/catalog', controller: 'catalog' do
34
35
  concerns :searchable
35
36
  end
36
37
  EOF
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'rails/generators'
3
4
 
4
5
  module Blacklight
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Blacklight
3
4
  class Install < Rails::Generators::Base
4
5
  source_root File.expand_path('../templates', __FILE__)
@@ -84,7 +85,7 @@ module Blacklight
84
85
  return unless options[:marc]
85
86
 
86
87
  blacklight_marc = String.new('blacklight-marc')
87
- gem blacklight_marc, '>= 7.0.0.rc1', '< 8'
88
+ gem blacklight_marc, '~> 8.0'
88
89
 
89
90
  bundle_install
90
91
 
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'rails/generators'
3
4
  require 'rails/generators/migration'
4
5
  require 'blacklight/version'
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'rails/generators'
3
4
 
4
5
  module Blacklight
@@ -36,7 +36,7 @@ module Blacklight
36
36
 
37
37
  def bundle_install
38
38
  inside destination_root do
39
- Bundler.with_clean_env do
39
+ Bundler.with_unbundled_env do
40
40
  run "bundle install"
41
41
  end
42
42
  end
@@ -5,7 +5,16 @@ class <%= controller_name.classify %>Controller < ApplicationController
5
5
 
6
6
  include Blacklight::Catalog
7
7
 
8
+ # If you'd like to handle errors returned by Solr in a certain way,
9
+ # you can use Rails rescue_from with a method you define in this controller,
10
+ # uncomment:
11
+ #
12
+ # rescue_from Blacklight::Exceptions::InvalidRequest, with: :my_handling_method
13
+
8
14
  configure_blacklight do |config|
15
+ ## Specify the style of markup to be generated (may be 4 or 5)
16
+ # config.bootstrap_version = 5
17
+ #
9
18
  ## Class for sending and receiving requests from a search index
10
19
  # config.repository_class = Blacklight::Solr::Repository
11
20
  #
@@ -29,23 +38,32 @@ class <%= controller_name.classify %>Controller < ApplicationController
29
38
  # solr path which will be added to solr base url before the other solr params.
30
39
  #config.solr_path = 'select'
31
40
  #config.document_solr_path = 'get'
32
- #config.json_solr_path = 'advanced'
33
41
 
34
42
  # items to show per page, each number in the array represent another option to choose from.
35
43
  #config.per_page = [10,20,50,100]
36
44
 
37
45
  # solr field configuration for search results/index views
38
46
  config.index.title_field = 'title_tsim'
39
- #config.index.display_type_field = 'format'
40
- #config.index.thumbnail_field = 'thumbnail_path_ss'
47
+ # config.index.display_type_field = 'format'
48
+ # config.index.thumbnail_field = 'thumbnail_path_ss'
49
+
50
+ # The presenter is the view-model class for the page
51
+ # config.index.document_presenter_class = MyApp::IndexPresenter
41
52
 
42
- config.add_results_document_tool(:bookmark, partial: 'bookmark_control', if: :render_bookmarks_control?)
53
+ # Some components can be configured
54
+ # config.index.document_component = MyApp::SearchResultComponent
55
+ # config.index.constraints_component = MyApp::ConstraintsComponent
56
+ # config.index.search_bar_component = MyApp::SearchBarComponent
57
+ # config.index.search_header_component = MyApp::SearchHeaderComponent
58
+ # config.index.document_actions.delete(:bookmark)
59
+
60
+ config.add_results_document_tool(:bookmark, component: Blacklight::Document::BookmarkComponent, if: :render_bookmarks_control?)
43
61
 
44
62
  config.add_results_collection_tool(:sort_widget)
45
63
  config.add_results_collection_tool(:per_page_widget)
46
64
  config.add_results_collection_tool(:view_type_group)
47
65
 
48
- config.add_show_tools_partial(:bookmark, partial: 'bookmark_control', if: :render_bookmarks_control?)
66
+ config.add_show_tools_partial(:bookmark, component: Blacklight::Document::BookmarkComponent, if: :render_bookmarks_control?)
49
67
  config.add_show_tools_partial(:email, callback: :email_action, validator: :validate_email_params)
50
68
  config.add_show_tools_partial(:sms, if: :render_sms_action?, callback: :sms_action, validator: :validate_sms_params)
51
69
  config.add_show_tools_partial(:citation)
@@ -54,9 +72,17 @@ class <%= controller_name.classify %>Controller < ApplicationController
54
72
  config.add_nav_action(:search_history, partial: 'blacklight/nav/search_history')
55
73
 
56
74
  # solr field configuration for document/show views
57
- #config.show.title_field = 'title_tsim'
58
- #config.show.display_type_field = 'format'
59
- #config.show.thumbnail_field = 'thumbnail_path_ss'
75
+ # config.show.title_field = 'title_tsim'
76
+ # config.show.display_type_field = 'format'
77
+ # config.show.thumbnail_field = 'thumbnail_path_ss'
78
+ #
79
+ # The presenter is a view-model class for the page
80
+ # config.show.document_presenter_class = MyApp::ShowPresenter
81
+ #
82
+ # These components can be configured
83
+ # config.show.document_component = MyApp::DocumentComponent
84
+ # config.show.sidebar_component = MyApp::SidebarComponent
85
+ # config.show.embed_component = MyApp::EmbedComponent
60
86
 
61
87
  # solr fields that will be treated as facets by the blacklight application
62
88
  # The ordering of the field names is the order of the display
@@ -16,14 +16,14 @@
16
16
  </updateLog>
17
17
  </updateHandler>
18
18
 
19
- <!-- solr lib dirs, which are needed for Solr 8 compatibility but ignored in solr 9.8 and above -->
19
+ <!-- solr lib dirs -->
20
20
  <lib dir="${solr.install.dir:../../../..}/modules/analysis-extras/lib" />
21
21
  <lib dir="${solr.install.dir:../../../..}/contrib/analysis-extras/lib" />
22
22
  <lib dir="${solr.install.dir:../../../..}/contrib/analysis-extras/lucene-libs" />
23
23
 
24
24
  <dataDir>${solr.data.dir:}</dataDir>
25
25
 
26
- <requestHandler name="/select" class="solr.SearchHandler" default="true">
26
+ <requestHandler name="search" class="solr.SearchHandler" default="true">
27
27
  <!-- default values for query parameters can be specified, these
28
28
  will be overridden by parameters in the request
29
29
  -->
@@ -47,6 +47,7 @@
47
47
  full_title_tsim
48
48
  short_title_tsim
49
49
  alternative_title_tsim
50
+ active_fedora_model_ssi
50
51
  title_tsim
51
52
  author_tsim
52
53
  subject_tsim
@@ -83,73 +84,7 @@
83
84
  <str name="facet">true</str>
84
85
  <str name="facet.mincount">1</str>
85
86
  <str name="facet.limit">10</str>
86
- <str name="facet.field">subject_ssim</str>
87
-
88
- <str name="spellcheck">true</str>
89
- <str name="spellcheck.dictionary">default</str>
90
- <str name="spellcheck.onlyMorePopular">true</str>
91
- <str name="spellcheck.extendedResults">true</str>
92
- <str name="spellcheck.collate">false</str>
93
- <str name="spellcheck.count">5</str>
94
-
95
- </lst>
96
- <arr name="last-components">
97
- <str>spellcheck</str>
98
- </arr>
99
- </requestHandler>
100
-
101
- <requestHandler name="/advanced" class="solr.SearchHandler">
102
- <!-- a lucene request handler for using the JSON Query DSL,
103
- specifically for advanced search.
104
- Using a separate requestHandler is a workaround to
105
- https://issues.apache.org/jira/browse/SOLR-16916, although
106
- it could be desirable for other reasons as well.
107
- -->
108
- <lst name="defaults">
109
- <str name="defType">lucene</str>
110
- <str name="echoParams">explicit</str>
111
- <str name="df">title_tsim</str>
112
- <str name="qf">
113
- id
114
- full_title_tsim
115
- short_title_tsim
116
- alternative_title_tsim
117
- title_tsim
118
- author_tsim
119
- subject_tsim
120
- all_text_timv
121
- </str>
122
- <str name="pf">
123
- all_text_timv^10
124
- </str>
125
-
126
- <str name="author_qf">
127
- author_tsim
128
- </str>
129
- <str name="author_pf">
130
- </str>
131
- <str name="title_qf">
132
- title_tsim
133
- full_title_tsim
134
- short_title_tsim
135
- alternative_title_tsim
136
- </str>
137
- <str name="title_pf">
138
- </str>
139
- <str name="subject_qf">
140
- subject_tsim
141
- </str>
142
- <str name="subject_pf">
143
- </str>
144
-
145
- <str name="fl">
146
- *,
147
- score
148
- </str>
149
-
150
- <str name="facet">true</str>
151
- <str name="facet.mincount">1</str>
152
- <str name="facet.limit">10</str>
87
+ <str name="facet.field">active_fedora_model_ssi</str>
153
88
  <str name="facet.field">subject_ssim</str>
154
89
 
155
90
  <str name="spellcheck">true</str>
@@ -253,8 +188,8 @@
253
188
 
254
189
  <requestHandler name="/replication" class="solr.ReplicationHandler" startup="lazy" />
255
190
 
256
- <requestDispatcher>
257
- <requestParsers multipartUploadLimitInKB="2048" />
191
+ <requestDispatcher handleSelect="true" >
192
+ <requestParsers enableRemoteStreaming="true" multipartUploadLimitInKB="2048" />
258
193
  </requestDispatcher>
259
194
 
260
195
  <requestHandler name="/analysis/field" startup="lazy" class="solr.FieldAnalysisRequestHandler" />
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  # Copy Blacklight test support material in place
3
4
 
4
5
  # Need the requires here so we can call the generator from environment.rb
@@ -17,7 +18,7 @@ module Blacklight
17
18
  copy_file "alternate_controller.rb", "app/controllers/alternate_controller.rb"
18
19
 
19
20
  routing_code = <<-EOF
20
- resource :alternate, controller: 'alternate', only: [] do
21
+ resource :alternate, controller: 'alternate', only: [:index] do
21
22
  concerns :searchable
22
23
  end
23
24
  EOF
@@ -41,9 +42,10 @@ module Blacklight
41
42
  end
42
43
 
43
44
  def configure_action_mailer
44
- insert_into_file "config/environments/test.rb", after: "config.action_mailer.delivery_method = :test\n" do <<-EOF
45
+ insert_into_file "config/environments/test.rb", after: "config.action_mailer.delivery_method = :test\n" do
46
+ <<-EOF
45
47
  config.action_mailer.default_options = {from: 'no-reply@example.org'}
46
- EOF
48
+ EOF
47
49
  end
48
50
  end
49
51
  end
@@ -25,7 +25,7 @@ module Blacklight
25
25
  gem "devise-guests", "~> 0.8"
26
26
 
27
27
  inside destination_root do
28
- Bundler.with_clean_env do
28
+ Bundler.with_unbundled_env do
29
29
  run "bundle install"
30
30
  end
31
31
  end
@@ -36,12 +36,10 @@ module Blacklight
36
36
 
37
37
  # add the #to_s to the model.
38
38
  insert_into_file("app/models/#{model_name}.rb", before: /end(\n| )*$/) do
39
- "\n # Method added by Blacklight; Blacklight uses #to_s on your\n" \
40
- " # user class to get a user-displayable login/identifier for\n" \
41
- " # the account.\n" \
42
- " def to_s\n" \
43
- " email\n" \
44
- " end\n"
39
+ "\n # Configuration added by Blacklight; Blacklight::User uses a method key on your\n" \
40
+ " # user class to get a user-displayable login/identifier for\n" \
41
+ " # the account.\n" \
42
+ " self.string_display_key ||= :email\n"
45
43
  end
46
44
  gsub_file("config/initializers/devise.rb", "config.sign_out_via = :delete", "config.sign_out_via = :get")
47
45
  end
@@ -52,10 +50,10 @@ module Blacklight
52
50
  if File.exist?(File.expand_path(file_path, destination_root))
53
51
  inject_into_class file_path, model_name.classify do
54
52
  "\n # Connects this user object to Blacklights Bookmarks." \
55
- "\n include Blacklight::User\n"
53
+ "\n include Blacklight::User\n"
56
54
  end
57
55
  else
58
- say_status "warning", <<-EOS.strip_heredoc, :yellow
56
+ say_status "warning", <<~EOS, :yellow
59
57
  Blacklight authenticated user functionality not installed, as a user model
60
58
  could not be found at /app/models/user.rb. If you used a different name,
61
59
  please re-run the migration and provide that name as an argument. E.g.:
@@ -19,9 +19,8 @@ namespace :blacklight do
19
19
  task seed: [:environment] do
20
20
  require 'yaml'
21
21
 
22
- app_file = Rails.root && Rails.root + 'spec/fixtures/sample_solr_documents.yml'
23
- file = ENV['FILE'] ||
24
- (app_file && File.exist?(app_file) && app_file) ||
22
+ app_file = Rails.root && "#{Rails.root}spec/fixtures/sample_solr_documents.yml"
23
+ file = ENV.fetch('FILE') { (app_file && File.exist?(app_file) && app_file) } ||
25
24
  File.join(Blacklight.root, 'spec', 'fixtures', 'sample_solr_documents.yml')
26
25
  docs = YAML.safe_load(File.open(file))
27
26
  conn = Blacklight.default_index.connection
@@ -41,7 +40,7 @@ namespace :blacklight do
41
40
  exit 1
42
41
  end
43
42
  rescue => e
44
- puts e
43
+ puts e.to_s
45
44
  exit 1
46
45
  end
47
46
 
@@ -71,7 +70,7 @@ namespace :blacklight do
71
70
  end
72
71
  rescue => e
73
72
  errors += 1
74
- puts e
73
+ puts e.to_s
75
74
  end
76
75
 
77
76
  print " - search_results: "
@@ -93,7 +92,7 @@ namespace :blacklight do
93
92
  end
94
93
  rescue => e
95
94
  errors += 1
96
- puts e
95
+ puts e.to_s
97
96
  end
98
97
 
99
98
  print " - fetch: "
@@ -113,7 +112,7 @@ namespace :blacklight do
113
112
  end
114
113
  rescue => e
115
114
  errors += 1
116
- puts e
115
+ puts e.to_s
117
116
  end
118
117
 
119
118
  exit 1 if errors > 0
data/package.json CHANGED
@@ -1,18 +1,17 @@
1
1
  {
2
2
  "name": "blacklight-frontend",
3
- "version": "7.42.0",
4
- "description": "The frontend code and styles for Blacklight",
3
+ "version": "8.0.0-beta.1",
4
+ "description": "[![Build Status](https://travis-ci.com/projectblacklight/blacklight.png?branch=main)](https://travis-ci.com/projectblacklight/blacklight) [![Gem Version](https://badge.fury.io/rb/blacklight.png)](http://badge.fury.io/rb/blacklight) [![Coverage Status](https://coveralls.io/repos/github/projectblacklight/blacklight/badge.svg?branch=main)](https://coveralls.io/github/projectblacklight/blacklight?branch=main)",
5
5
  "main": "app/assets/javascripts/blacklight",
6
6
  "scripts": {
7
- "js-compile-bundle": "shx cat app/javascript/blacklight/core.js app/javascript/blacklight/autocomplete.js app/javascript/blacklight/bookmark_toggle.js app/javascript/blacklight/button_focus.js app/javascript/blacklight/checkbox_submit.js app/javascript/blacklight/facet_load.js app/javascript/blacklight/modal.js app/javascript/blacklight/search_context.js | shx sed \"s/^(import|export).*//\" | babel --filename app/javascript/blacklight/blacklight.js > app/assets/javascripts/blacklight/blacklight.js"
7
+ "js-compile-bundle": "rollup --config rollup.config.js --sourcemap && ESM=true rollup --config rollup.config.js --sourcemap"
8
8
  },
9
9
  "repository": {
10
10
  "type": "git",
11
11
  "url": "git+https://github.com/projectblacklight/blacklight.git"
12
12
  },
13
13
  "files": [
14
- "app/assets",
15
- "app/javascript"
14
+ "app/assets"
16
15
  ],
17
16
  "author": "",
18
17
  "license": "Apache-2.0",
@@ -21,15 +20,13 @@
21
20
  },
22
21
  "homepage": "https://github.com/projectblacklight/blacklight#readme",
23
22
  "devDependencies": {
24
- "@babel/cli": "^7.2.3",
25
- "@babel/core": "^7.2.3",
26
- "@babel/preset-env": "^7.16.0",
27
- "shx": "^0.3.2"
23
+ "rollup": "^2.60.0"
28
24
  },
29
- "browserslist": "> 0.25%, not dead",
25
+ "browserslist": [
26
+ "defaults",
27
+ "not IE 11"
28
+ ],
30
29
  "dependencies": {
31
- "bootstrap": ">=4.3.1 <6.0.0",
32
- "jquery": "^3.5.1",
33
- "typeahead.js": "^0.11.1"
30
+ "bootstrap": ">=4.3.1 <6.0.0"
34
31
  }
35
32
  }
data/rollup.config.js ADDED
@@ -0,0 +1,27 @@
1
+ 'use strict'
2
+
3
+ const path = require('path')
4
+
5
+ const BUNDLE = process.env.BUNDLE === 'true'
6
+ const ESM = process.env.ESM === 'true'
7
+
8
+ const fileDest = `blacklight${ESM ? '.esm' : ''}`
9
+ const external = []
10
+ const globals = {}
11
+
12
+ const rollupConfig = {
13
+ input: path.resolve(__dirname, `app/javascript/blacklight/index.js`),
14
+ output: {
15
+ file: path.resolve(__dirname, `app/assets/javascripts/blacklight/${fileDest}.js`),
16
+ format: ESM ? 'esm' : 'umd',
17
+ globals,
18
+ generatedCode: 'es2015'
19
+ },
20
+ external
21
+ }
22
+
23
+ if (!ESM) {
24
+ rollupConfig.output.name = 'Blacklight'
25
+ }
26
+
27
+ module.exports = rollupConfig