blacklight 8.8.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 (178) 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 +16 -19
  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 +19 -16
  11. data/app/assets/javascripts/blacklight/blacklight.esm.js.map +1 -1
  12. data/app/assets/javascripts/blacklight/blacklight.js +19 -16
  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 +7 -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_field_pagination_component.html.erb +4 -4
  45. data/app/components/blacklight/facet_field_pagination_component.rb +2 -1
  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 -7
  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/top_navbar_component.html.erb +1 -1
  72. data/app/controllers/concerns/blacklight/catalog.rb +3 -2
  73. data/app/controllers/concerns/blacklight/search_context.rb +0 -12
  74. data/app/helpers/blacklight/blacklight_helper_behavior.rb +0 -6
  75. data/app/helpers/blacklight/catalog_helper_behavior.rb +6 -12
  76. data/app/helpers/blacklight/configuration_helper_behavior.rb +0 -12
  77. data/app/helpers/blacklight/document_helper_behavior.rb +0 -26
  78. data/app/helpers/blacklight/icon_helper_behavior.rb +1 -9
  79. data/app/helpers/blacklight/layout_helper_behavior.rb +2 -2
  80. data/app/helpers/blacklight/render_partials_helper_behavior.rb +0 -14
  81. data/app/helpers/blacklight/url_helper_behavior.rb +1 -1
  82. data/app/javascript/{blacklight → blacklight-frontend}/bookmark_toggle.js +1 -1
  83. data/app/javascript/{blacklight → blacklight-frontend}/core.js +2 -10
  84. data/app/javascript/{blacklight → blacklight-frontend}/debounce.js +1 -1
  85. data/app/javascript/{blacklight → blacklight-frontend}/facet_suggest.js +4 -4
  86. data/app/javascript/blacklight-frontend/index.js +18 -0
  87. data/app/javascript/{blacklight → blacklight-frontend}/modal.js +16 -2
  88. data/app/models/blacklight/facet_paginator.rb +1 -1
  89. data/app/models/concerns/blacklight/document.rb +0 -11
  90. data/app/models/concerns/blacklight/user.rb +1 -1
  91. data/app/presenters/blacklight/facet_field_presenter.rb +2 -2
  92. data/app/services/blacklight/search_params_yaml_coder.rb +0 -2
  93. data/app/views/bookmarks/_clear_bookmarks_widget.html.erb +0 -2
  94. data/app/views/bookmarks/index.html.erb +1 -1
  95. data/app/views/catalog/_results_pagination.html.erb +2 -5
  96. data/app/views/catalog/_search_results.html.erb +4 -4
  97. data/app/views/catalog/_search_results_header.html.erb +1 -1
  98. data/app/views/catalog/_sort_and_per_page.html.erb +1 -1
  99. data/app/views/catalog/_sort_widget.html.erb +1 -0
  100. data/app/views/catalog/facet.html.erb +1 -1
  101. data/app/views/catalog/show.html.erb +2 -3
  102. data/app/views/kaminari/blacklight/_paginator.html.erb +1 -2
  103. data/app/views/layouts/blacklight/base.html.erb +3 -7
  104. data/app/views/search_history/index.html.erb +0 -2
  105. data/blacklight.gemspec +4 -4
  106. data/compose.yaml +1 -0
  107. data/config/importmap.rb +1 -1
  108. data/config/locales/blacklight.ar.yml +4 -4
  109. data/config/locales/blacklight.ca.yml +124 -124
  110. data/config/locales/blacklight.de.yml +2 -2
  111. data/config/locales/blacklight.en.yml +14 -14
  112. data/config/locales/blacklight.es.yml +4 -4
  113. data/config/locales/blacklight.fr.yml +4 -4
  114. data/config/locales/blacklight.hu.yml +4 -4
  115. data/config/locales/blacklight.it.yml +3 -3
  116. data/config/locales/blacklight.nl.yml +3 -3
  117. data/config/locales/blacklight.pt-BR.yml +3 -3
  118. data/config/locales/blacklight.sq.yml +4 -4
  119. data/config/locales/blacklight.zh.yml +4 -4
  120. data/lib/blacklight/configuration/display_field.rb +1 -1
  121. data/lib/blacklight/configuration/fields.rb +3 -3
  122. data/lib/blacklight/configuration/view_config.rb +0 -2
  123. data/lib/blacklight/configuration.rb +7 -12
  124. data/lib/blacklight/engine.rb +0 -6
  125. data/lib/blacklight/open_struct_with_hash_access.rb +4 -4
  126. data/lib/blacklight/search_builder.rb +4 -4
  127. data/lib/blacklight/solr/request.rb +1 -7
  128. data/lib/blacklight/solr/response/group_response.rb +2 -2
  129. data/lib/blacklight.rb +1 -1
  130. data/lib/generators/blacklight/assets/importmap_generator.rb +8 -24
  131. data/lib/generators/blacklight/assets/propshaft_generator.rb +1 -1
  132. data/lib/generators/blacklight/assets_generator.rb +3 -3
  133. data/lib/generators/blacklight/controller_generator.rb +3 -3
  134. data/lib/generators/blacklight/templates/solr/conf/solrconfig.xml +1 -1
  135. data/lib/generators/blacklight/user_generator.rb +9 -10
  136. data/package.json +14 -4
  137. data/rollup.config.js +1 -1
  138. data/spec/components/blacklight/document/action_component_spec.rb +1 -5
  139. data/spec/components/blacklight/document/sidebar_component_spec.rb +5 -20
  140. data/spec/components/blacklight/facet_field_checkboxes_component_spec.rb +2 -2
  141. data/spec/components/blacklight/facet_field_list_component_spec.rb +2 -2
  142. data/spec/components/blacklight/search/facet_suggest_input_spec.rb +2 -18
  143. data/spec/components/blacklight/search_bar_component_spec.rb +1 -1
  144. data/spec/features/axe_spec.rb +6 -11
  145. data/spec/features/bookmarks_spec.rb +48 -11
  146. data/spec/features/facets_spec.rb +25 -14
  147. data/spec/features/search_context_spec.rb +1 -2
  148. data/spec/features/search_filters_spec.rb +6 -6
  149. data/spec/helpers/blacklight/configuration_helper_behavior_spec.rb +0 -9
  150. data/spec/helpers/blacklight/render_partials_helper_behavior_spec.rb +1 -1
  151. data/spec/helpers/catalog_helper_spec.rb +8 -0
  152. data/spec/models/blacklight/solr/request_spec.rb +7 -0
  153. data/spec/test_app_templates/Gemfile.extra +0 -1
  154. data/spec/views/catalog/_facet_layout.html.erb_spec.rb +3 -3
  155. data/spec/views/catalog/index.html.erb_spec.rb +6 -3
  156. data/spec/views/catalog/show.html.erb_spec.rb +1 -0
  157. data/tasks/blacklight.rake +8 -5
  158. metadata +30 -57
  159. data/app/assets/stylesheets/blacklight/_autocomplete.scss +0 -25
  160. data/app/assets/stylesheets/blacklight/_mixins.scss +0 -20
  161. data/app/components/blacklight/icons/legacy_icon_component.rb +0 -30
  162. data/app/javascript/blacklight/index.js +0 -18
  163. data/app/views/catalog/_constraints.html.erb +0 -1
  164. data/app/views/catalog/_facets.html.erb +0 -5
  165. data/app/views/catalog/_search_form.html.erb +0 -7
  166. data/app/views/catalog/_search_header.html.erb +0 -1
  167. data/app/views/catalog/_show_sidebar.html.erb +0 -3
  168. data/app/views/catalog/_show_tools.html.erb +0 -2
  169. data/app/views/catalog/_start_over.html.erb +0 -1
  170. data/app/views/shared/_header_navbar.html.erb +0 -1
  171. data/lib/generators/blacklight/assets/sprockets_generator.rb +0 -68
  172. data/spec/views/catalog/_search_header.erb_spec.rb +0 -14
  173. data/spec/views/catalog/_show_sidebar.erb_spec.rb +0 -24
  174. data/spec/views/catalog/_show_tools.html.erb_spec.rb +0 -37
  175. /data/app/javascript/{blacklight → blacklight-frontend}/button_focus.js +0 -0
  176. /data/app/javascript/{blacklight → blacklight-frontend}/checkbox_submit.js +0 -0
  177. /data/app/javascript/{blacklight → blacklight-frontend}/modalForm.js +0 -0
  178. /data/app/javascript/{blacklight → blacklight-frontend}/search_context.js +0 -0
