blacklight 7.22.2 → 7.23.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.
Files changed (100) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +29 -8
  3. data/VERSION +1 -1
  4. data/app/assets/stylesheets/blacklight/_facets.scss +6 -0
  5. data/app/components/blacklight/advanced_search_form_component.rb +5 -5
  6. data/app/components/blacklight/constraints_component.html.erb +8 -4
  7. data/app/components/blacklight/constraints_component.rb +43 -18
  8. data/app/components/blacklight/document/action_component.html.erb +1 -1
  9. data/app/components/blacklight/document/action_component.rb +10 -3
  10. data/app/components/blacklight/document/bookmark_component.rb +2 -2
  11. data/app/components/blacklight/document/citation_component.rb +1 -1
  12. data/app/components/blacklight/document/group_component.html.erb +1 -1
  13. data/app/components/blacklight/document/group_component.rb +2 -2
  14. data/app/components/blacklight/document/more_like_this_component.html.erb +1 -1
  15. data/app/components/blacklight/document/more_like_this_component.rb +1 -1
  16. data/app/components/blacklight/document/thumbnail_component.rb +1 -1
  17. data/app/components/blacklight/document_component.rb +2 -2
  18. data/app/components/blacklight/document_title_component.rb +3 -3
  19. data/app/components/blacklight/facet_field_checkboxes_component.rb +1 -1
  20. data/app/components/blacklight/facet_field_inclusive_constraint_component.html.erb +1 -1
  21. data/app/components/blacklight/facet_field_inclusive_constraint_component.rb +1 -1
  22. data/app/components/blacklight/facet_field_list_component.html.erb +1 -1
  23. data/app/components/blacklight/facet_field_list_component.rb +1 -1
  24. data/app/components/blacklight/facet_field_pagination_component.html.erb +4 -4
  25. data/app/components/blacklight/facet_item_component.rb +2 -2
  26. data/app/components/blacklight/facet_item_pivot_component.rb +2 -2
  27. data/app/components/blacklight/metadata_field_component.rb +2 -2
  28. data/app/components/blacklight/response/facet_group_component.html.erb +1 -1
  29. data/app/components/blacklight/response/facet_group_component.rb +1 -1
  30. data/app/components/blacklight/response/pagination_component.rb +1 -1
  31. data/app/components/blacklight/response/sort_component.html.erb +1 -1
  32. data/app/components/blacklight/response/spellcheck_component.rb +14 -3
  33. data/app/components/blacklight/response/view_type_button_component.rb +3 -3
  34. data/app/components/blacklight/response/view_type_component.rb +1 -1
  35. data/app/components/blacklight/search_bar_component.rb +2 -2
  36. data/app/components/blacklight/search_context_component.rb +3 -3
  37. data/app/components/blacklight/search_history_constraint_layout_component.rb +14 -0
  38. data/app/components/blacklight/start_over_button_component.rb +20 -0
  39. data/app/components/blacklight/system/dropdown_component.rb +1 -1
  40. data/app/controllers/concerns/blacklight/bookmarks.rb +1 -1
  41. data/app/controllers/concerns/blacklight/catalog.rb +2 -2
  42. data/app/controllers/concerns/blacklight/search_context.rb +1 -1
  43. data/app/helpers/blacklight/blacklight_helper_behavior.rb +12 -4
  44. data/app/helpers/blacklight/catalog_helper_behavior.rb +18 -7
  45. data/app/helpers/blacklight/render_partials_helper_behavior.rb +12 -1
  46. data/app/helpers/blacklight/search_history_constraints_helper_behavior.rb +30 -2
  47. data/app/helpers/blacklight/url_helper_behavior.rb +3 -1
  48. data/app/javascript/blacklight/modal.js +2 -2
  49. data/app/models/concerns/blacklight/configurable.rb +1 -1
  50. data/app/models/concerns/blacklight/document/active_model_shim.rb +1 -1
  51. data/app/models/concerns/blacklight/document/extensions.rb +1 -1
  52. data/app/models/concerns/blacklight/document/semantic_fields.rb +1 -1
  53. data/app/models/concerns/blacklight/document.rb +1 -1
  54. data/app/views/catalog/_email_form.html.erb +1 -1
  55. data/app/views/catalog/_search_results.html.erb +1 -1
  56. data/app/views/catalog/_sms_form.html.erb +3 -3
  57. data/app/views/catalog/_start_over.html.erb +1 -1
  58. data/app/views/layouts/blacklight/base.html.erb +1 -0
  59. data/blacklight.gemspec +3 -4
  60. data/lib/blacklight/configuration/fields.rb +1 -1
  61. data/lib/blacklight/configuration.rb +2 -1
  62. data/lib/blacklight/deprecations/engine_configuration.rb +66 -0
  63. data/lib/blacklight/engine.rb +21 -10
  64. data/lib/blacklight/exceptions.rb +3 -0
  65. data/lib/blacklight/search_state/filter_field.rb +4 -4
  66. data/lib/blacklight/solr/repository.rb +36 -12
  67. data/lib/blacklight/solr/search_builder_behavior.rb +1 -4
  68. data/lib/generators/blacklight/assets_generator.rb +14 -10
  69. data/spec/components/blacklight/constraints_component_spec.rb +68 -0
  70. data/spec/components/blacklight/document/action_component_spec.rb +2 -1
  71. data/spec/components/blacklight/document_component_spec.rb +1 -1
  72. data/spec/components/blacklight/response/spellcheck_component_spec.rb +73 -0
  73. data/spec/components/blacklight/start_over_button_component_spec.rb +38 -0
  74. data/spec/controllers/catalog_controller_spec.rb +1 -1
  75. data/spec/features/did_you_mean_spec.rb +21 -0
  76. data/spec/features/search_context_spec.rb +3 -1
  77. data/spec/helpers/blacklight/search_history_constraints_helper_behavior_spec.rb +2 -0
  78. data/spec/helpers/blacklight/url_helper_behavior_spec.rb +3 -3
  79. data/spec/helpers/blacklight_helper_spec.rb +8 -3
  80. data/spec/helpers/catalog_helper_spec.rb +6 -2
  81. data/spec/lib/blacklight/engine_spec.rb +41 -0
  82. data/spec/models/blacklight/facet_paginator_spec.rb +60 -15
  83. data/spec/models/blacklight/solr/repository_spec.rb +29 -21
  84. data/spec/models/blacklight/solr/response/facets_spec.rb +48 -10
  85. data/spec/presenters/blacklight/facet_item_presenter_spec.rb +1 -1
  86. data/spec/presenters/blacklight/field_presenter_spec.rb +2 -2
  87. data/spec/routing/search_history_spec.rb +9 -0
  88. data/spec/services/blacklight/search_service_spec.rb +8 -0
  89. data/spec/spec_helper.rb +2 -3
  90. data/spec/support/controller_level_helpers.rb +8 -0
  91. data/spec/views/catalog/_constraints.html.erb_spec.rb +1 -1
  92. data/spec/views/catalog/_index.html.erb_spec.rb +1 -1
  93. data/spec/views/catalog/_show.html.erb_spec.rb +1 -1
  94. data/spec/views/catalog/_show_sidebar.erb_spec.rb +1 -1
  95. data/spec/views/catalog/facet.json.jbuilder_spec.rb +1 -1
  96. data/spec/views/catalog/index.atom.builder_spec.rb +1 -0
  97. data/spec/views/catalog/index.html.erb_spec.rb +1 -0
  98. data/spec/views/catalog/index.json.jbuilder_spec.rb +1 -1
  99. data/spec/views/catalog/show.json.jbuilder_spec.rb +1 -1
  100. metadata +21 -22
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ef3dd1b10972d7cb0f68e8cff2414cb9e80a9f46d47a54d16b731069d1d4dcc7
4
- data.tar.gz: 0ac493abfd5dbbc181f0d6cce796232f1a69e17d405cbf530460c2e43efccbde
3
+ metadata.gz: 982aa4e78d4586096d97f31ccfdd52bfbfe5ff7f562248454240bca9c409d910
4
+ data.tar.gz: b9fc47ba21552ab4f29c166f04585bbbf70b25bdbe818f70d8d3bfd2c891db58
5
5
  SHA512:
