blacklight 8.11.0 → 9.0.0.beta2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.env +3 -3
- data/.github/matrix.json +11 -42
- data/.github/pull_request_template.md +7 -0
- data/.github/workflows/main.yml +0 -2
- data/.github/workflows/release_7_x_scheduled.yml +39 -0
- data/.github/workflows/release_8_x_scheduled.yml +39 -0
- data/.github/workflows/test.yml +0 -5
- data/.rubocop.yml +71 -3
- data/.rubocop_todo.yml +43 -76
- data/.solr_wrapper.yml +2 -0
- data/README.md +30 -8
- data/VERSION +1 -1
- data/app/assets/builds/blacklight.css +452 -0
- data/app/assets/javascripts/blacklight/blacklight.esm.js +6 -76
- data/app/assets/javascripts/blacklight/blacklight.esm.js.map +1 -1
- data/app/assets/javascripts/blacklight/blacklight.js +6 -76
- data/app/assets/javascripts/blacklight/blacklight.js.map +1 -1
- data/app/assets/stylesheets/blacklight/_balanced_list.scss +1 -4
- data/app/assets/stylesheets/blacklight/_blacklight_base.scss +1 -3
- data/app/assets/stylesheets/blacklight/_bookmark.scss +44 -41
- data/app/assets/stylesheets/blacklight/_bootstrap_overrides.scss +0 -25
- data/app/assets/stylesheets/blacklight/_constraints.scss +15 -24
- data/app/assets/stylesheets/blacklight/_controls.scss +2 -18
- data/app/assets/stylesheets/blacklight/_facets.scss +17 -84
- data/app/assets/stylesheets/blacklight/_group.scss +2 -5
- data/app/assets/stylesheets/blacklight/_header.scss +8 -11
- data/app/assets/stylesheets/blacklight/_icons.scss +0 -8
- data/app/assets/stylesheets/blacklight/_modal.scss +1 -1
- data/app/assets/stylesheets/blacklight/_pagination.scss +0 -4
- data/app/assets/stylesheets/blacklight/_search_form.scss +0 -1
- data/app/assets/stylesheets/blacklight/_search_history.scss +0 -8
- data/app/assets/stylesheets/blacklight/_search_results.scss +1 -15
- data/app/assets/stylesheets/blacklight/blacklight_defaults.scss +9 -14
- data/app/assets/stylesheets/blacklight/build.scss +4 -0
- data/app/components/blacklight/advanced_search_form_component.rb +3 -3
- data/app/components/blacklight/constraint_component.rb +1 -1
- data/app/components/blacklight/constraint_layout_component.html.erb +2 -2
- data/app/components/blacklight/constraints_component.html.erb +2 -2
- data/app/components/blacklight/constraints_component.rb +3 -3
- data/app/components/blacklight/document/bookmark_component.html.erb +3 -3
- data/app/components/blacklight/document/bookmark_component.rb +2 -2
- data/app/components/blacklight/document/group_component.html.erb +1 -1
- data/app/components/blacklight/document/more_like_this_component.rb +2 -2
- data/app/components/blacklight/document/page_header_component.rb +1 -1
- data/app/components/blacklight/document/sidebar_component.rb +5 -5
- data/app/components/blacklight/document/thumbnail_component.html.erb +3 -7
- data/app/components/blacklight/document/thumbnail_component.rb +7 -6
- data/app/components/blacklight/document_component.rb +12 -16
- data/app/components/blacklight/document_title_component.rb +5 -11
- data/app/components/blacklight/facet_field_checkboxes_component.rb +2 -20
- data/app/components/blacklight/facet_field_component.rb +2 -17
- data/app/components/blacklight/facet_field_filter_component.rb +2 -21
- data/app/components/blacklight/facet_field_inclusive_constraint_component.rb +4 -25
- data/app/components/blacklight/facet_field_list_component.rb +2 -50
- data/app/components/blacklight/facet_field_no_layout_component.rb +2 -10
- data/app/components/blacklight/facet_item_component.rb +2 -74
- data/app/components/blacklight/facet_item_pivot_component.rb +3 -3
- data/app/components/blacklight/facets/checkboxes_component.rb +26 -0
- data/app/components/blacklight/facets/count_component.rb +23 -0
- data/app/components/blacklight/{facet_field_component.html.erb → facets/field_component.html.erb} +4 -4
- data/app/components/blacklight/facets/field_component.rb +23 -0
- data/app/components/blacklight/facets/filters_component.html.erb +4 -0
- data/app/components/blacklight/facets/filters_component.rb +27 -0
- data/app/components/blacklight/{facet_field_inclusive_constraint_component.html.erb → facets/inclusive_constraint_component.html.erb} +1 -1
- data/app/components/blacklight/facets/inclusive_constraint_component.rb +31 -0
- data/app/components/blacklight/{facet_field_filter_component.html.erb → facets/index_navigation_component.html.erb} +1 -1
- data/app/components/blacklight/facets/index_navigation_component.rb +32 -0
- data/app/components/blacklight/facets/item_component.rb +73 -0
- data/app/components/blacklight/facets/list_component.html.erb +11 -0
- data/app/components/blacklight/facets/list_component.rb +38 -0
- data/app/components/blacklight/facets/no_layout_component.rb +16 -0
- data/app/components/blacklight/facets/selected_value_component.rb +29 -0
- data/app/components/blacklight/facets/suggest_component.html.erb +12 -0
- data/app/components/blacklight/facets/suggest_component.rb +22 -0
- data/app/components/blacklight/metadata_field_plain_text_layout_component.rb +2 -2
- data/app/components/blacklight/response/facet_group_component.html.erb +3 -18
- data/app/components/blacklight/response/facet_group_component.rb +11 -23
- data/app/components/blacklight/response/facet_toggle_button_component.html.erb +16 -0
- data/app/components/blacklight/response/facet_toggle_button_component.rb +14 -0
- data/app/components/blacklight/response/pagination_component.html.erb +1 -1
- data/app/components/blacklight/response/pagination_component.rb +2 -1
- data/app/components/blacklight/response/sort_component.rb +1 -0
- data/app/components/blacklight/response/view_type_button_component.html.erb +1 -1
- data/app/components/blacklight/response/view_type_component.html.erb +1 -1
- data/app/components/blacklight/search/per_page_component.html.erb +1 -1
- data/app/components/blacklight/search/per_page_component.rb +1 -0
- data/app/components/blacklight/search/sidebar_component.html.erb +1 -1
- data/app/components/blacklight/search/sidebar_component.rb +1 -1
- data/app/components/blacklight/search_bar_component.html.erb +3 -3
- data/app/components/blacklight/search_bar_component.rb +2 -2
- data/app/components/blacklight/search_button_component.rb +2 -2
- data/app/components/blacklight/search_context/server_applied_params_component.html.erb +2 -2
- data/app/components/blacklight/search_context/server_applied_params_component.rb +9 -0
- data/app/components/blacklight/skip_link_component.html.erb +1 -1
- data/app/components/blacklight/skip_link_component.rb +2 -1
- data/app/components/blacklight/top_navbar_component.html.erb +2 -2
- data/app/controllers/concerns/blacklight/bookmarks.rb +3 -3
- data/app/controllers/concerns/blacklight/catalog.rb +9 -23
- data/app/controllers/concerns/blacklight/controller.rb +1 -1
- data/app/controllers/concerns/blacklight/facetable.rb +34 -0
- data/app/controllers/concerns/blacklight/search_context.rb +0 -12
- data/app/controllers/concerns/blacklight/searchable.rb +1 -1
- data/app/helpers/blacklight/blacklight_helper_behavior.rb +0 -6
- data/app/helpers/blacklight/catalog_helper_behavior.rb +0 -10
- data/app/helpers/blacklight/configuration_helper_behavior.rb +2 -14
- data/app/helpers/blacklight/document_helper_behavior.rb +3 -27
- data/app/helpers/blacklight/facets_helper_behavior.rb +9 -0
- data/app/helpers/blacklight/icon_helper_behavior.rb +3 -11
- data/app/helpers/blacklight/layout_helper_behavior.rb +2 -2
- data/app/helpers/blacklight/render_partials_helper_behavior.rb +0 -14
- data/app/helpers/blacklight/url_helper_behavior.rb +1 -1
- data/app/javascript/{blacklight → blacklight-frontend}/bookmark_toggle.js +1 -1
- data/app/javascript/{blacklight → blacklight-frontend}/checkbox_submit.js +3 -0
- data/app/javascript/{blacklight → blacklight-frontend}/core.js +2 -10
- data/app/javascript/{blacklight → blacklight-frontend}/facet_suggest.js +1 -3
- data/app/javascript/blacklight-frontend/index.js +16 -0
- data/app/javascript/{blacklight → blacklight-frontend}/modal.js +1 -5
- data/app/models/concerns/blacklight/document.rb +0 -11
- data/app/models/concerns/blacklight/user.rb +1 -1
- data/app/models/facet_search_builder.rb +5 -0
- data/app/presenters/blacklight/facet_field_presenter.rb +3 -3
- data/app/presenters/blacklight/rendering/helper_method.rb +4 -4
- data/app/presenters/blacklight/rendering/join.rb +2 -2
- data/app/services/blacklight/facet_search_service.rb +44 -0
- data/app/services/blacklight/field_retriever.rb +1 -1
- data/app/services/blacklight/search_params_yaml_coder.rb +0 -2
- data/app/services/blacklight/search_service.rb +6 -6
- data/app/values/blacklight/types.rb +2 -2
- data/app/views/bookmarks/_clear_bookmarks_widget.html.erb +0 -2
- data/app/views/bookmarks/index.html.erb +1 -1
- data/app/views/catalog/_facet_pivot.html.erb +1 -1
- data/app/views/catalog/_home_text.html.erb +2 -2
- data/app/views/catalog/_results_pagination.html.erb +2 -5
- data/app/views/catalog/_search_results.html.erb +3 -3
- data/app/views/catalog/_search_results_header.html.erb +1 -1
- data/app/views/catalog/_sort_and_per_page.html.erb +1 -1
- data/app/views/catalog/_sort_widget.html.erb +1 -0
- data/app/views/catalog/facet.html.erb +4 -6
- data/app/views/catalog/show.html.erb +2 -3
- data/app/views/kaminari/blacklight/_paginator.html.erb +1 -2
- data/app/views/layouts/blacklight/base.html.erb +3 -7
- data/app/views/search_history/index.html.erb +0 -2
- data/blacklight.gemspec +4 -4
- data/config/importmap.rb +1 -1
- data/config/locales/blacklight.ar.yml +2 -2
- data/config/locales/blacklight.ca.yml +124 -124
- data/config/locales/blacklight.de.yml +2 -2
- data/config/locales/blacklight.en.yml +14 -14
- data/config/locales/blacklight.es.yml +2 -2
- data/config/locales/blacklight.fr.yml +2 -2
- data/config/locales/blacklight.hu.yml +2 -2
- data/config/locales/blacklight.it.yml +1 -1
- data/config/locales/blacklight.nl.yml +2 -2
- data/config/locales/blacklight.pt-BR.yml +1 -1
- data/config/locales/blacklight.sq.yml +2 -2
- data/config/locales/blacklight.zh.yml +2 -2
- data/lib/blacklight/abstract_repository.rb +2 -2
- data/lib/blacklight/abstract_search_builder.rb +154 -0
- data/lib/blacklight/configuration/context.rb +3 -3
- data/lib/blacklight/configuration/display_field.rb +1 -1
- data/lib/blacklight/configuration/facet_field.rb +6 -6
- data/lib/blacklight/configuration/field.rb +4 -4
- data/lib/blacklight/configuration/fields.rb +3 -4
- data/lib/blacklight/configuration/search_field.rb +1 -1
- data/lib/blacklight/configuration/view_config.rb +2 -4
- data/lib/blacklight/configuration.rb +11 -18
- data/lib/blacklight/engine.rb +0 -6
- data/lib/blacklight/facet_search_builder.rb +18 -0
- data/lib/blacklight/nested_open_struct_with_hash_access.rb +1 -1
- data/lib/blacklight/open_struct_with_hash_access.rb +5 -5
- data/lib/blacklight/search_builder.rb +1 -159
- data/lib/blacklight/search_state/filter_field.rb +2 -2
- data/lib/blacklight/search_state/pivot_filter_field.rb +4 -4
- data/lib/blacklight/solr/abstract_filter_query_builder.rb +77 -0
- data/lib/blacklight/solr/default_filter_query_builder.rb +20 -0
- data/lib/blacklight/solr/facet_search_builder_behavior.rb +62 -0
- data/lib/blacklight/solr/repository.rb +8 -9
- data/lib/blacklight/solr/request.rb +1 -7
- data/lib/blacklight/solr/response/facets.rb +2 -2
- data/lib/blacklight/solr/response/group_response.rb +2 -2
- data/lib/blacklight/solr/response/params.rb +0 -4
- data/lib/blacklight/solr/response.rb +5 -1
- data/lib/blacklight/solr/search_builder_behavior.rb +17 -132
- data/lib/blacklight.rb +2 -2
- data/lib/generators/blacklight/assets/importmap_generator.rb +6 -24
- data/lib/generators/blacklight/assets/propshaft_generator.rb +1 -1
- data/lib/generators/blacklight/assets_generator.rb +3 -3
- data/lib/generators/blacklight/controller_generator.rb +3 -3
- data/lib/generators/blacklight/search_builder_generator.rb +1 -1
- data/lib/generators/blacklight/templates/.solr_wrapper.yml +2 -0
- data/lib/generators/blacklight/templates/catalog_controller.rb +3 -1
- data/lib/generators/blacklight/templates/solr/conf/solrconfig.xml +0 -4
- data/lib/generators/blacklight/user_generator.rb +9 -10
- data/package.json +15 -5
- data/rollup.config.js +1 -1
- data/spec/components/blacklight/advanced_search_form_component_spec.rb +18 -22
- data/spec/components/blacklight/constraint_layout_component_spec.rb +8 -8
- data/spec/components/blacklight/constraints_component_spec.rb +11 -11
- data/spec/components/blacklight/document/action_component_spec.rb +21 -17
- data/spec/components/blacklight/document/group_component_spec.rb +10 -15
- data/spec/components/blacklight/document/page_header_component_spec.rb +35 -28
- data/spec/components/blacklight/document/sidebar_component_spec.rb +9 -30
- data/spec/components/blacklight/document_component_spec.rb +98 -65
- data/spec/components/blacklight/facet_component_spec.rb +12 -8
- data/spec/components/blacklight/facet_item_pivot_component_spec.rb +12 -12
- data/spec/components/blacklight/{facet_field_checkboxes_component_spec.rb → facets/checkboxes_component_spec.rb} +14 -14
- data/spec/components/blacklight/facets/filters_component_spec.rb +36 -0
- data/spec/components/blacklight/facets/index_navigation_component_spec.rb +40 -0
- data/spec/components/blacklight/{facet_item_component_spec.rb → facets/item_component_spec.rb} +10 -10
- data/spec/components/blacklight/{facet_field_list_component_spec.rb → facets/list_component_spec.rb} +24 -24
- data/spec/components/blacklight/facets/suggest_component_spec.rb +68 -0
- data/spec/components/blacklight/header_component_spec.rb +2 -4
- data/spec/components/blacklight/hidden_search_state_component_spec.rb +7 -7
- data/spec/components/blacklight/metadata_field_component_spec.rb +17 -15
- data/spec/components/blacklight/response/facet_group_component_spec.rb +37 -0
- data/spec/components/blacklight/response/pagination_component_spec.rb +1 -1
- data/spec/components/blacklight/response/spellcheck_component_spec.rb +1 -1
- data/spec/components/blacklight/search_bar_component_spec.rb +5 -5
- data/spec/components/blacklight/search_context/server_applied_params_component_spec.rb +2 -2
- data/spec/components/blacklight/search_context/server_item_pagination_component_spec.rb +3 -5
- data/spec/components/blacklight/skip_link_component_spec.rb +8 -11
- data/spec/components/blacklight/start_over_button_component_spec.rb +4 -4
- data/spec/components/blacklight/system/flash_message_component_spec.rb +7 -11
- data/spec/controllers/catalog_controller_spec.rb +11 -19
- data/spec/features/axe_spec.rb +6 -11
- data/spec/features/bookmarks_spec.rb +48 -11
- data/spec/features/facets_spec.rb +58 -63
- data/spec/features/search_context_spec.rb +1 -2
- data/spec/features/search_filters_spec.rb +6 -6
- data/spec/helpers/blacklight/configuration_helper_behavior_spec.rb +0 -9
- data/spec/helpers/blacklight/facets_helper_behavior_spec.rb +10 -0
- data/spec/helpers/blacklight/render_partials_helper_behavior_spec.rb +1 -1
- data/spec/lib/blacklight/configuration/facet_field_spec.rb +2 -2
- data/spec/models/blacklight/configuration_spec.rb +32 -28
- data/spec/models/blacklight/facet_search_builder_spec.rb +19 -0
- data/spec/models/blacklight/search_builder_spec.rb +1 -11
- data/spec/models/blacklight/solr/default_filter_query_builder_spec.rb +72 -0
- data/spec/models/blacklight/solr/document_spec.rb +0 -4
- data/spec/models/blacklight/solr/facet_search_builder_behavior_spec.rb +929 -0
- data/spec/models/blacklight/solr/repository_spec.rb +31 -29
- data/spec/models/blacklight/solr/request_spec.rb +7 -0
- data/spec/models/blacklight/solr/response/facets_spec.rb +86 -40
- data/spec/models/blacklight/solr/response/group_response_spec.rb +8 -5
- data/spec/models/blacklight/solr/response/group_spec.rb +9 -5
- data/spec/models/blacklight/solr/response_spec.rb +96 -64
- data/spec/models/blacklight/solr/search_builder_behavior_spec.rb +2 -227
- data/spec/models/solr_document_spec.rb +5 -1
- data/spec/services/blacklight/search_service_spec.rb +5 -26
- data/spec/spec_helper.rb +0 -1
- data/spec/support/view_component_test_helpers.rb +0 -18
- data/spec/views/catalog/facet.html.erb_spec.rb +10 -11
- data/spec/views/catalog/index.atom.builder_spec.rb +6 -3
- data/spec/views/catalog/index.html.erb_spec.rb +8 -3
- data/spec/views/catalog/show.html.erb_spec.rb +1 -0
- data/tasks/blacklight.rake +8 -5
- metadata +76 -81
- data/app/assets/stylesheets/blacklight/_autocomplete.scss +0 -25
- data/app/assets/stylesheets/blacklight/_mixins.scss +0 -20
- data/app/components/blacklight/facet_field_list_component.html.erb +0 -19
- data/app/components/blacklight/icons/legacy_icon_component.rb +0 -30
- data/app/components/blacklight/search/facet_suggest_input.html.erb +0 -12
- data/app/components/blacklight/search/facet_suggest_input.rb +0 -20
- data/app/javascript/blacklight/index.js +0 -18
- data/app/javascript/blacklight/modalForm.js +0 -60
- data/app/views/catalog/_constraints.html.erb +0 -1
- data/app/views/catalog/_facet_index_navigation.html.erb +0 -1
- data/app/views/catalog/_facet_layout.html.erb +0 -8
- data/app/views/catalog/_facet_pagination.html.erb +0 -1
- data/app/views/catalog/_facets.html.erb +0 -5
- data/app/views/catalog/_search_form.html.erb +0 -7
- data/app/views/catalog/_search_header.html.erb +0 -1
- data/app/views/catalog/_show_sidebar.html.erb +0 -3
- data/app/views/catalog/_show_tools.html.erb +0 -2
- data/app/views/catalog/_start_over.html.erb +0 -1
- data/app/views/shared/_header_navbar.html.erb +0 -1
- data/lib/generators/blacklight/assets/sprockets_generator.rb +0 -68
- data/spec/components/blacklight/document_metadata_component_spec.rb +0 -0
- data/spec/components/blacklight/search/facet_suggest_input_spec.rb +0 -57
- data/spec/views/catalog/_facet_index_navigation.html.erb_spec.rb +0 -43
- data/spec/views/catalog/_facet_layout.html.erb_spec.rb +0 -41
- data/spec/views/catalog/_search_header.erb_spec.rb +0 -14
- data/spec/views/catalog/_show_sidebar.erb_spec.rb +0 -24
- data/spec/views/catalog/_show_tools.html.erb_spec.rb +0 -37
- /data/app/components/blacklight/{facet_field_checkboxes_component.html.erb → facets/checkboxes_component.html.erb} +0 -0
- /data/app/javascript/{blacklight → blacklight-frontend}/button_focus.js +0 -0
- /data/app/javascript/{blacklight → blacklight-frontend}/debounce.js +0 -0
- /data/app/javascript/{blacklight → blacklight-frontend}/search_context.js +0 -0
@@ -10,7 +10,6 @@ module Blacklight::Solr
|
|
10
10
|
:add_query_to_solr, :add_facet_fq_to_solr,
|
11
11
|
:add_facetting_to_solr, :add_solr_fields_to_query, :add_paging_to_solr,
|
12
12
|
:add_sorting_to_solr, :add_group_config_to_solr,
|
13
|
-
:add_facet_paging_to_solr, :add_facet_suggestion_parameters,
|
14
13
|
:add_adv_search_clauses,
|
15
14
|
:add_additional_filters
|
16
15
|
]
|
@@ -128,25 +127,19 @@ module Blacklight::Solr
|
|
128
127
|
end
|
129
128
|
|
130
129
|
search_state.filters.each do |filter|
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
solr_parameters.append_filter_query(fq)
|
136
|
-
end
|
137
|
-
solr_parameters.merge!(subqueries) if subqueries
|
130
|
+
filter_query_builder_class_or_proc = filter.config.filter_query_builder || DefaultFilterQueryBuilder
|
131
|
+
if filter_query_builder_class_or_proc.is_a?(Class)
|
132
|
+
filter_query_builder = filter_query_builder_class_or_proc.new(blacklight_config: blacklight_config)
|
133
|
+
filter_query, subqueries = filter_query_builder.call(filter, solr_parameters)
|
138
134
|
else
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
solr_parameters.append_filter_query filter_query
|
147
|
-
solr_parameters.merge!(subqueries) if subqueries
|
148
|
-
end
|
135
|
+
# TODO: Maybe deprecate proc?
|
136
|
+
filter_query, subqueries = filter_query_builder_class_or_proc.call(self, filter, solr_parameters)
|
137
|
+
end
|
138
|
+
|
139
|
+
Array(filter_query).each do |fq|
|
140
|
+
solr_parameters.append_filter_query(fq)
|
149
141
|
end
|
142
|
+
solr_parameters.merge!(subqueries) if subqueries
|
150
143
|
end
|
151
144
|
end
|
152
145
|
|
@@ -190,10 +183,8 @@ module Blacklight::Solr
|
|
190
183
|
solr_parameters[:"f.#{facet.field}.facet.sort"] = facet.sort
|
191
184
|
end
|
192
185
|
|
193
|
-
|
194
|
-
facet.
|
195
|
-
solr_parameters[:"f.#{facet.field}.#{k}"] = v
|
196
|
-
end
|
186
|
+
facet.solr_params&.each do |k, v|
|
187
|
+
solr_parameters[:"f.#{facet.field}.#{k}"] = v
|
197
188
|
end
|
198
189
|
|
199
190
|
limit = facet_limit_with_pagination(field_name)
|
@@ -203,9 +194,9 @@ module Blacklight::Solr
|
|
203
194
|
|
204
195
|
def add_solr_fields_to_query solr_parameters
|
205
196
|
blacklight_config.show_fields.select(&method(:should_add_field_to_request?)).each_value do |field|
|
206
|
-
field.solr_params
|
197
|
+
field.solr_params&.each do |k, v|
|
207
198
|
solr_parameters[:"f.#{field.field}.#{k}"] = v
|
208
|
-
end
|
199
|
+
end
|
209
200
|
end
|
210
201
|
|
211
202
|
blacklight_config.index_fields.select(&method(:should_add_field_to_request?)).each_value do |field|
|
@@ -214,9 +205,9 @@ module Blacklight::Solr
|
|
214
205
|
solr_parameters.append_highlight_field field.field
|
215
206
|
end
|
216
207
|
|
217
|
-
field.solr_params
|
208
|
+
field.solr_params&.each do |k, v|
|
218
209
|
solr_parameters[:"f.#{field.field}.#{k}"] = v
|
219
|
-
end
|
210
|
+
end
|
220
211
|
end
|
221
212
|
end
|
222
213
|
|
@@ -242,48 +233,6 @@ module Blacklight::Solr
|
|
242
233
|
solr_parameters[:group] = false if search_state.filter(grouped_key_for_results).any?
|
243
234
|
end
|
244
235
|
|
245
|
-
def add_facet_paging_to_solr(solr_params)
|
246
|
-
return if facet.blank?
|
247
|
-
|
248
|
-
facet_config = blacklight_config.facet_fields[facet]
|
249
|
-
|
250
|
-
solr_params[:rows] = 0
|
251
|
-
|
252
|
-
limit = if solr_params["facet.limit"]
|
253
|
-
solr_params["facet.limit"].to_i
|
254
|
-
else
|
255
|
-
facet_config.fetch(:more_limit, blacklight_config.default_more_limit)
|
256
|
-
end
|
257
|
-
|
258
|
-
page = search_state.facet_page
|
259
|
-
sort = search_state.facet_sort
|
260
|
-
prefix = search_state.facet_prefix
|
261
|
-
offset = (page - 1) * limit
|
262
|
-
|
263
|
-
if facet_config.json
|
264
|
-
add_solr_facet_json_params(solr_parameters, facet, facet_config, limit: limit + 1, offset: offset, sort: sort, prefix: prefix)
|
265
|
-
return
|
266
|
-
end
|
267
|
-
|
268
|
-
# Now override with our specific things for fetching facet values
|
269
|
-
facet_ex = facet_config.respond_to?(:ex) ? facet_config.ex : nil
|
270
|
-
solr_params[:'facet.field'] = with_ex_local_param(facet_ex, facet_config.field)
|
271
|
-
|
272
|
-
# Need to set as f.facet_field.facet.* to make sure we
|
273
|
-
# override any field-specific default in the solr request handler.
|
274
|
-
solr_params[:"f.#{facet_config.field}.facet.limit"] = limit + 1
|
275
|
-
solr_params[:"f.#{facet_config.field}.facet.offset"] = offset
|
276
|
-
solr_params[:"f.#{facet_config.field}.facet.sort"] = sort if sort
|
277
|
-
solr_params[:"f.#{facet_config.field}.facet.prefix"] = prefix if prefix
|
278
|
-
end
|
279
|
-
|
280
|
-
def add_facet_suggestion_parameters(solr_params)
|
281
|
-
return if facet.blank? || facet_suggestion_query.blank?
|
282
|
-
|
283
|
-
solr_params[:'facet.contains'] = facet_suggestion_query[0..50]
|
284
|
-
solr_params[:'facet.contains.ignoreCase'] = true
|
285
|
-
end
|
286
|
-
|
287
236
|
def with_ex_local_param(ex, value)
|
288
237
|
if ex
|
289
238
|
"{!ex=#{ex}}#{value}"
|
@@ -340,70 +289,6 @@ module Blacklight::Solr
|
|
340
289
|
|
341
290
|
private
|
342
291
|
|
343
|
-
##
|
344
|
-
# Convert a facet/value pair into a solr fq parameter
|
345
|
-
# rubocop:disable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
346
|
-
def facet_value_to_fq_string(facet_field, value, use_local_params: true)
|
347
|
-
facet_config = blacklight_config.facet_fields[facet_field]
|
348
|
-
|
349
|
-
solr_field = facet_config.field if facet_config && !facet_config.query
|
350
|
-
solr_field ||= facet_field
|
351
|
-
|
352
|
-
local_params = []
|
353
|
-
local_params << "tag=#{facet_config.tag}" if use_local_params && facet_config && facet_config.tag
|
354
|
-
|
355
|
-
if facet_config && facet_config.query
|
356
|
-
if facet_config.query[value]
|
357
|
-
facet_config.query[value][:fq]
|
358
|
-
else
|
359
|
-
# exclude all documents if the custom facet key specified was not found
|
360
|
-
'-*:*'
|
361
|
-
end
|
362
|
-
elsif value.is_a?(Range)
|
363
|
-
prefix = "{!#{local_params.join(' ')}}" unless local_params.empty?
|
364
|
-
start = value.begin || '*'
|
365
|
-
finish = value.end || '*'
|
366
|
-
"#{prefix}#{solr_field}:[#{start} TO #{finish}]"
|
367
|
-
elsif value == Blacklight::SearchState::FilterField::MISSING
|
368
|
-
"-#{solr_field}:[* TO *]"
|
369
|
-
else
|
370
|
-
"{!term f=#{solr_field}#{" #{local_params.join(' ')}" unless local_params.empty?}}#{convert_to_term_value(value)}"
|
371
|
-
end
|
372
|
-
end
|
373
|
-
# rubocop:enable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
374
|
-
|
375
|
-
def facet_inclusive_value_to_fq_string(facet_field, values)
|
376
|
-
return if values.blank?
|
377
|
-
|
378
|
-
return facet_value_to_fq_string(facet_field, values.first) if values.length == 1
|
379
|
-
|
380
|
-
facet_config = blacklight_config.facet_fields[facet_field]
|
381
|
-
|
382
|
-
local_params = []
|
383
|
-
local_params << "tag=#{facet_config.tag}" if facet_config && facet_config.tag
|
384
|
-
|
385
|
-
solr_filters = values.each_with_object({}).with_index do |(v, h), index|
|
386
|
-
h["f_inclusive.#{facet_field}.#{index}"] = facet_value_to_fq_string(facet_field, v, use_local_params: false)
|
387
|
-
end
|
388
|
-
|
389
|
-
filter_query = solr_filters.keys.map do |k|
|
390
|
-
"{!query v=$#{k}}"
|
391
|
-
end.join(' OR ')
|
392
|
-
|
393
|
-
["{!lucene#{" #{local_params.join(' ')}" unless local_params.empty?}}#{filter_query}", solr_filters]
|
394
|
-
end
|
395
|
-
|
396
|
-
def convert_to_term_value(value)
|
397
|
-
case value
|
398
|
-
when DateTime, Time
|
399
|
-
value.utc.strftime("%Y-%m-%dT%H:%M:%SZ")
|
400
|
-
when Date
|
401
|
-
value.to_time(:local).strftime("%Y-%m-%dT%H:%M:%SZ")
|
402
|
-
else
|
403
|
-
value.to_s
|
404
|
-
end
|
405
|
-
end
|
406
|
-
|
407
292
|
##
|
408
293
|
# The key to use to retrieve the grouped field to display
|
409
294
|
def grouped_key_for_results
|
data/lib/blacklight.rb
CHANGED
@@ -99,7 +99,7 @@ module Blacklight
|
|
99
99
|
end
|
100
100
|
|
101
101
|
def self.logger
|
102
|
-
@logger ||=
|
102
|
+
@logger ||= ::Rails.logger
|
103
103
|
end
|
104
104
|
|
105
105
|
def self.logger= logger
|
@@ -116,7 +116,7 @@ module Blacklight
|
|
116
116
|
|
117
117
|
# returns the full path the the blacklight plugin installation
|
118
118
|
def self.root
|
119
|
-
@root ||= File.expand_path(File.dirname(
|
119
|
+
@root ||= File.expand_path(File.dirname(__FILE__, 2))
|
120
120
|
end
|
121
121
|
|
122
122
|
def self.deprecation
|
@@ -5,18 +5,12 @@ module Blacklight
|
|
5
5
|
class ImportmapGenerator < Rails::Generators::Base
|
6
6
|
class_option :'bootstrap-version', type: :string, default: ENV.fetch('BOOTSTRAP_VERSION', '~> 5.3'), desc: "Set the generated app's bootstrap version"
|
7
7
|
|
8
|
-
# This could be skipped if you want to use webpacker
|
9
|
-
def add_javascript_dependencies
|
10
|
-
gem 'bootstrap', options[:'bootstrap-version'].presence # in rails 7, only for stylesheets
|
11
|
-
gem 'jquery-rails' if bootstrap_4? # Bootstrap 4 has a dependency on jquery
|
12
|
-
end
|
13
|
-
|
14
8
|
def import_javascript_assets
|
15
9
|
append_to_file 'config/importmap.rb' do
|
16
10
|
<<~CONTENT
|
17
11
|
pin "@github/auto-complete-element", to: "https://cdn.skypack.dev/@github/auto-complete-element"
|
18
12
|
pin "@popperjs/core", to: "https://ga.jspm.io/npm:@popperjs/core@2.11.6/dist/umd/popper.min.js"
|
19
|
-
pin "bootstrap", to: "https://ga.jspm.io/npm:bootstrap@#{(defined?(Bootstrap) && Bootstrap::VERSION) || '5.3.
|
13
|
+
pin "bootstrap", to: "https://ga.jspm.io/npm:bootstrap@#{(defined?(Bootstrap) && Bootstrap::VERSION) || '5.3.5'}/dist/js/bootstrap.js"
|
20
14
|
CONTENT
|
21
15
|
end
|
22
16
|
|
@@ -40,39 +34,27 @@ module Blacklight
|
|
40
34
|
append_to_file 'app/javascript/application.js' do
|
41
35
|
<<~CONTENT
|
42
36
|
import githubAutoCompleteElement from "@github/auto-complete-element"
|
43
|
-
import Blacklight from "blacklight"
|
37
|
+
import Blacklight from "blacklight-frontend"
|
44
38
|
CONTENT
|
45
39
|
end
|
46
40
|
end
|
47
41
|
|
48
42
|
def add_stylesheet
|
49
43
|
if File.exist? 'app/assets/stylesheets/application.bootstrap.scss'
|
50
|
-
if ENV['CI']
|
51
|
-
run "yarn add file:#{Blacklight::Engine.root}"
|
52
|
-
else
|
53
|
-
run "yarn add blacklight-frontend@#{Blacklight::VERSION}"
|
54
|
-
end
|
55
|
-
|
56
44
|
append_to_file 'app/assets/stylesheets/application.bootstrap.scss' do
|
57
45
|
<<~CONTENT
|
58
|
-
@import "blacklight
|
46
|
+
@import url("blacklight.css");
|
59
47
|
CONTENT
|
60
48
|
end
|
61
49
|
else
|
62
|
-
|
63
|
-
|
64
|
-
create_file 'app/assets/stylesheets/blacklight.scss' do
|
50
|
+
append_to_file 'app/assets/stylesheets/application.css' do
|
65
51
|
<<~CONTENT
|
66
|
-
@import
|
67
|
-
@import
|
52
|
+
@import url(https://cdn.jsdelivr.net/npm/bootstrap@5.3.5/dist/css/bootstrap.min.css);
|
53
|
+
@import url("blacklight.css");
|
68
54
|
CONTENT
|
69
55
|
end
|
70
56
|
end
|
71
57
|
end
|
72
|
-
|
73
|
-
def bootstrap_4?
|
74
|
-
options[:'bootstrap-version'].match?(/\A[^0-9]*4\./)
|
75
|
-
end
|
76
58
|
end
|
77
59
|
end
|
78
60
|
end
|
@@ -18,7 +18,7 @@ module Blacklight
|
|
18
18
|
def add_package_assets
|
19
19
|
append_to_file 'app/assets/stylesheets/application.bootstrap.scss' do
|
20
20
|
<<~CONTENT
|
21
|
-
@import "blacklight
|
21
|
+
@import url("blacklight.css");
|
22
22
|
CONTENT
|
23
23
|
end
|
24
24
|
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
module Blacklight
|
4
4
|
class AssetsGenerator < Rails::Generators::Base
|
5
|
-
class_option :'bootstrap-version', type: :string, default: ENV.fetch('BOOTSTRAP_VERSION', '
|
5
|
+
class_option :'bootstrap-version', type: :string, default: ENV.fetch('BOOTSTRAP_VERSION', '5.3.5'), desc: "Set the generated app's bootstrap version"
|
6
6
|
|
7
7
|
def run_asset_pipeline_specific_generator
|
8
8
|
generated_options = "--bootstrap-version='#{options[:'bootstrap-version']}'" if options[:'bootstrap-version']
|
@@ -11,8 +11,8 @@ module Blacklight
|
|
11
11
|
'blacklight:assets:importmap'
|
12
12
|
elsif defined?(Propshaft)
|
13
13
|
'blacklight:assets:propshaft'
|
14
|
-
|
15
|
-
|
14
|
+
else
|
15
|
+
raise "Unsupported path"
|
16
16
|
end
|
17
17
|
|
18
18
|
generate generator, generated_options if generator
|
@@ -16,9 +16,9 @@ module Blacklight
|
|
16
16
|
# Add Blacklight to the application controller
|
17
17
|
def inject_blacklight_controller_behavior
|
18
18
|
inject_into_class "app/controllers/application_controller.rb", "ApplicationController" do
|
19
|
-
" # Adds a few additional behaviors into the application controller\n" \
|
20
|
-
"
|
21
|
-
"
|
19
|
+
" # Adds a few additional behaviors into the application controller\n " \
|
20
|
+
"include Blacklight::Controller\n " \
|
21
|
+
"layout :determine_layout if respond_to? :layout\n\n"
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
@@ -105,9 +105,11 @@ class <%= controller_name.classify %>Controller < ApplicationController
|
|
105
105
|
# :show may be set to false if you don't want the facet to be drawn in the
|
106
106
|
# facet bar
|
107
107
|
#
|
108
|
-
#
|
108
|
+
# Set :index_range to true if you want the facet pagination view to have facet prefix-based navigation.
|
109
109
|
# (useful when user clicks "more" on a large facet and wants to navigate alphabetically across a large set of results)
|
110
110
|
# :index_range can be an array or range of prefixes that will be used to create the navigation (note: It is case sensitive when searching values)
|
111
|
+
# This control only displays when the user has selected "A-Z Sort" (You make make this the default by setting "sort: 'index'"
|
112
|
+
# in the facet config)
|
111
113
|
|
112
114
|
config.add_facet_field 'format', label: 'Format'
|
113
115
|
config.add_facet_field 'pub_date_ssim', label: 'Publication Year', single: true
|
@@ -47,7 +47,6 @@
|
|
47
47
|
full_title_tsim
|
48
48
|
short_title_tsim
|
49
49
|
alternative_title_tsim
|
50
|
-
active_fedora_model_ssi
|
51
50
|
title_tsim
|
52
51
|
author_tsim
|
53
52
|
subject_tsim
|
@@ -84,7 +83,6 @@
|
|
84
83
|
<str name="facet">true</str>
|
85
84
|
<str name="facet.mincount">1</str>
|
86
85
|
<str name="facet.limit">10</str>
|
87
|
-
<str name="facet.field">active_fedora_model_ssi</str>
|
88
86
|
<str name="facet.field">subject_ssim</str>
|
89
87
|
|
90
88
|
<str name="spellcheck">true</str>
|
@@ -116,7 +114,6 @@
|
|
116
114
|
full_title_tsim
|
117
115
|
short_title_tsim
|
118
116
|
alternative_title_tsim
|
119
|
-
active_fedora_model_ssi
|
120
117
|
title_tsim
|
121
118
|
author_tsim
|
122
119
|
subject_tsim
|
@@ -153,7 +150,6 @@
|
|
153
150
|
<str name="facet">true</str>
|
154
151
|
<str name="facet.mincount">1</str>
|
155
152
|
<str name="facet.limit">10</str>
|
156
|
-
<str name="facet.field">active_fedora_model_ssi</str>
|
157
153
|
<str name="facet.field">subject_ssim</str>
|
158
154
|
|
159
155
|
<str name="spellcheck">true</str>
|
@@ -34,13 +34,6 @@ module Blacklight
|
|
34
34
|
generate "devise", model_name.classify
|
35
35
|
generate "devise_guests", model_name.classify
|
36
36
|
|
37
|
-
# add the #to_s to the model.
|
38
|
-
insert_into_file("app/models/#{model_name}.rb", before: /end(\n| )*$/) do
|
39
|
-
"\n # Configuration added by Blacklight; Blacklight::User uses a method key on your\n" \
|
40
|
-
" # user class to get a user-displayable login/identifier for\n" \
|
41
|
-
" # the account.\n" \
|
42
|
-
" self.string_display_key ||= :email\n"
|
43
|
-
end
|
44
37
|
gsub_file("config/initializers/devise.rb", "config.sign_out_via = :delete", "config.sign_out_via = :get")
|
45
38
|
# Work around for https://github.com/heartcombo/devise/issues/5720
|
46
39
|
gsub_file("config/initializers/devise.rb", "# config.reload_routes = true", "config.reload_routes = false")
|
@@ -51,13 +44,19 @@ module Blacklight
|
|
51
44
|
file_path = "app/models/#{model_name.underscore}.rb"
|
52
45
|
if File.exist?(File.expand_path(file_path, destination_root))
|
53
46
|
inject_into_class file_path, model_name.classify do
|
54
|
-
|
55
|
-
|
47
|
+
<<~EOS
|
48
|
+
# Connects this user object to Blacklights Bookmarks.
|
49
|
+
include Blacklight::User
|
50
|
+
|
51
|
+
# Blacklight::User uses a method on your User class to get a user-displayable
|
52
|
+
# label (e.g. login or identifier) for the account. Blacklight uses `email' by default.
|
53
|
+
# self.string_display_key = :email
|
54
|
+
EOS
|
56
55
|
end
|
57
56
|
else
|
58
57
|
say_status "warning", <<~EOS, :yellow
|
59
58
|
Blacklight authenticated user functionality not installed, as a user model
|
60
|
-
could not be found at
|
59
|
+
could not be found at #{file_path}. If you used a different name,
|
61
60
|
please re-run the migration and provide that name as an argument. E.g.:
|
62
61
|
|
63
62
|
`rails -g blacklight:user client`
|
data/package.json
CHANGED
@@ -1,11 +1,19 @@
|
|
1
1
|
{
|
2
2
|
"name": "blacklight-frontend",
|
3
|
-
"version": "
|
3
|
+
"version": "9.0.0-beta2",
|
4
4
|
"description": "The frontend code and styles for Blacklight",
|
5
|
-
"
|
5
|
+
"exports": {
|
6
|
+
"./blacklight.esm.js": "./app/assets/javascripts/blacklight/blacklight.esm.js",
|
7
|
+
"./stylesheets/*": "./app/assets/stylesheets/blacklight/*",
|
8
|
+
".": {
|
9
|
+
"import": "./app/javascript/blacklight-frontend/index.js",
|
10
|
+
"require": "./app/assets/javascripts/blacklight.js"
|
11
|
+
},
|
12
|
+
"./*": "./app/javascript/blacklight-frontend/*.js"
|
13
|
+
},
|
6
14
|
"type": "module",
|
7
|
-
"module": "app/assets/javascripts/blacklight/blacklight.esm.js",
|
8
15
|
"scripts": {
|
16
|
+
"build": "sass ./app/assets/stylesheets/blacklight/build.scss:./app/assets/builds/blacklight.css --no-source-map --load-path=node_modules --quiet-deps",
|
9
17
|
"prepare": "rollup --config rollup.config.js --sourcemap && ESM=true rollup --config rollup.config.js --sourcemap"
|
10
18
|
},
|
11
19
|
"repository": {
|
@@ -24,13 +32,15 @@
|
|
24
32
|
"homepage": "https://github.com/projectblacklight/blacklight#readme",
|
25
33
|
"devDependencies": {
|
26
34
|
"rollup": "^4.24.0",
|
27
|
-
"rollup-plugin-includepaths": "^0.2.4"
|
35
|
+
"rollup-plugin-includepaths": "^0.2.4",
|
36
|
+
"sass": "^1.80.3",
|
37
|
+
"bootstrap": "^5.3.5"
|
28
38
|
},
|
29
39
|
"browserslist": [
|
30
40
|
"defaults",
|
31
41
|
"not IE 11"
|
32
42
|
],
|
33
43
|
"dependencies": {
|
34
|
-
"bootstrap": ">=
|
44
|
+
"bootstrap": ">=5.3.5 <6.0.0"
|
35
45
|
}
|
36
46
|
}
|
data/rollup.config.js
CHANGED
@@ -16,7 +16,7 @@ let includePathOptions = {
|
|
16
16
|
};
|
17
17
|
|
18
18
|
const rollupConfig = {
|
19
|
-
input: 'app/javascript/blacklight/index.js',
|
19
|
+
input: 'app/javascript/blacklight-frontend/index.js',
|
20
20
|
output: {
|
21
21
|
file: `app/assets/javascripts/blacklight/${fileDest}.js`,
|
22
22
|
format: ESM ? 'es' : 'umd',
|
@@ -3,49 +3,45 @@
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
5
|
RSpec.describe Blacklight::AdvancedSearchFormComponent, type: :component do
|
6
|
-
subject(:render) do
|
7
|
-
component.render_in(view_context)
|
8
|
-
end
|
9
|
-
|
10
6
|
let(:component) { described_class.new(url: '/whatever', response: response, params: params) }
|
11
|
-
let(:response) { Blacklight::Solr::Response.new({ facet_counts: { facet_fields: { format: { 'Book' => 10, 'CD' => 5 } } } }.with_indifferent_access,
|
12
|
-
let(:
|
13
|
-
|
14
|
-
let(:rendered) do
|
15
|
-
Capybara::Node::Simple.new(render)
|
7
|
+
let(:response) { Blacklight::Solr::Response.new({ facet_counts: { facet_fields: { format: { 'Book' => 10, 'CD' => 5 } } } }.with_indifferent_access, search_builder) }
|
8
|
+
let(:search_builder) do
|
9
|
+
Blacklight::SearchBuilder.new(view_context)
|
16
10
|
end
|
11
|
+
let(:params) { {} }
|
17
12
|
|
18
|
-
let(:view_context) {
|
13
|
+
let(:view_context) { vc_test_controller.view_context }
|
19
14
|
|
20
15
|
before do
|
21
16
|
allow(view_context).to receive(:facet_limit_for).and_return(nil)
|
17
|
+
render_inline component
|
22
18
|
end
|
23
19
|
|
24
20
|
context 'with additional parameters' do
|
25
21
|
let(:params) { { some: :parameter, an_array: [1, 2] } }
|
26
22
|
|
27
23
|
it 'adds additional parameters as hidden fields' do
|
28
|
-
expect(
|
29
|
-
expect(
|
30
|
-
expect(
|
24
|
+
expect(page).to have_field 'some', with: 'parameter', type: :hidden
|
25
|
+
expect(page).to have_field 'an_array[]', with: '1', type: :hidden
|
26
|
+
expect(page).to have_field 'an_array[]', with: '2', type: :hidden
|
31
27
|
end
|
32
28
|
end
|
33
29
|
|
34
30
|
it 'has text fields for each search field' do
|
35
|
-
expect(
|
36
|
-
expect(
|
37
|
-
expect(
|
38
|
-
expect(
|
39
|
-
expect(
|
31
|
+
expect(page).to have_css '.advanced-search-field', count: 4
|
32
|
+
expect(page).to have_field 'clause_0_field', with: 'all_fields', type: :hidden
|
33
|
+
expect(page).to have_field 'clause_1_field', with: 'title', type: :hidden
|
34
|
+
expect(page).to have_field 'clause_2_field', with: 'author', type: :hidden
|
35
|
+
expect(page).to have_field 'clause_3_field', with: 'subject', type: :hidden
|
40
36
|
end
|
41
37
|
|
42
38
|
it 'has filters' do
|
43
|
-
expect(
|
44
|
-
expect(
|
45
|
-
expect(
|
39
|
+
expect(page).to have_css '.blacklight-format'
|
40
|
+
expect(page).to have_field 'f_inclusive[format][]', with: 'Book'
|
41
|
+
expect(page).to have_field 'f_inclusive[format][]', with: 'CD'
|
46
42
|
end
|
47
43
|
|
48
44
|
it 'has a sort field' do
|
49
|
-
expect(
|
45
|
+
expect(page).to have_select 'sort', options: %w[relevance year author title]
|
50
46
|
end
|
51
47
|
end
|
@@ -3,8 +3,8 @@
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
5
|
RSpec.describe Blacklight::ConstraintLayoutComponent, type: :component do
|
6
|
-
|
7
|
-
|
6
|
+
before do
|
7
|
+
render_inline described_class.new(**params)
|
8
8
|
end
|
9
9
|
|
10
10
|
describe "for simple display" do
|
@@ -13,7 +13,7 @@ RSpec.describe Blacklight::ConstraintLayoutComponent, type: :component do
|
|
13
13
|
end
|
14
14
|
|
15
15
|
it "renders label and value" do
|
16
|
-
expect(
|
16
|
+
expect(page).to have_css("span.applied-filter.constraint") do |s|
|
17
17
|
expect(s).to have_css("span.constraint-value")
|
18
18
|
expect(s).to have_no_css("a.constraint-value")
|
19
19
|
expect(s).to have_css "span.filter-name", text: "my label"
|
@@ -28,13 +28,13 @@ RSpec.describe Blacklight::ConstraintLayoutComponent, type: :component do
|
|
28
28
|
end
|
29
29
|
|
30
30
|
it "includes remove link" do
|
31
|
-
expect(
|
31
|
+
expect(page).to have_css("span.applied-filter") do |s|
|
32
32
|
expect(s).to have_css(".remove[href='http://remove']")
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
36
36
|
it "has an accessible remove label" do
|
37
|
-
expect(
|
37
|
+
expect(page).to have_css(".remove") do |s|
|
38
38
|
expect(s).to have_css('.visually-hidden', text: 'Remove constraint my label: my value')
|
39
39
|
end
|
40
40
|
end
|
@@ -46,7 +46,7 @@ RSpec.describe Blacklight::ConstraintLayoutComponent, type: :component do
|
|
46
46
|
end
|
47
47
|
|
48
48
|
it "includes them" do
|
49
|
-
expect(
|
49
|
+
expect(page).to have_css("span.applied-filter.constraint.class1.class2")
|
50
50
|
end
|
51
51
|
end
|
52
52
|
|
@@ -56,8 +56,8 @@ RSpec.describe Blacklight::ConstraintLayoutComponent, type: :component do
|
|
56
56
|
end
|
57
57
|
|
58
58
|
it "does not escape key and value" do
|
59
|
-
expect(
|
60
|
-
expect(
|
59
|
+
expect(page).to have_css("span.applied-filter.constraint span.filter-name span.custom_label")
|
60
|
+
expect(page).to have_css("span.applied-filter.constraint span.filter-value span.custom_value")
|
61
61
|
end
|
62
62
|
end
|
63
63
|
end
|