blacklight 7.10.0 → 7.11.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (147) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +56 -7
  3. data/.rubocop_todo.yml +113 -98
  4. data/.travis.yml +0 -2
  5. data/Gemfile +0 -7
  6. data/README.md +1 -0
  7. data/VERSION +1 -1
  8. data/app/assets/javascripts/blacklight/blacklight.js +1 -2
  9. data/app/components/blacklight/document/bookmark_component.html.erb +16 -0
  10. data/app/components/blacklight/document/bookmark_component.rb +19 -0
  11. data/app/components/blacklight/document/citation_component.html.erb +9 -0
  12. data/app/components/blacklight/document/citation_component.rb +24 -0
  13. data/app/components/blacklight/document/more_like_this_component.html.erb +12 -0
  14. data/app/components/blacklight/document/more_like_this_component.rb +21 -0
  15. data/app/components/blacklight/document_component.html.erb +29 -0
  16. data/app/components/blacklight/document_component.rb +121 -0
  17. data/app/components/blacklight/document_metadata_component.html.erb +5 -0
  18. data/app/components/blacklight/document_metadata_component.rb +21 -0
  19. data/app/components/blacklight/facet_item_component.rb +6 -6
  20. data/app/components/blacklight/metadata_field_component.html.erb +8 -0
  21. data/app/components/blacklight/metadata_field_component.rb +31 -0
  22. data/app/components/blacklight/metadata_field_layout_component.html.erb +2 -0
  23. data/app/components/blacklight/metadata_field_layout_component.rb +16 -0
  24. data/app/components/blacklight/response/facet_group_component.html.erb +25 -0
  25. data/app/components/blacklight/response/facet_group_component.rb +19 -0
  26. data/app/components/blacklight/response/pagination_component.html.erb +3 -0
  27. data/app/components/blacklight/response/pagination_component.rb +17 -0
  28. data/app/components/blacklight/response/sort_component.html.erb +6 -0
  29. data/app/components/blacklight/response/sort_component.rb +16 -0
  30. data/app/components/blacklight/response/spellcheck_component.html.erb +7 -0
  31. data/app/components/blacklight/response/spellcheck_component.rb +20 -0
  32. data/app/components/blacklight/search_bar_component.html.erb +29 -0
  33. data/app/components/blacklight/search_bar_component.rb +45 -0
  34. data/app/components/blacklight/search_context_component.html.erb +10 -0
  35. data/app/components/blacklight/search_context_component.rb +30 -0
  36. data/app/components/blacklight/system/dropdown_component.html.erb +12 -0
  37. data/app/components/blacklight/system/dropdown_component.rb +42 -0
  38. data/app/components/blacklight/system/modal_component.html.erb +25 -0
  39. data/app/components/blacklight/system/modal_component.rb +9 -0
  40. data/app/controllers/concerns/blacklight/catalog.rb +5 -4
  41. data/app/controllers/concerns/blacklight/default_component_configuration.rb +2 -2
  42. data/app/controllers/concerns/blacklight/searchable.rb +11 -0
  43. data/app/helpers/blacklight/blacklight_helper_behavior.rb +14 -3
  44. data/app/helpers/blacklight/catalog_helper_behavior.rb +1 -0
  45. data/app/helpers/blacklight/component_helper_behavior.rb +2 -2
  46. data/app/helpers/blacklight/configuration_helper_behavior.rb +6 -0
  47. data/app/helpers/blacklight/facets_helper_behavior.rb +1 -1
  48. data/app/helpers/blacklight/icon_helper_behavior.rb +2 -2
  49. data/app/helpers/blacklight/search_history_constraints_helper_behavior.rb +7 -10
  50. data/app/helpers/blacklight/url_helper_behavior.rb +3 -3
  51. data/app/javascript/blacklight/search_context.js +0 -1
  52. data/app/models/blacklight/icon.rb +1 -0
  53. data/app/models/concerns/blacklight/document.rb +1 -0
  54. data/app/models/record_mailer.rb +1 -1
  55. data/app/presenters/blacklight/document_presenter.rb +7 -1
  56. data/app/presenters/blacklight/field_presenter.rb +1 -0
  57. data/app/presenters/blacklight/rendering/microdata.rb +1 -1
  58. data/app/services/blacklight/field_retriever.rb +1 -0
  59. data/app/services/blacklight/search_service.rb +1 -0
  60. data/app/views/catalog/_bookmark_control.html.erb +1 -36
  61. data/app/views/catalog/_citation.html.erb +4 -25
  62. data/app/views/catalog/_did_you_mean.html.erb +1 -5
  63. data/app/views/catalog/_document.atom.builder +3 -3
  64. data/app/views/catalog/_document.html.erb +5 -5
  65. data/app/views/catalog/_facet_group.html.erb +5 -19
  66. data/app/views/catalog/_index.html.erb +1 -10
  67. data/app/views/catalog/_paginate_compact.html.erb +6 -6
  68. data/app/views/catalog/_per_page_widget.html.erb +9 -12
  69. data/app/views/catalog/_previous_next_doc.html.erb +1 -12
  70. data/app/views/catalog/_results_pagination.html.erb +1 -3
  71. data/app/views/catalog/_search_form.html.erb +6 -27
  72. data/app/views/catalog/_show.html.erb +6 -8
  73. data/app/views/catalog/_show_main_content.html.erb +19 -13
  74. data/app/views/catalog/_show_sidebar.html.erb +1 -11
  75. data/app/views/catalog/_sort_widget.html.erb +5 -12
  76. data/app/views/catalog/email.html.erb +7 -7
  77. data/app/views/catalog/email_success.html.erb +5 -12
  78. data/app/views/catalog/facet.html.erb +14 -17
  79. data/app/views/catalog/index.atom.builder +0 -1
  80. data/app/views/catalog/sms.html.erb +7 -7
  81. data/app/views/catalog/sms_success.html.erb +5 -12
  82. data/blacklight.gemspec +3 -2
  83. data/config/i18n-tasks.yml +3 -0
  84. data/config/locales/blacklight.ar.yml +2 -0
  85. data/config/locales/blacklight.de.yml +2 -0
  86. data/config/locales/blacklight.en.yml +2 -0
  87. data/config/locales/blacklight.es.yml +4 -2
  88. data/config/locales/blacklight.fr.yml +2 -0
  89. data/config/locales/blacklight.hu.yml +2 -0
  90. data/config/locales/blacklight.it.yml +2 -0
  91. data/config/locales/blacklight.nl.yml +2 -0
  92. data/config/locales/blacklight.pt-BR.yml +2 -0
  93. data/config/locales/blacklight.sq.yml +2 -0
  94. data/config/locales/blacklight.zh.yml +2 -0
  95. data/lib/blacklight.rb +10 -0
  96. data/lib/blacklight/configuration.rb +8 -3
  97. data/lib/blacklight/configuration/fields.rb +5 -7
  98. data/lib/blacklight/engine.rb +1 -1
  99. data/lib/blacklight/nested_open_struct_with_hash_access.rb +1 -0
  100. data/lib/blacklight/search_state.rb +21 -7
  101. data/lib/blacklight/solr/response.rb +1 -0
  102. data/lib/blacklight/solr/response/facets.rb +9 -8
  103. data/lib/generators/blacklight/models_generator.rb +2 -0
  104. data/lib/generators/blacklight/templates/config/blacklight.yml +1 -0
  105. data/lib/railties/blacklight.rake +18 -13
  106. data/package.json +1 -1
  107. data/spec/components/blacklight/constraint_layout_component_spec.rb +1 -0
  108. data/spec/components/blacklight/document_component_spec.rb +129 -0
  109. data/spec/components/blacklight/document_metadata_component_spec.rb +0 -0
  110. data/spec/components/blacklight/metadata_field_component_spec.rb +41 -0
  111. data/spec/controllers/blacklight/search_fields_spec.rb +2 -2
  112. data/spec/controllers/catalog_controller_spec.rb +20 -0
  113. data/spec/features/search_context_spec.rb +12 -2
  114. data/spec/features/search_filters_spec.rb +4 -0
  115. data/spec/features/search_results_spec.rb +1 -0
  116. data/spec/features/sitelinks_search_box.rb +1 -0
  117. data/spec/helpers/blacklight/configuration_helper_behavior_spec.rb +3 -0
  118. data/spec/helpers/blacklight/render_partials_helper_behavior_spec.rb +1 -0
  119. data/spec/helpers/blacklight/search_history_constraints_helper_behavior_spec.rb +2 -0
  120. data/spec/helpers/blacklight/url_helper_behavior_spec.rb +1 -1
  121. data/spec/helpers/blacklight_helper_spec.rb +14 -1
  122. data/spec/helpers/catalog_helper_spec.rb +1 -4
  123. data/spec/lib/blacklight/search_state_spec.rb +32 -0
  124. data/spec/models/blacklight/configuration_spec.rb +5 -0
  125. data/spec/models/blacklight/document/cache_key_spec.rb +1 -0
  126. data/spec/models/blacklight/document/email_spec.rb +2 -0
  127. data/spec/models/blacklight/document/sms_spec.rb +2 -0
  128. data/spec/models/blacklight/facet_paginator_spec.rb +3 -0
  129. data/spec/models/blacklight/icon_spec.rb +6 -0
  130. data/spec/models/blacklight/solr/document_spec.rb +10 -0
  131. data/spec/models/blacklight/solr/response/facets_spec.rb +1 -1
  132. data/spec/models/blacklight/solr/response/group_response_spec.rb +2 -0
  133. data/spec/models/blacklight/solr/search_builder_spec.rb +10 -0
  134. data/spec/models/record_mailer_spec.rb +9 -0
  135. data/spec/models/search_spec.rb +1 -0
  136. data/spec/presenters/blacklight/show_presenter_spec.rb +8 -0
  137. data/spec/routing/catalog_routing_spec.rb +4 -0
  138. data/spec/services/blacklight/search_service_spec.rb +7 -0
  139. data/spec/spec_helper.rb +1 -1
  140. data/spec/views/catalog/_document.html.erb_spec.rb +13 -11
  141. data/spec/views/catalog/_facet_group.html.erb_spec.rb +1 -0
  142. data/spec/views/catalog/_facet_index_navigation.html.erb_spec.rb +1 -0
  143. data/spec/views/catalog/_previous_next_doc.html.erb_spec.rb +4 -0
  144. data/spec/views/catalog/index.atom.builder_spec.rb +40 -3
  145. data/spec/views/catalog/show.html.erb_spec.rb +14 -0
  146. data/tasks/blacklight.rake +7 -7
  147. metadata +56 -6
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
  module Blacklight::ConfigurationHelperBehavior
