spree_admin 5.2.0.rc1 → 5.2.0.rc3

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 (115) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/stylesheets/spree/admin/components/_alerts.scss +1 -1
  3. data/app/assets/stylesheets/spree/admin/components/_buttons.scss +5 -4
  4. data/app/assets/stylesheets/spree/admin/components/_dialogs.scss +0 -1
  5. data/app/assets/stylesheets/spree/admin/components/_dropdowns.scss +10 -8
  6. data/app/assets/stylesheets/spree/admin/components/_filters.scss +2 -0
  7. data/app/assets/stylesheets/spree/admin/components/_main.scss +7 -7
  8. data/app/assets/stylesheets/spree/admin/components/_tables.scss +2 -2
  9. data/app/assets/stylesheets/spree/admin/components/_variants_form.scss +1 -2
  10. data/app/assets/stylesheets/spree/admin/global/_variables.scss +14 -12
  11. data/app/assets/stylesheets/spree/admin/shared/_base.scss +2 -2
  12. data/app/assets/stylesheets/spree/admin/shared/_forms.scss +5 -6
  13. data/app/controllers/spree/admin/admin_users_controller.rb +0 -2
  14. data/app/controllers/spree/admin/base_controller.rb +1 -0
  15. data/app/controllers/spree/admin/checkouts_controller.rb +1 -4
  16. data/app/controllers/spree/admin/coupon_codes_controller.rb +0 -14
  17. data/app/controllers/spree/admin/customer_returns_controller.rb +0 -13
  18. data/app/controllers/spree/admin/digital_assets_controller.rb +2 -2
  19. data/app/controllers/spree/admin/exports_controller.rb +2 -9
  20. data/app/controllers/spree/admin/gift_cards_controller.rb +7 -14
  21. data/app/controllers/spree/admin/invitations_controller.rb +0 -2
  22. data/app/controllers/spree/admin/oauth_applications_controller.rb +0 -10
  23. data/app/controllers/spree/admin/option_types_controller.rb +0 -10
  24. data/app/controllers/spree/admin/orders_controller.rb +1 -1
  25. data/app/controllers/spree/admin/pages_controller.rb +1 -1
  26. data/app/controllers/spree/admin/payment_methods_controller.rb +0 -10
  27. data/app/controllers/spree/admin/policies_controller.rb +4 -0
  28. data/app/controllers/spree/admin/posts_controller.rb +2 -10
  29. data/app/controllers/spree/admin/properties_controller.rb +0 -12
  30. data/app/controllers/spree/admin/resource_controller.rb +27 -18
  31. data/app/controllers/spree/admin/return_authorizations_controller.rb +0 -10
  32. data/app/controllers/spree/admin/shipping_methods_controller.rb +4 -0
  33. data/app/controllers/spree/admin/stock_items_controller.rb +8 -11
  34. data/app/controllers/spree/admin/stock_locations_controller.rb +1 -1
  35. data/app/controllers/spree/admin/stock_transfers_controller.rb +0 -10
  36. data/app/controllers/spree/admin/store_credits_controller.rb +35 -35
  37. data/app/controllers/spree/admin/taxonomies_controller.rb +0 -10
  38. data/app/controllers/spree/admin/themes_controller.rb +6 -2
  39. data/app/controllers/spree/admin/users_controller.rb +7 -17
  40. data/app/controllers/spree/admin/webhooks_subscribers_controller.rb +0 -10
  41. data/app/controllers/spree/admin/zones_controller.rb +0 -7
  42. data/app/helpers/spree/admin/dropdown_helper.rb +24 -10
  43. data/app/helpers/spree/admin/navigation_helper.rb +1 -1
  44. data/app/helpers/spree/admin/orders_filters_helper.rb +2 -0
  45. data/app/javascript/spree/admin/application.js +2 -2
  46. data/app/javascript/spree/admin/controllers/dropdown_controller.js +154 -0
  47. data/app/models/spree/admin/form_builder.rb +13 -12
  48. data/app/models/spree/admin/updater.rb +2 -2
  49. data/app/views/spree/admin/custom_domains/_custom_domains.html.erb +1 -1
  50. data/app/views/spree/admin/digital_assets/_table.html.erb +1 -1
  51. data/app/views/spree/admin/gift_cards/_filters.html.erb +2 -1
  52. data/app/views/spree/admin/integrations/index.html.erb +20 -8
  53. data/app/views/spree/admin/invitations/new.html.erb +2 -1
  54. data/app/views/spree/admin/metafield_definitions/_filters.html.erb +1 -1
  55. data/app/views/spree/admin/newsletter_subscribers/_filters.html.erb +1 -1
  56. data/app/views/spree/admin/newsletter_subscribers/_table_header.html.erb +2 -2
  57. data/app/views/spree/admin/oauth_applications/_table_header.html.erb +1 -1
  58. data/app/views/spree/admin/orders/_customer.html.erb +1 -1
  59. data/app/views/spree/admin/orders/_filters.html.erb +4 -5
  60. data/app/views/spree/admin/orders/_header.html.erb +0 -5
  61. data/app/views/spree/admin/orders/_list.html.erb +3 -3
  62. data/app/views/spree/admin/page_blocks/edit.html.erb +3 -3
  63. data/app/views/spree/admin/page_builder/_add_block.html.erb +1 -1
  64. data/app/views/spree/admin/page_builder/_header.html.erb +1 -1
  65. data/app/views/spree/admin/page_builder/_pages_dropdown.html.erb +2 -2
  66. data/app/views/spree/admin/page_builder/_sidebar_block.html.erb +1 -1
  67. data/app/views/spree/admin/page_builder/_sidebar_colors.html.erb +2 -2
  68. data/app/views/spree/admin/page_builder/_sidebar_fonts.html.erb +3 -3
  69. data/app/views/spree/admin/page_builder/_sidebar_section.html.erb +1 -1
  70. data/app/views/spree/admin/page_links/_list.html.erb +1 -1
  71. data/app/views/spree/admin/page_links/edit.html.erb +1 -1
  72. data/app/views/spree/admin/page_sections/edit.html.erb +3 -3
  73. data/app/views/spree/admin/page_sections/new.html.erb +1 -1
  74. data/app/views/spree/admin/pages/_table_header.html.erb +3 -3
  75. data/app/views/spree/admin/payment_methods/index.html.erb +5 -1
  76. data/app/views/spree/admin/policies/_filters.html.erb +1 -1
  77. data/app/views/spree/admin/posts/_form.html.erb +0 -2
  78. data/app/views/spree/admin/products/_bulk_operations.html.erb +2 -2
  79. data/app/views/spree/admin/products/edit.html.erb +0 -2
  80. data/app/views/spree/admin/products/form/_status.html.erb +0 -3
  81. data/app/views/spree/admin/products/form/_variants.html.erb +1 -1
  82. data/app/views/spree/admin/promotions/_table_header.html.erb +1 -1
  83. data/app/views/spree/admin/promotions/form/_kind.html.erb +4 -4
  84. data/app/views/spree/admin/refund_reasons/_table_header.html.erb +1 -1
  85. data/app/views/spree/admin/reimbursement_types/_form.html.erb +1 -0
  86. data/app/views/spree/admin/reimbursement_types/_table_header.html.erb +1 -1
  87. data/app/views/spree/admin/return_authorization_reasons/_table_header.html.erb +1 -1
  88. data/app/views/spree/admin/roles/index.html.erb +1 -1
  89. data/app/views/spree/admin/shared/_calendar_range_picker.html.erb +2 -2
  90. data/app/views/spree/admin/shared/_content_header.html.erb +4 -1
  91. data/app/views/spree/admin/shared/_index_table.html.erb +5 -4
  92. data/app/views/spree/admin/shared/_index_table_options.html.erb +1 -1
  93. data/app/views/spree/admin/shared/_new_item_dropdown.html.erb +1 -1
  94. data/app/views/spree/admin/shared/_user_dropdown.html.erb +4 -3
  95. data/app/views/spree/admin/shared/sidebar/_store_dropdown.html.erb +1 -1
  96. data/app/views/spree/admin/shipping_categories/_table_header.html.erb +1 -1
  97. data/app/views/spree/admin/shipping_methods/_table_header.html.erb +1 -1
  98. data/app/views/spree/admin/stock_locations/_table_header.html.erb +2 -2
  99. data/app/views/spree/admin/store_credit_categories/index.html.erb +1 -1
  100. data/app/views/spree/admin/store_credits/_list.html.erb +3 -3
  101. data/app/views/spree/admin/stores/form/_checkout.html.erb +2 -2
  102. data/app/views/spree/admin/stores/form/_checkout_links.html.erb +1 -1
  103. data/app/views/spree/admin/stores/form/_policies.html.erb +5 -5
  104. data/app/views/spree/admin/tax_categories/_table_header.html.erb +2 -2
  105. data/app/views/spree/admin/tax_rates/_table_header.html.erb +2 -2
  106. data/app/views/spree/admin/taxonomies/_table_header.html.erb +1 -1
  107. data/app/views/spree/admin/users/_filters.html.erb +9 -3
  108. data/app/views/spree/admin/users/index.html.erb +1 -1
  109. data/config/importmap.rb +0 -1
  110. data/config/locales/en.yml +2 -0
  111. data/lib/generators/spree/admin/devise/devise_generator.rb +33 -0
  112. data/lib/generators/spree/admin/scaffold/templates/views/_filters.html.erb.tt +1 -1
  113. data/lib/generators/spree/admin/scaffold/templates/views/_table_header.html.erb.tt +2 -2
  114. metadata +10 -9
  115. data/vendor/javascript/@stimulus-components--dropdown.js +0 -4
@@ -30,7 +30,7 @@ module Spree
30
30
  @template.content_tag(:div, class: 'form-group') do
31
31
  @template.label(@object_name, method, get_label(method, options)) +
32
32
  @template.text_field(@object_name, method, objectify_options(options)) +
33
- @template.error_message_on(@object_name, method) + field_help(method, options)
33
+ @template.error_message_on(@object_name, method) + field_help(method, options.merge(class: 'form-text mt-2'))
34
34
  end
35
35
  end
36
36
 
@@ -44,7 +44,7 @@ module Spree
44
44
  @template.content_tag(:div, class: 'form-group') do
45
45
  @template.label(@object_name, method, get_label(method, options)) +
46
46
  @template.number_field(@object_name, method, objectify_options(options)) +
47
- @template.error_message_on(@object_name, method) + field_help(method, options)
47
+ @template.error_message_on(@object_name, method) + field_help(method, options.merge(class: 'form-text mt-2'))
48
48
  end
49
49
  end
50
50
 
@@ -58,7 +58,7 @@ module Spree
58
58
  @template.content_tag(:div, class: 'form-group') do
59
59
  @template.label(@object_name, method, get_label(method, options)) +
60
60
  @template.email_field(@object_name, method, objectify_options(options)) +
61
- @template.error_message_on(@object_name, method) + field_help(method, options)
61
+ @template.error_message_on(@object_name, method) + field_help(method, options.merge(class: 'form-text mt-2'))
62
62
  end
63
63
  end
64
64
 
