spree_admin 5.0.0 → 5.0.2

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 (140) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/stylesheets/spree/admin/components/_alerts.scss +6 -3
  3. data/app/assets/stylesheets/spree/admin/components/_bulk_panel.scss +11 -1
  4. data/app/assets/stylesheets/spree/admin/components/_cards.scss +3 -4
  5. data/app/assets/stylesheets/spree/admin/components/_dropdowns.scss +1 -1
  6. data/app/assets/stylesheets/spree/admin/components/_main.scss +8 -1
  7. data/app/assets/stylesheets/spree/admin/components/_modals.scss +1 -1
  8. data/app/assets/stylesheets/spree/admin/global/_variables.scss +12 -6
  9. data/app/assets/stylesheets/spree/admin/shared/_base.scss +3 -5
  10. data/app/controllers/spree/admin/posts_controller.rb +6 -0
  11. data/app/controllers/spree/admin/products_controller.rb +7 -8
  12. data/app/controllers/spree/admin/storefront_controller.rb +1 -1
  13. data/app/controllers/spree/admin/translations_controller.rb +1 -1
  14. data/app/controllers/spree/admin/users_controller.rb +1 -1
  15. data/app/helpers/spree/admin/base_helper.rb +49 -57
  16. data/app/helpers/spree/admin/bulk_operations_helper.rb +86 -0
  17. data/app/helpers/spree/admin/modal_helper.rb +29 -0
  18. data/app/helpers/spree/admin/navigation_helper.rb +76 -1
  19. data/app/helpers/spree/admin/orders_helper.rb +0 -19
  20. data/app/helpers/spree/admin/stores_helper.rb +5 -34
  21. data/app/javascript/spree/admin/controllers/slug_form_controller.js +0 -3
  22. data/app/javascript/spree/admin/controllers/variants_form_controller.js +6 -0
  23. data/app/javascript/spree/admin/helpers/bootstrap.js +3 -3
  24. data/app/views/active_storage/_upload_form.html.erb +4 -8
  25. data/app/views/spree/admin/assets/edit.html.erb +3 -8
  26. data/app/views/spree/admin/coupon_codes/index.html.erb +4 -6
  27. data/app/views/spree/admin/custom_domains/_custom_domains.html.erb +1 -1
  28. data/app/views/spree/admin/custom_domains/index.html.erb +1 -1
  29. data/app/views/spree/admin/customer_returns/index.html.erb +4 -17
  30. data/app/views/spree/admin/dashboard/_setup_progress.html.erb +4 -2
  31. data/app/views/spree/admin/dashboard/show.html.erb +1 -1
  32. data/app/views/spree/admin/digital_assets/_table.html.erb +1 -1
  33. data/app/views/spree/admin/digital_assets/edit.html.erb +3 -11
  34. data/app/views/spree/admin/digital_assets/new.html.erb +3 -11
  35. data/app/views/spree/admin/errors/forbidden.html.erb +13 -0
  36. data/app/views/spree/admin/exports/index.html.erb +22 -24
  37. data/app/views/spree/admin/exports/new.html.erb +3 -9
  38. data/app/views/spree/admin/line_items/new.html.erb +2 -5
  39. data/app/views/spree/admin/oauth_applications/index.html.erb +57 -58
  40. data/app/views/spree/admin/option_types/_filter.html.erb +1 -1
  41. data/app/views/spree/admin/option_types/index.html.erb +7 -11
  42. data/app/views/spree/admin/orders/_filters.html.erb +2 -7
  43. data/app/views/spree/admin/orders/_list.html.erb +2 -4
  44. data/app/views/spree/admin/orders/billing_address/create.turbo_stream.erb +3 -6
  45. data/app/views/spree/admin/orders/billing_address/edit.html.erb +3 -6
  46. data/app/views/spree/admin/orders/billing_address/new.html.erb +3 -6
  47. data/app/views/spree/admin/orders/billing_address/update.turbo_stream.erb +3 -6
  48. data/app/views/spree/admin/orders/contact_information/edit.html.erb +3 -6
  49. data/app/views/spree/admin/orders/customer_returns/edit.html.erb +1 -10
  50. data/app/views/spree/admin/orders/index.html.erb +1 -1
  51. data/app/views/spree/admin/orders/return_authorizations/_form.html.erb +1 -1
  52. data/app/views/spree/admin/orders/return_authorizations/show.html.erb +45 -43
  53. data/app/views/spree/admin/orders/shipping_address/create.turbo_stream.erb +3 -6
  54. data/app/views/spree/admin/orders/shipping_address/edit.html.erb +3 -6
  55. data/app/views/spree/admin/orders/shipping_address/new.html.erb +3 -6
  56. data/app/views/spree/admin/orders/shipping_address/update.turbo_stream.erb +3 -6
  57. data/app/views/spree/admin/pages/_filters.html.erb +1 -1
  58. data/app/views/spree/admin/pages/_page.html.erb +26 -0
  59. data/app/views/spree/admin/pages/edit.html.erb +2 -5
  60. data/app/views/spree/admin/pages/index.html.erb +9 -7
  61. data/app/views/spree/admin/payment_methods/index.html.erb +10 -8
  62. data/app/views/spree/admin/post_categories/_post_category.html.erb +5 -2
  63. data/app/views/spree/admin/post_categories/index.html.erb +6 -7
  64. data/app/views/spree/admin/posts/_filters.html.erb +4 -9
  65. data/app/views/spree/admin/posts/_form.html.erb +2 -2
  66. data/app/views/spree/admin/posts/_post.html.erb +1 -11
  67. data/app/views/spree/admin/posts/index.html.erb +7 -11
  68. data/app/views/spree/admin/products/_bulk_operations.html.erb +59 -94
  69. data/app/views/spree/admin/products/_filters.html.erb +12 -7
  70. data/app/views/spree/admin/products/_list.html.erb +2 -10
  71. data/app/views/spree/admin/products/_product.html.erb +1 -4
  72. data/app/views/spree/admin/products/bulk_modal.html.erb +3 -8
  73. data/app/views/spree/admin/products/index.html.erb +5 -5
  74. data/app/views/spree/admin/promotion_actions/new.html.erb +7 -12
  75. data/app/views/spree/admin/promotion_rules/new.html.erb +7 -12
  76. data/app/views/spree/admin/promotions/_filters.html.erb +27 -0
  77. data/app/views/spree/admin/promotions/index.html.erb +7 -35
  78. data/app/views/spree/admin/properties/index.html.erb +10 -9
  79. data/app/views/spree/admin/refund_reasons/index.html.erb +37 -35
  80. data/app/views/spree/admin/refunds/edit.html.erb +3 -8
  81. data/app/views/spree/admin/reimbursement_types/index.html.erb +42 -40
  82. data/app/views/spree/admin/reports/_report.html.erb +1 -1
  83. data/app/views/spree/admin/return_authorization_reasons/index.html.erb +41 -41
  84. data/app/views/spree/admin/return_authorizations/_filters.html.erb +1 -1
  85. data/app/views/spree/admin/return_authorizations/_list.html.erb +1 -10
  86. data/app/views/spree/admin/return_authorizations/index.html.erb +1 -1
  87. data/app/views/spree/admin/roles/_form.html.erb +1 -1
  88. data/app/views/spree/admin/roles/index.html.erb +26 -24
  89. data/app/views/spree/admin/shared/_bulk_modal.html.erb +6 -7
  90. data/app/views/spree/admin/shared/_filter_submit.html.erb +6 -0
  91. data/app/views/spree/admin/shared/_modal.html.erb +2 -8
  92. data/app/views/spree/admin/shared/_multi_product_picker.html.erb +2 -4
  93. data/app/views/spree/admin/shared/_no_resource_found.html.erb +1 -1
  94. data/app/views/spree/admin/shared/_product_image.html.erb +1 -10
  95. data/app/views/spree/admin/shared/_refunds.html.erb +1 -1
  96. data/app/views/spree/admin/shared/sidebar/_orders_nav.html.erb +1 -1
  97. data/app/views/spree/admin/shared/sidebar/_store_dropdown.html.erb +36 -7
  98. data/app/views/spree/admin/shared/sidebar/_store_nav.html.erb +4 -0
  99. data/app/views/spree/admin/shared/sortable_tree/_taxonomy.html.erb +3 -23
  100. data/app/views/spree/admin/shipping_categories/index.html.erb +28 -26
  101. data/app/views/spree/admin/shipping_methods/_actions.html.erb +1 -1
  102. data/app/views/spree/admin/shipping_methods/index.html.erb +23 -21
  103. data/app/views/spree/admin/stock_items/_filters.html.erb +2 -7
  104. data/app/views/spree/admin/stock_items/index.html.erb +5 -8
  105. data/app/views/spree/admin/stock_locations/_stock_location.html.erb +16 -13
  106. data/app/views/spree/admin/stock_locations/index.html.erb +24 -21
  107. data/app/views/spree/admin/stock_transfers/_filters.html.erb +1 -1
  108. data/app/views/spree/admin/stock_transfers/_new_variant_modal.html.erb +3 -5
  109. data/app/views/spree/admin/stock_transfers/index.html.erb +6 -6
  110. data/app/views/spree/admin/store_credit_categories/_form.html.erb +1 -1
  111. data/app/views/spree/admin/store_credit_categories/edit.html.erb +6 -4
  112. data/app/views/spree/admin/store_credit_categories/index.html.erb +28 -24
  113. data/app/views/spree/admin/store_credits/index.html.erb +2 -2
  114. data/app/views/spree/admin/storefront/edit.html.erb +7 -9
  115. data/app/views/spree/admin/stores/form/_policies.html.erb +1 -1
  116. data/app/views/spree/admin/stores/new.html.erb +9 -6
  117. data/app/views/spree/admin/tax_categories/index.html.erb +24 -22
  118. data/app/views/spree/admin/tax_rates/index.html.erb +26 -24
  119. data/app/views/spree/admin/taxonomies/index.html.erb +4 -4
  120. data/app/views/spree/admin/taxonomies/show.html.erb +2 -2
  121. data/app/views/spree/admin/themes/_theme_preview_image.html.erb +1 -10
  122. data/app/views/spree/admin/themes/index.html.erb +2 -2
  123. data/app/views/spree/admin/translations/_translations_unavailable.html.erb +6 -8
  124. data/app/views/spree/admin/users/_filters.html.erb +2 -7
  125. data/app/views/spree/admin/users/_lifetime_stats.html.erb +1 -1
  126. data/app/views/spree/admin/users/_tabs.html.erb +4 -4
  127. data/app/views/spree/admin/users/_user.html.erb +1 -4
  128. data/app/views/spree/admin/users/bulk_modal.html.erb +3 -8
  129. data/app/views/spree/admin/users/index.html.erb +25 -58
  130. data/app/views/spree/admin/variants/form/_media_asset.html.erb +1 -7
  131. data/app/views/spree/admin/variants/form/_pricing.html.erb +1 -1
  132. data/app/views/spree/admin/webhooks_subscribers/_form.html.erb +1 -1
  133. data/app/views/spree/admin/webhooks_subscribers/index.html.erb +25 -22
  134. data/app/views/spree/admin/webhooks_subscribers/show.html.erb +3 -3
  135. data/app/views/spree/admin/zones/index.html.erb +34 -32
  136. data/config/initializers/chartkick.rb +1 -1
  137. data/config/locales/en.yml +3 -7
  138. metadata +14 -10
  139. data/app/views/spree/admin/pages/_page.erb +0 -8
  140. data/app/views/spree/admin/products/_empty_list.html.erb +0 -1