3
+ extend Deprecation
4
+
3
5
  ##
4
6
  # Index fields to display for a type of document
5
7
  #
@@ -60,6 +62,7 @@ module Blacklight::ConfigurationHelperBehavior
60
62
 
61
63
  field_config.display_label('index')
62
64
  end
65
+ deprecation_deprecate :index_field_label
63
66
 
64
67
  ##
65
68
  # Look up the label for the show field
@@ -69,6 +72,7 @@ module Blacklight::ConfigurationHelperBehavior
69
72
 
70
73
  field_config.display_label('show')
71
74
  end
75
+ deprecation_deprecate :document_show_field_label
72
76
 
73
77
  ##
74
78
  # Look up the label for the facet field
@@ -183,6 +187,8 @@ module Blacklight::ConfigurationHelperBehavior
183
187
  ##
184
188
  # The available options for results per page, in the style of #options_for_select
185
189
  def per_page_options_for_select
190
+ return [] if blacklight_config.per_page.blank?
191
+
186
192
  blacklight_config.per_page.map do |count|
187
193
  [t(:'blacklight.search.per_page.label', count: count).html_safe, count]
188
194
  end
@@ -224,7 +224,7 @@ module Blacklight::FacetsHelperBehavior
224
224
  def render_facet_count(num, options = {})
