spree_admin 5.1.0.beta4 → 5.1.0.rc1

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 (128) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/stylesheets/spree/admin/components/_badges.scss +4 -0
  3. data/app/assets/stylesheets/spree/admin/components/_buttons.scss +13 -2
  4. data/app/assets/stylesheets/spree/admin/components/_filters.scss +8 -1
  5. data/app/assets/stylesheets/spree/admin/components/_main.scss +13 -1
  6. data/app/assets/stylesheets/spree/admin/components/_media_form.scss +1 -1
  7. data/app/assets/stylesheets/spree/admin/components/_modals.scss +3 -1
  8. data/app/assets/stylesheets/spree/admin/components/_navbar.scss +1 -1
  9. data/app/assets/stylesheets/spree/admin/components/_tables.scss +6 -10
  10. data/app/assets/stylesheets/spree/admin/components/_variants_form.scss +1 -1
  11. data/app/assets/stylesheets/spree/admin/global/_variables.scss +12 -7
  12. data/app/assets/stylesheets/spree/admin/shared/_base.scss +5 -0
  13. data/app/controllers/spree/admin/gift_card_batches_controller.rb +23 -0
  14. data/app/controllers/spree/admin/gift_cards_controller.rb +94 -0
  15. data/app/controllers/spree/admin/orders_controller.rb +19 -2
  16. data/app/controllers/spree/admin/payments_controller.rb +3 -0
  17. data/app/controllers/spree/admin/products_controller.rb +3 -3
  18. data/app/controllers/spree/admin/reimbursements_controller.rb +5 -1
  19. data/app/controllers/spree/admin/resource_controller.rb +12 -1
  20. data/app/controllers/spree/admin/search_controller.rb +22 -0
  21. data/app/controllers/spree/admin/store_credits_controller.rb +8 -5
  22. data/app/helpers/spree/admin/base_helper.rb +55 -0
  23. data/app/helpers/spree/admin/navigation_helper.rb +2 -2
  24. data/app/helpers/spree/admin/payments_helper.rb +0 -5
  25. data/app/helpers/spree/admin/products_helper.rb +1 -1
  26. data/app/helpers/spree/admin/promotion_rules_helper.rb +13 -1
  27. data/app/helpers/spree/admin/shipment_helper.rb +2 -0
  28. data/app/javascript/spree/admin/application.js +2 -0
  29. data/app/javascript/spree/admin/controllers/active_storage_upload_controller.js +2 -11
  30. data/app/javascript/spree/admin/controllers/return_items_controller.js +6 -1
  31. data/app/javascript/spree/admin/controllers/sticky_controller.js +24 -0
  32. data/app/javascript/spree/admin/controllers/variants_form_controller.js +1 -1
  33. data/app/javascript/spree/admin/helpers/uppy_active_storage.js +15 -3
  34. data/app/views/active_storage/_upload_form.html.erb +3 -3
  35. data/app/views/spree/admin/coupon_codes/_coupon_code.html.erb +2 -6
  36. data/app/views/spree/admin/coupon_codes/index.csv.erb +1 -1
  37. data/app/views/spree/admin/custom_domains/edit.html.erb +2 -3
  38. data/app/views/spree/admin/custom_domains/new.html.erb +2 -3
  39. data/app/views/spree/admin/dashboard/_setup_progress.html.erb +2 -3
  40. data/app/views/spree/admin/dashboard/_store_preview.html.erb +3 -9
  41. data/app/views/spree/admin/gift_card_batches/_form.html.erb +30 -0
  42. data/app/views/spree/admin/gift_card_batches/new.html.erb +15 -0
  43. data/app/views/spree/admin/gift_cards/_filters.html.erb +43 -0
  44. data/app/views/spree/admin/gift_cards/_form.html.erb +30 -0
  45. data/app/views/spree/admin/gift_cards/_gift_card.html.erb +28 -0
  46. data/app/views/spree/admin/gift_cards/_list.html.erb +24 -0
  47. data/app/views/spree/admin/gift_cards/_table_filter_dropdown.html.erb +25 -0
  48. data/app/views/spree/admin/gift_cards/edit.html.erb +20 -0
  49. data/app/views/spree/admin/gift_cards/index.csv.erb +22 -0
  50. data/app/views/spree/admin/gift_cards/index.html.erb +41 -0
  51. data/app/views/spree/admin/gift_cards/new.html.erb +30 -0
  52. data/app/views/spree/admin/gift_cards/show.html.erb +199 -0
  53. data/app/views/spree/admin/integrations/new.html.erb +7 -4
  54. data/app/views/spree/admin/oauth_applications/edit.html.erb +2 -3
  55. data/app/views/spree/admin/oauth_applications/new.html.erb +2 -3
  56. data/app/views/spree/admin/orders/_customer.html.erb +5 -2
  57. data/app/views/spree/admin/orders/_payments.html.erb +1 -1
  58. data/app/views/spree/admin/orders/_return_authorizations.html.erb +3 -1
  59. data/app/views/spree/admin/orders/_shipment.html.erb +1 -1
  60. data/app/views/spree/admin/orders/_shipments.html.erb +1 -1
  61. data/app/views/spree/admin/orders/return_authorizations/_form.html.erb +13 -11
  62. data/app/views/spree/admin/page_sections/forms/_featured_posts.html.erb +0 -5
  63. data/app/views/spree/admin/pages/_form.html.erb +20 -26
  64. data/app/views/spree/admin/pages/new.html.erb +10 -4
  65. data/app/views/spree/admin/payments/_payment.html.erb +14 -9
  66. data/app/views/spree/admin/payments/new.html.erb +1 -1
  67. data/app/views/spree/admin/payments/source_forms/_gateway.html.erb +1 -1
  68. data/app/views/spree/admin/post_categories/edit.html.erb +2 -3
  69. data/app/views/spree/admin/post_categories/new.html.erb +2 -3
  70. data/app/views/spree/admin/products/edit.html.erb +2 -2
  71. data/app/views/spree/admin/promotion_actions/_promotion_action.html.erb +1 -1
  72. data/app/views/spree/admin/promotion_actions/edit.html.erb +2 -2
  73. data/app/views/spree/admin/promotion_rules/_promotion_rule.html.erb +26 -9
  74. data/app/views/spree/admin/promotion_rules/edit.html.erb +2 -2
  75. data/app/views/spree/admin/promotion_rules/forms/_option_value.html.erb +1 -1
  76. data/app/views/spree/admin/promotions/_actions.html.erb +2 -2
  77. data/app/views/spree/admin/promotions/_rules.html.erb +2 -2
  78. data/app/views/spree/admin/promotions/_sidebar.html.erb +5 -13
  79. data/app/views/spree/admin/properties/edit.html.erb +9 -5
  80. data/app/views/spree/admin/properties/new.html.erb +9 -5
  81. data/app/views/spree/admin/refunds/new.html.erb +6 -1
  82. data/app/views/spree/admin/reimbursement_types/edit.html.erb +2 -3
  83. data/app/views/spree/admin/reimbursement_types/new.html.erb +2 -4
  84. data/app/views/spree/admin/shared/_content_header.html.erb +9 -4
  85. data/app/views/spree/admin/shared/_edit_resource_links.html.erb +3 -1
  86. data/app/views/spree/admin/shared/_header.html.erb +2 -2
  87. data/app/views/spree/admin/shared/_index_table_options.html.erb +1 -1
  88. data/app/views/spree/admin/shared/_preferences.html.erb +1 -0
  89. data/app/views/spree/admin/shared/_sidebar.html.erb +1 -1
  90. data/app/views/spree/admin/shared/_user.html.erb +2 -7
  91. data/app/views/spree/admin/shared/named_types/_edit.html.erb +2 -3
  92. data/app/views/spree/admin/shared/named_types/_new.html.erb +2 -3
  93. data/app/views/spree/admin/shared/sortable_tree/_taxonomy.html.erb +1 -1
  94. data/app/views/spree/admin/shipping_categories/edit.html.erb +7 -4
  95. data/app/views/spree/admin/shipping_categories/new.html.erb +7 -6
  96. data/app/views/spree/admin/shipping_methods/form/_display.html.erb +23 -1
  97. data/app/views/spree/admin/stock_locations/_form.html.erb +35 -51
  98. data/app/views/spree/admin/stock_locations/edit.html.erb +8 -3
  99. data/app/views/spree/admin/stock_locations/new.html.erb +8 -5
  100. data/app/views/spree/admin/store_credit_events/_store_credit_event.html.erb +29 -0
  101. data/app/views/spree/admin/store_credits/_form.html.erb +13 -21
  102. data/app/views/spree/admin/store_credits/_list.html.erb +4 -24
  103. data/app/views/spree/admin/store_credits/_store_credit.html.erb +11 -0
  104. data/app/views/spree/admin/store_credits/edit.html.erb +16 -31
  105. data/app/views/spree/admin/store_credits/new.html.erb +14 -12
  106. data/app/views/spree/admin/store_credits/show.html.erb +145 -0
  107. data/app/views/spree/admin/stores/form/_basic.html.erb +26 -10
  108. data/app/views/spree/admin/tax_categories/_form.html.erb +1 -1
  109. data/app/views/spree/admin/tax_categories/edit.html.erb +7 -4
  110. data/app/views/spree/admin/tax_categories/new.html.erb +7 -4
  111. data/app/views/spree/admin/tax_rates/_form.html.erb +34 -32
  112. data/app/views/spree/admin/tax_rates/edit.html.erb +7 -4
  113. data/app/views/spree/admin/tax_rates/new.html.erb +7 -7
  114. data/app/views/spree/admin/taxonomies/edit.html.erb +2 -4
  115. data/app/views/spree/admin/taxonomies/new.html.erb +2 -2
  116. data/app/views/spree/admin/translations/edit.html.erb +2 -2
  117. data/app/views/spree/admin/translations/stores/_form.html.erb +2 -0
  118. data/app/views/spree/admin/users/_details.html.erb +1 -0
  119. data/app/views/spree/admin/users/index.html.erb +1 -1
  120. data/app/views/spree/admin/users/new.html.erb +9 -5
  121. data/app/views/spree/admin/users/show.html.erb +3 -3
  122. data/app/views/spree/admin/variants/form/_inventory.html.erb +1 -1
  123. data/app/views/spree/admin/zones/_form.html.erb +36 -40
  124. data/app/views/spree/admin/zones/edit.html.erb +7 -5
  125. data/app/views/spree/admin/zones/new.html.erb +7 -4
  126. data/config/locales/en.yml +12 -1
  127. data/config/routes.rb +8 -2
  128. metadata +27 -8