6
- metadata.gz: 4103713063c0c9cafd4526039fcc858d79bc33c8c84d5c07b15b9a45bf01eebe0a7fa345cf1c43da509d22b78403f5ce80e95ac1d43200e0d662a5d2c5420420
7
- data.tar.gz: cba37b2ceeb5fcb423361563e7da9004622e29ec7bd64d683625e5ba2b5a022e5c841d2d23f86ecdf2876ba8e004932709e03848731f90942cd0b5c9a1dbcc00
6
+ metadata.gz: 05d918ebf0f597eaaf5950e34a74785a79a0b7f0174f9d4458c8fa5f906abefb4016f8d307548d80cdc901a7b6a8288083623f9a7db52ebeb6bcc68f29140272
7
+ data.tar.gz: efcc57d374d646fe0f0113298383244c85180d059db1bb4e4f24537dbf24fee5f38b3a9f8f4ea8b5cbd0bffd3a3bfaffcbf3663d667ea48f33ae26ae0f6837e9
@@ -31,7 +31,7 @@ jobs:
31
31
  runs-on: ubuntu-latest
32
32
  strategy:
33
33
  matrix:
34
- ruby: [2.7, 3.0]
34
+ ruby: [2.7, '3.0']
35
35
  steps:
36
36
  - uses: actions/checkout@v2
37
37
  - name: Set up Ruby
@@ -48,7 +48,7 @@ jobs:
48
48
  runs-on: ubuntu-latest
49
49
  strategy:
50
50
  matrix:
51
- ruby: [3.0]
51
+ ruby: ['3.0']
52
52
  steps:
53
53
  - uses: actions/checkout@v2
54
54
  - name: Set up Ruby
@@ -76,17 +76,17 @@ jobs:
76
76
  - name: Install dependencies
77
77
  run: bundle install
78
78
  env:
79
- RAILS_VERSION: 6.0.3.4
79
+ RAILS_VERSION: 6.0.3.7
80
80
  - name: Run tests
81
81
  run: bundle exec rake ci
82
82
  env:
83
- RAILS_VERSION: 6.0.3.4
83
+ RAILS_VERSION: 6.0.3.7
84
84
  ENGINE_CART_RAILS_OPTIONS: '--skip-git --skip-listen --skip-spring --skip-keeps --skip-action-cable --skip-coffee --skip-test'
85
85
  test_rails5_2:
86
86
  runs-on: ubuntu-latest
87
87
  strategy:
88
88
  matrix:
89
- ruby: [2.5]
89
+ ruby: [2.7]
90
90
  steps:
91
91
  - uses: actions/checkout@v2
92
92
  - name: Set up Ruby
@@ -96,17 +96,38 @@ jobs:
96
96
  - name: Install dependencies
97
97
  run: bundle install
98
98
  env:
99
- RAILS_VERSION: 5.2.4.2
99
+ RAILS_VERSION: 5.2.4.6
100
100
  - name: Run tests
101
101
  run: bundle exec rake ci
102
102
  env:
103
- RAILS_VERSION: 5.2.4.2
103
+ RAILS_VERSION: 5.2.4.6
104
104
  ENGINE_CART_RAILS_OPTIONS: '--skip-git --skip-listen --skip-spring --skip-keeps --skip-action-cable --skip-coffee --skip-test'
105
+
106
+ test_rails7_0:
107
+ runs-on: ubuntu-latest
108
+ strategy:
109
+ matrix:
110
+ ruby: ['3.0']
111
+ steps:
112
+ - uses: actions/checkout@v2
113
+ - name: Set up Ruby
114
+ uses: ruby/setup-ruby@v1
115
+ with:
116
+ ruby-version: ${{ matrix.ruby }}
117
+ - name: Install dependencies
118
+ run: bundle install
119
+ env:
120
+ RAILS_VERSION: 7.0.0
121
+ - name: Run tests
122
+ run: bundle exec rake ci
123
+ env:
124
+ RAILS_VERSION: 7.0.0
125
+ ENGINE_CART_RAILS_OPTIONS: '--skip-git --skip-keeps --skip-action-cable --skip-test'
105
126
  api_test:
106
127
  runs-on: ubuntu-latest
107
128
  strategy:
108
129
  matrix:
109
- ruby: [2.7, 3.0]
130
+ ruby: [2.7, '3.0']
110
131
  steps:
111
132
  - uses: actions/checkout@v2
112
133
  - name: Set up Ruby
data/VERSION CHANGED
@@ -1 +1 @@
1
- 7.22.2
1
+ 7.23.0
@@ -62,6 +62,12 @@
62
62
 
63
63
  .card-header {
64
64
  @extend .bg-success;
65
+
66
+ .btn {
67
+ @if function-exists(color-contrast) {
68
+ color: color-contrast($success);
69
+ }
70
+ }
65
71
  }
66
72
  }
67
73
 
@@ -7,7 +7,7 @@ module Blacklight
7
7
  renders_many :constraints
8
8
  renders_many :search_field_controls
