spree_admin 5.2.0.rc2 → 5.2.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 (188) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/stylesheets/spree/admin/application.scss +1 -1
  3. data/app/assets/stylesheets/spree/admin/components/_alerts.scss +1 -1
  4. data/app/assets/stylesheets/spree/admin/components/_buttons.scss +5 -4
  5. data/app/assets/stylesheets/spree/admin/components/_dialogs.scss +0 -1
  6. data/app/assets/stylesheets/spree/admin/components/_dropdowns.scss +6 -0
  7. data/app/assets/stylesheets/spree/admin/components/_main.scss +2 -233
  8. data/app/assets/stylesheets/spree/admin/components/_sidebar.scss +693 -0
  9. data/app/assets/stylesheets/spree/admin/components/_tables.scss +2 -2
  10. data/app/assets/stylesheets/spree/admin/components/_variants_form.scss +1 -2
  11. data/app/assets/stylesheets/spree/admin/global/_variables.scss +15 -12
  12. data/app/assets/stylesheets/spree/admin/shared/_base.scss +9 -3
  13. data/app/assets/stylesheets/spree/admin/shared/_forms.scss +5 -6
  14. data/app/assets/stylesheets/spree/admin/views/_dashboard.scss +14 -0
  15. data/app/controllers/spree/admin/admin_users_controller.rb +0 -2
  16. data/app/controllers/spree/admin/checkouts_controller.rb +1 -4
  17. data/app/controllers/spree/admin/coupon_codes_controller.rb +0 -14
  18. data/app/controllers/spree/admin/customer_returns_controller.rb +0 -13
  19. data/app/controllers/spree/admin/digital_assets_controller.rb +2 -2
  20. data/app/controllers/spree/admin/exports_controller.rb +2 -9
  21. data/app/controllers/spree/admin/gift_cards_controller.rb +7 -14
  22. data/app/controllers/spree/admin/integrations_controller.rb +1 -1
  23. data/app/controllers/spree/admin/invitations_controller.rb +0 -2
  24. data/app/controllers/spree/admin/metafields_controller.rb +1 -1
  25. data/app/controllers/spree/admin/oauth_applications_controller.rb +0 -10
  26. data/app/controllers/spree/admin/option_types_controller.rb +0 -10
  27. data/app/controllers/spree/admin/orders_controller.rb +1 -1
  28. data/app/controllers/spree/admin/page_blocks_controller.rb +1 -1
  29. data/app/controllers/spree/admin/pages_controller.rb +1 -1
  30. data/app/controllers/spree/admin/payment_methods_controller.rb +1 -11
  31. data/app/controllers/spree/admin/policies_controller.rb +4 -0
  32. data/app/controllers/spree/admin/posts_controller.rb +2 -10
  33. data/app/controllers/spree/admin/promotion_actions_controller.rb +1 -1
  34. data/app/controllers/spree/admin/promotion_rules_controller.rb +1 -1
  35. data/app/controllers/spree/admin/promotions_controller.rb +1 -1
  36. data/app/controllers/spree/admin/properties_controller.rb +0 -12
  37. data/app/controllers/spree/admin/reports_controller.rb +1 -1
  38. data/app/controllers/spree/admin/resource_controller.rb +27 -17
  39. data/app/controllers/spree/admin/return_authorizations_controller.rb +0 -10
  40. data/app/controllers/spree/admin/shipping_methods_controller.rb +4 -0
  41. data/app/controllers/spree/admin/stock_items_controller.rb +8 -11
  42. data/app/controllers/spree/admin/stock_locations_controller.rb +1 -1
  43. data/app/controllers/spree/admin/stock_transfers_controller.rb +0 -10
  44. data/app/controllers/spree/admin/store_credits_controller.rb +35 -35
  45. data/app/controllers/spree/admin/taxonomies_controller.rb +0 -10
  46. data/app/controllers/spree/admin/taxons_controller.rb +1 -1
  47. data/app/controllers/spree/admin/themes_controller.rb +6 -2
  48. data/app/controllers/spree/admin/translations_controller.rb +1 -1
  49. data/app/controllers/spree/admin/users_controller.rb +7 -17
  50. data/app/controllers/spree/admin/webhooks_subscribers_controller.rb +0 -10
  51. data/app/controllers/spree/admin/zones_controller.rb +0 -7
  52. data/app/helpers/spree/admin/base_helper.rb +1 -1
  53. data/app/helpers/spree/admin/drawer_helper.rb +6 -6
  54. data/app/helpers/spree/admin/dropdown_helper.rb +26 -16
  55. data/app/helpers/spree/admin/modal_helper.rb +2 -0
  56. data/app/helpers/spree/admin/navigation_helper.rb +47 -4
  57. data/app/helpers/spree/admin/orders_filters_helper.rb +3 -0
  58. data/app/helpers/spree/admin/promotion_actions_helper.rb +1 -1
  59. data/app/helpers/spree/admin/promotion_rules_helper.rb +1 -1
  60. data/app/helpers/spree/admin/translations_helper.rb +1 -1
  61. data/app/javascript/spree/admin/application.js +2 -1
  62. data/app/javascript/spree/admin/controllers/dropdown_controller.js +85 -14
  63. data/app/javascript/spree/admin/controllers/sidebar_controller.js +231 -0
  64. data/app/javascript/spree/admin/controllers/tooltip_controller.js +84 -31
  65. data/app/models/spree/admin/form_builder.rb +76 -17
  66. data/app/models/spree/admin/navigation/builder.rb +82 -0
  67. data/app/models/spree/admin/navigation/item.rb +177 -0
  68. data/app/models/spree/admin/navigation.rb +193 -0
  69. data/app/views/layouts/spree/admin.html.erb +1 -1
  70. data/app/views/spree/admin/assets/edit.html.erb +1 -1
  71. data/app/views/spree/admin/custom_domains/_custom_domains.html.erb +1 -1
  72. data/app/views/spree/admin/custom_domains/_form.html.erb +2 -14
  73. data/app/views/spree/admin/digital_assets/_table.html.erb +1 -1
  74. data/app/views/spree/admin/gift_cards/_filters.html.erb +25 -16
  75. data/app/views/spree/admin/gift_cards/index.html.erb +1 -1
  76. data/app/views/spree/admin/integrations/index.html.erb +20 -8
  77. data/app/views/spree/admin/invitations/new.html.erb +2 -1
  78. data/app/views/spree/admin/metafield_definitions/_filters.html.erb +1 -1
  79. data/app/views/spree/admin/newsletter_subscribers/_filters.html.erb +1 -1
  80. data/app/views/spree/admin/newsletter_subscribers/_table_header.html.erb +2 -2
  81. data/app/views/spree/admin/oauth_applications/_table_header.html.erb +1 -1
  82. data/app/views/spree/admin/orders/_customer.html.erb +3 -3
  83. data/app/views/spree/admin/orders/_filters.html.erb +33 -25
  84. data/app/views/spree/admin/orders/_header.html.erb +0 -5
  85. data/app/views/spree/admin/orders/_list.html.erb +3 -3
  86. data/app/views/spree/admin/orders/_table_filter_dropdown.html.erb +1 -1
  87. data/app/views/spree/admin/page_blocks/edit.html.erb +3 -3
  88. data/app/views/spree/admin/page_blocks/forms/_image.html.erb +2 -5
  89. data/app/views/spree/admin/page_builder/_add_block.html.erb +1 -1
  90. data/app/views/spree/admin/page_builder/_header.html.erb +1 -1
  91. data/app/views/spree/admin/page_builder/_pages_dropdown.html.erb +2 -2
  92. data/app/views/spree/admin/page_builder/_sidebar_block.html.erb +1 -1
  93. data/app/views/spree/admin/page_builder/_sidebar_colors.html.erb +2 -2
  94. data/app/views/spree/admin/page_builder/_sidebar_fonts.html.erb +3 -3
  95. data/app/views/spree/admin/page_builder/_sidebar_section.html.erb +1 -1
  96. data/app/views/spree/admin/page_links/_form.html.erb +4 -13
  97. data/app/views/spree/admin/page_links/_list.html.erb +1 -1
  98. data/app/views/spree/admin/page_links/edit.html.erb +1 -1
  99. data/app/views/spree/admin/page_sections/edit.html.erb +3 -3
  100. data/app/views/spree/admin/page_sections/forms/_header.html.erb +0 -2
  101. data/app/views/spree/admin/page_sections/new.html.erb +1 -1
  102. data/app/views/spree/admin/pages/_table_header.html.erb +3 -3
  103. data/app/views/spree/admin/payment_methods/index.html.erb +5 -1
  104. data/app/views/spree/admin/payments/_payment.html.erb +7 -0
  105. data/app/views/spree/admin/policies/_filters.html.erb +1 -1
  106. data/app/views/spree/admin/posts/_form.html.erb +1 -4
  107. data/app/views/spree/admin/posts/filters.html.erb +18 -8
  108. data/app/views/spree/admin/products/_bulk_operations.html.erb +2 -2
  109. data/app/views/spree/admin/products/_filters.html.erb +17 -6
  110. data/app/views/spree/admin/products/_table_filter_dropdown.html.erb +1 -1
  111. data/app/views/spree/admin/products/edit.html.erb +0 -2
  112. data/app/views/spree/admin/products/form/_status.html.erb +0 -3
  113. data/app/views/spree/admin/products/form/_variants.html.erb +1 -1
  114. data/app/views/spree/admin/profile/edit.html.erb +9 -61
  115. data/app/views/spree/admin/promotions/_filters.html.erb +23 -13
  116. data/app/views/spree/admin/promotions/_table_filter_dropdown.html.erb +1 -1
  117. data/app/views/spree/admin/promotions/_table_header.html.erb +1 -1
  118. data/app/views/spree/admin/promotions/form/_kind.html.erb +4 -4
  119. data/app/views/spree/admin/promotions/form/_settings.html.erb +2 -13
  120. data/app/views/spree/admin/refund_reasons/_table_header.html.erb +1 -1
  121. data/app/views/spree/admin/refunds/_form.html.erb +1 -9
  122. data/app/views/spree/admin/reimbursement_types/_table_header.html.erb +1 -1
  123. data/app/views/spree/admin/return_authorization_reasons/_table_header.html.erb +1 -1
  124. data/app/views/spree/admin/return_authorizations/filters.html.erb +1 -1
  125. data/app/views/spree/admin/roles/index.html.erb +1 -1
  126. data/app/views/spree/admin/shared/_audit_nav.html.erb +2 -0
  127. data/app/views/spree/admin/shared/_calendar_range_picker.html.erb +2 -2
  128. data/app/views/spree/admin/shared/_content_header.html.erb +5 -2
  129. data/app/views/spree/admin/shared/_developers_nav.html.erb +2 -4
  130. data/app/views/spree/admin/shared/_header.html.erb +5 -7
  131. data/app/views/spree/admin/shared/_index_table.html.erb +5 -4
  132. data/app/views/spree/admin/shared/_index_table_options.html.erb +1 -1
  133. data/app/views/spree/admin/shared/_navigation.html.erb +5 -0
  134. data/app/views/spree/admin/shared/_navigation_item.html.erb +64 -0
  135. data/app/views/spree/admin/shared/_new_item_dropdown.html.erb +2 -2
  136. data/app/views/spree/admin/shared/_page_section_image.html.erb +2 -5
  137. data/app/views/spree/admin/shared/_page_section_logo.html.erb +1 -1
  138. data/app/views/spree/admin/shared/_returns_and_refunds_nav.html.erb +2 -3
  139. data/app/views/spree/admin/shared/_shipping_nav.html.erb +3 -2
  140. data/app/views/spree/admin/shared/_sidebar.html.erb +33 -7
  141. data/app/views/spree/admin/shared/_stock_nav.html.erb +6 -3
  142. data/app/views/spree/admin/shared/_tax_nav.html.erb +1 -2
  143. data/app/views/spree/admin/shared/_team_nav.html.erb +2 -3
  144. data/app/views/spree/admin/shared/_user_dropdown.html.erb +29 -19
  145. data/app/views/spree/admin/shared/sidebar/_customers_nav.html.erb +7 -0
  146. data/app/views/spree/admin/shared/sidebar/_orders_nav.html.erb +22 -2
  147. data/app/views/spree/admin/shared/sidebar/_products_nav.html.erb +21 -0
  148. data/app/views/spree/admin/shared/sidebar/_promotions_nav.html.erb +8 -0
  149. data/app/views/spree/admin/shared/sidebar/_returns_nav.html.erb +12 -0
  150. data/app/views/spree/admin/shared/sidebar/_store_dropdown.html.erb +4 -2
  151. data/app/views/spree/admin/shared/sidebar/_store_nav.html.erb +15 -1
  152. data/app/views/spree/admin/shared/sidebar/_storefront_nav.html.erb +25 -3
  153. data/app/views/spree/admin/shared/sortable_tree/_taxonomy.html.erb +1 -1
  154. data/app/views/spree/admin/shipping_categories/_table_header.html.erb +1 -1
  155. data/app/views/spree/admin/shipping_methods/_table_header.html.erb +1 -1
  156. data/app/views/spree/admin/stock_items/_filters.html.erb +18 -8
  157. data/app/views/spree/admin/stock_locations/_table_header.html.erb +2 -2
  158. data/app/views/spree/admin/stock_locations/_table_row.html.erb +1 -1
  159. data/app/views/spree/admin/stock_transfers/_filters.html.erb +19 -9
  160. data/app/views/spree/admin/store_credit_categories/index.html.erb +1 -1
  161. data/app/views/spree/admin/store_credits/_list.html.erb +3 -3
  162. data/app/views/spree/admin/storefront/edit.html.erb +2 -14
  163. data/app/views/spree/admin/stores/form/_basic.html.erb +2 -8
  164. data/app/views/spree/admin/stores/form/_checkout.html.erb +2 -2
  165. data/app/views/spree/admin/stores/form/_checkout_links.html.erb +1 -1
  166. data/app/views/spree/admin/stores/form/_emails.html.erb +1 -1
  167. data/app/views/spree/admin/tax_categories/_table_header.html.erb +2 -2
  168. data/app/views/spree/admin/tax_rates/_form.html.erb +1 -10
  169. data/app/views/spree/admin/tax_rates/_table_header.html.erb +2 -2
  170. data/app/views/spree/admin/taxonomies/_table_header.html.erb +1 -1
  171. data/app/views/spree/admin/taxons/_form.html.erb +2 -9
  172. data/app/views/spree/admin/themes/_theme.html.erb +1 -1
  173. data/app/views/spree/admin/translations/translation_rows/_permalink_field_row.html.erb +1 -12
  174. data/app/views/spree/admin/users/_filters.html.erb +26 -17
  175. data/app/views/spree/admin/users/index.html.erb +1 -1
  176. data/config/initializers/spree_admin_navigation.rb +510 -0
  177. data/config/locales/en.yml +6 -0
  178. data/lib/generators/spree/admin/scaffold/templates/controller.rb.tt +3 -1
  179. data/lib/generators/spree/admin/scaffold/templates/views/_filters.html.erb.tt +1 -1
  180. data/lib/generators/spree/admin/scaffold/templates/views/_table_header.html.erb.tt +2 -2
  181. data/lib/generators/spree/admin/scaffold/templates/views/_table_row.html.erb.tt +8 -6
  182. data/lib/spree/admin/engine.rb +64 -2
  183. data/lib/spree/admin/runtime_configuration.rb +1 -0
  184. data/lib/spree/admin.rb +20 -0
  185. metadata +17 -15
  186. data/app/assets/stylesheets/spree/admin/components/_offcanvas.scss +0 -26
  187. data/app/javascript/spree/admin/helpers/canvas.js +0 -29
  188. data/app/views/spree/admin/shared/_offcanvas_nav.html.erb +0 -12