@@ -0,0 +1,41 @@
1
+ <% unless turbo_frame_request? %>
2
+ <% content_for :page_title do %>
3
+ <%= Spree.t(:gift_cards) %>
4
+ <% end %>
5
+
6
+ <% content_for :page_actions do %>
7
+ <%= link_to spree.admin_gift_cards_path(q: params[:q].to_unsafe_hash, per_page: params[:per_page], format: :csv), id: 'gift-card-batch-export-link', class: 'btn btn-light bg-transparent with-tip', title: 'Export gift cards to a CSV file' do %>
8
+ <%= icon 'table-export', class: 'mr-2' %>
9
+ <%= Spree.t(:export) %>
10
+ <% end %>
11
+
12
+ <div class="dropdown" id="page_actions_dropdown">
13
+ <%= link_to_with_icon 'plus', Spree.t(:new_gift_card), '#', class: 'text-nowrap btn btn-primary align-self-center', data: { toggle: 'dropdown' }, id: 'more-actions-link' %>
14
+ <div class="dropdown-menu dropdown-menu-right">
15
+ <%= link_to spree.new_admin_gift_card_path,
16
+ class: 'text-left dropdown-item' do %>
17
+ <%= icon 'add' %>
18
+ <%= Spree.t(:gift_card) %>
19
+ <% end %>
20
+
21
+ <%= link_to spree.new_admin_gift_card_batch_path,
22
+ class: 'text-left dropdown-item' do %>
23
+ <%= icon 'add' %>
24
+ <%= Spree.t(:gift_card_batch) %>
25
+ <% end %>
26
+ </div>
27
+ </div>
28
+ <% end %>
29
+ <% end %>
30
+
31
+ <div class="card-lg p-0">
32
+ <% if params[:frame_name].present? %>
33
+ <%= turbo_frame_tag params[:frame_name], autoscroll: true, data: { autoscroll_block: :nearest, autoscroll_behavior: :smooth } do %>
34
+ <%= render 'filters', frame_name: params[:frame_name] %>
35
+ <%= render 'list' %>
36
+ <% end %>
37
+ <% else %>
38
+ <%= render 'filters' %>
39
+ <%= render 'list' %>
40
+ <% end %>
41
+ </div>
@@ -0,0 +1,30 @@
1
+ <% content_for :page_title do %>
2
+ <% if @user.present? %>
3
+ <%= page_header_back_button spree.admin_user_path(@user) %>
4
+ <% else %>
5
+ <%= page_header_back_button spree.admin_gift_cards_path %>
6
+ <% end %>
7
+
8
+ <%= Spree.t(:new_gift_card) %>
9
+ <% end %>
10
+
11
+ <% url = @user.present? ? spree.admin_user_gift_cards_path(@user) : spree.admin_gift_cards_path %>
12
+
13
+ <%= form_for @object, url: url do |f| %>
14
+ <div class="row">
15
+ <div class="col-lg-6 offset-lg-3">
16
+ <%= render partial: 'spree/admin/shared/error_messages', locals: { target: @object } %>
17
+ <div class="card mb-4">
18
+ <div class="card-header">
19
+ <h5 class="card-title">
20
+ <%= Spree.t(:new_gift_card) %>
21
+ </h5>
22
+ </div>
23
+ <div class="card-body">
24
+ <%= render 'form', f: f %>
25
+ </div>
26
+ </div>
27
+ <%= render 'spree/admin/shared/new_resource_links' %>
28
+ </div>
29
+ </div>
30
+ <% end %>
@@ -0,0 +1,199 @@
1
+ <% content_for :page_title do %>
2
+ <% if @user.present? %>
3
+ <%= page_header_back_button spree.admin_user_path(@user) %>
4
+ <% else %>
5
+ <%= page_header_back_button spree.admin_gift_cards_path %>
6
+ <% end %>
7
+
8
+ <%= @object.code.upcase %>
9
+ <span class="badge">
10
+ <%= active_badge(@object.active?, label: @object.display_state, class: 'badge-sm') %>
11
+ </span>
12
+ <% end %>
13
+
14
+ <% content_for :title do %>
15
+ <%= Spree.t(:gift_card) %>
16
+ <%= @object.code.upcase %>
17
+ <% end %>
18
+
19
+ <div class="row">
20
+ <div class="col-md-8">
21
+
22
+ <div class="card mb-4">
23
+ <div class="card-header d-flex justify-content-between align-items-center">
24
+ <h5 class="card-title">
25
+ <%= Spree.t('admin.gift_cards.usage') %>
26
+ </h5>
27
+ </div>
28
+ <div class="card-body border-bottom">
29
+ <div class="d-flex justify-content-between align-items-center">
30
+ <div class="w-75">
31
+ <%= progress_bar_component(@object.amount_used, max: @object.amount) %>
32
+ </div>
33
+ <div class="w-25 text-right">
34
+ <%= @object.display_amount_used %> <%= Spree.t(:used).downcase %> / <%= @object.display_amount %>
35
+ </div>
36
+ </div>
37
+ </div>
38
+ <div class="card-body p-0">
39
+ <% if @orders.any? %>
40
+ <div class="table-responsive">
41
+ <table class="table">
42
+ <thead>
43
+ <tr>
44
+ <th><%= Spree.t(:order) %></th>
45
+ <th><%= Spree.t(:status) %></th>
46
+ <th><%= Spree.t(:customer) %></th>
47
+ <th class="text-right"><%= I18n.t('activerecord.attributes.spree/gift_card.amount_used') %></th>
48
+ <th class="text-right"><%= Spree.t(:total) %></th>
49
+ </tr>
50
+ </thead>
51
+ <tbody>
52
+ <% @orders.each do |order| %>
53
+ <tr>
54
+ <td>
55
+ <%= link_to order.number, spree.edit_admin_order_path(order), class: 'text-dark font-weight-bold' %>
56
+ </td>
57
+ <td>
58
+ <% if order.completed? %>
59
+ <span class="badge badge-success">
60
+ <%= icon('check') %>
61
+ <%= Spree.t("state_machine_states.completed") %>
62
+ </span>
63
+ <% else %>
64
+ <span class="badge badge-warning">
65
+ <%= Spree.t("state_machine_states.#{order.state}") %>
66
+ </span>
67
+ <% end %>
68
+ </td>
69
+ <td>
70
+ <%= order.user.email %>
71
+ </td>
72
+ <td class="text-right">
73
+ <%= order.display_gift_card_total %>
74
+ </td>
75
+ <td class="text-right">
76
+ <%= order.display_total %>
77
+ </td>
78
+ </tr>
79
+ <% end %>
80
+ </tbody>
81
+ </table>
82
+ </div>
83
+ <% else %>
84
+ <%= render 'spree/admin/shared/no_resource_found', resource_name: Spree.t(:order), new_object_url: nil %>
85
+ <% end %>
86
+ </div>
87
+ </div>
88
+
89
+ </div>
90
+
91
+ <div class="col-md-4">
92
+ <%= turbo_frame_tag :gift_card_settings do %>
93
+ <div class="card">
94
+ <div class="card-header d-flex justify-content-between">
95
+ <h5 class="card-title">
96
+ <%= Spree.t(:settings) %>
97
+ </h5>
98
+ <%= link_to_with_icon 'edit', Spree.t(:edit), spree.edit_admin_gift_card_path(@object), icon: 'pencil', class: 'btn btn-sm btn-light', if: @gift_card.editable? %>
99
+ </div>
100
+ <div class="card-body p-0">
101
+ <ul class="list-group list-group-flush">
102
+ <li class="list-group-item d-flex justify-content-between align-items-center">
103
+ <span class="text-muted">
104
+ <%= Spree.t(:code) %>
105
+ </span>
106
+ <span>
107
+ <code><%= @object.display_code %></code>
108
+ <%= clipboard_component(@object.display_code) %>
109
+ </span>
110
+ </li>
111
+
112
+ <li class="list-group-item d-flex justify-content-between align-items-center">
113
+ <span class="text-muted">
114
+ <%= Spree.t(:customer) %>
115
+ </span>
116
+ <span>
117
+ <% if @object.user %>
118
+ <%= link_to @object.user.email, spree.admin_user_path(@object.user), data: { turbo_frame: '_top' } %>
119
+ <% else %>
120
+ <span class="text-muted">
121
+ <%= Spree.t(:not_available) %>
122
+ </span>
123
+ <% end %>
124
+ </span>
125
+ </li>
126
+
127
+ <li class="list-group-item d-flex justify-content-between align-items-center">
128
+ <span class="text-muted">
129
+ <%= Spree.t(:amount) %>
130
+ </span>
131
+ <span>
132
+ <%= @object.display_amount %>
133
+ </span>
134
+ </li>
135
+ <li class="list-group-item d-flex justify-content-between align-items-center">
136
+ <span class="text-muted">
137
+ <%= Spree.t(:used) %>
138
+ </span>
139
+ <span>
140
+ <%= @object.display_amount_used %>
141
+ </span>
142
+ </li>
143
+
144
+ <li class="list-group-item d-flex justify-content-between align-items-center">
145
+ <span class="text-muted">
146
+ <%= Spree.t('store_credit.remaining') %>
147
+ </span>
148
+ <span>
149
+ <%= @object.display_amount_remaining %>
150
+ </span>
151
+ </li>
152
+
153
+ <li class="list-group-item d-flex justify-content-between align-items-center">
154
+ <span class="text-muted">
155
+ <%= Spree.t(:currency) %>
156
+ </span>
157
+ <span>
158
+ <%= @object.currency %>
159
+ </span>
160
+ </li>
161
+
162
+ <li class="list-group-item d-flex justify-content-between align-items-center">
163
+ <span class="text-muted">
164
+ <%= Spree.t(:expires_at) %>
165
+ </span>
166
+ <% if @object.expires_at %>
167
+ <span><%= local_time(@object.expires_at) %></span>
168
+ <% else %>
169
+ <span class="text-muted"><%= Spree.t(:not_available) %></span>
170
+ <% end %>
171
+ </li>
172
+
173
+ <li class="list-group-item d-flex justify-content-between align-items-center">
174
+ <span class="text-muted">
175
+ <%= Spree.t(:created_by) %>
176
+ </span>
177
+ <span>
178
+ <% if @object.created_by %>
179
+ <%= link_to @object.created_by.email, spree.admin_admin_user_path(@object.created_by), data: { turbo_frame: '_top' } %>
180
+ <% else %>
181
+ <span class="text-muted">
182
+ <%= Spree.t(:not_available) %>
183
+ </span>
184
+ <% end %>
185
+ </span>
186
+ </li>
187
+
188
+ <li class="list-group-item d-flex justify-content-between align-items-center">
189
+ <span class="text-muted">
190
+ <%= Spree.t(:created_at) %>
191
+ </span>
192
+ <span><%= local_time(@object.created_at) %></span>
193
+ </li>
194
+ </ul>
195
+ </div>
196
+ </div>
197
+ <% end %>
198
+ </div>
199
+ </div>
@@ -3,12 +3,15 @@
3
3
  <%= Spree.t('actions.connect') %> <%= @integration.name %>