@@ -3,7 +3,7 @@
3
3
  <%= content_for(:title, Spree.t('admin.oauth_applications.list')) %>
4
4
 
5
5
  <% content_for :page_actions do %>
6
- <%= button_link_to Spree.t('admin.oauth_applications.new'), new_object_url, class: "btn-primary", icon: 'plus' %>
6
+ <%= link_to_with_icon 'plus', Spree.t('admin.oauth_applications.new'), new_object_url, class: "btn btn-primary" %>
7
7
  <% end if can? :create, Spree::OauthApplication %>
8
8
 
9
9
  <%= content_for :page_alerts do %>
@@ -15,61 +15,60 @@
15
15
  </div>
16
16
  <% end %>
17
17
 
18
- <% if @oauth_applications.any? %>
19
- <div class="table-responsive rounded border mt-4 bg-white">
20
- <table class="table">
21
- <thead class="text-muted">
22
- <tr>
23
- <th><%= Spree.t(:name) %></th>
24
- <th>Client ID</th>
25
- <th><%= Spree.t('admin.oauth_applications.scopes') %></th>
26
- <th><%= Spree.t('admin.oauth_applications.last_used') %></th>
27
- <th class="actions"></th>
28
- </tr>
29
- </thead>
30
- <tbody>
31
- <% @oauth_applications.each do |application| %>
32
- <tr id="<%= spree_dom_id application %>">
33
- <td class="w-20"><code><%= application.name %></code></td>
34
- <td class="w-40">
35
- <div class="input-group" data-controller="password-toggle">
36
- <%= button_tag class: 'btn hover-gray px-1', data: { action: 'click->password-toggle#password' } do %>
37
- <%= icon 'eye', class: 'mr-0' %>
38
- <% end %>
39
- <%= password_field_tag :password, application.uid, class: 'form-control-plaintext', data: { password_toggle_target: 'unhide' }, readonly: true %>
40
- </div>
41
- </td>
42
- <td class="w-15">
43
- <% if application.scopes.include?('write') %>
44
- <span class="badge badge-warning">
45
- <%= icon('pencil', class: 'mr-1') %>
46
- <%= Spree.t('admin.oauth_applications.read_and_write') %>
47
- </span>
48
- <% else %>
49
- <span class="badge badge-light">
50
- <%= icon('eye', class: 'mr-1') %>
51
- <%= Spree.t('admin.oauth_applications.read_only') %>
52
- </span>
53
- <% end %>
54
- </td>
55
- <td class="w-15">
56
- <% if application.last_used_at %>
57
- <%= local_time(application.last_used_at) %>
58
- <% else %>
59
- <span class="text-muted"><%= Spree.t('admin.oauth_applications.never') %></span>
60
- <% end %>
61
- </td>
62
- <td class="actions w-10">
63
- <%= link_to_edit(application, no_text: true) if can? :edit, application %>
64
- </td>
18
+ <div class="card-lg">
19
+ <% if @collection.any? %>
20
+ <div class="table-responsive">
21
+ <table class="table">
22
+ <thead class="text-muted">
23
+ <tr>
24
+ <th><%= Spree.t(:name) %></th>
25
+ <th>Client ID</th>
26
+ <th><%= Spree.t('admin.oauth_applications.scopes') %></th>
27
+ <th><%= Spree.t('admin.oauth_applications.last_used') %></th>
28
+ <th></th>
65
29
  </tr>
