blacklight 7.10.0 → 7.11.1

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 (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))) %>