4
4
  <% end %>
5
5
 
6
- <%= render partial: 'spree/admin/shared/error_messages', locals: { target: @integration } %>
7
-
8
6
  <%= form_for @integration, as: :integration, url: spree.admin_integrations_path do |form| %>
9
7
  <%= form.hidden_field :type %>
10
8
  <%= form.hidden_field :active, value: true %>
11
9
 
12
- <%= render "spree/admin/integrations/forms/#{@integration.key}", form: form %>
13
- <%= render 'spree/admin/shared/new_resource_links' %>
10
+ <div class="row">
11
+ <div class="col-lg-6 offset-lg-3">
12
+ <%= render partial: 'spree/admin/shared/error_messages', locals: { target: @integration } %>
13
+ <%= render "spree/admin/integrations/forms/#{@integration.key}", form: form %>
14
+ <%= render 'spree/admin/shared/new_resource_links' %>
15
+ </div>
16
+ </div>
14
17
  <% end %>
@@ -3,11 +3,10 @@
3
3
  <%= @oauth_application.name.capitalize %>
4
4
  <% end %>
5
5
 
6
- <%= render partial: 'spree/admin/shared/error_messages', locals: { target: @oauth_application } %>
7
-
8
6
  <div class="row">
9
- <div class="col-lg-6">
7
+ <div class="col-lg-6 offset-lg-3">
10
8
  <%= form_for [:admin, @oauth_application] do |f| %>