66
- <% end %>
67
- </tbody>
68
- </table>
69
- </div>
70
- <% else %>
71
- <div class="text-muted p-5 d-flex align-items-center w-100 justify-content-center">
72
- <%= Spree.t(:no_resource_found, resource: 'API keys') %>
73
- <%= link_to_with_icon('plus', Spree.t(:add_one), new_object_url, class: 'btn btn-link ml-3') if can? :create, Spree::OauthApplication %>
74
- </div>
75
- <% end %>
30
+ </thead>
31
+ <tbody>
32
+ <% @collection.each do |application| %>
33
+ <tr id="<%= spree_dom_id application %>">
34
+ <td class="w-20"><code><%= application.name %></code></td>
35
+ <td class="w-40">
36
+ <div class="input-group" data-controller="password-toggle">
37
+ <%= button_tag class: 'btn hover-gray px-1', data: { action: 'click->password-toggle#password' } do %>
38
+ <%= icon 'eye', class: 'mr-0' %>
39
+ <% end %>
40
+ <%= password_field_tag :password, application.uid, class: 'form-control-plaintext', data: { password_toggle_target: 'unhide' }, readonly: true %>
41
+ </div>
42
+ </td>
43
+ <td class="w-15">
44
+ <% if application.scopes.include?('write') %>
45
+ <span class="badge badge-warning">
46
+ <%= icon('pencil', class: 'mr-1') %>
47
+ <%= Spree.t('admin.oauth_applications.read_and_write') %>
48
+ </span>
49
+ <% else %>
50
+ <span class="badge badge-light">
51
+ <%= icon('eye', class: 'mr-1') %>
52
+ <%= Spree.t('admin.oauth_applications.read_only') %>
53
+ </span>
54
+ <% end %>
55
+ </td>
56
+ <td class="w-15">
57
+ <% if application.last_used_at %>
58
+ <%= local_time(application.last_used_at) %>
59
+ <% else %>
60
+ <span class="text-muted"><%= Spree.t('admin.oauth_applications.never') %></span>
61
+ <% end %>
62
+ </td>
63
+ <td class="actions w-10">
64
+ <%= link_to_edit(application, no_text: true) if can? :edit, application %>
65
+ </td>
66
+ </tr>
67
+ <% end %>
68
+ </tbody>
69
+ </table>
70
+ </div>
71
+ <% else %>
72
+ <%= render 'spree/admin/shared/no_resource_found', resource_name: 'API keys' %>
73
+ <% end %>
74
+ </div>
@@ -1,4 +1,4 @@
1
- <%= search_form_for [:admin, @search], class: "filter-wrap border-bottom", data: {controller: "filters reveal", reveal_hidden_class: "d-none"} do |f| %>
1
+ <%= search_form_for [:admin, @search], class: "filter-wrap", data: {controller: "filters reveal", reveal_hidden_class: "d-none"} do |f| %>
2
2
  <%= render 'spree/admin/shared/filters_search_bar', param: :name_cont, label: Spree.t(:name) %>
