blacklight 8.11.0 → 9.0.0.beta2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (288) hide show
  1. checksums.yaml +4 -4
  2. data/.env +3 -3
  3. data/.github/matrix.json +11 -42
  4. data/.github/pull_request_template.md +7 -0
  5. data/.github/workflows/main.yml +0 -2
  6. data/.github/workflows/release_7_x_scheduled.yml +39 -0
  7. data/.github/workflows/release_8_x_scheduled.yml +39 -0
  8. data/.github/workflows/test.yml +0 -5
  9. data/.rubocop.yml +71 -3
  10. data/.rubocop_todo.yml +43 -76
  11. data/.solr_wrapper.yml +2 -0
  12. data/README.md +30 -8
  13. data/VERSION +1 -1
  14. data/app/assets/builds/blacklight.css +452 -0
  15. data/app/assets/javascripts/blacklight/blacklight.esm.js +6 -76
  16. data/app/assets/javascripts/blacklight/blacklight.esm.js.map +1 -1
  17. data/app/assets/javascripts/blacklight/blacklight.js +6 -76
  18. data/app/assets/javascripts/blacklight/blacklight.js.map +1 -1
  19. data/app/assets/stylesheets/blacklight/_balanced_list.scss +1 -4
  20. data/app/assets/stylesheets/blacklight/_blacklight_base.scss +1 -3
  21. data/app/assets/stylesheets/blacklight/_bookmark.scss +44 -41
  22. data/app/assets/stylesheets/blacklight/_bootstrap_overrides.scss +0 -25
  23. data/app/assets/stylesheets/blacklight/_constraints.scss +15 -24
  24. data/app/assets/stylesheets/blacklight/_controls.scss +2 -18
  25. data/app/assets/stylesheets/blacklight/_facets.scss +17 -84
  26. data/app/assets/stylesheets/blacklight/_group.scss +2 -5
  27. data/app/assets/stylesheets/blacklight/_header.scss +8 -11
  28. data/app/assets/stylesheets/blacklight/_icons.scss +0 -8
  29. data/app/assets/stylesheets/blacklight/_modal.scss +1 -1
  30. data/app/assets/stylesheets/blacklight/_pagination.scss +0 -4
  31. data/app/assets/stylesheets/blacklight/_search_form.scss +0 -1
  32. data/app/assets/stylesheets/blacklight/_search_history.scss +0 -8
  33. data/app/assets/stylesheets/blacklight/_search_results.scss +1 -15
  34. data/app/assets/stylesheets/blacklight/blacklight_defaults.scss +9 -14
  35. data/app/assets/stylesheets/blacklight/build.scss +4 -0
  36. data/app/components/blacklight/advanced_search_form_component.rb +3 -3
  37. data/app/components/blacklight/constraint_component.rb +1 -1
  38. data/app/components/blacklight/constraint_layout_component.html.erb +2 -2
  39. data/app/components/blacklight/constraints_component.html.erb +2 -2
  40. data/app/components/blacklight/constraints_component.rb +3 -3
  41. data/app/components/blacklight/document/bookmark_component.html.erb +3 -3
  42. data/app/components/blacklight/document/bookmark_component.rb +2 -2
  43. data/app/components/blacklight/document/group_component.html.erb +1 -1
  44. data/app/components/blacklight/document/more_like_this_component.rb +2 -2
  45. data/app/components/blacklight/document/page_header_component.rb +1 -1
  46. data/app/components/blacklight/document/sidebar_component.rb +5 -5
  47. data/app/components/blacklight/document/thumbnail_component.html.erb +3 -7
  48. data/app/components/blacklight/document/thumbnail_component.rb +7 -6
  49. data/app/components/blacklight/document_component.rb +12 -16
  50. data/app/components/blacklight/document_title_component.rb +5 -11
  51. data/app/components/blacklight/facet_field_checkboxes_component.rb +2 -20
  52. data/app/components/blacklight/facet_field_component.rb +2 -17
  53. data/app/components/blacklight/facet_field_filter_component.rb +2 -21
  54. data/app/components/blacklight/facet_field_inclusive_constraint_component.rb +4 -25
  55. data/app/components/blacklight/facet_field_list_component.rb +2 -50
  56. data/app/components/blacklight/facet_field_no_layout_component.rb +2 -10
  57. data/app/components/blacklight/facet_item_component.rb +2 -74
  58. data/app/components/blacklight/facet_item_pivot_component.rb +3 -3
  59. data/app/components/blacklight/facets/checkboxes_component.rb +26 -0
  60. data/app/components/blacklight/facets/count_component.rb +23 -0
  61. data/app/components/blacklight/{facet_field_component.html.erb → facets/field_component.html.erb} +4 -4
  62. data/app/components/blacklight/facets/field_component.rb +23 -0
  63. data/app/components/blacklight/facets/filters_component.html.erb +4 -0
  64. data/app/components/blacklight/facets/filters_component.rb +27 -0
  65. data/app/components/blacklight/{facet_field_inclusive_constraint_component.html.erb → facets/inclusive_constraint_component.html.erb} +1 -1
  66. data/app/components/blacklight/facets/inclusive_constraint_component.rb +31 -0
  67. data/app/components/blacklight/{facet_field_filter_component.html.erb → facets/index_navigation_component.html.erb} +1 -1
  68. data/app/components/blacklight/facets/index_navigation_component.rb +32 -0
  69. data/app/components/blacklight/facets/item_component.rb +73 -0
  70. data/app/components/blacklight/facets/list_component.html.erb +11 -0
  71. data/app/components/blacklight/facets/list_component.rb +38 -0
  72. data/app/components/blacklight/facets/no_layout_component.rb +16 -0
  73. data/app/components/blacklight/facets/selected_value_component.rb +29 -0
  74. data/app/components/blacklight/facets/suggest_component.html.erb +12 -0
  75. data/app/components/blacklight/facets/suggest_component.rb +22 -0
  76. data/app/components/blacklight/metadata_field_plain_text_layout_component.rb +2 -2
  77. data/app/components/blacklight/response/facet_group_component.html.erb +3 -18
  78. data/app/components/blacklight/response/facet_group_component.rb +11 -23
  79. data/app/components/blacklight/response/facet_toggle_button_component.html.erb +16 -0
  80. data/app/components/blacklight/response/facet_toggle_button_component.rb +14 -0
  81. data/app/components/blacklight/response/pagination_component.html.erb +1 -1
  82. data/app/components/blacklight/response/pagination_component.rb +2 -1
  83. data/app/components/blacklight/response/sort_component.rb +1 -0
  84. data/app/components/blacklight/response/view_type_button_component.html.erb +1 -1
  85. data/app/components/blacklight/response/view_type_component.html.erb +1 -1
  86. data/app/components/blacklight/search/per_page_component.html.erb +1 -1
  87. data/app/components/blacklight/search/per_page_component.rb +1 -0
  88. data/app/components/blacklight/search/sidebar_component.html.erb +1 -1
  89. data/app/components/blacklight/search/sidebar_component.rb +1 -1
  90. data/app/components/blacklight/search_bar_component.html.erb +3 -3
  91. data/app/components/blacklight/search_bar_component.rb +2 -2
  92. data/app/components/blacklight/search_button_component.rb +2 -2
  93. data/app/components/blacklight/search_context/server_applied_params_component.html.erb +2 -2
  94. data/app/components/blacklight/search_context/server_applied_params_component.rb +9 -0
  95. data/app/components/blacklight/skip_link_component.html.erb +1 -1
  96. data/app/components/blacklight/skip_link_component.rb +2 -1
  97. data/app/components/blacklight/top_navbar_component.html.erb +2 -2
  98. data/app/controllers/concerns/blacklight/bookmarks.rb +3 -3
  99. data/app/controllers/concerns/blacklight/catalog.rb +9 -23
  100. data/app/controllers/concerns/blacklight/controller.rb +1 -1
  101. data/app/controllers/concerns/blacklight/facetable.rb +34 -0
  102. data/app/controllers/concerns/blacklight/search_context.rb +0 -12
  103. data/app/controllers/concerns/blacklight/searchable.rb +1 -1
  104. data/app/helpers/blacklight/blacklight_helper_behavior.rb +0 -6
  105. data/app/helpers/blacklight/catalog_helper_behavior.rb +0 -10
  106. data/app/helpers/blacklight/configuration_helper_behavior.rb +2 -14
  107. data/app/helpers/blacklight/document_helper_behavior.rb +3 -27
  108. data/app/helpers/blacklight/facets_helper_behavior.rb +9 -0
  109. data/app/helpers/blacklight/icon_helper_behavior.rb +3 -11
  110. data/app/helpers/blacklight/layout_helper_behavior.rb +2 -2
  111. data/app/helpers/blacklight/render_partials_helper_behavior.rb +0 -14
  112. data/app/helpers/blacklight/url_helper_behavior.rb +1 -1
  113. data/app/javascript/{blacklight → blacklight-frontend}/bookmark_toggle.js +1 -1
  114. data/app/javascript/{blacklight → blacklight-frontend}/checkbox_submit.js +3 -0
  115. data/app/javascript/{blacklight → blacklight-frontend}/core.js +2 -10
  116. data/app/javascript/{blacklight → blacklight-frontend}/facet_suggest.js +1 -3
  117. data/app/javascript/blacklight-frontend/index.js +16 -0
  118. data/app/javascript/{blacklight → blacklight-frontend}/modal.js +1 -5
  119. data/app/models/concerns/blacklight/document.rb +0 -11
  120. data/app/models/concerns/blacklight/user.rb +1 -1
  121. data/app/models/facet_search_builder.rb +5 -0
  122. data/app/presenters/blacklight/facet_field_presenter.rb +3 -3
  123. data/app/presenters/blacklight/rendering/helper_method.rb +4 -4
  124. data/app/presenters/blacklight/rendering/join.rb +2 -2
  125. data/app/services/blacklight/facet_search_service.rb +44 -0
  126. data/app/services/blacklight/field_retriever.rb +1 -1
  127. data/app/services/blacklight/search_params_yaml_coder.rb +0 -2
  128. data/app/services/blacklight/search_service.rb +6 -6
  129. data/app/values/blacklight/types.rb +2 -2
  130. data/app/views/bookmarks/_clear_bookmarks_widget.html.erb +0 -2
  131. data/app/views/bookmarks/index.html.erb +1 -1
  132. data/app/views/catalog/_facet_pivot.html.erb +1 -1
  133. data/app/views/catalog/_home_text.html.erb +2 -2
  134. data/app/views/catalog/_results_pagination.html.erb +2 -5
  135. data/app/views/catalog/_search_results.html.erb +3 -3
  136. data/app/views/catalog/_search_results_header.html.erb +1 -1
  137. data/app/views/catalog/_sort_and_per_page.html.erb +1 -1
  138. data/app/views/catalog/_sort_widget.html.erb +1 -0
  139. data/app/views/catalog/facet.html.erb +4 -6
  140. data/app/views/catalog/show.html.erb +2 -3
  141. data/app/views/kaminari/blacklight/_paginator.html.erb +1 -2
  142. data/app/views/layouts/blacklight/base.html.erb +3 -7
  143. data/app/views/search_history/index.html.erb +0 -2
  144. data/blacklight.gemspec +4 -4
  145. data/config/importmap.rb +1 -1
  146. data/config/locales/blacklight.ar.yml +2 -2
  147. data/config/locales/blacklight.ca.yml +124 -124
  148. data/config/locales/blacklight.de.yml +2 -2
  149. data/config/locales/blacklight.en.yml +14 -14
  150. data/config/locales/blacklight.es.yml +2 -2
  151. data/config/locales/blacklight.fr.yml +2 -2
  152. data/config/locales/blacklight.hu.yml +2 -2
  153. data/config/locales/blacklight.it.yml +1 -1
  154. data/config/locales/blacklight.nl.yml +2 -2
  155. data/config/locales/blacklight.pt-BR.yml +1 -1
  156. data/config/locales/blacklight.sq.yml +2 -2
  157. data/config/locales/blacklight.zh.yml +2 -2
  158. data/lib/blacklight/abstract_repository.rb +2 -2
  159. data/lib/blacklight/abstract_search_builder.rb +154 -0
  160. data/lib/blacklight/configuration/context.rb +3 -3
  161. data/lib/blacklight/configuration/display_field.rb +1 -1
  162. data/lib/blacklight/configuration/facet_field.rb +6 -6
  163. data/lib/blacklight/configuration/field.rb +4 -4
  164. data/lib/blacklight/configuration/fields.rb +3 -4
  165. data/lib/blacklight/configuration/search_field.rb +1 -1
  166. data/lib/blacklight/configuration/view_config.rb +2 -4
  167. data/lib/blacklight/configuration.rb +11 -18
  168. data/lib/blacklight/engine.rb +0 -6
  169. data/lib/blacklight/facet_search_builder.rb +18 -0
  170. data/lib/blacklight/nested_open_struct_with_hash_access.rb +1 -1
  171. data/lib/blacklight/open_struct_with_hash_access.rb +5 -5
  172. data/lib/blacklight/search_builder.rb +1 -159
  173. data/lib/blacklight/search_state/filter_field.rb +2 -2
  174. data/lib/blacklight/search_state/pivot_filter_field.rb +4 -4
  175. data/lib/blacklight/solr/abstract_filter_query_builder.rb +77 -0
  176. data/lib/blacklight/solr/default_filter_query_builder.rb +20 -0
  177. data/lib/blacklight/solr/facet_search_builder_behavior.rb +62 -0
  178. data/lib/blacklight/solr/repository.rb +8 -9
  179. data/lib/blacklight/solr/request.rb +1 -7
  180. data/lib/blacklight/solr/response/facets.rb +2 -2
  181. data/lib/blacklight/solr/response/group_response.rb +2 -2
  182. data/lib/blacklight/solr/response/params.rb +0 -4
  183. data/lib/blacklight/solr/response.rb +5 -1
  184. data/lib/blacklight/solr/search_builder_behavior.rb +17 -132
  185. data/lib/blacklight.rb +2 -2
  186. data/lib/generators/blacklight/assets/importmap_generator.rb +6 -24
  187. data/lib/generators/blacklight/assets/propshaft_generator.rb +1 -1
  188. data/lib/generators/blacklight/assets_generator.rb +3 -3
  189. data/lib/generators/blacklight/controller_generator.rb +3 -3
  190. data/lib/generators/blacklight/search_builder_generator.rb +1 -1
  191. data/lib/generators/blacklight/templates/.solr_wrapper.yml +2 -0
  192. data/lib/generators/blacklight/templates/catalog_controller.rb +3 -1
  193. data/lib/generators/blacklight/templates/solr/conf/solrconfig.xml +0 -4
  194. data/lib/generators/blacklight/user_generator.rb +9 -10
  195. data/package.json +15 -5
  196. data/rollup.config.js +1 -1
  197. data/spec/components/blacklight/advanced_search_form_component_spec.rb +18 -22
  198. data/spec/components/blacklight/constraint_layout_component_spec.rb +8 -8
  199. data/spec/components/blacklight/constraints_component_spec.rb +11 -11
  200. data/spec/components/blacklight/document/action_component_spec.rb +21 -17
  201. data/spec/components/blacklight/document/group_component_spec.rb +10 -15
  202. data/spec/components/blacklight/document/page_header_component_spec.rb +35 -28
  203. data/spec/components/blacklight/document/sidebar_component_spec.rb +9 -30
  204. data/spec/components/blacklight/document_component_spec.rb +98 -65
  205. data/spec/components/blacklight/facet_component_spec.rb +12 -8
  206. data/spec/components/blacklight/facet_item_pivot_component_spec.rb +12 -12
  207. data/spec/components/blacklight/{facet_field_checkboxes_component_spec.rb → facets/checkboxes_component_spec.rb} +14 -14
  208. data/spec/components/blacklight/facets/filters_component_spec.rb +36 -0
  209. data/spec/components/blacklight/facets/index_navigation_component_spec.rb +40 -0
  210. data/spec/components/blacklight/{facet_item_component_spec.rb → facets/item_component_spec.rb} +10 -10
  211. data/spec/components/blacklight/{facet_field_list_component_spec.rb → facets/list_component_spec.rb} +24 -24
  212. data/spec/components/blacklight/facets/suggest_component_spec.rb +68 -0
  213. data/spec/components/blacklight/header_component_spec.rb +2 -4
  214. data/spec/components/blacklight/hidden_search_state_component_spec.rb +7 -7
  215. data/spec/components/blacklight/metadata_field_component_spec.rb +17 -15
  216. data/spec/components/blacklight/response/facet_group_component_spec.rb +37 -0
  217. data/spec/components/blacklight/response/pagination_component_spec.rb +1 -1
  218. data/spec/components/blacklight/response/spellcheck_component_spec.rb +1 -1
  219. data/spec/components/blacklight/search_bar_component_spec.rb +5 -5
  220. data/spec/components/blacklight/search_context/server_applied_params_component_spec.rb +2 -2
  221. data/spec/components/blacklight/search_context/server_item_pagination_component_spec.rb +3 -5
  222. data/spec/components/blacklight/skip_link_component_spec.rb +8 -11
  223. data/spec/components/blacklight/start_over_button_component_spec.rb +4 -4
  224. data/spec/components/blacklight/system/flash_message_component_spec.rb +7 -11
  225. data/spec/controllers/catalog_controller_spec.rb +11 -19
  226. data/spec/features/axe_spec.rb +6 -11
  227. data/spec/features/bookmarks_spec.rb +48 -11
  228. data/spec/features/facets_spec.rb +58 -63
  229. data/spec/features/search_context_spec.rb +1 -2
  230. data/spec/features/search_filters_spec.rb +6 -6
  231. data/spec/helpers/blacklight/configuration_helper_behavior_spec.rb +0 -9
  232. data/spec/helpers/blacklight/facets_helper_behavior_spec.rb +10 -0
  233. data/spec/helpers/blacklight/render_partials_helper_behavior_spec.rb +1 -1
  234. data/spec/lib/blacklight/configuration/facet_field_spec.rb +2 -2
  235. data/spec/models/blacklight/configuration_spec.rb +32 -28
  236. data/spec/models/blacklight/facet_search_builder_spec.rb +19 -0
  237. data/spec/models/blacklight/search_builder_spec.rb +1 -11
  238. data/spec/models/blacklight/solr/default_filter_query_builder_spec.rb +72 -0
  239. data/spec/models/blacklight/solr/document_spec.rb +0 -4
  240. data/spec/models/blacklight/solr/facet_search_builder_behavior_spec.rb +929 -0
  241. data/spec/models/blacklight/solr/repository_spec.rb +31 -29
  242. data/spec/models/blacklight/solr/request_spec.rb +7 -0
  243. data/spec/models/blacklight/solr/response/facets_spec.rb +86 -40
  244. data/spec/models/blacklight/solr/response/group_response_spec.rb +8 -5
  245. data/spec/models/blacklight/solr/response/group_spec.rb +9 -5
  246. data/spec/models/blacklight/solr/response_spec.rb +96 -64
  247. data/spec/models/blacklight/solr/search_builder_behavior_spec.rb +2 -227
  248. data/spec/models/solr_document_spec.rb +5 -1
  249. data/spec/services/blacklight/search_service_spec.rb +5 -26
  250. data/spec/spec_helper.rb +0 -1
  251. data/spec/support/view_component_test_helpers.rb +0 -18
  252. data/spec/views/catalog/facet.html.erb_spec.rb +10 -11
  253. data/spec/views/catalog/index.atom.builder_spec.rb +6 -3
  254. data/spec/views/catalog/index.html.erb_spec.rb +8 -3
  255. data/spec/views/catalog/show.html.erb_spec.rb +1 -0
  256. data/tasks/blacklight.rake +8 -5
  257. metadata +76 -81
  258. data/app/assets/stylesheets/blacklight/_autocomplete.scss +0 -25
  259. data/app/assets/stylesheets/blacklight/_mixins.scss +0 -20
  260. data/app/components/blacklight/facet_field_list_component.html.erb +0 -19
  261. data/app/components/blacklight/icons/legacy_icon_component.rb +0 -30
  262. data/app/components/blacklight/search/facet_suggest_input.html.erb +0 -12
  263. data/app/components/blacklight/search/facet_suggest_input.rb +0 -20
  264. data/app/javascript/blacklight/index.js +0 -18
  265. data/app/javascript/blacklight/modalForm.js +0 -60
  266. data/app/views/catalog/_constraints.html.erb +0 -1
  267. data/app/views/catalog/_facet_index_navigation.html.erb +0 -1
  268. data/app/views/catalog/_facet_layout.html.erb +0 -8
  269. data/app/views/catalog/_facet_pagination.html.erb +0 -1
  270. data/app/views/catalog/_facets.html.erb +0 -5
  271. data/app/views/catalog/_search_form.html.erb +0 -7
  272. data/app/views/catalog/_search_header.html.erb +0 -1
  273. data/app/views/catalog/_show_sidebar.html.erb +0 -3
  274. data/app/views/catalog/_show_tools.html.erb +0 -2
  275. data/app/views/catalog/_start_over.html.erb +0 -1
  276. data/app/views/shared/_header_navbar.html.erb +0 -1
  277. data/lib/generators/blacklight/assets/sprockets_generator.rb +0 -68
  278. data/spec/components/blacklight/document_metadata_component_spec.rb +0 -0
  279. data/spec/components/blacklight/search/facet_suggest_input_spec.rb +0 -57
  280. data/spec/views/catalog/_facet_index_navigation.html.erb_spec.rb +0 -43
  281. data/spec/views/catalog/_facet_layout.html.erb_spec.rb +0 -41
  282. data/spec/views/catalog/_search_header.erb_spec.rb +0 -14
  283. data/spec/views/catalog/_show_sidebar.erb_spec.rb +0 -24
  284. data/spec/views/catalog/_show_tools.html.erb_spec.rb +0 -37
  285. /data/app/components/blacklight/{facet_field_checkboxes_component.html.erb → facets/checkboxes_component.html.erb} +0 -0
  286. /data/app/javascript/{blacklight → blacklight-frontend}/button_focus.js +0 -0
  287. /data/app/javascript/{blacklight → blacklight-frontend}/debounce.js +0 -0
  288. /data/app/javascript/{blacklight → blacklight-frontend}/search_context.js +0 -0
