blacklight 8.9.0 → 9.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 (185) hide show
  1. checksums.yaml +4 -4
  2. data/.env +3 -3
  3. data/.github/pull_request_template.md +7 -0
  4. data/.github/workflows/ruby.yml +1 -9
  5. data/.rubocop.yml +2 -2
  6. data/.rubocop_todo.yml +0 -9
  7. data/README.md +30 -8
  8. data/VERSION +1 -1
  9. data/app/assets/builds/blacklight.css +448 -0
  10. data/app/assets/javascripts/blacklight/blacklight.esm.js +5 -36
  11. data/app/assets/javascripts/blacklight/blacklight.esm.js.map +1 -1
  12. data/app/assets/javascripts/blacklight/blacklight.js +5 -36
  13. data/app/assets/javascripts/blacklight/blacklight.js.map +1 -1
  14. data/app/assets/stylesheets/blacklight/_balanced_list.scss +1 -4
  15. data/app/assets/stylesheets/blacklight/_blacklight_base.scss +1 -3
  16. data/app/assets/stylesheets/blacklight/_bookmark.scss +44 -41
  17. data/app/assets/stylesheets/blacklight/_bootstrap_overrides.scss +0 -29
  18. data/app/assets/stylesheets/blacklight/_constraints.scss +15 -24
  19. data/app/assets/stylesheets/blacklight/_controls.scss +2 -18
  20. data/app/assets/stylesheets/blacklight/_facets.scss +15 -82
  21. data/app/assets/stylesheets/blacklight/_group.scss +2 -5
  22. data/app/assets/stylesheets/blacklight/_header.scss +4 -11
  23. data/app/assets/stylesheets/blacklight/_icons.scss +0 -8
  24. data/app/assets/stylesheets/blacklight/_modal.scss +9 -10
  25. data/app/assets/stylesheets/blacklight/_pagination.scss +3 -5
  26. data/app/assets/stylesheets/blacklight/_search_form.scss +0 -1
  27. data/app/assets/stylesheets/blacklight/_search_history.scss +0 -4
  28. data/app/assets/stylesheets/blacklight/_search_results.scss +1 -15
  29. data/app/assets/stylesheets/blacklight/blacklight_defaults.scss +9 -17
  30. data/app/assets/stylesheets/blacklight/build.scss +4 -0
  31. data/app/components/blacklight/advanced_search_form_component.rb +1 -1
  32. data/app/components/blacklight/constraint_component.rb +1 -1
  33. data/app/components/blacklight/constraint_layout_component.html.erb +2 -2
  34. data/app/components/blacklight/constraints_component.html.erb +2 -2
  35. data/app/components/blacklight/constraints_component.rb +1 -1
  36. data/app/components/blacklight/document/action_component.rb +3 -1
  37. data/app/components/blacklight/document/bookmark_component.html.erb +3 -3
  38. data/app/components/blacklight/document/group_component.html.erb +1 -1
  39. data/app/components/blacklight/document/page_header_component.rb +1 -1
  40. data/app/components/blacklight/document/sidebar_component.rb +5 -5
  41. data/app/components/blacklight/document_component.rb +9 -13
  42. data/app/components/blacklight/document_title_component.rb +3 -2
  43. data/app/components/blacklight/facet_field_component.html.erb +5 -5
  44. data/app/components/blacklight/facet_field_list_component.rb +4 -22
  45. data/app/components/blacklight/facet_field_pagination_component.html.erb +2 -2
  46. data/app/components/blacklight/facet_item_component.rb +2 -2
  47. data/app/components/blacklight/facet_item_pivot_component.rb +2 -2
  48. data/app/components/blacklight/response/facet_group_component.html.erb +3 -18
  49. data/app/components/blacklight/response/facet_group_component.rb +7 -23
  50. data/app/components/blacklight/response/facet_toggle_button_component.html.erb +16 -0
  51. data/app/components/blacklight/response/facet_toggle_button_component.rb +14 -0
  52. data/app/components/blacklight/response/pagination_component.html.erb +1 -1
  53. data/app/components/blacklight/response/pagination_component.rb +2 -1
  54. data/app/components/blacklight/response/sort_component.rb +1 -0
  55. data/app/components/blacklight/response/view_type_button_component.html.erb +1 -1
  56. data/app/components/blacklight/response/view_type_component.html.erb +1 -1
  57. data/app/components/blacklight/search/facet_suggest_input.html.erb +7 -10
  58. data/app/components/blacklight/search/facet_suggest_input.rb +0 -4
  59. data/app/components/blacklight/search/per_page_component.html.erb +1 -1
  60. data/app/components/blacklight/search/per_page_component.rb +1 -0
  61. data/app/components/blacklight/search/sidebar_component.html.erb +1 -1
  62. data/app/components/blacklight/search/sidebar_component.rb +1 -1
  63. data/app/components/blacklight/search_bar_component.html.erb +3 -3
  64. data/app/components/blacklight/search_bar_component.rb +2 -2
  65. data/app/components/blacklight/search_button_component.rb +2 -2
  66. data/app/components/blacklight/search_context/server_applied_params_component.html.erb +2 -2
  67. data/app/components/blacklight/search_context/server_applied_params_component.rb +9 -0
  68. data/app/components/blacklight/skip_link_component.html.erb +1 -1
  69. data/app/components/blacklight/skip_link_component.rb +7 -3
  70. data/app/components/blacklight/skip_link_item_component.rb +18 -0
  71. data/app/components/blacklight/system/dropdown_component.html.erb +1 -1
  72. data/app/components/blacklight/system/dropdown_component.rb +1 -1
  73. data/app/components/blacklight/top_navbar_component.html.erb +1 -1
  74. data/app/controllers/concerns/blacklight/catalog.rb +3 -2
  75. data/app/controllers/concerns/blacklight/search_context.rb +0 -12
  76. data/app/helpers/blacklight/blacklight_helper_behavior.rb +0 -6
  77. data/app/helpers/blacklight/catalog_helper_behavior.rb +1 -11
  78. data/app/helpers/blacklight/configuration_helper_behavior.rb +0 -12
  79. data/app/helpers/blacklight/document_helper_behavior.rb +0 -26
  80. data/app/helpers/blacklight/icon_helper_behavior.rb +1 -9
  81. data/app/helpers/blacklight/layout_helper_behavior.rb +2 -2
  82. data/app/helpers/blacklight/render_partials_helper_behavior.rb +0 -14
  83. data/app/helpers/blacklight/url_helper_behavior.rb +1 -1
  84. data/app/javascript/{blacklight → blacklight-frontend}/bookmark_toggle.js +1 -1
  85. data/app/javascript/{blacklight → blacklight-frontend}/core.js +2 -10
  86. data/app/javascript/{blacklight → blacklight-frontend}/debounce.js +1 -1
  87. data/app/javascript/blacklight-frontend/facet_suggest.js +26 -0
  88. data/app/javascript/blacklight-frontend/index.js +18 -0
  89. data/app/javascript/{blacklight → blacklight-frontend}/modal.js +1 -2
  90. data/app/models/concerns/blacklight/document.rb +0 -11
  91. data/app/models/concerns/blacklight/user.rb +1 -1
  92. data/app/presenters/blacklight/facet_field_presenter.rb +2 -2
  93. data/app/presenters/blacklight/json_presenter.rb +3 -1
  94. data/app/services/blacklight/search_params_yaml_coder.rb +0 -2
  95. data/app/views/bookmarks/_clear_bookmarks_widget.html.erb +0 -2
  96. data/app/views/bookmarks/index.html.erb +1 -1
  97. data/app/views/catalog/_results_pagination.html.erb +2 -5
  98. data/app/views/catalog/_search_results.html.erb +4 -4
  99. data/app/views/catalog/_search_results_header.html.erb +1 -1
  100. data/app/views/catalog/_sort_and_per_page.html.erb +1 -1
  101. data/app/views/catalog/_sort_widget.html.erb +1 -0
  102. data/app/views/catalog/facet.html.erb +9 -9
  103. data/app/views/catalog/show.html.erb +2 -3
  104. data/app/views/kaminari/blacklight/_paginator.html.erb +1 -2
  105. data/app/views/layouts/blacklight/base.html.erb +3 -7
  106. data/app/views/search_history/index.html.erb +0 -2
  107. data/blacklight.gemspec +4 -4
  108. data/config/importmap.rb +1 -1
  109. data/config/locales/blacklight.ar.yml +4 -4
  110. data/config/locales/blacklight.ca.yml +124 -124
  111. data/config/locales/blacklight.de.yml +2 -2
  112. data/config/locales/blacklight.en.yml +14 -14
  113. data/config/locales/blacklight.es.yml +4 -4
  114. data/config/locales/blacklight.fr.yml +4 -4
  115. data/config/locales/blacklight.hu.yml +4 -4
  116. data/config/locales/blacklight.it.yml +3 -3
  117. data/config/locales/blacklight.nl.yml +3 -3
  118. data/config/locales/blacklight.pt-BR.yml +3 -3
  119. data/config/locales/blacklight.sq.yml +4 -4
  120. data/config/locales/blacklight.zh.yml +4 -4
  121. data/lib/blacklight/configuration/display_field.rb +1 -1
  122. data/lib/blacklight/configuration/fields.rb +3 -3
  123. data/lib/blacklight/configuration/view_config.rb +0 -2
  124. data/lib/blacklight/configuration.rb +7 -12
  125. data/lib/blacklight/engine.rb +0 -6
  126. data/lib/blacklight/open_struct_with_hash_access.rb +4 -4
  127. data/lib/blacklight/search_builder.rb +4 -4
  128. data/lib/blacklight/search_state/filter_field.rb +2 -2
  129. data/lib/blacklight/solr/request.rb +1 -7
  130. data/lib/blacklight/solr/response/group_response.rb +2 -2
  131. data/lib/blacklight.rb +1 -1
  132. data/lib/generators/blacklight/assets/importmap_generator.rb +8 -24
  133. data/lib/generators/blacklight/assets/propshaft_generator.rb +1 -1
  134. data/lib/generators/blacklight/assets_generator.rb +3 -3
  135. data/lib/generators/blacklight/controller_generator.rb +3 -3
  136. data/lib/generators/blacklight/user_generator.rb +9 -10
  137. data/package.json +14 -4
  138. data/rollup.config.js +1 -1
  139. data/spec/components/blacklight/document/action_component_spec.rb +1 -5
  140. data/spec/components/blacklight/document/sidebar_component_spec.rb +5 -20
  141. data/spec/components/blacklight/facet_field_checkboxes_component_spec.rb +2 -2
  142. data/spec/components/blacklight/facet_field_list_component_spec.rb +2 -2
  143. data/spec/components/blacklight/search/facet_suggest_input_spec.rb +3 -27
  144. data/spec/components/blacklight/search_bar_component_spec.rb +1 -1
  145. data/spec/controllers/catalog_controller_spec.rb +1 -1
  146. data/spec/features/axe_spec.rb +6 -11
  147. data/spec/features/bookmarks_spec.rb +48 -11
  148. data/spec/features/facets_spec.rb +22 -90
  149. data/spec/features/search_context_spec.rb +1 -2
  150. data/spec/features/search_filters_spec.rb +6 -6
  151. data/spec/helpers/blacklight/configuration_helper_behavior_spec.rb +0 -9
  152. data/spec/helpers/blacklight/render_partials_helper_behavior_spec.rb +1 -1
  153. data/spec/lib/blacklight/parameters_spec.rb +1 -12
  154. data/spec/lib/blacklight/search_state/filter_field_spec.rb +0 -18
  155. data/spec/models/blacklight/solr/request_spec.rb +7 -0
  156. data/spec/services/blacklight/search_service_spec.rb +1 -1
  157. data/spec/test_app_templates/Gemfile.extra +0 -1
  158. data/spec/views/catalog/_facet_layout.html.erb_spec.rb +3 -3
  159. data/spec/views/catalog/facet.html.erb_spec.rb +0 -8
  160. data/spec/views/catalog/index.html.erb_spec.rb +6 -3
  161. data/spec/views/catalog/show.html.erb_spec.rb +1 -0
  162. data/tasks/blacklight.rake +8 -5
  163. metadata +30 -59
  164. data/app/assets/stylesheets/blacklight/_autocomplete.scss +0 -25
  165. data/app/assets/stylesheets/blacklight/_mixins.scss +0 -20
  166. data/app/components/blacklight/icons/legacy_icon_component.rb +0 -30
  167. data/app/javascript/blacklight/facet_suggest.js +0 -48
  168. data/app/javascript/blacklight/index.js +0 -18
  169. data/app/views/catalog/_constraints.html.erb +0 -1
  170. data/app/views/catalog/_facets.html.erb +0 -5
  171. data/app/views/catalog/_search_form.html.erb +0 -7
  172. data/app/views/catalog/_search_header.html.erb +0 -1
  173. data/app/views/catalog/_show_sidebar.html.erb +0 -3
  174. data/app/views/catalog/_show_tools.html.erb +0 -2
  175. data/app/views/catalog/_start_over.html.erb +0 -1
  176. data/app/views/shared/_header_navbar.html.erb +0 -1
  177. data/lib/generators/blacklight/assets/sprockets_generator.rb +0 -68
  178. data/spec/components/blacklight/system/dropdown_component_spec.rb +0 -26
  179. data/spec/views/catalog/_search_header.erb_spec.rb +0 -14
  180. data/spec/views/catalog/_show_sidebar.erb_spec.rb +0 -24
  181. data/spec/views/catalog/_show_tools.html.erb_spec.rb +0 -37
  182. /data/app/javascript/{blacklight → blacklight-frontend}/button_focus.js +0 -0
  183. /data/app/javascript/{blacklight → blacklight-frontend}/checkbox_submit.js +0 -0
  184. /data/app/javascript/{blacklight → blacklight-frontend}/modalForm.js +0 -0
  185. /data/app/javascript/{blacklight → blacklight-frontend}/search_context.js +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 95e6ef5c6f0afc82c94cb103d5f6ccfc4b0a1bf8aa957532d013a60e6e0de952
