spree_admin 5.4.0.rc5 → 5.4.0.rc6
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.
- checksums.yaml +4 -4
- data/app/assets/tailwind/spree/admin/base/_theme.css +2 -1
- data/app/assets/tailwind/spree/admin/components/_bulk-panel.css +1 -1
- data/app/assets/tailwind/spree/admin/components/_buttons.css +1 -1
- data/app/assets/tailwind/spree/admin/components/_cards.css +3 -7
- data/app/assets/tailwind/spree/admin/components/_forms.css +1 -1
- data/app/assets/tailwind/spree/admin/components/_list-groups.css +1 -1
- data/app/assets/tailwind/spree/admin/components/_variants-form.css +7 -0
- data/app/controllers/spree/admin/products_controller.rb +7 -1
- data/app/helpers/spree/admin/table_helper.rb +1 -1
- data/app/javascript/spree/admin/controllers/variants_form_controller.js +9 -0
- data/app/models/spree/admin/form_builder.rb +1 -1
- data/app/presenters/spree/admin/order_summary_presenter.rb +11 -0
- data/app/views/spree/admin/option_types/_form.html.erb +9 -1
- data/app/views/spree/admin/option_types/_option_value_fields.html.erb +15 -1
- data/app/views/spree/admin/orders/_shipment.html.erb +1 -1
- data/app/views/spree/admin/payments/_payment.html.erb +1 -1
- data/app/views/spree/admin/payments/new.html.erb +1 -1
- data/app/views/spree/admin/payments/source_forms/_previous_cards.html.erb +1 -1
- data/app/views/spree/admin/payments/source_forms/_store_credit.html.erb +1 -1
- data/app/views/spree/admin/products/form/_variants.html.erb +3 -0
- data/app/views/spree/admin/products/form/variants/_variant_template.html.erb +3 -0
- data/app/views/spree/admin/shared/_filters_search_bar.html.erb +1 -1
- data/app/views/spree/admin/shared/_head.html.erb +1 -1
- data/app/views/spree/admin/shared/_media_form.html.erb +1 -1
- data/app/views/spree/admin/shipments/edit.html.erb +6 -6
- data/app/views/spree/admin/tables/_column_selector.html.erb +1 -1
- data/app/views/spree/admin/tables/_query_builder.html.erb +1 -1
- data/app/views/spree/admin/tables/_table.html.erb +3 -3
- data/app/views/spree/admin/translations/edit.html.erb +1 -1
- data/app/views/spree/admin/variants/form/_pricing.html.erb +1 -1
- data/config/locales/en.yml +2 -3
- metadata +6 -7
- data/db/migrate/20250217171018_create_action_text_video_embeds.rb +0 -11
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 50570f56dda55aad96c630a301c60c4f23a793d334cd72670697bd7dd535301c
|
|
4
|
+
data.tar.gz: c2422ff165f838cab717fdbbc287b90e678c7c0fd36ed4abdc5278f4430b111f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 5ffcae807ccdf08a77684bde3a9f61da11f04ffe8efe901572bffc27feff7ea21477ff49992f2b3cd3cdaf8ccdbd88ea9d614fdc256180c4e4f45ccde7197945
|
|
7
|
+
data.tar.gz: fdedbeee10fc76796f0355e3958eb4fdfbd438831fb458aefff328b0b36655fd6f7b73cb2018ee9af413e5c7ca13eccc206ae802afb44435e980528fd409cf37
|
|
@@ -14,7 +14,8 @@
|
|
|
14
14
|
--color-info: var(--color-blue-900);
|
|
15
15
|
|
|
16
16
|
/* Typography */
|
|
17
|
-
--font-sans: "
|
|
17
|
+
--font-sans: "Geist", ui-sans-serif, system-ui, sans-serif;
|
|
18
|
+
--font-mono: "Geist Mono", ui-monospace, monospace;
|
|
18
19
|
|
|
19
20
|
/* Override Tailwind's text-* scale to match Spree design system */
|
|
20
21
|
--text-2xs: 0.625rem;
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
.btn {
|
|
12
12
|
@apply inline-flex items-center justify-center text-center align-middle gap-2;
|
|
13
13
|
@apply cursor-pointer select-none no-underline;
|
|
14
|
-
@apply px-
|
|
14
|
+
@apply px-2.5 py-1.5 text-base font-medium leading-normal border border-transparent rounded-xl;
|
|
15
15
|
@apply transition-colors duration-100 ease-linear;
|
|
16
16
|
}
|
|
17
17
|
|
|
@@ -13,10 +13,6 @@
|
|
|
13
13
|
@apply p-0 mb-3;
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
.card .card {
|
|
17
|
-
@apply rounded-xl;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
16
|
/* Card with table */
|
|
21
17
|
.card > .table,
|
|
22
18
|
.card .table-responsive > .table {
|
|
@@ -74,7 +70,7 @@
|
|
|
74
70
|
}
|
|
75
71
|
|
|
76
72
|
.card-body {
|
|
77
|
-
@apply flex-auto p-
|
|
73
|
+
@apply flex-auto p-3;
|
|
78
74
|
}
|
|
79
75
|
|
|
80
76
|
.card-body .form-group:last-child {
|
|
@@ -87,7 +83,7 @@
|
|
|
87
83
|
}
|
|
88
84
|
|
|
89
85
|
.card-header {
|
|
90
|
-
@apply flex items-center mb-0
|
|
86
|
+
@apply flex items-center mb-0 px-3 h-12 border-b border-gray-100 rounded-t-[calc(var(--radius-xl)-1px)];
|
|
91
87
|
}
|
|
92
88
|
|
|
93
89
|
.card-header .card-title {
|
|
@@ -107,7 +103,7 @@
|
|
|
107
103
|
}
|
|
108
104
|
|
|
109
105
|
.card-footer {
|
|
110
|
-
@apply p-
|
|
106
|
+
@apply p-3;
|
|
111
107
|
}
|
|
112
108
|
|
|
113
109
|
.card-footer:last-child {
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
.select-input,
|
|
24
24
|
.form-control-sm,
|
|
25
25
|
.custom-select-sm {
|
|
26
|
-
@apply block w-full py-
|
|
26
|
+
@apply block w-full py-1.5 px-2.5 text-base font-normal leading-normal;
|
|
27
27
|
@apply text-gray-950 bg-white border border-gray-200 rounded-lg shadow-xs;
|
|
28
28
|
@apply focus:outline-offset-2 focus:outline-blue-500 focus:border-gray-200 focus:ring-0;
|
|
29
29
|
@apply transition-all duration-100 ease-in-out;
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
.list-group-item {
|
|
11
|
-
@apply relative block py-
|
|
11
|
+
@apply relative block py-2.5 px-3 text-gray-950 no-underline border border-gray-200 hover:bg-gray-25;
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
.list-group-item:first-child {
|
|
@@ -72,6 +72,7 @@
|
|
|
72
72
|
}
|
|
73
73
|
|
|
74
74
|
.variants-form .variants-table .column-checkbox,
|
|
75
|
+
.variants-form .variants-table .column-thumbnail,
|
|
75
76
|
.variants-form .variants-table .column-variant,
|
|
76
77
|
.variants-form .variants-table .column-price,
|
|
77
78
|
.variants-form .variants-table .column-quantity,
|
|
@@ -83,6 +84,11 @@
|
|
|
83
84
|
@apply justify-center grow-0 basis-8;
|
|
84
85
|
}
|
|
85
86
|
|
|
87
|
+
.variants-form .variants-table .column-thumbnail {
|
|
88
|
+
@apply grow-0 shrink-0;
|
|
89
|
+
flex-basis: 36px;
|
|
90
|
+
}
|
|
91
|
+
|
|
86
92
|
.variants-form .variants-table .column-variant {
|
|
87
93
|
@apply select-none grow-[3] basis-0;
|
|
88
94
|
}
|
|
@@ -136,6 +142,7 @@
|
|
|
136
142
|
}
|
|
137
143
|
|
|
138
144
|
.variants-form .variants-table__body__row.nested .column-checkbox,
|
|
145
|
+
.variants-form .variants-table__body__row.nested .column-thumbnail,
|
|
139
146
|
.variants-form .variants-table__body__row.nested .column-variant {
|
|
140
147
|
@apply left-5 relative;
|
|
141
148
|
}
|
|
@@ -179,10 +179,16 @@ module Spree
|
|
|
179
179
|
|
|
180
180
|
@product_variant_ids = {}
|
|
181
181
|
@product_variant_prefix_ids = {}
|
|
182
|
+
@product_variant_images = {}
|
|
182
183
|
|
|
183
|
-
@product.variants.includes(:option_values).each do |variant|
|
|
184
|
+
@product.variants.includes(:option_values, primary_media: { attachment_attachment: :blob }).each do |variant|
|
|
184
185
|
@product_variant_ids[variant.human_name] = variant.id.to_s
|
|
185
186
|
@product_variant_prefix_ids[variant.human_name] = variant.to_param
|
|
187
|
+
|
|
188
|
+
image = variant.primary_media
|
|
189
|
+
if image.present? && image.attached? && image.variable?
|
|
190
|
+
@product_variant_images[variant.human_name] = helpers.spree_image_url(image, variant: :mini)
|
|
191
|
+
end
|
|
186
192
|
end
|
|
187
193
|
end
|
|
188
194
|
|
|
@@ -359,7 +359,7 @@ module Spree
|
|
|
359
359
|
private
|
|
360
360
|
|
|
361
361
|
def sort_dropdown_toggle(current_direction, current_label)
|
|
362
|
-
dropdown_toggle(class: 'btn-light btn-sm
|
|
362
|
+
dropdown_toggle(class: 'btn-light btn-sm') do
|
|
363
363
|
safe_join([
|
|
364
364
|
icon(current_direction == 'asc' ? 'sort-ascending' : 'sort-descending'),
|
|
365
365
|
content_tag(:span, current_label),
|
|
@@ -35,6 +35,7 @@ export default class extends CheckboxSelectAll {
|
|
|
35
35
|
currencies: Array,
|
|
36
36
|
variantIds: Object,
|
|
37
37
|
variantPrefixIds: Object,
|
|
38
|
+
variantImages: Object,
|
|
38
39
|
currentStockLocationId: String,
|
|
39
40
|
stockLocations: Array,
|
|
40
41
|
optionValuesSelectOptions: Array,
|
|
@@ -533,6 +534,14 @@ export default class extends CheckboxSelectAll {
|
|
|
533
534
|
}
|
|
534
535
|
}
|
|
535
536
|
|
|
537
|
+
const variantImageUrl = this.variantImagesValue?.[internalName]
|
|
538
|
+
if (variantImageUrl) {
|
|
539
|
+
const thumbnailContainer = variantTarget.querySelector('[data-slot="variantThumbnail"]')
|
|
540
|
+
if (thumbnailContainer) {
|
|
541
|
+
thumbnailContainer.innerHTML = `<div class="overflow-hidden rounded-md border border-gray-300" style="width: 36px; height: 36px;"><img src="${variantImageUrl}" width="36" height="36" alt="" class="object-cover transition-transform duration-300 ease-out hover:scale-120" loading="lazy"></div>`
|
|
542
|
+
}
|
|
543
|
+
}
|
|
544
|
+
|
|
536
545
|
let previousVariant = null
|
|
537
546
|
|
|
538
547
|
if (i > 0) {
|
|
@@ -389,7 +389,7 @@ module Spree
|
|
|
389
389
|
|
|
390
390
|
@template.content_tag(:div, class: 'input-group') do
|
|
391
391
|
prepend_html = if prepend.present?
|
|
392
|
-
@template.content_tag(:div, prepend, class: 'pl-
|
|
392
|
+
@template.content_tag(:div, prepend, class: 'pl-2 text-gray-400')
|
|
393
393
|
else
|
|
394
394
|
''.html_safe
|
|
395
395
|
end
|
|
@@ -13,6 +13,7 @@ module Spree
|
|
|
13
13
|
[
|
|
14
14
|
*metadata_rows,
|
|
15
15
|
:separator,
|
|
16
|
+
market_row,
|
|
16
17
|
locale_row,
|
|
17
18
|
currency_row,
|
|
18
19
|
subtotal_row,
|
|
@@ -72,6 +73,16 @@ module Spree
|
|
|
72
73
|
rows
|
|
73
74
|
end
|
|
74
75
|
|
|
76
|
+
def market_row
|
|
77
|
+
return nil if order.market.blank?
|
|
78
|
+
|
|
79
|
+
{
|
|
80
|
+
label: Spree.t(:market),
|
|
81
|
+
value: order.market.name,
|
|
82
|
+
id: 'market'
|
|
83
|
+
}
|
|
84
|
+
end
|
|
85
|
+
|
|
75
86
|
def locale_row
|
|
76
87
|
return nil if order.locale.blank?
|
|
77
88
|
|
|
@@ -12,6 +12,13 @@
|
|
|
12
12
|
<%= f.spree_text_field :name, label: Spree.t(:internal_name), data: { slug_form_target: :url }, help_text: raw("This is used internally to identify the option type. <strong>It must be unique.</strong>") %>
|
|
13
13
|
</div>
|
|
14
14
|
</div>
|
|
15
|
+
<div class="grid grid-cols-12 gap-6 mb-6">
|
|
16
|
+
<div class="col-span-12 md:col-span-6">
|
|
17
|
+
<%= f.spree_select :kind,
|
|
18
|
+
Spree::OptionType::KINDS.map { |k| [Spree.t("option_type_kinds.#{k}"), k] },
|
|
19
|
+
{ label: Spree.t(:kind), help: Spree.t(:option_type_kind_info) } %>
|
|
20
|
+
</div>
|
|
21
|
+
</div>
|
|
15
22
|
<div class="grid grid-cols-12 gap-6">
|
|
16
23
|
<div class="col-span-12 md:col-span-6">
|
|
17
24
|
<%= f.spree_check_box :filterable, help_text: raw(Spree.t('option_type_filterable_info')) %>
|
|
@@ -38,6 +45,7 @@
|
|
|
38
45
|
<th scope="col"></th>
|
|
39
46
|
<th scope="col"><%= raw(Spree.t(:presentation) + required_span_tag) %></th>
|
|
40
47
|
<th scope="col"><%= raw(Spree.t(:internal_name) + required_span_tag) %></th>
|
|
48
|
+
<th scope="col"><%= Spree.t(:color_code) %></th>
|
|
41
49
|
<th scope="col"></th>
|
|
42
50
|
</tr>
|
|
43
51
|
</thead>
|
|
@@ -51,7 +59,7 @@
|
|
|
51
59
|
<tr data-nested-form-target="target"></tr>
|
|
52
60
|
|
|
53
61
|
<tr class="hover-none">
|
|
54
|
-
<td colspan="
|
|
62
|
+
<td colspan="5" class="text-center p-2">
|
|
55
63
|
<button type="button" data-action="nested-form#add" class="btn btn-secondary py-3 w-full" id="add_option_value_button">
|
|
56
64
|
<%= icon('plus') %>
|
|
57
65
|
<%= Spree.t(:add_one) %>
|
|
@@ -14,12 +14,26 @@
|
|
|
14
14
|
<% end %>
|
|
15
15
|
<%= f.hidden_field :id %>
|
|
16
16
|
</td>
|
|
17
|
-
<td class="w-
|
|
17
|
+
<td class="w-40 presentation">
|
|
18
18
|
<%= f.text_field :presentation, class: "form-input", data: { slug_form_target: :name, action: 'slug-form#updateUrlFromName' } %>
|
|
19
19
|
</td>
|
|
20
20
|
<td class="w-40 name">
|
|
21
21
|
<%= f.text_field :name, class: "form-input", data: { slug_form_target: :url } %>
|
|
22
22
|
</td>
|
|
23
|
+
<td class="w-5 color_code">
|
|
24
|
+
<div data-controller="color-picker" data-color-picker-clear-value="true" data-color-picker-default-color-value="#000000">
|
|
25
|
+
<div class="flex items-center gap-2">
|
|
26
|
+
<button type="button"
|
|
27
|
+
data-color-picker-target="picker"
|
|
28
|
+
class="w-8 h-8 rounded border border-gray-300 cursor-pointer shrink-0"
|
|
29
|
+
style="background: <%= f.object.color_code.presence || 'white' %>;">
|
|
30
|
+
</button>
|
|
31
|
+
<span data-color-picker-target="value" class="text-sm text-gray-500"><%= f.object.color_code %></span>
|
|
32
|
+
</div>
|
|
33
|
+
<%= f.hidden_field :color_code, data: { color_picker_target: :input } %>
|
|
34
|
+
<span data-color-picker-target="display" class="hidden"></span>
|
|
35
|
+
</div>
|
|
36
|
+
</td>
|
|
23
37
|
<td class="w-10 actions">
|
|
24
38
|
<button type="button" class="btn btn-danger btn-sm remove_option_value_button" data-action="nested-form#remove">
|
|
25
39
|
<%= icon('trash', class: 'mr-0') %>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<% order ||= shipment.order %>
|
|
2
|
-
<%= turbo_frame_tag dom_id(shipment), class: "card
|
|
2
|
+
<%= turbo_frame_tag dom_id(shipment), class: "card" do %>
|
|
3
3
|
<div class="card-header items-center justify-between">
|
|
4
4
|
<div class="flex items-center gap-2">
|
|
5
5
|
<span class="flex items-center"><%= shipment_state(shipment.state) %></span>
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
<ul class="list-group mb-6">
|
|
20
20
|
<% @payment_methods.each do |payment_method| %>
|
|
21
21
|
<li class="list-group-item p-0 overflow-hidden">
|
|
22
|
-
<%= link_to spree.new_admin_order_payment_path(@order, payment_method_id: payment_method.id), class: "form-check-label flex items-center gap-4 px-
|
|
22
|
+
<%= link_to spree.new_admin_order_payment_path(@order, payment_method_id: payment_method.id), class: "form-check-label flex items-center gap-4 px-3 py-3 w-full cursor-pointer hover:bg-gray-25 text-gray-900 no-underline" do %>
|
|
23
23
|
<div class="form-check flex items-center">
|
|
24
24
|
<%= f.radio_button :payment_method_id, payment_method.id, class: "form-check-input" %>
|
|
25
25
|
</div>
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<%= f.fields_for :source, @payment.source do |source_form| %>
|
|
4
4
|
<% previous_cards.each do |card| %>
|
|
5
5
|
<li class="list-group-item p-0">
|
|
6
|
-
<%= source_form.label :id, value: card.id, class: "form-check-label flex items-center gap-4 px-
|
|
6
|
+
<%= source_form.label :id, value: card.id, class: "form-check-label flex items-center gap-4 px-3 py-3 w-full cursor-pointer hover:bg-gray-25" do %>
|
|
7
7
|
<div class="form-check flex items-center">
|
|
8
8
|
<%= source_form.radio_button :id, card.id, class: "form-check-input" %>
|
|
9
9
|
</div>
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<%= f.fields_for :source, @payment.source do |source_form| %>
|
|
4
4
|
<% @store_credits.each do |credit| %>
|
|
5
5
|
<li class="list-group-item p-0">
|
|
6
|
-
<%= source_form.label :id, value: credit.id, class: "form-check-label flex items-center gap-4 px-
|
|
6
|
+
<%= source_form.label :id, value: credit.id, class: "form-check-label flex items-center gap-4 px-3 py-3 w-full cursor-pointer hover:bg-gray-25" do %>
|
|
7
7
|
<div class="form-check flex items-center">
|
|
8
8
|
<%= source_form.radio_button :id, credit.id, class: "form-check-input", checked: @payment.source.id == credit.id || @store_credits.first.id == credit.id %>
|
|
9
9
|
</div>
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
<% if @product_prices.present? %> data-variants-form-prices-value="<%= @product_prices.to_json %>" <% end %>
|
|
23
23
|
<% if @product_variant_ids.present? %> data-variants-form-variant-ids-value="<%= @product_variant_ids.to_json %>" <% end %>
|
|
24
24
|
<% if @product_variant_prefix_ids.present? %> data-variants-form-variant-prefix-ids-value="<%= @product_variant_prefix_ids.to_json %>" <% end %>
|
|
25
|
+
<% if @product_variant_images.present? %> data-variants-form-variant-images-value="<%= @product_variant_images.to_json %>" <% end %>
|
|
25
26
|
>
|
|
26
27
|
<div class="options-creator">
|
|
27
28
|
<%= render 'spree/admin/products/form/variants/option_template', option_types_for_select: option_types_for_select %>
|
|
@@ -145,6 +146,8 @@
|
|
|
145
146
|
</div>
|
|
146
147
|
</div>
|
|
147
148
|
<% end%>
|
|
149
|
+
<div class="variants-table__header__cell column-thumbnail">
|
|
150
|
+
</div>
|
|
148
151
|
<div class="variants-table__header__cell column-variant">
|
|
149
152
|
<%= Spree.t(:variant) %>
|
|
150
153
|
<button data-variants-form-target="deleteButton" data-action="variants-form#deleteSelected" type="button" class="btn btn-danger btn-sm hidden ml-12">
|
|
@@ -12,6 +12,9 @@
|
|
|
12
12
|
</div>
|
|
13
13
|
</div>
|
|
14
14
|
<% end %>
|
|
15
|
+
<div class="variants-table__body__cell column-thumbnail pr-2" data-slot="variantThumbnail">
|
|
16
|
+
<%= render 'spree/admin/shared/no_image', width: 36, height: 36 %>
|
|
17
|
+
</div>
|
|
15
18
|
<div class="variants-table__body__cell column-variant" data-slot="variantName">
|
|
16
19
|
Medium
|
|
17
20
|
</div>
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
<% badge_name ||= label %>
|
|
3
3
|
<% placeholder ||= [Spree.t(:search), controller_name.humanize.downcase].join(' ') %>
|
|
4
4
|
|
|
5
|
-
<div class="form-input flex items-center py-0 focus-within:outline-2 focus-within:outline-offset-2 focus-within:outline-blue-500 grow max-lg:max-w-[300px] mr-auto
|
|
5
|
+
<div class="form-input flex items-center py-0 focus-within:outline-2 focus-within:outline-offset-2 focus-within:outline-blue-500 grow max-lg:max-w-[300px] mr-auto max-lg:mb-4 transition-all duration-100 ease-in-out" id="filters-search-bar">
|
|
6
6
|
<%= icon "search", class: "mr-4 text-gray-600" %>
|
|
7
7
|
<%= search_field_tag "q[#{param}]", params.dig(:q, param), class: "outline-none border-0 h-full focus:border-0 focus:ring-0 p-0 text-base w-full", placeholder: placeholder, data: { filters_target: :input, badge_name: badge_name } %>
|
|
8
8
|
</div>
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
|
|
20
20
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
21
21
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
22
|
-
<link href="https://fonts.googleapis.com/css2?family=
|
|
22
|
+
<link href="https://fonts.googleapis.com/css2?family=Geist+Mono:wght@100..900&family=Geist:wght@100..900&display=swap" rel="stylesheet">
|
|
23
23
|
|
|
24
24
|
<%= stylesheet_link_tag 'spree/admin/application', media: :all, data: { turbo_track: "reload" } %>
|
|
25
25
|
<%= tinymce_assets %>
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
<%= form_with model: @shipment, url: spree.admin_order_shipment_path(@order, @shipment), class: "w-full flex justify-between items-center" do |f| %>
|
|
3
3
|
<div>
|
|
4
4
|
<%= f.select :selected_shipping_rate_id, options_for_select(@shipment.shipping_rates.map {|sr| ["#{sr.name} #{sr.display_price}", sr.id] }, @shipment.selected_shipping_rate_id),
|
|
5
|
-
{}, class: 'form-select', autofocus: true %>
|
|
5
|
+
{}, class: 'form-select form-select-sm', autofocus: true %>
|
|
6
6
|
</div>
|
|
7
7
|
<div class="flex h-full items-center gap-2">
|
|
8
8
|
<% if can? :update, @shipment %>
|
|
9
|
-
<%= turbo_save_button_tag Spree.t('actions.save'), data: { turbo_frame: :_top }, type: :submit, class: 'btn btn-primary' %>
|
|
10
|
-
<%= link_to Spree.t('actions.discard'), spree.edit_admin_order_path(@order), class: "btn btn-light" %>
|
|
9
|
+
<%= turbo_save_button_tag Spree.t('actions.save'), data: { turbo_frame: :_top }, type: :submit, class: 'btn btn-sm btn-primary' %>
|
|
10
|
+
<%= link_to Spree.t('actions.discard'), spree.edit_admin_order_path(@order), class: "btn btn-sm btn-light" %>
|
|
11
11
|
<% end %>
|
|
12
12
|
</div>
|
|
13
13
|
<% end %>
|
|
@@ -16,12 +16,12 @@
|
|
|
16
16
|
<%= form_with model: @shipment, url: spree.admin_order_shipment_path(@order, @shipment), class: "w-full py-1 flex justify-between items-center" do |f| %>
|
|
17
17
|
<div class="flex items-center text-nowrap gap-x-3 items-center grow mr-3">
|
|
18
18
|
<%= f.label :tracking, Spree.t(:tracking_number), class: 'mb-0' %>
|
|
19
|
-
<%= f.text_field :tracking, class: 'form-input', required: true, autofocus: true %>
|
|
19
|
+
<%= f.text_field :tracking, class: 'form-input form-input-sm', required: true, autofocus: true %>
|
|
20
20
|
</div>
|
|
21
21
|
<div class="flex h-full items-center gap-2">
|
|
22
22
|
<% if can? :update, @shipment %>
|
|
23
|
-
<%= turbo_save_button_tag Spree.t('actions.save'), data: { turbo_frame: dom_id(@shipment) }, type: :submit, class: 'btn btn-primary' %>
|
|
24
|
-
<%= link_to Spree.t('actions.discard'), spree.edit_admin_order_path(@order), class: "btn btn-light" %>
|
|
23
|
+
<%= turbo_save_button_tag Spree.t('actions.save'), data: { turbo_frame: dom_id(@shipment) }, type: :submit, class: 'btn btn-sm btn-primary' %>
|
|
24
|
+
<%= link_to Spree.t('actions.discard'), spree.edit_admin_order_path(@order), class: "btn btn-sm btn-light" %>
|
|
25
25
|
<% end %>
|
|
26
26
|
</div>
|
|
27
27
|
<% end %>
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
<%= hidden_field_tag :redirect_url, request.fullpath %>
|
|
8
8
|
|
|
9
9
|
<%= dropdown(portal: false) do %>
|
|
10
|
-
<%= dropdown_toggle(class: 'btn-light btn-sm
|
|
10
|
+
<%= dropdown_toggle(class: 'btn-light btn-sm') do %>
|
|
11
11
|
<%= icon 'columns-3' %>
|
|
12
12
|
<span><%= Spree.t('admin.tables.columns') %></span>
|
|
13
13
|
<%= icon 'chevron-down' %>
|
|
@@ -11,11 +11,11 @@
|
|
|
11
11
|
<%= render 'spree/admin/shared/export_modal', export_type: export_type %>
|
|
12
12
|
<% end %>
|
|
13
13
|
<div class="<%= local_assigns[:container_class] || 'card-lg' %>" data-controller="table" data-table-url-value="<%= request.path %>">
|
|
14
|
-
<div class="p-
|
|
14
|
+
<div class="p-2 border-b border-gray-200">
|
|
15
15
|
<div class="flex flex-col lg:flex-row gap-3 items-start lg:items-center justify-between">
|
|
16
16
|
<div class="flex gap-2 items-center flex-wrap">
|
|
17
17
|
<%= search_form_for @search, url: url_for, html: { data: { turbo_frame: frame_name, turbo_action: 'advance', controller: 'auto-submit search-clear', auto_submit_delay_value: 300 } } do |f| %>
|
|
18
|
-
<div class="form-input flex items-center py-0 pr-1 focus-within:outline-2 focus-within:outline-offset-2 focus-within:outline-blue-500 lg:w-[300px] mr-auto h-[
|
|
18
|
+
<div class="form-input flex items-center py-0 pr-1 focus-within:outline-2 focus-within:outline-offset-2 focus-within:outline-blue-500 lg:w-[300px] mr-auto h-[2rem] transition-all duration-100 ease-in-out">
|
|
19
19
|
<%= icon "search", class: "mr-4 text-gray-600 shrink-0" %>
|
|
20
20
|
<%= search_field_tag "q[#{search_param}]",
|
|
21
21
|
params.dig(:q, search_param),
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
date_to_input_name: "q[#{date_range_param}_lt]",
|
|
56
56
|
date_from_value: params.dig(:q, :"#{date_range_param}_gt"),
|
|
57
57
|
date_to_value: params.dig(:q, :"#{date_range_param}_lt"),
|
|
58
|
-
css_classes: "btn-light btn-sm
|
|
58
|
+
css_classes: "btn-light btn-sm" %>
|
|
59
59
|
<%# Preserve search and filter state when submitting date range %>
|
|
60
60
|
<% if params.dig(:q, search_param).present? %>
|
|
61
61
|
<%= hidden_field_tag "q[#{search_param}]", params.dig(:q, search_param) %>
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
<p class="text-center mb-3"><%= Spree.t('admin.translations.no_translations_configured') %></p>
|
|
33
33
|
|
|
34
34
|
<% if can?(:edit, current_store) %>
|
|
35
|
-
<%= link_to_with_icon 'world', Spree.t('admin.
|
|
35
|
+
<%= link_to_with_icon 'world', Spree.t('admin.manage_markets'), spree.admin_markets_path, class: 'btn btn-primary', data: { 'turbo-frame': '_top' } %>
|
|
36
36
|
<% end %>
|
|
37
37
|
</div>
|
|
38
38
|
</div>
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
</h5>
|
|
6
6
|
|
|
7
7
|
<% if can?(:manage, Spree::Store) %>
|
|
8
|
-
<%= link_to_with_icon '
|
|
8
|
+
<%= link_to_with_icon 'world', Spree.t('admin.manage_markets'), spree.admin_markets_path, class: 'btn btn-sm btn-light' %>
|
|
9
9
|
<% end %>
|
|
10
10
|
</div>
|
|
11
11
|
<div class="card-body p-0">
|
data/config/locales/en.yml
CHANGED
|
@@ -143,7 +143,7 @@ en:
|
|
|
143
143
|
page_subtitle: Connect your store to third-party services to enhance customer experience.
|
|
144
144
|
json_preview:
|
|
145
145
|
no_api_response: No API response found for this resource
|
|
146
|
-
|
|
146
|
+
manage_markets: Manage Markets
|
|
147
147
|
manage_properties: Manage Properties
|
|
148
148
|
manage_stock_locations: Manage Stock Locations
|
|
149
149
|
manage_taxons: Manage Categories
|
|
@@ -366,9 +366,8 @@ en:
|
|
|
366
366
|
manual: Manual
|
|
367
367
|
manual_info: Curate products manually. You can add or remove them in bulk.
|
|
368
368
|
translations:
|
|
369
|
-
manage_markets: Manage Markets
|
|
370
369
|
no_translations_configured: No translations configured. Please setup Markets to use translations.
|
|
371
|
-
upload_new_asset: Upload new
|
|
370
|
+
upload_new_asset: Upload new media
|
|
372
371
|
user:
|
|
373
372
|
last_order_placed: Last order placed
|
|
374
373
|
no_store_credit: Customer has no Store Credit available
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: spree_admin
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 5.4.0.
|
|
4
|
+
version: 5.4.0.rc6
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Vendo Connect Inc.
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-
|
|
11
|
+
date: 2026-04-04 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: spree
|
|
@@ -16,14 +16,14 @@ dependencies:
|
|
|
16
16
|
requirements:
|
|
17
17
|
- - ">="
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: 5.4.0.
|
|
19
|
+
version: 5.4.0.rc6
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
24
|
- - ">="
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: 5.4.0.
|
|
26
|
+
version: 5.4.0.rc6
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: active_link_to
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -1095,7 +1095,6 @@ files:
|
|
|
1095
1095
|
- config/locales/en.yml
|
|
1096
1096
|
- config/routes.rb
|
|
1097
1097
|
- config/tailwind.config.js
|
|
1098
|
-
- db/migrate/20250217171018_create_action_text_video_embeds.rb
|
|
1099
1098
|
- lib/generators/spree/admin/devise/devise_generator.rb
|
|
1100
1099
|
- lib/generators/spree/admin/install/install_generator.rb
|
|
1101
1100
|
- lib/generators/spree/admin/install/templates/app/assets/tailwind/spree_admin.css.tt
|
|
@@ -1170,9 +1169,9 @@ licenses:
|
|
|
1170
1169
|
- BSD-3-Clause
|
|
1171
1170
|
metadata:
|
|
1172
1171
|
bug_tracker_uri: https://github.com/spree/spree/issues
|
|
1173
|
-
changelog_uri: https://github.com/spree/spree/releases/tag/v5.4.0.
|
|
1172
|
+
changelog_uri: https://github.com/spree/spree/releases/tag/v5.4.0.rc6
|
|
1174
1173
|
documentation_uri: https://docs.spreecommerce.org/
|
|
1175
|
-
source_code_uri: https://github.com/spree/spree/tree/v5.4.0.
|
|
1174
|
+
source_code_uri: https://github.com/spree/spree/tree/v5.4.0.rc6
|
|
1176
1175
|
post_install_message:
|
|
1177
1176
|
rdoc_options: []
|
|
1178
1177
|
require_paths:
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
class CreateActionTextVideoEmbeds < ActiveRecord::Migration[6.1]
|
|
2
|
-
def change
|
|
3
|
-
create_table :action_text_video_embeds, if_not_exists: true do |t|
|
|
4
|
-
t.string :url, null: false
|
|
5
|
-
t.string :thumbnail_url, null: false
|
|
6
|
-
t.text :raw_html, null: false
|
|
7
|
-
|
|
8
|
-
t.timestamps
|
|
9
|
-
end
|
|
10
|
-
end
|
|
11
|
-
end
|