spree_admin 5.1.0.beta4 → 5.1.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 (141) 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 +7 -6
  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 +25 -3
  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/controllers/spree/admin/translations_controller.rb +31 -25
  23. data/app/helpers/spree/admin/base_helper.rb +55 -0
  24. data/app/helpers/spree/admin/navigation_helper.rb +2 -2
  25. data/app/helpers/spree/admin/payments_helper.rb +0 -5
  26. data/app/helpers/spree/admin/products_helper.rb +1 -1
  27. data/app/helpers/spree/admin/promotion_rules_helper.rb +13 -1
  28. data/app/helpers/spree/admin/shipment_helper.rb +2 -0
  29. data/app/javascript/spree/admin/application.js +2 -0
  30. data/app/javascript/spree/admin/controllers/active_storage_upload_controller.js +2 -11
  31. data/app/javascript/spree/admin/controllers/return_items_controller.js +6 -1
  32. data/app/javascript/spree/admin/controllers/sticky_controller.js +24 -0
  33. data/app/javascript/spree/admin/controllers/variants_form_controller.js +1 -1
  34. data/app/javascript/spree/admin/helpers/uppy_active_storage.js +15 -3
  35. data/app/views/active_storage/_upload_form.html.erb +3 -3
  36. data/app/views/spree/admin/coupon_codes/_coupon_code.html.erb +2 -6
  37. data/app/views/spree/admin/coupon_codes/index.csv.erb +1 -1
  38. data/app/views/spree/admin/custom_domains/edit.html.erb +2 -3
  39. data/app/views/spree/admin/custom_domains/new.html.erb +2 -3
  40. data/app/views/spree/admin/dashboard/_setup_progress.html.erb +2 -3
  41. data/app/views/spree/admin/dashboard/_store_preview.html.erb +3 -9
  42. data/app/views/spree/admin/gift_card_batches/_form.html.erb +30 -0
  43. data/app/views/spree/admin/gift_card_batches/new.html.erb +15 -0
  44. data/app/views/spree/admin/gift_cards/_filters.html.erb +43 -0
  45. data/app/views/spree/admin/gift_cards/_form.html.erb +30 -0
  46. data/app/views/spree/admin/gift_cards/_gift_card.html.erb +28 -0
  47. data/app/views/spree/admin/gift_cards/_list.html.erb +24 -0
  48. data/app/views/spree/admin/gift_cards/_table_filter_dropdown.html.erb +25 -0
  49. data/app/views/spree/admin/gift_cards/edit.html.erb +20 -0
  50. data/app/views/spree/admin/gift_cards/index.csv.erb +22 -0
  51. data/app/views/spree/admin/gift_cards/index.html.erb +41 -0
  52. data/app/views/spree/admin/gift_cards/new.html.erb +30 -0
  53. data/app/views/spree/admin/gift_cards/show.html.erb +199 -0
  54. data/app/views/spree/admin/integrations/new.html.erb +7 -4
  55. data/app/views/spree/admin/oauth_applications/edit.html.erb +2 -3
  56. data/app/views/spree/admin/oauth_applications/new.html.erb +2 -3
  57. data/app/views/spree/admin/option_types/edit.html.erb +4 -0
  58. data/app/views/spree/admin/orders/_customer.html.erb +5 -2
  59. data/app/views/spree/admin/orders/_payments.html.erb +1 -1
  60. data/app/views/spree/admin/orders/_return_authorizations.html.erb +3 -1
  61. data/app/views/spree/admin/orders/_shipment.html.erb +1 -1
  62. data/app/views/spree/admin/orders/_shipments.html.erb +1 -1
  63. data/app/views/spree/admin/orders/return_authorizations/_form.html.erb +13 -11
  64. data/app/views/spree/admin/page_sections/forms/_featured_posts.html.erb +0 -5
  65. data/app/views/spree/admin/pages/_form.html.erb +20 -26
  66. data/app/views/spree/admin/pages/new.html.erb +10 -4
  67. data/app/views/spree/admin/payments/_payment.html.erb +14 -9
  68. data/app/views/spree/admin/payments/new.html.erb +1 -1
  69. data/app/views/spree/admin/payments/source_forms/_gateway.html.erb +1 -1
  70. data/app/views/spree/admin/post_categories/edit.html.erb +2 -3
  71. data/app/views/spree/admin/post_categories/new.html.erb +2 -3
  72. data/app/views/spree/admin/products/edit.html.erb +2 -2
  73. data/app/views/spree/admin/promotion_actions/_promotion_action.html.erb +1 -1
  74. data/app/views/spree/admin/promotion_actions/edit.html.erb +2 -2
  75. data/app/views/spree/admin/promotion_rules/_promotion_rule.html.erb +26 -9
  76. data/app/views/spree/admin/promotion_rules/edit.html.erb +2 -2
  77. data/app/views/spree/admin/promotion_rules/forms/_option_value.html.erb +1 -1
  78. data/app/views/spree/admin/promotions/_actions.html.erb +2 -2
  79. data/app/views/spree/admin/promotions/_rules.html.erb +2 -2
  80. data/app/views/spree/admin/promotions/_sidebar.html.erb +5 -13
  81. data/app/views/spree/admin/properties/_property.html.erb +2 -2
  82. data/app/views/spree/admin/properties/edit.html.erb +12 -5
  83. data/app/views/spree/admin/properties/new.html.erb +9 -5
  84. data/app/views/spree/admin/refunds/new.html.erb +6 -1
  85. data/app/views/spree/admin/reimbursement_types/edit.html.erb +2 -3
  86. data/app/views/spree/admin/reimbursement_types/new.html.erb +2 -4
  87. data/app/views/spree/admin/shared/_content_header.html.erb +9 -4
  88. data/app/views/spree/admin/shared/_edit_resource_links.html.erb +3 -1
  89. data/app/views/spree/admin/shared/_header.html.erb +2 -2
  90. data/app/views/spree/admin/shared/_index_table_options.html.erb +1 -1
  91. data/app/views/spree/admin/shared/_preferences.html.erb +1 -0
  92. data/app/views/spree/admin/shared/_sidebar.html.erb +1 -1
  93. data/app/views/spree/admin/shared/_user.html.erb +2 -7
  94. data/app/views/spree/admin/shared/named_types/_edit.html.erb +2 -3
  95. data/app/views/spree/admin/shared/named_types/_new.html.erb +2 -3
  96. data/app/views/spree/admin/shared/sortable_tree/_taxonomy.html.erb +2 -2
  97. data/app/views/spree/admin/shipping_categories/edit.html.erb +7 -4
  98. data/app/views/spree/admin/shipping_categories/new.html.erb +7 -6
  99. data/app/views/spree/admin/shipping_methods/form/_display.html.erb +23 -1
  100. data/app/views/spree/admin/stock_locations/_form.html.erb +35 -51
  101. data/app/views/spree/admin/stock_locations/edit.html.erb +8 -3
  102. data/app/views/spree/admin/stock_locations/new.html.erb +8 -5
  103. data/app/views/spree/admin/store_credit_events/_store_credit_event.html.erb +29 -0
  104. data/app/views/spree/admin/store_credits/_form.html.erb +13 -21
  105. data/app/views/spree/admin/store_credits/_list.html.erb +4 -24
  106. data/app/views/spree/admin/store_credits/_store_credit.html.erb +11 -0
  107. data/app/views/spree/admin/store_credits/edit.html.erb +16 -31
  108. data/app/views/spree/admin/store_credits/new.html.erb +14 -12
  109. data/app/views/spree/admin/store_credits/show.html.erb +145 -0
  110. data/app/views/spree/admin/storefront/edit.html.erb +1 -1
  111. data/app/views/spree/admin/stores/form/_basic.html.erb +28 -12
  112. data/app/views/spree/admin/tax_categories/_form.html.erb +1 -1
  113. data/app/views/spree/admin/tax_categories/edit.html.erb +7 -4
  114. data/app/views/spree/admin/tax_categories/new.html.erb +7 -4
  115. data/app/views/spree/admin/tax_rates/_form.html.erb +34 -32
  116. data/app/views/spree/admin/tax_rates/edit.html.erb +7 -4
  117. data/app/views/spree/admin/tax_rates/new.html.erb +7 -7
  118. data/app/views/spree/admin/taxonomies/edit.html.erb +2 -4
  119. data/app/views/spree/admin/taxonomies/new.html.erb +2 -2
  120. data/app/views/spree/admin/translations/edit.html.erb +37 -29
  121. data/app/views/spree/admin/translations/option_types/_form.html.erb +17 -0
  122. data/app/views/spree/admin/translations/products/_form.html.erb +11 -20
  123. data/app/views/spree/admin/translations/properties/_form.html.erb +5 -0
  124. data/app/views/spree/admin/translations/stores/_form.html.erb +11 -20
  125. data/app/views/spree/admin/translations/taxonomies/_form.html.erb +3 -18
  126. data/app/views/spree/admin/translations/taxons/_form.html.erb +11 -34
  127. data/app/views/spree/admin/translations/translation_rows/_permalink_field_row.html.erb +41 -0
  128. data/app/views/spree/admin/translations/translation_rows/_rich_textarea_row.html.erb +13 -0
  129. data/app/views/spree/admin/translations/translation_rows/_text_field_row.html.erb +7 -0
  130. data/app/views/spree/admin/translations/translation_rows/_textarea_row.html.erb +11 -0
  131. data/app/views/spree/admin/users/_details.html.erb +1 -0
  132. data/app/views/spree/admin/users/index.html.erb +1 -1
  133. data/app/views/spree/admin/users/new.html.erb +9 -5
  134. data/app/views/spree/admin/users/show.html.erb +3 -3
  135. data/app/views/spree/admin/variants/form/_inventory.html.erb +1 -1
  136. data/app/views/spree/admin/zones/_form.html.erb +36 -40
  137. data/app/views/spree/admin/zones/edit.html.erb +7 -5
  138. data/app/views/spree/admin/zones/new.html.erb +7 -4
  139. data/config/locales/en.yml +12 -1
  140. data/config/routes.rb +8 -2
  141. metadata +33 -8