4
- data.tar.gz: bf57b22fbcfd8610ca6dac7ad5d6a60e61c54da0f41f9d859e5ebcf958c664fa
3
+ metadata.gz: a4ffba1fbfab58e820f1953e4c0b1ff8d3bbcd57da645c10a44aa2f0a09f4a7a
4
+ data.tar.gz: 323b2afff4d4a8b308486ad81978b64f3a88aa8414e890ea5563bd3ae7820d0e
5
5
  SHA512:
6
- metadata.gz: b7d3c4c0811a991e40b680fae1b4efc4480aa04aa0072d3feb99659a7eec971fc49fe4602fc1b94b11591a1adc71b984d63dcb7561d59a63bde615a90586393e
7
- data.tar.gz: 0c96e8d7597ad412792cacb1a64b1ad078d389508d3027d0b4de0f2908fce766a60c60e53ef150292d5050295d0129fb75938f6cdba382fee6b8d22a5f0e4e92
6
+ metadata.gz: 8d3bbad62d2d7ecfa2b19657d43dab0186e6a945dbd6093c120f2fa5ba833be91b78f75ccd73379008bfb20e199a44702ce49000ce5561203baae41029a5cd3f
7
+ data.tar.gz: 6a2837ca8deb3fd6650b947197d8dd5c5320631a339ac04a3e804aa1cc930050c50ed097f6fbff27ad3e50aab1c84b0bfe2817e91a466926dc0d0fd0202945b8
data/.env CHANGED
@@ -1,6 +1,6 @@
1
- ALPINE_RUBY_VERSION=3.1.6
2
- RAILS_VERSION=6.1.4.6
3
- VIEW_COMPONENT_VERSION=3.12.1
1
+ ALPINE_RUBY_VERSION=3.3
2
+ RAILS_VERSION=7.2.1
3
+ VIEW_COMPONENT_VERSION=3.14.0
4
4
  SOLR_PORT=8983