9
+ <%= render partial: 'spree/admin/shared/error_messages', locals: { target: @oauth_application } %>
11
10
  <div class="card mb-4">
12
11
  <div class="card-body">
13
12
  <%= render 'form', f: f %>
@@ -7,10 +7,9 @@
7
7
  <%= Spree.t('admin.oauth_applications.new') %>
8
8
  <% end %>
9
9
 
10
- <%= render partial: 'spree/admin/shared/error_messages', locals: { target: @oauth_application } %>
11
-
12
10
  <div class="row">
13
- <div class="col-lg-6">
11
+ <div class="col-lg-6 offset-lg-3">
12
+ <%= render partial: 'spree/admin/shared/error_messages', locals: { target: @oauth_application } %>
14
13
  <%= turbo_frame_tag 'new_oauth_application' do %>
15
14
  <%= form_for [:admin, @oauth_application] do |f| %>
16
15
  <div class="card mb-4">
@@ -5,7 +5,7 @@
5
5
  </h5>
6
6
  <% if can?(:update_customer, @order) || can?(:update_addresses, @order) %>
7
7
  <div class="dropdown ml-auto" id="customer-edit-dropdown">
8
- <%= link_to_with_icon 'dots-vertical', nil, '#', class: 'btn btn-light btn-sm px-2', data: { toggle: 'dropdown', test_id: 'dropdown-toggle' } %>
8
+ <%= link_to_with_icon 'dots-vertical', nil, '#', class: 'btn btn-light btn-sm px-1', data: { toggle: 'dropdown', test_id: 'dropdown-toggle' } %>
9
9
  <div class="dropdown-menu dropdown-menu-right" >