@@ -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>
@@ -1,7 +1,7 @@
1
1
  <% content_for :page_actions_dropdown do %>
2
2
  <%= link_to_edit_translations(@product) %>
3
3
  <%= link_to_with_icon(
4
- "file",
4
+ "files",
5
5
  Spree.t(:digital_assets),
6
6
  spree.admin_product_digital_assets_path(@product),
7
7
  class: "dropdown-item",
@@ -15,7 +15,7 @@
15
15
 
16
16
  <% if can?(:clone, @product) %>
17
17
  <%= link_to_with_icon(
18
- "copy",
18
+ "copy-check",
19
19
  Spree.t(:clone),
20
20
  spree.clone_admin_product_path(@product),
21
21
  class: "dropdown-item",
@@ -5,7 +5,7 @@
5
5
 
6
6
  <% if can?(:update, promotion_action) || can?(:destroy, promotion_action) %>
7
7
  <div class="dropdown">
8
- <button class="btn btn-light btn-sm" type="button" data-toggle="dropdown" aria-expanded="false">
8
+ <button class="btn btn-light btn-sm px-1" type="button" data-toggle="dropdown" aria-expanded="false">
9
9
  <%= icon('dots-vertical', class: 'mr-0') %>
10
10
  </button>
11
11
  <div class="dropdown-menu">
@@ -1,10 +1,10 @@
1
1
  <%= turbo_frame_tag @promotion_action do %>
2
2
  <%= form_with model: @promotion_action, url: spree.admin_promotion_action_path(@promotion, @promotion_action), method: :put, scope: :promotion_action do |f| %>
3
- <div class="card mb-3" id="<%= spree_dom_id(@promotion_action) %>">
3
+ <div class="card" id="<%= spree_dom_id(@promotion_action) %>">
4
4
  <div class="card-header d-flex justify-content-between align-items-center">
5
5
  <h5 class="card-title"><%= @promotion_action.human_name %></h5>
6
6
  </div>
7
- <div class="card-body pb-0">
7
+ <div class="card-body">
8
8
  <%= render partial: 'spree/admin/shared/error_messages', locals: { target: @promotion_action } %>
9
9
  <%= render "spree/admin/promotion_actions/forms/#{@promotion_action.key}", f: f %>
10
10
  </div>
@@ -5,7 +5,7 @@
5
5
 
6
6
  <% if can?(:update, promotion_rule) || can?(:destroy, promotion_rule) %>
7
7
  <div class="dropdown">
8
- <button class="btn btn-light btn-sm" type="button" data-toggle="dropdown" aria-expanded="false">
8
+ <button class="btn btn-light btn-sm px-1" type="button" data-toggle="dropdown" aria-expanded="false">
9
9
  <%= icon('dots-vertical', class: 'mr-0') %>
10
10
  </button>
11
11
  <div class="dropdown-menu">
@@ -22,30 +22,47 @@
22
22
  <%= render 'spree/admin/shared/preferences', object: promotion_rule %>
23
23
  <% end %>
24
24
 
25
+ <% if promotion_rule.respond_to?(:preferred_eligible_values) %>
26
+ <div class="mt-3">
27
+ <span><%= Spree.t(:option_values) %>:</span>
28
+ <div class="d-flex flex-wrap gap-2">
29
+ <% promotion_rule_option_values(promotion_rule.preferred_eligible_values).each do |value| %>
30
+ <strong><%= value %></strong>
31
+ <% end %>
32
+ </div>
33
+ </div>
34
+ <% end %>
35
+
25
36
  <% if promotion_rule.respond_to?(:products) %>
26
37
  <div class="mt-3">
27
38
  <span><%= Spree.t(:products) %>:</span>
28
- <% promotion_rule.products.pluck(:name).each do |product_name| %>
39
+ <div class="d-flex flex-wrap gap-2">
40
+ <% promotion_rule.products.pluck(:name).each do |product_name| %>
29
41
  <strong><%= product_name %></strong>
30
- <% end %>
42
+ <% end %>
43
+ </div>
31
44
  </div>
32
45
  <% end %>
33
46
 
34
47
  <% if promotion_rule.respond_to?(:taxons) %>
35
48
  <div class="mt-3">
36
49
  <span><%= Spree.t(:taxons) %>:</span>
37
- <% promotion_rule.taxons.pluck(:pretty_name).each do |taxon_name| %>
38
- <strong><%= taxon_name %></strong>
39
- <% end %>
50
+ <div class="d-flex flex-wrap gap-2">
51
+ <% promotion_rule.taxons.pluck(:pretty_name).each do |taxon_name| %>
52
+ <strong><%= taxon_name %></strong>
53
+ <% end %>
54
+ </div>
40
55
  </div>
41
56
  <% end %>
42
57
 
43
58
  <% if promotion_rule.respond_to?(:users) %>
44
59
  <div class="mt-3">
45
60
  <span><%= Spree.t(:users) %>:</span>
46
- <% promotion_rule.users.pluck(:email).each do |user_email| %>
47
- <strong><%= user_email %></strong>
48
- <% end %>
61
+ <div class="d-flex flex-wrap gap-2">
62
+ <% promotion_rule.users.pluck(:email).each do |user_email| %>
63
+ <strong><%= user_email %></strong>
64
+ <% end %>
65
+ </div>
49
66
  </div>
50
67
  <% end %>
51
68
  </div>
@@ -1,10 +1,10 @@
1
1
  <%= turbo_frame_tag @promotion_rule do %>
2
2
  <%= form_with model: @promotion_rule, url: spree.admin_promotion_rule_path(@promotion, @promotion_rule), method: :put, scope: :promotion_rule do |f| %>
3
- <div class="card mb-3" id="<%= spree_dom_id(@promotion_rule) %>">
3
+ <div class="card" id="<%= spree_dom_id(@promotion_rule) %>">
4
4
  <div class="card-header d-flex justify-content-between align-items-center">
5
5
  <h5 class="card-title"><%= @promotion_rule.human_name %></h5>
6
6
  </div>
7
- <div class="card-body pb-0">
7
+ <div class="card-body">
8
8
  <%= render partial: 'spree/admin/shared/error_messages', locals: { target: @promotion_rule } %>
9
9
  <%= render "spree/admin/promotion_rules/forms/#{@promotion_rule.key}", f: f %>
10
10
  </div>
@@ -1,7 +1,7 @@
1
1
  <div class="form-group">
2
2
  <%= tom_select_tag "promotion_rule[preferred_eligible_values][]",
3
3
  placeholder: Spree.t(:type_to_search),
4
- url: spree.admin_promotion_rules_option_values_search_path,
4
+ url: spree.admin_search_option_values_path,
5
5
  remote_search: true,
6
6
  remote_search_active_option: active_options_for_option_value_promotion_rule(f.object),
7
7
  multiple: true,
@@ -1,5 +1,5 @@
1
1
  <div class="card mb-4 bg-transparent">
2
- <div class="card-header d-flex justify-content-between border-0">
2
+ <div class="card-header d-flex justify-content-between border-0 px-2">
3
3
  <h5 class="card-title">
4
4
  <%= icon('bolt', class: 'mr-2') %>
5
5
  <%= Spree.t(:promotion_actions) %>
@@ -10,7 +10,7 @@
10
10
  </span>
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
  <% if @promotion.promotion_actions.empty? %>
15
15
  <div class="text-muted p-5 d-flex align-items-center w-100 justify-content-center">
16
16
  <%= Spree.t(:no_resource_found, resource: plural_resource_name(Spree::PromotionAction)) %>
@@ -1,5 +1,5 @@
1
1
  <div class="card mb-4 bg-transparent">
2
- <div class="card-header d-flex justify-content-between">
2
+ <div class="card-header d-flex justify-content-between px-2">
3
3
  <h5 class="card-title">
4
4
  <%= icon('checklist', class: 'mr-2') %>
5
5
  <%= Spree.t(:rules) %>
@@ -24,7 +24,7 @@
24
24
  </div>
25
25
  </div>
26
26
  </div>
27
- <div class="card-body p-1 d-flex flex-column gap-2">
27
+ <div class="card-body p-2 d-flex flex-column gap-2">
28
28
  <% if @promotion.promotion_rules.empty? %>
29
29
  <div class="text-muted p-5 d-flex align-items-center w-100 justify-content-center">
30
30
  <%= Spree.t(:no_resource_found, resource: plural_resource_name(Spree::PromotionRule)) %>
@@ -2,7 +2,6 @@
2
2
  <% coupon_codes_count = @promotion.coupon_codes.count %>
3
3
  <% if coupon_codes_count.positive? %>
4
4
  <% used_coupon_codes_count = @promotion.coupon_codes.used.count %>
5
- <% remaining_coupon_codes_count = coupon_codes_count - used_coupon_codes_count %>
6
5
 
7
6
  <div class="card mb-4">
8
7
  <div class="card-header d-flex justify-content-between">
@@ -12,9 +11,7 @@
12
11
  <%= link_to_with_icon 'eye', Spree.t(:view), spree.admin_promotion_coupon_codes_path(@promotion), class: 'btn btn-sm btn-light' %>
13
12
  </div>
14
13
  <div class="card-body">
15
- <div class="progress">
16
- <div class="progress-bar" role="progressbar" style="width: <%= (used_coupon_codes_count.to_f / coupon_codes_count * 100).round %>%" aria-valuenow="<%= used_coupon_codes_count %>" aria-valuemin="0" aria-valuemax="<%= coupon_codes_count %>"></div>
17
- </div>
14
+ <%= progress_bar_component(used_coupon_codes_count, max: coupon_codes_count) %>
18
15
  </div>
19
16
  <div class="card-footer d-flex justify-content-between">
20
17
  <span class="badge badge-light">
@@ -75,16 +72,11 @@
75
72
  </li>
76
73
 
77
74
  <% if @promotion.code.present? %>
78
- <li class="list-group-item d-flex justify-content-between align-items-center py-2" data-controller="clipboard" data-clipboard-success-content="Copied!">
75
+ <li class="list-group-item d-flex justify-content-between align-items-center py-2">
79
76
  <span class="text-muted"><%= Spree.t(:coupon_code) %></span>
80
77
  <div class="d-flex align-items-center gap-1">
81
- <span class="form-control form-control-sm">
82
- <span data-clipboard-target="source"><%= @promotion.code.upcase %></span>
83
- </span>
84
-
85
- <button type="button" class="btn btn-light btn-sm with-tip p-1" data-action="clipboard#copy" title="<%= Spree.t(:copy) %>">
86
- <%= icon 'copy', class: 'mr-0' %>
87
- </button>
78
+ <code><%= @promotion.code.upcase %></code>
79
+ <%= clipboard_component(@promotion.code.upcase) %>
88
80
  </div>
89
81
  </li>
90
82
  <% end %>
@@ -121,7 +113,7 @@
121
113
  </li>
122
114
  <li class="list-group-item d-flex justify-content-between align-items-center">
123
115
  <span class="text-muted">
124
- <%= I18n.t('activerecord.attributes.spree/promotion.expires_at') %>
116
+ <%= Spree.t(:expires_at) %>
125
117
  </span>
126
118
  <% if @promotion.expires_at %>
127
119
  <span><%= local_time(@promotion.expires_at) %></span>
@@ -3,7 +3,7 @@
3
3
  <%= icon('grip-vertical', class: 'rounded hover-gray p-2') %>
4
4
  </td>
5
5
  <td class="w-20 cursor-pointer py-0" data-action="click->row-link#openLink">
6
- <code><%= property.name %></vode>
6
+ <code><%= property.name %></code>
7
7
  </td>
8
8
  <td class="w-20 cursor-pointer" data-action="click->row-link#openLink">
9
9
  <%= link_to property.presentation, spree.edit_admin_property_path(property), class: 'text-decoration-none d-flex align-items-center font-weight-bold text-dark', data: { row_link_target: :link } %>
@@ -22,4 +22,4 @@
22
22
  <td class="w-10 actions">
23
23
  <%= link_to_edit(property, class: 'btn btn-light btn-sm') if can?(:edit, property) %>
24
24
  </td>
25
- </tr>
25
+ </tr>
@@ -3,13 +3,20 @@
3
3
  <%= @property.presentation %>
4
4
  <% end %>
5
5
 
6
+ <% content_for :page_actions_dropdown do %>
7
+ <%= link_to_edit_translations(@property) %>
8
+ <% end %>
6
9
 
7
10
  <%= form_for [:admin, @property] do |f| %>
8
- <div class="card mb-4">
9
- <div class="card-body">
10
- <%= render partial: 'spree/admin/shared/error_messages', locals: { target: @property } %>
11
- <%= render 'form', f: f %>
11
+ <div class="row">
12
+ <div class="col-lg-6 offset-lg-3">
13
+ <div class="card mb-4">
14
+ <div class="card-body">
15
+ <%= render partial: 'spree/admin/shared/error_messages', locals: { target: @property } %>
16
+ <%= render 'form', f: f %>
17
+ </div>
18
+ </div>
19
+ <%= render 'spree/admin/shared/edit_resource_links', f: f %>
12
20
  </div>
13
21
  </div>
14
- <%= render 'spree/admin/shared/edit_resource_links', f: f %>
15
22
  <% end %>
@@ -4,11 +4,15 @@
4
4
  <% end %>
5
5
 
6
6
  <%= form_for [:admin, @property] do |f| %>
7
- <div class="card mb-4">
8
- <div class="card-body">
9
- <%= render partial: 'spree/admin/shared/error_messages', locals: { target: @property } %>
10
- <%= render 'form', f: f %>
7
+ <div class="row">
8
+ <div class="col-lg-6 offset-lg-3">
9
+ <div class="card mb-4">
10
+ <div class="card-body">
11
+ <%= render partial: 'spree/admin/shared/error_messages', locals: { target: @property } %>
12
+ <%= render 'form', f: f %>
13
+ </div>
14
+ </div>
15
+ <%= render 'spree/admin/shared/new_resource_links' %>
11
16
  </div>
12
17
  </div>
13
- <%= render 'spree/admin/shared/new_resource_links' %>
14
18
  <% end %>
@@ -1,4 +1,9 @@
1
- <div class="row mt-4">
1
+ <% content_for :page_title do %>
2
+ <%= page_header_back_button spree.edit_admin_order_path(@order) %>
3
+ <%= Spree.t(:new_refund) %>
4
+ <% end %>
5
+
6
+ <div class="row">
2
7
  <div class="col-lg-6 offset-lg-3">
3
8
  <%= render 'spree/admin/shared/error_messages', target: @refund %>
4
9
 
@@ -3,11 +3,10 @@
3
3
  <%= @reimbursement_type.name %>
4
4
  <% end %>
5
5
 
6
- <%= render partial: 'spree/admin/shared/error_messages', locals: { target: @reimbursement_type } %>
7
-
8
6
  <div class="row">
9
- <div class="col-lg-6">
7
+ <div class="col-lg-6 offset-lg-3">
10
8
  <%= form_with model: @reimbursement_type, :url => object_url, :method => :put, scope: :reimbursement_type do |reimbursement_form| %>
9
+ <%= render partial: 'spree/admin/shared/error_messages', locals: { target: @reimbursement_type } %>
11
10
  <%= render partial: 'form', locals: { f: reimbursement_form } %>
12
11
  <%= render 'spree/admin/shared/edit_resource_links', f: reimbursement_form %>
13
12
  <% end %>
@@ -3,12 +3,10 @@
3
3
  <%= Spree.t(:new_reimbursement_type) %>
4
4
  <% end %>
5
5
 
6
-
7
- <%= render partial: 'spree/admin/shared/error_messages', locals: { target: @reimbursement_type } %>
8
-
9
6
  <div class="row">
10
- <div class="col-lg-6">
7
+ <div class="col-lg-6 offset-lg-3">
11
8
  <%= form_for [:admin, @reimbursement_type] do |reimbursement_form| %>
9
+ <%= render partial: 'spree/admin/shared/error_messages', locals: { target: @reimbursement_type } %>
12
10
  <%= render partial: 'form', locals: { f: reimbursement_form } %>
13
11
  <%= render 'spree/admin/shared/new_resource_links' %>
14
12
  <% end %>
@@ -1,4 +1,4 @@
1
- <% record = @customer_return || @order || @product || @vendor || @user || @taxon || @object %>
1
+ <% record = @object || @customer_return || @order || @product || @vendor || @user || @taxon || @store_credit %>
2
2
  <% record = nil if @user&.is_a?(Spree.admin_user_class) %>
3
3
 
4
4
  <% show_record_subtitle = record && record.persisted? && record.has_attribute?(:updated_at) %>
@@ -7,7 +7,7 @@
7
7
  <% end if show_record_subtitle && !content_for(:page_subtitle) %>
8
8
 
9
9
  <% if content_for?(:page_title) %>
10
- <header id="page-header" class="container">
10
+ <header id="page-header" class="container-fluid" data-controller="sticky">
11
11
  <h3 class="page-header-title mb-0 d-flex align-items-center gap-3">
12
12
  <%= yield :page_title %>
13
13
  </h3>
@@ -45,7 +45,7 @@
45
45
  <div data-controller="clipboard">
46
46
  <%= hidden_field_tag :record_number, record.number, data: { clipboard_target: 'source' } %>
47
47
  <button data-action="clipboard#copy" class="text-left dropdown-item">
48
- <%= icon 'files' %>
48
+ <%= icon 'copy' %>
49
49
  <%= 'Copy number' %>
50
50
  </button>
51
51
  </div>
@@ -53,10 +53,15 @@
53
53
  <div data-controller="clipboard">
54
54
  <%= hidden_field_tag :record_id, record.id, data: { clipboard_target: 'source' } %>
55
55
  <button data-action="clipboard#copy" class="text-left dropdown-item">
56
- <%= icon 'files.svg' %>
56
+ <%= icon 'copy' %>
57
57
  <%= Spree.t(:copy_id) %>
58
58
  </button>
59
59
  </div>
60
+
61
+ <% if defined?(object_url) && %w[show edit].include?(action_name) && record.respond_to?(:can_be_deleted?) && record.can_be_deleted? && can?(:destroy, record) %>
62
+ <div class="dropdown-divider"></div>
63
+ <%= link_to_with_icon 'trash', Spree.t('actions.destroy'), object_url, class: 'dropdown-item btn-danger', data: { turbo_method: :delete, turbo_confirm: Spree.t(:are_you_sure) } %>
64
+ <% end %>
60
65
  <% end %>
61
66
  </div>
62
67
  </div>
@@ -1,6 +1,8 @@
1
+ <% destroy_url = defined?(destroy_url) && destroy_url ? destroy_url : object_url(f.object) %>
2
+
1
3
  <div class="form-actions">
2
4
  <%= turbo_save_button_tag Spree.t('actions.update') %>
3
5
  <% if f.object.can_be_deleted? && can?(:delete, f.object) %>
4
- <%= link_to Spree.t('actions.destroy'), object_url(f.object), data: { turbo_method: :delete, turbo_confirm: Spree.t(:are_you_sure_delete), turbo_frame: defined?(turbo_frame) ? turbo_frame : nil }, class: 'btn btn-danger ml-auto' %>
6
+ <%= link_to Spree.t('actions.destroy'), destroy_url, data: { turbo_method: :delete, turbo_confirm: Spree.t(:are_you_sure_delete), turbo_frame: defined?(turbo_frame) ? turbo_frame : '_top' }, class: 'btn btn-danger ml-auto' %>
5
7
  <% end %>
6
8
  </div>
@@ -11,8 +11,8 @@
11
11
  </div>
12
12
 
13
13
  <% if settings_active? %>
14
- <div class="store-dropdown pr-2">
15
- <%= active_link_to_with_icon('arrow-back-up', Spree.t('admin.back_to_dashboard'), spree.admin_dashboard_path, class: 'btn store-dropdown-button w-100 justify-content-start mr-1') %>
14
+ <div class="store-dropdown px-2">
15
+ <%= active_link_to_with_icon('arrow-left', Spree.t('admin.back_to_dashboard'), spree.admin_dashboard_path, class: 'btn store-dropdown-button w-100 justify-content-start mx-1 py-2') %>
16
16
  </div>
17
17
  <% else %>
18
18
  <% if defined?(current_vendor) && current_vendor.present? %>
@@ -6,7 +6,7 @@
6
6
  <% end %>
7
7
 
8
8
  <% if collection.any? %>
9
- <div class="py-2 border-top">
9
+ <div class="pagination-container">
10
10
  <div class="index-pagination-row d-flex align-items-center">
11
11
  <div class="col-6 col-lg-3">
12
12
  <%= per_page_dropdown %>
@@ -2,6 +2,7 @@
2
2
  <p class="mb-0">
3
3
  <% object.preferences.each do |key, value| %>
4
4
  <% next if value.blank? %>
5
+ <% next if key == :eligible_values %>
5
6
  <span><%= Spree.t(key) %>:</span>
6
7
  <strong><%= value %></strong>
7
8
  <% end %>
@@ -1,4 +1,4 @@
1
- <aside id="main-sidebar">
1
+ <aside id="main-sidebar" class="overflow-y-auto">
2
2
  <% if defined?(current_vendor) && current_vendor.present? %>
3
3
  <%= render 'spree/admin/shared/sidebar/vendor_nav' %>
4
4
  <% else %>
@@ -1,4 +1,4 @@
1
- <%= link_to spree.admin_user_path(user), class: 'rounded hover-light p-2 d-flex justify-content-start align-items-center', data: {turbo_frame: :_top, row_link_target: :link} do %>
1
+ <%= link_to spree.admin_user_path(user), class: 'rounded p-2 d-flex justify-content-start align-items-center text-decoration-none hover-light', data: {turbo_frame: :_top, row_link_target: :link} do %>
2
2
  <% if user.name.present? %>
3
3
  <%= render_avatar(user, width: 48, height: 48, class: 'mr-3 avatar') %>
4
4
  <% else %>
@@ -13,12 +13,7 @@
13
13
  <span class="text-muted with-tip" title="<%= user.email %>">
14
14
  <%= user.email %>
15
15
  </span>
16
- <span data-controller="clipboard">
17
- <%= hidden_field_tag :user_email, user.email, data: { clipboard_target: 'source' } %>
18
- <button data-action="clipboard#copy" class="btn btn-sm text-muted with-tip mx-1" title="Copy email">
19
- <%= icon 'files', class: 'mr-0' %>
20
- </button>
21
- </span>
16
+ <%= clipboard_component(user.email) %>
22
17
  <% end %>
23
18
  </div>
24
19
  <% end %>
@@ -3,11 +3,10 @@
3
3
  <%= @object.name %>
4
4
  <% end %>
5
5
 
6
- <%= render partial: 'spree/admin/shared/error_messages', locals: { target: @object } %>
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, @object] do |f| %>
9
+ <%= render partial: 'spree/admin/shared/error_messages', locals: { target: @object } %>
11
10
  <%= render partial: 'spree/admin/shared/named_types/form', locals: { f: f } %>
12
11
  <%= render 'spree/admin/shared/edit_resource_links', f: f %>
13
12
  <% end %>
@@ -3,11 +3,10 @@
3
3
  <%= page_title %>
4
4
  <% end %>
5
5
 
6
- <%= render partial: 'spree/admin/shared/error_messages', locals: { target: @object } %>
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, @object] do |f| %>
9
+ <%= render partial: 'spree/admin/shared/error_messages', locals: { target: @object } %>
11
10
  <%= render partial: 'spree/admin/shared/named_types/form', locals: { f: f } %>