5
5
  SOLR_URL=http://solr:8983/solr/blacklight-core
6
6
  SOLR_VERSION=latest
@@ -0,0 +1,7 @@
1
+ <!--
2
+ Thanks for contributing to Blacklight!
3
+
4
+ If you changed any SASS files in this pull-request, ensure you have built the CSS.
5
+ You can do this by running `npm run build` and commit the resulting changes to `app/assets/builds/blacklight.css`
6
+
7
+ -->
@@ -57,18 +57,10 @@ jobs:
57
57
  additional_name: "Solr 8.11.2"
58
58
  - ruby: "3.1"
59
59
  rails_version: "7.1.5.1"
60
- - ruby: "3.1"
61
- rails_version: "7.1.5.1"
62
- view_component_version: "~> 2.74"
63
- additional_name: "/ ViewComponent 2"
64
- - ruby: "3.1"
60
+ - ruby: "3.3"
65
61
  rails_version: "7.1.5.1"
66
62
  additional_name: "/ Propshaft"
67
63
  additional_engine_cart_rails_options: -a propshaft --css=bootstrap
68
- - ruby: "3.1"
69
- rails_version: "7.1.5.1"
70
- bootstrap_version: "~> 4.0"
71
- additional_name: "/ Bootstrap 4"
72
64
  - ruby: "3.3"