9
9
  renders_many :search_filter_controls, (lambda do |config:, display_facet:, presenter: nil, component: nil, **kwargs|
10
- presenter ||= (config.presenter || Blacklight::FacetFieldPresenter).new(config, display_facet, @view_context)
10
+ presenter ||= (config.presenter || Blacklight::FacetFieldPresenter).new(config, display_facet, helpers)
11
11
  component = component || config.advanced_search_component || Blacklight::FacetFieldCheckboxesComponent
12
12
 
13
13
  component.new(facet_field: presenter, **kwargs)
@@ -30,7 +30,7 @@ module Blacklight
30
30
  end
31
31
 
32
32
  def sort_fields_select
33
- options = sort_fields.values.map { |field_config| [@view_context.sort_field_label(field_config.key), field_config.key] }
33
+ options = sort_fields.values.map { |field_config| [helpers.sort_field_label(field_config.key), field_config.key] }
34
34
  select_tag(:sort, options_for_select(options, params[:sort]), class: "form-control sort-select")
35
35
  end
36
36
 
@@ -63,11 +63,11 @@ module Blacklight
63
63
 
64
64
  def initialize_constraints
65
65
  constraint do
66
- params = @view_context.search_state.params_for_search.except :page, :f_inclusive, :q, :search_field, :op, :index, :sort
66
+ params = helpers.search_state.params_for_search.except :page, :f_inclusive, :q, :search_field, :op, :index, :sort
67
67
 
68
- params.except!(*search_fields.map { |_key, field_def| field_def[:key] })
68
+ adv_search_context = helpers.search_state.reset(params)
69
69
 
70
- @view_context.render_search_to_s(params)
70
+ Blacklight::ConstraintsComponent.for_search_history(search_state: adv_search_context)
71
71
  end
72
72
  end
73
73
 
@@ -1,9 +1,13 @@
1
- <%= content_tag :div, id: @id, class: @classes do %>
2
- <h2 class="sr-only visually-hidden"><%= t('blacklight.search.search_constraints_header') %></h2>
1
+ <%= content_tag @tag || :div, id: @id, class: @classes do %>
2
+ <% if @render_headers %>
3
+ <h2 class="sr-only visually-hidden"><%= t('blacklight.search.search_constraints_header') %></h2>
4
+ <% end %>
3
5
 
4
- <%= link_to t('blacklight.search.start_over'), start_over_path, class: "catalog_startOverLink btn btn-primary" %>
6
+ <%= render @start_over_component.new if @start_over_component %>
5
7
 
6
- <span class="constraints-label sr-only visually-hidden"><%= t('blacklight.search.filters.title') %></span>
8
+ <% if @render_headers %>
9
+ <span class="constraints-label sr-only visually-hidden"><%= t('blacklight.search.filters.title') %></span>
10
+ <% end %>
7
11
  <% if query_constraints_area.present? %>
8
12
  <% query_constraints_area.each do |constraint| %>
9
13
  <%= constraint %>
@@ -8,53 +8,78 @@ module Blacklight
8
8
  renders_many :facet_constraints_area
9
9
  renders_many :additional_constraints
10
10
 
11
+ def self.for_search_history(**kwargs)
12
+ new(tag: :span,
13
+ render_headers: false,
14
+ id: nil,
15
+ query_constraint_component: Blacklight::SearchHistoryConstraintLayoutComponent,
16
+ facet_constraint_component_options: { layout: Blacklight::SearchHistoryConstraintLayoutComponent },
17
+ start_over_component: nil,
18
+ **kwargs)
19
+ end
20
+
21
+ # rubocop:disable Metrics/ParameterLists
11
22
  def initialize(search_state:,
23
+ tag: :div,
24
+ render_headers: true,
12
25
  id: 'appliedParams', classes: 'clearfix constraints-container',
13
- query_constraint_component: Blacklight::ConstraintLayoutComponent, facet_constraint_component: Blacklight::ConstraintComponent)
26
+ query_constraint_component: Blacklight::ConstraintLayoutComponent,
27
+ query_constraint_component_options: {},
28
+ facet_constraint_component: Blacklight::ConstraintComponent,
29
+ facet_constraint_component_options: {},
30
+ start_over_component: Blacklight::StartOverButtonComponent)
14
31
  @search_state = search_state
15
32
  @query_constraint_component = query_constraint_component
33
+ @query_constraint_component_options = query_constraint_component_options
16
34
  @facet_constraint_component = facet_constraint_component
35
+ @facet_constraint_component_options = facet_constraint_component_options
36
+ @start_over_component = start_over_component
37
+ @render_headers = render_headers
38
+ @tag = tag
17
39
  @id = id
18
40
  @classes = classes
19
41
  end
42
+ # rubocop:enable Metrics/ParameterLists
20
43
 
21
44
  def query_constraints
22
45
  Deprecation.silence(Blacklight::RenderConstraintsHelperBehavior) do
23
46
  if @search_state.query_param.present?
