blacklight 8.3.0 → 8.5.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 (142) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +10 -6
  3. data/.rubocop.yml +3 -0
  4. data/.rubocop_todo.yml +22 -55
  5. data/Gemfile +2 -10
  6. data/README.md +2 -2
  7. data/VERSION +1 -1
  8. data/app/assets/javascripts/blacklight/blacklight.esm.js +13 -7
  9. data/app/assets/javascripts/blacklight/blacklight.esm.js.map +1 -1
  10. data/app/assets/javascripts/blacklight/blacklight.js +13 -7
  11. data/app/assets/javascripts/blacklight/blacklight.js.map +1 -1
  12. data/app/assets/stylesheets/blacklight/_balanced_list.scss +1 -1
  13. data/app/assets/stylesheets/blacklight/_bookmark.scss +30 -0
  14. data/app/assets/stylesheets/blacklight/_bootstrap_overrides.scss +0 -4
  15. data/app/assets/stylesheets/blacklight/_constraints.scss +15 -9
  16. data/app/assets/stylesheets/blacklight/_controls.scss +0 -1
  17. data/app/assets/stylesheets/blacklight/_facets.scss +33 -37
  18. data/app/assets/stylesheets/blacklight/_header.scss +2 -35
  19. data/app/assets/stylesheets/blacklight/_icons.scss +3 -2
  20. data/app/assets/stylesheets/blacklight/_layout.scss +3 -0
  21. data/app/assets/stylesheets/blacklight/_mixins.scss +4 -4
  22. data/app/assets/stylesheets/blacklight/_search_form.scss +3 -8
  23. data/app/assets/stylesheets/blacklight/_search_history.scss +5 -5
  24. data/app/assets/stylesheets/blacklight/_search_results.scss +5 -2
  25. data/app/assets/stylesheets/blacklight/blacklight_defaults.scss +16 -10
  26. data/app/components/blacklight/advanced_search_form_component.html.erb +1 -1
  27. data/app/components/blacklight/advanced_search_form_component.rb +6 -0
  28. data/app/components/blacklight/constraint_layout_component.html.erb +2 -9
  29. data/app/components/blacklight/constraint_layout_component.rb +8 -0
  30. data/app/components/blacklight/constraints_component.rb +3 -3
  31. data/app/components/blacklight/document/action_component.rb +2 -1
  32. data/app/components/blacklight/document/bookmark_component.html.erb +2 -1
  33. data/app/components/blacklight/document/bookmark_component.rb +6 -0
  34. data/app/components/blacklight/document/page_header_component.html.erb +7 -0
  35. data/app/components/blacklight/document/page_header_component.rb +85 -0
  36. data/app/components/blacklight/document_component.rb +1 -1
  37. data/app/components/blacklight/facet_component.rb +1 -1
  38. data/app/components/blacklight/facet_field_checkboxes_component.html.erb +1 -1
  39. data/app/components/blacklight/facet_field_checkboxes_component.rb +1 -1
  40. data/app/components/blacklight/facet_field_inclusive_constraint_component.html.erb +1 -1
  41. data/app/components/blacklight/facet_field_list_component.html.erb +1 -1
  42. data/app/components/blacklight/facet_item_component.rb +1 -1
  43. data/app/components/blacklight/icons/bookmark_icon_component.rb +17 -0
  44. data/app/components/blacklight/icons/icon_component.rb +9 -4
  45. data/app/components/blacklight/icons/remove_component.rb +16 -0
  46. data/app/components/blacklight/metadata_field_component.html.erb +1 -1
  47. data/app/components/blacklight/metadata_field_component.rb +5 -0
  48. data/app/components/blacklight/response/facet_group_component.rb +1 -1
  49. data/app/components/blacklight/response/pagination_component.html.erb +1 -1
  50. data/app/components/blacklight/response/sort_component.html.erb +1 -6
  51. data/app/components/blacklight/response/sort_component.rb +15 -0
  52. data/app/components/blacklight/search/per_page_component.html.erb +2 -0
  53. data/app/components/blacklight/search/per_page_component.rb +50 -0
  54. data/app/components/blacklight/search_bar_component.html.erb +1 -1
  55. data/app/components/blacklight/search_context/server_item_pagination_component.html.erb +5 -4
  56. data/app/components/blacklight/search_context/server_item_pagination_component.rb +1 -1
  57. data/app/components/blacklight/skip_link_component.html.erb +7 -0
  58. data/app/components/blacklight/skip_link_component.rb +17 -0
  59. data/app/components/blacklight/system/dropdown_button_component.rb +18 -0
  60. data/app/components/blacklight/system/dropdown_component.rb +3 -6
  61. data/app/components/blacklight/system/flash_message_component.html.erb +1 -1
  62. data/app/components/blacklight/top_navbar_component.html.erb +2 -2
  63. data/app/components/blacklight/top_navbar_component.rb +4 -0
  64. data/app/helpers/blacklight/catalog_helper_behavior.rb +2 -0
  65. data/app/helpers/blacklight/component_helper_behavior.rb +4 -4
  66. data/app/helpers/blacklight/configuration_helper_behavior.rb +2 -0
  67. data/app/helpers/blacklight/document_helper_behavior.rb +14 -0
  68. data/app/javascript/blacklight/checkbox_submit.js +7 -1
  69. data/app/javascript/blacklight/core.js +5 -5
  70. data/app/models/concerns/blacklight/document/semantic_fields.rb +1 -1
  71. data/app/presenters/blacklight/facet_checkbox_item_presenter.rb +11 -0
  72. data/app/presenters/blacklight/facet_field_presenter.rb +9 -1
  73. data/app/services/blacklight/search_service.rb +9 -1
  74. data/app/views/catalog/_per_page_widget.html.erb +1 -10
  75. data/app/views/catalog/_search_results.html.erb +1 -1
  76. data/app/views/catalog/_show_main_content.html.erb +1 -1
  77. data/app/views/catalog/_show_sidebar.html.erb +1 -0
  78. data/app/views/catalog/show.html.erb +3 -3
  79. data/app/views/catalog/suggest.html.erb +1 -1
  80. data/app/views/kaminari/blacklight/_page.html.erb +14 -8
  81. data/app/views/kaminari/blacklight/_paginator.html.erb +2 -1
  82. data/app/views/layouts/blacklight/base.html.erb +3 -5
  83. data/blacklight.gemspec +6 -2
  84. data/{docker-compose.yml → compose.yaml} +1 -1
  85. data/config/locales/blacklight.ar.yml +3 -0
  86. data/config/locales/blacklight.de.yml +3 -0
  87. data/config/locales/blacklight.en.yml +216 -229
  88. data/config/locales/blacklight.es.yml +3 -0
  89. data/config/locales/blacklight.fr.yml +3 -0
  90. data/config/locales/blacklight.hu.yml +3 -0
  91. data/config/locales/blacklight.it.yml +3 -0
  92. data/config/locales/blacklight.nl.yml +3 -0
  93. data/config/locales/blacklight.pt-BR.yml +3 -0
  94. data/config/locales/blacklight.sq.yml +3 -0
  95. data/config/locales/blacklight.zh.yml +3 -0
  96. data/lib/blacklight/abstract_repository.rb +6 -0
  97. data/lib/blacklight/component.rb +10 -47
  98. data/lib/blacklight/configuration.rb +32 -19
  99. data/lib/blacklight/engine.rb +6 -0
  100. data/lib/blacklight/parameters.rb +1 -1
  101. data/lib/blacklight/solr/repository.rb +11 -4
  102. data/lib/blacklight/solr/response/params.rb +1 -1
  103. data/lib/blacklight/solr/response.rb +0 -12
  104. data/lib/blacklight/solr/search_builder_behavior.rb +1 -1
  105. data/lib/blacklight/solr.rb +0 -6
  106. data/lib/blacklight.rb +4 -14
  107. data/lib/generators/blacklight/assets/propshaft_generator.rb +2 -2
  108. data/lib/generators/blacklight/models_generator.rb +1 -1
  109. data/lib/generators/blacklight/user_generator.rb +2 -0
  110. data/package.json +3 -2
  111. data/rollup.config.js +6 -12
  112. data/spec/components/blacklight/document/action_component_spec.rb +1 -1
  113. data/spec/components/blacklight/document/page_header_component_spec.rb +92 -0
  114. data/spec/components/blacklight/document_component_spec.rb +20 -0
  115. data/spec/components/blacklight/icons/icon_component_spec.rb +42 -0
  116. data/spec/components/blacklight/search_context/server_item_pagination_component_spec.rb +13 -2
  117. data/spec/controllers/blacklight/catalog_spec.rb +1 -1
  118. data/spec/controllers/catalog_controller_spec.rb +5 -5
  119. data/spec/features/advanced_search_spec.rb +16 -2
  120. data/spec/features/bookmarks_spec.rb +15 -0
  121. data/spec/features/search_context_spec.rb +2 -1
  122. data/spec/helpers/blacklight/facets_helper_behavior_spec.rb +2 -2
  123. data/spec/lib/blacklight/component_spec.rb +32 -27
  124. data/spec/lib/blacklight/nested_open_struct_with_hash_access_spec.rb +1 -1
  125. data/spec/lib/blacklight/open_struct_with_hash_access_spec.rb +1 -1
  126. data/spec/models/blacklight/configuration_spec.rb +12 -12
  127. data/spec/models/blacklight/solr/document_spec.rb +2 -2
  128. data/spec/models/blacklight/solr/repository_spec.rb +31 -13
  129. data/spec/models/blacklight/solr/response/facets_spec.rb +2 -2
  130. data/spec/models/blacklight/solr/response/group_spec.rb +1 -1
  131. data/spec/models/blacklight/solr/response_spec.rb +2 -2
  132. data/spec/models/blacklight/solr/search_builder_behavior_spec.rb +1 -1
  133. data/spec/models/bookmark_spec.rb +1 -1
  134. data/spec/presenters/blacklight/document_presenter_spec.rb +2 -2
  135. data/spec/presenters/blacklight/facet_checkbox_item_presenter_spec.rb +42 -0
  136. data/spec/presenters/blacklight/facet_field_presenter_spec.rb +14 -0
  137. data/spec/requests/load_suggestions_spec.rb +5 -5
  138. data/spec/services/blacklight/search_service_spec.rb +2 -2
  139. data/spec/spec_helper.rb +5 -2
  140. data/spec/test_app_templates/lib/generators/test_app_generator.rb +1 -1
  141. data/tasks/blacklight.rake +6 -6
  142. metadata +86 -8