225
225
  deprecated_method(:render_facet_count)
226
226
  classes = (options[:classes] || []) << "facet-count"
227
- content_tag("span", t('blacklight.search.facets.count', number: number_with_delimiter(num)), class: classes)
227
+ tag.span(t('blacklight.search.facets.count', number: number_with_delimiter(num)), class: classes)
228
228
  end
229
229
 
230
230
  ##
@@ -11,8 +11,8 @@ module Blacklight::IconHelperBehavior
11
11
  # @return [String]
12
12
  def blacklight_icon(icon_name, options = {})
13
13
  Rails.cache.fetch([:blacklight_icons, icon_name, options]) do
14
- icon = Blacklight::Icon.new(icon_name, options)
15
- content_tag(:span, icon.svg.html_safe, icon.options)
14
+ icon = Blacklight::Icon.new(icon_name, **options)
15
+ tag.span(icon.svg.html_safe, icon.options)
16
16
  end
17
17
  end
18
18
  end
@@ -35,7 +35,7 @@ module Blacklight::SearchHistoryConstraintsHelperBehavior
35
35
  safe_join(value_list.collect do |value|
36
36
  render_filter_value(value, facet_field)
37
37
  end,
38
- content_tag(:span, " #{t('blacklight.and')} ", class: 'filter-separator')))
38
+ tag.span(" #{t('blacklight.and')} ", class: 'filter-separator')))
39
39
  end, " \n ")
