blacklight 8.3.0 → 8.4.0
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.
- checksums.yaml +4 -4
- data/.github/workflows/ruby.yml +9 -5
- data/.rubocop.yml +3 -0
- data/.rubocop_todo.yml +22 -55
- data/Gemfile +2 -10
- data/README.md +2 -2
- data/VERSION +1 -1
- data/app/assets/javascripts/blacklight/blacklight.esm.js +5 -1
- data/app/assets/javascripts/blacklight/blacklight.esm.js.map +1 -1
- data/app/assets/javascripts/blacklight/blacklight.js +5 -1
- data/app/assets/javascripts/blacklight/blacklight.js.map +1 -1
- data/app/assets/stylesheets/blacklight/_balanced_list.scss +1 -1
- data/app/assets/stylesheets/blacklight/_bookmark.scss +30 -0
- data/app/assets/stylesheets/blacklight/_bootstrap_overrides.scss +0 -4
- data/app/assets/stylesheets/blacklight/_constraints.scss +15 -9
- data/app/assets/stylesheets/blacklight/_controls.scss +0 -1
- data/app/assets/stylesheets/blacklight/_facets.scss +33 -37
- data/app/assets/stylesheets/blacklight/_header.scss +2 -35
- data/app/assets/stylesheets/blacklight/_icons.scss +3 -2
- data/app/assets/stylesheets/blacklight/_layout.scss +3 -0
- data/app/assets/stylesheets/blacklight/_mixins.scss +4 -4
- data/app/assets/stylesheets/blacklight/_search_form.scss +3 -8
- data/app/assets/stylesheets/blacklight/_search_history.scss +5 -5
- data/app/assets/stylesheets/blacklight/_search_results.scss +5 -2
- data/app/assets/stylesheets/blacklight/blacklight_defaults.scss +16 -10
- data/app/components/blacklight/advanced_search_form_component.html.erb +1 -1
- data/app/components/blacklight/advanced_search_form_component.rb +6 -0
- data/app/components/blacklight/constraint_layout_component.html.erb +2 -9
- data/app/components/blacklight/constraint_layout_component.rb +8 -0
- data/app/components/blacklight/constraints_component.rb +3 -3
- data/app/components/blacklight/document/action_component.rb +2 -1
- data/app/components/blacklight/document/bookmark_component.html.erb +2 -1
- data/app/components/blacklight/document/bookmark_component.rb +6 -0
- data/app/components/blacklight/document/page_header_component.html.erb +7 -0
- data/app/components/blacklight/document/page_header_component.rb +85 -0
- data/app/components/blacklight/document_component.rb +1 -1
- data/app/components/blacklight/facet_component.rb +1 -1
- data/app/components/blacklight/facet_field_checkboxes_component.html.erb +1 -1
- data/app/components/blacklight/facet_field_checkboxes_component.rb +1 -1
- data/app/components/blacklight/facet_field_inclusive_constraint_component.html.erb +1 -1
- data/app/components/blacklight/facet_field_list_component.html.erb +1 -1
- data/app/components/blacklight/facet_item_component.rb +1 -1
- data/app/components/blacklight/icons/bookmark_icon_component.rb +17 -0
- data/app/components/blacklight/icons/icon_component.rb +9 -4
- data/app/components/blacklight/icons/remove_component.rb +16 -0
- data/app/components/blacklight/metadata_field_component.html.erb +1 -1
- data/app/components/blacklight/metadata_field_component.rb +5 -0
- data/app/components/blacklight/response/facet_group_component.rb +1 -1
- data/app/components/blacklight/response/pagination_component.html.erb +1 -1
- data/app/components/blacklight/response/sort_component.html.erb +1 -6
- data/app/components/blacklight/response/sort_component.rb +15 -0
- data/app/components/blacklight/search/per_page_component.html.erb +2 -0
- data/app/components/blacklight/search/per_page_component.rb +50 -0
- data/app/components/blacklight/search_bar_component.html.erb +1 -1
- data/app/components/blacklight/search_context/server_item_pagination_component.html.erb +4 -7
- data/app/components/blacklight/skip_link_component.html.erb +7 -0
- data/app/components/blacklight/skip_link_component.rb +17 -0
- data/app/components/blacklight/system/dropdown_button_component.rb +18 -0
- data/app/components/blacklight/system/dropdown_component.rb +3 -6
- data/app/components/blacklight/system/flash_message_component.html.erb +1 -1
- data/app/components/blacklight/top_navbar_component.html.erb +2 -2
- data/app/components/blacklight/top_navbar_component.rb +4 -0
- data/app/helpers/blacklight/catalog_helper_behavior.rb +2 -0
- data/app/helpers/blacklight/component_helper_behavior.rb +4 -4
- data/app/helpers/blacklight/configuration_helper_behavior.rb +2 -0
- data/app/javascript/blacklight/checkbox_submit.js +5 -1
- data/app/models/concerns/blacklight/document/semantic_fields.rb +1 -1
- data/app/presenters/blacklight/facet_checkbox_item_presenter.rb +11 -0
- data/app/presenters/blacklight/facet_field_presenter.rb +9 -1
- data/app/services/blacklight/search_service.rb +9 -1
- data/app/views/catalog/_per_page_widget.html.erb +1 -10
- data/app/views/catalog/_search_results.html.erb +1 -1
- data/app/views/catalog/_show_main_content.html.erb +1 -1
- data/app/views/catalog/show.html.erb +0 -2
- data/app/views/catalog/suggest.html.erb +1 -1
- data/app/views/kaminari/blacklight/_page.html.erb +14 -8
- data/app/views/layouts/blacklight/base.html.erb +3 -4
- data/blacklight.gemspec +4 -0
- data/{docker-compose.yml → compose.yaml} +1 -1
- data/config/locales/blacklight.ar.yml +3 -0
- data/config/locales/blacklight.de.yml +3 -0
- data/config/locales/blacklight.en.yml +216 -229
- data/config/locales/blacklight.es.yml +3 -0
- data/config/locales/blacklight.fr.yml +3 -0
- data/config/locales/blacklight.hu.yml +3 -0
- data/config/locales/blacklight.it.yml +3 -0
- data/config/locales/blacklight.nl.yml +3 -0
- data/config/locales/blacklight.pt-BR.yml +3 -0
- data/config/locales/blacklight.sq.yml +3 -0
- data/config/locales/blacklight.zh.yml +3 -0
- data/lib/blacklight/abstract_repository.rb +6 -0
- data/lib/blacklight/configuration.rb +32 -19
- data/lib/blacklight/parameters.rb +1 -1
- data/lib/blacklight/solr/repository.rb +11 -4
- data/lib/blacklight/solr/response/params.rb +1 -1
- data/lib/blacklight/solr/response.rb +0 -12
- data/lib/blacklight/solr/search_builder_behavior.rb +1 -1
- data/lib/blacklight/solr.rb +0 -6
- data/lib/blacklight.rb +4 -14
- data/lib/generators/blacklight/assets/propshaft_generator.rb +2 -2
- data/lib/generators/blacklight/models_generator.rb +1 -1
- data/package.json +1 -1
- data/spec/components/blacklight/document/action_component_spec.rb +1 -1
- data/spec/components/blacklight/document/page_header_component_spec.rb +92 -0
- data/spec/components/blacklight/document_component_spec.rb +20 -0
- data/spec/components/blacklight/icons/icon_component_spec.rb +42 -0
- data/spec/components/blacklight/search_context/server_item_pagination_component_spec.rb +1 -1
- data/spec/controllers/blacklight/catalog_spec.rb +1 -1
- data/spec/controllers/catalog_controller_spec.rb +5 -5
- data/spec/features/advanced_search_spec.rb +16 -2
- data/spec/features/bookmarks_spec.rb +15 -0
- data/spec/helpers/blacklight/facets_helper_behavior_spec.rb +2 -2
- data/spec/lib/blacklight/nested_open_struct_with_hash_access_spec.rb +1 -1
- data/spec/lib/blacklight/open_struct_with_hash_access_spec.rb +1 -1
- data/spec/models/blacklight/configuration_spec.rb +12 -12
- data/spec/models/blacklight/solr/document_spec.rb +2 -2
- data/spec/models/blacklight/solr/repository_spec.rb +31 -13
- data/spec/models/blacklight/solr/response/facets_spec.rb +2 -2
- data/spec/models/blacklight/solr/response/group_spec.rb +1 -1
- data/spec/models/blacklight/solr/response_spec.rb +2 -2
- data/spec/models/blacklight/solr/search_builder_behavior_spec.rb +1 -1
- data/spec/models/bookmark_spec.rb +1 -1
- data/spec/presenters/blacklight/document_presenter_spec.rb +2 -2
- data/spec/presenters/blacklight/facet_checkbox_item_presenter_spec.rb +42 -0
- data/spec/presenters/blacklight/facet_field_presenter_spec.rb +14 -0
- data/spec/requests/load_suggestions_spec.rb +5 -5
- data/spec/services/blacklight/search_service_spec.rb +2 -2
- data/spec/test_app_templates/lib/generators/test_app_generator.rb +1 -1
- data/tasks/blacklight.rake +5 -5
- metadata +76 -4
@@ -31,7 +31,7 @@ module Blacklight::Document
|
|
31
31
|
# but extensions should call super and modify hash returned, to avoid
|
32
32
|
# unintentionally erasing values provided by other extensions.
|
33
33
|
def to_semantic_values
|
34
|
-
@semantic_value_hash ||= self.class.field_semantics.each_with_object(Hash.new
|
34
|
+
@semantic_value_hash ||= self.class.field_semantics.each_with_object(Hash.new { |hash, key| hash[key] = [] }) do |(key, field_names), hash|
|
35
35
|
##
|
36
36
|
# Handles single string field_name or an array of field_names
|
37
37
|
value = Array.wrap(field_names).map { |field_name| self[field_name] }.flatten.compact
|
@@ -0,0 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Blacklight
|
4
|
+
class FacetCheckboxItemPresenter < Blacklight::FacetItemPresenter
|
5
|
+
# Check if the query parameters have any inclusive facets with the given value
|
6
|
+
# @return [Boolean]
|
7
|
+
def selected?
|
8
|
+
search_state.filter(facet_config).values(except: [:filters, :missing]).flatten.include?(value)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
@@ -19,7 +19,15 @@ module Blacklight
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def active?
|
22
|
-
|
22
|
+
if in_advanced_search?
|
23
|
+
search_state.filter(facet_field).values(except: [:filters, :missing]).any?
|
24
|
+
else
|
25
|
+
search_state.filter(facet_field).any?
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def in_advanced_search?
|
30
|
+
search_state.params[:action] == "advanced_search"
|
23
31
|
end
|
24
32
|
|
25
33
|
def in_modal?
|
@@ -148,7 +148,15 @@ module Blacklight
|
|
148
148
|
.merge(blacklight_config.fetch_many_document_params)
|
149
149
|
.merge(extra_controller_params)
|
150
150
|
|
151
|
-
|
151
|
+
# find_many was introduced in Blacklight 8.4. Before that, we used the
|
152
|
+
# regular search method (possibly with a find-many specific `qt` parameter).
|
153
|
+
# In order to support Repository implementations that may not have a find_many,
|
154
|
+
# we'll fall back to search if find_many isn't available.
|
155
|
+
solr_response = if repository.respond_to?(:find_many)
|
156
|
+
repository.find_many(query)
|
157
|
+
else
|
158
|
+
repository.search(query)
|
159
|
+
end
|
152
160
|
|
153
161
|
solr_response.documents
|
154
162
|
end
|
@@ -1,10 +1 @@
|
|
1
|
-
|
2
|
-
<span class="sr-only visually-hidden"><%= t('blacklight.search.per_page.title') %></span>
|
3
|
-
<%= render(Blacklight::System::DropdownComponent.new(
|
4
|
-
param: :per_page,
|
5
|
-
choices: per_page_options_for_select,
|
6
|
-
id: 'per_page-dropdown',
|
7
|
-
search_state: search_state,
|
8
|
-
selected: current_per_page,
|
9
|
-
interpolation: :count)) %>
|
10
|
-
<% end %>
|
1
|
+
<%= render Blacklight::Search::PerPageComponent.new(search_state:, blacklight_config:, response: @response) %>
|
@@ -8,7 +8,7 @@
|
|
8
8
|
<% end %>
|
9
9
|
|
10
10
|
<% content_for(:skip_links) do -%>
|
11
|
-
<%= link_to t('blacklight.skip_links.first_result'), '#documents', class: '
|
11
|
+
<%= link_to t('blacklight.skip_links.first_result'), '#documents', class: 'd-inline-flex p-2 m-1', data: { turbolinks: 'false' } %>
|
12
12
|
<% end %>
|
13
13
|
|
14
14
|
<% content_for(:container_header) do -%>
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<%= render blacklight_config.
|
1
|
+
<%= render blacklight_config.view_config(:show).document_header_component.new(document: @document, search_context: @search_context, search_session: search_session) %>
|
2
2
|
<% @page_title = t('blacklight.search.show.title', document_title: document_presenter(@document).html_title, application_name: application_name).html_safe %>
|
3
3
|
<% content_for(:head) { render_link_rel_alternates } %>
|
4
4
|
|
@@ -8,12 +8,18 @@
|
|
8
8
|
remote: data-remote
|
9
9
|
-%>
|
10
10
|
<% page_display = number_with_delimiter(page.to_s) %>
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
11
|
+
<% link_attrs = {
|
12
|
+
remote: remote,
|
13
|
+
rel: page.next? ? 'next' : page.prev? ? 'prev' : nil,
|
14
|
+
class: 'page-link',
|
15
|
+
}
|
16
|
+
%>
|
17
|
+
<% if page.current? %>
|
18
|
+
<%= tag.li class: class_names('page-item', 'active'), aria_current: 'page' do %>
|
19
|
+
<%= link_to page_display, url, link_attrs.merge(aria: { label: t('views.pagination.aria.current_page', page: page_display) }) %>
|
17
20
|
<% end %>
|
18
|
-
|
19
|
-
|
21
|
+
<% else %>
|
22
|
+
<%= tag.li class: 'page-item' do %>
|
23
|
+
<%= link_to page_display, url, link_attrs.merge(aria: { label: t('views.pagination.aria.go_to_page', page: page_display) }) %>
|
24
|
+
<% end %>
|
25
|
+
<% end %>
|
@@ -28,11 +28,10 @@
|
|
28
28
|
<%= content_for(:head) %>
|
29
29
|
</head>
|
30
30
|
<body class="<%= render_body_class %>">
|
31
|
-
|
32
|
-
<%= link_to t('blacklight.skip_links.search_field'), '#search_field', class: 'element-invisible element-focusable rounded-bottom py-2 px-3', data: { turbolinks: 'false' } %>
|
33
|
-
<%= link_to t('blacklight.skip_links.main_content'), '#main-container', class: 'element-invisible element-focusable rounded-bottom py-2 px-3', data: { turbolinks: 'false' } %>
|
31
|
+
<%= render blacklight_config.skip_link_component.new do %>
|
34
32
|
<%= content_for(:skip_links) %>
|
35
|
-
|
33
|
+
<% end %>
|
34
|
+
|
36
35
|
<%= render partial: 'shared/header_navbar' %>
|
37
36
|
|
38
37
|
<main id="main-container" class="<%= container_classes %>" role="main" aria-label="<%= t('blacklight.main.aria.main_container') %>">
|
data/blacklight.gemspec
CHANGED
@@ -32,6 +32,7 @@ Gem::Specification.new do |s|
|
|
32
32
|
s.add_dependency "i18n", '>= 1.7.0' # added named parameters
|
33
33
|
s.add_dependency "ostruct", '>= 0.3.2'
|
34
34
|
s.add_dependency "view_component", '>= 2.66', '< 4'
|
35
|
+
s.add_dependency "zeitwerk"
|
35
36
|
|
36
37
|
s.add_development_dependency "rsolr", ">= 1.0.6", "< 3" # Library for interacting with rSolr.
|
37
38
|
s.add_development_dependency "rspec-rails", "~> 6.1"
|
@@ -45,6 +46,9 @@ Gem::Specification.new do |s|
|
|
45
46
|
s.add_development_dependency "rubocop", '~> 1.0'
|
46
47
|
s.add_development_dependency "rubocop-rails"
|
47
48
|
s.add_development_dependency "rubocop-rspec"
|
49
|
+
s.add_development_dependency "rubocop-capybara"
|
50
|
+
s.add_development_dependency "rubocop-rspec_rails"
|
51
|
+
s.add_development_dependency "rubocop-factory_bot"
|
48
52
|
s.add_development_dependency "i18n-tasks"
|
49
53
|
s.add_development_dependency "solr_wrapper"
|
50
54
|
end
|