@@ -31,11 +31,25 @@ module Blacklight::DocumentHelperBehavior
31
31
  # See: https://github.com/geoblacklight/geoblacklight/blob/7d3c31c7af3362879b97e2c1351a2496c728c59c/app/helpers/blacklight_helper.rb#L7
32
32
  #
33
33
  # @param [SolrDocument] document
34
+ # @deprecated
34
35
  # @return [String]
35
36
  def render_document_sidebar_partial(document)
37
+ unless @render_document_sidebar_partials_deprecation_warning_shown
38
+ partials = lookup_context.find_all('show_sidebar', lookup_context.prefixes, true, [], {})
39
+ unless partials.first.identifier.starts_with? Blacklight.root
40
+ Blacklight.deprecation.warn('The partial catalog/_show_sidebar.html.erb will not be rendered by #render_document_sidebar_partial in Blacklight 9.0.' \
41
+ 'Configure blacklight_config.show.sidebar_component instead (default Blacklight::Search::SidebarComponent).')
42
+ @render_document_sidebar_partials_deprecation_warning_shown = true
43
+ end
44
+ end
45
+
36
46
  render 'show_sidebar', document: document
37
47
  end
38
48
 
49
+ Blacklight.deprecation.deprecate_methods(self,
50
+ render_document_sidebar_partial: 'has been replaced by calling the sidebar component (Blacklight::Search::SidebarComponent) directly. ' \
51
+ 'Set sidebar_component in the view config.')
52
+
39
53
  ##
