blacklight 7.41.0 → 8.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.
- checksums.yaml +4 -4
- data/.env +2 -3
- data/.github/workflows/ruby.yml +81 -0
- data/.rubocop.yml +243 -14
- data/.rubocop_todo.yml +137 -429
- data/Gemfile +11 -6
- data/README.md +11 -3
- data/VERSION +1 -1
- data/app/assets/javascripts/blacklight/blacklight.esm.js +384 -0
- data/app/assets/javascripts/blacklight/blacklight.esm.js.map +1 -0
- data/app/assets/javascripts/blacklight/blacklight.js +374 -493
- data/app/assets/javascripts/blacklight/blacklight.js.map +1 -0
- data/app/assets/stylesheets/blacklight/_autocomplete.scss +25 -0
- data/app/assets/stylesheets/blacklight/_blacklight_base.scss +1 -1
- data/app/assets/stylesheets/blacklight/_bookmark.scss +16 -0
- data/app/assets/stylesheets/blacklight/_bootstrap_overrides.scss +8 -0
- data/app/assets/stylesheets/blacklight/_constraints.scss +4 -4
- data/app/assets/stylesheets/blacklight/_facets.scss +72 -44
- data/app/assets/stylesheets/blacklight/_header.scss +0 -15
- data/app/assets/stylesheets/blacklight/_icons.scss +0 -14
- data/app/assets/stylesheets/blacklight/_mixins.scss +20 -0
- data/app/assets/stylesheets/blacklight/_modal.scss +8 -2
- data/app/assets/stylesheets/blacklight/_search_form.scss +30 -3
- data/app/assets/stylesheets/blacklight/_search_history.scss +10 -1
- data/app/assets/stylesheets/blacklight/_search_results.scss +6 -2
- data/app/assets/stylesheets/blacklight/blacklight_defaults.scss +4 -1
- data/app/builders/blacklight/action_builder.rb +18 -9
- data/app/components/blacklight/advanced_search_form_component.html.erb +3 -3
- data/app/components/blacklight/advanced_search_form_component.rb +8 -10
- data/app/components/blacklight/constraints_component.rb +27 -37
- data/app/components/blacklight/document/action_component.rb +12 -10
- data/app/components/blacklight/document/actions_component.rb +2 -2
- data/app/components/blacklight/document/bookmark_component.html.erb +9 -0
- data/app/components/blacklight/document/bookmark_component.rb +4 -2
- data/app/components/blacklight/document/citation_component.rb +5 -3
- data/app/components/blacklight/document/group_component.rb +7 -3
- data/app/components/blacklight/document/sidebar_component.html.erb +2 -0
- data/app/components/blacklight/document/sidebar_component.rb +16 -0
- data/app/components/blacklight/document/thumbnail_component.html.erb +2 -7
- data/app/components/blacklight/document/thumbnail_component.rb +1 -9
- data/app/components/blacklight/document_component.html.erb +1 -1
- data/app/components/blacklight/document_component.rb +16 -78
- data/app/components/blacklight/document_metadata_component.html.erb +2 -4
- data/app/components/blacklight/document_metadata_component.rb +5 -10
- data/app/components/blacklight/facet_component.rb +3 -3
- data/app/components/blacklight/facet_field_checkboxes_component.html.erb +4 -4
- data/app/components/blacklight/facet_field_checkboxes_component.rb +1 -1
- data/app/components/blacklight/facet_field_component.html.erb +4 -5
- data/app/components/blacklight/facet_field_component.rb +9 -2
- data/app/components/blacklight/facet_field_list_component.html.erb +3 -3
- data/app/components/blacklight/facet_field_list_component.rb +37 -5
- data/app/components/blacklight/facet_field_no_layout_component.rb +0 -2
- data/app/components/blacklight/facet_item_component.rb +1 -43
- data/app/components/blacklight/facet_item_pivot_component.rb +21 -23
- data/app/components/blacklight/header_component.rb +1 -1
- data/app/components/blacklight/hidden_search_state_component.rb +1 -2
- data/app/components/blacklight/icons/icon_component.rb +4 -9
- data/app/components/blacklight/icons/legacy_icon_component.rb +30 -0
- data/app/components/blacklight/icons/list_component.rb +16 -0
- data/app/components/blacklight/icons/search_component.rb +16 -0
- data/app/components/blacklight/metadata_field_component.html.erb +2 -2
- data/app/components/blacklight/metadata_field_component.rb +24 -8
- data/app/components/blacklight/metadata_field_layout_component.rb +4 -25
- data/app/components/blacklight/response/facet_group_component.html.erb +3 -5
- data/app/components/blacklight/response/facet_group_component.rb +29 -8
- data/app/components/blacklight/response/pagination_component.html.erb +1 -1
- data/app/components/blacklight/response/pagination_component.rb +2 -11
- data/app/components/blacklight/response/sort_component.html.erb +6 -1
- data/app/components/blacklight/response/sort_component.rb +1 -16
- data/app/components/blacklight/response/spellcheck_component.rb +18 -7
- data/app/components/blacklight/response/view_type_button_component.rb +3 -7
- data/app/components/blacklight/response/view_type_component.rb +4 -6
- data/app/components/blacklight/search/sidebar_component.html.erb +8 -0
- data/app/components/blacklight/search/sidebar_component.rb +17 -0
- data/app/components/blacklight/search_bar_component.html.erb +20 -15
- data/app/components/blacklight/search_bar_component.rb +2 -16
- data/app/components/blacklight/search_button_component.rb +3 -3
- data/app/components/blacklight/search_context_component.rb +43 -10
- data/app/components/blacklight/search_header_component.html.erb +2 -0
- data/app/components/blacklight/search_header_component.rb +6 -0
- data/app/components/blacklight/start_over_button_component.rb +5 -3
- data/app/components/blacklight/system/dropdown_component.rb +8 -5
- data/app/components/blacklight/system/flash_message_component.html.erb +4 -2
- data/app/components/blacklight/system/flash_message_component.rb +12 -3
- data/app/components/blacklight/system/modal_component.html.erb +1 -1
- data/app/components/blacklight/system/modal_component.rb +1 -3
- data/app/components/blacklight/top_navbar_component.html.erb +1 -1
- data/app/components/blacklight/top_navbar_component.rb +0 -4
- data/app/controllers/bookmarks_controller.rb +1 -0
- data/app/controllers/catalog_controller.rb +1 -0
- data/app/controllers/concerns/blacklight/bookmarks.rb +10 -9
- data/app/controllers/concerns/blacklight/catalog.rb +21 -83
- data/app/controllers/concerns/blacklight/controller.rb +3 -41
- data/app/controllers/concerns/blacklight/search_context.rb +25 -7
- data/app/controllers/concerns/blacklight/search_history.rb +2 -0
- data/app/controllers/concerns/blacklight/searchable.rb +12 -1
- data/app/controllers/concerns/blacklight/token_based_user.rb +13 -1
- data/app/controllers/search_history_controller.rb +1 -0
- data/app/helpers/blacklight/blacklight_helper_behavior.rb +12 -310
- data/app/helpers/blacklight/catalog_helper_behavior.rb +22 -139
- data/app/helpers/blacklight/component_helper_behavior.rb +2 -53
- data/app/helpers/blacklight/configuration_helper_behavior.rb +2 -119
- data/app/helpers/blacklight/facets_helper_behavior.rb +4 -321
- data/app/helpers/blacklight/icon_helper_behavior.rb +5 -7
- data/app/helpers/blacklight/layout_helper_behavior.rb +4 -3
- data/app/helpers/blacklight/render_partials_helper_behavior.rb +11 -31
- data/app/helpers/blacklight/url_helper_behavior.rb +12 -97
- data/app/helpers/blacklight_helper.rb +1 -0
- data/app/helpers/catalog_helper.rb +1 -0
- data/app/javascript/blacklight/bookmark_toggle.js +13 -19
- data/app/javascript/blacklight/button_focus.js +12 -10
- data/app/javascript/blacklight/checkbox_submit.js +68 -123
- data/app/javascript/blacklight/core.js +5 -7
- data/app/javascript/blacklight/index.js +13 -0
- data/app/javascript/blacklight/modal.js +99 -164
- data/app/javascript/blacklight/modalForm.js +60 -0
- data/app/javascript/blacklight/search_context.js +46 -54
- data/app/models/blacklight/facet_paginator.rb +3 -2
- data/app/models/blacklight/icon.rb +4 -2
- data/app/models/bookmark.rb +0 -2
- data/app/models/concerns/blacklight/configurable.rb +5 -4
- data/app/models/concerns/blacklight/document/active_model_shim.rb +1 -10
- data/app/models/concerns/blacklight/document/cache_key.rb +1 -0
- data/app/models/concerns/blacklight/document/dublin_core.rb +2 -1
- data/app/models/concerns/blacklight/document/email.rb +1 -0
- data/app/models/concerns/blacklight/document/export.rb +2 -1
- data/app/models/concerns/blacklight/document/extensions.rb +1 -0
- data/app/models/concerns/blacklight/document/schema_org.rb +1 -0
- data/app/models/concerns/blacklight/document/semantic_fields.rb +2 -1
- data/app/models/concerns/blacklight/document/sms.rb +1 -0
- data/app/models/concerns/blacklight/suggest/response.rb +1 -0
- data/app/models/concerns/blacklight/user.rb +17 -8
- data/app/models/record_mailer.rb +13 -12
- data/app/models/search.rb +1 -7
- data/app/models/solr_document.rb +1 -0
- data/app/presenters/blacklight/clause_presenter.rb +1 -1
- data/app/presenters/blacklight/document_presenter.rb +23 -50
- data/app/presenters/blacklight/facet_field_presenter.rb +39 -14
- data/app/presenters/blacklight/facet_grouped_item_presenter.rb +1 -5
- data/app/presenters/blacklight/facet_item_pivot_presenter.rb +60 -0
- data/app/presenters/blacklight/facet_item_presenter.rb +3 -9
- data/app/presenters/blacklight/field_presenter.rb +1 -0
- data/app/presenters/blacklight/index_presenter.rb +2 -40
- data/app/presenters/blacklight/json_presenter.rb +10 -6
- data/app/presenters/blacklight/rendering/link_to_facet.rb +2 -5
- data/app/presenters/blacklight/show_presenter.rb +1 -9
- data/app/presenters/blacklight/thumbnail_presenter.rb +1 -1
- data/app/services/blacklight/bookmarks_search_builder.rb +22 -0
- data/app/services/blacklight/field_retriever.rb +12 -21
- data/app/services/blacklight/search_service.rb +10 -17
- data/app/values/blacklight/types.rb +0 -18
- data/app/views/bookmarks/_clear_bookmarks_widget.html.erb +8 -1
- data/app/views/bookmarks/_tools.html.erb +7 -12
- data/app/views/catalog/_advanced_search_form.html.erb +0 -1
- data/app/views/catalog/_bookmark_control.html.erb +1 -1
- data/app/views/catalog/_citation.html.erb +1 -1
- data/app/views/catalog/_constraints.html.erb +1 -14
- data/app/views/catalog/_document.atom.builder +12 -14
- data/app/views/catalog/_document.html.erb +5 -3
- data/app/views/catalog/_document.rss.builder +2 -4
- data/app/views/catalog/_facet_layout.html.erb +2 -2
- data/app/views/catalog/_facets.html.erb +5 -4
- data/app/views/catalog/_home_text.html.erb +2 -14
- data/app/views/catalog/_per_page_widget.html.erb +10 -1
- data/app/views/catalog/_search_form.html.erb +2 -2
- data/app/views/catalog/_search_header.html.erb +1 -2
- data/app/views/catalog/_search_results.html.erb +2 -2
- data/app/views/catalog/_search_sidebar.html.erb +5 -1
- data/app/views/catalog/_show_main_content.html.erb +11 -16
- data/app/views/catalog/_show_sidebar.html.erb +2 -2
- data/app/views/catalog/_show_tools.html.erb +8 -14
- data/app/views/catalog/_view_type_group.html.erb +1 -1
- data/app/views/catalog/email.html.erb +2 -2
- data/app/views/catalog/email_success.html.erb +5 -6
- data/app/views/catalog/facet.html.erb +7 -5
- data/app/views/catalog/index.atom.builder +12 -14
- data/app/views/catalog/index.html.erb +4 -1
- data/app/views/catalog/index.json.jbuilder +19 -19
- data/app/views/catalog/index.rss.builder +1 -1
- data/app/views/catalog/opensearch.xml.builder +1 -1
- data/app/views/catalog/sms.html.erb +2 -2
- data/app/views/catalog/sms_success.html.erb +5 -6
- data/app/views/catalog/suggest.html.erb +3 -0
- data/app/views/kaminari/blacklight/_page.html.erb +2 -1
- data/app/views/layouts/blacklight/base.html.erb +13 -2
- data/app/views/search_history/index.html.erb +6 -2
- data/app/views/shared/_flash_messages.html.erb +1 -1
- data/app/views/shared/_modal.html.erb +3 -3
- data/blacklight.gemspec +7 -11
- data/config/importmap.rb +3 -0
- data/config/locales/blacklight.ar.yml +0 -1
- data/config/locales/blacklight.ca.yml +0 -1
- data/config/locales/blacklight.de.yml +0 -1
- data/config/locales/blacklight.en.yml +0 -2
- data/config/locales/blacklight.es.yml +0 -1
- data/config/locales/blacklight.fr.yml +0 -1
- data/config/locales/blacklight.hu.yml +0 -1
- data/config/locales/blacklight.it.yml +0 -1
- data/config/locales/blacklight.nl.yml +0 -1
- data/config/locales/blacklight.pt-BR.yml +0 -1
- data/config/locales/blacklight.sq.yml +0 -1
- data/config/locales/blacklight.zh.yml +0 -1
- data/config/routes.rb +3 -2
- data/db/migrate/20140202020201_create_searches.rb +1 -0
- data/db/migrate/20140202020202_create_bookmarks.rb +1 -0
- data/db/migrate/20140320000000_add_polymorphic_type_to_bookmarks.rb +1 -0
- data/docker-compose.yml +3 -3
- data/lib/blacklight/abstract_repository.rb +1 -6
- data/lib/blacklight/component.rb +47 -10
- data/lib/blacklight/configuration/context.rb +4 -4
- data/lib/blacklight/configuration/display_field.rb +7 -9
- data/lib/blacklight/configuration/facet_field.rb +17 -11
- data/lib/blacklight/configuration/field.rb +1 -0
- data/lib/blacklight/configuration/fields.rb +12 -15
- data/lib/blacklight/configuration/index_field.rb +1 -0
- data/lib/blacklight/configuration/null_display_field.rb +17 -0
- data/lib/blacklight/configuration/search_field.rb +1 -0
- data/lib/blacklight/configuration/show_field.rb +1 -0
- data/lib/blacklight/configuration/sort_field.rb +1 -0
- data/lib/blacklight/configuration/tool_config.rb +1 -0
- data/lib/blacklight/configuration/view_config.rb +14 -10
- data/lib/blacklight/configuration.rb +310 -365
- data/lib/blacklight/engine.rb +8 -24
- data/lib/blacklight/exceptions.rb +2 -2
- data/lib/blacklight/nested_open_struct_with_hash_access.rb +7 -13
- data/lib/blacklight/open_struct_with_hash_access.rb +23 -6
- data/lib/blacklight/parameters.rb +7 -21
- data/lib/blacklight/routes/exportable.rb +1 -0
- data/lib/blacklight/routes/searchable.rb +2 -1
- data/lib/blacklight/routes.rb +1 -0
- data/lib/blacklight/search_builder.rb +10 -10
- data/lib/blacklight/search_state/filter_field.rb +8 -25
- data/lib/blacklight/search_state/pivot_filter_field.rb +144 -0
- data/lib/blacklight/search_state.rb +23 -79
- data/lib/blacklight/solr/document.rb +1 -0
- data/lib/blacklight/solr/facet_paginator.rb +1 -0
- data/lib/blacklight/solr/repository.rb +4 -24
- data/lib/blacklight/solr/request.rb +1 -0
- data/lib/blacklight/solr/response/facets.rb +21 -5
- data/lib/blacklight/solr/response/group.rb +1 -0
- data/lib/blacklight/solr/response/group_response.rb +1 -0
- data/lib/blacklight/solr/response/more_like_this.rb +1 -0
- data/lib/blacklight/solr/response/pagination_methods.rb +4 -3
- data/lib/blacklight/solr/response/params.rb +5 -4
- data/lib/blacklight/solr/response/response.rb +1 -0
- data/lib/blacklight/solr/response/spelling.rb +1 -0
- data/lib/blacklight/solr/response.rb +16 -3
- data/lib/blacklight/solr/search_builder_behavior.rb +16 -35
- data/lib/blacklight/solr.rb +7 -0
- data/lib/blacklight/version.rb +1 -0
- data/lib/blacklight.rb +26 -14
- data/lib/generators/blacklight/assets/importmap_generator.rb +55 -0
- data/lib/generators/blacklight/assets/propshaft_generator.rb +25 -0
- data/lib/generators/blacklight/assets/sprockets_generator.rb +66 -0
- data/lib/generators/blacklight/assets_generator.rb +13 -86
- data/lib/generators/blacklight/controller_generator.rb +4 -3
- data/lib/generators/blacklight/document_generator.rb +1 -0
- data/lib/generators/blacklight/install_generator.rb +4 -3
- data/lib/generators/blacklight/models_generator.rb +1 -0
- data/lib/generators/blacklight/search_builder_generator.rb +1 -0
- data/lib/generators/blacklight/solr_generator.rb +1 -1
- data/lib/generators/blacklight/templates/catalog_controller.rb +34 -8
- data/lib/generators/blacklight/templates/solr/conf/solrconfig.xml +1 -70
- data/lib/generators/blacklight/test_support_generator.rb +5 -3
- data/lib/generators/blacklight/user_generator.rb +7 -9
- data/lib/railties/blacklight.rake +6 -7
- data/package.json +10 -13
- data/rollup.config.js +27 -0
- data/spec/components/blacklight/constraints_component_spec.rb +17 -13
- data/spec/components/blacklight/document/action_component_spec.rb +6 -1
- data/spec/components/blacklight/document_component_spec.rb +22 -131
- data/spec/components/blacklight/facet_component_spec.rb +3 -18
- data/spec/components/blacklight/facet_field_checkboxes_component_spec.rb +1 -2
- data/spec/components/blacklight/facet_field_list_component_spec.rb +7 -6
- data/spec/components/blacklight/facet_item_pivot_component_spec.rb +10 -9
- data/spec/components/blacklight/response/view_type_component_spec.rb +66 -0
- data/spec/components/blacklight/search_bar_component_spec.rb +1 -1
- data/spec/components/blacklight/search_context_component_spec.rb +17 -8
- data/spec/controllers/blacklight/catalog/component_configuration_spec.rb +1 -6
- data/spec/controllers/blacklight/{base_spec.rb → catalog_spec.rb} +2 -2
- data/spec/controllers/bookmarks_controller_spec.rb +2 -3
- data/spec/controllers/catalog_controller_spec.rb +13 -135
- data/spec/features/advanced_search_spec.rb +0 -56
- data/spec/features/autocomplete_spec.rb +1 -1
- data/spec/features/axe_spec.rb +1 -6
- data/spec/features/bookmarks_spec.rb +1 -1
- data/spec/features/facets_spec.rb +6 -4
- data/spec/features/search_context_spec.rb +5 -11
- data/spec/features/search_results_spec.rb +0 -33
- data/spec/features/sitelinks_search_box.rb +13 -0
- data/spec/helpers/blacklight/configuration_helper_behavior_spec.rb +2 -138
- data/spec/helpers/blacklight/facets_helper_behavior_spec.rb +0 -387
- data/spec/helpers/blacklight/icon_helper_behavior_spec.rb +8 -0
- data/spec/helpers/blacklight/layout_helper_behavior_spec.rb +3 -20
- data/spec/helpers/blacklight/render_partials_helper_behavior_spec.rb +5 -7
- data/spec/helpers/blacklight/url_helper_behavior_spec.rb +9 -131
- data/spec/helpers/blacklight_helper_spec.rb +8 -252
- data/spec/helpers/catalog_helper_spec.rb +7 -118
- data/spec/i18n_spec.rb +1 -0
- data/spec/integration/generators/blacklight/solr_generator_spec.rb +1 -1
- data/spec/lib/blacklight/component_spec.rb +27 -32
- data/spec/lib/blacklight/configuration/facet_field_spec.rb +27 -16
- data/spec/lib/blacklight/configuration/field_spec.rb +1 -1
- data/spec/lib/blacklight/configuration/view_config_spec.rb +1 -1
- data/spec/lib/blacklight/open_struct_with_hash_access_spec.rb +2 -2
- data/spec/lib/blacklight/parameters_spec.rb +1 -4
- data/spec/lib/blacklight/search_state/filter_field_spec.rb +4 -4
- data/spec/lib/blacklight/search_state/pivot_filter_field_spec.rb +117 -0
- data/spec/lib/blacklight/search_state_spec.rb +80 -198
- data/spec/lib/tasks/blacklight_task_spec.rb +1 -0
- data/spec/models/blacklight/configuration_spec.rb +17 -51
- data/spec/models/blacklight/document/active_model_shim_spec.rb +2 -2
- data/spec/models/blacklight/icon_spec.rb +31 -15
- data/spec/models/blacklight/search_builder_spec.rb +9 -9
- data/spec/models/blacklight/solr/document_spec.rb +3 -3
- data/spec/models/blacklight/solr/repository_spec.rb +0 -45
- data/spec/models/blacklight/solr/response/facets_spec.rb +27 -27
- data/spec/models/blacklight/solr/response/group_response_spec.rb +1 -0
- data/spec/models/blacklight/solr/response/group_spec.rb +1 -0
- data/spec/models/blacklight/solr/response_spec.rb +9 -2
- data/spec/models/blacklight/solr/search_builder_spec.rb +24 -44
- data/spec/models/blacklight/user_spec.rb +22 -0
- data/spec/models/solr_document_spec.rb +3 -9
- data/spec/presenters/blacklight/clause_presenter_spec.rb +1 -0
- data/spec/presenters/blacklight/document_presenter_spec.rb +2 -3
- data/spec/presenters/blacklight/facet_field_presenter_spec.rb +85 -12
- data/spec/presenters/blacklight/facet_grouped_item_presenter_spec.rb +1 -0
- data/spec/presenters/blacklight/facet_item_presenter_spec.rb +14 -13
- data/spec/presenters/blacklight/field_presenter_spec.rb +0 -14
- data/spec/presenters/blacklight/index_presenter_spec.rb +2 -5
- data/spec/presenters/blacklight/json_presenter_spec.rb +1 -0
- data/spec/presenters/blacklight/link_alternate_presenter_spec.rb +3 -2
- data/spec/presenters/blacklight/show_presenter_spec.rb +20 -30
- data/spec/presenters/thumbnail_presenter_spec.rb +1 -1
- data/spec/requests/load_suggestions_spec.rb +16 -0
- data/spec/routing/catalog_routing_spec.rb +2 -1
- data/spec/services/blacklight/search_service_spec.rb +39 -76
- data/spec/spec_helper.rb +8 -9
- data/spec/support/controller_level_helpers.rb +1 -2
- data/spec/support/features/search_helpers.rb +39 -0
- data/spec/support/features/session_helpers.rb +1 -0
- data/spec/support/features.rb +3 -0
- data/spec/support/view_component_capybara_test_helpers.rb +8 -0
- data/spec/test_app_templates/Gemfile.extra +1 -0
- data/spec/test_app_templates/lib/generators/test_app_generator.rb +9 -2
- data/spec/views/catalog/_document.html.erb_spec.rb +3 -34
- data/spec/views/catalog/_facet_index_navigation.html.erb_spec.rb +1 -1
- data/spec/views/catalog/_paginate_compact.html.erb_spec.rb +0 -2
- data/spec/views/catalog/_search_header.erb_spec.rb +1 -0
- data/spec/views/catalog/_show_sidebar.erb_spec.rb +1 -0
- data/spec/views/catalog/_show_tools.html.erb_spec.rb +5 -66
- data/spec/views/catalog/_view_type_group.html.erb_spec.rb +17 -9
- data/spec/views/catalog/email_success.html.erb_spec.rb +2 -2
- data/spec/views/catalog/facet.html.erb_spec.rb +6 -3
- data/spec/views/catalog/index.atom.builder_spec.rb +17 -11
- data/spec/views/catalog/index.html.erb_spec.rb +5 -6
- data/spec/views/catalog/index.json.jbuilder_spec.rb +2 -2
- data/spec/views/catalog/show.html.erb_spec.rb +3 -25
- data/spec/views/catalog/sms_success.html.erb_spec.rb +2 -2
- data/tasks/blacklight.rake +11 -9
- data/template.demo.rb +7 -7
- metadata +77 -189
- data/.babelrc +0 -11
- data/.github/matrix.json +0 -62
- data/.github/workflows/build.yml +0 -16
- data/.github/workflows/lint.yml +0 -23
- data/.github/workflows/main.yml +0 -23
- data/.github/workflows/test.yml +0 -53
- data/app/assets/images/blacklight/list.svg +0 -1
- data/app/assets/images/blacklight/search.svg +0 -1
- data/app/assets/stylesheets/blacklight/_twitter_typeahead.scss +0 -37
- data/app/components/blacklight/content_areas_shim.rb +0 -13
- data/app/components/blacklight/search/per_page_component.html.erb +0 -2
- data/app/components/blacklight/search/per_page_component.rb +0 -50
- data/app/components/blacklight/search_context/server_item_pagination_component.html.erb +0 -10
- data/app/components/blacklight/search_context/server_item_pagination_component.rb +0 -15
- data/app/components/blacklight/system/dropdown_button_component.rb +0 -18
- data/app/controllers/concerns/blacklight/base.rb +0 -12
- data/app/controllers/concerns/blacklight/default_component_configuration.rb +0 -64
- data/app/controllers/concerns/blacklight/facet.rb +0 -69
- data/app/controllers/concerns/blacklight/search_fields.rb +0 -46
- data/app/helpers/blacklight/hash_as_hidden_fields_helper_behavior.rb +0 -27
- data/app/helpers/blacklight/render_constraints_helper_behavior.rb +0 -188
- data/app/helpers/blacklight/search_history_constraints_helper_behavior.rb +0 -97
- data/app/helpers/blacklight/suggest_helper_behavior.rb +0 -13
- data/app/javascript/blacklight/autocomplete.js +0 -36
- data/app/javascript/blacklight/facet_load.js +0 -22
- data/app/presenters/blacklight/search_bar_presenter.rb +0 -47
- data/app/views/catalog/_constraints_element.html.erb +0 -14
- data/app/views/catalog/_document_action.html.erb +0 -5
- data/app/views/catalog/_facet_group.html.erb +0 -5
- data/app/views/catalog/_facet_limit.html.erb +0 -3
- data/app/views/catalog/_index.html.erb +0 -1
- data/app/views/catalog/_index_header.html.erb +0 -22
- data/app/views/catalog/_previous_next_doc.html.erb +0 -2
- data/app/views/catalog/_show.html.erb +0 -6
- data/app/views/catalog/_show_header.html.erb +0 -2
- data/app/views/catalog/_thumbnail.html.erb +0 -1
- data/lib/blacklight/deprecations/engine_configuration.rb +0 -66
- data/lib/blacklight/deprecations/search_state_normalization.rb +0 -52
- data/spec/components/blacklight/header_component_spec.rb +0 -20
- data/spec/components/blacklight/icons/icon_component_spec.rb +0 -42
- data/spec/components/blacklight/response/pagination_component_spec.rb +0 -53
- data/spec/components/blacklight/search_context/server_item_pagination_component_spec.rb +0 -35
- data/spec/controllers/blacklight/facet_spec.rb +0 -33
- data/spec/controllers/blacklight/search_fields_spec.rb +0 -62
- data/spec/features/citation_spec.rb +0 -10
- data/spec/features/sitelinks_search_box_spec.rb +0 -13
- data/spec/features/sms_spec.rb +0 -12
- data/spec/helpers/blacklight/hash_as_hidden_fields_behavior_spec.rb +0 -26
- data/spec/helpers/blacklight/render_constraints_helper_behavior_spec.rb +0 -92
- data/spec/helpers/blacklight/search_history_constraints_helper_behavior_spec.rb +0 -101
- data/spec/helpers/blacklight/suggest_helper_behavior_spec.rb +0 -48
- data/spec/lib/blacklight/engine_spec.rb +0 -41
- data/spec/presenters/blacklight/search_bar_presenter_spec.rb +0 -94
- data/spec/services/blacklight/field_retriever_spec.rb +0 -17
- data/spec/support/view_component_test_helpers.rb +0 -35
- data/spec/views/catalog/_constraints.html.erb_spec.rb +0 -33
- data/spec/views/catalog/_facet_group.html.erb_spec.rb +0 -84
- data/spec/views/catalog/_facets.html.erb_spec.rb +0 -15
- data/spec/views/catalog/_index.html.erb_spec.rb +0 -62
- data/spec/views/catalog/_index_header.html.erb_spec.rb +0 -35
- data/spec/views/catalog/_previous_next_doc.html.erb_spec.rb +0 -22
- data/spec/views/catalog/_show.html.erb_spec.rb +0 -62
- data/spec/views/catalog/_thumbnail.html.erb_spec.rb +0 -38
@@ -1,11 +1,11 @@
|
|
1
1
|
<%= render(@layout.new(facet_field: @facet_field)) do |component| %>
|
2
|
-
<% component.
|
2
|
+
<% component.label do %>
|
3
3
|
<%= @facet_field.label %>
|
4
4
|
<% end %>
|
5
|
-
<% component.
|
5
|
+
<% component.body do %>
|
6
6
|
<%= helpers.render(Blacklight::FacetFieldInclusiveConstraintComponent.new(facet_field: @facet_field)) %>
|
7
7
|
<ul class="facet-values list-unstyled">
|
8
|
-
<%=
|
8
|
+
<%= render facet_items %>
|
9
9
|
</ul>
|
10
10
|
<%# backwards compatibility, ugh %>
|
11
11
|
<% if @layout == Blacklight::FacetFieldNoLayoutComponent && !@facet_field.in_modal? && @facet_field.modal_path %>
|
@@ -7,16 +7,48 @@ module Blacklight
|
|
7
7
|
@layout = layout == false ? FacetFieldNoLayoutComponent : Blacklight::FacetFieldComponent
|
8
8
|
end
|
9
9
|
|
10
|
-
|
11
|
-
#
|
12
|
-
|
13
|
-
|
14
|
-
|
10
|
+
##
|
11
|
+
# Renders the list of values
|
12
|
+
# removes any elements where render_facet_item returns a nil value. This enables an application
|
13
|
+
# to filter undesireable facet items so they don't appear in the UI
|
14
|
+
# @deprecated
|
15
|
+
def render_facet_limit_list(paginator, facet_field, wrapping_element = :li)
|
16
|
+
return render(facet_items(wrapping_element: wrapping_element)) if paginator == @facet_field.paginator && facet_field == @facet_field.key
|
17
|
+
|
18
|
+
facet_config ||= helpers.facet_configuration_for_field(facet_field)
|
19
|
+
|
20
|
+
collection = paginator.items.map do |item|
|
21
|
+
facet_item_presenter(item, facet_config, facet_field)
|
22
|
+
end
|
23
|
+
|
24
|
+
render(facet_item_component_class(facet_config).with_collection(collection, wrapping_element: wrapping_element))
|
25
|
+
end
|
26
|
+
Blacklight.deprecation.deprecate_methods(self, render_facet_limit_list: 'Call e.g. `render facet_items` instead')
|
27
|
+
|
28
|
+
def facet_items(wrapping_element: :li, **item_args)
|
29
|
+
facet_item_component_class.with_collection(facet_item_presenters, wrapping_element: wrapping_element, **item_args)
|
30
|
+
end
|
31
|
+
|
32
|
+
def facet_item_presenters
|
33
|
+
@facet_field.paginator.items.map do |item|
|
34
|
+
facet_item_presenter(item)
|
15
35
|
end
|
16
36
|
end
|
17
37
|
|
18
38
|
def render?
|
19
39
|
@facet_field.paginator&.items&.any?
|
20
40
|
end
|
41
|
+
|
42
|
+
def facet_item_presenter(facet_item, deprecated_facet_config = nil, facet_field = nil)
|
43
|
+
(deprecated_facet_config || facet_config).item_presenter.new(facet_item, deprecated_facet_config || facet_config, helpers, facet_field || @facet_field.key)
|
44
|
+
end
|
45
|
+
|
46
|
+
def facet_item_component_class(deprecated_facet_config = nil)
|
47
|
+
(deprecated_facet_config || facet_config).item_component
|
48
|
+
end
|
49
|
+
|
50
|
+
def facet_config
|
51
|
+
@facet_field.facet_field
|
52
|
+
end
|
21
53
|
end
|
22
54
|
end
|
@@ -2,8 +2,6 @@
|
|
2
2
|
|
3
3
|
module Blacklight
|
4
4
|
class FacetItemComponent < Blacklight::Component
|
5
|
-
extend Deprecation
|
6
|
-
|
7
5
|
attr_reader :label, :href, :hits
|
8
6
|
|
9
7
|
with_collection_parameter :facet_item
|
@@ -21,9 +19,7 @@ module Blacklight
|
|
21
19
|
def call
|
22
20
|
# if the downstream app has overridden the helper methods we'd usually call,
|
23
21
|
# use the helpers to preserve compatibility
|
24
|
-
content = if
|
25
|
-
content_from_legacy_view_helper
|
26
|
-
elsif @selected
|
22
|
+
content = if @selected
|
27
23
|
render_selected_facet_value
|
28
24
|
else
|
29
25
|
render_facet_value
|
@@ -35,36 +31,6 @@ module Blacklight
|
|
35
31
|
content_tag @wrapping_element, content
|
36
32
|
end
|
37
33
|
|
38
|
-
# This is a little shim to let us call the render methods below outside the
|
39
|
-
# usual component rendering cycle (for backward compatibility)
|
40
|
-
# @private
|
41
|
-
# @deprecated
|
42
|
-
def with_view_context(view_context)
|
43
|
-
@view_context = view_context
|
44
|
-
self
|
45
|
-
end
|
46
|
-
|
47
|
-
# Check if the downstream application has overridden these methods
|
48
|
-
# @deprecated
|
49
|
-
# @private
|
50
|
-
def overridden_helper_methods?
|
51
|
-
return false if explicit_component_configuration?
|
52
|
-
|
53
|
-
helpers.method(:render_facet_item).owner != Blacklight::FacetsHelperBehavior ||
|
54
|
-
helpers.method(:render_facet_value).owner != Blacklight::FacetsHelperBehavior ||
|
55
|
-
helpers.method(:render_selected_facet_value).owner != Blacklight::FacetsHelperBehavior
|
56
|
-
end
|
57
|
-
|
58
|
-
# Call out to the helper method equivalent of this component
|
59
|
-
# @deprecated
|
60
|
-
# @private
|
61
|
-
def content_from_legacy_view_helper
|
62
|
-
Deprecation.warn(self.class, 'Calling out to the #render_facet_item helper for backwards compatibility.')
|
63
|
-
Deprecation.silence(Blacklight::FacetsHelperBehavior) do
|
64
|
-
@view_context.render_facet_item(@facet_item.facet_field, @facet_item.facet_item)
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
34
|
##
|
69
35
|
# Standard display of a facet value in a list. Used in both _facets sidebar
|
70
36
|
# partial and catalog/facet expanded list. Will output facet value name as
|
@@ -103,18 +69,10 @@ module Blacklight
|
|
103
69
|
# @return [String]
|
104
70
|
# @private
|
105
71
|
def render_facet_count(options = {})
|
106
|
-
return helpers.render_facet_count(hits, options) unless helpers.method(:render_facet_count).owner == Blacklight::FacetsHelperBehavior || explicit_component_configuration?
|
107
|
-
|
108
72
|
return '' if hits.blank?
|
109
73
|
|
110
74
|
classes = (options[:classes] || []) << "facet-count"
|
111
75
|
tag.span(t('blacklight.search.facets.count', number: number_with_delimiter(hits)), class: classes)
|
112
76
|
end
|
113
|
-
|
114
|
-
private
|
115
|
-
|
116
|
-
def explicit_component_configuration?
|
117
|
-
@facet_item.facet_config.item_component.present?
|
118
|
-
end
|
119
77
|
end
|
120
78
|
end
|
@@ -6,7 +6,7 @@ module Blacklight
|
|
6
6
|
# Somewhat arbitrary number; the only important thing is that
|
7
7
|
# it is bigger than the number of leaf nodes in any collapsing
|
8
8
|
# pivot facet on the page.
|
9
|
-
ID_COUNTER_MAX = 2**20 - 1
|
9
|
+
ID_COUNTER_MAX = (2**20) - 1
|
10
10
|
|
11
11
|
# Mint a (sufficiently) unique identifier, so we can associate
|
12
12
|
# the expand/collapse control with labels
|
@@ -24,7 +24,7 @@ module Blacklight
|
|
24
24
|
@wrapping_element = wrapping_element
|
25
25
|
@suppress_link = suppress_link
|
26
26
|
@collapsing = collapsing.nil? ? facet_item.facet_config.collapsing : collapsing
|
27
|
-
@icons = { show: '
|
27
|
+
@icons = { show: tag.span(class: 'icon'), hide: tag.span(class: 'icon') }.merge(facet_item.facet_config.icons || {})
|
28
28
|
end
|
29
29
|
|
30
30
|
def call
|
@@ -32,15 +32,16 @@ module Blacklight
|
|
32
32
|
|
33
33
|
id = "h-#{self.class.mint_id}" if @collapsing && has_items?
|
34
34
|
|
35
|
-
content_tag @wrapping_element, role: 'treeitem' do
|
36
|
-
concat
|
37
|
-
|
38
|
-
|
35
|
+
content_tag @wrapping_element, role: 'treeitem', class: 'treeitem' do
|
36
|
+
concat(content_tag('span', class: "d-flex flex-row align-items-center") do
|
37
|
+
concat facet_toggle_button(id) if has_items? && @collapsing
|
38
|
+
concat content_tag('span', render(facet), class: "facet-values d-flex flex-row flex-grow-1 #{'facet-leaf-node' if has_items? && @collapsing}", id: id && "#{id}_label")
|
39
|
+
end)
|
39
40
|
if has_items?
|
40
|
-
concat(content_tag('ul', class: "pivot-facet list-unstyled #{'collapse' if @collapsing}", id: id, role: 'group') do
|
41
|
-
|
41
|
+
concat(content_tag('ul', class: "pivot-facet flex-column list-unstyled ps-4 #{'collapse' if @collapsing} #{'show' if expanded?}", id: id, role: 'group') do
|
42
|
+
render(
|
42
43
|
self.class.with_collection(
|
43
|
-
@facet_item.
|
44
|
+
@facet_item.facet_item_presenters.to_a
|
44
45
|
)
|
45
46
|
)
|
46
47
|
end)
|
@@ -51,13 +52,21 @@ module Blacklight
|
|
51
52
|
private
|
52
53
|
|
53
54
|
def has_items?
|
54
|
-
@facet_item.
|
55
|
+
return unless @facet_item.respond_to? :facet_item_presenters
|
56
|
+
|
57
|
+
@facet_item.facet_item_presenters.any?
|
58
|
+
end
|
59
|
+
|
60
|
+
def expanded?
|
61
|
+
return unless @collapsing
|
62
|
+
|
63
|
+
@facet_item.shown?
|
55
64
|
end
|
56
65
|
|
57
66
|
def facet_toggle_button(id)
|
58
|
-
content_tag 'button', class:
|
67
|
+
content_tag 'button', class: %w[btn facet-toggle-handle] + [('collapsed' unless expanded?)],
|
59
68
|
data: { toggle: 'collapse', 'bs-toggle': 'collapse', target: "##{id}", 'bs-target': "##{id}" },
|
60
|
-
aria: { expanded:
|
69
|
+
aria: { expanded: expanded?, controls: id, describedby: "#{id}_label" } do
|
61
70
|
concat toggle_icon(:show)
|
62
71
|
concat toggle_icon(:hide)
|
63
72
|
end
|
@@ -69,16 +78,5 @@ module Blacklight
|
|
69
78
|
concat content_tag('span', t(type, scope: 'blacklight.search.facets.pivot'), class: 'sr-only visually-hidden')
|
70
79
|
end
|
71
80
|
end
|
72
|
-
|
73
|
-
# This is a little convoluted in Blacklight 7 in order to maintain backwards-compat
|
74
|
-
# with overrides of deprecated helpers. In 8.x, we can just call Component#render_in
|
75
|
-
# and call it a day
|
76
|
-
def render_component(component)
|
77
|
-
helpers.render(component)
|
78
|
-
end
|
79
|
-
|
80
|
-
def facet_item_presenter(facet_item)
|
81
|
-
(@facet_item.facet_config.item_presenter || Blacklight::FacetItemPresenter).new(facet_item, @facet_item.facet_config, helpers, @facet_item.facet_field, @facet_item.search_state)
|
82
|
-
end
|
83
81
|
end
|
84
82
|
end
|
@@ -17,7 +17,7 @@ module Blacklight
|
|
17
17
|
attr_reader :blacklight_config
|
18
18
|
|
19
19
|
# Hack so that the default lambdas are triggered
|
20
|
-
# so that we don't have to do c.
|
20
|
+
# so that we don't have to do c.with_top_bar() in the call.
|
21
21
|
def before_render
|
22
22
|
set_slot(:top_bar, nil) unless top_bar
|
23
23
|
set_slot(:search_bar, nil) unless search_bar
|
@@ -7,8 +7,7 @@ module Blacklight
|
|
7
7
|
class HiddenSearchStateComponent < Blacklight::Component
|
8
8
|
# @param [Hash] params
|
9
9
|
def initialize(params:)
|
10
|
-
|
11
|
-
@params = params.except(:utf8)
|
10
|
+
@params = params.except(:page, :utf8)
|
12
11
|
end
|
13
12
|
|
14
13
|
def call
|
@@ -2,16 +2,15 @@
|
|
2
2
|
|
3
3
|
module Blacklight
|
4
4
|
module Icons
|
5
|
-
# This is the
|
6
|
-
#
|
5
|
+
# This is the list icon for the search button.
|
7
6
|
# You can override the default svg by setting:
|
8
|
-
# Blacklight::Icons::
|
7
|
+
# Blacklight::Icons::ListComponent.svg = '<svg>your SVG here</svg>'
|
9
8
|
class IconComponent < ::ViewComponent::Base
|
10
9
|
# rubocop:disable Metrics/ParameterLists
|
11
10
|
def initialize(svg: nil, tag: :span, name: nil, label: nil, aria_hidden: nil, classes: nil, **options)
|
12
11
|
self.svg = svg if svg
|
12
|
+
@classes = Array(classes) + ['blacklight-icons', "blacklight-icons-#{name}"]
|
13
13
|
@name = name
|
14
|
-
@assigned_classes = Array(classes)
|
15
14
|
@tag = tag
|
16
15
|
@options = options.merge(aria: options.fetch(:aria, {}).reverse_merge(label: label, hidden: aria_hidden))
|
17
16
|
end
|
@@ -19,16 +18,12 @@ module Blacklight
|
|
19
18
|
|
20
19
|
def call
|
21
20
|
tag.public_send(@tag, svg&.html_safe, # rubocop:disable Rails/OutputSafety
|
22
|
-
class: classes,
|
21
|
+
class: @classes,
|
23
22
|
**@options)
|
24
23
|
end
|
25
24
|
|
26
25
|
class_attribute :svg
|
27
26
|
|
28
|
-
def classes
|
29
|
-
@classes ||= @assigned_classes + ['blacklight-icons', "blacklight-icons-#{name}"]
|
30
|
-
end
|
31
|
-
|
32
27
|
def name
|
33
28
|
@name ||= self.class.name.demodulize.underscore.sub('_component', '')
|
34
29
|
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Blacklight
|
4
|
+
module Icons
|
5
|
+
class LegacyIconComponent < ::ViewComponent::Base
|
6
|
+
def initialize(name:, classes: '', aria_hidden: false, label: true, role: 'img', additional_options: {})
|
7
|
+
@name = name
|
8
|
+
@classes = classes
|
9
|
+
@aria_hidden = aria_hidden
|
10
|
+
@icon = Blacklight::Icon.new(name, classes: classes, label: label, role: role, additional_options: additional_options)
|
11
|
+
end
|
12
|
+
|
13
|
+
def call
|
14
|
+
tag.span(svg&.html_safe || default_icon, # rubocop:disable Rails/OutputSafety
|
15
|
+
class: "blacklight-icons blacklight-icon-#{@name} #{@classes}".strip,
|
16
|
+
'aria-hidden': (true if @aria_hidden))
|
17
|
+
end
|
18
|
+
|
19
|
+
def svg
|
20
|
+
Rails.cache.fetch([:blacklight_icon_svg, @name]) do
|
21
|
+
@icon.svg if @icon.present?
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def default_icon
|
26
|
+
@icon.icon_label
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Blacklight
|
4
|
+
module Icons
|
5
|
+
# This is the list icon for the search button.
|
6
|
+
# You can override the default svg by setting:
|
7
|
+
# Blacklight::Icons::ListComponent.svg = '<svg>your SVG here</svg>'
|
8
|
+
class ListComponent < Blacklight::Icons::IconComponent
|
9
|
+
self.svg = <<~SVG
|
10
|
+
<svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" aria-hidden="true" width="24" height="24" viewBox="0 0 24 24">
|
11
|
+
<path d="M3 13h2v-2H3v2zm0 4h2v-2H3v2zm0-8h2V7H3v2zm4 4h14v-2H7v2zm0 4h14v-2H7v2zM7 7v2h14V7H7z"/><path d="M0 0h24v24H0z" fill="none"/>
|
12
|
+
</svg>
|
13
|
+
SVG
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Blacklight
|
4
|
+
module Icons
|
5
|
+
# This is the magnifing glass icon for the search button.
|
6
|
+
# You can override the default svg by setting:
|
7
|
+
# Blacklight::Icons::SearchComponent.svg = '<svg>your SVG here</svg>'
|
8
|
+
class SearchComponent < Blacklight::Icons::IconComponent
|
9
|
+
self.svg = <<~SVG
|
10
|
+
<svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" aria-hidden="true" width="24" height="24" viewBox="0 0 24 24">
|
11
|
+
<path fill="none" d="M0 0h24v24H0V0z"/><path d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"/>
|
12
|
+
</svg>
|
13
|
+
SVG
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -7,25 +7,41 @@ module Blacklight
|
|
7
7
|
# @param field [Blacklight::FieldPresenter]
|
8
8
|
# @param layout [Blacklight::MetadataFieldLayoutComponent] alternate layout component to use
|
9
9
|
# @param show [Boolean] are we showing only a single document (vs a list of search results); used for backwards-compatibility
|
10
|
-
def initialize(field:, layout: nil, show: false)
|
10
|
+
def initialize(field:, layout: nil, show: false, view_type: nil)
|
11
11
|
@field = field
|
12
12
|
@layout = layout || Blacklight::MetadataFieldLayoutComponent
|
13
|
+
@view_type = view_type
|
13
14
|
@show = show
|
14
15
|
end
|
15
16
|
|
16
|
-
# @private
|
17
17
|
def label
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
helpers.render_index_field_label @field.document, label: @field.label, field: @field.key
|
23
|
-
end
|
18
|
+
if @show
|
19
|
+
show_field_label @field.label('show')
|
20
|
+
else
|
21
|
+
index_field_label @field.label
|
24
22
|
end
|
25
23
|
end
|
26
24
|
|
27
25
|
def render?
|
28
26
|
@field.render_field?
|
29
27
|
end
|
28
|
+
|
29
|
+
##
|
30
|
+
# Render the index field label for a document
|
31
|
+
#
|
32
|
+
# Translations for index field labels should go under blacklight.search.fields
|
33
|
+
# They are picked up from there by a value "%{label}" in blacklight.search.index.label
|
34
|
+
# @return [String]
|
35
|
+
def index_field_label label
|
36
|
+
html_escape t(:"blacklight.search.index.#{@view_type}.label", default: :'blacklight.search.index.label', label: label)
|
37
|
+
end
|
38
|
+
|
39
|
+
##
|
40
|
+
# Render the show field label for a document
|
41
|
+
#
|
42
|
+
# @return [String]
|
43
|
+
def show_field_label label
|
44
|
+
t(:'blacklight.search.show.label', label: label)
|
45
|
+
end
|
30
46
|
end
|
31
47
|
end
|
@@ -2,43 +2,22 @@
|
|
2
2
|
|
3
3
|
module Blacklight
|
4
4
|
class MetadataFieldLayoutComponent < Blacklight::Component
|
5
|
-
include Blacklight::ContentAreasShim
|
6
|
-
|
7
5
|
with_collection_parameter :field
|
8
6
|
renders_one :label
|
9
7
|
renders_many :values, (lambda do |value: nil, &block|
|
10
|
-
if
|
11
|
-
|
12
|
-
elsif block
|
13
|
-
content_tag @value_tag, class: "#{@value_class} blacklight-#{@key}", &block
|
8
|
+
if block
|
9
|
+
content_tag :dd, class: "#{@value_class} blacklight-#{@key}", &block
|
14
10
|
else
|
15
|
-
content_tag
|
11
|
+
content_tag :dd, value, class: "#{@value_class} blacklight-#{@key}"
|
16
12
|
end
|
17
13
|
end)
|
18
14
|
|
19
15
|
# @param field [Blacklight::FieldPresenter]
|
20
|
-
def initialize(field:,
|
16
|
+
def initialize(field:, label_class: 'col-md-3', value_class: 'col-md-9')
|
21
17
|
@field = field
|
22
18
|
@key = @field.key.parameterize
|
23
19
|
@label_class = label_class
|
24
|
-
@value_tag = value_tag
|
25
20
|
@value_class = value_class
|
26
21
|
end
|
27
|
-
|
28
|
-
def value(*args, **kwargs, &block)
|
29
|
-
return set_slot(:values, nil, *args, **kwargs, &block) if block_given?
|
30
|
-
|
31
|
-
Deprecation.warn(Blacklight::MetadataFieldLayoutComponent, 'The `value` content area is deprecated; render from the values slot instead')
|
32
|
-
|
33
|
-
values.first
|
34
|
-
end
|
35
|
-
|
36
|
-
def with(slot_name, *args, **kwargs, &block)
|
37
|
-
if slot_name == :value
|
38
|
-
super(:values, *args, **kwargs, &block)
|
39
|
-
else
|
40
|
-
super
|
41
|
-
end
|
42
|
-
end
|
43
22
|
end
|
44
23
|
end
|
@@ -21,9 +21,7 @@
|
|
21
21
|
<% end %>
|
22
22
|
</div>
|
23
23
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
<% end %>
|
28
|
-
<% end %>
|
24
|
+
<div id="<%= @panel_id %>" class="facets-collapse collapse">
|
25
|
+
<%= body %>
|
26
|
+
</div>
|
29
27
|
<% end %>
|
@@ -4,22 +4,43 @@ module Blacklight
|
|
4
4
|
module Response
|
5
5
|
# Render a group of facet fields
|
6
6
|
class FacetGroupComponent < Blacklight::Component
|
7
|
+
renders_one :body
|
8
|
+
|
7
9
|
# @param [Blacklight::Response] response
|
8
|
-
# @param [Array<
|
10
|
+
# @param [Array<Blacklight::Configuration::FacetField>] fields facet fields to render
|
9
11
|
# @param [String] title the title of the facet group section
|
10
12
|
# @param [String] id a unique identifier for the group
|
11
|
-
def initialize(
|
12
|
-
@
|
13
|
-
@fields = fields
|
14
|
-
@title = title
|
13
|
+
def initialize(id:, title: nil, fields: [], response: nil)
|
14
|
+
@groupname = id
|
15
15
|
@id = id ? "facets-#{id}" : 'facets'
|
16
|
+
@title = title || I18n.t("blacklight.search.#{@id}.title")
|
16
17
|
@panel_id = id ? "facet-panel-#{id}-collapse" : 'facet-panel-collapse'
|
18
|
+
|
19
|
+
# deprecated variables
|
20
|
+
@fields = fields
|
21
|
+
@response = response
|
22
|
+
end
|
23
|
+
|
24
|
+
# Provide fallback behavior for rendering this object without a body slot
|
25
|
+
def before_render
|
26
|
+
set_slot(:body, nil) { default_body } unless body
|
17
27
|
end
|
18
28
|
|
19
29
|
def render?
|
20
|
-
|
21
|
-
|
22
|
-
|
30
|
+
body.present?
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
# @deprecated
|
36
|
+
def default_body
|
37
|
+
Blacklight.deprecation.warn('Rendering the Blacklight::FacetGroupComponent without a body slot is deprecated.')
|
38
|
+
helpers.render(Blacklight::FacetComponent.with_collection(@fields, response: @response))
|
39
|
+
end
|
40
|
+
|
41
|
+
# @deprecated
|
42
|
+
def blacklight_config
|
43
|
+
helpers.blacklight_config
|
23
44
|
end
|
24
45
|
end
|
25
46
|
end
|
@@ -8,21 +8,12 @@ module Blacklight
|
|
8
8
|
# @param [Hash] html html options for the pagination container
|
9
9
|
def initialize(response:, html: {}, **pagination_args)
|
10
10
|
@response = response
|
11
|
-
@
|
11
|
+
@html_attr = { aria: { label: t('views.pagination.aria.container_label') } }.merge(html)
|
12
12
|
@pagination_args = pagination_args
|
13
13
|
end
|
14
14
|
|
15
|
-
def html_attr
|
16
|
-
{ aria: { label: t('views.pagination.aria.container_label') } }.merge(@html)
|
17
|
-
end
|
18
|
-
|
19
15
|
def pagination
|
20
|
-
|
21
|
-
helpers.paginate @response, **args
|
22
|
-
end
|
23
|
-
|
24
|
-
def configured_options
|
25
|
-
controller.blacklight_config.index.pagination_options
|
16
|
+
helpers.paginate @response, **Blacklight::Engine.config.blacklight.default_pagination_options, **@pagination_args
|
26
17
|
end
|
27
18
|
end
|
28
19
|
end
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
module Blacklight
|
4
4
|
module Response
|
5
|
-
class SortComponent <
|
5
|
+
class SortComponent < ViewComponent::Base
|
6
6
|
def initialize(search_state:, param: 'sort', choices: {}, id: 'sort-dropdown', classes: [], selected: nil)
|
7
7
|
@param = param
|
8
8
|
@choices = choices
|
@@ -11,21 +11,6 @@ module Blacklight
|
|
11
11
|
@classes = classes
|
12
12
|
@selected = selected
|
13
13
|
end
|
14
|
-
|
15
|
-
# You may override this method in a subclass if you want to use a different dropdown component
|
16
|
-
def dropdown_class
|
17
|
-
Blacklight::System::DropdownComponent
|
18
|
-
end
|
19
|
-
|
20
|
-
def dropdown
|
21
|
-
render(dropdown_class.new(
|
22
|
-
param: @param,
|
23
|
-
choices: @choices,
|
24
|
-
id: @id,
|
25
|
-
search_state: @search_state,
|
26
|
-
selected: @selected
|
27
|
-
))
|
28
|
-
end
|
29
14
|
end
|
30
15
|
end
|
31
16
|
end
|
@@ -3,7 +3,7 @@
|
|
3
3
|
module Blacklight
|
4
4
|
module Response
|
5
5
|
# Render spellcheck results for a search query
|
6
|
-
class SpellcheckComponent <
|
6
|
+
class SpellcheckComponent < ViewComponent::Base
|
7
7
|
# @param [Blacklight::Response] response
|
8
8
|
# @param [Array<String>] options explicit spellcheck options to render
|
9
9
|
def initialize(response:, options: nil)
|
@@ -13,15 +13,26 @@ module Blacklight
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def link_to_query(query)
|
16
|
-
|
17
|
-
|
18
|
-
|
16
|
+
p = helpers.search_state.to_h.except(:page, :action)
|
17
|
+
p[:q] = query
|
18
|
+
link_to(query, helpers.search_action_path(p))
|
19
19
|
end
|
20
20
|
|
21
21
|
def render?
|
22
|
-
|
23
|
-
|
24
|
-
|
22
|
+
Array(@options).any? && show_spellcheck_suggestions?(@response)
|
23
|
+
end
|
24
|
+
|
25
|
+
# @!group Search result helpers
|
26
|
+
##
|
27
|
+
# Determine whether to display spellcheck suggestions
|
28
|
+
#
|
29
|
+
# @param [Blacklight::Solr::Response] response
|
30
|
+
# @return [Boolean]
|
31
|
+
def show_spellcheck_suggestions? response
|
32
|
+
# The spelling response field may be missing from non solr repositories.
|
33
|
+
response.total <= helpers.blacklight_config.spell_max &&
|
34
|
+
!response.spelling.nil? &&
|
35
|
+
response.spelling.words.any?
|
25
36
|
end
|
26
37
|
|
27
38
|
private
|