@@ -72,7 +72,7 @@ module Spree
72
72
  @template.content_tag(:div, class: 'form-group') do
73
73
  @template.label(@object_name, method, get_label(method, options)) +
74
74
  @template.date_field(@object_name, method, objectify_options(options)) +
75
- @template.error_message_on(@object_name, method) + field_help(method, options)
75
+ @template.error_message_on(@object_name, method) + field_help(method, options.merge(class: 'form-text mt-2'))
76
76
  end
77
77
  end
78
78
 
@@ -86,7 +86,7 @@ module Spree
86
86
  @template.content_tag(:div, class: 'form-group') do
87
87
  @template.label(@object_name, method, get_label(method, options)) +
88
88
  @template.datetime_field(@object_name, method, objectify_options(options)) +
89
- @template.error_message_on(@object_name, method) + field_help(method, options)
89
+ @template.error_message_on(@object_name, method) + field_help(method, options.merge(class: 'form-text mt-2'))
90
90
  end
91
91
  end
92
92
 
@@ -107,7 +107,7 @@ module Spree
107
107
 
108
108
  @template.label(@object_name, method, get_label(method, options)) +
109
109
  @template.text_area(@object_name, method, objectify_options(options)) +
110
- @template.error_message_on(@object_name, method) + field_help(method, options)
110
+ @template.error_message_on(@object_name, method) + field_help(method, options.merge(class: 'form-text mt-2'))
111
111
  end
112
112
  end
113
113
 
@@ -122,7 +122,7 @@ module Spree
122
122
  @template.content_tag(:div, class: 'trix-container') do
123
123
  @template.rich_text_area(@object_name, method, objectify_options(options))
124
124
  end +
125
- @template.error_message_on(@object_name, method) + field_help(method, options)
125
+ @template.error_message_on(@object_name, method) + field_help(method, options.merge(class: 'form-text mt-2'))
126
126
  end
127
127
  end
128
128
 
@@ -147,7 +147,7 @@ module Spree
147
147
  @template.content_tag(:div, class: 'form-group') do
148
148
  @template.label(@object_name, method, get_label(method, options)) +
149
149
  @template.select(@object_name, method, choices, objectify_options(options), html_options, &block) +
150
- @template.error_message_on(@object_name, method) + field_help(method, options)
150
+ @template.error_message_on(@object_name, method) + field_help(method, options.merge(class: 'form-text mt-2'))
151
151
  end
152
152
  end
153
153
 
@@ -173,7 +173,7 @@ module Spree
173
173
  @template.content_tag(:div, class: 'form-group') do
174
174
  @template.label(@object_name, method, get_label(method, options)) +
175
175
  @template.collection_select(@object_name, method, collection, value_method, text_method, objectify_options(options), html_options) +
176
- @template.error_message_on(@object_name, method) + field_help(method, options)
176
+ @template.error_message_on(@object_name, method) + field_help(method, options.merge(class: 'form-text mt-2'))
177
177
  end
178
178
  end
179
179
 
@@ -187,7 +187,7 @@ module Spree
187
187
  @template.content_tag(:div, class: 'custom-control custom-checkbox') do
188
188
  @template.check_box(@object_name, method, objectify_options(options.merge(class: 'custom-control-input'))) +
189
189
  @template.label(@object_name, method, get_label(method, options), class: 'custom-control-label')
190
- end + @template.error_message_on(@object_name, method) + field_help(method, options)
190
+ end + @template.error_message_on(@object_name, method) + field_help(method, options.merge!(class: 'form-text mt-2 ml-4'))
191
191
  end
192
192
  end
193
193
 
@@ -204,7 +204,7 @@ module Spree
204
204
  @template.content_tag(:div, class: 'custom-control custom-radio') do
205
205
  @template.radio_button(@object_name, method, tag_value, objectify_options(options.merge(class: 'custom-control-input'))) +
206
206
  @template.label(@object_name, method, get_label(method, options), class: 'custom-control-label', for: options[:id])
207
- end + @template.error_message_on(@object_name, method) + field_help(method, options)
207
+ end + @template.error_message_on(@object_name, method) + field_help(method, options.merge(class: 'form-text mt-2'))
208
208
  end
209
209
  end
210
210
 
@@ -215,7 +215,8 @@ module Spree
215
215
  # @option options [String] :help help text to display
216
216
  # @return [String] HTML string containing the help text or empty string
217
217
  def field_help(_method, options = {})
218
- @template.content_tag(:span, options[:help], class: 'form-text mt-2')
218
+ options[:class] ||= 'form-text mt-2'
219
+ @template.content_tag(:span, options[:help], class: options[:class])
219
220
  end
220
221
 
221
222
  private
@@ -37,8 +37,8 @@ module Spree
37
37
 
38
38
  JSON.parse(response.body)
39
39
  end
40
- rescue Net::OpenTimeout, Net::ReadTimeout, SocketError, Errno::ECONNREFUSED, JSON::ParserError => e
41
- Rails.logger.error("Failed to fetch Spree updates: #{e.message}")
40
+ rescue StandardError => e
41
+ Rails.error.report(e)
42
42
  {}
43
43
  end
44
44
  end
@@ -3,7 +3,7 @@
3
3
  <table class="table">
4
4
  <thead>
5
5
  <tr>
6
- <th scope="col"><%= sort_link search_collection, :name, Spree.t(:name) %></th>
6
+ <th scope="col"><%= sort_link @search, :name, Spree.t(:name) %></th>
7
7
  <th scope="col"><%= Spree.t(:active) %>?</th>
8
8
  <th scope="col"><%= Spree.t(:default) %>?</th>
9
9
  <th scope="col"></th>
@@ -4,7 +4,7 @@
4
4
  <% if @product.has_variants? %>
5
5
  <th scope="col"><%= Spree.t(:variant) %></th>
6
6
  <% end %>
7
- <th scope="col"><%= sort_link search_collection, :name, Spree.t(:name) %></th>
7
+ <th scope="col"><%= sort_link @search, :name, Spree.t(:name) %></th>
8
8
  <th scope="col"><%= Spree.t(:size) %></th>
9
9
  <th scope="col"></th>
10
10
  </tr>
@@ -6,7 +6,8 @@
6
6
  class: "filter-wrap",
7
7
  data: {
8
8
  controller: "filters dropdown",
9
- filters_url_value: request.url
9
+ filters_url_value: request.url,
10
+ dropdown_placement_value: "bottom-end"
10
11
  } do |f| %>
11
12
  <%= hidden_field_tag :frame_name, frame_name if frame_name.present? %>
12
13
 
@@ -14,16 +14,28 @@
14
14
  <%= Spree.t('admin.integrations.page_subtitle') %>
15
15
  </div>
16
16
 
17
- <% grouped_available_store_integrations.each do |group, integrations| %>
18
- <% if group.present? %>
19
- <div class="my-2 text-muted font-weight-light text-uppercase"><%= Spree.t(group) %></div>
17
+ <% if grouped_available_store_integrations.any? %>
18
+ <% grouped_available_store_integrations.each do |group, integrations| %>
19
+ <% if group.present? %>
20
+ <div class="my-2 text-muted font-weight-light text-uppercase"><%= Spree.t(group) %></div>
21
+ <% end %>
22
+
23
+ <div class="row row-cols-1 row-cols-md-2 row-cols-lg-3 mb-4">
24
+ <% integrations.each do |integration| %>
25
+ <%= render 'spree/admin/integrations/integration', integration_class: integration %>
26
+ <% end %>
27
+ </div>
20
28
  <% end %>
21
29
 
22
- <div class="row row-cols-1 row-cols-md-2 row-cols-lg-3 mb-4">
23
- <% integrations.each do |integration| %>
24
- <%= render 'spree/admin/integrations/integration', integration_class: integration %>
25
- <% end %>
26
- </div>
30
+ <p class="text-muted text-center my-5">
31
+ Find more integrations in <%= external_link_to 'Integrations Directory', 'https://spreecommerce.org/docs/integrations/integrations', class: 'text-decoration-none font-weight-bold', target: '_blank' %>
32
+ </p>
33
+ <% else %>
34
+ <p class="text-muted text-center my-5">
35
+ No integrations installed yet. Find integrations in
36
+
37
+ <%= external_link_to 'Integrations Directory', 'https://spreecommerce.org/docs/integrations/integrations', class: 'text-decoration-none font-weight-bold', target: '_blank' %>
38
+ </p>
27
39
  <% end %>
28
40
  </div>
29
41
  </div>
@@ -12,7 +12,8 @@
12
12
  <%= f.spree_date_field :expires_at, required: true, data: { 'enable-button-target': 'input' } %>
13
13
  </div>
14
14
  <div class="dialog-footer">
15
- <%= turbo_save_button_tag nil, class: 'btn btn-primary', data: { 'enable-button-target': 'button' } do %>
15
+ <%= dialog_discard_button %>
16
+ <%= turbo_save_button_tag do %>
16
17
  <%= icon 'send' %>
17
18
  <%= Spree.t('actions.send_invitation') %>
18
19
  <% end %>
@@ -1,4 +1,4 @@
1
- <%= search_form_for [:admin, search_collection], class: "filter-wrap", data: {controller: "filters auto-submit"} do |f| %>
1
+ <%= search_form_for [:admin, @search], class: "filter-wrap", data: {controller: "filters auto-submit"} do |f| %>
2
2
  <div class="d-flex">
3
3
  <%= render 'spree/admin/shared/filters_search_bar', param: :multi_search, label: Spree.t(:title) %>
4
4
 
@@ -1,4 +1,4 @@
1
- <%= search_form_for [:admin, search_collection], class: "filter-wrap", data: { controller: "filters" } do |f| %>
1
+ <%= search_form_for [:admin, @search], class: "filter-wrap", data: { controller: "filters" } do |f| %>
2
2
  <div class="d-flex flex-column flex-lg-row gap-2">
3
3
  <%= render 'spree/admin/shared/filters_search_bar', param: :email_cont, label: Spree.t(:email) %>
4
4
 
@@ -1,8 +1,8 @@
1
1
  <tr>
2
- <th scope="col"><%= sort_link search_collection, :email, Spree.t(:email) %></th>
2
+ <th scope="col"><%= sort_link @search, :email, Spree.t(:email) %></th>
3
3
  <th scope="col"><%= Spree.t(:customer) %></th>
4
4
  <th scope="col"><%= Spree.t(:verified) %>?</th>
5
5
  <th scope="col"><%= Spree.t(:verified_at) %></th>
6
- <th scope="col"><%= sort_link search_collection, :created_at, Spree.t(:created_at) %></th>
6
+ <th scope="col"><%= sort_link @search, :created_at, Spree.t(:created_at) %></th>
7
7
  <th scope="col"></th>
8
8
  </tr>
@@ -1,5 +1,5 @@
1
1
  <tr>
2
- <th scope="col"><%= sort_link search_collection, :name, Spree.t(:name) %></th>
2
+ <th scope="col"><%= sort_link @search, :name, Spree.t(:name) %></th>
3
3
  <th scope="col"><%= Spree.t('admin.oauth_applications.client_id') %></th>
4
4
  <th scope="col"><%= Spree.t('admin.oauth_applications.scopes') %></th>
