blacklight 8.8.1 → 9.0.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (173) 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/bookmark_component.html.erb +3 -3
  37. data/app/components/blacklight/document/group_component.html.erb +1 -1
  38. data/app/components/blacklight/document/page_header_component.rb +1 -1
  39. data/app/components/blacklight/document/sidebar_component.rb +5 -5
  40. data/app/components/blacklight/document_component.rb +9 -13
  41. data/app/components/blacklight/document_title_component.rb +3 -2
  42. data/app/components/blacklight/facet_field_component.html.erb +4 -4
  43. data/app/components/blacklight/facet_field_list_component.rb +4 -22
  44. data/app/components/blacklight/facet_item_component.rb +2 -2
  45. data/app/components/blacklight/facet_item_pivot_component.rb +2 -2
  46. data/app/components/blacklight/response/facet_group_component.html.erb +3 -18
  47. data/app/components/blacklight/response/facet_group_component.rb +7 -23
  48. data/app/components/blacklight/response/facet_toggle_button_component.html.erb +16 -0
  49. data/app/components/blacklight/response/facet_toggle_button_component.rb +14 -0
  50. data/app/components/blacklight/response/pagination_component.html.erb +1 -1
  51. data/app/components/blacklight/response/pagination_component.rb +2 -1
  52. data/app/components/blacklight/response/sort_component.rb +1 -0
  53. data/app/components/blacklight/response/view_type_button_component.html.erb +1 -1
  54. data/app/components/blacklight/response/view_type_component.html.erb +1 -1
  55. data/app/components/blacklight/search/facet_suggest_input.html.erb +7 -7
  56. data/app/components/blacklight/search/facet_suggest_input.rb +0 -4
  57. data/app/components/blacklight/search/per_page_component.html.erb +1 -1
  58. data/app/components/blacklight/search/per_page_component.rb +1 -0
  59. data/app/components/blacklight/search/sidebar_component.html.erb +1 -1
  60. data/app/components/blacklight/search/sidebar_component.rb +1 -1
  61. data/app/components/blacklight/search_bar_component.html.erb +3 -3
  62. data/app/components/blacklight/search_bar_component.rb +2 -2
  63. data/app/components/blacklight/search_button_component.rb +2 -2
  64. data/app/components/blacklight/search_context/server_applied_params_component.html.erb +2 -2
  65. data/app/components/blacklight/search_context/server_applied_params_component.rb +9 -0
  66. data/app/components/blacklight/skip_link_component.html.erb +1 -1
  67. data/app/components/blacklight/skip_link_component.rb +7 -3
  68. data/app/components/blacklight/skip_link_item_component.rb +18 -0
  69. data/app/components/blacklight/top_navbar_component.html.erb +1 -1
  70. data/app/controllers/concerns/blacklight/catalog.rb +3 -2
  71. data/app/controllers/concerns/blacklight/search_context.rb +0 -12
  72. data/app/helpers/blacklight/blacklight_helper_behavior.rb +0 -6
  73. data/app/helpers/blacklight/catalog_helper_behavior.rb +1 -11
  74. data/app/helpers/blacklight/configuration_helper_behavior.rb +0 -12
  75. data/app/helpers/blacklight/document_helper_behavior.rb +0 -26
  76. data/app/helpers/blacklight/icon_helper_behavior.rb +1 -9
  77. data/app/helpers/blacklight/layout_helper_behavior.rb +2 -2
  78. data/app/helpers/blacklight/render_partials_helper_behavior.rb +0 -14
  79. data/app/helpers/blacklight/url_helper_behavior.rb +1 -1
  80. data/app/javascript/{blacklight → blacklight-frontend}/bookmark_toggle.js +1 -1
  81. data/app/javascript/{blacklight → blacklight-frontend}/core.js +2 -10
  82. data/app/javascript/{blacklight → blacklight-frontend}/debounce.js +1 -1
  83. data/app/javascript/{blacklight → blacklight-frontend}/facet_suggest.js +3 -3
  84. data/app/javascript/blacklight-frontend/index.js +18 -0
  85. data/app/javascript/{blacklight → blacklight-frontend}/modal.js +16 -2
  86. data/app/models/blacklight/facet_paginator.rb +1 -1
  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/services/blacklight/search_params_yaml_coder.rb +0 -2
  91. data/app/views/bookmarks/_clear_bookmarks_widget.html.erb +0 -2
  92. data/app/views/bookmarks/index.html.erb +1 -1
  93. data/app/views/catalog/_results_pagination.html.erb +2 -5
  94. data/app/views/catalog/_search_results.html.erb +4 -4
  95. data/app/views/catalog/_search_results_header.html.erb +1 -1
  96. data/app/views/catalog/_sort_and_per_page.html.erb +1 -1
  97. data/app/views/catalog/_sort_widget.html.erb +1 -0
  98. data/app/views/catalog/facet.html.erb +1 -1
  99. data/app/views/catalog/show.html.erb +2 -3
  100. data/app/views/kaminari/blacklight/_paginator.html.erb +1 -2
  101. data/app/views/layouts/blacklight/base.html.erb +3 -7
  102. data/app/views/search_history/index.html.erb +0 -2
  103. data/blacklight.gemspec +4 -4
  104. data/config/importmap.rb +1 -1
  105. data/config/locales/blacklight.ar.yml +4 -4
  106. data/config/locales/blacklight.ca.yml +124 -124
  107. data/config/locales/blacklight.de.yml +2 -2
  108. data/config/locales/blacklight.en.yml +14 -14
  109. data/config/locales/blacklight.es.yml +4 -4
  110. data/config/locales/blacklight.fr.yml +4 -4
  111. data/config/locales/blacklight.hu.yml +4 -4
  112. data/config/locales/blacklight.it.yml +3 -3
  113. data/config/locales/blacklight.nl.yml +3 -3
  114. data/config/locales/blacklight.pt-BR.yml +3 -3
  115. data/config/locales/blacklight.sq.yml +4 -4
  116. data/config/locales/blacklight.zh.yml +4 -4
  117. data/lib/blacklight/configuration/display_field.rb +1 -1
  118. data/lib/blacklight/configuration/fields.rb +3 -3
  119. data/lib/blacklight/configuration/view_config.rb +0 -2
  120. data/lib/blacklight/configuration.rb +7 -12
  121. data/lib/blacklight/engine.rb +0 -6
  122. data/lib/blacklight/open_struct_with_hash_access.rb +4 -4
  123. data/lib/blacklight/search_builder.rb +4 -4
  124. data/lib/blacklight/solr/request.rb +1 -7
  125. data/lib/blacklight/solr/response/group_response.rb +2 -2
  126. data/lib/blacklight.rb +1 -1
  127. data/lib/generators/blacklight/assets/importmap_generator.rb +8 -24
  128. data/lib/generators/blacklight/assets/propshaft_generator.rb +1 -1
  129. data/lib/generators/blacklight/assets_generator.rb +3 -3
  130. data/lib/generators/blacklight/controller_generator.rb +3 -3
  131. data/lib/generators/blacklight/user_generator.rb +9 -10
  132. data/package.json +14 -4
  133. data/rollup.config.js +1 -1
  134. data/spec/components/blacklight/document/action_component_spec.rb +1 -5
  135. data/spec/components/blacklight/document/sidebar_component_spec.rb +5 -20
  136. data/spec/components/blacklight/facet_field_checkboxes_component_spec.rb +2 -2
  137. data/spec/components/blacklight/facet_field_list_component_spec.rb +2 -2
  138. data/spec/components/blacklight/search/facet_suggest_input_spec.rb +2 -18
  139. data/spec/components/blacklight/search_bar_component_spec.rb +1 -1
  140. data/spec/features/axe_spec.rb +6 -11
  141. data/spec/features/bookmarks_spec.rb +48 -11
  142. data/spec/features/facets_spec.rb +23 -20
  143. data/spec/features/search_context_spec.rb +1 -2
  144. data/spec/features/search_filters_spec.rb +6 -6
  145. data/spec/helpers/blacklight/configuration_helper_behavior_spec.rb +0 -9
  146. data/spec/helpers/blacklight/render_partials_helper_behavior_spec.rb +1 -1
  147. data/spec/models/blacklight/solr/request_spec.rb +7 -0
  148. data/spec/test_app_templates/Gemfile.extra +0 -1
  149. data/spec/views/catalog/_facet_layout.html.erb_spec.rb +3 -3
  150. data/spec/views/catalog/index.html.erb_spec.rb +6 -3
  151. data/spec/views/catalog/show.html.erb_spec.rb +1 -0
  152. data/tasks/blacklight.rake +8 -5
  153. metadata +30 -54
  154. data/app/assets/stylesheets/blacklight/_autocomplete.scss +0 -25
  155. data/app/assets/stylesheets/blacklight/_mixins.scss +0 -20
  156. data/app/components/blacklight/icons/legacy_icon_component.rb +0 -30
  157. data/app/javascript/blacklight/index.js +0 -18
  158. data/app/views/catalog/_constraints.html.erb +0 -1
  159. data/app/views/catalog/_facets.html.erb +0 -5
  160. data/app/views/catalog/_search_form.html.erb +0 -7
  161. data/app/views/catalog/_search_header.html.erb +0 -1
  162. data/app/views/catalog/_show_sidebar.html.erb +0 -3
  163. data/app/views/catalog/_show_tools.html.erb +0 -2
  164. data/app/views/catalog/_start_over.html.erb +0 -1
  165. data/app/views/shared/_header_navbar.html.erb +0 -1
  166. data/lib/generators/blacklight/assets/sprockets_generator.rb +0 -68
  167. data/spec/views/catalog/_search_header.erb_spec.rb +0 -14
  168. data/spec/views/catalog/_show_sidebar.erb_spec.rb +0 -24
  169. data/spec/views/catalog/_show_tools.html.erb_spec.rb +0 -37
  170. /data/app/javascript/{blacklight → blacklight-frontend}/button_focus.js +0 -0
  171. /data/app/javascript/{blacklight → blacklight-frontend}/checkbox_submit.js +0 -0
  172. /data/app/javascript/{blacklight → blacklight-frontend}/modalForm.js +0 -0
  173. /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: a451b7f410e4471509825f5d26bdcd26e641dc6bd812a471e16e1486e7a391e5
4
- data.tar.gz: 410b81b50ada2b286b299175e504aa85f5ec87708ae64fb42d9b036c68535c98
3
+ metadata.gz: a4ffba1fbfab58e820f1953e4c0b1ff8d3bbcd57da645c10a44aa2f0a09f4a7a
4
+ data.tar.gz: 323b2afff4d4a8b308486ad81978b64f3a88aa8414e890ea5563bd3ae7820d0e
5
5
  SHA512:
6
- metadata.gz: '08a2cff69bac1f9bd00889b428fef0f63e3aead84dd615126e9b1620b122f058d926172f919f915ce184bb04165eea50783af699309d61d31aaf8544349bc2c5'
7
- data.tar.gz: eebf1d8271275ee525c374245be122f41b259bb95888e9d24ee15179ca457e4faa7863440f88f6d88a5b0b2547e5fa3c489e84d688c59a2723dc4ea0695c5149
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.1
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();