blacklight 8.8.3 → 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 (179) 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 +18 -15
  11. data/app/assets/javascripts/blacklight/blacklight.esm.js.map +1 -1
  12. data/app/assets/javascripts/blacklight/blacklight.js +18 -15
  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 +7 -26
  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 +2 -2
  25. data/app/assets/stylesheets/blacklight/_pagination.scss +0 -4
  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 -14
  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_item_component.rb +2 -2
  46. data/app/components/blacklight/facet_item_pivot_component.rb +2 -2
  47. data/app/components/blacklight/response/facet_group_component.html.erb +3 -18
  48. data/app/components/blacklight/response/facet_group_component.rb +7 -23
  49. data/app/components/blacklight/response/facet_toggle_button_component.html.erb +16 -0
  50. data/app/components/blacklight/response/facet_toggle_button_component.rb +14 -0
  51. data/app/components/blacklight/response/pagination_component.html.erb +1 -1
  52. data/app/components/blacklight/response/pagination_component.rb +2 -1
  53. data/app/components/blacklight/response/sort_component.rb +1 -0
  54. data/app/components/blacklight/response/view_type_button_component.html.erb +1 -1
  55. data/app/components/blacklight/response/view_type_component.html.erb +1 -1
  56. data/app/components/blacklight/search/facet_suggest_input.html.erb +7 -7
  57. data/app/components/blacklight/search/facet_suggest_input.rb +0 -4
  58. data/app/components/blacklight/search/per_page_component.html.erb +1 -1
  59. data/app/components/blacklight/search/per_page_component.rb +1 -0
  60. data/app/components/blacklight/search/sidebar_component.html.erb +1 -1
  61. data/app/components/blacklight/search/sidebar_component.rb +1 -1
  62. data/app/components/blacklight/search_bar_component.html.erb +3 -3
  63. data/app/components/blacklight/search_bar_component.rb +2 -2
  64. data/app/components/blacklight/search_button_component.rb +2 -2
  65. data/app/components/blacklight/search_context/server_applied_params_component.html.erb +2 -2
  66. data/app/components/blacklight/search_context/server_applied_params_component.rb +9 -0
  67. data/app/components/blacklight/skip_link_component.html.erb +1 -1
  68. data/app/components/blacklight/skip_link_component.rb +7 -3
  69. data/app/components/blacklight/skip_link_item_component.rb +18 -0
  70. data/app/components/blacklight/top_navbar_component.html.erb +1 -1
  71. data/app/controllers/concerns/blacklight/catalog.rb +3 -2
  72. data/app/controllers/concerns/blacklight/search_context.rb +0 -12
  73. data/app/helpers/blacklight/blacklight_helper_behavior.rb +0 -6
  74. data/app/helpers/blacklight/catalog_helper_behavior.rb +1 -11
  75. data/app/helpers/blacklight/configuration_helper_behavior.rb +0 -12
  76. data/app/helpers/blacklight/document_helper_behavior.rb +0 -26
  77. data/app/helpers/blacklight/icon_helper_behavior.rb +1 -9
  78. data/app/helpers/blacklight/layout_helper_behavior.rb +2 -2
  79. data/app/helpers/blacklight/render_partials_helper_behavior.rb +0 -14
  80. data/app/helpers/blacklight/url_helper_behavior.rb +1 -1
  81. data/app/javascript/{blacklight → blacklight-frontend}/bookmark_toggle.js +1 -1
  82. data/app/javascript/{blacklight → blacklight-frontend}/core.js +2 -10
  83. data/app/javascript/{blacklight → blacklight-frontend}/debounce.js +1 -1
  84. data/app/javascript/{blacklight → blacklight-frontend}/facet_suggest.js +3 -3
  85. data/app/javascript/blacklight-frontend/index.js +18 -0
  86. data/app/javascript/{blacklight → blacklight-frontend}/modal.js +16 -2
  87. data/app/models/concerns/blacklight/document.rb +0 -11
  88. data/app/models/concerns/blacklight/user.rb +1 -1
  89. data/app/presenters/blacklight/facet_field_presenter.rb +2 -2
  90. data/app/presenters/blacklight/json_presenter.rb +3 -1
  91. data/app/services/blacklight/search_params_yaml_coder.rb +0 -2
  92. data/app/views/bookmarks/_clear_bookmarks_widget.html.erb +0 -2
  93. data/app/views/bookmarks/index.html.erb +1 -1
  94. data/app/views/catalog/_results_pagination.html.erb +2 -5
  95. data/app/views/catalog/_search_results.html.erb +4 -4
  96. data/app/views/catalog/_search_results_header.html.erb +1 -1
  97. data/app/views/catalog/_sort_and_per_page.html.erb +1 -1
  98. data/app/views/catalog/_sort_widget.html.erb +1 -0
  99. data/app/views/catalog/facet.html.erb +1 -1
  100. data/app/views/catalog/show.html.erb +2 -3
  101. data/app/views/kaminari/blacklight/_paginator.html.erb +1 -2
  102. data/app/views/layouts/blacklight/base.html.erb +3 -7
  103. data/app/views/search_history/index.html.erb +0 -2
  104. data/blacklight.gemspec +4 -4
  105. data/config/importmap.rb +1 -1
  106. data/config/locales/blacklight.ar.yml +4 -4
  107. data/config/locales/blacklight.ca.yml +124 -124
  108. data/config/locales/blacklight.de.yml +2 -2
  109. data/config/locales/blacklight.en.yml +14 -14
  110. data/config/locales/blacklight.es.yml +4 -4
  111. data/config/locales/blacklight.fr.yml +4 -4
  112. data/config/locales/blacklight.hu.yml +4 -4
  113. data/config/locales/blacklight.it.yml +3 -3
  114. data/config/locales/blacklight.nl.yml +3 -3
  115. data/config/locales/blacklight.pt-BR.yml +3 -3
  116. data/config/locales/blacklight.sq.yml +4 -4
  117. data/config/locales/blacklight.zh.yml +4 -4
  118. data/lib/blacklight/configuration/display_field.rb +1 -1
  119. data/lib/blacklight/configuration/fields.rb +3 -3
  120. data/lib/blacklight/configuration/view_config.rb +0 -2
  121. data/lib/blacklight/configuration.rb +7 -12
  122. data/lib/blacklight/engine.rb +0 -6
  123. data/lib/blacklight/open_struct_with_hash_access.rb +4 -4
  124. data/lib/blacklight/search_builder.rb +4 -4
  125. data/lib/blacklight/search_state/filter_field.rb +2 -2
  126. data/lib/blacklight/solr/request.rb +1 -7
  127. data/lib/blacklight/solr/response/group_response.rb +2 -2
  128. data/lib/blacklight.rb +1 -1
  129. data/lib/generators/blacklight/assets/importmap_generator.rb +8 -24
  130. data/lib/generators/blacklight/assets/propshaft_generator.rb +1 -1
  131. data/lib/generators/blacklight/assets_generator.rb +3 -3
  132. data/lib/generators/blacklight/controller_generator.rb +3 -3
  133. data/lib/generators/blacklight/user_generator.rb +9 -10
  134. data/package.json +14 -4
  135. data/rollup.config.js +1 -1
  136. data/spec/components/blacklight/document/action_component_spec.rb +1 -5
  137. data/spec/components/blacklight/document/sidebar_component_spec.rb +5 -20
  138. data/spec/components/blacklight/facet_field_checkboxes_component_spec.rb +2 -2
  139. data/spec/components/blacklight/facet_field_list_component_spec.rb +2 -2
  140. data/spec/components/blacklight/search/facet_suggest_input_spec.rb +2 -18
  141. data/spec/components/blacklight/search_bar_component_spec.rb +1 -1
  142. data/spec/controllers/catalog_controller_spec.rb +1 -1
  143. data/spec/features/axe_spec.rb +6 -11
  144. data/spec/features/bookmarks_spec.rb +48 -11
  145. data/spec/features/facets_spec.rb +21 -36
  146. data/spec/features/search_context_spec.rb +1 -2
  147. data/spec/features/search_filters_spec.rb +6 -6
  148. data/spec/helpers/blacklight/configuration_helper_behavior_spec.rb +0 -9
  149. data/spec/helpers/blacklight/render_partials_helper_behavior_spec.rb +1 -1
  150. data/spec/lib/blacklight/parameters_spec.rb +1 -12
  151. data/spec/lib/blacklight/search_state/filter_field_spec.rb +0 -18
  152. data/spec/models/blacklight/solr/request_spec.rb +7 -0
  153. data/spec/services/blacklight/search_service_spec.rb +1 -1
  154. data/spec/test_app_templates/Gemfile.extra +0 -1
  155. data/spec/views/catalog/_facet_layout.html.erb_spec.rb +3 -3
  156. data/spec/views/catalog/index.html.erb_spec.rb +6 -3
  157. data/spec/views/catalog/show.html.erb_spec.rb +1 -0
  158. data/tasks/blacklight.rake +8 -5
  159. metadata +30 -54
  160. data/app/assets/stylesheets/blacklight/_autocomplete.scss +0 -25
  161. data/app/assets/stylesheets/blacklight/_mixins.scss +0 -20
  162. data/app/components/blacklight/icons/legacy_icon_component.rb +0 -30
  163. data/app/javascript/blacklight/index.js +0 -18
  164. data/app/views/catalog/_constraints.html.erb +0 -1
  165. data/app/views/catalog/_facets.html.erb +0 -5
  166. data/app/views/catalog/_search_form.html.erb +0 -7
  167. data/app/views/catalog/_search_header.html.erb +0 -1
  168. data/app/views/catalog/_show_sidebar.html.erb +0 -3
  169. data/app/views/catalog/_show_tools.html.erb +0 -2
  170. data/app/views/catalog/_start_over.html.erb +0 -1
  171. data/app/views/shared/_header_navbar.html.erb +0 -1
  172. data/lib/generators/blacklight/assets/sprockets_generator.rb +0 -68
  173. data/spec/views/catalog/_search_header.erb_spec.rb +0 -14
  174. data/spec/views/catalog/_show_sidebar.erb_spec.rb +0 -24
  175. data/spec/views/catalog/_show_tools.html.erb_spec.rb +0 -37
  176. /data/app/javascript/{blacklight → blacklight-frontend}/button_focus.js +0 -0
  177. /data/app/javascript/{blacklight → blacklight-frontend}/checkbox_submit.js +0 -0
  178. /data/app/javascript/{blacklight → blacklight-frontend}/modalForm.js +0 -0
  179. /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: a1e08ce0753e7c685ea8c89ddb71a79df93264b09316f4fd42d10e9df6b0445a