12
11
  <%= render 'spree/admin/shared/new_resource_links' %>
13
12
  <% end %>
@@ -26,10 +26,10 @@
26
26
  <% end %>
27
27
  </div>
28
28
 
29
- <div class="d-flex align-items-center px-3 ml-3">
29
+ <div class="d-flex align-items-center px-3 ml-3 gap-2">
30
30
  <%= link_to_edit(taxon, url: spree.edit_admin_taxonomy_taxon_path(taxonomy, taxon.id), data: { row_link_target: :link }) if can?(:edit, taxon) %>
31
31
 
32
- <div class="dropdown ml-2 h-100">
32
+ <div class="dropdown h-100">
33
33
  <button class="btn btn-light btn-sm px-1 h-100" type="button" id="dropdownMenuButton-<%= taxon.id %>" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
34
34
  <%= icon('dots-vertical', class: 'mr-0') %>
35
35
  </button>
@@ -3,9 +3,12 @@
3
3
  <%= @shipping_category.name %>
4
4
  <% end %>
5
5
 
6
- <%= render partial: 'spree/admin/shared/error_messages', locals: { target: @shipping_category } %>
7
-
8
6
  <%= form_for [:admin, @shipping_category] do |f| %>
9
- <%= render 'form', f: f %>
10
- <%= render 'spree/admin/shared/edit_resource_links', f: f %>
7
+ <div class="row">
8
+ <div class="col-lg-6 offset-lg-3">
9
+ <%= render partial: 'spree/admin/shared/error_messages', locals: { target: @shipping_category } %>
10
+ <%= render 'form', f: f %>
11
+ <%= render 'spree/admin/shared/edit_resource_links', f: f %>
12
+ </div>
13
+ </div>
11
14
  <% end %>
@@ -3,11 +3,12 @@
3
3
  <%= Spree.t(:new_shipping_category) %>
4
4
  <% end %>
5
5
 
6
- <%= render partial: 'spree/admin/shared/error_messages', locals: { target: @shipping_category } %>
7
-
8
6
  <%= form_for [:admin, @shipping_category] do |f| %>
9
- <fieldset>
10
- <%= render partial: 'form', locals: { f: f } %>
11
- <%= render partial: 'spree/admin/shared/new_resource_links' %>
12
- </fieldset>
7
+ <div class="row">
8
+ <div class="col-lg-6 offset-lg-3">
9
+ <%= render partial: 'spree/admin/shared/error_messages', locals: { target: @shipping_category } %>
10
+ <%= render partial: 'form', locals: { f: f } %>
11
+ <%= render partial: 'spree/admin/shared/new_resource_links' %>
12
+ </div>
13
+ </div>
13
14
  <% end %>