40
40
  end
41
41
 
@@ -43,9 +43,8 @@ module Blacklight::SearchHistoryConstraintsHelperBehavior
43
43
  # 'and'. Pass in option :escape_value => false to pass in pre-rendered
44
44
  # html for value. key with escape_key if needed.
45
45
  def render_search_to_s_element(key, value, _options = {})
46
- content_tag(:span,
47
- render_filter_name(key) + content_tag(:span, value, class: 'filter-values'),
48
- class: 'constraint')
46
+ tag.span(render_filter_name(key) + tag.span(value, class: 'filter-values'),
47
+ class: 'constraint')
49
48
  end
50
49
 
51
50
  ##
@@ -53,9 +52,8 @@ module Blacklight::SearchHistoryConstraintsHelperBehavior
53
52
  def render_filter_name name
54
53
  return "".html_safe if name.blank?
55
54
 
56
- content_tag(:span,
57
- t('blacklight.search.filters.label', label: name),
58
- class: 'filter-name')
55
+ tag.span(t('blacklight.search.filters.label', label: name),
56
+ class: 'filter-name')
59
57
  end
60
58
 
61
59
  ##
@@ -63,8 +61,7 @@ module Blacklight::SearchHistoryConstraintsHelperBehavior
63
61
  def render_filter_value value, key = nil
64
62
  display_value = value
65
63
  display_value = facet_display_value(key, value) if key
66
- content_tag(:span,
67
- h(display_value),
68
- class: 'filter-value')
64
+ tag.span(h(display_value),
65
+ class: 'filter-value')
69
66
  end
70
67
  end
@@ -47,7 +47,7 @@ module Blacklight::UrlHelperBehavior
47
47
  def link_to_previous_document(previous_document)
48
48
  link_opts = session_tracking_params(previous_document, search_session['counter'].to_i - 1).merge(class: "previous", rel: 'prev')
49
49
  link_to_unless previous_document.nil?, raw(t('views.pagination.previous')), url_for_document(previous_document), link_opts do
50
- content_tag :span, raw(t('views.pagination.previous')), class: 'previous'
50
+ tag.span raw(t('views.pagination.previous')), class: 'previous'
51
51
  end
52
52
  end
53
53
 
@@ -56,7 +56,7 @@ module Blacklight::UrlHelperBehavior
56
56
  def link_to_next_document(next_document)
57
57
  link_opts = session_tracking_params(next_document, search_session['counter'].to_i + 1).merge(class: "next", rel: 'next')
58
58
  link_to_unless next_document.nil?, raw(t('views.pagination.next')), url_for_document(next_document), link_opts do
59
- content_tag :span, raw(t('views.pagination.next')), class: 'next'
59
+ tag.span raw(t('views.pagination.next')), class: 'next'
60
60
  end
61
61
  end
62
62
 
@@ -68,7 +68,7 @@ module Blacklight::UrlHelperBehavior
68
68
  # session_tracking_params(SolrDocument.new(id: 123), 7)
69
69
  # => { data: { :'context-href' => '/catalog/123/track?counter=7&search_id=999' } }
70
70
  def session_tracking_params document, counter