@@ -1,7 +1,4 @@
1
- <%= render 'active_storage/upload_form', form: f, field_name: :asset, width: 400, height: 128, auto_submit: true %>
1
+ <%= f.spree_file_field :asset, width: 400, height: 128, auto_submit: true, label: Spree.t(:image) %>
2
2
  <% if f.object.has_preference?(:image_alt) %>
3
- <div class="form-group">
4
- <%= f.label :preferred_image_alt, Spree.t(:alt_text) %>
5
- <%= f.text_field :preferred_image_alt, data: { action: 'auto-submit#submit' }, class: 'form-control' %>
6
- </div>
3
+ <%= f.spree_text_field :preferred_image_alt, label: Spree.t(:alt_text), data: { action: 'auto-submit#submit' } %>
7
4
  <% end %>
@@ -1 +1 @@
1
- <%= render 'active_storage/upload_form', form: f, field_name: :asset, width: 400, height: 128, auto_submit: true %>
1
+ <%= f.spree_file_field :asset, width: 400, height: 128, auto_submit: true, label: Spree.t(:logo) %>
@@ -2,9 +2,8 @@
2
2
  <%= Spree.t(:returns) %> & <%= Spree.t(:refunds) %>
3
3
  <% end %>
4
4
 
5
+ <%= render_tab_navigation(:returns_tabs) %>
6
+
5
7
  <% content_for(:page_tabs) do %>