73
65
  rails_version: "7.1.5.1"
74
66
  api: "true"
data/.rubocop.yml CHANGED
@@ -10,8 +10,8 @@ inherit_from:
10
10
 
11
11
  AllCops:
12
12
  DisplayCopNames: true
13
- TargetRubyVersion: 3.0
14
- TargetRailsVersion: 6.1
13
+ TargetRubyVersion: 3.1
14
+ TargetRailsVersion: 7.0
15
15
  Exclude:
16
16
  - "lib/generators/blacklight/templates/**/*"
17
17
  - "blacklight.gemspec"
data/.rubocop_todo.yml CHANGED
@@ -19,15 +19,6 @@ Capybara/VisibilityMatcher:
19
19
  - 'spec/features/search_filters_spec.rb'
20
20
  - 'spec/helpers/blacklight_helper_spec.rb'
21
21
 
22
- # Offense count: 5
23
- # This cop supports safe autocorrection (--autocorrect).
24
- # Configuration parameters: EnforcedStyle.
25
- # SupportedStyles: leading, trailing
26
- Layout/LineContinuationLeadingSpace:
27
- Exclude:
28
- - 'lib/generators/blacklight/controller_generator.rb'
29
- - 'lib/generators/blacklight/user_generator.rb'
30
-
31
22
  # Offense count: 1
32
23
  # This cop supports safe autocorrection (--autocorrect).
33
24
  # Configuration parameters: AllowedMethods, AllowedPatterns.
data/README.md CHANGED
@@ -2,6 +2,14 @@
2
2
 