@@ -1,50 +1,53 @@
1
- label.toggle-bookmark {
2
- font-weight: inherit;
3
- min-width: 8.5em;
4
- }
5
-
6
- div.toggle-bookmark {
7
- cursor: pointer;
8
- }
1
+ .bookmark-toggle {
2
+ --bl-icon-color: var(--bs-primary);
9
3
 
10
- /* override for line 3.
11
- Creates weird spacing in toolbar when min-width is set to 8rem */
12
- .header-tools label.toggle-bookmark {
13
- min-width: 2rem;
14
- }
4
+ .no-js & {
5
+ input[type="submit"] {
6
+ display: inline;
7
+ }
15
8
 
16
- .bookmark-toggle {
17
- .no-js & {
18
- input[type="submit"] {
19
- display: inline
20
- }
21
-
22
- div.toggle-bookmark {
23
- display: none
24
- }
25
- }
26
-
27
- input[type="submit"] {
28
- display: none;
29
- }
30
- }
31
- .toggle-bookmark .blacklight-icons svg {
32
- height: 1.25rem;
33
- width: 1.25rem;
34
- overflow: visible;
35
- fill: var(--bs-primary);
9
+ .toggle-bookmark {
10
+ display: none;
11
+ }
12
+ }
36
13
 
37
- &.bookmark-checked {
14
+ input[type="submit"] {
38
15
  display: none;
39
16
  }
40
- }
41
17
 
42
- .toggle-bookmark[type="checkbox"]:checked+span svg {
43
- &.bookmark-checked {
44
- display: inherit;
18
+ .toggle-bookmark {
19
+ cursor: pointer;
20
+
21
+ .toggle-bookmark-label {
22
+ font-weight: inherit;
23
+ min-width: 8.5em;
24
+
25
+ .blacklight-icons svg {
26
+ height: 1.25rem;
27
+ width: 1.25rem;
28
+ overflow: visible;
29
+ fill: var(--bl-icon-color);
30
+
31
+ &.bookmark-checked {
32
+ display: none;
33
+ }
34
+ }
35
+ }
36
+
37
+ .toggle-bookmark-input:checked + span svg {
38
+ &.bookmark-checked {
39
+ display: inherit;
40
+ }
41
+
42
+ &.bookmark-unchecked {
43
+ display: none;
44
+ }
45
+ }
45
46
  }
46
47
 
47
- &.bookmark-unchecked {
48
- display: none;
48
+ /* override for line 21.
49
+ Creates weird spacing in toolbar when min-width is set to 8rem */
50
+ .header-tools .toggle-bookmark-label {
51
+ min-width: 2rem;
49
52
  }
50
- }
53
+ }
@@ -1,36 +1,17 @@
1
- // Facet field headings and buttons
2
- .facet-field-heading {
3
- --bl-facet-field-heading-font-weight: #{$headings-font-weight};
4
- border-bottom: 0;
5
-
6
- button {
7
- font-weight: var(--bl-facet-field-heading-font-weight);
8
-
9
- &::after {
10
- content: "❯";
11
- float: right;
12
- transform: rotate(90deg);
13
- }
14
-
15
- &.collapsed {
16
- border-bottom: 0;
17
-
18
- &::after {
19
- transform: rotate(0deg);
20
- transition: transform 0.1s ease;
21
- }
22
- }
23
- }
24
- }
25
-
26
1
  .page-link {
27
2
  white-space: nowrap;
28
3
  }
29
4
 
30
- .modal[open] {
5
+ // Blacklight's decision to try to use bootstrap modal CSS with an html5 dialog --
6
+ // in such a way the <dialog> element actually serves as the modal backdrop --
7
+ // requires some fixes to both bootstrap CSS and user-agent default css
8
+ dialog.modal[open] {
31
9
  // override bootstrap .modal class default display: none
32
10
  // since we aren't using bootstrap JS that sets and unsets the display
33
11
  display: block;
34
12
  background: none;
35
13
  border: none;
14
+
15
+ max-height: unset; // override user-agent dialog
16
+ max-width: unset; // override user-agent dialog
36
17
  }
@@ -1,41 +1,32 @@
1
1
  .constraints-container {
2
- @extend .mb-2;
3
2
  display: flex;
4
3
  flex-wrap: wrap;
5
4
  gap: 0.5rem 0.25rem;
6
5
  }
7
6
 
8
7
  .applied-filter {
9
- @extend .mx-1;
8
+ --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");
10
9
 
11
10
  .constraint-value {
12
11
  cursor: default;
13
12
  text-overflow: ellipsis;
14
13
  overflow: hidden;
15
14
  white-space: nowrap;
16
-
17
- @media (max-width: breakpoint-min(sm)) {
18
- max-width: breakpoint-min(sm) * 0.5;
19
- }
20
-
21
- @media (min-width: breakpoint-min(sm)) and (max-width: breakpoint-max(sm)) {
22
- max-width: breakpoint-min(sm) * 0.5;
23
- }
24
-
25
- @media (min-width: breakpoint-min(md)) and (max-width: breakpoint-max(md)) {
26
- max-width: breakpoint-min(md) * 0.5;
15
+ max-width: clamp(288px, calc(30vw), 500px);
16
+
17
+ .filter-name:after {
18
+ background-color: var(--bs-btn-color);
19
+ content: "";
20
+ mask: var(--separator-icon);
21
+ mask-repeat: no-repeat;
22
+ display: inline-block;
23
+ height: 1.1rem;
24
+ width: 1.25rem;
25
+ vertical-align: text-bottom;
26
+ margin-right: -0.2rem;
27
+ margin-left: 0.25rem;
28
+ transition: background-color 0.15s ease-in-out;
27
29
  }
28
-
29
- @media (min-width: breakpoint-min(lg)) {
30
- max-width: breakpoint-min(lg) * 0.5;
31
- }
32
- }
33
-
34
- .filter-name:after {
35
- color: $gray-500;
36
- content: "❯";
37
- font-size: 90%;
38
- padding-left: $caret-width;
39
30
  }
40
31
 
41
32
  .remove {
@@ -1,21 +1,10 @@
1
1
  .search-widgets {
2
2
  display: flex;
3
-
4
- > * {
5
- @extend .mx-1;
6
- }
7
3
  }
8
4
 
9
5
  .sort-pagination,
10
6
  .pagination-search-widgets {
11
- border-bottom: $pagination-border-width solid $pagination-border-color;
12
- margin-bottom: 1em;
13
- padding-bottom: 1em;
14
- }
15
-
16
- .pagination-search-widgets {
17
- padding-top: 1px;
18
- padding-bottom: $spacer;
7
+ border-bottom: var(--bs-border-width) solid var(--bs-border-color);
19
8
  }
20
9
 
21
10
  .sort-pagination .dropdown-toggle {
@@ -25,18 +14,13 @@
25
14
  .no-js {
26
15
  .btn-group:focus-within {
27
16
  .dropdown-menu {
28
- @extend .show;
17
+ display: block; /* show menu when tabbing to it, without Javascript */
29
18
  }
30
19
  }
31
20
  }
32
21
 
33
22
  .view-type {
34
23
  display: inline-block;
35
-
36
- .caption {
37
- @extend .sr-only !optional;
38
- @extend .visually-hidden !optional;
39
- }
40
24
  }
41
25
 
42
26
  .modal_form {
@@ -1,18 +1,11 @@
1
1
  .sidenav {
2
- --bl-facet-active-bg: #{$facet-active-bg};
3
- --bl-facet-active-item-color: #{$facet-active-item-color};
4
- --bl-facet-margin-bottom: #{$spacer};
2
+ --bl-facet-active-bg: var(--bs-success);
3
+ --bl-facet-active-item-color: var(--bs-success);
5
4
  --bl-facet-remove-color: var(--bs-secondary-color);
5
+ --bl-facet-remove-hover-color: var(--bs-danger);
6
6
  --bl-facet-label-indent: -15px;
7
7
  --bl-facet-label-padding-left: 15px;
8
-
9
- --bl-facet-limit-body-padding: #{$spacer};
10
-
11
- --bl-facets-smallish-padding: 0.25rem;
12
- --bl-facets-smallish-border: var(--bs-border-width) solid
13
- var(--bs-border-color);
14
- --bl-facets-smallish-margin-bottom: #{$spacer};
15
- --bl-facets-smallish-border-radius: #{$border-radius};
8
+ --bl-facet-header-padding-y: 0.5rem;
16
9
 
17
10
  .facet-toggle-button {
18
11
  [data-hide-label] {
@@ -33,34 +26,6 @@
33
26
  }
34
27
  }
35
28
 
36
- .facets-toggleable {
37
- @each $breakpoint in map-keys($grid-breakpoints) {
38
- $next: breakpoint-next($breakpoint, $grid-breakpoints);
39
- $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
40
-
41
- &#{$infix} {
42
- @include media-breakpoint-down($next) {
43
- border: var(--bl-facets-smallish-border);
44
- padding: var(--bl-facets-smallish-padding);
45
- margin-bottom: var(--bl-facets-smallish-margin-bottom);
46
- border-radius: var(--bl-facets-smallish-border-radius);
47
- }
48
- @include media-breakpoint-up($next) {
49
- // scss-lint:disable ImportantRule
50
- .facets-collapse {
51
- display: block !important;
52
- width: 100%;
53
- }
54
- // scss-lint:enable ImportantRule
55
-
56
- .navbar-toggler {
57
- display: none;
58
- }
59
- }
60
- }
61
- }
62
- }
63
-
64
29
  .no-js {
65
30
  @include media-breakpoint-down(lg) {
66
31
  #sidebar {
@@ -88,49 +53,25 @@
88
53
  .facets-header {
89
54
  display: flex;
90
55
  justify-content: space-between;
91
- padding-bottom: 0.5rem;
92
- padding-top: 0.5rem;
56
+ padding-block: var(--bl-facet-header-padding-y);
93
57
  }
94
58
 
95
59
  .facets-heading {
96
- @extend .h4;
97
60
  line-height: inherit;
98
61
  }
99
62
 
100
63
  .facet-limit {
101
- margin-bottom: var(--bl-facet-margin-bottom);
102
-
103
- .card-body {
104
- padding: var(--bl-facet-limit-body-padding);
105
- }
106
-
107
- /* Provide a focus ring on the expand/collapse button */
108
- .btn {
109
- --bs-btn-focus-shadow-rgb: 50, 50, 50;
110
- &:focus-visible {
111
- border-color: var(--bs-btn-hover-border-color);
112
- outline: 0;
113
- box-shadow: var(--bs-btn-focus-box-shadow);
114
- }
115
- }
64
+ --bs-accordion-btn-bg: var(--bs-gray-100);
65
+ --bs-btn-hover-bg: var(--bs-gray-200);
66
+ --bs-accordion-active-bg: var(--bs-accordion-btn-bg);
116
67
  }
117
68
 
118
69
  .facet-limit-active {
119
- border-color: $facet-active-border;
120
-
121
- .card-header {
122
- background-color: var(--bl-facet-active-bg);
123
-
124
- .btn {
125
- @if function-exists(color-contrast) {
126
- color: color-contrast($facet-active-bg);
127
- }
128
-
129
- @if function-exists(color-yiq) {
130
- color: color-yiq($facet-active-bg);
131
- }
132
- }
133
- }
70
+ --bs-accordion-btn-bg: var(--bl-facet-active-bg);
71
+ --bs-btn-hover-bg: var(--bs-accordion-btn-bg);
72
+ --bs-accordion-btn-color: var(--bs-light);
73
+ --bs-btn-hover-color: var(--bs-accordion-btn-color);
74
+ --bs-accordion-active-color: var(--bs-accordion-btn-color);
134
75
  }
135
76
 
136
77
  .facet-values {
@@ -145,7 +86,7 @@
145
86
  align-items: flex-start;
146
87
  padding: 3px 0;
147
88
 
148
- &[role="treeitem"] {
89
+ &.treeitem {
149
90
  display: block;
150
91
  }
151
92
 
@@ -161,7 +102,7 @@
161
102
  text-decoration: none;
162
103
 
163
104
  &:hover {
164
- color: $danger;
105
+ color: var(--bl-facet-remove-hover-color);
165
106
  text-decoration: none;
166
107
  }
167
108
  }
@@ -194,8 +135,6 @@
194
135
  }
195
136
 
196
137
  .facet-field-heading {
197
- @extend .h6;
198
-
199
138
  a {
200
139
  color: inherit;
201
140
  }
@@ -207,12 +146,6 @@
207
146
  /* Sidenav
208
147
  -------------------------------------------------- */
209
148
 
210
- .facet-pagination {
211
- &.top {
212
- padding: $modal-inner-padding;
213
- }
214
- }
215
-
216
149
  .pivot-facet {
217
150
  &.show {
218
151
  display: flex;
@@ -1,5 +1,6 @@
1
1
  .group-key {
2
- border-bottom: 1px solid darken($border-color, 60%);
2
+ --bl-border-color: var(--bs-gray-600);
3
+ border-bottom: 1px solid var(--bl-border-color);
3
4
  clear: right;
4
5
  }
5
6
 
@@ -8,7 +9,3 @@
8
9
  border-bottom: 0;
9
10
  }
10
11
  }
11
-
12
- .more-in-group {
13
- float: right;
14
- }
@@ -4,15 +4,13 @@
4
4
 
5
5
  .navbar-logo {
6
6
  /* The main logo image for the Blacklight instance */
7
- @if $logo-image {
8
- background: transparent $logo-image no-repeat top left;
9
- background-size: $logo-width $logo-height;
10
- }
11
- height: $logo-height;
7
+ background: transparent var(--bl-logo-image) no-repeat top left;
8
+ background-size: var(--bl-logo-width) var(--bl-logo-height);
9
+ height: var(--bl-logo-height);
12
10
  overflow: hidden;
13
11
  text-indent: 100%;
14
12
  white-space: nowrap;
15
- width: $logo-width;
13
+ width: var(--bl-logo-width);
16
14
  }
17
15
 
18
16
  .navbar-search {
@@ -26,9 +24,4 @@
26
24
  // This prevents the widget from being squished so the text overflows
27
25
  min-width: 7em;
28
26
  }
29
-
30
- .search-query-form {
31
- @extend .col-md-12;
32
- @extend .col-lg-8;
33
- }
34
27
  }
@@ -1,11 +1,3 @@
1
- .btn.btn-icon {
2
- padding: $btn-padding-y;
3
-
4
- &.btn-sm {
5
- padding: $btn-padding-y-sm;
6
- }
7
- }
8
-
9
1
  .remove .bi {
10
2
  height: 1em;
11
3
  width: 1em;
@@ -4,7 +4,7 @@
4
4
 
5
5
  .modal-content {
6
6
  .facet-pagination.top {
7
- display: none;
7
+ display: none; /* Doesn't display in a modal, but would display on a new page (e.g. without Javascript) */
8
8
  }
9
9
 
10
10
  .page-sidebar {
@@ -23,5 +23,5 @@
23
23
  // app/views/catalog/facet.html.erb may be rendered as a modal or a whole page.
24
24
  // When it's a whole page, don't show the close button.
25
25
  .blacklight-modal-close {
26
- display: none;
26
+ display: none;
27
27
  }
@@ -5,10 +5,6 @@
5
5
  padding-left: 0;
6
6
  }
7
7
 
8
- .record-padding {
9
- margin-top: $spacer * .5;
10
- }
11
-
12
8
  .pagination {
13
9
  @media (max-width: breakpoint-max(sm)) {
14
10
  flex-wrap: wrap;
@@ -5,7 +5,6 @@
5
5
  }
6
6
 
7
7
  .input-group > .search-autocomplete-wrapper {
8
- @extend .form-control;
9
8
  display: inline-block;
10
9
  flex-grow: 4;
11
10
  padding: 0;
@@ -27,3 +26,10 @@
27
26
  border-bottom-left-radius: 0;
28
27
  display: flex;
29
28
  }
29
+
30
+ // ensure that the search bar appears at the top of the page when focused using
31
+ // anchor links, e.g. from the skip links navigation
32
+ .search-field,
33
+ .search-q {
34
+ scroll-margin: 5rem;
35
+ }
@@ -6,10 +6,6 @@
6
6
  padding: $spacer;
7
7
  }
8
8
 
9
- .constraints-container {
10
- @extend .mb-0;
11
- }
12
-
13
9
  .constraint {
14
10
  padding-inline-end: $spacer;
15
11
  display: block;
@@ -5,28 +5,14 @@
5
5
 
6
6
  .document {
7
7
  display: flex;
8
- border-bottom: 1px dotted $table-border-color;
8
+ border-bottom: 1px dotted var(--bs-border-color);
9
9
  margin-top: var(--bl-results-document-margin-top);
10
10
  padding-top: var(--bl-results-document-padding-top);
11
11
 
12
- .document-title-heading {
13
- @extend h5;
14
- }
15
-
16
12
  .document-main-section {
17
13
  flex-grow: 1;
18
14
  }
19
15
 
20
- // bookmarks checkbox on index, give it some
21
- // lower margin when it collapses
22
- .index-document-functions {
23
- margin-bottom: ($spacer * 1.5);
24
-
25
- @media (min-width: breakpoint-min(sm)) {
26
- margin-bottom: 0;
27
- }
28
- }
29
-
30
16
  .document-thumbnail {
31
17
  flex-grow: 0;
32
18
  margin-bottom: ($spacer * 3);
@@ -1,18 +1,13 @@
1
- /* Warning! If you want to change these, just copy them into your own theme css. But you want to remove the !default, which only will set them if not already set. */
2
-
3
- $logo-image: image_url("blacklight/logo.png") !default;
4
- $logo-width: 150px !default;
5
- $logo-height: 50px !default;
6
-
7
- $facet-active-border: $success !default;
8
- $facet-active-bg: $success !default;
9
- $facet-active-item-color: $success !default;
10
-
11
- /* for compatability with BS < 5.3 */
12
- $body-secondary-color: rgba($body-color, 0.75) !default;
13
-
14
1
  :root {
15
- --bs-secondary-color: #{$body-secondary-color}; /* for compatability with BS < 5.3 */
2
+ --bl-logo-image: url("blacklight/logo.png");
3
+ --bl-logo-width: 150px;
4
+ --bl-logo-height: 50px;
5
+ --bs-secondary-color: rgba(
6
+ 33,
7
+ 37,
8
+ 41,
9
+ 0.75
10
+ ); /* for compatability with BS < 5.3 */
16
11
 
17
12
  --bl-main-padding-y: 0.5rem;
18
13
 
@@ -0,0 +1,4 @@
1
+ @import "bootstrap/scss/functions";
2
+ @import "bootstrap/scss/mixins/breakpoints";
3
+ @import "bootstrap/scss/variables";
4
+ @import "blacklight";
@@ -24,7 +24,7 @@ module Blacklight
24
24
 
25
25
  def default_operator_menu
26
26
  options_with_labels = [:must, :should].index_by { |op| t(op, scope: 'blacklight.advanced_search.op') }
27
- label_tag(:op, t('blacklight.advanced_search.op.label'), class: 'sr-only visually-hidden') + select_tag(:op, options_for_select(options_with_labels, params[:op]), class: 'input-small')
27
+ label_tag(:op, t('blacklight.advanced_search.op.label'), class: 'visually-hidden') + select_tag(:op, options_for_select(options_with_labels, params[:op]), class: 'input-small')
28
28
  end
29
29
 
30
30
  def sort_fields_select
@@ -4,7 +4,7 @@ module Blacklight
4
4
  class ConstraintComponent < Blacklight::Component
5
5
  with_collection_parameter :facet_item_presenter
6
6
 
7
- def initialize(facet_item_presenter:, classes: 'filter', layout: Blacklight::ConstraintLayoutComponent)
7
+ def initialize(facet_item_presenter:, classes: %w[filter mx-1], layout: Blacklight::ConstraintLayoutComponent)
8
8
  @facet_item_presenter = facet_item_presenter
9
9
  @classes = classes
10
10
  @layout = layout
@@ -9,8 +9,8 @@
9
9
  </span>
10
10
  <% if @remove_path.present? %>
11
11
  <%= link_to(@remove_path, class: 'btn btn-outline-secondary remove') do %>
12
- <%= render Blacklight::Icons::RemoveComponent.new %>
13
- <span class="sr-only visually-hidden"><%= remove_aria_label %></span>
12
+ <%= render Blacklight::Icons::RemoveComponent.new(aria_hidden: true) %>
13
+ <span class="visually-hidden"><%= remove_aria_label %></span>
14
14
  <% end %>
15
15
  <% end %>
16
16
  </span>
@@ -1,12 +1,12 @@
1
1
  <%= content_tag @tag || :div, id: @id, class: @classes do %>
2
2
  <% if @render_headers %>
3
- <h2 class="sr-only visually-hidden"><%= t('blacklight.search.search_constraints_header') %></h2>
3
+ <h2 class="visually-hidden"><%= t('blacklight.search.search_constraints_header') %></h2>
4
4
  <% end %>
5
5
 
6
6
  <%= render @start_over_component.new if @start_over_component %>
7
7
 
8
8
  <% if @render_headers %>
9
- <span class="constraints-label sr-only visually-hidden"><%= t('blacklight.search.filters.title') %></span>
9
+ <span class="constraints-label visually-hidden"><%= t('blacklight.search.filters.title') %></span>
10
10
  <% end %>
11
11
  <% if query_constraints_area.present? %>
12
12
  <% query_constraints_area.each do |constraint| %>
@@ -20,7 +20,7 @@ module Blacklight
20
20
  def initialize(search_state:,
21
21
  tag: :div,
22
22
  render_headers: true,
23
- id: 'appliedParams', classes: 'clearfix constraints-container',
23
+ id: 'appliedParams', classes: 'clearfix constraints-container mb-2',
24
24
  query_constraint_component: Blacklight::ConstraintLayoutComponent,
25
25
  query_constraint_component_options: {},
26
26
  facet_constraint_component: Blacklight::ConstraintComponent,
@@ -8,9 +8,9 @@
8
8
  absent: t('blacklight.search.bookmarks.absent'),
9
9
  inprogress: t('blacklight.search.bookmarks.inprogress')
10
10
  }) do %>
11
- <div class="checkbox toggle-bookmark">
12
- <label class="toggle-bookmark" data-checkboxsubmit-target="label">
13
- <input type="checkbox" class="toggle-bookmark <%= bookmark_icon ? 'd-none' : '' %>" data-checkboxsubmit-target="checkbox" <%= 'checked="checked"' if bookmarked? %>>
11
+ <div class="toggle-bookmark">
12
+ <label class="toggle-bookmark-label" data-checkboxsubmit-target="label">
13
+ <input type="checkbox" class="toggle-bookmark-input <%= bookmark_icon ? 'd-none' : '' %>" data-checkboxsubmit-target="checkbox" <%= 'checked="checked"' if bookmarked? %>>
14
14
  <%= bookmark_icon %>
15
15
  <span data-checkboxsubmit-target="span"><%= bookmarked? ? t('blacklight.search.bookmarks.present') : t('blacklight.search.bookmarks.absent') %></span>
16
16
  </label>
@@ -4,6 +4,6 @@
4
4
  <%= grouped_documents %>
5
5
  </div>
6
6
  <%- if @group_limit > 0 && @group.total > @group_limit %>
7
- <%= helpers.link_to t('blacklight.search.group.more'), add_group_facet_params_and_redirect(@group), class: 'more-in-group' %>
7
+ <%= helpers.link_to t('blacklight.search.group.more'), add_group_facet_params_and_redirect(@group), class: 'more-in-group float-right' %>
8
8
  <%- end %>
9
9
  </div>
@@ -40,7 +40,7 @@ module Blacklight
40
40
  end
41
41
 
42
42
  def header_container_classes
43
- has_header_tools? ? 'row pagination-search-widgets pb-2' : 'pagination-search-widgets'
43
+ has_header_tools? ? 'row pagination-search-widgets pb-3' : 'pagination-search-widgets pb-3'
44
44
  end
45
45
 
46
46
  def header_actions