10
10
  <div data-toggle="modal" data-target="#modal">
11
11
  <% if can?(:update_customer, @order) && !@order.user.present? %>
@@ -37,7 +37,10 @@
37
37
  <%= render 'spree/admin/shared/user', user: @order.user %>
38
38
  <%= render 'spree/admin/orders/user_overview', user: @order.user %>
39
39
  <% elsif @order.email.present? %>
40
- <%= mail_to truncate(@order.email, length: 35), class: 'text-dark with-tip', title: @order.email %>
40
+ <div class="d-flex align-items-center w-100">
41
+ <%= mail_to @order.email, @order.email, class: 'text-blue' %>
42
+ <%= clipboard_component(@order.email) %>
43
+ </div>
41
44
  <% else %>
42
45
  <span class="text-muted">
43
46
  <%= Spree.t(:no_email_provided) %>
@@ -10,7 +10,7 @@
10
10
  <%= order_payment_state(@order, class: "ml-auto") %>
11
11
  <% end %>
12
12
  </div>
13
- <div class="card-body d-flex flex-column gap-2 px-1 pt-0 pb-1">
13
+ <div class="card-body d-flex flex-column gap-2 px-2 pt-0 pb-2">
14
14
  <%= render collection: @payments, partial: 'spree/admin/payments/payment', as: :payment %>