@@ -1,60 +0,0 @@
1
- // The email and sms forms are displayed inside a modal. When the form is submitted,
2
- // this script closes the modal and puts the output on the main part of the page.
3
- // By default it is rendering catalog/sms_success and catalog/email_succcess.
4
- // These templates deliver a payload of the format used by turbo-streams.
5
- // See https://turbo.hotwired.dev/handbook/streams
6
- // That format allows a downstream application to override the template to define
7
- // multiple customizable areas of the page to get updated.
8
- export default class {
9
- constructor(errorHandler, badRequestHandler, hideModal) {
10
- this.errorHandler = errorHandler
11
- this.badRequestHandler = badRequestHandler
12
- this.hideModal = hideModal
13
- }
14
-
15
- get triggerFormSelector() {
16
- return 'form[data-blacklight-modal~=trigger]'
17
- }
18
-
19
- bind() {
20
- document.addEventListener('submit', (e) => {
21
- if (e.target.matches(this.triggerFormSelector))
22
- this.onSubmit(e)
23
- })
24
- }
25
-
26
- // This is like a light-weight version of turbo that only supports append presently.
27
- updateTurboStream(data) {
28
- this.hideModal()
29
- const domparser = new DOMParser();
30
- const dom = domparser.parseFromString(data, "text/html")
31
- dom.querySelectorAll("turbo-stream[action='append']").forEach((node) => {
32
- const target = node.getAttribute('target')
33
- const element = document.getElementById(target)
34
- if (element)
35
- element.append(node.querySelector('template').content.cloneNode(true))
36
- else
37
- console.error(`Unable to find an element on the page with and ID of "${target}""`)
38
- })
39
- }
40
-
41
- onSubmit(e) {
42
- e.preventDefault();
43
- const form = e.target
44
- fetch(form.action, {
45
- body: new FormData(form),
46
- headers: { "X-Requested-With": "XMLHttpRequest" }, // Ensures rails will return true when checking request.xhr?
47
- method: form.method,
48
- })
49
- .then(response => {
50
- if (response.status === 422) {
51
- return response.text().then(content => this.badRequestHandler(content) )
52
- }
53
- if (!response.ok) {
54
- throw new TypeError("Request failed");
55
- }
56
- response.text().then(content => this.updateTurboStream(content))
57
- })
58
- .catch(error => this.errorHandler(error))
59
- }
60
- }
@@ -1 +0,0 @@
1
- <%= render blacklight_config&.view_config(document_index_view_type)&.constraints_component.new(search_state: search_state) %>
@@ -1 +0,0 @@
1
- <%= render(Blacklight::FacetFieldFilterComponent.new(facet_field: facet_field_presenter(@facet, @display_facet))) %>
@@ -1,8 +0,0 @@
1
- <%= render(Blacklight::FacetFieldComponent.new(facet_field: facet_field_presenter(facet_field, nil))) do |component| %>
2
- <% component.with_label do %>
3
- <%= facet_field_label(facet_field.key) %>
4
- <% end %>
5
- <% component.with_body do %>
6
- <%= yield %>
7
- <% end %>
8
- <% end %>
@@ -1 +0,0 @@
1
- <%= render(Blacklight::FacetFieldPaginationComponent.new(facet_field: facet_field_presenter(@facet, @display_facet))) %>
@@ -1,5 +0,0 @@
1
- <% # this partial is deprecated. catalog/index now renders the component %>
2
- <% conf = blacklight_config.view_config(document_index_view_type) %>
3
- <%= render conf.sidebar_component.new(blacklight_config: blacklight_config,
4
- response: @response,
5
- view_config: conf) %>
@@ -1,7 +0,0 @@
1
- <%= warn "#{__file__} is a deprecated partial." %>
2
- <%= render((blacklight_config&.view_config(document_index_view_type)&.search_bar_component || Blacklight::SearchBarComponent).new(
3
- url: search_action_url,
4
- advanced_search_url: search_action_url(action: 'advanced_search'),
5
- params: search_state.params_for_search.except(:qt),
6
- presenter: presenter,
7
- autocomplete_path: suggest_index_catalog_path)) %>
@@ -1 +0,0 @@
1
- <%= render blacklight_config.view_config(document_index_view_type).search_header_component.new %>
@@ -1,3 +0,0 @@
1
- <% Blacklight.deprecation.warn('The partial catalog/_show_sidebar.html.erb will be removed in Blacklight 9.0. Configure blacklight_config.show.sidebar_component instead (default Blacklight::Search::SidebarComponent).') unless local_assigns[:silence_deprecation] %>
2
- <% presenter = document_presenter(document) %>
3
- <%= render presenter.view_config.sidebar_component.new(presenter: presenter) %>
@@ -1,2 +0,0 @@
1
- <% Blacklight.deprecation.warn('The partial _show_tools.html.erb will be removed in Blacklight 9.0. Configure blacklight_config.show.show_tools_component instead (default Blacklight::Document::ShowToolsComponent).') unless local_assigns[:silence_deprecation] %>
2
- <%= render Blacklight::Document::ShowToolsComponent.new(document: document) %>
@@ -1 +0,0 @@
1
- <%= render Blacklight::StartOverButtonComponent.new %>
@@ -1 +0,0 @@
1
- <%= render blacklight_config.header_component.new(blacklight_config: blacklight_config) %>
@@ -1,68 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Blacklight
4
- module Assets
5
- class SprocketsGenerator < Rails::Generators::Base
6
- class_option :'bootstrap-version', type: :string, default: ENV.fetch('BOOTSTRAP_VERSION', '~> 5.3'), desc: "Set the generated app's bootstrap version"
7
-
8
- # This could be skipped if you want to use webpacker
9
- def add_javascript_dependencies
10
- gem 'bootstrap', options[:'bootstrap-version'].presence
11
- gem 'jquery-rails' if bootstrap_4? # Bootstrap 4 has a dependency on jquery
12
- end
13
-
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'
19
-
20
- append_to_file 'app/assets/config/manifest.js', "\n//= link application.js"
21
- append_to_file 'app/assets/config/manifest.js', "\n//= link blacklight/manifest.js"
22
- empty_directory 'app/assets/images'
23
- end
24
-
25
- def assets
26
- create_file 'app/assets/stylesheets/blacklight.scss' do
27
- <<~CONTENT
28
- @import 'bootstrap';
29
- @import 'blacklight/blacklight';
30
- CONTENT
31
- end
32
-
33
- gem "sassc-rails", "~> 2.1" if Rails.version > '7'
34
-
35
- # Ensure this method is idempotent
36
- return if has_blacklight_assets?
37
-
38
- create_file 'app/assets/javascripts/application.js' do
39
- <<~CONTENT
40
- //= require rails-ujs
41
- #{'//= require jquery3' if bootstrap_4?}
42
-
43
- // Required by Blacklight
44
- //= require popper
45
- //= require bootstrap
46
- //= require blacklight/blacklight
47
- CONTENT
48
- end
49
- end
50
-
51
- private
52
-
53
- def bootstrap_4?
54
- options[:'bootstrap-version'].match?(/\A[^0-9]*4\./)
55
- end
56
-
57
- def has_blacklight_assets?
58
- application_js.include?('blacklight/blacklight')
59
- end
60
-
61
- def application_js
62
- path = File.expand_path("app/assets/javascripts/application.js", destination_root)
63
-
64
- File.exist?(path) ? File.read(path) : ''
65
- end
66
- end
67
- end
68
- end
@@ -1,57 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- RSpec.describe Blacklight::Search::FacetSuggestInput, type: :component do
6
- let(:facet) { Blacklight::Configuration::FacetField.new key: 'language_facet', suggest: true }
7
- let(:presenter) { instance_double(Blacklight::FacetFieldPresenter) }
8
- let(:view_context) { double(ActionView::Base) }
9
-
10
- before do
11
- allow(presenter).to receive_messages(label: 'Language', view_context: view_context)
12
- allow(view_context).to receive(:search_facet_path).and_return('/catalog/facet/language_facet')
13
- end
14
-
15
- it 'has an input with the facet-suggest class, which the javascript needs to find it' do
16
- rendered = render_inline(described_class.new(facet: facet, presenter: presenter))
17
- expect(rendered.css("input.facet-suggest").count).to eq 1
18
- end
19
-
20
- it 'has an input with the data-facet-field attribute, which the javascript needs to determine the correct query' do
21
- rendered = render_inline(described_class.new(facet: facet, presenter: presenter))
22
- expect(rendered.css('input[data-facet-field="language_facet"]').count).to eq 1
23
- end
24
-
25
- it 'has an input with the data-facet-search-context attribute, which the javascript needs to determine the current search context' do
26
- allow(view_context).to receive(:search_facet_path).and_return('/catalog/facet/language_facet?f%5Bformat%5D%5B%5D=Book&facet.prefix=R&facet.sort=index&q=tibet&search_field=all_fields')
27
- rendered = render_inline(described_class.new(facet: facet, presenter: presenter))
28
- expect(rendered.css('input[data-facet-search-context="/catalog/facet/language_facet?f%5Bformat%5D%5B%5D=Book&facet.prefix=R&facet.sort=index&q=tibet&search_field=all_fields"]').count).to eq 1
29
- end
30
-
31
- it 'has a visible label that is associated with the input' do
32
- rendered = render_inline(described_class.new(facet: facet, presenter: presenter))
33
- label = rendered.css('label').first
34
- expect(label.text.strip).to eq 'Filter Language'
35
-
36
- id_in_label_for = label.attribute('for').text
37
- expect(id_in_label_for).to eq('facet_suggest_language_facet')
38
-
39
- expect(rendered.css('input').first.attribute('id').text).to eq id_in_label_for
40
- end
41
-
42
- context 'when the facet is explicitly configured to suggest: false' do
43
- let(:facet) { Blacklight::Configuration::FacetField.new key: 'language_facet', suggest: false }
44
-
45
- it 'does not display' do
46
- expect(render_inline(described_class.new(facet: facet, presenter: presenter)).to_s).to eq ''
47
- end
48
- end
49
-
50
- context 'when the facet is not explicitly configured with a suggest key' do
51
- let(:facet) { Blacklight::Configuration::FacetField.new key: 'language_facet' }
52
-
53
- it 'does not display' do
54
- expect(render_inline(described_class.new(facet: facet, presenter: presenter)).to_s).to eq ''
55
- end
56
- end
57
- end
@@ -1,43 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe 'catalog/_facet_index_navigation.html.erb' do
4
- let(:pagination) { Blacklight::Solr::FacetPaginator.new([]) }
5
- let(:facet) { Blacklight::Configuration::FacetField.new(index_range: '0'..'9', presenter: Blacklight::FacetFieldPresenter) }
6
- let(:display_facet) { double(items: [], offset: 0, prefix: '', sort: 'index') }
7
- let(:blacklight_config) { Blacklight::Configuration.new }
8
-
9
- before do
10
- assign(:display_facet, display_facet)
11
- assign(:facet, facet)
12
- allow(view).to receive_messages(blacklight_config: blacklight_config, facet_limit_for: 10)
13
- controller.request.path_parameters[:action] = 'index'
14
- end
15
-
16
- it 'renders the facet index navigation range' do
17
- render
18
- expect(rendered).to have_css '.pagination'
19
- expect(rendered).to have_link '0', href: '/?facet.prefix=0&facet.sort=index'
20
- expect(rendered).to have_link '1'
21
- expect(rendered).to have_link '8'
22
- expect(rendered).to have_link '9'
23
- end
24
-
25
- it 'renders an "all" button' do
26
- render
27
- expect(rendered).to have_css '.page-link', text: 'All'
28
- end
29
-
30
- context 'with a selected index' do
31
- let(:display_facet) { double(items: [], offset: 0, prefix: '5', sort: 'index') }
32
-
33
- it 'highlights the selected index' do
34
- render
35
- expect(rendered).to have_css '.active', text: '5'
36
- end
37
-
38
- it 'enables the clear facets button' do
39
- render
40
- expect(rendered).to have_link 'All'
41
- end
42
- end
43
- end
@@ -1,41 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe "catalog/facet_layout" do
4
- let :blacklight_config do
5
- Blacklight::Configuration.new do |config|
6
- config.facet_fields[facet_field.field] = facet_field
7
- end
8
- end
9
-
10
- let :facet_field do
11
- Blacklight::Configuration::FacetField.new(field: 'some_field').normalize!
12
- end
13
-
14
- before do
15
- allow(view).to receive_messages(blacklight_config: blacklight_config)
16
- end
17
-
18
- it "has a facet-specific class" do
19
- render partial: 'catalog/facet_layout', locals: { facet_field: facet_field }
20
- expect(rendered).to have_css '.blacklight-some_field'
21
- end
22
-
23
- it "has a title with a link for a11y" do
24
- render partial: 'catalog/facet_layout', locals: { facet_field: facet_field }
25
- expect(rendered).to have_css 'h3', text: 'Some Field'
26
- end
27
-
28
- it "is collapsable" do
29
- render partial: 'catalog/facet_layout', locals: { facet_field: facet_field }
30
- expect(rendered).to have_css 'button.collapsed[data-toggle="collapse"][data-bs-toggle="collapse"][aria-expanded="false"]'
31
- expect(rendered).to have_css '.collapse .card-body'
32
- end
33
-
34
- it "is configured to be open by default" do
35
- allow(facet_field).to receive_messages(collapse: false)
36
- render partial: 'catalog/facet_layout', locals: { facet_field: facet_field }
37
- expect(rendered).to have_css 'button[data-toggle="collapse"][data-bs-toggle="collapse"][aria-expanded="true"]'
38
- expect(rendered).to have_no_css '.card-header.collapsed'
39
- expect(rendered).to have_css '.collapse.show .card-body'
40
- end
41
- end
@@ -1,14 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # spec for sidebar partial in catalog show view
4
-
5
- RSpec.describe "/catalog/_search_header.html.erb" do
6
- it "renders the default search header partials" do
7
- stub_template "_did_you_mean.html.erb" => "did_you_mean"
8
- stub_template "_sort_and_per_page.html.erb" => "sort_and_per_page"
9
- allow(view).to receive(:blacklight_config).and_return(CatalogController.blacklight_config)
10
- render
11
- expect(rendered).to match /did_you_mean/
12
- expect(rendered).to match /sort_and_per_page/
13
- end
14
- end
@@ -1,24 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # spec for sidebar partial in catalog show view
4
-
5
- RSpec.describe "catalog/_show_sidebar.html.erb" do
6
- let(:blacklight_config) do
7
- Blacklight::Configuration.new do |config|
8
- config.index.title_field = 'title_tsim'
9
- config.index.sidebar_component = Blacklight::Document::SidebarComponent
10
- end
11
- end
12
-
13
- before do
14
- allow(view).to receive_messages(blacklight_config: blacklight_config, has_user_authentication_provider?: false, document_actions: [], session_tracking_params: {})
15
- end
16
-
17
- it "shows more-like-this titles in the sidebar" do
18
- document = SolrDocument.new id: 1, title_s: 'abc', format: 'default'
19
- allow(document).to receive(:more_like_this).and_return([SolrDocument.new('id' => '2', 'title_tsim' => 'Title of MLT Document')])
20
- render 'catalog/show_sidebar', document: document
21
- expect(rendered).to include("More Like This")
22
- expect(rendered).to include("Title of MLT Document")
23
- end
24
- end
@@ -1,37 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe "catalog/_show_tools.html.erb" do
4
- let(:document) { SolrDocument.new id: 'xyz', format: 'a' }
5
- let(:blacklight_config) { Blacklight::Configuration.new }
6
- let(:component) { instance_double(Blacklight::Document::ShowToolsComponent) }
7
-
8
- before do
9
- allow(Blacklight::Document::ShowToolsComponent).to receive(:new).and_return(component)
10
- allow(view).to receive(:render).with(component)
11
- allow(view).to receive(:render).with('catalog/show_tools', { document: document }).and_call_original
12
- allow(view).to receive_messages(blacklight_config: blacklight_config, has_user_authentication_provider?: false)
13
- end
14
-
15
- describe "document actions" do
16
- let(:document_actions) { blacklight_config.show.document_actions }
17
-
18
- it "renders a document action" do
19
- allow(view).to receive(:some_action_solr_document_path).with(document, any_args).and_return 'x'
20
- document_actions[:some_action] = Blacklight::Configuration::ToolConfig.new key: :some_action, name: :some_action, partial: 'document_action'
21
- render 'catalog/show_tools', document: document
22
- expect(view).to have_received(:render).with(component)
23
- end
24
-
25
- context 'without any document actions defined' do
26
- before do
27
- document_actions.clear
28
- end
29
-
30
- it 'does not display the tools' do
31
- render 'catalog/show_tools', document: document
32
-
33
- expect(rendered).to be_blank
34
- end
35
- end
36
- end
37
- end