6
- <%= nav_item(Spree.t(:return_authorization_reasons), spree.admin_return_authorization_reasons_path) if can?(:manage, Spree::ReturnAuthorizationReason) %>
7
- <%= nav_item(Spree.t(:refund_reasons), spree.admin_refund_reasons_path) if can?(:manage, Spree::RefundReason) %>
8
- <%= nav_item(Spree.t(:reimbursement_types), spree.admin_reimbursement_types_path) if can?(:manage, Spree::ReimbursementType) %>
9
8
  <%= render_admin_partials(:returns_and_refunds_nav_partials) %>
10
9
  <% end %>
@@ -1,5 +1,6 @@
1
+ <%= render_tab_navigation(:shipping_tabs) %>
2
+
1
3
  <%= content_for(:page_tabs) do %>
2
- <%= nav_item(Spree.t(:shipping_methods), spree.admin_shipping_methods_path, active: controller_name == 'shipping_methods' && action_name == 'index') if can?(:manage, Spree::ShippingMethod) %>
3
- <%= nav_item(Spree.t(:shipping_categories), spree.admin_shipping_categories_path) if can?(:manage, Spree::ShippingCategory) %>
4
4
  <%= render_admin_partials(:shipping_nav_partials) %>
5
5
  <% end %>
6
+
@@ -1,7 +1,33 @@
1
- <aside id="main-sidebar" class="overflow-y-auto">
2
- <% if defined?(current_vendor) && current_vendor.present? %>
3
- <%= render 'spree/admin/shared/sidebar/vendor_nav' %>
4
- <% else %>
5
- <%= render 'spree/admin/shared/sidebar/store_nav' %>
6
- <% end %>
7
- </aside>
1
+ <%# Desktop Sidebar %>
2
+ <aside id="main-sidebar" class="overflow-y-auto" data-sidebar-target="desktop">
3
+ <div class="sidebar-content">
4
+ <% if defined?(current_vendor) && current_vendor.present? %>
5
+ <%= render 'spree/admin/shared/sidebar/vendor_nav' %>
6
+ <% else %>
7
+ <%= render 'spree/admin/shared/sidebar/store_nav' %>
8
+ <% end %>
9
+ </div>
10
+
11
+ <%= render 'spree/admin/shared/user_dropdown' %>
12
+ </aside>
13
+
14
+ <%# Mobile Sidebar Overlay %>
15
+ <div class="sidebar-mobile d-lg-none" data-sidebar-target="mobile">
16
+ <div class="sidebar-backdrop" data-action="click->sidebar#closeMobile"></div>
17
+ <div class="sidebar-panel">
18
+ <div class="sidebar-mobile-header">
19
+ <button type="button" class="btn btn-sm" data-action="click->sidebar#closeMobile" aria-label="<%= Spree.t('admin.close_sidebar') %>">
20
+ <%= icon('x') %>
21
+ </button>
22
+ </div>
23
+ <div class="sidebar-mobile-content">
24
+ <% if defined?(current_vendor) && current_vendor.present? %>
25
+ <%= render 'spree/admin/shared/sidebar/vendor_nav' %>
26
+ <% else %>
27
+ <%= render 'spree/admin/shared/sidebar/store_nav' %>
28
+ <% end %>
29
+ </div>
30
+
31
+ <%= render 'spree/admin/shared/user_dropdown' %>
32
+ </div>
33
+ </div>
@@ -1,3 +1,6 @@
1
- <%= nav_item(Spree.t(:stock_items), spree.admin_stock_items_path) if can?(:manage, Spree::StockItem) %>
2
- <%= nav_item(Spree.t(:stock_transfers), spree.admin_stock_transfers_path) if can?(:manage, Spree::StockTransfer) %>
3
- <%= render_admin_partials(:stock_nav_partials) %>
1
+ <%= render_tab_navigation(:stock_tabs) %>
2
+
3
+ <%= content_for(:page_tabs) do %>
4
+ <%= render_admin_partials(:stock_nav_partials) %>
5
+ <% end %>
6
+
@@ -1,5 +1,4 @@
1
+ <%= render_tab_navigation(:tax_tabs) %>
1
2
  <%= content_for(:page_tabs) do %>