40
54
  # return the Bookmarks on a set of documents (all bookmarks on the page)
41
55
  # @private
@@ -37,7 +37,9 @@ export default class CheckboxSubmit {
37
37
  this.labelTarget.removeAttribute('disabled')
38
38
  this.checkboxTarget.removeAttribute('disabled')
39
39
  this.updateStateFor(!this.checked)
40
- document.querySelector('[data-role=bookmark-counter]').innerHTML = json.bookmarks.count
40
+ this.bookmarksCounter().forEach(counter => {
41
+ counter.innerHTML = json.bookmarks.count;
42
+ });
41
43
  }).catch((error) => {
42
44
  this.handleError(error)
43
45
  })
@@ -63,6 +65,10 @@ export default class CheckboxSubmit {
63
65
  return this.form.querySelector('[data-checkboxsubmit-target="span"]')
64
66
  }
65
67
 
68
+ bookmarksCounter() {
69
+ return document.querySelectorAll('[data-role="bookmark-counter"]')
70
+ }
71
+
66
72
  handleError() {
67
73
  alert("Unable to save the bookmark at this time.")
68
74
  }
@@ -1,4 +1,4 @@
1
- const Blacklight = function() {
1
+ const Core = function() {
2
2
  const buffer = new Array;
3
3
  return {
4
4
  onLoad: function(func) {
@@ -34,13 +34,13 @@ const Blacklight = function() {
34
34
 
35
35
  // turbolinks triggers page:load events on page transition
36
36
  // If app isn't using turbolinks, this event will never be triggered, no prob.
37
- Blacklight.listeners().forEach(function(listener) {
37
+ Core.listeners().forEach(function(listener) {
38
38
  document.addEventListener(listener, function() {
39
- Blacklight.activate()
39
+ Core.activate()
40
40
  })
41
41
  })
42
42
 
43
- Blacklight.onLoad(function () {
43
+ Core.onLoad(function () {
44
44
  const elem = document.querySelector('.no-js');
45
45
 
46
46
  // The "no-js" class may already have been removed because this function is
@@ -52,4 +52,4 @@ Blacklight.onLoad(function () {
52
52
  })
53
53
 
54
54
 
55
- export default Blacklight
55
+ export default Core
@@ -31,7 +31,7 @@ module Blacklight::Document
31
31
  # but extensions should call super and modify hash returned, to avoid
32
32
  # unintentionally erasing values provided by other extensions.
33
33
  def to_semantic_values
34
- @semantic_value_hash ||= self.class.field_semantics.each_with_object(Hash.new([])) do |(key, field_names), hash|
34
+ @semantic_value_hash ||= self.class.field_semantics.each_with_object(Hash.new { |hash, key| hash[key] = [] }) do |(key, field_names), hash|
35
35
  ##
36
36
  # Handles single string field_name or an array of field_names
37
37
  value = Array.wrap(field_names).map { |field_name| self[field_name] }.flatten.compact
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Blacklight
4
+ class FacetCheckboxItemPresenter < Blacklight::FacetItemPresenter
5
+ # Check if the query parameters have any inclusive facets with the given value
6
+ # @return [Boolean]
7
+ def selected?
8
+ search_state.filter(facet_config).values(except: [:filters, :missing]).flatten.include?(value)
9
+ end
10
+ end
11
+ end
@@ -19,7 +19,15 @@ module Blacklight
19
19
  end
20
20
 
21
21
  def active?
22
- search_state.filter(facet_field).any?
22
+ if in_advanced_search?
23
+ search_state.filter(facet_field).values(except: [:filters, :missing]).any?
24
+ else
25
+ search_state.filter(facet_field).any?
26
+ end
27
+ end
28
+
29
+ def in_advanced_search?
30
+ search_state.params[:action] == "advanced_search"
23
31
  end
24
32
 
25
33
  def in_modal?
@@ -148,7 +148,15 @@ module Blacklight
148
148
  .merge(blacklight_config.fetch_many_document_params)
149
149
  .merge(extra_controller_params)
150
150
 
151
- solr_response = repository.search(query)
151
+ # find_many was introduced in Blacklight 8.4. Before that, we used the
152
+ # regular search method (possibly with a find-many specific `qt` parameter).
153
+ # In order to support Repository implementations that may not have a find_many,
154
+ # we'll fall back to search if find_many isn't available.
155
+ solr_response = if repository.respond_to?(:find_many)
156
+ repository.find_many(query)
157
+ else
158
+ repository.search(query)
159
+ end
152
160
 
153
161
  solr_response.documents
154
162
  end
@@ -1,10 +1 @@
1
- <% if show_sort_and_per_page? %>
2
- <span class="sr-only visually-hidden"><%= 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)) %>
10
- <% end %>
1
+ <%= render Blacklight::Search::PerPageComponent.new(search_state:, blacklight_config:, response: @response) %>
@@ -8,7 +8,7 @@
8
8
  <% end %>
9
9
 
10
10
  <% content_for(:skip_links) do -%>
11
- <%= link_to t('blacklight.skip_links.first_result'), '#documents', class: 'element-invisible element-focusable rounded-bottom py-2 px-3', data: { turbolinks: 'false' } %>
11
+ <%= link_to t('blacklight.skip_links.first_result'), '#documents', class: 'd-inline-flex p-2 m-1', data: { turbolinks: 'false' } %>
12
12
  <% end %>
13
13
 
14
14
  <% content_for(:container_header) do -%>
@@ -1,4 +1,4 @@
1
- <%= render blacklight_config.track_search_session.item_pagination_component.new(search_context: @search_context, search_session: search_session, current_document: @document) if blacklight_config.track_search_session.item_pagination_component %>
1
+ <%= render blacklight_config.view_config(:show).document_header_component.new(document: @document, search_context: @search_context, search_session: search_session) %>
2
2
  <% @page_title = t('blacklight.search.show.title', document_title: document_presenter(@document).html_title, application_name: application_name).html_safe %>
3
3
  <% content_for(:head) { render_link_rel_alternates } %>
4
4
 
@@ -1,2 +1,3 @@
1
+ <% Blacklight.deprecation.warn('The partial catalog/_show_sidebar.html.erb will be removed in Blacklight 9.0. Configure blacklight_config.show.sidebar_component instead (default Blacklight::Search::SidebarComponent).') unless local_assigns[:silence_deprecation] %>
1
2
  <% presenter = document_presenter(document) %>
2
3
  <%= render presenter.view_config.sidebar_component.new(presenter: presenter) %>
@@ -1,7 +1,7 @@
1
- <%= render blacklight_config.track_search_session.applied_params_component.new if blacklight_config.track_search_session.applied_params_component %>
2
-
3
1
  <%= render 'show_main_content' %>
4
2
 
5
3
  <% content_for(:sidebar) do %>
6
- <%= render_document_sidebar_partial @document %>
4
+ <% Blacklight.deprecation.silence do %>
5
+ <%= render_document_sidebar_partial @document %>
6
+ <% end %>
7
7
  <% end %>
@@ -1,3 +1,3 @@
1
1
  <% @suggestions.each do |suggestion| %>
2
- <li role="option"><span><%= suggestion['term'] %></span></li>
2
+ <li role="option" class="dropdown-item"><span><%= suggestion['term'] %></span></li>
3
3
  <% end %>
@@ -8,12 +8,18 @@
8
8
  remote: data-remote
9
9
  -%>
10
10
  <% page_display = number_with_delimiter(page.to_s) %>
11
-
12
- <li class="page-item <%= 'active' if page.current? %>">
13
- <% if page.current? %>
14
- <span class="page-link" aria-current="true"><%= page_display %><span class="sr-only visually-hidden"> <%= t('views.pagination.aria.current_page', page: page_display) %></span></span>
15
- <% else %>
16
- <%= link_to page_display, url, :remote => remote, :rel => page.next? ? 'next' : page.prev? ? 'prev' : nil, class: 'page-link', aria: { label: t('views.pagination.aria.go_to_page', page: page_display) } %>
11
+ <% link_attrs = {
12
+ remote: remote,
13
+ rel: page.next? ? 'next' : page.prev? ? 'prev' : nil,
14
+ class: 'page-link',
15
+ }
16
+ %>
17
+ <% if page.current? %>
18
+ <%= tag.li class: class_names('page-item', 'active'), aria_current: 'page' do %>
19
+ <%= link_to page_display, url, link_attrs.merge(aria: { label: t('views.pagination.aria.current_page', page: page_display) }) %>
17
20
  <% end %>
18
- </li>
19
-
21
+ <% else %>
22
+ <%= tag.li class: 'page-item' do %>
23
+ <%= link_to page_display, url, link_attrs.merge(aria: { label: t('views.pagination.aria.go_to_page', page: page_display) }) %>
24
+ <% end %>
25
+ <% end %>
@@ -11,7 +11,7 @@
11
11
  <%= paginator.render do -%>
12
12
  <ul class="pagination">
13
13
  <%= prev_page_tag %>
14
- <%= next_page_tag %>
14
+ <%= next_page_tag if Blacklight::Engine.config.blacklight.paginator[:next_page_position] == :before %>
15
15
  <% each_relevant_page do |page| -%>
16
16
  <% if page.left_outer? || page.right_outer? || page.inside_window? -%>
17
17
  <%= page_tag page %>
@@ -19,5 +19,6 @@
19
19
  <%= gap_tag %>
20
20
  <% end -%>
21
21
  <% end -%>
22
+ <%= next_page_tag if Blacklight::Engine.config.blacklight.paginator[:next_page_position] == :after %>
22
23
  </ul>
23
24
  <% end -%>
@@ -18,7 +18,6 @@
18
18
  <%= javascript_include_tag "application", "data-turbo-track": "reload", defer: true %>
19
19
  <% else %>
20
20
  <%= javascript_include_tag "application", "data-turbo-track": "reload", defer: true %>
21
- <%= javascript_include_tag "blacklight/blacklight", type: 'module' %>
22
21
  <script type="module">
23
22
  import githubAutoCompleteElement from 'https://cdn.skypack.dev/@github/auto-complete-element';
24
23
  </script>
@@ -28,11 +27,10 @@
28
27
  <%= content_for(:head) %>
29
28
  </head>
30
29
  <body class="<%= render_body_class %>">
31
- <nav id="skip-link" role="navigation" aria-label="<%= t('blacklight.skip_links.label') %>">
32
- <%= link_to t('blacklight.skip_links.search_field'), '#search_field', class: 'element-invisible element-focusable rounded-bottom py-2 px-3', data: { turbolinks: 'false' } %>
33
- <%= link_to t('blacklight.skip_links.main_content'), '#main-container', class: 'element-invisible element-focusable rounded-bottom py-2 px-3', data: { turbolinks: 'false' } %>
30
+ <%= render blacklight_config.skip_link_component.new do %>
34
31
  <%= content_for(:skip_links) %>
35
- </nav>
32
+ <% end %>
33
+
36
34
  <%= render partial: 'shared/header_navbar' %>
37
35
 
38
36
  <main id="main-container" class="<%= container_classes %>" role="main" aria-label="<%= t('blacklight.main.aria.main_container') %>">
data/blacklight.gemspec CHANGED
@@ -31,10 +31,11 @@ Gem::Specification.new do |s|
31
31
  s.add_dependency "kaminari", ">= 0.15" # the pagination (page 1,2,3, etc..) of our search results
32
32
  s.add_dependency "i18n", '>= 1.7.0' # added named parameters
33
33
  s.add_dependency "ostruct", '>= 0.3.2'
34
- s.add_dependency "view_component", '>= 2.66', '< 4'
34
+ s.add_dependency "view_component", '>= 2.74', '< 4'
35
+ s.add_dependency "zeitwerk"
35
36
 
36
37
  s.add_development_dependency "rsolr", ">= 1.0.6", "< 3" # Library for interacting with rSolr.
37
- s.add_development_dependency "rspec-rails", "~> 6.1"
38
+ s.add_development_dependency "rspec-rails", ">= 6.1", "< 8"
38
39
  s.add_development_dependency "rspec-collection_matchers", ">= 1.0"
39
40
  s.add_development_dependency 'axe-core-rspec'
40
41
  s.add_development_dependency "capybara", '~> 3'
@@ -45,6 +46,9 @@ Gem::Specification.new do |s|
45
46
  s.add_development_dependency "rubocop", '~> 1.0'
46
47
  s.add_development_dependency "rubocop-rails"
47
48
  s.add_development_dependency "rubocop-rspec"
49
+ s.add_development_dependency "rubocop-capybara"
50
+ s.add_development_dependency "rubocop-rspec_rails"
51
+ s.add_development_dependency "rubocop-factory_bot"
48
52
  s.add_development_dependency "i18n-tasks"
49
53
  s.add_development_dependency "solr_wrapper"
50
54
  end
@@ -7,7 +7,7 @@ services:
7
7
  - ALPINE_RUBY_VERSION
8
8
  # mounting . is causing seg-fault on macosx
9
9
  #volumes:
10
- #- .:/app
10
+ #- .:/app
11
11
  depends_on:
12
12
  - solr
13
13
  ports:
@@ -215,6 +215,9 @@ ar:
215
215
  email: بريد إلكتروني
216
216
  sms: إرسله كرسالة نصية قصيرة
217
217
  title: أدوات
218
+ top_navbar:
219
+ aria:
220
+ container_label: التنقل الرئيسي
218
221
  welcome: مرحبًا!
219
222
  views:
220
223
  pagination:
@@ -202,6 +202,9 @@ de:
202
202
  email: E-Mail
203
203
  sms: SMS
204
204
  title: Werkzeuge
205
+ top_navbar:
206
+ aria:
207
+ container_label: Hauptnavigation
205
208
  welcome: Willkommen!
206
209
  views:
207
210
  pagination: