blacklight 8.11.0 → 9.0.0.beta2
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/.env +3 -3
- data/.github/matrix.json +11 -42
- data/.github/pull_request_template.md +7 -0
- data/.github/workflows/main.yml +0 -2
- data/.github/workflows/release_7_x_scheduled.yml +39 -0
- data/.github/workflows/release_8_x_scheduled.yml +39 -0
- data/.github/workflows/test.yml +0 -5
- data/.rubocop.yml +71 -3
- data/.rubocop_todo.yml +43 -76
- data/.solr_wrapper.yml +2 -0
- data/README.md +30 -8
- data/VERSION +1 -1
- data/app/assets/builds/blacklight.css +452 -0
- data/app/assets/javascripts/blacklight/blacklight.esm.js +6 -76
- data/app/assets/javascripts/blacklight/blacklight.esm.js.map +1 -1
- data/app/assets/javascripts/blacklight/blacklight.js +6 -76
- data/app/assets/javascripts/blacklight/blacklight.js.map +1 -1
- data/app/assets/stylesheets/blacklight/_balanced_list.scss +1 -4
- data/app/assets/stylesheets/blacklight/_blacklight_base.scss +1 -3
- data/app/assets/stylesheets/blacklight/_bookmark.scss +44 -41
- data/app/assets/stylesheets/blacklight/_bootstrap_overrides.scss +0 -25
- data/app/assets/stylesheets/blacklight/_constraints.scss +15 -24
- data/app/assets/stylesheets/blacklight/_controls.scss +2 -18
- data/app/assets/stylesheets/blacklight/_facets.scss +17 -84
- data/app/assets/stylesheets/blacklight/_group.scss +2 -5
- data/app/assets/stylesheets/blacklight/_header.scss +8 -11
- data/app/assets/stylesheets/blacklight/_icons.scss +0 -8
- data/app/assets/stylesheets/blacklight/_modal.scss +1 -1
- data/app/assets/stylesheets/blacklight/_pagination.scss +0 -4
- data/app/assets/stylesheets/blacklight/_search_form.scss +0 -1
- data/app/assets/stylesheets/blacklight/_search_history.scss +0 -8
- data/app/assets/stylesheets/blacklight/_search_results.scss +1 -15
- data/app/assets/stylesheets/blacklight/blacklight_defaults.scss +9 -14
- data/app/assets/stylesheets/blacklight/build.scss +4 -0
- data/app/components/blacklight/advanced_search_form_component.rb +3 -3
- data/app/components/blacklight/constraint_component.rb +1 -1
- data/app/components/blacklight/constraint_layout_component.html.erb +2 -2
- data/app/components/blacklight/constraints_component.html.erb +2 -2
- data/app/components/blacklight/constraints_component.rb +3 -3
- data/app/components/blacklight/document/bookmark_component.html.erb +3 -3
- data/app/components/blacklight/document/bookmark_component.rb +2 -2
- data/app/components/blacklight/document/group_component.html.erb +1 -1
- data/app/components/blacklight/document/more_like_this_component.rb +2 -2
- data/app/components/blacklight/document/page_header_component.rb +1 -1
- data/app/components/blacklight/document/sidebar_component.rb +5 -5
- data/app/components/blacklight/document/thumbnail_component.html.erb +3 -7
- data/app/components/blacklight/document/thumbnail_component.rb +7 -6
- data/app/components/blacklight/document_component.rb +12 -16
- data/app/components/blacklight/document_title_component.rb +5 -11
- data/app/components/blacklight/facet_field_checkboxes_component.rb +2 -20
- data/app/components/blacklight/facet_field_component.rb +2 -17
- data/app/components/blacklight/facet_field_filter_component.rb +2 -21
- data/app/components/blacklight/facet_field_inclusive_constraint_component.rb +4 -25
- data/app/components/blacklight/facet_field_list_component.rb +2 -50
- data/app/components/blacklight/facet_field_no_layout_component.rb +2 -10
- data/app/components/blacklight/facet_item_component.rb +2 -74
- data/app/components/blacklight/facet_item_pivot_component.rb +3 -3
- data/app/components/blacklight/facets/checkboxes_component.rb +26 -0
- data/app/components/blacklight/facets/count_component.rb +23 -0
- data/app/components/blacklight/{facet_field_component.html.erb → facets/field_component.html.erb} +4 -4
- data/app/components/blacklight/facets/field_component.rb +23 -0
- data/app/components/blacklight/facets/filters_component.html.erb +4 -0
- data/app/components/blacklight/facets/filters_component.rb +27 -0
- data/app/components/blacklight/{facet_field_inclusive_constraint_component.html.erb → facets/inclusive_constraint_component.html.erb} +1 -1
- data/app/components/blacklight/facets/inclusive_constraint_component.rb +31 -0
- data/app/components/blacklight/{facet_field_filter_component.html.erb → facets/index_navigation_component.html.erb} +1 -1
- data/app/components/blacklight/facets/index_navigation_component.rb +32 -0
- data/app/components/blacklight/facets/item_component.rb +73 -0
- data/app/components/blacklight/facets/list_component.html.erb +11 -0
- data/app/components/blacklight/facets/list_component.rb +38 -0
- data/app/components/blacklight/facets/no_layout_component.rb +16 -0
- data/app/components/blacklight/facets/selected_value_component.rb +29 -0
- data/app/components/blacklight/facets/suggest_component.html.erb +12 -0
- data/app/components/blacklight/facets/suggest_component.rb +22 -0
- data/app/components/blacklight/metadata_field_plain_text_layout_component.rb +2 -2
- data/app/components/blacklight/response/facet_group_component.html.erb +3 -18
- data/app/components/blacklight/response/facet_group_component.rb +11 -23
- data/app/components/blacklight/response/facet_toggle_button_component.html.erb +16 -0
- data/app/components/blacklight/response/facet_toggle_button_component.rb +14 -0
- data/app/components/blacklight/response/pagination_component.html.erb +1 -1
- data/app/components/blacklight/response/pagination_component.rb +2 -1
- data/app/components/blacklight/response/sort_component.rb +1 -0
- data/app/components/blacklight/response/view_type_button_component.html.erb +1 -1
- data/app/components/blacklight/response/view_type_component.html.erb +1 -1
- data/app/components/blacklight/search/per_page_component.html.erb +1 -1
- data/app/components/blacklight/search/per_page_component.rb +1 -0
- data/app/components/blacklight/search/sidebar_component.html.erb +1 -1
- data/app/components/blacklight/search/sidebar_component.rb +1 -1
- data/app/components/blacklight/search_bar_component.html.erb +3 -3
- data/app/components/blacklight/search_bar_component.rb +2 -2
- data/app/components/blacklight/search_button_component.rb +2 -2
- data/app/components/blacklight/search_context/server_applied_params_component.html.erb +2 -2
- data/app/components/blacklight/search_context/server_applied_params_component.rb +9 -0
- data/app/components/blacklight/skip_link_component.html.erb +1 -1
- data/app/components/blacklight/skip_link_component.rb +2 -1
- data/app/components/blacklight/top_navbar_component.html.erb +2 -2
- data/app/controllers/concerns/blacklight/bookmarks.rb +3 -3
- data/app/controllers/concerns/blacklight/catalog.rb +9 -23
- data/app/controllers/concerns/blacklight/controller.rb +1 -1
- data/app/controllers/concerns/blacklight/facetable.rb +34 -0
- data/app/controllers/concerns/blacklight/search_context.rb +0 -12
- data/app/controllers/concerns/blacklight/searchable.rb +1 -1
- data/app/helpers/blacklight/blacklight_helper_behavior.rb +0 -6
- data/app/helpers/blacklight/catalog_helper_behavior.rb +0 -10
- data/app/helpers/blacklight/configuration_helper_behavior.rb +2 -14
- data/app/helpers/blacklight/document_helper_behavior.rb +3 -27
- data/app/helpers/blacklight/facets_helper_behavior.rb +9 -0
- data/app/helpers/blacklight/icon_helper_behavior.rb +3 -11
- data/app/helpers/blacklight/layout_helper_behavior.rb +2 -2
- data/app/helpers/blacklight/render_partials_helper_behavior.rb +0 -14
- data/app/helpers/blacklight/url_helper_behavior.rb +1 -1
- data/app/javascript/{blacklight → blacklight-frontend}/bookmark_toggle.js +1 -1
- data/app/javascript/{blacklight → blacklight-frontend}/checkbox_submit.js +3 -0
- data/app/javascript/{blacklight → blacklight-frontend}/core.js +2 -10
- data/app/javascript/{blacklight → blacklight-frontend}/facet_suggest.js +1 -3
- data/app/javascript/blacklight-frontend/index.js +16 -0
- data/app/javascript/{blacklight → blacklight-frontend}/modal.js +1 -5
- data/app/models/concerns/blacklight/document.rb +0 -11
- data/app/models/concerns/blacklight/user.rb +1 -1
- data/app/models/facet_search_builder.rb +5 -0
- data/app/presenters/blacklight/facet_field_presenter.rb +3 -3
- data/app/presenters/blacklight/rendering/helper_method.rb +4 -4
- data/app/presenters/blacklight/rendering/join.rb +2 -2
- data/app/services/blacklight/facet_search_service.rb +44 -0
- data/app/services/blacklight/field_retriever.rb +1 -1
- data/app/services/blacklight/search_params_yaml_coder.rb +0 -2
- data/app/services/blacklight/search_service.rb +6 -6
- data/app/values/blacklight/types.rb +2 -2
- data/app/views/bookmarks/_clear_bookmarks_widget.html.erb +0 -2
- data/app/views/bookmarks/index.html.erb +1 -1
- data/app/views/catalog/_facet_pivot.html.erb +1 -1
- data/app/views/catalog/_home_text.html.erb +2 -2
- data/app/views/catalog/_results_pagination.html.erb +2 -5
- data/app/views/catalog/_search_results.html.erb +3 -3
- data/app/views/catalog/_search_results_header.html.erb +1 -1
- data/app/views/catalog/_sort_and_per_page.html.erb +1 -1
- data/app/views/catalog/_sort_widget.html.erb +1 -0
- data/app/views/catalog/facet.html.erb +4 -6
- data/app/views/catalog/show.html.erb +2 -3
- data/app/views/kaminari/blacklight/_paginator.html.erb +1 -2
- data/app/views/layouts/blacklight/base.html.erb +3 -7
- data/app/views/search_history/index.html.erb +0 -2
- data/blacklight.gemspec +4 -4
- data/config/importmap.rb +1 -1
- data/config/locales/blacklight.ar.yml +2 -2
- data/config/locales/blacklight.ca.yml +124 -124
- data/config/locales/blacklight.de.yml +2 -2
- data/config/locales/blacklight.en.yml +14 -14
- data/config/locales/blacklight.es.yml +2 -2
- data/config/locales/blacklight.fr.yml +2 -2
- data/config/locales/blacklight.hu.yml +2 -2
- data/config/locales/blacklight.it.yml +1 -1
- data/config/locales/blacklight.nl.yml +2 -2
- data/config/locales/blacklight.pt-BR.yml +1 -1
- data/config/locales/blacklight.sq.yml +2 -2
- data/config/locales/blacklight.zh.yml +2 -2
- data/lib/blacklight/abstract_repository.rb +2 -2
- data/lib/blacklight/abstract_search_builder.rb +154 -0
- data/lib/blacklight/configuration/context.rb +3 -3
- data/lib/blacklight/configuration/display_field.rb +1 -1
- data/lib/blacklight/configuration/facet_field.rb +6 -6
- data/lib/blacklight/configuration/field.rb +4 -4
- data/lib/blacklight/configuration/fields.rb +3 -4
- data/lib/blacklight/configuration/search_field.rb +1 -1
- data/lib/blacklight/configuration/view_config.rb +2 -4
- data/lib/blacklight/configuration.rb +11 -18
- data/lib/blacklight/engine.rb +0 -6
- data/lib/blacklight/facet_search_builder.rb +18 -0
- data/lib/blacklight/nested_open_struct_with_hash_access.rb +1 -1
- data/lib/blacklight/open_struct_with_hash_access.rb +5 -5
- data/lib/blacklight/search_builder.rb +1 -159
- data/lib/blacklight/search_state/filter_field.rb +2 -2
- data/lib/blacklight/search_state/pivot_filter_field.rb +4 -4
- data/lib/blacklight/solr/abstract_filter_query_builder.rb +77 -0
- data/lib/blacklight/solr/default_filter_query_builder.rb +20 -0
- data/lib/blacklight/solr/facet_search_builder_behavior.rb +62 -0
- data/lib/blacklight/solr/repository.rb +8 -9
- data/lib/blacklight/solr/request.rb +1 -7
- data/lib/blacklight/solr/response/facets.rb +2 -2
- data/lib/blacklight/solr/response/group_response.rb +2 -2
- data/lib/blacklight/solr/response/params.rb +0 -4
- data/lib/blacklight/solr/response.rb +5 -1
- data/lib/blacklight/solr/search_builder_behavior.rb +17 -132
- data/lib/blacklight.rb +2 -2
- data/lib/generators/blacklight/assets/importmap_generator.rb +6 -24
- data/lib/generators/blacklight/assets/propshaft_generator.rb +1 -1
- data/lib/generators/blacklight/assets_generator.rb +3 -3
- data/lib/generators/blacklight/controller_generator.rb +3 -3
- data/lib/generators/blacklight/search_builder_generator.rb +1 -1
- data/lib/generators/blacklight/templates/.solr_wrapper.yml +2 -0
- data/lib/generators/blacklight/templates/catalog_controller.rb +3 -1
- data/lib/generators/blacklight/templates/solr/conf/solrconfig.xml +0 -4
- data/lib/generators/blacklight/user_generator.rb +9 -10
- data/package.json +15 -5
- data/rollup.config.js +1 -1
- data/spec/components/blacklight/advanced_search_form_component_spec.rb +18 -22
- data/spec/components/blacklight/constraint_layout_component_spec.rb +8 -8
- data/spec/components/blacklight/constraints_component_spec.rb +11 -11
- data/spec/components/blacklight/document/action_component_spec.rb +21 -17
- data/spec/components/blacklight/document/group_component_spec.rb +10 -15
- data/spec/components/blacklight/document/page_header_component_spec.rb +35 -28
- data/spec/components/blacklight/document/sidebar_component_spec.rb +9 -30
- data/spec/components/blacklight/document_component_spec.rb +98 -65
- data/spec/components/blacklight/facet_component_spec.rb +12 -8
- data/spec/components/blacklight/facet_item_pivot_component_spec.rb +12 -12
- data/spec/components/blacklight/{facet_field_checkboxes_component_spec.rb → facets/checkboxes_component_spec.rb} +14 -14
- data/spec/components/blacklight/facets/filters_component_spec.rb +36 -0
- data/spec/components/blacklight/facets/index_navigation_component_spec.rb +40 -0
- data/spec/components/blacklight/{facet_item_component_spec.rb → facets/item_component_spec.rb} +10 -10
- data/spec/components/blacklight/{facet_field_list_component_spec.rb → facets/list_component_spec.rb} +24 -24
- data/spec/components/blacklight/facets/suggest_component_spec.rb +68 -0
- data/spec/components/blacklight/header_component_spec.rb +2 -4
- data/spec/components/blacklight/hidden_search_state_component_spec.rb +7 -7
- data/spec/components/blacklight/metadata_field_component_spec.rb +17 -15
- data/spec/components/blacklight/response/facet_group_component_spec.rb +37 -0
- data/spec/components/blacklight/response/pagination_component_spec.rb +1 -1
- data/spec/components/blacklight/response/spellcheck_component_spec.rb +1 -1
- data/spec/components/blacklight/search_bar_component_spec.rb +5 -5
- data/spec/components/blacklight/search_context/server_applied_params_component_spec.rb +2 -2
- data/spec/components/blacklight/search_context/server_item_pagination_component_spec.rb +3 -5
- data/spec/components/blacklight/skip_link_component_spec.rb +8 -11
- data/spec/components/blacklight/start_over_button_component_spec.rb +4 -4
- data/spec/components/blacklight/system/flash_message_component_spec.rb +7 -11
- data/spec/controllers/catalog_controller_spec.rb +11 -19
- data/spec/features/axe_spec.rb +6 -11
- data/spec/features/bookmarks_spec.rb +48 -11
- data/spec/features/facets_spec.rb +58 -63
- data/spec/features/search_context_spec.rb +1 -2
- data/spec/features/search_filters_spec.rb +6 -6
- data/spec/helpers/blacklight/configuration_helper_behavior_spec.rb +0 -9
- data/spec/helpers/blacklight/facets_helper_behavior_spec.rb +10 -0
- data/spec/helpers/blacklight/render_partials_helper_behavior_spec.rb +1 -1
- data/spec/lib/blacklight/configuration/facet_field_spec.rb +2 -2
- data/spec/models/blacklight/configuration_spec.rb +32 -28
- data/spec/models/blacklight/facet_search_builder_spec.rb +19 -0
- data/spec/models/blacklight/search_builder_spec.rb +1 -11
- data/spec/models/blacklight/solr/default_filter_query_builder_spec.rb +72 -0
- data/spec/models/blacklight/solr/document_spec.rb +0 -4
- data/spec/models/blacklight/solr/facet_search_builder_behavior_spec.rb +929 -0
- data/spec/models/blacklight/solr/repository_spec.rb +31 -29
- data/spec/models/blacklight/solr/request_spec.rb +7 -0
- data/spec/models/blacklight/solr/response/facets_spec.rb +86 -40
- data/spec/models/blacklight/solr/response/group_response_spec.rb +8 -5
- data/spec/models/blacklight/solr/response/group_spec.rb +9 -5
- data/spec/models/blacklight/solr/response_spec.rb +96 -64
- data/spec/models/blacklight/solr/search_builder_behavior_spec.rb +2 -227
- data/spec/models/solr_document_spec.rb +5 -1
- data/spec/services/blacklight/search_service_spec.rb +5 -26
- data/spec/spec_helper.rb +0 -1
- data/spec/support/view_component_test_helpers.rb +0 -18
- data/spec/views/catalog/facet.html.erb_spec.rb +10 -11
- data/spec/views/catalog/index.atom.builder_spec.rb +6 -3
- data/spec/views/catalog/index.html.erb_spec.rb +8 -3
- data/spec/views/catalog/show.html.erb_spec.rb +1 -0
- data/tasks/blacklight.rake +8 -5
- metadata +76 -81
- data/app/assets/stylesheets/blacklight/_autocomplete.scss +0 -25
- data/app/assets/stylesheets/blacklight/_mixins.scss +0 -20
- data/app/components/blacklight/facet_field_list_component.html.erb +0 -19
- data/app/components/blacklight/icons/legacy_icon_component.rb +0 -30
- data/app/components/blacklight/search/facet_suggest_input.html.erb +0 -12
- data/app/components/blacklight/search/facet_suggest_input.rb +0 -20
- data/app/javascript/blacklight/index.js +0 -18
- data/app/javascript/blacklight/modalForm.js +0 -60
- data/app/views/catalog/_constraints.html.erb +0 -1
- data/app/views/catalog/_facet_index_navigation.html.erb +0 -1
- data/app/views/catalog/_facet_layout.html.erb +0 -8
- data/app/views/catalog/_facet_pagination.html.erb +0 -1
- data/app/views/catalog/_facets.html.erb +0 -5
- data/app/views/catalog/_search_form.html.erb +0 -7
- data/app/views/catalog/_search_header.html.erb +0 -1
- data/app/views/catalog/_show_sidebar.html.erb +0 -3
- data/app/views/catalog/_show_tools.html.erb +0 -2
- data/app/views/catalog/_start_over.html.erb +0 -1
- data/app/views/shared/_header_navbar.html.erb +0 -1
- data/lib/generators/blacklight/assets/sprockets_generator.rb +0 -68
- data/spec/components/blacklight/document_metadata_component_spec.rb +0 -0
- data/spec/components/blacklight/search/facet_suggest_input_spec.rb +0 -57
- data/spec/views/catalog/_facet_index_navigation.html.erb_spec.rb +0 -43
- data/spec/views/catalog/_facet_layout.html.erb_spec.rb +0 -41
- data/spec/views/catalog/_search_header.erb_spec.rb +0 -14
- data/spec/views/catalog/_show_sidebar.erb_spec.rb +0 -24
- data/spec/views/catalog/_show_tools.html.erb_spec.rb +0 -37
- /data/app/components/blacklight/{facet_field_checkboxes_component.html.erb → facets/checkboxes_component.html.erb} +0 -0
- /data/app/javascript/{blacklight → blacklight-frontend}/button_focus.js +0 -0
- /data/app/javascript/{blacklight → blacklight-frontend}/debounce.js +0 -0
- /data/app/javascript/{blacklight → blacklight-frontend}/search_context.js +0 -0
@@ -1,60 +0,0 @@
|
|
1
|
-
// The email and sms forms are displayed inside a modal. When the form is submitted,
|
2
|
-
// this script closes the modal and puts the output on the main part of the page.
|
3
|
-
// By default it is rendering catalog/sms_success and catalog/email_succcess.
|
4
|
-
// These templates deliver a payload of the format used by turbo-streams.
|
5
|
-
// See https://turbo.hotwired.dev/handbook/streams
|
6
|
-
// That format allows a downstream application to override the template to define
|
7
|
-
// multiple customizable areas of the page to get updated.
|
8
|
-
export default class {
|
9
|
-
constructor(errorHandler, badRequestHandler, hideModal) {
|
10
|
-
this.errorHandler = errorHandler
|
11
|
-
this.badRequestHandler = badRequestHandler
|
12
|
-
this.hideModal = hideModal
|
13
|
-
}
|
14
|
-
|
15
|
-
get triggerFormSelector() {
|
16
|
-
return 'form[data-blacklight-modal~=trigger]'
|
17
|
-
}
|
18
|
-
|
19
|
-
bind() {
|
20
|
-
document.addEventListener('submit', (e) => {
|
21
|
-
if (e.target.matches(this.triggerFormSelector))
|
22
|
-
this.onSubmit(e)
|
23
|
-
})
|
24
|
-
}
|
25
|
-
|
26
|
-
// This is like a light-weight version of turbo that only supports append presently.
|
27
|
-
updateTurboStream(data) {
|
28
|
-
this.hideModal()
|
29
|
-
const domparser = new DOMParser();
|
30
|
-
const dom = domparser.parseFromString(data, "text/html")
|
31
|
-
dom.querySelectorAll("turbo-stream[action='append']").forEach((node) => {
|
32
|
-
const target = node.getAttribute('target')
|
33
|
-
const element = document.getElementById(target)
|
34
|
-
if (element)
|
35
|
-
element.append(node.querySelector('template').content.cloneNode(true))
|
36
|
-
else
|
37
|
-
console.error(`Unable to find an element on the page with and ID of "${target}""`)
|
38
|
-
})
|
39
|
-
}
|
40
|
-
|
41
|
-
onSubmit(e) {
|
42
|
-
e.preventDefault();
|
43
|
-
const form = e.target
|
44
|
-
fetch(form.action, {
|
45
|
-
body: new FormData(form),
|
46
|
-
headers: { "X-Requested-With": "XMLHttpRequest" }, // Ensures rails will return true when checking request.xhr?
|
47
|
-
method: form.method,
|
48
|
-
})
|
49
|
-
.then(response => {
|
50
|
-
if (response.status === 422) {
|
51
|
-
return response.text().then(content => this.badRequestHandler(content) )
|
52
|
-
}
|
53
|
-
if (!response.ok) {
|
54
|
-
throw new TypeError("Request failed");
|
55
|
-
}
|
56
|
-
response.text().then(content => this.updateTurboStream(content))
|
57
|
-
})
|
58
|
-
.catch(error => this.errorHandler(error))
|
59
|
-
}
|
60
|
-
}
|
@@ -1 +0,0 @@
|
|
1
|
-
<%= render blacklight_config&.view_config(document_index_view_type)&.constraints_component.new(search_state: search_state) %>
|
@@ -1 +0,0 @@
|
|
1
|
-
<%= render(Blacklight::FacetFieldFilterComponent.new(facet_field: facet_field_presenter(@facet, @display_facet))) %>
|
@@ -1,8 +0,0 @@
|
|
1
|
-
<%= render(Blacklight::FacetFieldComponent.new(facet_field: facet_field_presenter(facet_field, nil))) do |component| %>
|
2
|
-
<% component.with_label do %>
|
3
|
-
<%= facet_field_label(facet_field.key) %>
|
4
|
-
<% end %>
|
5
|
-
<% component.with_body do %>
|
6
|
-
<%= yield %>
|
7
|
-
<% end %>
|
8
|
-
<% end %>
|
@@ -1 +0,0 @@
|
|
1
|
-
<%= render(Blacklight::FacetFieldPaginationComponent.new(facet_field: facet_field_presenter(@facet, @display_facet))) %>
|
@@ -1,7 +0,0 @@
|
|
1
|
-
<%= warn "#{__file__} is a deprecated partial." %>
|
2
|
-
<%= render((blacklight_config&.view_config(document_index_view_type)&.search_bar_component || Blacklight::SearchBarComponent).new(
|
3
|
-
url: search_action_url,
|
4
|
-
advanced_search_url: search_action_url(action: 'advanced_search'),
|
5
|
-
params: search_state.params_for_search.except(:qt),
|
6
|
-
presenter: presenter,
|
7
|
-
autocomplete_path: suggest_index_catalog_path)) %>
|
@@ -1 +0,0 @@
|
|
1
|
-
<%= render blacklight_config.view_config(document_index_view_type).search_header_component.new %>
|
@@ -1,3 +0,0 @@
|
|
1
|
-
<% Blacklight.deprecation.warn('The partial catalog/_show_sidebar.html.erb will be removed in Blacklight 9.0. Configure blacklight_config.show.sidebar_component instead (default Blacklight::Search::SidebarComponent).') unless local_assigns[:silence_deprecation] %>
|
2
|
-
<% presenter = document_presenter(document) %>
|
3
|
-
<%= render presenter.view_config.sidebar_component.new(presenter: presenter) %>
|
@@ -1,2 +0,0 @@
|
|
1
|
-
<% Blacklight.deprecation.warn('The partial _show_tools.html.erb will be removed in Blacklight 9.0. Configure blacklight_config.show.show_tools_component instead (default Blacklight::Document::ShowToolsComponent).') unless local_assigns[:silence_deprecation] %>
|
2
|
-
<%= render Blacklight::Document::ShowToolsComponent.new(document: document) %>
|
@@ -1 +0,0 @@
|
|
1
|
-
<%= render Blacklight::StartOverButtonComponent.new %>
|
@@ -1 +0,0 @@
|
|
1
|
-
<%= render blacklight_config.header_component.new(blacklight_config: blacklight_config) %>
|
@@ -1,68 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Blacklight
|
4
|
-
module Assets
|
5
|
-
class SprocketsGenerator < Rails::Generators::Base
|
6
|
-
class_option :'bootstrap-version', type: :string, default: ENV.fetch('BOOTSTRAP_VERSION', '~> 5.3'), desc: "Set the generated app's bootstrap version"
|
7
|
-
|
8
|
-
# This could be skipped if you want to use webpacker
|
9
|
-
def add_javascript_dependencies
|
10
|
-
gem 'bootstrap', options[:'bootstrap-version'].presence
|
11
|
-
gem 'jquery-rails' if bootstrap_4? # Bootstrap 4 has a dependency on jquery
|
12
|
-
end
|
13
|
-
|
14
|
-
##
|
15
|
-
# Remove the empty generated app/assets/images directory. Without doing this,
|
16
|
-
# the default Sprockets 4 manifest will raise an exception.
|
17
|
-
def appease_sprockets4
|
18
|
-
return if Rails.version > '7' || Sprockets::VERSION < '4'
|
19
|
-
|
20
|
-
append_to_file 'app/assets/config/manifest.js', "\n//= link application.js"
|
21
|
-
append_to_file 'app/assets/config/manifest.js', "\n//= link blacklight/manifest.js"
|
22
|
-
empty_directory 'app/assets/images'
|
23
|
-
end
|
24
|
-
|
25
|
-
def assets
|
26
|
-
create_file 'app/assets/stylesheets/blacklight.scss' do
|
27
|
-
<<~CONTENT
|
28
|
-
@import 'bootstrap';
|
29
|
-
@import 'blacklight/blacklight';
|
30
|
-
CONTENT
|
31
|
-
end
|
32
|
-
|
33
|
-
gem "sassc-rails", "~> 2.1" if Rails.version > '7'
|
34
|
-
|
35
|
-
# Ensure this method is idempotent
|
36
|
-
return if has_blacklight_assets?
|
37
|
-
|
38
|
-
create_file 'app/assets/javascripts/application.js' do
|
39
|
-
<<~CONTENT
|
40
|
-
//= require rails-ujs
|
41
|
-
#{'//= require jquery3' if bootstrap_4?}
|
42
|
-
|
43
|
-
// Required by Blacklight
|
44
|
-
//= require popper
|
45
|
-
//= require bootstrap
|
46
|
-
//= require blacklight/blacklight
|
47
|
-
CONTENT
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
private
|
52
|
-
|
53
|
-
def bootstrap_4?
|
54
|
-
options[:'bootstrap-version'].match?(/\A[^0-9]*4\./)
|
55
|
-
end
|
56
|
-
|
57
|
-
def has_blacklight_assets?
|
58
|
-
application_js.include?('blacklight/blacklight')
|
59
|
-
end
|
60
|
-
|
61
|
-
def application_js
|
62
|
-
path = File.expand_path("app/assets/javascripts/application.js", destination_root)
|
63
|
-
|
64
|
-
File.exist?(path) ? File.read(path) : ''
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
File without changes
|
@@ -1,57 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'spec_helper'
|
4
|
-
|
5
|
-
RSpec.describe Blacklight::Search::FacetSuggestInput, type: :component do
|
6
|
-
let(:facet) { Blacklight::Configuration::FacetField.new key: 'language_facet', suggest: true }
|
7
|
-
let(:presenter) { instance_double(Blacklight::FacetFieldPresenter) }
|
8
|
-
let(:view_context) { double(ActionView::Base) }
|
9
|
-
|
10
|
-
before do
|
11
|
-
allow(presenter).to receive_messages(label: 'Language', view_context: view_context)
|
12
|
-
allow(view_context).to receive(:search_facet_path).and_return('/catalog/facet/language_facet')
|
13
|
-
end
|
14
|
-
|
15
|
-
it 'has an input with the facet-suggest class, which the javascript needs to find it' do
|
16
|
-
rendered = render_inline(described_class.new(facet: facet, presenter: presenter))
|
17
|
-
expect(rendered.css("input.facet-suggest").count).to eq 1
|
18
|
-
end
|
19
|
-
|
20
|
-
it 'has an input with the data-facet-field attribute, which the javascript needs to determine the correct query' do
|
21
|
-
rendered = render_inline(described_class.new(facet: facet, presenter: presenter))
|
22
|
-
expect(rendered.css('input[data-facet-field="language_facet"]').count).to eq 1
|
23
|
-
end
|
24
|
-
|
25
|
-
it 'has an input with the data-facet-search-context attribute, which the javascript needs to determine the current search context' do
|
26
|
-
allow(view_context).to receive(:search_facet_path).and_return('/catalog/facet/language_facet?f%5Bformat%5D%5B%5D=Book&facet.prefix=R&facet.sort=index&q=tibet&search_field=all_fields')
|
27
|
-
rendered = render_inline(described_class.new(facet: facet, presenter: presenter))
|
28
|
-
expect(rendered.css('input[data-facet-search-context="/catalog/facet/language_facet?f%5Bformat%5D%5B%5D=Book&facet.prefix=R&facet.sort=index&q=tibet&search_field=all_fields"]').count).to eq 1
|
29
|
-
end
|
30
|
-
|
31
|
-
it 'has a visible label that is associated with the input' do
|
32
|
-
rendered = render_inline(described_class.new(facet: facet, presenter: presenter))
|
33
|
-
label = rendered.css('label').first
|
34
|
-
expect(label.text.strip).to eq 'Filter Language'
|
35
|
-
|
36
|
-
id_in_label_for = label.attribute('for').text
|
37
|
-
expect(id_in_label_for).to eq('facet_suggest_language_facet')
|
38
|
-
|
39
|
-
expect(rendered.css('input').first.attribute('id').text).to eq id_in_label_for
|
40
|
-
end
|
41
|
-
|
42
|
-
context 'when the facet is explicitly configured to suggest: false' do
|
43
|
-
let(:facet) { Blacklight::Configuration::FacetField.new key: 'language_facet', suggest: false }
|
44
|
-
|
45
|
-
it 'does not display' do
|
46
|
-
expect(render_inline(described_class.new(facet: facet, presenter: presenter)).to_s).to eq ''
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
context 'when the facet is not explicitly configured with a suggest key' do
|
51
|
-
let(:facet) { Blacklight::Configuration::FacetField.new key: 'language_facet' }
|
52
|
-
|
53
|
-
it 'does not display' do
|
54
|
-
expect(render_inline(described_class.new(facet: facet, presenter: presenter)).to_s).to eq ''
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
@@ -1,43 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
RSpec.describe 'catalog/_facet_index_navigation.html.erb' do
|
4
|
-
let(:pagination) { Blacklight::Solr::FacetPaginator.new([]) }
|
5
|
-
let(:facet) { Blacklight::Configuration::FacetField.new(index_range: '0'..'9', presenter: Blacklight::FacetFieldPresenter) }
|
6
|
-
let(:display_facet) { double(items: [], offset: 0, prefix: '', sort: 'index') }
|
7
|
-
let(:blacklight_config) { Blacklight::Configuration.new }
|
8
|
-
|
9
|
-
before do
|
10
|
-
assign(:display_facet, display_facet)
|
11
|
-
assign(:facet, facet)
|
12
|
-
allow(view).to receive_messages(blacklight_config: blacklight_config, facet_limit_for: 10)
|
13
|
-
controller.request.path_parameters[:action] = 'index'
|
14
|
-
end
|
15
|
-
|
16
|
-
it 'renders the facet index navigation range' do
|
17
|
-
render
|
18
|
-
expect(rendered).to have_css '.pagination'
|
19
|
-
expect(rendered).to have_link '0', href: '/?facet.prefix=0&facet.sort=index'
|
20
|
-
expect(rendered).to have_link '1'
|
21
|
-
expect(rendered).to have_link '8'
|
22
|
-
expect(rendered).to have_link '9'
|
23
|
-
end
|
24
|
-
|
25
|
-
it 'renders an "all" button' do
|
26
|
-
render
|
27
|
-
expect(rendered).to have_css '.page-link', text: 'All'
|
28
|
-
end
|
29
|
-
|
30
|
-
context 'with a selected index' do
|
31
|
-
let(:display_facet) { double(items: [], offset: 0, prefix: '5', sort: 'index') }
|
32
|
-
|
33
|
-
it 'highlights the selected index' do
|
34
|
-
render
|
35
|
-
expect(rendered).to have_css '.active', text: '5'
|
36
|
-
end
|
37
|
-
|
38
|
-
it 'enables the clear facets button' do
|
39
|
-
render
|
40
|
-
expect(rendered).to have_link 'All'
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
@@ -1,41 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
RSpec.describe "catalog/facet_layout" do
|
4
|
-
let :blacklight_config do
|
5
|
-
Blacklight::Configuration.new do |config|
|
6
|
-
config.facet_fields[facet_field.field] = facet_field
|
7
|
-
end
|
8
|
-
end
|
9
|
-
|
10
|
-
let :facet_field do
|
11
|
-
Blacklight::Configuration::FacetField.new(field: 'some_field').normalize!
|
12
|
-
end
|
13
|
-
|
14
|
-
before do
|
15
|
-
allow(view).to receive_messages(blacklight_config: blacklight_config)
|
16
|
-
end
|
17
|
-
|
18
|
-
it "has a facet-specific class" do
|
19
|
-
render partial: 'catalog/facet_layout', locals: { facet_field: facet_field }
|
20
|
-
expect(rendered).to have_css '.blacklight-some_field'
|
21
|
-
end
|
22
|
-
|
23
|
-
it "has a title with a link for a11y" do
|
24
|
-
render partial: 'catalog/facet_layout', locals: { facet_field: facet_field }
|
25
|
-
expect(rendered).to have_css 'h3', text: 'Some Field'
|
26
|
-
end
|
27
|
-
|
28
|
-
it "is collapsable" do
|
29
|
-
render partial: 'catalog/facet_layout', locals: { facet_field: facet_field }
|
30
|
-
expect(rendered).to have_css 'button.collapsed[data-toggle="collapse"][data-bs-toggle="collapse"][aria-expanded="false"]'
|
31
|
-
expect(rendered).to have_css '.collapse .card-body'
|
32
|
-
end
|
33
|
-
|
34
|
-
it "is configured to be open by default" do
|
35
|
-
allow(facet_field).to receive_messages(collapse: false)
|
36
|
-
render partial: 'catalog/facet_layout', locals: { facet_field: facet_field }
|
37
|
-
expect(rendered).to have_css 'button[data-toggle="collapse"][data-bs-toggle="collapse"][aria-expanded="true"]'
|
38
|
-
expect(rendered).to have_no_css '.card-header.collapsed'
|
39
|
-
expect(rendered).to have_css '.collapse.show .card-body'
|
40
|
-
end
|
41
|
-
end
|
@@ -1,14 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# spec for sidebar partial in catalog show view
|
4
|
-
|
5
|
-
RSpec.describe "/catalog/_search_header.html.erb" do
|
6
|
-
it "renders the default search header partials" do
|
7
|
-
stub_template "_did_you_mean.html.erb" => "did_you_mean"
|
8
|
-
stub_template "_sort_and_per_page.html.erb" => "sort_and_per_page"
|
9
|
-
allow(view).to receive(:blacklight_config).and_return(CatalogController.blacklight_config)
|
10
|
-
render
|
11
|
-
expect(rendered).to match /did_you_mean/
|
12
|
-
expect(rendered).to match /sort_and_per_page/
|
13
|
-
end
|
14
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# spec for sidebar partial in catalog show view
|
4
|
-
|
5
|
-
RSpec.describe "catalog/_show_sidebar.html.erb" do
|
6
|
-
let(:blacklight_config) do
|
7
|
-
Blacklight::Configuration.new do |config|
|
8
|
-
config.index.title_field = 'title_tsim'
|
9
|
-
config.index.sidebar_component = Blacklight::Document::SidebarComponent
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
before do
|
14
|
-
allow(view).to receive_messages(blacklight_config: blacklight_config, has_user_authentication_provider?: false, document_actions: [], session_tracking_params: {})
|
15
|
-
end
|
16
|
-
|
17
|
-
it "shows more-like-this titles in the sidebar" do
|
18
|
-
document = SolrDocument.new id: 1, title_s: 'abc', format: 'default'
|
19
|
-
allow(document).to receive(:more_like_this).and_return([SolrDocument.new('id' => '2', 'title_tsim' => 'Title of MLT Document')])
|
20
|
-
render 'catalog/show_sidebar', document: document
|
21
|
-
expect(rendered).to include("More Like This")
|
22
|
-
expect(rendered).to include("Title of MLT Document")
|
23
|
-
end
|
24
|
-
end
|
@@ -1,37 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
RSpec.describe "catalog/_show_tools.html.erb" do
|
4
|
-
let(:document) { SolrDocument.new id: 'xyz', format: 'a' }
|
5
|
-
let(:blacklight_config) { Blacklight::Configuration.new }
|
6
|
-
let(:component) { instance_double(Blacklight::Document::ShowToolsComponent) }
|
7
|
-
|
8
|
-
before do
|
9
|
-
allow(Blacklight::Document::ShowToolsComponent).to receive(:new).and_return(component)
|
10
|
-
allow(view).to receive(:render).with(component)
|
11
|
-
allow(view).to receive(:render).with('catalog/show_tools', { document: document }).and_call_original
|
12
|
-
allow(view).to receive_messages(blacklight_config: blacklight_config, has_user_authentication_provider?: false)
|
13
|
-
end
|
14
|
-
|
15
|
-
describe "document actions" do
|
16
|
-
let(:document_actions) { blacklight_config.show.document_actions }
|
17
|
-
|
18
|
-
it "renders a document action" do
|
19
|
-
allow(view).to receive(:some_action_solr_document_path).with(document, any_args).and_return 'x'
|
20
|
-
document_actions[:some_action] = Blacklight::Configuration::ToolConfig.new key: :some_action, name: :some_action, partial: 'document_action'
|
21
|
-
render 'catalog/show_tools', document: document
|
22
|
-
expect(view).to have_received(:render).with(component)
|
23
|
-
end
|
24
|
-
|
25
|
-
context 'without any document actions defined' do
|
26
|
-
before do
|
27
|
-
document_actions.clear
|
28
|
-
end
|
29
|
-
|
30
|
-
it 'does not display the tools' do
|
31
|
-
render 'catalog/show_tools', document: document
|
32
|
-
|
33
|
-
expect(rendered).to be_blank
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|