2
- <%= nav_item(Spree.t(:tax_rates), spree.admin_tax_rates_path) if can?(:manage, Spree::TaxRate) %>
3
- <%= nav_item(Spree.t(:tax_categories), spree.admin_tax_categories_path) if can?(:manage, Spree::TaxCategory) %>
4
3
  <%= render_admin_partials(:tax_nav_partials) %>
5
4
  <% end %>
@@ -1,9 +1,8 @@
1
1
  <% content_for :page_title, Spree.t(:users) %>
2
2
 
3
+ <%= render_tab_navigation(:team_tabs) %>
4
+
3
5
  <%= content_for(:page_tabs) do %>
4
- <%= nav_item(Spree.t(:users), spree.admin_admin_users_path) if can?(:manage, Spree.admin_user_class) %>
5
- <%= nav_item(Spree.t(:invitations), spree.admin_invitations_path) if can?(:manage, Spree::Invitation) %>
6
- <%= nav_item(Spree.t(:roles), spree.admin_roles_path) if can?(:manage, Spree::Role) %>
7
6
  <%= render_admin_partials(:team_nav_partials) %>
8
7
  <% end %>
9
8
 
@@ -1,20 +1,28 @@
1
1
  <% if try_spree_current_user.present? %>
2
- <%= dropdown id: dom_id(try_spree_current_user, 'account-dropdown') do %>
3
- <%= dropdown_toggle class: 'd-flex align-items-center justify-content-between text-left w-100 pr-0' do %>
4
- <%= render_avatar(try_spree_current_user, width: 32, height: 32) %>
5
- <% end %>
6
- <%= dropdown_menu class: 'dropdown-menu-right', style: 'min-width: 250px;' do %>
7
- <div class="d-flex align-items-center p-2 bg-light rounded-lg">
8
- <%= render_avatar(try_spree_current_user, width: 34, height: 34) %>
9
- <span class="d-none d-lg-inline ml-lg-2">
2
+ <div class="user-dropdown" id="user-menu">
3
+ <%= dropdown do %>
4
+ <%= dropdown_toggle class: 'user-dropdown-button dropdown-toggle' do %>
5
+ <%= render_avatar(try_spree_current_user, width: 32, height: 32) %>
6
+ <span class="user-name d-none d-lg-block">
10
7
  <% if try_spree_current_user.name.present? %>
11
- <%= try_spree_current_user.name&.full %><br />
12
- <span class="small text-muted"><%= try_spree_current_user.email %></span>
8
+ <%= try_spree_current_user.name&.full %>
13
9
  <% else %>
14
- <%= try_spree_current_user.email %><br />
10
+ <%= try_spree_current_user.email %>
15
11
  <% end %>
16
12
  </span>
17
- </div>
13
+ <% end %>
14
+ <%= dropdown_menu class: 'ml-2', style: 'min-width: 250px;' do %>
15
+ <div class="d-flex align-items-center p-2 bg-light rounded-lg">
16
+ <%= render_avatar(try_spree_current_user, width: 34, height: 34) %>
17
+ <span class="d-flex flex-column ml-2">
18
+ <% if try_spree_current_user.name.present? %>
19
+ <%= try_spree_current_user.name&.full %>
20
+ <small class="text-muted"><%= try_spree_current_user.email %></small>
21
+ <% else %>
22
+ <%= try_spree_current_user.email %>
23
+ <% end %>
24
+ </span>
25
+ </div>
18
26
 
19
27
  <%= render_admin_partials(:user_dropdown_partials) %>
20
28
 
@@ -29,16 +37,18 @@
29
37
  <h6 class="dropdown-header mt-2">
30
38
  <%= Spree.t(:support) %>
31
39
  </h6>