5
5
  <th scope="col"><%= Spree.t('admin.oauth_applications.last_used') %></th>
@@ -6,7 +6,7 @@
6
6
  <% if can?(:update_customer, @order) || can?(:update_addresses, @order) %>
7
7
  <%= dropdown id: 'customer-edit-dropdown', class: 'ml-auto' do %>
8
8
  <%= dropdown_toggle class: 'btn-light btn-sm px-1', data: { test_id: 'dropdown-toggle' } do %>
9
- <%= icon 'dots-vertical' %>
9
+ <%= icon 'dots-vertical', class: 'mr-0' %>
10
10
  <% end %>
11
11
  <%= dropdown_menu class: 'dropdown-menu-right' do %>
12
12
  <% if can?(:update_customer, @order) && !@order.user.present? %>
@@ -15,7 +15,8 @@
15
15
  class: "filter-wrap",
16
16
  data: {
17
17
  controller: "filters dropdown",
18
- filters_url_value: request.url
18
+ filters_url_value: request.url,
19
+ dropdown_placement_value: "bottom-end"
19
20
  } do |f| %>
20
21
  <%= hidden_field_tag :frame_name, frame_name if frame_name.present? %>
21
22
 
@@ -27,15 +28,13 @@
27
28
  date_from_input_name: "q[created_at_gt]",
28
29
  date_to_input_name: "q[created_at_lt]",
29
30
  date_from_value: params.dig(:q, :created_at_gt),
30
- date_to_value: params.dig(:q, :created_at_lt),
31
- dropdown_direction: "right" %>
31
+ date_to_value: params.dig(:q, :created_at_lt) %>
32
32
  <% else %>
33
33
  <%= render "spree/admin/shared/calendar_range_picker",
34
34
  date_from_input_name: "q[completed_at_gt]",
35
35
  date_to_input_name: "q[completed_at_lt]",
36
36
  date_from_value: params.dig(:q, :completed_at_gt),
37
- date_to_value: params.dig(:q, :completed_at_lt),
38
- dropdown_direction: "right" %>
37
+ date_to_value: params.dig(:q, :completed_at_lt) %>
39
38
  <% end %>
40
39
 
41
40
  <%= render "spree/admin/orders/table_filter_dropdown" %>
@@ -41,8 +41,6 @@
41
41
  can?(:create, Spree::CustomerReturn) && @order.return_authorizations.exists? %>
42
42
 
43
43
  <% if can_create_ra || can_create_cr %>
44
- <div class="dropdown-divider"></div>
45
-
46
44
  <% if can_create_ra %>
47
45
  <%= link_to_with_icon "plus", Spree.t(:new_return_authorization),
48
46
  spree.new_admin_order_return_authorization_path(@order),
@@ -54,8 +52,6 @@
54
52
  spree.new_admin_order_customer_return_path(@order),
55
53
  class: "btn dropdown-item" %>
56
54
  <% end %>
57
-
58
- <div class="dropdown-divider"></div>
59
55
  <% end %>
60
56
  <% end %>
61
57
 
@@ -69,6 +65,5 @@
69
65
  <%= icon "cancel" %>
70
66
  <%= Spree.t(:cancel_order) %>
71
67
  <% end %>
72
- <div class="dropdown-divider"></div>
73
68
  <% end %>
74
69
  <% end %>
@@ -1,4 +1,4 @@
1
- <% if @orders.any? %>
1
+ <% if @collection.any? %>
2
2
  <div class="table-responsive">
3
3
  <table class="table" id="listing_orders">
4
4
  <thead>
@@ -18,11 +18,11 @@
18
18
  </tr>
19
19
  </thead>
20
20
  <tbody>
21
- <%= render collection: @orders, partial: 'spree/admin/orders/order', cached: !(defined?(current_vendor) && current_vendor) ? spree_base_cache_scope : false %>
21
+ <%= render collection: @collection, partial: 'spree/admin/orders/order', cached: !(defined?(current_vendor) && current_vendor) ? spree_base_cache_scope : false %>
22
22
  </tbody>
23
23
  </table>
24
24
  </div>
25
25
  <% else %>
26
26
  <%= render 'spree/admin/shared/no_resource_found', new_object_url: nil, model_class: Spree::Order %>
27
27
  <% end %>
28
- <%= render 'spree/admin/shared/index_table_options', collection: @orders if @orders.any? %>
28
+ <%= render 'spree/admin/shared/index_table_options', collection: @collection %>
@@ -1,7 +1,7 @@
1
1
  <%= turbo_frame_tag :page_sidebar do %>
2
2
  <% tab_selected ||= :content %>
3
3
  <h6 class="sidebar-header">
4
- <%= link_to spree.edit_admin_theme_path(@theme, page_id: @page&.id), data: { action: 'click->page-builder#clearActiveOverlays' }, class: 'btn hover-gray px-2' do %>
4
+ <%= link_to spree.edit_admin_theme_path(@theme, page_id: @page&.id), data: { action: 'click->page-builder#clearActiveOverlays' }, class: 'btn hover-gray shadow-none px-2' do %>
5
5
  <%= icon 'chevron-left', class: 'mr-0' %>
6
6
  <% end %>
7
7
  <%= @page_block.display_name %>
@@ -11,10 +11,10 @@
11
11
  <div data-controller="tabs">
12
12
  <ul class="nav nav-pills nav-fill mb-3" id="pills-tab" role="tablist">
13
13
  <li class="nav-item" role="presentation">