4
- data.tar.gz: f2fd78857733c1d5729806da77d823b459aa66414d753b27e03ae3b9bc2adac9
3
+ metadata.gz: a4ffba1fbfab58e820f1953e4c0b1ff8d3bbcd57da645c10a44aa2f0a09f4a7a
4
+ data.tar.gz: 323b2afff4d4a8b308486ad81978b64f3a88aa8414e890ea5563bd3ae7820d0e
5
5
  SHA512:
6
- metadata.gz: 7b8109311a031925baef9b67a4a89a5c0acd49d7ed7822e5d129b7c22b9920e742684035685bd780f293de3a6f78b4725dc22fbd77d77f8513d54cfe467d9c06
7
- data.tar.gz: b245a145acf722e3e505820fafa9d1731fbbd30d43e2bca4465ffa9e430bfffe542fe81761b1c6d92cdcca84d561d2026a75d293c19ecd57ea479f3aba3ede56
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.8.3
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) {
@@ -137,9 +137,9 @@ const FacetSuggest = async (e) => {
137
137
  if (response.ok) {
138
138
  const blob = await response.blob();
139
139
  const text = await blob.text();
140
-
140
+
141
141
  const facetArea = document.querySelector('.facet-extended-list');
142
-
142
+
143
143
  if (text && facetArea) {
144
144
  facetArea.innerHTML = text;
145
145
  }
@@ -261,7 +261,7 @@ const Modal = (() => {
261
261
  }
262
262
  elements.forEach((el) => frag.appendChild(el));
263
263
  modal.activateScripts(frag);
264
-
264
+
265
265
  modal.target().querySelector('.modal-content').replaceChildren(frag);
266
266
 
267
267
  // send custom event with the modal dialog div as the target
@@ -270,7 +270,6 @@ const Modal = (() => {
270
270
 
271
271
  // if they did preventDefault, don't show the dialog
272
272
  if (e.defaultPrevented) return;
273
-
274
273
  modal.show();
275
274
  };
276
275
 
@@ -321,6 +320,12 @@ const Modal = (() => {
321
320
  dom.dispatchEvent(e);
322
321
 
323
322
  dom.close();
323
+
324
+ // Turn body scrolling back to what it was
325
+ document.body.style["overflow"] = modal.originalBodyOverflow;
326
+ document.body.style["padding-right"] = modal.originalBodyPaddingRight;
327
+ modal.originalBodyOverflow = undefined;
328
+ modal.originalBodyPaddingRight = undefined;
324
329
  };
325
330
 
326
331
  modal.show = function(el) {
@@ -332,6 +337,12 @@ const Modal = (() => {
332
337
  dom.dispatchEvent(e);
333
338
 
334
339
  dom.showModal();
340
+
341
+ // Turn off body scrolling
342
+ modal.originalBodyOverflow = document.body.style['overflow'];
343
+ modal.originalBodyPaddingRight = document.body.style['padding-right'];
344
+ document.body.style["overflow"] = "hidden";
345
+ document.body.style["padding-right"] = "0px";
335
346
  };
336
347
 
337
348
  modal.target = function() {
@@ -474,14 +485,6 @@ const Core = function() {
474
485
  const listeners = [];
475
486
  if (typeof Turbo !== 'undefined') {
476
487
  listeners.push('turbo:load', 'turbo:frame-load');
477
- } else if (typeof Turbolinks !== 'undefined' && Turbolinks.supported) {
478
- // Turbolinks 5
479
- if (Turbolinks.BrowserAdapter) {
480
- listeners.push('turbolinks:load');
481
- } else {
482
- // Turbolinks < 5
483
- listeners.push('page:load', 'DOMContentLoaded');
484
- }
485
488
  } else {
486
489
  listeners.push('DOMContentLoaded');
487
490
  }
@@ -491,8 +494,8 @@ const Core = function() {
491
494
  };
492
495
  }();
493
496
 
494
- // turbolinks triggers page:load events on page transition
495
- // 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.
496
499
  Core.listeners().forEach(function(listener) {
497
500
  document.addEventListener(listener, function() {
498
501
  Core.activate();