32
- <%= external_link_to Spree.t(:help_center), 'https://spreecommerce.org/docs/user', class: 'dropdown-item justify-content-between', target: '_blank' %>
33
- <%= external_link_to Spree.t(:contact_us), 'https://spreecommerce.org/contact/', class: 'dropdown-item justify-content-between', target: '_blank' %>
40
+ <%= link_to_with_icon 'book', Spree.t('admin.documentation'), 'https://spreecommerce.org/docs', class: 'dropdown-item', target: '_blank' %>
41
+ <%= link_to_with_icon 'brand-slack', Spree.t('admin.slack'), 'https://slack.spreecommerce.org/', class: 'dropdown-item', target: '_blank' %>
42
+ <%= link_to_with_icon 'message', Spree.t(:contact_us), 'https://spreecommerce.org/contact/', class: 'dropdown-item', target: '_blank' %>
34
43
  <% end %>
35
44
 
36
45
  <div class="dropdown-divider"></div>
37
46
 
38
- <%= button_to spree_admin_logout_path, class: 'dropdown-item mb-0 btn-danger', method: :delete do %>
39
- <%= icon('logout', class: "icon icon-logout") %>
40
- <%= Spree.t(:logout) %>
41
- <% end if defined?(spree_admin_logout_path) %>
47
+ <%= button_to spree_admin_logout_path, class: 'dropdown-item mb-0 btn-danger', method: :delete do %>
48
+ <%= icon('logout', class: "icon icon-logout") %>
49
+ <%= Spree.t(:logout) %>
50
+ <% end if defined?(spree_admin_logout_path) %>
51
+ <% end %>
42
52
  <% end %>
43
- <% end %>
53
+ </div>
44
54
  <% end %>
@@ -2,7 +2,14 @@
2
2
  <% customers_active = %w[users newsletter_subscribers].include?(controller_name) %>
3
3
  <%= nav_item(Spree.t(:customers), spree.admin_users_path, icon: 'users', active: customers_active) %>
4
4
 
5
+ <%# Submenu for expanded sidebar (only shown when active) %>
5
6
  <ul class="nav-submenu <% unless customers_active %>d-none<% end %>">
6
7
  <%= nav_item(Spree.t(:newsletter_subscribers), spree.admin_newsletter_subscribers_path) %>
7
8
  </ul>
9
+
10
+ <%# Submenu dropdown for collapsed sidebar (always rendered, shown on hover) %>
11
+ <ul class="nav-submenu-dropdown d-none dropdown-container">
12
+ <%= nav_item(Spree.t(:customers), spree.admin_users_path) %>
13
+ <%= nav_item(Spree.t(:newsletter_subscribers), spree.admin_newsletter_subscribers_path) %>
14
+ </ul>
8
15
  <% end %>
@@ -4,9 +4,10 @@
4
4
  <% if ready_to_ship_orders_count&.positive? %>
5
5
  <% orders_label += content_tag(:span, ready_to_ship_orders_count, class: 'badge ml-auto') %>
6
6
  <% end %>
7
-
7
+
8
8
  <%= nav_item(orders_label.html_safe, spree.admin_orders_path, icon: 'inbox', active: orders_active) %>
9
-
9
+
10
+ <%# Submenu for expanded sidebar (only shown when active) %>
10
11
  <% if orders_active && (ready_to_ship_orders_count&.positive? || can?(:manage, :checkouts)) %>
11
12
  <ul class="nav-submenu">
12
13
  <% if ready_to_ship_orders_count&.positive? %>
@@ -22,4 +23,23 @@
22
23
  <%= render_admin_partials(:store_orders_nav_partials) %>
23
24
  </ul>
24
25
  <% end %>
26
+
27
+ <%# Submenu dropdown for collapsed sidebar (always rendered, shown on hover) %>
28
+ <% if ready_to_ship_orders_count&.positive? || can?(:manage, :checkouts) %>
29
+ <ul class="nav-submenu-dropdown d-none dropdown-container">
30
+ <%= nav_item(Spree.t(:orders), spree.admin_orders_path) %>
31
+
32
+ <% if ready_to_ship_orders_count&.positive? %>
33
+ <% fulfill_label = Spree.t('admin.orders.orders_to_fulfill') %>
34
+ <% fulfill_label += content_tag(:span, ready_to_ship_orders_count, class: 'badge ml-auto') %>
35
+ <%= nav_item(fulfill_label.html_safe, spree.admin_orders_path(q: {shipment_state_not_in: [:shipped, :canceled]})) %>
36
+ <% end %>
37
+
38
+ <% if can?(:manage, :checkouts) %>
39
+ <%= nav_item(Spree.t(:draft_orders), spree.admin_checkouts_path) %>
40
+ <% end %>
41
+
42
+ <%= render_admin_partials(:store_orders_nav_partials) %>
43
+ </ul>
44
+ <% end %>
25
45
  <% end %>
@@ -2,6 +2,7 @@
2
2
  <% if can?(:manage, Spree::Product) %>
3
3
  <%= nav_item(Spree.t(:products), spree.admin_products_path, icon: 'package', active: products_active) %>
4
4
 
5
+ <%# Submenu for expanded sidebar (only shown when active) %>
5
6
  <ul class="nav-submenu <% unless products_active %>d-none<% end %>">
6
7
  <% if can?(:manage, Spree::StockItem) || can?(:manage, Spree::StockTransfer) %>
7
8
  <%= nav_item(Spree.t(:stock), spree.admin_stock_items_path, active: %w[stock_items stock_transfers].include?(controller_name)) %>
@@ -18,4 +19,24 @@
18
19
 
19
20
  <%= render_admin_partials(:store_products_nav_partials) %>
20
21
  </ul>
22
+
23
+ <%# Submenu dropdown for collapsed sidebar (always rendered, shown on hover) %>
24
+ <ul class="nav-submenu-dropdown d-none dropdown-container">
25
+ <%= nav_item(Spree.t(:products), spree.admin_products_path) %>
26
+
27
+ <% if can?(:manage, Spree::StockItem) || can?(:manage, Spree::StockTransfer) %>
28
+ <%= nav_item(Spree.t(:stock), spree.admin_stock_items_path) %>
29
+ <% end %>
30
+ <% if can?(:manage, Spree::Taxonomy) && can?(:manage, Spree::Taxon) %>
31
+ <%= nav_item(Spree.t(:taxonomies), spree.admin_taxonomies_path) %>
32
+ <% end %>
33
+ <% if can?(:manage, Spree::OptionType) %>
34
+ <%= nav_item(Spree.t(:options), spree.admin_option_types_path) %>
35
+ <% end %>
36
+ <% if can?(:manage, Spree::Property) && Spree::Config[:product_properties_enabled] %>
37
+ <%= nav_item(Spree.t(:properties), spree.admin_properties_path) %>
38
+ <% end %>
39
+
40
+ <%= render_admin_partials(:store_products_nav_partials) %>
41
+ </ul>
21
42
  <% end %>