3
3
  ![CI Workflow](https://github.com/projectblacklight/blacklight/actions/workflows/ruby.yml/badge.svg)
4
4
 
5
+ ## Branches
6
+
7
+ * The `main` branch is currently where we do new development for the upcoming 9.0 release.
8
+ * The `8.x` series is on the [release-8.x](https://github.com/projectblacklight/blacklight/tree/release-8.x) branch
9
+ * The `7.x` series is on the [release-7.x](https://github.com/projectblacklight/blacklight/tree/release-7.x) branch
10
+ * The `6.x` series is on the [release-6.x](https://github.com/projectblacklight/blacklight/tree/release-6.x) branch
11
+
12
+ ## Description
5
13
 
6
14
  Blacklight is an open source Solr user interface discovery platform.
7
15
  You can use Blacklight to enable searching and browsing of your collections.
@@ -53,15 +61,29 @@ Code contributions are always welcome, instructions for contributing can be foun
53
61
  You'll also want some information about how Blacklight expects [Apache Solr](http://lucene.apache.org/solr ) to run, which you can find in [Solr Configuration](https://github.com/projectblacklight/blacklight/wiki/Solr-Configuration#solr-configuration)
54
62
 
55
63
  ## Building the javascript
56
- The javascript is built by npm from sources in `app/javascript` into a bundle
57
- in `app/assets/javascripts/blacklight/blacklight.js`. This file should not be edited
58
- by hand as any changes would be overwritten. When any of the javascript
59
- components in the gem are changed, this bundle should be rebuild with the
60
- following steps:
64
+ The javascript includes some derivative combination files that are built at release time, that can be used by some javascript pipelines. The derivatives are placed at `app/assets/javascripts/blacklight`, and files there should not be edited by hand.
65
+
66
+ When any of the javascript components in the gem are changed, you may have to rebuild these derivative files.
67
+
68
+
61
69
  1. [Install npm](https://www.npmjs.com/get-npm)
62
- 1. run `npm install` to download dependencies
63
- 1. run `npm run prepare` to build the bundle
64
- 1. run `npm publish` to push the javascript package to https://npmjs.org/package/blacklight-frontend
70
+ 1. run `bundle exec rake build:npm`
71
+ (just runs `npm install` to download dependencies and `npm run prepare` to build the bundle)
72
+
73
+
74
+ ## Releasing versions
75
+
76
+ You always need to release both the rubygem and npm package simultaneously. For more information, see [wiki](https://github.com/projectblacklight/blacklight/wiki/How-to-release-a-version)
77
+
78
+ Summary of technical steps:
79
+
80
+ 1. Make sure `./package.json` and `./VERSION` files have correct and matching versions.
81
+ 1. Release ruby gem with `bundle exec rake release`
82
+ 1. Release npm package
83
+ 1. Build derivative products included in release with `bundle exec rake build:npm`
84
+ 1. Publish with `npm publish`.
85
+
86
+
65
87
 
66
88
  ## Using the javascript
67
89
  Blacklight ships with Javascript that can be compiled either by Webpacker or by
data/VERSION CHANGED
@@ -1 +1 @@
1
- 8.9.0
1
+ 9.0.0.beta1
@@ -0,0 +1,448 @@
1
+ /* This is the default blacklight theme. */
2
+ /* This file is generated by Blacklight. You probably don't want to edit
3
+ this file directly, or you'll have to manually merge your changes if later
4
+ versions of Blacklight change this file. Instead, use your own CSS file
5
+ which over-rides things in this file. Or of course you can choose
6
+ not to use the Blacklight CSS file at all in your local app. */
7
+ :root {
8
+ --bl-logo-image: url("blacklight/logo.png");
9
+ --bl-logo-width: 150px;
10
+ --bl-logo-height: 50px;
11
+ --bs-secondary-color: rgba(
12
+ 33,
13
+ 37,
14
+ 41,
15
+ 0.75
16
+ ); /* for compatability with BS < 5.3 */
17
+ --bl-main-padding-y: 0.5rem;
18
+ --bl-constraint-remove-hover-bg: #bb2d3b;
19
+ --bl-constraint-remove-hover-border-color: #bb2d3b;
20
+ --bl-field-name-color: var(--bs-secondary-color);
21
+ }
22
+
23
+ .page-link {
24
+ white-space: nowrap;
25
+ }
26
+
27
+ dialog.modal[open] {
28
+ display: block;
29
+ background: none;
30
+ border: none;
31
+ max-height: unset;
32
+ max-width: unset;
33
+ }
34
+
35
+ /* Generic layout stuff */
36
+ main {
37
+ padding-block: var(--bl-main-padding-y);
38
+ }
39
+
40
+ /*
41
+ Header bar at top (Bootstrap nav-bar)
42
+ */
43
+ .navbar-logo {
44
+ /* The main logo image for the Blacklight instance */
45
+ background: transparent var(--bl-logo-image) no-repeat top left;
46
+ background-size: var(--bl-logo-width) var(--bl-logo-height);
47
+ height: var(--bl-logo-height);
48
+ overflow: hidden;
49
+ text-indent: 100%;
50
+ white-space: nowrap;
51
+ width: var(--bl-logo-width);
52
+ }
53
+
54
+ .navbar-search {
55
+ z-index: 1;
56
+ }
57
+ .navbar-search search {
58
+ display: contents;
59
+ }
60
+ .navbar-search .search-field {
61
+ min-width: 7em;
62
+ }
63
+
64
+ .constraints-container {
65
+ display: flex;
66
+ flex-wrap: wrap;
67
+ gap: 0.5rem 0.25rem;
68
+ }
69
+
70
+ .applied-filter {
71
+ --separator-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='currentColor'%3e%3cpath fill-rule='evenodd' d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708'/%3e%3c/svg%3e");
72
+ }
73
+ .applied-filter .constraint-value {
74
+ cursor: default;
75
+ text-overflow: ellipsis;
76
+ overflow: hidden;
77
+ white-space: nowrap;
78
+ max-width: clamp(288px, 30vw, 500px);
79
+ }
80
+ .applied-filter .constraint-value .filter-name:after {
81
+ background-color: var(--bs-btn-color);
82
+ content: "";
83
+ mask: var(--separator-icon);
84
+ mask-repeat: no-repeat;
85
+ display: inline-block;
86
+ height: 1.1rem;
87
+ width: 1.25rem;
88
+ vertical-align: text-bottom;
89
+ margin-right: -0.2rem;
90
+ margin-left: 0.25rem;
91
+ transition: background-color 0.15s ease-in-out;
92
+ }
93
+ .applied-filter .remove {
94
+ --bs-btn-hover-bg: var(--bl-constraint-remove-hover-bg);
95
+ --bs-btn-hover-border-color: var(--bl-constraint-remove-hover-border-color);
96
+ --bs-btn-active-bg: var(--bl-constraint-remove-hover-bg);
97
+ --bs-btn-active-border-color: var(
98
+ --bl-constraint-remove-hover-border-color
99
+ );
100
+ }
101
+
102
+ .search-widgets {
103
+ display: flex;
104
+ }
105
+
106
+ .sort-pagination,
107
+ .pagination-search-widgets {
108
+ border-bottom: var(--bs-border-width) solid var(--bs-border-color);
109
+ }
110
+
111
+ .sort-pagination .dropdown-toggle {
112
+ cursor: pointer;
113
+ }
114
+
115
+ .no-js .btn-group:focus-within .dropdown-menu {
116
+ display: block; /* show menu when tabbing to it, without Javascript */
117
+ }
118
+
119
+ .view-type {
120
+ display: inline-block;
121
+ }
122
+
123
+ .modal_form {
124
+ margin-bottom: 0;
125
+ }
126
+
127
+ .input-group > .search-q {
128
+ flex-grow: 4;
129
+ }
130
+
131
+ .input-group > .search-autocomplete-wrapper {
132
+ display: inline-block;
133
+ flex-grow: 4;
134
+ padding: 0;
135
+ position: relative;
136
+ }
137
+ .input-group > .search-autocomplete-wrapper .search-q {
138
+ border: 0;
139
+ height: 100%;
140
+ width: 100%;
141
+ }
142
+ .input-group > .search-autocomplete-wrapper ul {
143
+ display: block;
144
+ }
145
+
146
+ .search-btn {
147
+ border-top-left-radius: 0;
148
+ border-bottom-left-radius: 0;
149
+ display: flex;
150
+ }
151
+
152
+ .search-field,
153
+ .search-q {
154
+ scroll-margin: 5rem;
155
+ }
156
+
157
+ .documents-list {
158
+ --bl-results-document-margin-top: 1rem;
159
+ --bl-results-document-padding-top: 1rem;
160
+ }
161
+ .documents-list .document {
162
+ display: flex;
163
+ border-bottom: 1px dotted var(--bs-border-color);
164
+ margin-top: var(--bl-results-document-margin-top);
165
+ padding-top: var(--bl-results-document-padding-top);
166
+ }
167
+ .documents-list .document .document-main-section {
168
+ flex-grow: 1;
169
+ }
170
+ .documents-list .document .document-thumbnail {
171
+ flex-grow: 0;
172
+ margin-bottom: 3rem;
173
+ padding-left: 3rem;
174
+ }
175
+
176
+ .page-links {
177
+ display: inline-block;
178
+ border: 1px solid transparent;
179
+ padding: 0.375rem 0.75rem;
180
+ padding-left: 0;
181
+ }
182
+
183
+ @media (max-width: 575.98px) {
184
+ .pagination {
185
+ flex-wrap: wrap;
186
+ }
187
+ }
188
+
189
+ .group-key {
190
+ --bl-border-color: var(--bs-gray-600);
191
+ border-bottom: 1px solid var(--bl-border-color);
192
+ clear: right;
193
+ }
194
+
195
+ .grouped-documents .document {
196
+ border-bottom: 0;
197
+ }
198
+
199
+ .bookmark-toggle {
200
+ --bl-icon-color: var(--bs-primary);
201
+ /* override for line 21.
202
+ Creates weird spacing in toolbar when min-width is set to 8rem */
203
+ }
204
+ .no-js .bookmark-toggle input[type=submit] {
205
+ display: inline;
206
+ }
207
+ .no-js .bookmark-toggle .toggle-bookmark {
208
+ display: none;
209
+ }
210
+ .bookmark-toggle input[type=submit] {
211
+ display: none;
212
+ }
213
+ .bookmark-toggle .toggle-bookmark {
214
+ cursor: pointer;
215
+ }
216
+ .bookmark-toggle .toggle-bookmark .toggle-bookmark-label {
217
+ font-weight: inherit;
218
+ min-width: 8.5em;
219
+ }
220
+ .bookmark-toggle .toggle-bookmark .toggle-bookmark-label .blacklight-icons svg {
221
+ height: 1.25rem;
222
+ width: 1.25rem;
223
+ overflow: visible;
224
+ fill: var(--bl-icon-color);
225
+ }
226
+ .bookmark-toggle .toggle-bookmark .toggle-bookmark-label .blacklight-icons svg.bookmark-checked {
227
+ display: none;
228
+ }
229
+ .bookmark-toggle .toggle-bookmark .toggle-bookmark-input:checked + span svg.bookmark-checked {
230
+ display: inherit;
231
+ }
232
+ .bookmark-toggle .toggle-bookmark .toggle-bookmark-input:checked + span svg.bookmark-unchecked {
233
+ display: none;
234
+ }
235
+ .bookmark-toggle .header-tools .toggle-bookmark-label {
236
+ min-width: 2rem;
237
+ }
238
+
239
+ .dl-invert dt {
240
+ font-weight: normal;
241
+ color: var(--bl-field-name-color);
242
+ }
243
+ @media (min-width: 768px) {
244
+ .dl-invert dt {
245
+ text-align: end;
246
+ }
247
+ }
248
+
249
+ .sidenav {
250
+ --bl-facet-active-bg: var(--bs-success);
251
+ --bl-facet-active-item-color: var(--bs-success);
252
+ --bl-facet-remove-color: var(--bs-secondary-color);
253
+ --bl-facet-remove-hover-color: var(--bs-danger);
254
+ --bl-facet-label-indent: -15px;
255
+ --bl-facet-label-padding-left: 15px;
256
+ --bl-facet-header-padding-y: 0.5rem;
257
+ }
258
+ .sidenav .facet-toggle-button [data-hide-label] {
259
+ display: inline;
260
+ }
261
+ .sidenav .facet-toggle-button [data-show-label] {
262
+ display: none;
263
+ }
264
+ .sidenav .facet-toggle-button[aria-expanded=false] [data-hide-label] {
265
+ display: none;
266
+ }
267
+ .sidenav .facet-toggle-button[aria-expanded=false] [data-show-label] {
268
+ display: inline;
269
+ }
270
+
271
+ @media (max-width: 991.98px) {
272
+ .no-js #sidebar {
273
+ order: 6 !important;
274
+ }
275
+ }
276
+ .no-js .facet-content.collapse {
277
+ display: block;
278
+ }
279
+ .no-js .facet-toggle-handle {
280
+ display: none;
281
+ }
282
+ .no-js .pivot-facet.collapse {
283
+ display: block;
284
+ }
285
+ .no-js .facets-collapse.collapse {
286
+ display: block;
287
+ }
288
+
289
+ .facets-header {
290
+ display: flex;
291
+ justify-content: space-between;
292
+ padding-block: var(--bl-facet-header-padding-y);
293
+ }
294
+
295
+ .facets-heading {
296
+ line-height: inherit;
297
+ }
298
+
299
+ .facet-limit {
300
+ --bs-accordion-btn-bg: var(--bs-gray-100);
301
+ --bs-btn-hover-bg: var(--bs-gray-200);
302
+ --bs-accordion-active-bg: var(--bs-accordion-btn-bg);
303
+ }
304
+
305
+ .facet-limit-active {
306
+ --bs-accordion-btn-bg: var(--bl-facet-active-bg);
307
+ --bs-btn-hover-bg: var(--bs-accordion-btn-bg);
308
+ --bs-accordion-btn-color: var(--bs-light);
309
+ --bs-btn-hover-color: var(--bs-accordion-btn-color);
310
+ --bs-accordion-active-color: var(--bs-accordion-btn-color);
311
+ }
312
+
313
+ .facet-values {
314
+ margin-bottom: 0;
315
+ }
316
+ .facet-values a {
317
+ text-decoration: none;
318
+ }
319
+ .facet-values li {
320
+ display: flex;
321
+ align-items: flex-start;
322
+ padding: 3px 0;
323
+ }
324
+ .facet-values li.treeitem {
325
+ display: block;
326
+ }
327
+ .facet-values li .selected {
328
+ color: var(--bl-facet-active-item-color);
329
+ }
330
+ .facet-values .remove {
331
+ color: var(--bl-facet-remove-color);
332
+ font-weight: bold;
333
+ padding-left: 0.5rem;
334
+ text-decoration: none;
335
+ }
336
+ .facet-values .remove:hover {
337
+ color: var(--bl-facet-remove-hover-color);
338
+ text-decoration: none;
339
+ }
340
+ .facet-values .facet-label {
341
+ hyphens: auto;
342
+ overflow-wrap: break-word;
343
+ padding-left: var(--bl-facet-label-padding-left);
344
+ padding-right: 1em;
345
+ text-indent: var(--bl-facet-label-indent);
346
+ }
347
+ .facet-values .facet-count {
348
+ margin-left: auto;
349
+ }
350
+ .facet-values .facet-checkbox {
351
+ width: 1.25rem;
352
+ }
353
+
354
+ .facet-extended-list .sort-options {
355
+ text-align: right;
356
+ }
357
+ .facet-extended-list .prev-next-links {
358
+ float: left;
359
+ }
360
+
361
+ .facet-field-heading {
362
+ /* This prevents the contained stretch link from covering the panel body */
363
+ position: relative;
364
+ }
365
+ .facet-field-heading a {
366
+ color: inherit;
367
+ }
368
+
369
+ /* Sidenav
370
+ -------------------------------------------------- */
371
+ .pivot-facet.show {
372
+ display: flex;
373
+ }
374
+
375
+ .facet-toggle-handle {
376
+ margin-block: 0;
377
+ padding-block: 0;
378
+ padding-inline: 0.5rem;
379
+ margin-inline-start: -0.75rem;
380
+ }
381
+ .pivot-facet .facet-toggle-handle {
382
+ margin-inline-start: -1.5rem;
383
+ }
384
+ .facet-toggle-handle.collapsed .show {
385
+ display: flex;
386
+ }
387
+ .facet-toggle-handle.collapsed .hide {
388
+ display: none;
389
+ }
390
+ .facet-toggle-handle .show {
391
+ display: none;
392
+ }
393
+ .facet-toggle-handle .hide {
394
+ display: flex;
395
+ }
396
+ .facet-toggle-handle .show .icon,
397
+ .facet-toggle-handle .hide .icon {
398
+ width: 1em;
399
+ height: 1em;
400
+ padding: 0.375rem 0.75rem;
401
+ }
402
+ .facet-toggle-handle .show .icon {
403
+ background: transparent url('data:image/svg+xml,%3csvg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-plus-square" viewBox="0 0 16 16"%3e%3cpath d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h12zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z" /%3e%3cpath d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4z" /%3e%3c/svg%3e') center/1em auto no-repeat;
404
+ }
405
+ .facet-toggle-handle .hide .icon {
406
+ background: transparent url('data:image/svg+xml,%3csvg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-dash-square" viewBox="0 0 16 16"%3e%3cpath d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h12zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z" /%3e%3cpath d="M4 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 4 8z" /%3e%3c/svg%3e') center/1em auto no-repeat;
407
+ }
408
+
409
+ /* Search History */
410
+ .search-history {
411
+ --bl-history-filter-name-color: var(--bs-secondary-color);
412
+ }
413
+ .search-history td {
414
+ padding: 1rem;
415
+ }
416
+ .search-history .constraint {
417
+ padding-inline-end: 1rem;
418
+ display: block;
419
+ }
420
+ .search-history .filter-name {
421
+ color: var(--bl-history-filter-name-color);
422
+ }
423
+
424
+ .modal-dialog {
425
+ border-radius: 5px;
426
+ }
427
+
428
+ .modal-content .facet-pagination.top {
429
+ display: none; /* Doesn't display in a modal, but would display on a new page (e.g. without Javascript) */
430
+ }
431
+ .modal-content .page-sidebar {
432
+ display: none;
433
+ }
434
+ .modal-content .blacklight-modal-close {
435
+ display: block;
436
+ }
437
+ .modal-content .prev_next_links.btn-group .btn {
438
+ border: 0;
439
+ }
440
+
441
+ .blacklight-modal-close {
442
+ display: none;
443
+ }
444
+
445
+ .remove .bi {
446
+ height: 1em;
447
+ width: 1em;
448
+ }
@@ -115,7 +115,7 @@ document.addEventListener('click', ButtonFocus);
115
115
  // const basicFunction = (entry) => console.log(entry)
116
116
  // const debounced = debounce(basicFunction("I should only be called once"));
117
117
  //
118
- // debounced // does NOT print to the screen because it is invoked again less than 200 milliseconds later
118
+ // debounced // does NOT print to the screen becase it is invoked again less than 200 milliseconds later
119
119
  // debounced // does print to the screen
120
120
  // ```
121
121
  function debounce(func, timeout = 200) {
@@ -130,22 +130,9 @@ const FacetSuggest = async (e) => {
130
130
  if (e.target.matches('.facet-suggest')) {
131
131
  const queryFragment = e.target.value?.trim();
132
132
  const facetField = e.target.dataset.facetField;
133
- const facetArea = document.querySelector('.facet-extended-list');
134
- const prevNextLinks = document.querySelectorAll('.prev_next_links');
135
-
136
133
  if (!facetField) { return; }
137
134
 
138
- // Get the search params from the current query so the facet suggestions
139
- // can retain that context.
140
- const facetSearchContext = e.target.dataset.facetSearchContext;
141
- const url = new URL(facetSearchContext, window.location.origin);
142
-
143
- // Drop facet.page so a filtered suggestion list will always start on page 1
144
- url.searchParams.delete('facet.page');
145
- const facetSearchParams = url.searchParams.toString();
146
-
147
- const urlToFetch = `/catalog/facet_suggest/${facetField}/${queryFragment}?${facetSearchParams}`;
148
-
135
+ const urlToFetch = `/catalog/facet_suggest/${facetField}/${queryFragment}${window.location.search}`;
149
136
  const response = await fetch(urlToFetch);
150
137
  if (response.ok) {
151
138
  const blob = await response.blob();
@@ -157,15 +144,6 @@ const FacetSuggest = async (e) => {
157
144
  facetArea.innerHTML = text;
158
145
  }
159
146
  }
160
-
161
- // Hide the prev/next links when a user enters text in the facet
162
- // suggestion input. They don't work with a filtered list.
163
- prevNextLinks.forEach(element => {
164
- element.classList.toggle('invisible', !!queryFragment);
165
- });
166
-
167
- // Add a class to distinguish suggested facet values vs. regular.
168
- facetArea.classList.toggle('facet-suggestions', !!queryFragment);
169
147
  }
170
148
  };
171
149
 
@@ -283,7 +261,7 @@ const Modal = (() => {
283
261
  }
284
262
  elements.forEach((el) => frag.appendChild(el));
285
263
  modal.activateScripts(frag);
286
-
264
+
287
265
  modal.target().querySelector('.modal-content').replaceChildren(frag);
288
266
 
289
267
  // send custom event with the modal dialog div as the target
@@ -292,7 +270,6 @@ const Modal = (() => {
292
270
 
293
271
  // if they did preventDefault, don't show the dialog
294
272
  if (e.defaultPrevented) return;
295
-
296
273
  modal.show();
297
274
  };
298
275
 
@@ -508,14 +485,6 @@ const Core = function() {
508
485
  const listeners = [];
509
486
  if (typeof Turbo !== 'undefined') {
510
487
  listeners.push('turbo:load', 'turbo:frame-load');
511
- } else if (typeof Turbolinks !== 'undefined' && Turbolinks.supported) {
512
- // Turbolinks 5
513
- if (Turbolinks.BrowserAdapter) {
514
- listeners.push('turbolinks:load');
515
- } else {
516
- // Turbolinks < 5
517
- listeners.push('page:load', 'DOMContentLoaded');
518
- }
519
488
  } else {
520
489
  listeners.push('DOMContentLoaded');
521
490
  }
@@ -525,8 +494,8 @@ const Core = function() {
525
494
  };
526
495
  }();
527
496
 
528
- // turbolinks triggers page:load events on page transition
529
- // If app isn't using turbolinks, this event will never be triggered, no prob.
497
+ // turbo triggers turbo:load events on page transition
498
+ // If app isn't using turbo, this event will never be triggered, no prob.
530
499
  Core.listeners().forEach(function(listener) {
531
500
  document.addEventListener(listener, function() {
532
501
  Core.activate();