14
- <button class="btn nav-link w-100 <%= tab_selected == :content ? 'active' : '' %>" id="pills-home-tab" data-tabs-target="tab" data-action="click->tabs#select" type="button" role="tab" aria-controls="pills-home" aria-selected="<%= tab_selected == :content %>">Content</button>
14
+ <button class="nav-link w-100 <%= tab_selected == :content ? 'active' : '' %>" id="pills-home-tab" data-tabs-target="tab" data-action="click->tabs#select" type="button" role="tab" aria-controls="pills-home" aria-selected="<%= tab_selected == :content %>">Content</button>
15
15
  </li>
16
16
  <li class="nav-item" role="presentation">
17
- <button class="btn nav-link w-100 <%= tab_selected == :design ? 'active' : '' %>" id="pills-profile-tab" data-tabs-target="tab" data-action="click->tabs#select" type="button" role="tab" aria-controls="pills-profile" aria-selected="<%= tab_selected == :design %>">Design</button>
17
+ <button class="nav-link w-100 <%= tab_selected == :design ? 'active' : '' %>" id="pills-profile-tab" data-tabs-target="tab" data-action="click->tabs#select" type="button" role="tab" aria-controls="pills-profile" aria-selected="<%= tab_selected == :design %>">Design</button>
18
18
  </li>
19
19
  </ul>
20
20
  <div data-tabs-target="panel" id="pills-home" role="tabpanel" aria-labelledby="pills-home-tab" class="animate__animated animate__fadeIn" <%= 'hidden' unless tab_selected == :content %>>
@@ -6,7 +6,7 @@
6
6
  <%= icon("circle-plus") %>
7
7
  Add block
8
8
  <% end %>
9
- <%= dropdown_menu direction: 'top-left' do %>
9
+ <%= dropdown_menu do %>
10
10
  <% section.available_blocks_to_add.each do |block_class| %>
11
11
  <a href="#" class="dropdown-item btn-sm"
12
12
  data-action="click->block-form#addBlock"
@@ -2,7 +2,7 @@
2
2
  <nav class="navbar navbar-expand-lg">
3
3
  <div data-controller="tooltip">
4
4
  <% back_url = @page.custom? ? spree.admin_pages_path : spree.admin_themes_path %>
5
- <%= link_to back_url, class: 'btn hover-gray px-2' do %>
5
+ <%= link_to back_url, class: 'btn hover-gray shadow-none px-2' do %>
6
6
  <%= icon('x', class: 'mr-0') %>
7
7
  <% end %>
8
8
  <%= tooltip(Spree.t('admin.back_to_dashboard')) %>
@@ -1,4 +1,4 @@
1
- <%= dropdown id: 'pages_dropdown' do %>
1
+ <%= dropdown id: 'pages_dropdown', direction: 'left' do %>
2
2
  <%= dropdown_toggle class: 'btn-light' do %>
3
3
  <span class="d-flex align-items-center pr-5">
4
4
  <%= icon @page.icon_name, class: 'mr-2' %>
@@ -6,7 +6,7 @@
6
6
  </span>
7
7
  <%= icon 'selector', class: 'mr-0 ml-2 mb-0 text-muted' %>
8
8
  <% end %>
9
- <%= dropdown_menu direction: 'left', style: 'min-width: 250px' do %>
9
+ <%= dropdown_menu style: 'min-width: 250px' do %>
10
10
  <% @theme.pages.standard.order(name: :asc).find_all(&:customizable?).each do |page| %>
11
11
  <%= active_link_to spree.edit_admin_theme_path(@theme, theme_preview_id: @theme_preview.id, page_id: page.id), class: 'dropdown-item', active: @page == page, data: { turbo_prefetch: false } do %>
12
12
  <%= icon page.icon_name, class: 'mr-2' %>
@@ -20,7 +20,7 @@
20
20
  </div>
21
21
  <div class="d-flex align-items-center d-none">
22
22
  <% if block.section.can_sort_blocks? %>
23
- <button class="btn btn-sm pr-0 handle hover-gray-200 h-100 px-1 handle-block">
23
+ <button class="btn btn-sm pr-0 handle hover-gray-200 h-100 px-1 handle-block shadow-none">
24
24
  <%= icon('grip-vertical', class: 'mr-0') %>
25
25
  </button>
26
26
  <% end %>
@@ -7,10 +7,10 @@
7
7
  <div data-controller="tabs">
8
8
  <ul class="nav nav-pills nav-fill m-3" id="pills-tab" role="tablist">
9
9
  <li class="nav-item" role="presentation">
10
- <button class="btn nav-link w-100 active" id="pills-home-tab" data-tabs-target="tab" data-action="click->tabs#select" type="button" role="tab" aria-controls="pills-home" aria-selected="true">Color scheme</button>
10
+ <button class="nav-link w-100 active" id="pills-home-tab" data-tabs-target="tab" data-action="click->tabs#select" type="button" role="tab" aria-controls="pills-home" aria-selected="true">Color scheme</button>
11
11
  </li>
12
12
  <li class="nav-item" role="presentation">
13
- <button class="btn nav-link w-100" id="pills-profile-tab" data-tabs-target="tab" data-action="click->tabs#select" type="button" role="tab" aria-controls="pills-profile" aria-selected="false">Elements</button>
13
+ <button class="nav-link w-100" id="pills-profile-tab" data-tabs-target="tab" data-action="click->tabs#select" type="button" role="tab" aria-controls="pills-profile" aria-selected="false">Elements</button>
14
14
  </li>
15
15
  </ul>
16
16
  <div id="pills-tabContent">
@@ -6,12 +6,12 @@
6
6
  <div data-controller="tabs">
7
7
  <ul class="nav nav-pills nav-fill m-3" id="pills-tab" role="tablist">
8
8
  <li class="nav-item" role="presentation">