24
- @view_context.render(
47
+ helpers.render(
25
48
  @query_constraint_component.new(
26
49
  search_state: @search_state,
27
50
  value: @search_state.query_param,
28
51
  label: label,
29
- remove_path: @view_context.remove_constraint_url(@search_state),
30
- classes: 'query'
52
+ remove_path: helpers.remove_constraint_url(@search_state),
53
+ classes: 'query',
54
+ **@query_constraint_component_options
31
55
  )
32
56
  )
33
57
  else
34
58
  ''.html_safe
35
59
  end
36
- end + @view_context.render(@facet_constraint_component.with_collection(clause_presenters.to_a))
60
+ end + helpers.render(@facet_constraint_component.with_collection(clause_presenters.to_a, **@facet_constraint_component_options))
37
61
  end
38
62
 
39
63
  def facet_constraints
40
- @view_context.render(@facet_constraint_component.with_collection(facet_item_presenters.to_a))
41
- end
42
-
43
- def start_over_path
44
- Deprecation.silence(Blacklight::UrlHelperBehavior) do
45
- @view_context.start_over_path
46
- end
64
+ helpers.render(@facet_constraint_component.with_collection(facet_item_presenters.to_a, **@facet_constraint_component_options))
47
65
  end
48
66
 
49
67
  def render?
50
- Deprecation.silence(Blacklight::RenderConstraintsHelperBehavior) { @view_context.query_has_constraints? }
68
+ Deprecation.silence(Blacklight::RenderConstraintsHelperBehavior) { helpers.query_has_constraints?(@search_state.params) }
51
69
  end
52
70
 
53
71
  private
54
72
 
73
+ # @deprecated
74
+ def start_over_path
75
+ Deprecation.silence(Blacklight::UrlHelperBehavior) do
76
+ helpers.start_over_path
77
+ end
78
+ end
79
+
55
80
  def label
56
81
  Deprecation.silence(Blacklight::ConfigurationHelperBehavior) do
57
- @view_context.constraint_query_label(@search_state.params)
82
+ helpers.constraint_query_label(@search_state.params)
58
83
  end
59
84
  end
60
85
 
@@ -80,17 +105,17 @@ module Blacklight
80
105
  return to_enum(:clause_presenters) unless block_given?
81
106
 
82
107
  @search_state.clause_params.each do |key, clause|
83
- field_config = @view_context.blacklight_config.search_fields[clause[:field]]
84
- yield Blacklight::ClausePresenter.new(key, clause, field_config, @view_context)
108
+ field_config = helpers.blacklight_config.search_fields[clause[:field]]
109
+ yield Blacklight::ClausePresenter.new(key, clause, field_config, helpers)
85
110
  end
86
111
  end
87
112
 
88
113
  def facet_item_presenter(facet_config, facet_item, facet_field)
89
- (facet_config.item_presenter || Blacklight::FacetItemPresenter).new(facet_item, facet_config, @view_context, facet_field)
114
+ (facet_config.item_presenter || Blacklight::FacetItemPresenter).new(facet_item, facet_config, helpers, facet_field)
90
115
  end
91
116
 
92
117
  def inclusive_facet_item_presenter(facet_config, facet_item, facet_field)
93
- Blacklight::InclusiveFacetItemPresenter.new(facet_item, facet_config, @view_context, facet_field)
118
+ Blacklight::InclusiveFacetItemPresenter.new(facet_item, facet_config, helpers, facet_field)
94
119
  end
95
120
  end
96
121
  end
@@ -5,5 +5,5 @@
5
5
  class: @link_classes,
6
6
  data: {}.merge(({ blacklight_modal: "trigger" } if @action.modal != false) || {}) %>
7
7
  <% else %>
8
- <%= @view_context.render(partial: @action.partial || @action.name.to_s, locals: { document: @document, document_action_config: @action }.merge(@options)) %>
8
+ <%= helpers.render(partial: @action.partial || @action.name.to_s, locals: { document: @document, document_action_config: @action }.merge(@options)) %>
9
9
  <% end %>
@@ -20,18 +20,25 @@ module Blacklight
20
20
  return true if @action.component
21
21
  return false unless @action.partial == 'document_action'
22
22
 
23
- @view_context.partial_from_blacklight?(@action.partial)
23
+ helpers.partial_from_blacklight?(@action.partial)
24
24
  end
25
25
 
26
26
  def label
27
27
  Deprecation.silence(Blacklight::ComponentHelperBehavior) do
28
- @view_context.document_action_label(@action.name, @action)
28
+ helpers.document_action_label(@action.name, @action)
29
29
  end
30
30
  end
31
31
 
32
+ # Action buttons get their URLs in one of three ways:
33
+ # - the action configuration explicitly specifies a helper method to call
34
+ # - a url route is inferred for ActiveModel-compliant objects (the default;
35
+ # note that, although Rails routing is available here, we still call out to
36
+ # helpers regardless, because that's where applications might have overridden the
37
+ # default Rails routing behavior)
38
+ # - calling out to an implicit helper method with a conventional name (unlikely)
32
39
  def url
33
40
  Deprecation.silence(Blacklight::ComponentHelperBehavior) do
34
- @view_context.document_action_path(@action, @url_opts.merge(({ id: @document } if @document) || {}))
41
+ helpers.document_action_path(@action, @url_opts.merge(({ id: @document } if @document) || {}))
35
42
  end
36
43
  end
37
44
 
@@ -16,11 +16,11 @@ module Blacklight
16
16
  def bookmarked?
17
17
  return @checked unless @checked.nil?
18
18
 
19
- @view_context.bookmarked? @document
19
+ helpers.bookmarked? @document
20
20
  end
21
21
 
22
22
  def bookmark_path
23
- @bookmark_path || @view_context.bookmark_path(@document)
23
+ @bookmark_path || helpers.bookmark_path(@document)
24
24
  end
25
25
  end
26
26
  end
@@ -23,7 +23,7 @@ module Blacklight
23
23
  # @return [String]
24
24
  def title
25
25
  Deprecation.silence(Blacklight::BlacklightHelperBehavior) do
26
- @view_context.document_heading(@document)
26
+ helpers.document_heading(@document)
27
27
  end
28
28
  end
29
29
  end
@@ -4,6 +4,6 @@
4
4
  <%= grouped_documents %>
5
5
  </div>
6
6
  <%- if @group_limit > 0 && @group.total > @group_limit %>
7
- <%= @view_context.link_to t('blacklight.search.group.more'), add_group_facet_params_and_redirect(@group), class: 'more-in-group' %>
7
+ <%= helpers.link_to t('blacklight.search.group.more'), add_group_facet_params_and_redirect(@group), class: 'more-in-group' %>
8
8
  <%- end %>
9
9
  </div>
@@ -13,12 +13,12 @@ module Blacklight
13
13
  end
14
14
 
15
15
  def grouped_documents
16
- @view_context.render_document_index @group.docs
16
+ helpers.render_document_index @group.docs
17
17
  end
18
18
 
19
19
  def add_group_facet_params_and_redirect(group)
20
20
  Deprecation.silence(Blacklight::UrlHelperBehavior) do
21
- @view_context.search_action_path(@view_context.add_group_facet_params_and_redirect(group))
21
+ helpers.search_action_path(helpers.add_group_facet_params_and_redirect(group))
22
22
  end
23
23
  end
24
24
  end
@@ -2,7 +2,7 @@
2
2
  <div class="card-header">More Like This</div>
3
3
  <div class="card-body">
4
4
  <ul>
5
- <%= @document.more_like_this.each do |document| %>
5
+ <% @document.more_like_this.each do |document| %>
6
6
  <li class="more_like_this_document">
7
7
  <span class="mlt_title"><%= link_to_document document %></span>
8
8
  </li>
@@ -16,7 +16,7 @@ module Blacklight
16
16
  end
17
17
 
18
18
  def link_to_document(*args)
19
- @view_context.link_to_document(*args)
19
+ helpers.link_to_document(*args)
20
20
  end
21
21
  end
22
22
  end
@@ -29,7 +29,7 @@ module Blacklight
29
29
  end
30
30
 
31
31
  def presenter
32
- @presenter ||= @view_context.document_presenter(@document)
32
+ @presenter ||= helpers.document_presenter(@document)
33
33
  end
34
34
  end
35
35
  end
@@ -114,7 +114,7 @@ module Blacklight
114
114
  def classes
115
115
  [
116
116
  @classes,
117
- @view_context.render_document_class(@document),
117
+ helpers.render_document_class(@document),
118
118
  'document',
119
119
  ("document-position-#{@counter}" if @counter)
120
120
  ].compact.flatten
@@ -130,7 +130,7 @@ module Blacklight
130
130
  private
131
131
 
132
132
  def presenter
133
- @presenter ||= @view_context.document_presenter(@document)
133
+ @presenter ||= helpers.document_presenter(@document)
134
134
  end
135
135
 
136
136
  def show?
@@ -24,7 +24,7 @@ module Blacklight
24
24
  # Content for the document title area; should be an inline element
25
25
  def title
26
26
  if @link_to_document
27
- @view_context.link_to_document presenter.document, @title.presence || content.presence, counter: @counter, itemprop: 'name'
27
+ helpers.link_to_document presenter.document, @title.presence || content.presence, counter: @counter, itemprop: 'name'
28
28
  else
29
29
  content_tag('span', @title.presence || content.presence || presenter.heading, itemprop: 'name')
30
30
  end
@@ -39,7 +39,7 @@ module Blacklight
39
39
 
40
40
  (@has_actions_slot && get_slot(:actions)) ||
41
41
  ([@document_component&.actions] if @document_component&.actions.present?) ||
42
- [@view_context.render_index_doc_actions(presenter.document, wrapping_class: 'index-document-functions col-sm-3 col-lg-2')]
42
+ [helpers.render_index_doc_actions(presenter.document, wrapping_class: 'index-document-functions col-sm-3 col-lg-2')]
43
43
  end
44
44
 
45
45
  def counter
@@ -53,7 +53,7 @@ module Blacklight
53
53
  private
54
54
 
55
55
  def presenter
56
- @presenter ||= @view_context.document_presenter(@document)
56
+ @presenter ||= helpers.document_presenter(@document)
57
57
  end
58
58
  end
59
59
  end
@@ -17,7 +17,7 @@ module Blacklight
17
17
  return to_enum(:presenters) unless block_given?
18
18
 
19
19
  @facet_field.paginator.items.each do |item|
20
- yield (@facet_field.facet_field.item_presenter || Blacklight::FacetItemPresenter).new(item, @facet_field.facet_field, @view_context, @facet_field.key, @facet_field.search_state)
20
+ yield (@facet_field.facet_field.item_presenter || Blacklight::FacetItemPresenter).new(item, @facet_field.facet_field, helpers, @facet_field.key, @facet_field.search_state)
21
21
  end
22
22
  end
23
23
  end
@@ -1,6 +1,6 @@
1
1
  <div class="inclusive_or card card-body bg-light mb-3">
2
2
  <h5><%= t('blacklight.advanced_search.any_of') %></h5>
3
3
  <ul class="list-unstyled facet-values">
4
- <%= @view_context.render(Blacklight::FacetItemComponent.with_collection(presenters.to_a)) %>
4
+ <%= helpers.render(Blacklight::FacetItemComponent.with_collection(presenters.to_a)) %>
5
5
  </ul>
6
6
  </div>
@@ -22,7 +22,7 @@ module Blacklight
22
22
  return to_enum(:presenters) unless block_given?
23
23
 
24
24
  values.each do |item|
25
- yield Blacklight::FacetGroupedItemPresenter.new(values, item, @facet_field.facet_field, @view_context, @facet_field.key, @facet_field.search_state)
25
+ yield Blacklight::FacetGroupedItemPresenter.new(values, item, @facet_field.facet_field, helpers, @facet_field.key, @facet_field.search_state)
26
26
  end
27
27
  end
28
28
  end
@@ -3,7 +3,7 @@
3
3
  <%= @facet_field.label %>
4
4
  <% end %>
5
5
  <% component.body do %>
6
- <%= @view_context.render(Blacklight::FacetFieldInclusiveConstraintComponent.new(facet_field: @facet_field)) %>
6
+ <%= helpers.render(Blacklight::FacetFieldInclusiveConstraintComponent.new(facet_field: @facet_field)) %>
7
7
  <ul class="facet-values list-unstyled">
8
8
  <%= render_facet_limit_list @facet_field.paginator, @facet_field.key %>
9
9
  </ul>
@@ -11,7 +11,7 @@ module Blacklight
11
11
  # @private
12
12
  def render_facet_limit_list(*args)
13
13
  Deprecation.silence(Blacklight::FacetsHelperBehavior) do
14
- @view_context.render_facet_limit_list(*args)
14
+ helpers.render_facet_limit_list(*args)
15
15
  end
16
16
  end
17
17
 
@@ -1,9 +1,9 @@
1
1
  <div class="prev_next_links btn-group">
2
- <%= @view_context.link_to_previous_page @facet_field.paginator, raw(t('views.pagination.previous')), params: @facet_field.search_state.to_h, param_name: param_name, class: 'btn btn-link', data: { blacklight_modal: "preserve" } do %>
2
+ <%= helpers.link_to_previous_page @facet_field.paginator, raw(t('views.pagination.previous')), params: @facet_field.search_state.to_h, param_name: param_name, class: 'btn btn-link', data: { blacklight_modal: "preserve" } do %>
3
3
  <%= content_tag :span, raw(t('views.pagination.previous')), class: 'disabled btn' %>
4
4
  <% end %>
5
5
 
6
- <%= @view_context.link_to_next_page @facet_field.paginator, raw(t('views.pagination.next')), params: @facet_field.search_state.to_h, param_name: param_name, class: 'btn btn-link', data: { blacklight_modal: "preserve" } do %>
6
+ <%= helpers.link_to_next_page @facet_field.paginator, raw(t('views.pagination.next')), params: @facet_field.search_state.to_h, param_name: param_name, class: 'btn btn-link', data: { blacklight_modal: "preserve" } do %>
7
7
  <%= content_tag :span, raw(t('views.pagination.next')), class: 'disabled btn' %>
8
8
  <% end %>
9
9
  </div>
@@ -11,9 +11,9 @@
11
11
  <div class="sort-options btn-group">
12
12
  <% if @facet_field.paginator.sort == 'index' -%>
13
13
  <span class="active az btn btn-outline-secondary"><%= t('blacklight.search.facets.sort.index') %></span>
14
- <%= @view_context.link_to(t('blacklight.search.facets.sort.count'), sort_facet_url('count'), class: "sort_change numeric btn btn-outline-secondary", data: { blacklight_modal: "preserve" }) %>
14
+ <%= helpers.link_to(t('blacklight.search.facets.sort.count'), sort_facet_url('count'), class: "sort_change numeric btn btn-outline-secondary", data: { blacklight_modal: "preserve" }) %>
15
15
  <% elsif @facet_field.paginator.sort == 'count' -%>
16
- <%= @view_context.link_to(t('blacklight.search.facets.sort.index'), sort_facet_url('index'), class: "sort_change az btn btn-outline-secondary", data: { blacklight_modal: "preserve" }) %>
16
+ <%= helpers.link_to(t('blacklight.search.facets.sort.index'), sort_facet_url('index'), class: "sort_change az btn btn-outline-secondary", data: { blacklight_modal: "preserve" }) %>
17
17
  <span class="active numeric btn btn-outline-secondary"><%= t('blacklight.search.facets.sort.count') %></span>
18
18
  <% end -%>
19
19
  </div>
@@ -87,7 +87,7 @@ module Blacklight
87
87
  # remove link
88
88
  link_to(@href, class: "remove", rel: "nofollow") do
89
89
  tag.span('✖', class: "remove-icon", aria: { hidden: true }) +
90
- tag.span(@view_context.t(:'blacklight.search.facets.selected.remove'), class: 'sr-only visually-hidden')
90
+ tag.span(helpers.t(:'blacklight.search.facets.selected.remove'), class: 'sr-only visually-hidden')
91
91
  end
92
92
  end + render_facet_count(classes: ["selected"])
93
93
  end
@@ -101,7 +101,7 @@ module Blacklight
101
101
  # @return [String]
102
102
  # @private
103
103
  def render_facet_count(options = {})
104
- return @view_context.render_facet_count(@hits, options) unless @view_context.method(:render_facet_count).owner == Blacklight::FacetsHelperBehavior || explicit_component_configuration?
104
+ return helpers.render_facet_count(@hits, options) unless helpers.method(:render_facet_count).owner == Blacklight::FacetsHelperBehavior || explicit_component_configuration?
105
105
 
106
106
  return '' if @hits.blank?
107
107
 
@@ -74,11 +74,11 @@ module Blacklight
74
74
  # with overrides of deprecated helpers. In 8.x, we can just call Component#render_in
75
75
  # and call it a day
76
76
  def render_component(component)
77
- @view_context.render(component)
77
+ helpers.render(component)
78
78
  end
79
79
 
80
80
  def facet_item_presenter(facet_item)
81
- (@facet_item.facet_config.item_presenter || Blacklight::FacetItemPresenter).new(facet_item, @facet_item.facet_config, @view_context, @facet_item.facet_field, @facet_item.search_state)
81
+ (@facet_item.facet_config.item_presenter || Blacklight::FacetItemPresenter).new(facet_item, @facet_item.facet_config, helpers, @facet_item.facet_field, @facet_item.search_state)
82
82
  end
83
83
  end
84
84
  end
@@ -17,9 +17,9 @@ module Blacklight
17
17
  def label
18
18
  Deprecation.silence(Blacklight::BlacklightHelperBehavior) do
19
19
  if @show
20
- @view_context.render_document_show_field_label @field.document, label: @field.label('show'), field: @field.key
20
+ helpers.render_document_show_field_label @field.document, label: @field.label('show'), field: @field.key
21
21
  else
22
- @view_context.render_index_field_label @field.document, label: @field.label, field: @field.key
22
+ helpers.render_index_field_label @field.document, label: @field.label, field: @field.key
23
23
  end
24
24
  end
25
25
  end
@@ -23,7 +23,7 @@
23
23
 
24
24
  <%= content_tag :div, id: @panel_id, class: 'facets-collapse collapse' do %>
25
25
  <% Deprecation.silence(Blacklight::FacetsHelperBehavior) do %>
26
- <%= @view_context.render_facet_partials @fields, response: @response %>
26
+ <%= helpers.render_facet_partials @fields, response: @response %>
27
27
  <% end %>
28
28
  <% end %>
29
29
  <% end %>
@@ -18,7 +18,7 @@ module Blacklight
18
18
 
19
19
  def render?
20
20
  Deprecation.silence(Blacklight::FacetsHelperBehavior) do
21
- @view_context.has_facet_values?(@fields, @response)
21
+ helpers.has_facet_values?(@fields, @response)
22
22
  end
23
23
  end
24
24
  end
@@ -13,7 +13,7 @@ module Blacklight
13
13
  end
14
14
 
15
15
  def pagination
16
- @view_context.paginate @response, **@pagination_args
16
+ helpers.paginate @response, **@pagination_args
17
17
  end
18
18
  end
19
19
  end
@@ -1,4 +1,4 @@
1
- <%= @view_context.render(Blacklight::System::DropdownComponent.new(
1
+ <%= helpers.render(Blacklight::System::DropdownComponent.new(
2
2
  param: @param,
3
3
  choices: @choices,
4
4
  id: @id,
@@ -8,18 +8,29 @@ module Blacklight
8
8
  # @param [Array<String>] options explicit spellcheck options to render
9
9
  def initialize(response:, options: nil)
10
10
  @response = response
11
- @options = options || @response&.spelling&.words
11
+ @options = options
12
+ @options ||= options_from_response(@response)
12
13
  end
13
14
 
14
15
  def link_to_query(query)
15
16
  Deprecation.silence(Blacklight::UrlHelperBehavior) do
16
- @view_context.link_to_query(query)
17
+ helpers.link_to_query(query)
17
18
  end
18
19
  end
19
20
 
20
21
  def render?
21
22
  Deprecation.silence(Blacklight::BlacklightHelperBehavior) do
22
- @options.any? && @view_context.should_show_spellcheck_suggestions?(@response)
23
+ @options&.any? && helpers.should_show_spellcheck_suggestions?(@response)
24
+ end
25
+ end
26
+
27
+ private
28
+
29
+ def options_from_response(response)
30
+ if response&.spelling&.collation
31
+ [response.spelling.collation]
32
+ elsif response&.spelling&.words
33
+ response.spelling.words
23
34
  end
24
35
  end
25
36
  end