@@ -1,7 +1,15 @@
1
1
  <% if can?(:manage, Spree::Promotion) %>
2
2
  <% discounts_active = %w[promotions gift_cards gift_card_batches coupon_codes].include?(controller_name) && @user.nil? %>
3
3
  <%= nav_item(Spree.t(:promotions), spree.admin_promotions_path, icon: 'discount', active: discounts_active) %>
4
+
5
+ <%# Submenu for expanded sidebar (only shown when active) %>
4
6
  <ul class="nav-submenu <% unless discounts_active %>d-none<% end %>">
5
7
  <%= nav_item(Spree.t(:gift_cards), spree.admin_gift_cards_path, active: %w[gift_cards gift_card_batches].include?(controller_name)) %>
6
8
  </ul>
9
+
10
+ <%# Submenu dropdown for collapsed sidebar (always rendered, shown on hover) %>
11
+ <ul class="nav-submenu-dropdown d-none dropdown-container">
12
+ <%= nav_item(Spree.t(:promotions), spree.admin_promotions_path) %>
13
+ <%= nav_item(Spree.t(:gift_cards), spree.admin_gift_cards_path) %>
14
+ </ul>
7
15
  <% end %>
@@ -3,6 +3,7 @@
3
3
  <% if can?(:manage, Spree::CustomerReturn) || can?(:manage, Spree::ReturnAuthorization) %>
4
4
  <%= nav_item(Spree.t(:returns), spree.admin_customer_returns_path, icon: 'receipt-refund', active: returns_active) %>
5
5
 
6
+ <%# Submenu for expanded sidebar (only shown when active) %>
6
7
  <% if returns_active %>
7
8
  <ul class="nav-submenu">
8
9
  <% if can?(:manage, Spree::ReturnAuthorization) %>
@@ -11,4 +12,15 @@
11
12
  <%= render_admin_partials(:returns_nav_partials) %>
12
13
  </ul>
13
14
  <% end %>
15
+
16
+ <%# Submenu dropdown for collapsed sidebar (always rendered, shown on hover) %>
17
+ <% if can?(:manage, Spree::ReturnAuthorization) %>
18
+ <ul class="nav-submenu-dropdown d-none dropdown-container">
19
+ <%= nav_item(Spree.t(:returns), spree.admin_customer_returns_path) %>
20
+
21
+ <%= nav_item(Spree.t(:return_authorizations), spree.admin_return_authorizations_path) %>
22
+
23
+ <%= render_admin_partials(:returns_nav_partials) %>
24
+ </ul>
25
+ <% end %>
14
26
  <% end %>
@@ -2,9 +2,11 @@
2
2
  <%= dropdown do %>
3
3
  <%= dropdown_toggle class: 'store-dropdown-button dropdown-toggle' do %>
4
4
  <%= store_admin_icon(current_store, height: 32, width: 32) %>
5
- <%= truncate(current_store.name, length: 10) %>
5
+ <span class="store-name d-none d-lg-block">
6
+ <%= truncate(current_store.name, length: 10) %>
7
+ </span>
6
8
  <% end %>
7
- <%= dropdown_menu class: 'ml-2', direction: 'left' do %>
9
+ <%= dropdown_menu class: 'ml-2' do %>
8
10
  <%= link_to current_store.formatted_url_or_custom_domain, class: 'dropdown-item', target: '_blank' do %>
9
11
  <%= icon 'eye' %>
10
12
  <%= Spree.t(:view_store) %>
@@ -1,4 +1,6 @@
1
- <% if settings_area? %>
1
+ <% if Spree::Admin::RuntimeConfig.legacy_sidebar_navigation %>
2
+ <%# Legacy navigation system %>
3
+ <% if settings_area? %>
2
4
  <ul class="nav flex-column">
3
5
  <% if can?(:manage, current_store) %>
4
6
  <%= nav_item(Spree.t(:store_details), spree.edit_admin_store_path(section: 'general-settings'), icon: 'building-store', active: params[:section] == 'general-settings') %>
@@ -114,4 +116,16 @@
114
116
  <% end %>
115
117
  </ul>
116
118
  </div>
119
+ <% end %>
120
+ <% else %>
121
+ <%# New navigation system %>
122
+ <% if settings_area? %>
123
+ <%= render_navigation(:settings) %>
124
+ <% else %>
125
+ <%= render_navigation(:sidebar) %>
126
+
127
+ <div class="mt-auto d-flex flex-column">
128
+ <%= render 'spree/admin/shared/sidebar/enterprise_edition_notice' %>
129
+ </div>
130
+ <% end %>
117
131
  <% end %>
@@ -2,19 +2,41 @@
2
2
  <% storefront_active = %w[themes posts post_categories pages storefront].include?(controller_name) %>
3
3
  <%= nav_item(Spree.t('admin.storefront'), spree.admin_themes_path, icon: 'building-store', active: storefront_active) %>
4
4
 
5
+ <%# Submenu for expanded sidebar (only shown when active) %>
5
6
  <ul class="nav-submenu <% unless storefront_active %>d-none<% end %>">
6
7
  <% if can?(:manage, Spree::Theme) %>
7
8
  <%= nav_item(Spree.t(:themes), spree.admin_themes_path) %>
8
9
  <% end %>
9
-
10
+
10
11
  <% if can?(:manage, Spree::Page) %>
11
12
  <%= nav_item(Spree.t(:pages), spree.admin_pages_path) %>
12
13
  <% end %>
13
-
14
+
14
15
  <% if can?(:manage, Spree::Post) %>
15
16
  <%= nav_item(Spree.t(:posts), spree.admin_posts_path, active: %w[posts post_categories].include?(controller_name)) %>
16
17
  <% end %>