3
3
 
4
4
  <%= render "spree/admin/shared/filter_badge_template" %>
@@ -3,11 +3,7 @@
3
3
  <% end %>
4
4
 
5
5
  <% content_for :page_actions do %>
6
- <span id="new_ot_link">
7
- <%= button_link_to Spree.t(:new_option_type),
8
- new_object_url,
9
- { class: "btn-primary", icon: "plus", id: "new_option_type_link" } %>
10
- </span>
6
+ <%= link_to_with_icon 'plus', Spree.t(:new_option_type), new_object_url, class: 'btn btn-primary' %>
11
7
  <% end if can?(:create, Spree::OptionType) %>
12
8
 
13
9
  <%= content_for(:page_alerts) do %>
@@ -17,12 +13,8 @@
17
13
  </div>
18
14
  <% end %>
19
15
 
20
- <div id="new_option_type"></div>
21
-
22
- <div class="card-lg p-0">
23
-
16
+ <div class="card-lg">
24
17
  <%= render partial: "spree/admin/option_types/filter" %>
25
-
26
18
  <% if @option_types.any? %>
27
19
  <div class="table-responsive">
28
20
  <table class="table" id="listing_option_types">
@@ -44,7 +36,7 @@
44
36
  <th>
45
37
  <%= Spree.t(:products) %>
46
38
  </th>
47
- <th class="actions"></th>
39
+ <th></th>
48
40
  </tr>
49
41
  </thead>
50
42
  <tbody
@@ -61,3 +53,7 @@
61
53
  <%= render "spree/admin/shared/no_resource_found" %>
62
54
  <% end %>
63
55
  </div>
56
+
57
+ <p class="documentation-link-container">
58
+ <%= external_link_to "Learn more about options", "https://spreecommerce.org/docs/user/manage-products/product-options" %>
59
+ </p>
@@ -2,7 +2,7 @@
2
2
 
3
3
  <%= search_form_for [:admin, @vendor || @user, @search],
4
4
  url: controller_name == 'checkouts' ? spree.admin_checkouts_path : nil,