15
15
 
16
16
  <% if @order.payment_total < @order.total && can?(:create, Spree::Payment.new(order: @order)) %>
@@ -17,7 +17,9 @@
17
17
  </tr>
18
18
  </thead>
19
19
  <tbody>
20
- <%= render partial: 'spree/admin/orders/return_authorizations/return_authorization', collection: @return_authorizations, cached: spree_base_cache_scope %>
20
+ <%= render partial: "spree/admin/orders/return_authorizations/return_authorization",
21
+ collection: @return_authorizations,
22
+ cached: ->(r) { [spree_base_cache_key, r.cache_key_with_version, r.return_items.maximum(:updated_at)] } %>
21
23
  </tbody>
22
24
  </table>
23
25
  </div>
@@ -65,7 +65,7 @@
65
65
  <strong><%= Spree.t(:tracking) %>: </strong>
66
66
  <% if shipment.tracked? %>
67
67
  <% if shipment.tracking_url.present? %>
68
- <span><%= link_to ERB::Util.html_escape(shipment.tracking), ERB::Util.html_escape(shipment.tracking_url), target: '_blank', rel: "noopener noreferrer" %></span>
68
+ <span><%= shipment_tracking_link_to(shipment: shipment, html_options: { target: '_blank', rel: 'noopener noreferrer' }) %></span>
69
69
  <% elsif shipment.tracking.present? %>
70
70
  <span><%= shipment.tracking %></span>
71
71
  <% end %>
@@ -10,7 +10,7 @@
10
10
  <%= order_shipment_state(@order, class: "ml-auto") %>
11
11
  <% end %>
12
12
  </div>
13
- <div class="card-body px-1 pt-0 pb-1 d-flex flex-column gap-2">
13
+ <div class="card-body px-2 pt-0 pb-2 d-flex flex-column gap-2">
14
14
  <% if @shipments.any? %>
15
15
  <%= render partial: "shipment", collection: @shipments %>
16
16
  <% else %>
@@ -68,9 +68,9 @@
68
68
  <td><%= inventory_unit.state.humanize %></td>
69
69
  <td
70
70
  class="charged-amount"
71
- data-charged-amount="<%= return_item.pre_tax_amount %>"
71
+ data-charged-amount="<%= inventory_unit.charged_amount %>"
72
72
  >
73
- <%= return_item.display_pre_tax_amount %>
73
+ <%= inventory_unit.display_charged_amount %>
74
74
  </td>
75
75
  <td class="purchased-quantity">
76
76
  <%= inventory_unit.quantity %>