9
- <button class="btn nav-link w-100 active" id="pills-standard" data-tabs-target="tab" data-action="click->tabs#select" type="button" role="tab" aria-controls="pills-standard" aria-selected="true">
9
+ <button class="nav-link w-100 active" id="pills-standard" data-tabs-target="tab" data-action="click->tabs#select" type="button" role="tab" aria-controls="pills-standard" aria-selected="true">
10
10
  Standard
11
11
  </button>
12
12
  </li>
13
13
  <li class="nav-item" role="presentation">
14
- <button class="btn nav-link w-100" id="pills-custom" data-tabs-target="tab" data-action="click->tabs#select" type="button" role="tab" aria-controls="pills-custom" aria-selected="false">
14
+ <button class="nav-link w-100" id="pills-custom" data-tabs-target="tab" data-action="click->tabs#select" type="button" role="tab" aria-controls="pills-custom" aria-selected="false">
15
15
  Custom
16
16
  </button>
17
17
  </li>
@@ -60,7 +60,7 @@
60
60
  <div class="alert alert-warning">
61
61
  Using custom fonts can slow down your store.
62
62
  </div>
63
- <%= f.spree_text_area :preferred_custom_font_code, style: 'min-height: 6em' %>
63
+ <%= f.spree_text_area :preferred_custom_font_code, style: 'min-height: 6em', label: Spree.t(:custom_font_code) %>
64
64
  </div>
65
65
  <%= f.submit Spree.t('actions.update'), class: 'btn btn-primary' %>
66
66
 
@@ -16,7 +16,7 @@
16
16
  %>
17
17
  </div>
18
18
  <div class="d-flex align-items-center d-none">
19
- <button class="btn btn-sm pr-0 handle hover-gray-200 h-100 mr-1 px-1 handle-section">
19
+ <button class="btn btn-sm pr-0 handle hover-gray-200 h-100 mr-1 px-1 handle-section shadow-none">
20
20
  <%= icon('grip-vertical', class: 'mr-0') %>
21
21
  </button>
22
22
  </div>
@@ -12,7 +12,7 @@
12
12
  data-sortable-update-url="<%= spree.admin_page_link_path(link, sorting_only: true, format: :turbo_stream) %>"
13
13
  >
14
14
  <%= link_to link.label, spree.edit_admin_page_link_path(link), class: 'd-block py-2 px-3 text-dark flex-fill' %>
15
- <button class="btn btn-sm pr-0 handle hover-gray-200 h-100 mr-1 px-1">
15
+ <button class="btn btn-sm pr-0 handle hover-gray-200 h-100 mr-1 px-1 shadow-none">
16
16
  <%= icon 'grip-vertical', class: 'mr-0' %>
17
17
  </button>
18
18
  </li>
@@ -12,7 +12,7 @@
12
12
  <% else %>
13
13
  <%= turbo_frame_tag :page_sidebar do %>
14
14
  <h6 class="sidebar-header">
15
- <%= link_to collection_url, data: { action: 'click->page-builder#clearActiveOverlays' }, class: 'btn hover-gray px-2' do %>
15
+ <%= link_to collection_url, data: { action: 'click->page-builder#clearActiveOverlays' }, class: 'btn hover-gray shadow-none px-2' do %>
16
16
  <%= icon 'chevron-left', class: 'mr-0' %>
17
17
  <% end %>
18
18
  <%= @page_link.label %>
@@ -1,7 +1,7 @@
1
1
  <%= turbo_frame_tag :page_sidebar do %>
2
2
  <% tab_selected ||= :content %>
3
3
  <h6 class="sidebar-header">
4
- <%= link_to collection_url, data: { action: 'click->page-builder#clearActiveOverlays' }, class: 'btn hover-gray px-2' do %>
4
+ <%= link_to collection_url, data: { action: 'click->page-builder#clearActiveOverlays' }, class: 'btn hover-gray shadow-none px-2' do %>
5
5
  <%= icon 'chevron-left', class: 'mr-0 back' %>
6
6
  <% end %>
7
7
  <%= @page_section.display_name %>
@@ -11,10 +11,10 @@
11
11
  <div data-controller="tabs">
12
12
  <ul class="nav nav-pills nav-fill mb-3" id="pills-tab" role="tablist">
13
13
  <li class="nav-item" role="presentation">
14
- <button class="btn nav-link w-100 <%= tab_selected == :content ? 'active' : '' %>" id="pills-home-tab" data-tabs-target="tab" data-action="click->tabs#select" type="button" role="tab" aria-controls="pills-home" aria-selected="<%= tab_selected == :content %>">Content</button>
14
+ <button class="nav-link w-100 <%= tab_selected == :content ? 'active' : '' %>" id="pills-home-tab" data-tabs-target="tab" data-action="click->tabs#select" type="button" role="tab" aria-controls="pills-home" aria-selected="<%= tab_selected == :content %>">Content</button>
15
15
  </li>
16
16
  <li class="nav-item" role="presentation">
17
- <button class="btn nav-link w-100 <%= tab_selected == :design ? 'active' : '' %>" id="pills-profile-tab" data-tabs-target="tab" data-action="click->tabs#select" type="button" role="tab" aria-controls="pills-profile" aria-selected="<%= tab_selected == :design %>">Design</button>
17
+ <button class="nav-link w-100 <%= tab_selected == :design ? 'active' : '' %>" id="pills-profile-tab" data-tabs-target="tab" data-action="click->tabs#select" type="button" role="tab" aria-controls="pills-profile" aria-selected="<%= tab_selected == :design %>">Design</button>
18
18
  </li>
19
19
  </ul>
