blacklight 7.33.0 → 8.0.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/.env +3 -2
- data/.github/workflows/ruby.yml +38 -107
- data/.gitignore +1 -0
- data/.rubocop.yml +243 -2
- data/.rubocop_todo.yml +216 -270
- data/Gemfile +7 -6
- data/README.md +12 -4
- data/Rakefile +18 -0
- data/VERSION +1 -1
- data/app/assets/config/blacklight/manifest.js +3 -0
- data/app/assets/javascripts/blacklight/blacklight.esm.js +376 -0
- data/app/assets/javascripts/blacklight/blacklight.esm.js.map +1 -0
- data/app/assets/javascripts/blacklight/blacklight.js +332 -485
- 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/_facets.scss +104 -49
- 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 +1 -1
- data/app/components/blacklight/advanced_search_form_component.rb +7 -9
- data/app/components/blacklight/constraints_component.rb +27 -37
- data/app/components/blacklight/document/action_component.html.erb +2 -9
- data/app/components/blacklight/document/action_component.rb +26 -8
- 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/show_tools_component.html.erb +12 -0
- data/app/components/blacklight/document/show_tools_component.rb +23 -0
- 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 +4 -0
- data/app/components/blacklight/document_component.rb +54 -42
- data/app/components/blacklight/document_metadata_component.html.erb +4 -2
- data/app/components/blacklight/document_metadata_component.rb +11 -6
- data/app/components/blacklight/document_title_component.rb +4 -1
- data/app/components/blacklight/facet_component.rb +1 -1
- data/app/components/blacklight/facet_field_checkboxes_component.html.erb +3 -3
- data/app/components/blacklight/facet_field_checkboxes_component.rb +1 -1
- data/app/components/blacklight/facet_field_component.html.erb +5 -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.html.erb +2 -0
- data/app/components/blacklight/header_component.rb +26 -0
- data/app/components/blacklight/hidden_search_state_component.rb +1 -2
- 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 +7 -22
- data/app/components/blacklight/metadata_field_plain_text_layout_component.rb +17 -0
- data/app/components/blacklight/response/facet_group_component.html.erb +5 -6
- data/app/components/blacklight/response/facet_group_component.rb +29 -8
- data/app/components/blacklight/response/sort_component.rb +2 -2
- 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/server_applied_params_component.html.erb +4 -0
- data/app/components/blacklight/search_context/server_applied_params_component.rb +13 -0
- data/app/components/blacklight/search_context/server_item_pagination_component.rb +71 -0
- 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/search_navbar_component.html.erb +5 -0
- data/app/components/blacklight/search_navbar_component.rb +34 -0
- data/app/components/blacklight/start_over_button_component.rb +5 -3
- data/app/components/blacklight/system/dropdown_component.rb +3 -3
- data/app/components/blacklight/system/flash_message_component.html.erb +3 -1
- 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 +12 -0
- data/app/components/blacklight/top_navbar_component.rb +17 -0
- data/app/controllers/bookmarks_controller.rb +1 -0
- data/app/controllers/catalog_controller.rb +1 -0
- data/app/controllers/concerns/blacklight/bookmarks.rb +11 -6
- data/app/controllers/concerns/blacklight/catalog.rb +21 -72
- data/app/controllers/concerns/blacklight/controller.rb +6 -43
- data/app/controllers/concerns/blacklight/search_context.rb +71 -13
- 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 +1 -0
- data/app/controllers/search_history_controller.rb +1 -0
- data/app/helpers/blacklight/blacklight_helper_behavior.rb +1 -400
- data/app/helpers/blacklight/catalog_helper_behavior.rb +40 -182
- data/app/helpers/blacklight/component_helper_behavior.rb +1 -63
- data/app/helpers/blacklight/configuration_helper_behavior.rb +2 -117
- data/app/helpers/blacklight/document_helper_behavior.rb +76 -0
- data/app/helpers/blacklight/facets_helper_behavior.rb +4 -321
- data/app/helpers/blacklight/icon_helper_behavior.rb +5 -4
- data/app/helpers/blacklight/layout_helper_behavior.rb +60 -0
- data/app/helpers/blacklight/render_partials_helper_behavior.rb +12 -30
- data/app/helpers/blacklight/url_helper_behavior.rb +21 -97
- data/app/helpers/blacklight_helper.rb +1 -0
- data/app/helpers/catalog_helper.rb +1 -0
- data/app/javascript/blacklight/bookmark_toggle.js +9 -22
- data/app/javascript/blacklight/button_focus.js +9 -7
- data/app/javascript/blacklight/checkbox_submit.js +68 -122
- data/app/javascript/blacklight/core.js +6 -5
- data/app/javascript/blacklight/index.js +14 -0
- data/app/javascript/blacklight/modal.js +100 -165
- data/app/javascript/blacklight/modalForm.js +60 -0
- data/app/javascript/blacklight/search_context.js +13 -29
- 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 -0
- data/app/models/concerns/blacklight/document/attributes.rb +50 -0
- 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/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 +1 -0
- data/app/models/concerns/blacklight/document.rb +23 -20
- 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 +23 -18
- data/app/models/search.rb +0 -1
- data/app/models/solr_document.rb +1 -0
- data/app/presenters/blacklight/clause_presenter.rb +1 -1
- data/app/presenters/blacklight/document_presenter.rb +24 -30
- 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 +7 -5
- data/app/presenters/blacklight/rendering/abstract_step.rb +4 -0
- data/app/presenters/blacklight/rendering/join.rb +7 -1
- data/app/presenters/blacklight/rendering/link_to_facet.rb +3 -6
- data/app/presenters/blacklight/rendering/microdata.rb +1 -1
- 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 +1 -8
- data/app/services/blacklight/search_service.rb +9 -7
- data/app/values/blacklight/types.rb +95 -11
- 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/_constraints.html.erb +1 -14
- data/app/views/catalog/_document.atom.builder +12 -14
- data/app/views/catalog/_document.html.erb +3 -6
- data/app/views/catalog/_document.rss.builder +2 -4
- data/app/views/catalog/_document_list.html.erb +2 -1
- 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/_search_form.html.erb +3 -3
- 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 +8 -19
- data/app/views/catalog/_show_sidebar.html.erb +2 -2
- data/app/views/catalog/_show_tools.html.erb +1 -19
- data/app/views/catalog/_view_type_group.html.erb +1 -1
- 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 +7 -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/show.html.erb +1 -6
- data/app/views/catalog/sms_success.html.erb +5 -6
- data/app/views/catalog/suggest.html.erb +3 -0
- data/app/views/layouts/blacklight/base.html.erb +19 -9
- data/app/views/record_mailer/email_record.text.erb +4 -3
- data/app/views/record_mailer/sms_record.text.erb +4 -4
- data/app/views/search_history/index.html.erb +6 -2
- data/app/views/shared/_header_navbar.html.erb +1 -22
- data/app/views/shared/_modal.html.erb +3 -3
- data/blacklight.gemspec +8 -10
- data/config/importmap.rb +3 -0
- data/config/locales/blacklight.ar.yml +209 -233
- data/config/locales/blacklight.ca.yml +0 -7
- data/config/locales/blacklight.de.yml +197 -216
- data/config/locales/blacklight.en.yml +2 -7
- data/config/locales/blacklight.es.yml +196 -216
- data/config/locales/blacklight.fr.yml +196 -220
- data/config/locales/blacklight.hu.yml +193 -213
- data/config/locales/blacklight.it.yml +197 -216
- data/config/locales/blacklight.nl.yml +193 -213
- data/config/locales/blacklight.pt-BR.yml +195 -216
- data/config/locales/blacklight.sq.yml +193 -213
- data/config/locales/blacklight.zh.yml +194 -214
- 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 +1 -0
- data/lib/blacklight/abstract_repository.rb +1 -0
- 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/session_tracking_config.rb +45 -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 +16 -10
- data/lib/blacklight/configuration.rb +322 -341
- data/lib/blacklight/engine.rb +13 -15
- data/lib/blacklight/exceptions.rb +2 -2
- data/lib/blacklight/nested_open_struct_with_hash_access.rb +6 -12
- data/lib/blacklight/open_struct_with_hash_access.rb +19 -17
- data/lib/blacklight/parameters.rb +7 -21
- data/lib/blacklight/routes/exportable.rb +1 -0
- data/lib/blacklight/routes/searchable.rb +3 -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 +1 -0
- data/lib/blacklight/solr/request.rb +3 -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 +4 -3
- data/lib/blacklight/solr/search_builder_behavior.rb +16 -32
- data/lib/blacklight/solr.rb +1 -0
- data/lib/blacklight/version.rb +1 -0
- data/lib/blacklight.rb +8 -11
- data/lib/generators/blacklight/assets/importmap_generator.rb +56 -0
- data/lib/generators/blacklight/assets/propshaft_generator.rb +34 -0
- data/lib/generators/blacklight/assets/sprockets_generator.rb +68 -0
- data/lib/generators/blacklight/assets_generator.rb +14 -88
- data/lib/generators/blacklight/controller_generator.rb +3 -2
- data/lib/generators/blacklight/document_generator.rb +1 -0
- data/lib/generators/blacklight/install_generator.rb +7 -4
- 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 +37 -7
- data/lib/generators/blacklight/templates/solr_document.rb +1 -7
- data/lib/generators/blacklight/test_support_generator.rb +4 -2
- data/lib/generators/blacklight/user_generator.rb +7 -9
- data/lib/railties/blacklight.rake +2 -3
- data/package.json +10 -10
- data/rollup.config.js +37 -0
- data/spec/components/blacklight/constraints_component_spec.rb +17 -13
- data/spec/components/blacklight/document_component_spec.rb +74 -33
- data/spec/components/blacklight/facet_component_spec.rb +2 -7
- 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 +9 -7
- data/spec/components/blacklight/header_component_spec.rb +20 -0
- data/spec/components/blacklight/response/view_type_component_spec.rb +83 -0
- data/spec/components/blacklight/search_bar_component_spec.rb +1 -1
- data/spec/components/blacklight/search_context/server_applied_params_component_spec.rb +29 -0
- data/spec/components/blacklight/search_context/server_item_pagination_component_spec.rb +51 -0
- 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 +24 -126
- data/spec/features/autocomplete_spec.rb +1 -1
- data/spec/features/axe_spec.rb +1 -1
- data/spec/features/bookmarks_spec.rb +1 -1
- data/spec/features/component_template_override_spec.rb +8 -0
- data/spec/features/facets_spec.rb +1 -1
- data/spec/features/modal_spec.rb +12 -0
- data/spec/features/search_context_spec.rb +4 -10
- data/spec/features/search_results_spec.rb +0 -33
- data/spec/features/sitelinks_search_box_spec.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/render_partials_helper_behavior_spec.rb +5 -7
- data/spec/helpers/blacklight/url_helper_behavior_spec.rb +10 -132
- data/spec/helpers/blacklight_helper_spec.rb +3 -298
- data/spec/helpers/catalog_helper_spec.rb +60 -115
- data/spec/i18n_spec.rb +1 -0
- data/spec/integration/generators/blacklight/solr_generator_spec.rb +1 -1
- 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/session_tracking_config_spec.rb +38 -0
- data/spec/lib/blacklight/configuration/view_config_spec.rb +1 -1
- data/spec/lib/blacklight/open_struct_with_hash_access_spec.rb +4 -4
- 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 +41 -53
- data/spec/models/blacklight/document/active_model_shim_spec.rb +2 -2
- data/spec/models/blacklight/icon_spec.rb +29 -15
- data/spec/models/blacklight/search_builder_spec.rb +12 -12
- data/spec/models/blacklight/solr/document_spec.rb +3 -3
- data/spec/models/blacklight/solr/request_spec.rb +2 -2
- 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 +32 -23
- data/spec/models/blacklight/user_spec.rb +22 -0
- data/spec/models/record_mailer_spec.rb +36 -23
- data/spec/models/solr_document_spec.rb +21 -3
- data/spec/presenters/blacklight/clause_presenter_spec.rb +1 -0
- data/spec/presenters/blacklight/document_presenter_spec.rb +3 -2
- 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 +2 -16
- data/spec/presenters/blacklight/index_presenter_spec.rb +3 -4
- 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 +11 -25
- data/spec/presenters/pipeline_spec.rb +13 -2
- 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 +6 -1
- data/spec/services/blacklight/search_service_spec.rb +31 -68
- data/spec/spec_helper.rb +4 -3
- 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_test_helpers.rb +21 -0
- data/spec/test_app_templates/Gemfile.extra +4 -0
- data/spec/test_app_templates/lib/generators/test_app_generator.rb +17 -2
- data/spec/views/catalog/_document.html.erb_spec.rb +23 -33
- data/spec/views/catalog/_document_list.html.erb_spec.rb +7 -2
- data/spec/views/catalog/_facet_index_navigation.html.erb_spec.rb +1 -1
- 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 +7 -54
- 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 +18 -11
- data/spec/views/catalog/index.html.erb_spec.rb +5 -6
- data/spec/views/catalog/index.json.jbuilder_spec.rb +3 -3
- 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 +7 -5
- metadata +95 -123
- data/.babelrc +0 -11
- 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_context_component.rb +0 -34
- data/app/controllers/concerns/blacklight/base.rb +0 -7
- 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/models/concerns/blacklight/document/email.rb +0 -26
- data/app/models/concerns/blacklight/document/sms.rb +0 -24
- 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/controllers/blacklight/facet_spec.rb +0 -33
- data/spec/controllers/blacklight/search_fields_spec.rb +0 -62
- data/spec/features/sitelinks_search_box.rb +0 -13
- 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 -108
- data/spec/helpers/blacklight/suggest_helper_behavior_spec.rb +0 -48
- data/spec/lib/blacklight/engine_spec.rb +0 -41
- data/spec/models/blacklight/document/email_spec.rb +0 -57
- data/spec/models/blacklight/document/sms_spec.rb +0 -58
- data/spec/presenters/blacklight/search_bar_presenter_spec.rb +0 -94
- data/spec/support/view_component_capybara_test_helpers.rb +0 -8
- 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
- /data/app/components/blacklight/{search_context_component.html.erb → search_context/server_item_pagination_component.html.erb} +0 -0
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/*global Blacklight */
|
|
2
|
-
|
|
3
|
-
'use strict';
|
|
4
|
-
|
|
5
|
-
Blacklight.doResizeFacetLabelsAndCounts = function() {
|
|
6
|
-
// adjust width of facet columns to fit their contents
|
|
7
|
-
function longer (a,b) { return b.textContent.length - a.textContent.length }
|
|
8
|
-
|
|
9
|
-
document.querySelectorAll('.facet-values, .pivot-facet').forEach(function(elem){
|
|
10
|
-
const nodes = elem.querySelectorAll('.facet-count')
|
|
11
|
-
// TODO: when we drop ie11 support, this can become the spread operator:
|
|
12
|
-
const longest = Array.from(nodes).sort(longer)[0]
|
|
13
|
-
if (longest && longest.textContent) {
|
|
14
|
-
const width = longest.textContent.length + 1 + 'ch'
|
|
15
|
-
elem.querySelector('.facet-count').style.width = width
|
|
16
|
-
}
|
|
17
|
-
})
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
Blacklight.onLoad(function() {
|
|
21
|
-
Blacklight.doResizeFacetLabelsAndCounts()
|
|
22
|
-
})
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
# This module provides the body of an email export based on the document's semantic values
|
|
3
|
-
module Blacklight::Document::Email
|
|
4
|
-
# Return a text string that will be the body of the email
|
|
5
|
-
def to_email_text(config = nil)
|
|
6
|
-
body = []
|
|
7
|
-
|
|
8
|
-
if config
|
|
9
|
-
body = config.email_fields.map do |name, field|
|
|
10
|
-
values = [self[name]].flatten
|
|
11
|
-
"#{field.label} #{values.join(' ')}" if self[name].present?
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
# Use to_semantic_values for backwards compatibility
|
|
16
|
-
if body.empty?
|
|
17
|
-
semantics = to_semantic_values
|
|
18
|
-
body << I18n.t('blacklight.email.text.title', value: semantics[:title].join(" ")) if semantics[:title].present?
|
|
19
|
-
body << I18n.t('blacklight.email.text.author', value: semantics[:author].join(" ")) if semantics[:author].present?
|
|
20
|
-
body << I18n.t('blacklight.email.text.format', value: semantics[:format].join(" ")) if semantics[:format].present?
|
|
21
|
-
body << I18n.t('blacklight.email.text.language', value: semantics[:language].join(" ")) if semantics[:language].present?
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
return body.join("\n") unless body.empty?
|
|
25
|
-
end
|
|
26
|
-
end
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
# This module provides the body of an email export based on the document's semantic values
|
|
3
|
-
module Blacklight::Document::Sms
|
|
4
|
-
# Return a text string that will be the body of the email
|
|
5
|
-
def to_sms_text(config = nil)
|
|
6
|
-
body = []
|
|
7
|
-
|
|
8
|
-
if config
|
|
9
|
-
body = config.sms_fields.map do |name, field|
|
|
10
|
-
values = [self[name]].flatten
|
|
11
|
-
"#{field.label} #{values.first}" if self[name].present?
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
# Use to_semantic_values for backwards compatibility
|
|
16
|
-
if body.empty?
|
|
17
|
-
semantics = to_semantic_values
|
|
18
|
-
body << I18n.t('blacklight.sms.text.title', value: semantics[:title].first) if semantics[:title].present?
|
|
19
|
-
body << I18n.t('blacklight.sms.text.author', value: semantics[:author].first) if semantics[:author].present?
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
return body.join unless body.empty?
|
|
23
|
-
end
|
|
24
|
-
end
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Blacklight
|
|
4
|
-
class SearchBarPresenter
|
|
5
|
-
extend Deprecation
|
|
6
|
-
attr_reader :configuration, :view_context, :controller
|
|
7
|
-
|
|
8
|
-
# Set the partial this presenter draws
|
|
9
|
-
class_attribute :partial
|
|
10
|
-
self.partial = 'catalog/search_form'
|
|
11
|
-
|
|
12
|
-
def initialize(controller, configuration = view_context.blacklight_config)
|
|
13
|
-
@controller = controller
|
|
14
|
-
@view_context = controller.view_context
|
|
15
|
-
@configuration = configuration
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
def render
|
|
19
|
-
view_context.render partial, presenter: self
|
|
20
|
-
end
|
|
21
|
-
deprecation_deprecate render: "The SearchBarPresenter has been deprecated. Call `render Blacklight::SearchBarComponent.new' instead"
|
|
22
|
-
|
|
23
|
-
##
|
|
24
|
-
# @return [Boolean] should autocomplete be enabled in the UI
|
|
25
|
-
def autocomplete_enabled?
|
|
26
|
-
configuration.autocomplete_enabled.present? &&
|
|
27
|
-
configuration.autocomplete_path.present?
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
##
|
|
31
|
-
# If no search parameters have been given, we should
|
|
32
|
-
# auto-focus the user's cursor into the searchbox
|
|
33
|
-
#
|
|
34
|
-
# @return [Boolean]
|
|
35
|
-
def autofocus?
|
|
36
|
-
configuration.enable_search_bar_autofocus.present? &&
|
|
37
|
-
configuration.enable_search_bar_autofocus &&
|
|
38
|
-
controller.is_a?(Blacklight::Catalog) &&
|
|
39
|
-
controller.action_name == "index" &&
|
|
40
|
-
!controller.has_search_parameters?
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
def advanced_search_enabled?
|
|
44
|
-
configuration.advanced_search.enabled
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
end
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
<% # local params:
|
|
2
|
-
# label
|
|
3
|
-
# value
|
|
4
|
-
# options =>
|
|
5
|
-
# :remove => url for a remove constraint link
|
|
6
|
-
# :classes => array of classes to add to container span
|
|
7
|
-
options ||= {}
|
|
8
|
-
%>
|
|
9
|
-
|
|
10
|
-
<%= render(Blacklight::ConstraintLayoutComponent.new(
|
|
11
|
-
classes: options[:classes],
|
|
12
|
-
label: label,
|
|
13
|
-
value: value,
|
|
14
|
-
remove_path: options[:remove])) %>
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
<%= link_to document_action_label(document_action_config.key, document_action_config),
|
|
2
|
-
document_action_path(document_action_config, (local_assigns.has_key?(:url_opts) ? url_opts : {}).merge(({id: document} if document) || {})),
|
|
3
|
-
id: document_action_config.fetch(:id, "#{document_action_config.key}Link"),
|
|
4
|
-
class: 'nav-link',
|
|
5
|
-
data: {}.merge(({ blacklight_modal: "trigger" } if document_action_config.modal != false) || {}) %>
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
<%= render (blacklight_config&.view_config(document_index_view_type)&.facet_group_component || Blacklight::Response::FacetGroupComponent).new(
|
|
2
|
-
response: @response,
|
|
3
|
-
id: groupname,
|
|
4
|
-
fields: facet_field_names(groupname),
|
|
5
|
-
title: groupname.present? ? t("blacklight.search.facets-#{groupname}.title") : t('blacklight.search.facets.title')) %>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<%= render(Blacklight::DocumentMetadataComponent.new(fields: document_presenter(document).field_presenters)) %>
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
<%# header bar for doc items in index view -%>
|
|
2
|
-
<header class="documentHeader row">
|
|
3
|
-
<%# main title container for doc partial view
|
|
4
|
-
How many bootstrap columns need to be reserved
|
|
5
|
-
for bookmarks control depends on size.
|
|
6
|
-
-%>
|
|
7
|
-
<% document_actions = capture do %>
|
|
8
|
-
<% # bookmark functions for items/docs -%>
|
|
9
|
-
<%= render_index_doc_actions document, wrapping_class: "index-document-functions col-sm-3 col-lg-2" %>
|
|
10
|
-
<% end %>
|
|
11
|
-
|
|
12
|
-
<h3 class="index_title document-title-heading <%= document_actions.present? ? "col-sm-9 col-lg-10" : "col-md-12" %>">
|
|
13
|
-
<% if counter = document_counter_with_offset(document_counter) %>
|
|
14
|
-
<span class="document-counter">
|
|
15
|
-
<%= t('blacklight.search.documents.counter', counter: counter) %>
|
|
16
|
-
</span>
|
|
17
|
-
<% end %>
|
|
18
|
-
<%= link_to_document document, counter: counter %>
|
|
19
|
-
</h3>
|
|
20
|
-
|
|
21
|
-
<%= document_actions %>
|
|
22
|
-
</header>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<%= render Blacklight::Document::ThumbnailComponent.new(presenter: document_presenter(document), counter: document_counter_with_offset(document_counter)) -%>
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Blacklight
|
|
4
|
-
module Deprecations
|
|
5
|
-
module EngineConfiguration
|
|
6
|
-
# rubocop:disable Style/RedundantSelf, Style/HashSyntax
|
|
7
|
-
# @deprecated
|
|
8
|
-
def bookmarks_http_method
|
|
9
|
-
self.blacklight.bookmarks_http_method
|
|
10
|
-
end
|
|
11
|
-
deprecation_deprecate bookmarks_http_method: 'Moved to `blacklight.bookmarks_http_method`'
|
|
12
|
-
|
|
13
|
-
# @deprecated
|
|
14
|
-
def bookmarks_http_method=(val)
|
|
15
|
-
self.blacklight.bookmarks_http_method = val
|
|
16
|
-
end
|
|
17
|
-
deprecation_deprecate :'bookmarks_http_method=' => 'Moved to `blacklight.bookmarks_http_method=`'
|
|
18
|
-
|
|
19
|
-
# @deprecated
|
|
20
|
-
def email_regexp
|
|
21
|
-
self.blacklight.email_regexp
|
|
22
|
-
end
|
|
23
|
-
deprecation_deprecate email_regexp: 'Moved to `blacklight.email_regexp`'
|
|
24
|
-
|
|
25
|
-
# @deprecated
|
|
26
|
-
def email_regexp=(val)
|
|
27
|
-
self.blacklight.email_regexp = val
|
|
28
|
-
end
|
|
29
|
-
deprecation_deprecate :'email_regexp=' => 'Moved to `blacklight.email_regexp=`'
|
|
30
|
-
|
|
31
|
-
# @deprecated
|
|
32
|
-
def facet_missing_param
|
|
33
|
-
self.blacklight.facet_missing_param
|
|
34
|
-
end
|
|
35
|
-
deprecation_deprecate facet_missing_param: 'Moved to `blacklight.facet_missing_param`'
|
|
36
|
-
|
|
37
|
-
# @deprecated
|
|
38
|
-
def facet_missing_param=(val)
|
|
39
|
-
self.blacklight.facet_missing_param = val
|
|
40
|
-
end
|
|
41
|
-
deprecation_deprecate :'facet_missing_param=' => 'Moved to `blacklight.facet_missing_param=`'
|
|
42
|
-
|
|
43
|
-
# @deprecated
|
|
44
|
-
def sms_mappings
|
|
45
|
-
self.blacklight.sms_mappings
|
|
46
|
-
end
|
|
47
|
-
deprecation_deprecate sms_mappings: 'Moved to `blacklight.sms_mappings`'
|
|
48
|
-
|
|
49
|
-
# @deprecated
|
|
50
|
-
def sms_mappings=(val)
|
|
51
|
-
self.blacklight.sms_mappings = val
|
|
52
|
-
end
|
|
53
|
-
deprecation_deprecate :'sms_mappings=' => 'Moved to `blacklight.sms_mappings=`'
|
|
54
|
-
# rubocop:enable Style/RedundantSelf, Style/HashSyntax
|
|
55
|
-
|
|
56
|
-
def self.deprecate_in(object)
|
|
57
|
-
class << object
|
|
58
|
-
extend Deprecation
|
|
59
|
-
self.deprecation_horizon = 'blacklight 8.0'
|
|
60
|
-
|
|
61
|
-
include Blacklight::Deprecations::EngineConfiguration
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
end
|
|
65
|
-
end
|
|
66
|
-
end
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Blacklight
|
|
4
|
-
module Deprecations
|
|
5
|
-
module SearchStateNormalization
|
|
6
|
-
extend ActiveSupport::Concern
|
|
7
|
-
|
|
8
|
-
class_methods do
|
|
9
|
-
def facet_params_need_normalization(facet_params)
|
|
10
|
-
Deprecation.warn(self, 'Calling `facet_params_need_normalization` on the Blacklight::SearchState ' \
|
|
11
|
-
'class is deprecated and will be removed in Blacklight 8. Delegate to #needs_normalization?(value_params) on the ' \
|
|
12
|
-
'filter fields of the search state object.')
|
|
13
|
-
|
|
14
|
-
facet_params.is_a?(Hash) && facet_params.values.any? { |x| x.is_a?(Hash) }
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def normalize_facet_params(facet_params)
|
|
18
|
-
Deprecation.warn(self, 'Calling `normalize_facet_params` on the Blacklight::SearchState ' \
|
|
19
|
-
'class is deprecated and will be removed in Blacklight 8. Delegate to #normalize(value_params) on the ' \
|
|
20
|
-
'filter fields of the search state object.')
|
|
21
|
-
|
|
22
|
-
facet_params.transform_values { |value| value.is_a?(Hash) ? value.values : value }
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def normalize_params(untrusted_params = {})
|
|
26
|
-
Deprecation.warn(self, 'Calling `normalize_params` on the Blacklight::SearchState ' \
|
|
27
|
-
'class is deprecated and will be removed in Blacklight 8. Call #normalize_params on the ' \
|
|
28
|
-
'search state object.')
|
|
29
|
-
params = untrusted_params
|
|
30
|
-
|
|
31
|
-
if params.respond_to?(:to_unsafe_h)
|
|
32
|
-
# This is the typical (not-ActionView::TestCase) code path.
|
|
33
|
-
params = params.to_unsafe_h
|
|
34
|
-
# In Rails 5 to_unsafe_h returns a HashWithIndifferentAccess, in Rails 4 it returns Hash
|
|
35
|
-
params = params.with_indifferent_access if params.instance_of? Hash
|
|
36
|
-
elsif params.is_a? Hash
|
|
37
|
-
# This is an ActionView::TestCase workaround for Rails 4.2.
|
|
38
|
-
params = params.dup.with_indifferent_access
|
|
39
|
-
else
|
|
40
|
-
params = params.dup.to_h.with_indifferent_access
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
# Normalize facet parameters mangled by facebook
|
|
44
|
-
params[:f] = normalize_facet_params(params[:f]) if facet_params_need_normalization(params[:f])
|
|
45
|
-
params[:f_inclusive] = normalize_facet_params(params[:f_inclusive]) if facet_params_need_normalization(params[:f_inclusive])
|
|
46
|
-
|
|
47
|
-
params
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
end
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
RSpec.describe Blacklight::Facet do
|
|
4
|
-
subject do
|
|
5
|
-
Class.new do
|
|
6
|
-
include Blacklight::Facet
|
|
7
|
-
attr_reader :blacklight_config
|
|
8
|
-
|
|
9
|
-
def initialize blacklight_config
|
|
10
|
-
@blacklight_config = blacklight_config
|
|
11
|
-
end
|
|
12
|
-
end.new(blacklight_config)
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
let(:blacklight_config) { Blacklight::Configuration.new }
|
|
16
|
-
|
|
17
|
-
describe "#facet_configuration_for_field" do
|
|
18
|
-
it "looks up fields by key" do
|
|
19
|
-
blacklight_config.add_facet_field 'a'
|
|
20
|
-
expect(subject.facet_configuration_for_field('a')).to eq blacklight_config.facet_fields['a']
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
it "looks up fields by field name" do
|
|
24
|
-
blacklight_config.add_facet_field 'a', field: 'b'
|
|
25
|
-
expect(subject.facet_configuration_for_field('b')).to eq blacklight_config.facet_fields['a']
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
it "supports both strings and symbols" do
|
|
29
|
-
blacklight_config.add_facet_field 'a', field: :b
|
|
30
|
-
expect(subject.facet_configuration_for_field('b')).to eq blacklight_config.facet_fields['a']
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
RSpec.describe Blacklight::SearchFields do
|
|
4
|
-
around { |test| Deprecation.silence(described_class) { test.call } }
|
|
5
|
-
|
|
6
|
-
class MockConfig
|
|
7
|
-
include Blacklight::SearchFields
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
before(:all) do
|
|
11
|
-
@config = Blacklight::Configuration.new do |config|
|
|
12
|
-
config.default_solr_params = { qt: 'search' }
|
|
13
|
-
|
|
14
|
-
config.add_search_field 'all_fields', label: 'All Fields'
|
|
15
|
-
config.add_search_field 'title', qt: 'title_search'
|
|
16
|
-
config.add_search_field 'author', qt: 'author_search'
|
|
17
|
-
config.add_search_field 'subject', qt: 'subject_search'
|
|
18
|
-
config.add_search_field 'no_display', qt: 'something', include_in_simple_select: false
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
before do
|
|
23
|
-
@search_field_obj = MockConfig.new
|
|
24
|
-
allow(@search_field_obj).to receive(:blacklight_config).and_return(@config)
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
it "returns search field list with calculated :label when needed" do
|
|
28
|
-
@search_field_obj.search_field_list.each do |hash|
|
|
29
|
-
expect(hash.label).not_to be_blank
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
describe "for unspecified :key" do
|
|
34
|
-
before do
|
|
35
|
-
@bad_config = MockConfig.new
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
it "raises exception on #search_field_list" do
|
|
39
|
-
expect do
|
|
40
|
-
allow(@bad_config).to receive(:blacklight_config).and_return(Blacklight::Configuration.new do |config|
|
|
41
|
-
config.add_search_field label: 'All Fields', qt: 'all_fields'
|
|
42
|
-
config.add_search_field 'title', qt: 'title_search'
|
|
43
|
-
end)
|
|
44
|
-
end.to raise_error ArgumentError
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
describe "for duplicate keys" do
|
|
49
|
-
before do
|
|
50
|
-
@bad_config = MockConfig.new
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
it "raises on #search_field_list" do
|
|
54
|
-
expect do
|
|
55
|
-
allow(@bad_config).to receive(:blacklight_config).and_return(Blacklight::Configuration.new do |config|
|
|
56
|
-
config.add_search_field 'my_key', label: 'All Fields'
|
|
57
|
-
config.add_search_field 'my_key', label: 'title'
|
|
58
|
-
end)
|
|
59
|
-
end.to raise_error RuntimeError
|
|
60
|
-
end
|
|
61
|
-
end
|
|
62
|
-
end
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
describe 'Sitelinks search box' do
|
|
4
|
-
it 'is home page' do
|
|
5
|
-
visit root_path
|
|
6
|
-
expect(page).to have_css 'script[type="application/ld+json"]'
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
it 'on search page' do
|
|
10
|
-
visit search_catalog_path q: 'book'
|
|
11
|
-
expect(page).not_to have_css 'script[type="application/ld+json"]'
|
|
12
|
-
end
|
|
13
|
-
end
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
RSpec.describe Blacklight::HashAsHiddenFieldsHelperBehavior do
|
|
4
|
-
around { |test| Deprecation.silence(described_class) { test.call } }
|
|
5
|
-
|
|
6
|
-
let(:params) do
|
|
7
|
-
{ q: "query",
|
|
8
|
-
search_field: "search_field",
|
|
9
|
-
per_page: 10,
|
|
10
|
-
page: 5,
|
|
11
|
-
extra_arbitrary_key: "arbitrary_value",
|
|
12
|
-
f: { field1: %w[a b], field2: ["z"] } }
|
|
13
|
-
end
|
|
14
|
-
let(:generated) { helper.render_hash_as_hidden_fields(params) }
|
|
15
|
-
|
|
16
|
-
it "converts a hash with nested complex data to Rails-style hidden form fields" do
|
|
17
|
-
allow(Deprecation).to receive(:warn)
|
|
18
|
-
expect(generated).to have_selector("input[type='hidden'][name='q'][value='query']", visible: false)
|
|
19
|
-
expect(generated).to have_selector("input[type='hidden'][name='per_page'][value='10']", visible: false)
|
|
20
|
-
expect(generated).to have_selector("input[type='hidden'][name='page'][value='5']", visible: false)
|
|
21
|
-
expect(generated).to have_selector("input[type='hidden'][name='extra_arbitrary_key'][value='arbitrary_value']", visible: false)
|
|
22
|
-
expect(generated).to have_selector("input[type='hidden'][name='f[field2][]'][value='z']", visible: false)
|
|
23
|
-
expect(generated).to have_selector("input[type='hidden'][name='f[field1][]'][value='a']", visible: false)
|
|
24
|
-
expect(generated).to have_selector("input[type='hidden'][name='f[field1][]'][value='b']", visible: false)
|
|
25
|
-
end
|
|
26
|
-
end
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
RSpec.describe Blacklight::RenderConstraintsHelperBehavior do
|
|
4
|
-
around { |test| Deprecation.silence(described_class) { test.call } }
|
|
5
|
-
|
|
6
|
-
let(:config) do
|
|
7
|
-
Blacklight::Configuration.new do |config|
|
|
8
|
-
config.add_facet_field 'type'
|
|
9
|
-
config.add_search_field 'title'
|
|
10
|
-
end
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
before do
|
|
14
|
-
# the helper methods below infer paths from the current route
|
|
15
|
-
controller.request.path_parameters[:controller] = 'catalog'
|
|
16
|
-
allow(helper).to receive(:search_action_path) do |*args|
|
|
17
|
-
search_catalog_path *args
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
allow(helper).to receive(:blacklight_config).and_return(config)
|
|
21
|
-
allow(controller).to receive(:search_state_class).and_return(Blacklight::SearchState)
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
describe '#render_constraints_query' do
|
|
25
|
-
subject { helper.render_constraints_query(params) }
|
|
26
|
-
|
|
27
|
-
let(:my_engine) { double("Engine") }
|
|
28
|
-
let(:params) { ActionController::Parameters.new(q: 'foobar', f: { type: 'journal' }) }
|
|
29
|
-
|
|
30
|
-
it "has a link relative to the current url" do
|
|
31
|
-
expect(subject).to have_link 'Remove constraint', href: '/catalog?f%5Btype%5D%5B%5D=journal'
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
describe '#render_constraints_clauses' do
|
|
36
|
-
subject { helper.render_constraints_clauses(params) }
|
|
37
|
-
|
|
38
|
-
let(:my_engine) { double("Engine") }
|
|
39
|
-
let(:params) { ActionController::Parameters.new(clause: { "0": { field: 'title', query: 'nature' } }, f: { type: 'journal' }) }
|
|
40
|
-
|
|
41
|
-
it 'renders the clause constraint' do
|
|
42
|
-
expect(subject).to have_selector '.constraint-value', text: /Title\s+nature/
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
it "has a link relative to the current url" do
|
|
46
|
-
expect(subject).to have_link 'Remove constraint Title: nature', href: '/catalog?f%5Btype%5D%5B%5D=journal'
|
|
47
|
-
end
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
describe '#render_filter_element' do
|
|
51
|
-
subject { helper.render_filter_element('type', ['journal'], path) }
|
|
52
|
-
|
|
53
|
-
before do
|
|
54
|
-
allow(helper).to receive(:blacklight_config).and_return(config)
|
|
55
|
-
expect(helper).to receive(:facet_field_label).with('type').and_return("Item Type")
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
let(:params) { ActionController::Parameters.new q: 'biz' }
|
|
59
|
-
let(:path) { Blacklight::SearchState.new(params, config, controller) }
|
|
60
|
-
|
|
61
|
-
it "has a link relative to the current url" do
|
|
62
|
-
expect(subject).to have_link "Remove constraint Item Type: journal", href: "/catalog?q=biz"
|
|
63
|
-
expect(subject).to have_selector ".filter-name", text: 'Item Type'
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
context 'with string values' do
|
|
67
|
-
subject { helper.render_filter_element('type', 'journal', path) }
|
|
68
|
-
|
|
69
|
-
it "handles string values gracefully" do
|
|
70
|
-
expect(subject).to have_link "Remove constraint Item Type: journal", href: "/catalog?q=biz"
|
|
71
|
-
end
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
context 'with multivalued facets' do
|
|
75
|
-
subject { helper.render_filter_element('type', [%w[journal book]], path) }
|
|
76
|
-
|
|
77
|
-
it "handles such values gracefully" do
|
|
78
|
-
expect(subject).to have_link "Remove constraint Item Type: journal OR book", href: "/catalog?q=biz"
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
describe "#render_constraints_filters" do
|
|
84
|
-
subject { helper.render_constraints_filters(params) }
|
|
85
|
-
|
|
86
|
-
let(:params) { ActionController::Parameters.new f: { 'type' => [''] } }
|
|
87
|
-
|
|
88
|
-
it "renders nothing for empty facet limit param" do
|
|
89
|
-
expect(subject).to be_blank
|
|
90
|
-
end
|
|
91
|
-
end
|
|
92
|
-
end
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
RSpec.describe Blacklight::SearchHistoryConstraintsHelperBehavior do
|
|
4
|
-
around { |test| Deprecation.silence(described_class) { test.call } }
|
|
5
|
-
|
|
6
|
-
before(:all) do
|
|
7
|
-
@config = Blacklight::Configuration.new do |config|
|
|
8
|
-
config.add_search_field 'default_search_field', label: 'Default'
|
|
9
|
-
|
|
10
|
-
config.add_facet_field 'some_facet', label: 'Some'
|
|
11
|
-
config.add_facet_field 'other_facet', label: 'Other'
|
|
12
|
-
config.add_facet_field 'i18n_facet'
|
|
13
|
-
|
|
14
|
-
I18n.backend.store_translations(:en, blacklight: { search: { fields: { facet: { i18n_facet: 'English facet label' } } } })
|
|
15
|
-
I18n.backend.store_translations(:de, blacklight: { search: { fields: { facet: { i18n_facet: 'German facet label' } } } })
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
before do
|
|
20
|
-
allow(helper).to receive(:blacklight_config).and_return(@config)
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
describe "render_search_to_s_*" do
|
|
24
|
-
describe "render_search_to_s_element" do
|
|
25
|
-
it "renders basic element" do
|
|
26
|
-
response = helper.render_search_to_s_element("key", "value")
|
|
27
|
-
expect(response).to have_selector("span.constraint") do |span|
|
|
28
|
-
expect(span).to have_selector("span.filter-name", content: "key:")
|
|
29
|
-
expect(span).to have_selector("span.filter-value", content: "value")
|
|
30
|
-
end
|
|
31
|
-
expect(response).to be_html_safe
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
it "escapes them that need escaping" do
|
|
35
|
-
response = helper.render_search_to_s_element("key>", "value>")
|
|
36
|
-
expect(response).to have_selector("span.constraint") do |span|
|
|
37
|
-
expect(span).to have_selector("span.filter-name") do |s2|
|
|
38
|
-
# Note: nokogiri's gettext will unescape the inner html
|
|
39
|
-
# which seems to be what rspecs "contains" method calls on
|
|
40
|
-
# text nodes - thus the to_s inserted below.
|
|
41
|
-
expect(s2).to match(/key>:/)
|
|
42
|
-
end
|
|
43
|
-
expect(span).to have_selector("span.filter-value") do |s3|
|
|
44
|
-
expect(s3).to match(/value>/)
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
expect(response).to be_html_safe
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
it "does not escape with options set thus" do
|
|
51
|
-
response = helper.render_search_to_s_element("key>", "value>", escape_key: false, escape_value: false)
|
|
52
|
-
expect(response).to have_selector("span.constraint") do |span|
|
|
53
|
-
expect(span).to have_selector("span.filter-name", content: "key>:")
|
|
54
|
-
expect(span).to have_selector("span.filter-value", content: "value>")
|
|
55
|
-
end
|
|
56
|
-
expect(response).to be_html_safe
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
describe "render_search_to_s" do
|
|
61
|
-
before do
|
|
62
|
-
@params = { q: "history", f: { "some_facet" => %w[value1 value1], "other_facet" => ["other1"] } }
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
it "calls lesser methods" do
|
|
66
|
-
allow(helper).to receive(:blacklight_config).and_return(@config)
|
|
67
|
-
allow(helper).to receive(:default_search_field).and_return(Blacklight::Configuration::SearchField.new(key: 'default_search_field', display_label: 'Default'))
|
|
68
|
-
allow(helper).to receive(:label_for_search_field).with(nil).and_return('')
|
|
69
|
-
# API hooks expect this to be so
|
|
70
|
-
response = helper.render_search_to_s(@params)
|
|
71
|
-
|
|
72
|
-
expect(response).to include(helper.render_search_to_s_q(@params))
|
|
73
|
-
expect(response).to include(helper.render_search_to_s_filters(@params))
|
|
74
|
-
expect(response).to be_html_safe
|
|
75
|
-
end
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
describe "render_search_to_s_filters" do
|
|
79
|
-
it "renders a constraint for a selected facet in the config" do
|
|
80
|
-
response = helper.render_search_to_s_filters(f: { "some_facet" => %w[value1 value2] })
|
|
81
|
-
expect(response).to eq("<span class=\"constraint\"><span class=\"filter-name\">Some:</span><span class=\"filter-values\"><span class=\"filter-value\">value1</span><span class=\"filter-separator\"> and </span><span class=\"filter-value\">value2</span></span></span>")
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
it "renders a constraint for a selected facet not in the config" do
|
|
85
|
-
response = helper.render_search_to_s_filters(f: { "undefined_facet" => %w[value1 value2] })
|
|
86
|
-
expect(response).to eq("<span class=\"constraint\"><span class=\"filter-name\">#{'undefined_facet'.titleize}:</span><span class=\"filter-values\"><span class=\"filter-value\">value1</span><span class=\"filter-separator\"> and </span><span class=\"filter-value\">value2</span></span></span>")
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
context 'with I18n translations for selected facet' do
|
|
90
|
-
before do
|
|
91
|
-
@orig_locale = I18n.locale
|
|
92
|
-
end
|
|
93
|
-
|
|
94
|
-
after do
|
|
95
|
-
I18n.locale = @orig_locale
|
|
96
|
-
end
|
|
97
|
-
|
|
98
|
-
it 'renders the correct I18n label for a selected facet with I18n translations' do
|
|
99
|
-
{ en: 'English facet label', de: 'German facet label' }.each do |locale, label|
|
|
100
|
-
I18n.locale = locale
|
|
101
|
-
response = helper.render_search_to_s_filters(f: { 'i18n_facet' => %w[value1 value2] })
|
|
102
|
-
expect(response).to include(label)
|
|
103
|
-
end
|
|
104
|
-
end
|
|
105
|
-
end
|
|
106
|
-
end
|
|
107
|
-
end
|
|
108
|
-
end
|