5
- class: "filter-wrap border-bottom",
5
+ class: "filter-wrap",
6
6
  data: {
7
7
  controller: "filters reveal",
8
8
  reveal_hidden_class: "d-none",
@@ -92,12 +92,7 @@
92
92
  <%= render_admin_partials(:orders_filters_partials, f: f) %>
93
93
  </div>
94
94
 
95
- <div class="form-actions">
96
- <%= turbo_save_button_tag Spree.t(:filter_results) do %>
97
- <%= icon("search") %>
98
- <%= Spree.t(:filter_results) %>
99
- <% end %>
100
- </div>
95
+ <%= render 'spree/admin/shared/filter_submit' %>
101
96
  </div>
102
97
 
103
98
  <%= render "spree/admin/shared/filter_badge_template" %>
@@ -23,8 +23,6 @@
23
23
  </table>
24
24
  </div>
25
25
  <% else %>
26
- <div class="text-muted p-5 d-flex align-items-center w-100 justify-content-center">
27
- <%= Spree.t(:no_resource_found, resource: plural_resource_name(Spree::Order)) %>
28
- </div>
26
+ <%= render 'spree/admin/shared/no_resource_found', new_object_url: nil, model_class: Spree::Order %>
29
27
  <% end %>
30
- <%= render 'spree/admin/shared/index_table_options', collection: @orders, simple: true if @orders.any? %>
28
+ <%= render 'spree/admin/shared/index_table_options', collection: @orders if @orders.any? %>
@@ -1,10 +1,7 @@
1
1
  <%= turbo_stream.update :dialog_modal do %>
2
2
  <%= form_for @address, url: spree.admin_order_billing_address_path(@order), data: {controller: 'auto-submit', form_target: 'form', turbo_frame: :_top}, method: :post do |f| %>
3
3
  <div class="modal-content">
4
- <div class="modal-header">
5
- <h5 class="modal-title" id="exampleModalLabel"><%= Spree.t(:new_billing_address) %></h5>
6
- <button type="button" class="btn-close" data-dismiss="modal" aria-label="<%= Spree.t(:close) %>" ></button>
7
- </div>
4
+ <%= modal_header(Spree.t(:new_billing_address)) %>
8
5
  <div class="modal-body d-flex flex-col gap-3" data-controller="order-billing-address">
9
6
  <div>
10
7
  <% if @order.shipping_address.present? %>
@@ -26,8 +23,8 @@
26
23
  </div>
27
24
  <%= render 'form', address: @address, f: f %>
28
25
  </div>
29
- <div class="modal-footer d-flex justify-content-between">
30
- <button type="button" class="btn btn-light" data-dismiss="modal"><%= Spree.t('actions.discard') %></button>
26
+ <div class="modal-footer">
27
+ <%= modal_discard_button %>
31
28
  <%= turbo_save_button_tag Spree.t('actions.save') %>
32
29
  </div>
33
30
  </div>
@@ -1,10 +1,7 @@
1
1
  <%= turbo_frame_tag :dialog_modal do %>
2
2
  <%= form_for @address, url: spree.admin_order_billing_address_path(@order), data: {controller: 'auto-submit', form_target: 'form', turbo_frame: :_top}, method: :put do |f| %>
3
3
  <div class="modal-content">
4
- <div class="modal-header">
5
- <h5 class="modal-title" id="exampleModalLabel"><%= Spree.t(:billing_address) %></h5>
6
- <button type="button" class="btn-close" data-dismiss="modal" aria-label="<%= Spree.t(:close) %>"></button>
7
- </div>
4
+ <%= modal_header(Spree.t(:billing_address)) %>
8
5
  <div class="modal-body d-flex flex-col gap-3" data-controller="order-billing-address">
9
6
  <div>
10
7
  <% if @order.shipping_address.present? %>
@@ -33,8 +30,8 @@
33
30
  </div>
34
31
  <%= render 'form', address: @address, f: f %>
35
32
  </div>
36
- <div class="modal-footer d-flex justify-content-between">
37
- <button type="button" class="btn btn-light" data-dismiss="modal"><%= Spree.t('actions.discard') %></button>
33
+ <div class="modal-footer">
34
+ <%= modal_discard_button %>
38
35
  <%= turbo_save_button_tag Spree.t('actions.update') %>
39
36
  </div>
40
37
  </div>
@@ -1,10 +1,7 @@
1
1
  <%= turbo_frame_tag :dialog_modal do %>
2
2
  <%= form_for @address, url: spree.admin_order_billing_address_path(@order), data: {controller: 'auto-submit', form_target: 'form', turbo_frame: :_top}, method: :post do |f| %>
3
3
  <div class="modal-content">
4
- <div class="modal-header">
5
- <h5 class="modal-title" id="exampleModalLabel"><%= Spree.t(:billing_address) %></h5>
6
- <button type="button" class="btn-close" data-dismiss="modal" aria-label="<%= Spree.t(:close) %>" ></button>
7
- </div>
4
+ <%= modal_header(Spree.t(:billing_address)) %>
8
5
  <div class="modal-body d-flex flex-col gap-3" data-controller="order-billing-address">
9
6
  <div>
10
7
  <% if @order.shipping_address.present? %>
@@ -26,8 +23,8 @@
26
23
  </div>
27
24
  <%= render 'form', address: @address, f: f %>
28
25
  </div>
29
- <div class="modal-footer d-flex justify-content-between">
30
- <button type="button" class="btn btn-light" data-dismiss="modal"><%= Spree.t('actions.discard') %></button>
26
+ <div class="modal-footer">
27
+ <%= modal_discard_button %>
31
28
  <%= turbo_save_button_tag Spree.t('actions.save') %>
32
29
  </div>
33
30
  </div>
@@ -1,10 +1,7 @@
1
1
  <%= turbo_stream.update :dialog_modal do %>
2
2
  <%= form_for @address, url: spree.admin_order_billing_address_path(@order), data: {controller: 'auto-submit', form_target: 'form', turbo_frame: :_top}, method: :put do |f| %>
3
3
  <div class="modal-content">
4
- <div class="modal-header">
5
- <h5 class="modal-title" id="exampleModalLabel"><%= Spree.t(:update_billing_address) %></h5>
6
- <button type="button" class="btn-close" data-dismiss="modal" aria-label="<%= Spree.t(:close) %>"></button>
7
- </div>
4
+ <%= modal_header(Spree.t(:update_billing_address)) %>
8
5
  <div class="modal-body d-flex flex-col gap-3" data-controller="order-billing-address">
9
6
  <div>
10
7
  <% if @order.shipping_address.present? %>
@@ -26,8 +23,8 @@
26
23
  </div>
27
24
  <%= render 'form', address: @address, f: f %>
28
25
  </div>
29
- <div class="modal-footer d-flex justify-content-between">
30
- <button type="button" class="btn btn-light" data-dismiss="modal"><%= Spree.t('actions.discard') %></button>
26
+ <div class="modal-footer">
27
+ <%= modal_discard_button %>
31
28
  <%= turbo_save_button_tag Spree.t('actions.update') %>
32
29
  </div>
33
30
  </div>
@@ -1,18 +1,15 @@
1
1
  <%= turbo_frame_tag :dialog_modal do %>
2
2
  <%= form_for @order, url: spree.admin_order_contact_information_path(@order), method: :put, data: { turbo_frame: :_top } do |f| %>
3
3
  <div class="modal-content">
4
- <div class="modal-header">
5
- <h5 class="modal-title" id="exampleModalLabel"><%= Spree.t(:update_contact_information) %></h5>
6
- <button type="button" class="btn-close" data-dismiss="modal" aria-label="<%= Spree.t(:close) %>" />
7
- </div>
4
+ <%= modal_header(Spree.t(:update_contact_information)) %>
8
5
  <div class="modal-body">
9
6
  <div class="form-group">
10
7
  <%= f.label :email, Spree.t(:email) %>
11
8
  <%= f.email_field :email, class: 'form-control', required: true %>
12
9
  </div>
13
10
  </div>
14
- <div class="modal-footer d-flex justify-content-between">
15
- <button type="button" class="btn btn-light" data-dismiss="modal"><%= Spree.t('actions.discard') %></button>
11
+ <div class="modal-footer">
12
+ <%= modal_discard_button %>
16
13
  <%= turbo_save_button_tag Spree.t('actions.update') %>
17
14
  </div>
18
15
  </div>
@@ -110,16 +110,7 @@
110
110
  reimbursements: @customer_return.reimbursements,
111
111
  } %>