@@ -81,6 +81,7 @@
81
81
  {
82
82
  class: "refund-quantity-input form-control",
83
83
  min: 0,
84
+ required: true,
84
85
  data: {
85
86
  action: "return-items#updateSuggestedAmount",
86
87
  },
@@ -93,12 +94,13 @@
93
94
  <td>
94
95
  <% if editable %>
95
96
  <%= item_fields.text_field :pre_tax_amount,
96
- {
97
- class: "refund-amount-input form-control",
98
- data: {
99
- action: "return-items#updateTotalRefundAmount",
100
- },
101
- } %>
97
+ {
98
+ class: "refund-amount-input form-control",
99
+ required: true,
100
+ data: {
101
+ action: "return-items#updateTotalRefundAmount",
102
+ },
103
+ } %>
102
104
  <% else %>
103
105
  <%= return_item.display_pre_tax_amount %>
104
106
  <% end %>
@@ -153,9 +155,9 @@
153
155
  <div class="form-group">
154
156
  <%= f.label :reason, raw(Spree.t(:reason) + required_span_tag) %>
155
157
  <%= f.select :return_authorization_reason_id,
156
- @reasons.collect { |r| [r.name, r.id] },
157
- { include_blank: Spree.t(:select_a_return_authorization_reason) },
158
- { class: "custom-select" } %>
158
+ @reasons.collect { |r| [r.name, r.id] },
159
+ { include_blank: Spree.t(:select_a_return_authorization_reason) },
160
+ { class: "custom-select" } %>
159
161
  <%= f.error_message_on :reason %>
160
162
  </div>
161
163
 
@@ -21,11 +21,6 @@
21
21
  <%= f.select :preferred_description_alignment, options_for_select([ ["Left", "left"], ["Center", "center"], ["Right", "right"] ], @page_section.preferred_description_alignment ), {}, data: { action: 'auto-submit#submit' }, class: "custom-select" %>
22
22
  </div>
23
23
 
24
- <div class="form-group">
25
- <%= f.label :preferred_posts_to_show, Spree.t('admin.page_builder.posts_to_show') %>
26
- <%= f.select :preferred_posts_to_show, options_for_select([["Newest", "newest"], ["Most popular", "most_popular"]], @page_section.preferred_posts_to_show), {}, data: { action: 'auto-submit#submit' }, class: "custom-select" %>
27
- </div>
28
-
29
24
  <div class="form-group">
30
25
  <div data-controller="better-slider">
31
26
  <label><%= Spree.t('admin.page_builder.maximum_posts_to_show') %>: <span data-better-slider-target="currentValueLabel"></span></label>
@@ -1,29 +1,23 @@
1
- <% vertical ||= false %>
2
- <div class="row">
3
- <div class="<%= vertical ? 'col-lg-12' : 'col-lg-8' %>">
4
- <div class="card mb-4">
5
- <div class="card-header d-flex align-items-center justify-content-between">
6
- <h5 class="card-title">
7
- <%= Spree.t(:details) %>
8
- </h5>
9
- </div>
10
- <div class="card-body">
11
- <div class="form-group">
12
- <%= f.label :name, Spree.t(:name) %>
13
- <%= f.text_field :name, class: 'form-control', required: true, data: { slug_form_target: :name, action: 'slug-form#updateUrlFromName', seo_form_target: 'sourceTitleInput' }, autofocus: true %>
14
- </div>
15
- </div>
16
- </div>
1
+ <div class="card mb-4">
2
+ <div class="card-header d-flex align-items-center justify-content-between">
3
+ <h5 class="card-title">
4
+ <%= Spree.t(:details) %>
5
+ </h5>
17
6
  </div>
18
- <div class="<%= vertical ? 'col-lg-12' : 'col-lg-4' %>">
19
- <%= render 'spree/admin/shared/seo',
20
- f: f,
21
- title: @page.name,
22
- meta_title: @page.meta_title,
23
- description: nil,
24
- slug_attribute_name: "page[slug]",
25
- slug: @page.slug,
26
- slug_path: 'pages',
27
- placeholder: 'Add a title to see how this page might appear in a search engine listing' %>
7
+ <div class="card-body">
8
+ <div class="form-group">
9
+ <%= f.label :name, Spree.t(:name) %>
10
+ <%= f.text_field :name, class: 'form-control', required: true, data: { slug_form_target: :name, action: 'slug-form#updateUrlFromName', seo_form_target: 'sourceTitleInput' }, autofocus: true %>
11
+ </div>
28
12
  </div>
29
13
  </div>
14
+ <%= render 'spree/admin/shared/seo',
15
+ f: f,
16
+ title: @page.name,
17
+ meta_title: @page.meta_title,
18
+ description: nil,
19
+ slug_attribute_name: "page[slug]",
20
+ slug: @page.slug,
21
+ slug_path: 'pages',
22
+ placeholder: 'Add a title to see how this page might appear in a search engine listing' %>
23
+
@@ -5,7 +5,13 @@
5
5
  <% content_for :title do %>
6
6
  <%= Spree.t(:new_page) %>
7
7
  <% end %>
8
- <%= form_with model: @page, url: spree.admin_pages_path, data: { controller: 'slug-form seo-form' }, scope: :page do |f| %>
9
- <%= render 'form', f: f, vertical: false %>
10
- <%= render 'spree/admin/shared/new_resource_links', f: f %>
11
- <% end %>
8
+
9
+ <div class="row">
10
+ <div class="col-lg-6 offset-lg-3">
11
+ <%= form_with model: @page, url: spree.admin_pages_path, data: { controller: 'slug-form seo-form' }, scope: :page do |f| %>
12
+ <%= render partial: 'spree/admin/shared/error_messages', locals: { target: @page } %>
13
+ <%= render 'form', f: f, vertical: false %>
14
+ <%= render 'spree/admin/shared/new_resource_links', f: f %>
15
+ <% end %>
16
+ </div>
17
+ </div>
@@ -1,10 +1,12 @@
1
1
  <div class="card" id="<%= dom_id(payment) %>">
2
2
  <div class="card-header d-flex align-items-center gap-2">
3
- <span class="badge badge-<%= payment.state %>">
3
+ <span class="badge badge-<%= payment.state %> gap-1">
4
4
  <% if payment.completed? %>
5
- <%= icon('check', class: 'mr-2') %>
5
+ <%= icon('check') %>
6
+ <% elsif payment.invalid? || payment.void? || payment.failed? %>
7
+ <%= icon('x') %>
6
8
  <% else %>
7
- <%= icon('progress', class: 'mr-2') %>
9
+ <%= icon('progress') %>
8
10
  <% end %>
9
11
  <%= Spree.t('payment_states.' + payment.state) %>
10
12
  </span>
@@ -15,15 +17,15 @@
15
17
  <%= local_time(payment.created_at, class: 'ml-auto text-muted font-size-sm') %>
16
18
 
17
19
  <div class="dropdown">
18
- <button class="btn btn-light btn-sm" type="button" data-toggle="dropdown" aria-expanded="false">
20
+ <button class="btn btn-light btn-sm px-1" type="button" data-toggle="dropdown" aria-expanded="false">
19
21
  <%= icon('dots-vertical', class: 'mr-0') %>
20
22
  </button>
21
23
  <div class="dropdown-menu">
22
24
  <% if payment.try(:gateway_dashboard_payment_url).present? %>
23
25
  <%= link_to_with_icon 'eye', Spree.t(:details), payment.gateway_dashboard_payment_url, class: 'dropdown-item', target: '_blank' %>
24
26
  <% end %>
25
- <% if payment.source.is_a?(Spree::StoreCredit) && payment.source.respond_to?(:gift_card) && payment.source.gift_card.present? %>
26
- <%= link_to_with_icon 'eye', Spree.t(:details), spree.edit_admin_gift_card_path(payment.source.gift_card), class: 'dropdown-item' %>
27
+ <% if payment.source.is_a?(Spree::StoreCredit) && payment.source.originator_type == 'Spree::GiftCard' %>
28
+ <%= link_to_with_icon 'eye', Spree.t(:details), spree.admin_gift_card_path(payment.source.originator), class: 'dropdown-item' %>
27
29
  <% end %>
28
30
 
29
31
  <% if can?(:update, payment) && (payment.checkout? || payment.pending?) %>
@@ -46,11 +48,14 @@
46
48
  <div class="card-body">
47
49
  <div class="d-flex">
48
50
  <div class="w-50">
49
- <p class="mb-2"><%= Spree.t(:payment_method) %>:</p>
51
+ <p class="mb-1"><%= Spree.t(:amount) %>:</p>
52
+ <strong><%= payment.display_amount %></strong>
53
+
54
+ <p class="mb-1 mt-2"><%= Spree.t(:payment_method) %>:</p>
50
55
  <strong><%= link_to payment.payment_method.name, spree.admin_payment_method_path(payment.payment_method) %></strong>
51
56
 
52
57
  <% if payment.transaction_id.present? %>
53
- <p class="mb-2 mt-3">
58
+ <p class="mb-1 mt-2">
54
59
  <%= Spree.t(:transaction_id) %>
55
60
  <%= help_bubble(Spree.t(:transaction_id_help)) %>
56
61
  </p>
@@ -67,7 +72,7 @@
67
72
  <% end %>
68
73
  </div>
69
74
  </div>
70
- <% if payment.transaction_id.present? %>
75
+ <% if payment.transaction_id.present? && !payment.store_credit? %>
71
76
  <div class="card-footer border-top border-top-dashed">
72
77
  <p class="mb-0 d-flex justify-content-between align-items-center">
73
78
  <span>
@@ -1,7 +1,7 @@
1
1
  <%= render 'spree/admin/orders/header' %>
2
2
 
3
3
  <div class="row">
4
- <div class="col-lg-6">
4
+ <div class="col-lg-6 offset-lg-3">
5
5
  <%= render 'spree/admin/shared/error_messages', target: @payment %>
6
6
 
7
7
  <%= form_with url: spree.admin_order_payments_path(@order), model: @payment, method: :post do |f| %>
@@ -44,7 +44,7 @@
44
44
 
45
45
  <div class="form-group col-6">
46
46
  <%= label_tag "card_expiry#{payment_method.id}", raw(Spree.t(:expiration) + required_span_tag) %><br>
47
- <%= text_field_tag "#{param_prefix}[expiry]", '', id: "card_expiry#{payment_method.id}", class: "required cardExpiry form-control", placeholder: "MM/YYYY" %>
47
+ <%= text_field_tag "#{param_prefix}[expiry]", '', id: "card_expiry#{payment_method.id}", class: "required cardExpiry form-control", placeholder: Spree.t(:card_expiration_placeholder) %>
48
48
  </div>
49
49
 
50
50
  <div class="form-group col-6">
@@ -3,11 +3,10 @@
3
3
  <%= @post_category.title %>
4
4
  <% end %>
5
5
 
6
- <%= render partial: 'spree/admin/shared/error_messages', locals: { target: @post_category } %>
7
-
8
6
  <%= form_for [:admin, @post_category] do |f| %>
9
7
  <div class="row">
10
- <div class="col-lg-8">
8
+ <div class="col-lg-6 offset-lg-3">
9
+ <%= render partial: 'spree/admin/shared/error_messages', locals: { target: @post_category } %>
11
10
  <%= render 'form', f: f %>
12
11
  <%= render 'spree/admin/shared/edit_resource_links', f: f %>
13
12
  </div>
@@ -3,11 +3,10 @@
3
3
  <%= Spree.t(:new_post_category) %>
4
4
  <% end %>
5
5
 
6
- <%= render partial: 'spree/admin/shared/error_messages', locals: { target: @post_category } %>
7
-
8
6
  <%= form_for [:admin, @post_category] do |f| %>
9
7
  <div class="row">
10
- <div class="col-lg-8">
8
+ <div class="col-lg-6 offset-lg-3">
9
+ <%= render partial: 'spree/admin/shared/error_messages', locals: { target: @post_category } %>
11
10
  <%= render 'form', f: f %>
12
11
  <%= render 'spree/admin/shared/new_resource_links' %>
13
12
  </div>