20
20
  <div data-tabs-target="panel" id="pills-home" role="tabpanel" aria-labelledby="pills-home-tab" class="animate__animated animate__fadeIn" <%= 'hidden' unless tab_selected == :content %>>
@@ -1,6 +1,6 @@
1
1
  <%= turbo_frame_tag :page_sidebar do %>
2
2
  <h6 class="sidebar-header">
3
- <%= link_to collection_url, data: { action: 'click->page-builder#clearActiveOverlays' }, class: 'btn hover-gray px-2' do %>
3
+ <%= link_to collection_url, data: { action: 'click->page-builder#clearActiveOverlays' }, class: 'btn hover-gray shadow-none px-2' do %>
4
4
  <%= icon 'chevron-left', class: 'mr-0 back' %>
5
5
  <% end %>
6
6
  <%= Spree.t(:add_section) %>
@@ -1,6 +1,6 @@
1
1
  <tr>
2
- <th scope="col"><%= sort_link search_collection, :name, Spree.t(:name) %></th>
3
- <th scope="col"><%= sort_link search_collection, :created_at, Spree.t(:created_at) %></th>
4
- <th scope="col"><%= sort_link search_collection, :updated_at, Spree.t(:updated_at) %></th>
2
+ <th scope="col"><%= sort_link @search, :name, Spree.t(:name) %></th>
3
+ <th scope="col"><%= sort_link @search, :created_at, Spree.t(:created_at) %></th>
4
+ <th scope="col"><%= sort_link @search, :updated_at, Spree.t(:updated_at) %></th>
5
5
  <th scope="col"></th>
6
6
  </tr>
@@ -42,4 +42,8 @@
42
42
  </tbody>
43
43
  </table>
44
44
  </div>
45
- <% end %>
45
+ <% end %>
46
+
47
+ <p class="text-muted text-center my-5">
48
+ Find more payment methods in <%= external_link_to 'Integrations Directory', 'https://spreecommerce.org/docs/integrations/integrations', class: 'text-decoration-none font-weight-bold', target: '_blank' %>
49
+ </p>
@@ -1,4 +1,4 @@
1
- <%= search_form_for [:admin, search_collection], class: "filter-wrap", data: { controller: "filters" } do |f| %>
1
+ <%= search_form_for [:admin, @search], class: "filter-wrap", data: { controller: "filters" } do |f| %>
2
2
  <div class="d-flex flex-column flex-lg-row gap-2">
3
3
  <%= render 'spree/admin/shared/filters_search_bar', param: :name_i_cont, label: Spree.t(:name) %>
4
4
  </div>
@@ -13,12 +13,10 @@
13
13
 
14
14
  <%= f.spree_rich_text_area :content,
15
15
  help_bubble: 'Add a summary of the post',
16
- style: 'height: 300px',
17
16
  data: { seo_form_target: 'sourceDescriptionInput' } %>
18
17
 
19
18
  <%= f.spree_rich_text_area :excerpt,
20
19
  help_bubble: 'Add a summary of the post',
21
- style: 'height: 100px',
22
20
  data: { seo_form_target: 'sourceExcerptInput' } %>
23
21
  </div>
24
22
  </div>
@@ -18,11 +18,11 @@
18
18
  url: spree.bulk_status_update_admin_products_path(status: :draft)
19
19
  ) %>
20
20
 
21
- <%= dropdown do %>
21
+ <%= dropdown direction: 'top' do %>
22
22
  <%= dropdown_toggle do %>
23
23
  <%= icon('dots-vertical', class: "mr-0") %>
24
24
  <% end %>
25
- <%= dropdown_menu direction: 'top', class: 'mb-2' do %>
25
+ <%= dropdown_menu class: 'mb-2' do %>
26
26
  <%= bulk_action_link(
27
27
  Spree.t("admin.bulk_ops.products.title.set_status", status: :archived),
28
28
  spree.bulk_modal_admin_products_path(kind: :set_status, status: :archived),
@@ -8,8 +8,6 @@
8
8
 
9
9
  <%= render_admin_partials(:product_dropdown_partials, product: @product) %>
10
10
 
11
- <div class="dropdown-divider"></div>
12
-
13
11
  <%= external_page_preview_link(@product) %>
14
12
 
15
13
  <% if can?(:clone, @product) %>
@@ -1,7 +1,4 @@
1
1
  <div class="card mb-4">
2
- <div class="card-header">
3
- <h5 class="card-title"><%= Spree.t(:status) %></h5>
4
- </div>
5
2
  <div class="card-body">
6
3
  <div class="row mb-3">
7
4
  <div class="col-6">
@@ -162,7 +162,7 @@
162
162
  <%= render 'spree/admin/products/form/variants/variant_template', default_stock_location: default_stock_location_for_product(@product) %>
163
163
  <div class="variants-table__body" data-variants-form-target="variantsContainer" data-test-id="product-variants-table">
164
164
  </div>
165
- <div class="variants-table__footer">
165
+ <div class="variants-table__footer font-size-sm">
166
166
  <%= Spree.t('admin.variants_form.total_inventory_html', stock_location: current_store.default_stock_location.name, count: raw("<span data-variants-form-target='stockItemsCount'>#{@product.total_on_hand}</span>") )%>
167
167
  </div>
168
168
  </div>
@@ -1,5 +1,5 @@
1
1
  <tr>
2
- <th scope="col"><%= sort_link search_collection, :name, Spree.t(:name) %></th>
2
+ <th scope="col"><%= sort_link @search, :name, Spree.t(:name) %></th>
3
3
  <th scope="col"><%= Spree.t(:code) %></th>
4
4
  <th scope="col"><%= Spree.t(:kind) %></th>
5
5
  <th scope="col"><%= Spree.t(:usage_limit) %></th>