71
- path = session_tracking_path(document, per_page: params.fetch(:per_page, search_session['per_page']), counter: counter, search_id: current_search_session.try(:id))
71
+ path = session_tracking_path(document, per_page: params.fetch(:per_page, search_session['per_page']), counter: counter, search_id: current_search_session.try(:id), document_id: document&.id)
72
72
 
73
73
  if path.nil?
74
74
  return {}
@@ -59,7 +59,6 @@ Blacklight.handleSearchContextMethod = function(event) {
59
59
 
60
60
  event.preventDefault()
61
61
  event.stopPropagation()
62
- event.stopImmediatePropagation()
63
62
  };
64
63
 
65
64
  Blacklight.onLoad(function() {
@@ -3,6 +3,7 @@
3
3
  module Blacklight
4
4
  class Icon
5
5
  attr_reader :icon_name, :aria_hidden, :label, :role, :additional_options
6
+
6
7
  ##
7
8
  # @param [String, Symbol] icon_name
8
9
  # @param [Hash] options
@@ -105,6 +105,7 @@ module Blacklight::Document
105
105
  # extendability architecture
106
106
  module ClassMethods
107
107
  attr_writer :unique_key
108
+
108
109
  def unique_key
109
110
  @unique_key ||= 'id'
110
111
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
  # Only works for documents with a #to_marc right now.
3
- class RecordMailer < ActionMailer::Base
3
+ class RecordMailer < ApplicationMailer
4
4
  def email_record(documents, details, url_gen_params)
5
5
  title = begin
6
6
  documents.first.to_semantic_values[:title]
@@ -30,6 +30,12 @@ module Blacklight
30
30
  end
31
31
  end
32
32
 
33
+ def field_presenters
34
+ return to_enum(:field_presenters) unless block_given?
35
+
36
+ fields_to_render.each { |_, _, config| yield config }
37
+ end
38
+
33
39
  ##
34
40
  # Get the value of the document's "title" field, or a placeholder
35
41
  # value (if empty)
@@ -40,7 +46,7 @@ module Blacklight
40
46
 
41
47
  fields = Array.wrap(view_config.title_field) + [configuration.document_model.unique_key]
42
48
  f = fields.lazy.map { |field| field_config(field) }.detect { |field_config| field_presenter(field_config).any? }
43
- field_value(f, except_operations: [Rendering::HelperMethod])
49
+ f ? field_value(f, except_operations: [Rendering::HelperMethod]) : ""
44
50
  end
45
51
 
46
52
  def display_type(base_name = nil, default: nil)
@@ -29,6 +29,7 @@ module Blacklight
29
29
  end
30
30
 
31
31
  attr_reader :view_context, :document, :field_config, :except_operations, :options
32
+ delegate :key, to: :field_config
32
33
 
33
34
  def render
34
35
  Rendering::Pipeline.new(values, field_config, document, view_context, pipeline_steps, options).render
@@ -13,7 +13,7 @@ module Blacklight
13
13
  private
14
14
 
15
15
  def itemprop(val, itemprop)
16
- content_tag :span, val, itemprop: itemprop
16
+ tag.span val, itemprop: itemprop
17
17
  end
18
18
  end
19
19
  end
@@ -10,6 +10,7 @@ module Blacklight
10
10
  end
11
11
 
12
12
  attr_reader :document, :field_config
13
+
13
14
  delegate :field, to: :field_config
14
15
 
15
16
  # @return [Array]
@@ -88,6 +88,7 @@ module Blacklight
88
88
  private
89
89
 
90
90
  attr_reader :search_builder_class, :user_params
91
+
91
92
  delegate :repository, to: :blacklight_config
92
93
 
93
94
  ##
@@ -1,36 +1 @@
1
- <% if current_or_guest_user %>
2
- <%-
3
- # Note these two forms are pretty similar but for different :methods, classes, and labels.
4
- # but it was simpler to leave them seperate instead of DRYing them, got confusing trying that.
5
- # the data-doc-id attribute is used by our JS that converts to a checkbox/label.
6
- -%>
7
- <% if bookmarked? document %>
8
- <%= form_tag(bookmark_path(document),
9
- method: :delete,
10
- class: "bookmark-toggle",
11
- data: {
12
- 'doc-id' => document.id,
13
- present: t('blacklight.search.bookmarks.present'),
14
- absent: t('blacklight.search.bookmarks.absent'),
15
- inprogress: t('blacklight.search.bookmarks.inprogress')
16
- }) do %>
17
- <%= submit_tag(t('blacklight.bookmarks.remove.button'),
18
- id: "bookmark_toggle_#{document.id.to_s.parameterize}",
19
- class: "bookmark-remove btn btn-outline-secondary") %>
20
- <% end %>
21
- <% else %>
22
- <%= form_tag(bookmark_path(document),
23
- method: :put,
24
- class: 'bookmark-toggle',
25
- data: {
26
- 'doc-id' => document.id,
27
- present: t('blacklight.search.bookmarks.present'),
28
- absent: t('blacklight.search.bookmarks.absent'),
29
- inprogress: t('blacklight.search.bookmarks.inprogress')
30
- }) do %>
31
- <%= submit_tag(t('blacklight.bookmarks.add.button'),
32
- id: "bookmark_toggle_#{document.id.to_s.parameterize}",
33
- class: "bookmark-add btn btn-outline-secondary") %>
34
- <% end %>
35
- <% end %>
36
- <% end %>
1
+ <%= render Blacklight::Document::BookmarkComponent.new(document: document, bookmark_path: bookmark_path(document)) if current_or_guest_user %>
@@ -1,26 +1,5 @@
1
- <div class="modal-header">
2
- <h1><%= t('blacklight.tools.citation') %></h1>
3
- <button type="button" class="blacklight-modal-close close" data-dismiss="modal" aria-label="<%= t('blacklight.modal.close') %>">
4
- <span aria-hidden="true">&times;</span>
5
- </button>
6
- </div>
7
- <div class="modal-body">
8
- <% @documents&.each do |document| %>
9
- <h1 class="modal-title"><%= document_heading(document) %></h1>
1
+ <%= render Blacklight::System::ModalComponent.new do |component| %>
2
+ <% component.with(:title, t('blacklight.tools.citation')) %>
10
3
 
11
- <% if document.respond_to?(:export_as_mla_citation_txt) %>
12
- <h2><%= t('blacklight.citation.mla') %></h2>
13
- <%= document.send(:export_as_mla_citation_txt).html_safe %><br/><br/>
14
- <% end %>
15
-
16
- <% if document.respond_to?(:export_as_apa_citation_txt) %>
17
- <h2><%= t('blacklight.citation.apa') %></h2>
18
- <%= document.send(:export_as_apa_citation_txt).html_safe %><br/><br/>
19
- <% end %>
20
-
21
- <% if document.respond_to?(:export_as_chicago_citation_txt) %>
22
- <h2><%= t('blacklight.citation.chicago') %></h2>
23
- <%= document.send(:export_as_chicago_citation_txt).html_safe %>
24
- <% end %>
25
- <% end %>
26
- </div>
4
+ <%= render Blacklight::Document::CitationComponent.with_collection(@documents) if @documents.present? %>
5
+ <% end %>
@@ -1,5 +1 @@
1
- <% if should_show_spellcheck_suggestions? @response %>
2
- <div id="spell">
3
- <h3 class="suggest"><em><%= t('blacklight.did_you_mean', :options => safe_join(@response.spelling.words.map { |word| link_to_query(word) }, " #{t('blacklight.or')} ")).html_safe %></em></h3>
4
- </div>
5
- <% end %>
1
+ <%= render(Blacklight::Response::SpellcheckComponent.new(response: @response)) %>
@@ -19,9 +19,9 @@ xml.entry do
19
19
 
20
20
  with_format(:html) do
21
21
  xml.summary "type" => "html" do
22
- xml.text! render_document_partial(document,
23
- :index,
24
- document_counter: document_counter)
22
+ xml.text! render_document_partials(document,
23
+ blacklight_config.view_config(:atom).summary_partials,
24
+ document_counter: document_counter)
25
25
  end
26
26
  end
27
27
 
@@ -1,6 +1,6 @@
1
1
  <% # container for a single doc -%>
2
- <article class="document <%= render_document_class document %> document-position-<%= document_counter%> " data-document-counter="<%= document_counter %>" itemscope itemtype="<%= document.itemtype %>">
3
- <%= render_document_partials document,
4
- blacklight_config.view_config(document_index_view_type).partials,
5
- document_counter: document_counter %>
6
- </article>
2
+ <%= render (blacklight_config.view_config(document_index_view_type).document_component || Blacklight::DocumentComponent).new(document: document, counter: document_counter_with_offset(document_counter)) do |component| %>
3
+ <% component.with(blacklight_config.view_config(document_index_view_type).document_component.blank? && blacklight_config.view_config(document_index_view_type).partials.any? ? :body : :partials) do %>
4
+ <%= render_document_partials document, blacklight_config.view_config(document_index_view_type).partials, component: component, document_counter: document_counter %>
5
+ <% end %>
6
+ <% end %>
@@ -1,19 +1,5 @@
1
- <% # main container for facets/limits menu -%>
2
- <% if has_facet_values? facet_field_names(groupname), @response %>
3
- <div id="facets<%= "-#{groupname}" unless groupname.nil? %>" class="facets sidenav facets-toggleable-md">
4
-
5
- <div class="facets-header">
6
- <h2 class="facets-heading">
7
- <%= groupname.blank? ? t('blacklight.search.facets.title') : t("blacklight.search.facets-#{groupname}.title") %>
8
- </h2>
9
-
10
- <button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#facet-panel<%= "-#{groupname}" unless groupname.nil? %>-collapse" aria-controls="facet-panel<%= "-#{groupname}" unless groupname.nil? %>-collapse" aria-expanded="false" aria-label="Toggle facets">
11
- <span class="navbar-toggler-icon"></span>
12
- </button>
13
- </div>
14
-
15
- <div id="facet-panel<%= "-#{groupname}" unless groupname.nil? %>-collapse" class="facets-collapse collapse">
16
- <%= render_facet_partials facet_field_names(groupname), response: @response %>
17
- </div>
18
- </div>
19
- <% end %>
1
+ <%= render Blacklight::Response::FacetGroupComponent.new(
2
+ response: @response,
3
+ id: groupname,
4
+ fields: facet_field_names(groupname),
5
+ title: groupname.present? ? t("blacklight.search.facets-#{groupname}.title") : t('blacklight.search.facets.title')) %>
@@ -1,10 +1 @@
1
- <% doc_presenter = index_presenter(document) %>
2
- <%# default partial to display solr document fields in catalog index view -%>
3
- <dl class="document-metadata dl-invert row">
4
-
5
- <% doc_presenter.fields_to_render.each do |field_name, field, field_presenter| -%>
6
- <dt class="blacklight-<%= field_name.parameterize %> col-md-3"><%= render_index_field_label document, label: field_presenter.label, field: field_name %></dt>
7
- <dd class="blacklight-<%= field_name.parameterize %> col-md-9"><%= field_presenter.render %></dd>
8
- <% end -%>
9
-
10
- </dl>
1
+ <%= render(Blacklight::DocumentMetadataComponent.new(fields: index_presenter(document).field_presenters)) %>
@@ -1,6 +1,6 @@
1
- <%# Call with a Blacklight::Solr::Response or any other kaminari-compatible collection
2
- to render Blacklight's compact pagination info component:
3
-
4
- <%= render :partial => "paginate_compact", :object => @response
5
- -%>
6
- <%= paginate paginate_compact, :page_entries_info => page_entries_info(paginate_compact), :theme => :blacklight_compact %>
1
+ <%= render Blacklight::Response::PaginationComponent.new(
2
+ response: paginate_compact,
3
+ theme: :blacklight_compact,
4
+ page_entries_info: page_entries_info(paginate_compact),
5
+ html: { aria: {} })
6
+ %>
@@ -1,13 +1,10 @@
1
- <% if show_sort_and_per_page? and !blacklight_config.per_page.blank? %>
2
- <span class="sr-only"><%= t('blacklight.search.per_page.title') %></span>
3
- <div id="per_page-dropdown" class="per-page-dropdown btn-group">
4
- <button type="button" class="btn btn-outline-secondary dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
5
- <%= t(:'blacklight.search.per_page.button_label_html', :count => current_per_page) %> <span class="caret"></span>
6
- </button>
7
- <div class="dropdown-menu dropdown-menu-right" role="menu">
8
- <%- per_page_options_for_select.each do |(label, count)| %>
9
- <%= link_to(label, url_for(search_state.params_for_search(per_page: count)), class: 'dropdown-item', role: 'menuitem') %>
10
- <%- end -%>
11
- </div>
12
- </div>
1
+ <% if show_sort_and_per_page? %>
2
+ <span class="sr-only"><%= t('blacklight.search.per_page.title') %></span>
3
+ <%= render(Blacklight::System::DropdownComponent.new(
4
+ param: :per_page,
5
+ choices: per_page_options_for_select,
6
+ id: 'per_page-dropdown',
7
+ search_state: search_state,
8
+ selected: current_per_page,
9
+ interpolation: :count)) %>
13
10
  <% end %>
@@ -1,12 +1 @@
1
- <% if @search_context[:prev] || @search_context[:next] %>
2
- <div class='pagination-search-widgets'>
3
-
4
- <div class="page-links">
5
- <%= link_to_previous_document @search_context[:prev] %> |
6
-
7
- <%= item_page_entry_info %> |
8
-
9
- <%= link_to_next_document @search_context[:next] %>
10
- </div>
11
- </div>
12
- <% end %>
1
+ <%= render(Blacklight::SearchContextComponent.new(search_context: @search_context, search_session: search_session)) %>
@@ -1,9 +1,7 @@
1
1
  <% if show_pagination? and @response.total_pages > 1 %>
2
2
  <div class="row record-padding">
3
3
  <div class="col-md-12">
4
- <nav class="pagination" role="region" aria-label="<%= t('views.pagination.aria.container_label') %>">
5
- <%= paginate @response, :outer_window => 2, :theme => 'blacklight' %>
6
- </nav>
4
+ <%= render Blacklight::Response::PaginationComponent.new(response: @response) %>
7
5
  </div>
8
6
  </div>
9
7
  <% end %>
@@ -1,27 +1,6 @@
1
- <%= form_tag search_action_url, method: :get, class: 'search-query-form', role: 'search', 'aria-label' => t('blacklight.search.form.submit') do %>
2
- <%= render_hash_as_hidden_fields(search_state.params_for_search.except(:q, :search_field, :qt, :page, :utf8)) %>
3
- <% if search_fields.length > 1 %>
4
- <label for="search_field" class="sr-only"><%= t('blacklight.search.form.search_field.label') %></label>
5
- <% end %>
6
- <div class="input-group">
7
- <% if search_fields.length > 1 %>
8
- <%= select_tag(:search_field,
9
- options_for_select(search_fields, h(params[:search_field])),
10
- title: t('blacklight.search.form.search_field.title'),
11
- id: "search_field",
12
- class: "custom-select search-field") %>
13
- <% elsif search_fields.length == 1 %>
14
- <%= hidden_field_tag :search_field, search_fields.first.last %>
15
- <% end %>
16
-
17
- <label for="q" class="sr-only"><%= t('blacklight.search.form.search.label') %></label>
18
- <%= text_field_tag :q, params[:q], placeholder: t('blacklight.search.form.search.placeholder'), class: "search-q q form-control rounded-#{search_fields.length > 1 ? '0' : 'left'}", id: "q", autocomplete: presenter.autocomplete_enabled? ? "off" : "", autofocus: presenter.autofocus?, data: { autocomplete_enabled: presenter.autocomplete_enabled?, autocomplete_path: search_action_path(action: :suggest) } %>
19
-
20
- <span class="input-group-append">
21
- <button type="submit" class="btn btn-primary search-btn" id="search">
22
- <span class="submit-search-text"><%= t('blacklight.search.form.submit') %></span>
23
- <%= blacklight_icon :search, aria_hidden: true %>
24
- </button>
25
- </span>
26
- </div>
27
- <% end %>
1
+ <%= render(Blacklight::SearchBarComponent.new(
2
+ url: search_action_url,
3
+ params: search_state.params_for_search.except(:qt),
4
+ search_fields: search_fields,
5
+ presenter: presenter,
6
+ autocomplete_path: search_action_path(action: :suggest))) %>