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
@@ -4,7 +4,7 @@ xml.instruct! :xml, version: "1.0"
|
|
4
4
|
xml.rss(version: "2.0") {
|
5
5
|
xml.channel {
|
6
6
|
xml.title(t('blacklight.search.page_title.title', constraints: render_search_to_page_title(params), application_name: application_name))
|
7
|
-
xml.link(search_action_url(
|
7
|
+
xml.link(search_action_url(search_state.to_h.merge(only_path: false)))
|
8
8
|
xml.description(t('blacklight.search.page_title.title', constraints: render_search_to_page_title(params), application_name: application_name))
|
9
9
|
xml.language('en-us')
|
10
10
|
@response.documents.each_with_index do |document, document_counter|
|
@@ -8,5 +8,5 @@ xml.OpenSearchDescription(xmlns: 'http://a9.com/-/spec/opensearch/1.1/') {
|
|
8
8
|
xml.Contact
|
9
9
|
xml.Url type: 'text/html', method: 'get', template: "#{url_for controller: 'catalog', only_path: false}?q={searchTerms}&page={startPage?}"
|
10
10
|
xml.Url type: 'application/rss+xml', method: 'get', template: "#{url_for controller: 'catalog', only_path: false}.rss?q={searchTerms}&page={startPage?}"
|
11
|
-
xml.Url type: 'application/x-suggestions+json', method: 'get', template: "#{url_for controller: 'catalog',action: 'opensearch', format: 'json', only_path: false}?q={searchTerms}"
|
11
|
+
xml.Url type: 'application/x-suggestions+json', method: 'get', template: "#{url_for controller: 'catalog', action: 'opensearch', format: 'json', only_path: false}?q={searchTerms}"
|
12
12
|
}
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<%= render Blacklight::System::ModalComponent.new do |component| %>
|
2
|
-
<% component.
|
2
|
+
<% component.title { t('blacklight.sms.form.title') } %>
|
3
3
|
|
4
|
-
<% component.
|
4
|
+
<% component.body do %>
|
5
5
|
<%= render 'sms_form' %>
|
6
6
|
<% end %>
|
7
7
|
<% end %>
|
@@ -1,6 +1,5 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
<% end %>
|
1
|
+
<turbo-stream action="append" target="main-flashes">
|
2
|
+
<template>
|
3
|
+
<%= render '/shared/flash_msg' %>
|
4
|
+
</template>
|
5
|
+
</turbo-stream>
|
@@ -11,8 +11,9 @@
|
|
11
11
|
|
12
12
|
<li class="page-item <%= 'active' if page.current? %>">
|
13
13
|
<% if page.current? %>
|
14
|
-
<span class="page-link" aria-
|
14
|
+
<span class="page-link" aria-label="<%= t('views.pagination.aria.current_page', page: page_display) %>" aria-current="true"><%= page_display %></span>
|
15
15
|
<% else %>
|
16
16
|
<%= link_to page_display, url, :remote => remote, :rel => page.next? ? 'next' : page.prev? ? 'prev' : nil, class: 'page-link', aria: { label: t('views.pagination.aria.go_to_page', page: page_display) } %>
|
17
17
|
<% end %>
|
18
18
|
</li>
|
19
|
+
|
@@ -14,11 +14,22 @@
|
|
14
14
|
</script>
|
15
15
|
<%= opensearch_description_tag application_name, opensearch_catalog_url(format: 'xml') %>
|
16
16
|
<%= favicon_link_tag %>
|
17
|
-
<%= stylesheet_link_tag "application", media: "all", "data-turbo-track": "reload"
|
18
|
-
<%=
|
17
|
+
<%= stylesheet_link_tag "application", media: "all", "data-turbo-track": "reload" %>
|
18
|
+
<%= stylesheet_link_tag "https://ga.jspm.io/npm:dialog-polyfill@0.5.6/dist/dialog-polyfill.css" %>
|
19
|
+
<% if defined? Importmap %>
|
20
|
+
<%= javascript_importmap_tags %>
|
21
|
+
<% elsif defined? Propshaft %>
|
22
|
+
<%= javascript_include_tag "application", "data-turbo-track": "reload", defer: true %>
|
23
|
+
<% else %>
|
24
|
+
<%= javascript_include_tag "application", "data-turbo-track": "reload", defer: true %>
|
25
|
+
<%= javascript_include_tag "blacklight/blacklight", type: 'module' %>
|
26
|
+
<% end %>
|
19
27
|
|
20
28
|
<%= csrf_meta_tags %>
|
21
29
|
<%= content_for(:head) %>
|
30
|
+
<script type="module">
|
31
|
+
import githubAutoCompleteElement from 'https://cdn.skypack.dev/@github/auto-complete-element';
|
32
|
+
</script>
|
22
33
|
</head>
|
23
34
|
<body class="<%= render_body_class %>">
|
24
35
|
<nav id="skip-link" role="navigation" aria-label="<%= t('blacklight.skip_links.label') %>">
|
@@ -7,8 +7,12 @@
|
|
7
7
|
<% else %>
|
8
8
|
<%= link_to t('blacklight.search_history.clear.action_title'),
|
9
9
|
blacklight.clear_search_history_path,
|
10
|
-
method: :delete,
|
11
|
-
data: {
|
10
|
+
method: :delete, # for rails-ujs
|
11
|
+
data: {
|
12
|
+
confirm: t('blacklight.search_history.clear.action_confirm'), # for rails-ujs
|
13
|
+
turbo_confirm: t('blacklight.search_history.clear.action_confirm'),
|
14
|
+
turbo_method: :delete
|
15
|
+
},
|
12
16
|
class: 'btn btn-danger float-md-right float-md-end' %>
|
13
17
|
<h2 class='section-heading'><%= t('blacklight.search_history.recent') %></h2>
|
14
18
|
<table class="table table-striped search-history">
|
@@ -1,6 +1,6 @@
|
|
1
|
-
<
|
2
|
-
<div class="modal-dialog modal-lg"
|
1
|
+
<dialog id="blacklight-modal" class="modal" data-turbo="false">
|
2
|
+
<div class="modal-dialog modal-lg">
|
3
3
|
<div class="modal-content">
|
4
4
|
</div>
|
5
5
|
</div>
|
6
|
-
</
|
6
|
+
</dialog>
|
data/blacklight.gemspec
CHANGED
@@ -25,31 +25,27 @@ Gem::Specification.new do |s|
|
|
25
25
|
|
26
26
|
s.required_ruby_version = '>= 2.7'
|
27
27
|
|
28
|
-
s.add_dependency "rails", '>= 6.1', '< 8
|
28
|
+
s.add_dependency "rails", '>= 6.1', '< 8'
|
29
29
|
s.add_dependency "globalid"
|
30
30
|
s.add_dependency "jbuilder", '~> 2.7'
|
31
31
|
s.add_dependency "kaminari", ">= 0.15" # the pagination (page 1,2,3, etc..) of our search results
|
32
|
-
s.add_dependency "deprecation"
|
33
32
|
s.add_dependency "i18n", '>= 1.7.0' # added named parameters
|
34
33
|
s.add_dependency "ostruct", '>= 0.3.2'
|
35
|
-
s.add_dependency "view_component", '
|
36
|
-
s.add_dependency 'hashdiff'
|
37
|
-
s.add_dependency "zeitwerk"
|
34
|
+
s.add_dependency "view_component", '~> 2.66'
|
38
35
|
|
39
36
|
s.add_development_dependency "rsolr", ">= 1.0.6", "< 3" # Library for interacting with rSolr.
|
40
|
-
s.add_development_dependency "rspec-rails", "
|
37
|
+
s.add_development_dependency "rspec-rails", "~> 6.0"
|
41
38
|
s.add_development_dependency "rspec-collection_matchers", ">= 1.0"
|
42
39
|
s.add_development_dependency 'axe-core-rspec'
|
43
40
|
s.add_development_dependency "capybara", '~> 3'
|
41
|
+
s.add_development_dependency 'webdrivers'
|
44
42
|
s.add_development_dependency 'selenium-webdriver'
|
45
43
|
s.add_development_dependency 'engine_cart', '~> 2.1'
|
46
44
|
s.add_development_dependency "equivalent-xml"
|
47
45
|
s.add_development_dependency "simplecov"
|
48
|
-
s.add_development_dependency "rubocop", '~> 1.
|
49
|
-
s.add_development_dependency "rubocop-
|
50
|
-
s.add_development_dependency "rubocop-
|
51
|
-
s.add_development_dependency "rubocop-rspec", '~> 3.0'
|
52
|
-
s.add_development_dependency "rubocop-rspec_rails", '~> 2.30'
|
46
|
+
s.add_development_dependency "rubocop", '~> 1.0'
|
47
|
+
s.add_development_dependency "rubocop-rails"
|
48
|
+
s.add_development_dependency "rubocop-rspec"
|
53
49
|
s.add_development_dependency "i18n-tasks"
|
54
50
|
s.add_development_dependency "solr_wrapper"
|
55
51
|
end
|
data/config/importmap.rb
ADDED
@@ -154,7 +154,6 @@ ar:
|
|
154
154
|
search_constraints_header: 'قيود البحث'
|
155
155
|
search_results: 'نتائج البحث'
|
156
156
|
errors:
|
157
|
-
request_error: "معذرة، لم أفهم ما تبحث عنه."
|
158
157
|
invalid_solr_id: "معذرة! لقد طلبت سجلًا غير موجود."
|
159
158
|
per_page:
|
160
159
|
label: '%{count}<span class="sr-only visually-hidden"> لكل صفحة</span>'
|
@@ -144,7 +144,6 @@ ca:
|
|
144
144
|
search_constraints_header: 'Filtres de la cerca'
|
145
145
|
search_results: 'Resultats de la cerca'
|
146
146
|
errors:
|
147
|
-
request_error: "No ha estat possible entendre la cerca"
|
148
147
|
invalid_solr_id: "El registre que heu sol·licitat no existeix."
|
149
148
|
per_page:
|
150
149
|
label: '%{count}<span class="sr-only visually-hidden"> per pàgina</span>'
|
@@ -144,7 +144,6 @@ de:
|
|
144
144
|
search_constraints_header: 'Suchen'
|
145
145
|
search_results: 'Suchergebnisse'
|
146
146
|
errors:
|
147
|
-
request_error: "Entschuldigung, ich habe Ihre Suche nicht verstanden."
|
148
147
|
invalid_solr_id: "Entschuldigung, Sie haben einen nicht vorhandenen Datensatz angefordert."
|
149
148
|
per_page:
|
150
149
|
label: '%{count}<span class="sr-only visually-hidden"> pro Seite</span>'
|
@@ -144,7 +144,6 @@ en:
|
|
144
144
|
search_constraints_header: 'Search Constraints'
|
145
145
|
search_results: 'Search Results'
|
146
146
|
errors:
|
147
|
-
request_error: "Sorry, I don't understand your search."
|
148
147
|
invalid_solr_id: "Sorry, you have requested a record that doesn't exist."
|
149
148
|
per_page:
|
150
149
|
label: '%{count}<span class="sr-only visually-hidden"> per page</span>'
|
@@ -249,7 +248,6 @@ en:
|
|
249
248
|
more_options: More options
|
250
249
|
any_of: 'Any of:'
|
251
250
|
op:
|
252
|
-
label: search operator
|
253
251
|
must: all
|
254
252
|
should: any
|
255
253
|
page_title: Advanced search - %{application_name}
|
@@ -144,7 +144,6 @@ es:
|
|
144
144
|
search_constraints_header: 'Buscar'
|
145
145
|
search_results: 'Resultados de la búsqueda'
|
146
146
|
errors:
|
147
|
-
request_error: "Lo siento, no entiendo esta búsqueda"
|
148
147
|
invalid_solr_id: "Lo sentimos, usted ha solicitado un registro que no existe."
|
149
148
|
per_page:
|
150
149
|
label: '%{count}<span class="sr-only visually-hidden"> por página</span>'
|
@@ -147,7 +147,6 @@ fr:
|
|
147
147
|
search_constraints_header: 'Recherche'
|
148
148
|
search_results: 'Résultats de recherche'
|
149
149
|
errors:
|
150
|
-
request_error: "Pardon, nous n'avons pas compris votre recherche."
|
151
150
|
invalid_solr_id: "Vous avez demandé une notice qui n'existe pas."
|
152
151
|
per_page:
|
153
152
|
label: '%{count}<span class="sr-only visually-hidden"> par page</span>'
|
@@ -144,7 +144,6 @@ hu:
|
|
144
144
|
search_constraints_header: 'Keresés feltételei'
|
145
145
|
search_results: 'Keresés eredményei'
|
146
146
|
errors:
|
147
|
-
request_error: "Elnézést, nem tudom értelmezni a keresést."
|
148
147
|
invalid_solr_id: "Elnézést, de az Ön által kért rekord nem létezik."
|
149
148
|
per_page:
|
150
149
|
label: '%{count}<span class="sr-only visually-hidden"> oldalanként</span>'
|
@@ -144,7 +144,6 @@ it:
|
|
144
144
|
search_constraints_header: 'Ricerca'
|
145
145
|
search_results: 'Risultati della ricerca'
|
146
146
|
errors:
|
147
|
-
request_error: "La richiesta non è comprensibile."
|
148
147
|
invalid_solr_id: "Il numero di scheda richiesto non esiste."
|
149
148
|
per_page:
|
150
149
|
label: '%{count}<span class="sr-only visually-hidden"> per pagina</span>'
|
@@ -144,7 +144,6 @@ nl:
|
|
144
144
|
search_constraints_header: 'Zoek filters'
|
145
145
|
search_results: 'Zoek resultaten'
|
146
146
|
errors:
|
147
|
-
request_error: "Sorry, ik kon uw zoekopdracht niet begrijpen."
|
148
147
|
invalid_solr_id: "Sorry, u vroeg een onbestaande record op."
|
149
148
|
per_page:
|
150
149
|
label: '%{count}<span class="sr-only visually-hidden"> per pagina</span>'
|
@@ -145,7 +145,6 @@ pt-BR:
|
|
145
145
|
search_constraints_header: 'Busca'
|
146
146
|
search_results: 'Resultados da Busca'
|
147
147
|
errors:
|
148
|
-
request_error: "Desculpe, Eu não compreendi sua busca."
|
149
148
|
invalid_solr_id: "Desculpe, você solicitou um cadastro que não existe."
|
150
149
|
per_page:
|
151
150
|
label: '%{count}<span class="hide-text"> por página</span>'
|
@@ -144,7 +144,6 @@ sq:
|
|
144
144
|
search_constraints_header: 'Kufizimet e kërkimit'
|
145
145
|
search_results: 'Rezultatet e kërkimit'
|
146
146
|
errors:
|
147
|
-
request_error: "Na vjen keq, unë nuk e kuptoj kërkimin tuaj."
|
148
147
|
invalid_solr_id: "Na vjen keq, ju keni kërkuar një të dhënë që nuk ekziston."
|
149
148
|
per_page:
|
150
149
|
label: '%{count}<span class="sr-only visually-hidden"> për faqe</span>'
|
data/config/routes.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
Blacklight::Engine.routes.draw do
|
3
|
-
get "search_history",
|
4
|
-
delete "search_history/clear",
|
4
|
+
get "search_history", to: "search_history#index", as: "search_history"
|
5
|
+
delete "search_history/clear", to: "search_history#clear", as: "clear_search_history"
|
5
6
|
end
|
data/docker-compose.yml
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
version: "3.7"
|
2
|
+
|
1
3
|
services:
|
2
4
|
app:
|
3
5
|
build:
|
@@ -7,7 +9,7 @@ services:
|
|
7
9
|
- ALPINE_RUBY_VERSION
|
8
10
|
# mounting . is causing seg-fault on macosx
|
9
11
|
#volumes:
|
10
|
-
|
12
|
+
#- .:/app
|
11
13
|
depends_on:
|
12
14
|
- solr
|
13
15
|
ports:
|
@@ -15,7 +17,6 @@ services:
|
|
15
17
|
environment:
|
16
18
|
- SOLR_URL # Set via environment variable or use default defined in .env file
|
17
19
|
- RAILS_VERSION # Set via environment variable or use default defined in .env file
|
18
|
-
- VIEW_COMPONENT_VERSION # Set via environment variable or use default defined in .env file
|
19
20
|
- SOLR_ENV=docker-compose
|
20
21
|
- ENGINE_CART_RAILS_OPTIONS=--skip-git --skip-listen --skip-spring --skip-keeps --skip-action-cable --skip-coffee --skip-test --skip-solr
|
21
22
|
|
@@ -23,7 +24,6 @@ services:
|
|
23
24
|
environment:
|
24
25
|
- SOLR_PORT # Set via environment variable or use default defined in .env file
|
25
26
|
- SOLR_VERSION # Set via environment variable or use default defined in .env file
|
26
|
-
- SOLR_MODULES=analysis-extras
|
27
27
|
image: "solr:${SOLR_VERSION}"
|
28
28
|
volumes:
|
29
29
|
- $PWD/lib/generators/blacklight/templates/solr/conf:/opt/solr/conf
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module Blacklight
|
3
4
|
# Base class for Blacklight repository adapters
|
4
5
|
class AbstractRepository
|
@@ -34,12 +35,6 @@ module Blacklight
|
|
34
35
|
raise NotImplementedError
|
35
36
|
end
|
36
37
|
|
37
|
-
# Find multiple documents by their ids
|
38
|
-
# @param [Hash] _params query parameters
|
39
|
-
def find_many(params, **kwargs)
|
40
|
-
search(params, **kwargs)
|
41
|
-
end
|
42
|
-
|
43
38
|
##
|
44
39
|
# Execute a search query against a search index
|
45
40
|
# @param [Hash] _params query parameters
|
data/lib/blacklight/component.rb
CHANGED
@@ -3,20 +3,57 @@
|
|
3
3
|
module Blacklight
|
4
4
|
class Component < ViewComponent::Base
|
5
5
|
class << self
|
6
|
-
|
6
|
+
# Workaround for https://github.com/ViewComponent/view_component/issues/1565
|
7
|
+
def config
|
8
|
+
@config ||= ViewComponent::Config.defaults.merge(ViewComponent::Base.config)
|
9
|
+
end
|
7
10
|
|
8
|
-
|
9
|
-
|
11
|
+
# rubocop:disable Naming/MemoizedInstanceVariableName
|
12
|
+
def compiler
|
13
|
+
@__vc_compiler ||= EngineCompiler.new(self)
|
10
14
|
end
|
15
|
+
# rubocop:enable Naming/MemoizedInstanceVariableName
|
16
|
+
|
17
|
+
alias sidecar_files _sidecar_files unless ViewComponent::Base.respond_to? :sidecar_files
|
18
|
+
end
|
19
|
+
|
20
|
+
EXCLUDE_VARIABLES = [
|
21
|
+
:@lookup_context, :@view_renderer, :@view_flow, :@view_context,
|
22
|
+
:@tag_builder, :@current_template,
|
23
|
+
:@__vc_set_slots, :@__vc_original_view_context,
|
24
|
+
:@__vc_variant, :@__vc_content_evaluated,
|
25
|
+
:@__vc_render_in_block, :@__vc_content, :@__vc_helpers
|
26
|
+
].freeze
|
27
|
+
|
28
|
+
def inspect
|
29
|
+
# Exclude variables added by render_in
|
30
|
+
render_variables = instance_variables - EXCLUDE_VARIABLES
|
31
|
+
fields = render_variables.map { |ivar| "#{ivar}:#{instance_variable_get(ivar).inspect}" }.join(', ')
|
32
|
+
"#<#{self.class.name}:#{object_id} #{fields}>"
|
33
|
+
end
|
34
|
+
|
35
|
+
class EngineCompiler < ::ViewComponent::Compiler
|
36
|
+
# ViewComponent::Compiler locates and caches templates from sidecar files to the component source file.
|
37
|
+
# While this is sensible in a Rails application, it prevents component templates defined in an Engine
|
38
|
+
# from being overridden by an installing application without subclassing the component, which may also
|
39
|
+
# require modifying any partials rendering the component. This subclass of compiler overrides the template
|
40
|
+
# location algorithm to take the sidecar file names from the Engine, but look to see if a file of the
|
41
|
+
# same name existing in the installing application (ie, under Rails.root). If the latter exists, this
|
42
|
+
# compiler will cache that template instead of the engine-defined file; if not, the compiler will fall
|
43
|
+
# back to the engine-defined file.
|
44
|
+
def templates
|
45
|
+
@templates ||= begin
|
46
|
+
extensions = ActionView::Template.template_handler_extensions
|
11
47
|
|
12
|
-
|
13
|
-
|
14
|
-
|
48
|
+
component_class.sidecar_files(extensions).each_with_object([]) do |path, memo|
|
49
|
+
pieces = File.basename(path).split(".")
|
50
|
+
app_path = "#{Rails.root}/#{path.slice(path.index(component_class.view_component_path)..-1)}"
|
15
51
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
52
|
+
memo << {
|
53
|
+
path: File.exist?(app_path) ? app_path : path,
|
54
|
+
variant: pieces.second.split("+").second&.to_sym,
|
55
|
+
handler: pieces.last
|
56
|
+
}
|
20
57
|
end
|
21
58
|
end
|
22
59
|
end
|
@@ -28,12 +28,12 @@ module Blacklight
|
|
28
28
|
return config if config == true || config == false
|
29
29
|
|
30
30
|
if_value = !config.respond_to?(:if) ||
|
31
|
-
|
32
|
-
|
31
|
+
config.if.nil? ||
|
32
|
+
evaluate_configuration_conditional(config.if, config, *args)
|
33
33
|
|
34
34
|
unless_value = !config.respond_to?(:unless) ||
|
35
|
-
|
36
|
-
|
35
|
+
config.unless.nil? ||
|
36
|
+
!evaluate_configuration_conditional(config.unless, config, *args)
|
37
37
|
|
38
38
|
if_value && unless_value
|
39
39
|
end
|
@@ -1,6 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module Blacklight
|
3
4
|
class Configuration::DisplayField < Blacklight::Configuration::Field
|
5
|
+
def initialize(*args, **kwargs, &block)
|
6
|
+
super
|
7
|
+
|
8
|
+
self.presenter ||= Blacklight::FieldPresenter
|
9
|
+
self.component ||= Blacklight::MetadataFieldComponent
|
10
|
+
end
|
4
11
|
##
|
5
12
|
# The following is a non-exhaustive list of display field config parameters that are used
|
6
13
|
# by Blacklight directly. Application-specific code or plugins may add or replace
|
@@ -33,18 +40,9 @@ module Blacklight
|
|
33
40
|
# Default rendering pipeline:
|
34
41
|
# @!attribute link_to_facet
|
35
42
|
# @return [Boolean]
|
36
|
-
# @!attribute link_to_search
|
37
|
-
# @deprecated use link_to_facet instead.
|
38
|
-
# @return [Boolean]
|
39
43
|
# @!attribute itemprop
|
40
44
|
# @return [String]
|
41
45
|
# @!attribute separator_options
|
42
46
|
# @return [Hash]
|
43
|
-
|
44
|
-
# @param [Blacklight::Configuration] _blacklight_config
|
45
|
-
def normalize! _blacklight_config = nil
|
46
|
-
super
|
47
|
-
self.presenter ||= Blacklight::FieldPresenter
|
48
|
-
end
|
49
47
|
end
|
50
48
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module Blacklight
|
3
4
|
class Configuration::FacetField < Blacklight::Configuration::Field
|
4
5
|
##
|
@@ -19,9 +20,6 @@ module Blacklight
|
|
19
20
|
# @return [Symbol|Hash] the i18n localization option for a date or time value; used as the second parameter for the I18n.l method
|
20
21
|
# @!attribute link_to_facet
|
21
22
|
# @return [Boolean]
|
22
|
-
# @!attribute link_to_search
|
23
|
-
# @deprecated use link_to_facet instead.
|
24
|
-
# @return [Boolean]
|
25
23
|
# @!attribute helper_method
|
26
24
|
# @return [Symbol] the name of a helper method used to display the facet's value to the user; it receives the facet value.
|
27
25
|
# @!attribute url_method
|
@@ -67,22 +65,20 @@ module Blacklight
|
|
67
65
|
# @!attribute partial
|
68
66
|
# @return [String] Rails view partial used to render the facet field
|
69
67
|
|
70
|
-
|
71
|
-
|
68
|
+
# rubocop:disable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
72
69
|
def normalize! blacklight_config = nil
|
73
70
|
query.stringify_keys! if query
|
74
71
|
|
72
|
+
normalize_pivot_config! if pivot
|
75
73
|
self.collapse = true if collapse.nil?
|
76
74
|
self.show = true if show.nil?
|
77
75
|
self.if = show if self.if.nil?
|
78
76
|
self.index_range = 'A'..'Z' if index_range == true
|
79
77
|
self.presenter ||= Blacklight::FacetFieldPresenter
|
80
|
-
|
81
|
-
if
|
82
|
-
|
83
|
-
|
84
|
-
end
|
85
|
-
|
78
|
+
self.item_presenter ||= Blacklight::FacetItemPresenter
|
79
|
+
self.component = Blacklight::FacetFieldListComponent if component.nil? || component == true
|
80
|
+
self.advanced_search_component ||= Blacklight::FacetFieldCheckboxesComponent
|
81
|
+
self.item_component ||= Blacklight::FacetItemComponent
|
86
82
|
super
|
87
83
|
|
88
84
|
if single && tag.blank? && ex.blank?
|
@@ -92,5 +88,15 @@ module Blacklight
|
|
92
88
|
|
93
89
|
self
|
94
90
|
end
|
91
|
+
# rubocop:enable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
92
|
+
|
93
|
+
private
|
94
|
+
|
95
|
+
def normalize_pivot_config!
|
96
|
+
self.item_presenter ||= Blacklight::FacetItemPivotPresenter
|
97
|
+
self.item_component ||= Blacklight::FacetItemPivotComponent
|
98
|
+
self.filter_class ||= Blacklight::SearchState::PivotFilterField
|
99
|
+
self.filter_query_builder ||= Blacklight::SearchState::PivotFilterField::QueryBuilder
|
100
|
+
end
|
95
101
|
end
|
96
102
|
end
|
@@ -1,12 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module Blacklight
|
3
4
|
class Configuration
|
4
5
|
# This mixin provides Blacklight::Configuration with generic
|
5
6
|
# solr fields configuration
|
6
7
|
module Fields
|
7
8
|
extend ActiveSupport::Concern
|
8
|
-
extend Deprecation
|
9
|
-
self.deprecation_horizon = 'blacklight version 8.0.0'
|
10
9
|
|
11
10
|
class_methods do
|
12
11
|
# Add a configuration block for a collection of solr fields
|
@@ -84,20 +83,20 @@ module Blacklight
|
|
84
83
|
#
|
85
84
|
def add_blacklight_field config_key, *args, &block
|
86
85
|
field_config = case args.first
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
86
|
+
when String
|
87
|
+
field_config_from_key_and_hash(config_key, *args)
|
88
|
+
when Symbol
|
89
|
+
args[0] = args[0].to_s
|
90
|
+
field_config_from_key_and_hash(config_key, *args)
|
91
|
+
when Array
|
92
|
+
field_config_from_array(config_key, *args, &block)
|
93
|
+
return # we've iterated over the array above.
|
94
|
+
else
|
95
|
+
field_config_from_field_or_hash(config_key, *args)
|
97
96
|
end
|
98
97
|
|
99
98
|
if (field_config.field || field_config.key).to_s =~ /\*/
|
100
|
-
field_config.match = Regexp.new("
|
99
|
+
field_config.match = Regexp.new("^#{(field_config.field || field_config.key).to_s.gsub('*', '.+')}$")
|
101
100
|
end
|
102
101
|
|
103
102
|
# look up any dynamic fields
|
@@ -155,8 +154,6 @@ module Blacklight
|
|
155
154
|
|
156
155
|
@table[:reflected_fields] || {}
|
157
156
|
end
|
158
|
-
alias luke_fields reflected_fields
|
159
|
-
deprecation_deprecate luke_fields: 'use reflected_fields instead'
|
160
157
|
|
161
158
|
# Add a solr field by a solr field name and hash
|
162
159
|
def field_config_from_key_and_hash config_key, field_name, field_or_hash = {}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Blacklight
|
4
|
+
# Returned if no config is defined for a display field in the Blacklight::Configuration
|
5
|
+
class Configuration::NullDisplayField < Blacklight::Configuration::DisplayField
|
6
|
+
def initialize(field_or_hash = nil)
|
7
|
+
case field_or_hash
|
8
|
+
when String, Symbol
|
9
|
+
super(field: field_or_hash)
|
10
|
+
else
|
11
|
+
super
|
12
|
+
end
|
13
|
+
|
14
|
+
normalize!
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|