17
-
18
+
19
+ <% if can?(:manage, current_store) %>
20
+ <%= nav_item(Spree.t(:settings), spree.edit_admin_storefront_path) %>
21
+ <% end %>
22
+
23
+ <%= render_admin_partials(:storefront_nav_partials) %>
24
+ </ul>
25
+
26
+ <%# Submenu dropdown for collapsed sidebar (always rendered, shown on hover) %>
27
+ <ul class="nav-submenu-dropdown d-none dropdown-container">
28
+ <% if can?(:manage, Spree::Theme) %>
29
+ <%= nav_item(Spree.t(:themes), spree.admin_themes_path) %>
30
+ <% end %>
31
+
32
+ <% if can?(:manage, Spree::Page) %>
33
+ <%= nav_item(Spree.t(:pages), spree.admin_pages_path) %>
34
+ <% end %>
35
+
36
+ <% if can?(:manage, Spree::Post) %>
37
+ <%= nav_item(Spree.t(:posts), spree.admin_posts_path) %>
38
+ <% end %>
39
+
18
40
  <% if can?(:manage, current_store) %>
19
41
  <%= nav_item(Spree.t(:settings), spree.edit_admin_storefront_path) %>
20
42
  <% end %>
@@ -33,7 +33,7 @@
33
33
  <%= dropdown_toggle class: 'btn-sm px-1 h-100' do %>
34
34
  <%= icon('dots-vertical', class: 'mr-0') %>
35
35
  <% end %>
36
- <%= dropdown_menu class: 'dropdown-menu-right' do %>
36
+ <%= dropdown_menu do %>
37
37
  <% if can?(:create, Spree::Taxon) %>
38
38
  <%= link_to_with_icon 'plus', Spree.t(:new_nested_taxon), spree.new_admin_taxonomy_taxon_path(taxonomy, taxon: { parent_id: taxon.id }), class: 'dropdown-item' %>
39
39
  <div class="dropdown-divider"></div>
@@ -1,4 +1,4 @@
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"></th>
4
4
  </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(:zone) %></th>
4
4
  <th scope="col"><%= Spree.t(:estimated_delivery_time) %></th>
5
5
  <th scope="col"><%= Spree.t(:amount) %></th>
@@ -1,10 +1,16 @@
1
- <%= search_form_for [:admin, @search], class: "filter-wrap", data: { controller: "filters dropdown" } do |f| %>
2
- <div class="d-flex flex-column flex-lg-row gap-2">
3
- <%= render 'spree/admin/shared/filters_search_bar', param: :variant_product_name_cont, label: Spree.t(:product_name) %>
1
+ <%= search_form_for [:admin, @search], class: "filter-wrap", data: { controller: "filters dialog" } do |f| %>
2
+ <div class="d-flex flex-column flex-lg-row gap-2">
3
+ <%= render 'spree/admin/shared/filters_search_bar', param: :variant_product_name_cont, label: Spree.t(:product_name) %>
4
4
 
5
- <%= render 'spree/admin/shared/filters_button' %>
6
- </div>
7
- <div data-dropdown-target="menu" id="table-filter" class="hidden">
5
+ <%= button_tag type: 'button', class: 'btn btn-light d-flex align-items-center', data: { action: 'dialog#open' } do %>
6
+ <%= icon "adjustments", class: "mr-1" %>
7
+ <%= Spree.t("admin.filters") %>
8
+ <% end %>
9
+ </div>
10
+
11
+ <dialog class="drawer" data-dialog-target="dialog" id="stock-items-filters-drawer">
12
+ <%= drawer_header(Spree.t(:filter), 'dialog') %>
13
+ <div class="drawer-body">
8
14
  <div class="form-group">
9
15
  <%= f.label :variant_sku_cont, Spree.t(:sku) %>
10
16
  <%= f.text_field :variant_sku_cont, size: 15, class: "form-control", data: {filters_target: :input} %>
@@ -17,8 +23,12 @@
17
23
  data: { controller: 'autocomplete-select' } %>
18
24
  </div>
19
25
  <%= render_admin_partials(:stock_items_filters_partials, f: f) %>
20
- <%= render 'spree/admin/shared/filter_submit' %>
21
- </div>
26
+ </div>
27
+ <div class="drawer-footer">
28
+ <%= drawer_discard_button('dialog') %>
29
+ <%= render 'spree/admin/shared/filter_submit' %>
30
+ </div>
31
+ </dialog>
22
32
 
23
33
  <%= render "spree/admin/shared/filter_badge_template" %>
24
34
  <div data-filters-target="badgesContainer" class="filter-badges-container"></div>
@@ -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, :country, Spree.t(:country) %></th>
2
+ <th scope="col"><%= sort_link @search, :name, Spree.t(:name) %></th>
3
+ <th scope="col"><%= sort_link @search, :country, Spree.t(:country) %></th>
4
4
  <th scope="col"><%= Spree.t(:active) %>?</th>
5
5
  <% if can?(:mark_as_default, Spree::StockLocation) %>
6
6
  <th scope="col"><%= Spree.t(:default) %>?</th>
@@ -20,7 +20,7 @@
20
20
  <%= dropdown_toggle class: 'btn-sm h-100' do %>
21
21
  <%= icon('dots-vertical', class: 'mr-0') %>
22
22
  <% end %>
23
- <%= dropdown_menu class: 'dropdown-menu-right' do %>
23
+ <%= dropdown_menu do %>
24
24
  <%= link_to_with_icon 'check',
25
25
  Spree.t(:mark_as_default),
26
26
  spree.mark_as_default_admin_stock_location_path(stock_location),
@@ -1,9 +1,15 @@
1
- <%= search_form_for [:admin, @search], class: "filter-wrap", data: {controller: "filters dropdown"} do |f| %>
2
- <div class="d-flex flex-column flex-lg-row gap-2">
3
- <%= render 'spree/admin/shared/filters_search_bar', param: :number_cont, label: Spree.t(:number) %>
4
- <%= render 'spree/admin/shared/filters_button' %>
5
- </div>
6
- <div data-dropdown-target="menu" id="table-filter" class="hidden">
1
+ <%= search_form_for [:admin, @search], class: "filter-wrap", data: {controller: "filters dialog"} do |f| %>
2
+ <div class="d-flex flex-column flex-lg-row gap-2">
3
+ <%= render 'spree/admin/shared/filters_search_bar', param: :number_cont, label: Spree.t(:number) %>
4
+ <%= button_tag type: 'button', class: 'btn btn-light d-flex align-items-center', data: { action: 'dialog#open' } do %>
5
+ <%= icon "adjustments", class: "mr-1" %>
6
+ <%= Spree.t("admin.filters") %>
7
+ <% end %>
8
+ </div>
9
+
10
+ <dialog class="drawer" data-dialog-target="dialog" id="stock-transfers-filters-drawer">
11
+ <%= drawer_header(Spree.t(:filter), 'dialog') %>
12
+ <div class="drawer-body">
7
13
  <div class="form-group">