112
112
  <% else %>
113
- <div
114
- class="
115
- text-muted p-5 d-flex align-items-center w-100 justify-content-center
116
- "
117
- >
118
- <%= Spree.t(
119
- :no_resource_found,
120
- resource: plural_resource_name(Spree::Reimbursement),
121
- ) %>
122
- </div>
113
+ <%= render 'spree/admin/shared/no_resource_found', new_object_url: nil %>
123
114
  <% end %>
124
115
  </div>
125
116
  </div>
@@ -10,7 +10,7 @@
10
10
  <%= link_to_with_icon 'plus', Spree.t(:new_order), spree.admin_orders_path, class: "btn btn-primary", data: { turbo_method: :post } if can?(:create, Spree::Order) %>
11
11
  <% end %>
12
12
 
13
- <div class="card-lg p-0">
13
+ <div class="card-lg">
14
14
  <% if params[:frame_name].present? %>
15
15
  <%= turbo_frame_tag params[:frame_name], autoscroll: true, data: { autoscroll_block: :nearest, autoscroll_behavior: :smooth } do %>
16
16
  <%= render 'spree/admin/orders/filters', frame_name: params[:frame_name] %>
@@ -1,7 +1,7 @@
1
1
  <% allow_return_item_changes = !@return_authorization.customer_returned_items? %>
2
2
 
3
3
  <div data-controller="return-items">
4
- <div class="table-responsive card-lg p-0 mb-4">
4
+ <div class="table-responsive card-lg mb-4">
5
5
  <table class="table table-condensed return-items-table">
6
6
  <thead class="text-muted">
7
7
  <tr>
@@ -24,51 +24,53 @@ locals: {
24
24
  </div>
25
25
  <% end %>
26
26
 
27
- <div class="table-responsive card-lg p-0 mb-4">
28
- <table class="table table-condensed return-items-table">
29
- <thead class="text-muted">
30
- <tr>
31
- <th><%= Spree.t(:product) %></th>
32
- <th><%= Spree.t(:status) %></th>
33
- <th><%= Spree.t(:purchased_quantity) %></th>
34
- <th><%= Spree.t(:return_quantity) %></th>
35
- <th><%= Spree.t(:total) %></th>
36
- <th><%= Spree.t(:refund_amount) %></th>
37
- <th><%= Spree.t(:reimbursement_type) %></th>
38
- <th><%= Spree.t(:exchange_for) %></th>
39
- </tr>
40
- </thead>
41
- <tbody>
42
- <% @return_authorization.return_items.each do |return_item| %>
27
+ <div class="card-lg mb-4">
28
+ <div class="table-responsive">
29
+ <table class="table table-condensed return-items-table">
30
+ <thead class="text-muted">
43
31
  <tr>
44
- <td>
45
- <div class="variant-name">
46
- <%= link_to return_item.inventory_unit.variant.name,
47
- spree.edit_admin_product_path(return_item.inventory_unit.variant.product) %>
48
- </div>
49
- <div class="variant-options"><%= return_item.inventory_unit.variant.options_text %></div>
50
- </td>
51
- <td><%= return_item.inventory_unit.state.humanize %></td>
52
- <td class="purchased-quantity">
53
- <%= return_item.line_item.quantity %>
54
- </td>
55
- <td><%= return_item.return_quantity %></td>
56
- <td><%= return_item.pre_tax_amount %></td>
57
- <td><%= return_item.display_total %></td>
58
- <td><%= if return_item.preferred_reimbursement_type.present?
59
- return_item.preferred_reimbursement_type.name.humanize
60
- else
61
- "-"
62
- end %></td>
63
- <td><%= if return_item.exchange_processed?
64
- return_item.exchange_variant.exchange_name
65
- else
66
- "-"
67
- end %></td>
32
+ <th><%= Spree.t(:product) %></th>
33
+ <th><%= Spree.t(:status) %></th>
34
+ <th><%= Spree.t(:purchased_quantity) %></th>
35
+ <th><%= Spree.t(:return_quantity) %></th>
36
+ <th><%= Spree.t(:total) %></th>
37
+ <th><%= Spree.t(:refund_amount) %></th>
38
+ <th><%= Spree.t(:reimbursement_type) %></th>
39
+ <th><%= Spree.t(:exchange_for) %></th>
68
40
  </tr>
69
- <% end %>
70
- </tbody>
71
- </table>
41
+ </thead>
42
+ <tbody>
43
+ <% @return_authorization.return_items.each do |return_item| %>
44
+ <tr>
45
+ <td>
46
+ <div class="variant-name">
47
+ <%= link_to return_item.inventory_unit.variant.name,
48
+ spree.edit_admin_product_path(return_item.inventory_unit.variant.product) %>
49
+ </div>
50
+ <div class="variant-options"><%= return_item.inventory_unit.variant.options_text %></div>
51
+ </td>
52
+ <td><%= return_item.inventory_unit.state.humanize %></td>
53
+ <td class="purchased-quantity">
54
+ <%= return_item.line_item.quantity %>
55
+ </td>
56
+ <td><%= return_item.return_quantity %></td>
57
+ <td><%= return_item.pre_tax_amount %></td>
58
+ <td><%= return_item.display_total %></td>
59
+ <td><%= if return_item.preferred_reimbursement_type.present?
60
+ return_item.preferred_reimbursement_type.name.humanize
61
+ else
62
+ "-"
63
+ end %></td>
64
+ <td><%= if return_item.exchange_processed?
65
+ return_item.exchange_variant.exchange_name
66
+ else
67
+ "-"
68
+ end %></td>
69
+ </tr>
70
+ <% end %>
71
+ </tbody>
72
+ </table>
73
+ </div>
72
74
  </div>
73
75
 
74
76
  <% if @return_authorization.reason.present? %>
@@ -1,15 +1,12 @@
1
1
  <%= turbo_stream.update :dialog_modal do %>
2
2
  <%= form_for @address, url: spree.admin_order_shipping_address_path(@order), data: {turbo_frame: :_top}, method: :post do |f| %>
3
3
  <div class="modal-content">
4
- <div class="modal-header">
5
- <h5 class="modal-title" id="exampleModalLabel"><%= Spree.t(:new_shipping_address) %></h5>
6
- <button type="button" class="btn-close" data-dismiss="modal" aria-label="<%= Spree.t(:close) %>" ></button>
7
- </div>
4
+ <%= modal_header(Spree.t(:new_shipping_address)) %>
8
5
  <div class="modal-body d-flex flex-col gap-3">
9
6
  <%= render 'form', address: @address, f: f%>
10
7
  </div>
11
- <div class="modal-footer d-flex justify-content-between">
12
- <button type="button" class="btn btn-light" data-dismiss="modal"><%= Spree.t('actions.discard') %></button>
8
+ <div class="modal-footer">
9
+ <%= modal_discard_button %>
13
10
  <%= turbo_save_button_tag Spree.t('actions.save') %>
14
11
  </div>
15
12
  </div>
@@ -1,15 +1,12 @@
1
1
  <%= turbo_frame_tag :dialog_modal do %>
2
2
  <%= form_for @address, url: spree.admin_order_shipping_address_path(@order), data: {controller: 'auto-submit', form_target: 'form', turbo_frame: :_top}, method: :put do |f| %>
3
3
  <div class="modal-content">
4
- <div class="modal-header">
5
- <h5 class="modal-title" id="exampleModalLabel"><%= Spree.t(:update_shipping_address) %></h5>
6
- <button type="button" class="btn-close" data-dismiss="modal" aria-label="<%= Spree.t(:close) %>" ></button>
7
- </div>
4
+ <%= modal_header(Spree.t(:update_shipping_address)) %>
8
5
  <div class="modal-body d-flex flex-col gap-3">
9
6
  <%= render 'form', address: @address, f: f %>
10
7
  </div>
11
- <div class="modal-footer d-flex justify-content-between">
12
- <button type="button" class="btn btn-light" data-dismiss="modal"><%= Spree.t('actions.discard') %></button>
8
+ <div class="modal-footer">
9
+ <%= modal_discard_button %>
13
10
  <%= turbo_save_button_tag Spree.t('actions.update') %>
14
11
  </div>
15
12
  </div>
@@ -1,15 +1,12 @@
1
1
  <%= turbo_frame_tag :dialog_modal do %>
2
2
  <%= form_for @address, url: spree.admin_order_shipping_address_path(@order), data: {turbo_frame: :_top}, method: :post do |f| %>
3
3
  <div class="modal-content">
4
- <div class="modal-header">
5
- <h5 class="modal-title" id="exampleModalLabel"><%= Spree.t(:new_shipping_address) %></h5>
6
- <button type="button" class="btn-close" data-dismiss="modal" aria-label="<%= Spree.t(:close) %>" ></button>
7
- </div>
4
+ <%= modal_header(Spree.t(:new_shipping_address)) %>
8
5
  <div class="modal-body d-flex flex-col gap-3">
9
6
  <%= render 'form', address: @address, f: f%>
10
7
  </div>
11
- <div class="modal-footer d-flex justify-content-between">
12
- <button type="button" class="btn btn-light" data-dismiss="modal"><%= Spree.t('actions.discard') %></button>
8
+ <div class="modal-footer">
9
+ <%= modal_discard_button %>
13
10
  <%= turbo_save_button_tag Spree.t('actions.save') %>
14
11
  </div>
15
12
  </div>
@@ -1,15 +1,12 @@
1
1
  <%= turbo_stream.update :dialog_modal do %>
2
2
  <%= form_for @address, url: spree.admin_order_shipping_address_path(@order), data: {controller: 'auto-submit', form_target: 'form', turbo_frame: :_top}, method: :put do |f| %>
3
3
  <div class="modal-content">
4
- <div class="modal-header">
5
- <h5 class="modal-title" id="exampleModalLabel"><%= Spree.t(:update_shipping_address) %></h5>
6
- <button type="button" class="btn-close" data-dismiss="modal" aria-label="<%= Spree.t(:close) %>" ></button>
7
- </div>
4
+ <%= modal_header(Spree.t(:update_shipping_address)) %>
8
5
  <div class="modal-body d-flex flex-col gap-3">
9
6
  <%= render 'form', address: @address, f: f %>
10
7
  </div>
11
- <div class="modal-footer d-flex justify-content-between">
12
- <button type="button" class="btn btn-light" data-dismiss="modal"><%= Spree.t('actions.discard') %></button>
8
+ <div class="modal-footer">
9
+ <%= modal_discard_button %>
13
10
  <%= turbo_save_button_tag Spree.t('actions.update') %>
14
11
  </div>
15
12
  </div>
@@ -1,4 +1,4 @@
1
- <%= search_form_for [:admin, @search], url: spree.admin_pages_path , class: "filter-wrap border-bottom", data: {controller: "filters reveal", reveal_hidden_class: "d-none"} do |f| %>
1
+ <%= search_form_for [:admin, @search], url: spree.admin_pages_path , class: "filter-wrap", data: {controller: "filters reveal", reveal_hidden_class: "d-none"} do |f| %>
2
2
  <%= render 'spree/admin/shared/filters_search_bar', param: :name_cont, label: Spree.t(:name) %>
3
3
 
4
4
  <%= render "spree/admin/shared/filter_badge_template" %>
@@ -0,0 +1,26 @@
1
+ <tr id="<%= dom_id page %>" data-controller="row-link" class="cursor-pointer">
2
+ <td scope="row" data-action="click->row-link#openLink" class="w-60">
3
+ <%= link_to page.name, spree.edit_admin_theme_path(current_store.default_theme, page_id: page.id), data: { row_link_target: :link } %>
4
+ </td>
5
+ <td data-action="click->row-link#openLink" class="w-15">
6
+ <%= local_time_ago(page.created_at, class: 'with-tip') %>
7
+ </td>
8
+ <td data-action="click->row-link#openLink" class="w-15">
9
+ <%= local_time_ago(page.updated_at, class: 'with-tip') %>
10
+ </td>
11
+ <td class="w-10 text-right">
12
+ <div class="dropdown">
13
+ <button class="btn btn-sm btn-light" type="button" data-toggle="dropdown" aria-expanded="false">
14
+ <%= icon('dots-vertical', class: 'mr-0') %>
15
+ </button>
16
+ <ul class="dropdown-menu">
17
+ <li>
18
+ <%= link_to_with_icon 'edit', Spree.t(:edit), spree.edit_admin_theme_path(current_store.default_theme, page_id: page.id), class: 'dropdown-item' %>
19
+ </li>
20
+ <li>
21
+ <%= link_to_delete(page, class: 'dropdown-item btn-danger', icon: 'trash') %>
22
+ </li>
23
+ </ul>
24
+ </div>
25
+ </td>
26
+ </tr>
@@ -1,15 +1,12 @@
1
1
  <%= turbo_frame_tag :dialog_modal do %>
2
2
  <%= form_with model: @page, url: spree.admin_page_path(@page), data: { controller: 'slug-form seo-form' }, scope: :page do |f| %>
3
3
  <div class="modal-content">
4
- <div class="modal-header">
5
- <h5 class="modal-title" id="exampleModalLabel"><%= Spree.t(:page_settings) %></h5>
6
- <button type="button" class="btn-close" data-dismiss="modal" aria-label="<%= Spree.t(:close) %>"></button>
7
- </div>
4
+ <%= modal_header(Spree.t(:page_settings)) %>
8
5
  <div class="modal-body">
9
6
  <%= render 'spree/admin/shared/error_messages', target: @page %>
10
7
  <%= render 'form', f: f, vertical: true %>
11
8
  </div>
12
- <div class="modal-footer d-flex justify-content-between">
9
+ <div class="modal-footer">
13
10
  <%= turbo_save_button_tag Spree.t('actions.save'), data: {turbo_frame: :_top} %>
14
11
  <%= link_to Spree.t('actions.destroy'), spree.admin_page_path(@page.id), data: { turbo_method: :delete, turbo_frame: '_top', turbo_confirm: Spree.t(:are_you_sure )}, class: 'btn btn-danger' %>
15
12
  </div>