8
14
  <%= f.label :reference_cont, Spree.t(:reference) %>
9
15
  <%= f.text_field :reference_cont, include_blank: true, size: 15, class: "form-control", data: { filters_target: :input } %>
@@ -29,10 +35,14 @@
29
35
  } %>
30
36
  </div>
31
37
  <%= render_admin_partials(:stock_transfers_filters_partials, f: f) %>
32
- <div class="form-actions">
33
- <%= button Spree.t(:search), "search" %>
34
38
  </div>
35
- </div>
39
+ <div class="drawer-footer">
40
+ <%= drawer_discard_button('dialog') %>
41
+ <div class="form-actions">
42
+ <%= button Spree.t(:search), "search" %>
43
+ </div>
44
+ </div>
45
+ </dialog>
36
46
 
37
47
  <%= render "spree/admin/shared/filter_badge_template" %>
38
48
  <div data-filters-target="badgesContainer" class="filter-badges-container"></div>
@@ -15,7 +15,7 @@
15
15
  <table class="table">
16
16
  <thead>
17
17
  <tr>
18
- <th scope="col"><%= sort_link search_collection, :name, Spree.t(:name) %></th>
18
+ <th scope="col"><%= sort_link @search, :name, Spree.t(:name) %></th>
19
19
  <th scope="col"></th>
20
20
  </tr>
21
21
  </thead>
@@ -1,4 +1,4 @@
1
- <% if @store_credits.any? %>
1
+ <% if @collection.any? %>
2
2
  <div class="table-responsive">
3
3
  <table class="table">
4
4
  <thead>
@@ -11,11 +11,11 @@
11
11
  <th scope="col"><%= Spree.t(:issued_on) %></th>
12
12
  </thead>
13
13
  <tbody>
14
- <%= render partial: 'spree/admin/store_credits/store_credit', collection: @store_credits, as: :store_credit, cached: spree_base_cache_scope %>
14
+ <%= render partial: 'spree/admin/store_credits/store_credit', collection: @collection, as: :store_credit, cached: spree_base_cache_scope %>
15
15
  </tbody>
16
16
  </table>
17
17
  </div>
18
- <%= render partial: 'spree/admin/shared/index_table_options', locals: { collection: @store_credits } %>
18
+ <%= render partial: 'spree/admin/shared/index_table_options', locals: { collection: @collection } %>
19
19
  <% else %>
20
20
  <%= render 'spree/admin/shared/no_resource_found', model_class: Spree::StoreCredit, new_object_url: spree.new_admin_user_store_credit_path(@user) %>
21
21
  <% end %>
@@ -63,21 +63,9 @@
63
63
  </h5>
64
64
  </div>
65
65
  <div class="card-body">
66
- <div class="form-group">
67
- <%= f.label :favicon_image do %>
68
- Favicon image
69
- <%= help_bubble("A favicon is a small image that appears in the tab of your web browser when you visit a website. It is usually a tiny square or rectangle with a unique design or logo that represents the website") %>
70
- <% end %>
71
- <%= render 'active_storage/upload_form', form: f, field_name: :favicon_image, width: 120, height: 120, crop: true %>
72
- </div>
66
+ <%= f.spree_file_field :favicon_image, width: 120, height: 120, crop: true, label: 'Favicon image', help_bubble: "A favicon is a small image that appears in the tab of your web browser when you visit a website. It is usually a tiny square or rectangle with a unique design or logo that represents the website" %>
73
67
 
74
- <div class="form-group mb-0">
75
- <%= f.label :social_image do %>
76
- Preview image
77
- <%= help_bubble("This image will be used when your store is shared on social media or in search engines.") %>
78
- <% end %>
79
- <%= render 'active_storage/upload_form', form: f, field_name: :social_image, width: 1200, height: 630, crop: true %>
80
- </div>
68
+ <%= f.spree_file_field :social_image, width: 1200, height: 630, crop: true, label: 'Preview image', help_bubble: "This image will be used when your store is shared on social media or in search engines." %>
81
69
  </div>
82
70
  </div>
83
71
 
@@ -12,14 +12,8 @@
12
12
  <%= Spree.t(:store_name_help) %>
13
13
  </p>
14
14
  <%= f.spree_text_field :name, required: true, autofocus: f.object.new_record? %>
15
-
16
- <div class="form-group mb-0">
17
- <%= f.label :logo do %>
18
- <%= Spree.t(:logo) %>
19
- <%= help_bubble("Used in the admin dashboard") %>
20
- <% end %>
21
- <%= render 'active_storage/upload_form', form: f, field_name: :logo, width: 240, height: 240, crop: true %>
22
- </div>
15
+
16
+ <%= f.spree_file_field :logo, width: 240, height: 240, crop: true, help_bubble: "Used in the admin dashboard" %>
23
17
  </div>
24
18
  </div>
25
19
 
@@ -9,10 +9,10 @@
9
9
 
10
10
  <div class="card-body">
11
11
  <%= f.spree_select :checkout_zone_id, options_for_select(@zones, @store.checkout_zone_id), { label: Spree.t(:shipping_zone), autocomplete: true } %>
12
- <small class="form-text mb-3">
12
+ <span class="form-text mb-3">
13
13
  <%= Spree.t(:shipping_zone_help) %>
14
14
  <%= link_to Spree.t('admin.manage_zones'), spree.admin_zones_path, class: 'text-blue' %>
15
- </small>
15
+ </span>
16
16
 
17
17
  <%= f.spree_select :default_country_iso, Spree::Country.pluck(:name, :iso), { include_blank: false, label: Spree.t(:default_country), autocomplete: true, help: Spree.t(:default_country_help) } %>
18
18
 
@@ -11,7 +11,7 @@
11
11
  >
12
12
  <%= turbo_frame_tag spree_dom_id(link), class: 'd-flex align-items-center w-100 py-2 pl-3 pr-2' do %>
13
13
  <%= link_to link.label, spree.edit_admin_page_link_path(link), class: 'd-block text-dark flex-fill' %>
14
- <button class="btn btn-sm pr-0 handle hover-gray h-100 px-1">
14
+ <button class="btn btn-sm pr-0 handle shadow-none hover-gray-200 px-1">
15
15
  <%= icon 'grip-vertical', class: 'mr-0' %>
16
16
  </button>
17
17
  <% end %>