spree_storefront 5.2.5 → 5.2.6
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/controllers/concerns/spree/cart_methods.rb +4 -2
- data/app/controllers/spree/account/orders_controller.rb +1 -1
- data/app/controllers/spree/addresses_controller.rb +2 -2
- data/app/controllers/spree/checkout_controller.rb +14 -8
- data/app/controllers/spree/line_items_controller.rb +3 -3
- data/app/controllers/spree/order_status_controller.rb +1 -1
- data/app/controllers/spree/orders_controller.rb +3 -3
- data/app/controllers/spree/store_controller.rb +2 -1
- data/app/helpers/spree/canonical_url_helper.rb +27 -0
- data/app/helpers/spree/checkout_analytics_helper.rb +1 -4
- data/app/helpers/spree/checkout_helper.rb +3 -1
- data/app/helpers/spree/products_helper.rb +1 -1
- data/app/views/spree/checkout/_line_items.html.erb +3 -5
- data/app/views/themes/default/spree/page_sections/_footer.html.erb +6 -6
- data/app/views/themes/default/spree/page_sections/_header.html.erb +5 -2
- data/app/views/themes/default/spree/products/_quantity_selector.html.erb +6 -4
- data/app/views/themes/default/spree/products/_swiper.html.erb +2 -2
- data/app/views/themes/default/spree/products/_variant_options.html.erb +6 -2
- data/app/views/themes/default/spree/products/_variant_picker.html.erb +5 -3
- data/app/views/themes/default/spree/shared/_custom_head.html.erb +7 -0
- data/app/views/themes/default/spree/shared/_line_item_options.html.erb +1 -1
- data/app/views/themes/default/spree/shared/_search.html.erb +1 -1
- data/config/locales/en.yml +2 -0
- data/lib/generators/spree/storefront/install/templates/application.css +1 -4
- data/lib/spree/storefront.rb +0 -1
- metadata +6 -19
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c186ef5bda630498c3468d11a61144b479179026bb2178d341b1b10d85ede273
|
|
4
|
+
data.tar.gz: a83841e5ed48fb94a94511b5b6bf849b56ddbea3ed2ba3039e3b7854e17f52fc
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 169a0eead13f4e94330d83d93a30e5b66734d8d0a83b40365c24588649c02e040859a611636e1e90c11a119295fcac06f263b4ff89a6529b7795ff89872393ca
|
|
7
|
+
data.tar.gz: 793f3e4698d50a1f271225ac10cd2f2033774a3bf38bcfb76a8493bdb4c9ba9eec123a5e6d82ae2ec23fc10db6185a911dd1821b279c4795614cafd2bbdaee5b
|
|
@@ -39,12 +39,14 @@ module Spree
|
|
|
39
39
|
{
|
|
40
40
|
variant: [
|
|
41
41
|
:images,
|
|
42
|
+
:prices,
|
|
43
|
+
{ stock_items: :stock_location },
|
|
42
44
|
{ option_values: [:option_type] },
|
|
43
45
|
{
|
|
44
46
|
product: [
|
|
45
|
-
:variants,
|
|
46
47
|
:variant_images,
|
|
47
|
-
{ master: :images }
|
|
48
|
+
{ master: :images },
|
|
49
|
+
{ variants: :images }
|
|
48
50
|
]
|
|
49
51
|
}
|
|
50
52
|
]
|
|
@@ -92,11 +92,11 @@ module Spree
|
|
|
92
92
|
end
|
|
93
93
|
|
|
94
94
|
def create_service
|
|
95
|
-
Spree
|
|
95
|
+
Spree.address_create_service
|
|
96
96
|
end
|
|
97
97
|
|
|
98
98
|
def update_service
|
|
99
|
-
Spree
|
|
99
|
+
Spree.address_update_service
|
|
100
100
|
end
|
|
101
101
|
|
|
102
102
|
def load_and_authorize_address
|
|
@@ -196,8 +196,14 @@ module Spree
|
|
|
196
196
|
|
|
197
197
|
# completed orders shouldn't be updated anymore
|
|
198
198
|
unless @order.completed?
|
|
199
|
-
|
|
200
|
-
@order.
|
|
199
|
+
tracking_params = order_tracking_params
|
|
200
|
+
changed_params = tracking_params.reject { |key, value| @order.public_send(key) == value }
|
|
201
|
+
|
|
202
|
+
if changed_params.any?
|
|
203
|
+
@order.assign_attributes(changed_params)
|
|
204
|
+
@order.update_columns(changed_params)
|
|
205
|
+
end
|
|
206
|
+
|
|
201
207
|
@order.associate_user!(try_spree_current_user) if try_spree_current_user && @order.user.nil?
|
|
202
208
|
end
|
|
203
209
|
@current_order = @order # for compatibility with the rest of storefront, analytics, etc
|
|
@@ -342,7 +348,7 @@ module Spree
|
|
|
342
348
|
packages = @order.shipments.map(&:to_package)
|
|
343
349
|
@differentiator = Spree::Stock::Differentiator.new(@order, packages)
|
|
344
350
|
@differentiator.missing.each do |variant, quantity|
|
|
345
|
-
Spree
|
|
351
|
+
Spree.cart_remove_item_service.call(order: @order, variant: variant, quantity: quantity)
|
|
346
352
|
end
|
|
347
353
|
end
|
|
348
354
|
end
|
|
@@ -365,19 +371,19 @@ module Spree
|
|
|
365
371
|
end
|
|
366
372
|
|
|
367
373
|
def add_store_credit_service
|
|
368
|
-
Spree
|
|
374
|
+
Spree.checkout_add_store_credit_service
|
|
369
375
|
end
|
|
370
376
|
|
|
371
377
|
def remove_store_credit_service
|
|
372
|
-
Spree
|
|
378
|
+
Spree.checkout_remove_store_credit_service
|
|
373
379
|
end
|
|
374
380
|
|
|
375
381
|
def remove_line_item_service
|
|
376
|
-
Spree
|
|
382
|
+
Spree.cart_remove_line_item_service
|
|
377
383
|
end
|
|
378
384
|
|
|
379
385
|
def coupon_handler
|
|
380
|
-
Spree
|
|
386
|
+
Spree.coupon_handler
|
|
381
387
|
end
|
|
382
388
|
|
|
383
389
|
def accurate_title
|
|
@@ -387,7 +393,7 @@ module Spree
|
|
|
387
393
|
def remove_expired_gift_card
|
|
388
394
|
return unless @order.gift_card.present? && @order.gift_card.expired?
|
|
389
395
|
|
|
390
|
-
Spree
|
|
396
|
+
Spree.gift_card_remove_service.call(order: @order)
|
|
391
397
|
end
|
|
392
398
|
end
|
|
393
399
|
end
|
|
@@ -89,15 +89,15 @@ module Spree
|
|
|
89
89
|
end
|
|
90
90
|
|
|
91
91
|
def cart_add_item_service
|
|
92
|
-
Spree
|
|
92
|
+
Spree.cart_add_item_service
|
|
93
93
|
end
|
|
94
94
|
|
|
95
95
|
def cart_remove_line_item_service
|
|
96
|
-
Spree
|
|
96
|
+
Spree.cart_remove_line_item_service
|
|
97
97
|
end
|
|
98
98
|
|
|
99
99
|
def cart_set_item_quantity_service
|
|
100
|
-
Spree
|
|
100
|
+
Spree.cart_set_item_quantity_service
|
|
101
101
|
end
|
|
102
102
|
end
|
|
103
103
|
end
|
|
@@ -81,15 +81,15 @@ module Spree
|
|
|
81
81
|
end
|
|
82
82
|
|
|
83
83
|
def cart_remove_out_of_stock_items_service
|
|
84
|
-
Spree
|
|
84
|
+
Spree.cart_remove_out_of_stock_items_service
|
|
85
85
|
end
|
|
86
86
|
|
|
87
87
|
def cart_update_service
|
|
88
|
-
Spree
|
|
88
|
+
Spree.cart_update_service
|
|
89
89
|
end
|
|
90
90
|
|
|
91
91
|
def complete_order_finder
|
|
92
|
-
Spree
|
|
92
|
+
Spree.completed_order_finder
|
|
93
93
|
end
|
|
94
94
|
|
|
95
95
|
def remove_out_of_stock_items
|
|
@@ -15,6 +15,7 @@ module Spree
|
|
|
15
15
|
helper 'spree/base'
|
|
16
16
|
helper 'spree/locale'
|
|
17
17
|
helper 'spree/storefront_locale'
|
|
18
|
+
helper 'spree/canonical_url'
|
|
18
19
|
helper 'spree/currency'
|
|
19
20
|
helper 'spree/addresses'
|
|
20
21
|
helper 'spree/wishlist'
|
|
@@ -124,7 +125,7 @@ module Spree
|
|
|
124
125
|
end
|
|
125
126
|
|
|
126
127
|
def storefront_products_finder
|
|
127
|
-
@storefront_products_finder ||= Spree
|
|
128
|
+
@storefront_products_finder ||= Spree.products_finder
|
|
128
129
|
end
|
|
129
130
|
|
|
130
131
|
def storefront_products_scope
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module CanonicalUrlHelper
|
|
3
|
+
# Generates a canonical link tag for the current page
|
|
4
|
+
#
|
|
5
|
+
# @param host [String] The host/domain to use (defaults to current store's domain)
|
|
6
|
+
# @return [ActiveSupport::SafeBuffer] The canonical link tag HTML
|
|
7
|
+
def canonical_tag(host = nil)
|
|
8
|
+
tag.link(href: canonical_href(host), rel: :canonical)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# Returns the full canonical URL for the current request
|
|
12
|
+
#
|
|
13
|
+
# @param host [String] The host/domain to use (defaults to request host)
|
|
14
|
+
# @return [String] The full canonical URL
|
|
15
|
+
def canonical_href(host = nil)
|
|
16
|
+
host ||= request.host
|
|
17
|
+
"#{request.protocol}#{host}#{canonical_path}"
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# Returns the canonical path for the current request (without query parameters)
|
|
21
|
+
#
|
|
22
|
+
# @return [String] The canonical path
|
|
23
|
+
def canonical_path
|
|
24
|
+
request.path.presence || '/'
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -19,12 +19,9 @@ module Spree
|
|
|
19
19
|
end
|
|
20
20
|
|
|
21
21
|
def order_tracking_params
|
|
22
|
-
|
|
22
|
+
{
|
|
23
23
|
last_ip_address: request.remote_ip,
|
|
24
24
|
}
|
|
25
|
-
|
|
26
|
-
tracking_params[:ahoy_visit_id] = current_visit.id if @order.respond_to?(:ahoy_visit) && defined?(current_visit) && current_visit&.id
|
|
27
|
-
tracking_params
|
|
28
25
|
end
|
|
29
26
|
|
|
30
27
|
def track_checkout_started
|
|
@@ -49,7 +49,9 @@ module Spree
|
|
|
49
49
|
end
|
|
50
50
|
|
|
51
51
|
def quick_checkout_enabled?(order)
|
|
52
|
-
order.
|
|
52
|
+
Rails.cache.fetch("#{order.cache_key_with_version}/quick-checkout-enabled") do
|
|
53
|
+
order.quick_checkout_available?
|
|
54
|
+
end
|
|
53
55
|
end
|
|
54
56
|
|
|
55
57
|
def can_use_store_credit_on_checkout?(order)
|
|
@@ -147,7 +147,7 @@ module Spree
|
|
|
147
147
|
return Spree::Taxon.none if product.main_taxon.blank?
|
|
148
148
|
|
|
149
149
|
# using find_all as we already iterate over the taxons in #product_json_ld_breadcrumbs
|
|
150
|
-
product.main_taxon.self_and_ancestors.find_all { |taxon| taxon.depth != 0 }
|
|
150
|
+
product.main_taxon.self_and_ancestors.includes(:translations).find_all { |taxon| taxon.depth != 0 }
|
|
151
151
|
end
|
|
152
152
|
|
|
153
153
|
# Generates the JSON-LD elements for a list of products.
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
<%= turbo_frame_tag :checkout_line_items, id: 'line_items', target: '_top' do %>
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
</div>
|
|
6
|
-
<% end %>
|
|
2
|
+
<div class="overflow-y-auto line-items flex flex-col gap-5 pt-5 md:pt-0" data-checkout-summary-target="line_items">
|
|
3
|
+
<%= render collection: order.line_items, partial: 'spree/checkout/line_item', cached: spree_storefront_base_cache_scope %>
|
|
4
|
+
</div>
|
|
7
5
|
<% end %>
|
|
@@ -12,9 +12,9 @@
|
|
|
12
12
|
</div>
|
|
13
13
|
<div class="grid grid-cols-1 lg:grid-cols-4 grow w-full">
|
|
14
14
|
<% section.blocks.includes(:links).each do |block| %>
|
|
15
|
-
<
|
|
15
|
+
<nav class="flex-grow gap-1 flex flex-col py-6 md:py-0 border-b md:border-none border-default lg:mb-6" aria-label="<%= block.preferred_label %>">
|
|
16
16
|
<div <%= block_attributes(block) %>>
|
|
17
|
-
<
|
|
17
|
+
<div class="text-sm py-2"><%= block.preferred_label %></div>
|
|
18
18
|
<ul class="uppercase text-sm tracking-wider !leading-4 flex flex-col gap-1">
|
|
19
19
|
<% block.links.each do |link| %>
|
|
20
20
|
<li class='py-2'>
|
|
@@ -25,12 +25,12 @@
|
|
|
25
25
|
<% end %>
|
|
26
26
|
</ul>
|
|
27
27
|
</div>
|
|
28
|
-
</
|
|
28
|
+
</nav>
|
|
29
29
|
<% end %>
|
|
30
30
|
</div>
|
|
31
|
-
<
|
|
31
|
+
<nav class="flex-grow gap-4 flex flex-col justify-between lg:w-60" aria-label="<%= Spree.t(:follow_us) %>">
|
|
32
32
|
<div class="gap-1 flex flex-col py-6 md:py-0">
|
|
33
|
-
<
|
|
33
|
+
<div class="text-sm py-2"><%= Spree.t(:follow_us) %></div>
|
|
34
34
|
<div class="flex flex-wrap gap-2 max-w-48 py-2">
|
|
35
35
|
<% cache spree_storefront_base_cache_scope.call(current_store) do %>
|
|
36
36
|
<% Spree::Store::SUPPORTED_SOCIAL_NETWORKS.each do |media| %>
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
<% end %>
|
|
45
45
|
</div>
|
|
46
46
|
</div>
|
|
47
|
-
</
|
|
47
|
+
</nav>
|
|
48
48
|
</div>
|
|
49
49
|
<div class="flex justify-end w-full"></div>
|
|
50
50
|
</div>
|
|
@@ -103,11 +103,12 @@
|
|
|
103
103
|
<% if show_account_pane? %>
|
|
104
104
|
<button
|
|
105
105
|
data-action='click->slideover-account#toggle click@window->slideover-account#hide click->toggle-menu#hide touch->toggle-menu#hide'
|
|
106
|
+
aria-label='Open account panel'
|
|
106
107
|
>
|
|
107
108
|
<%= render 'spree/shared/icons/account', color: section.preferred_text_color, section: section %>
|
|
108
109
|
</button>
|
|
109
110
|
<% else %>
|
|
110
|
-
<%= link_to spree.account_path do %>
|
|
111
|
+
<%= link_to spree.account_path, 'aria-label': 'Open account panel' do %>
|
|
111
112
|
<%= render 'spree/shared/icons/account', color: section.preferred_text_color, section: section %>
|
|
112
113
|
<% end %>
|
|
113
114
|
<% end %>
|
|
@@ -117,12 +118,13 @@
|
|
|
117
118
|
<button
|
|
118
119
|
type="submit"
|
|
119
120
|
id="wishlist-icon"
|
|
121
|
+
aria-label='Open wishlist'
|
|
120
122
|
class="flex items-end">
|
|
121
123
|
<%= render 'spree/shared/wishlist_icon', wishlist: current_wishlist, background_color: section.preferred_background_color %>
|
|
122
124
|
</button>
|
|
123
125
|
<% end %>
|
|
124
126
|
<% else %>
|
|
125
|
-
<%= link_to spree.account_wishlist_path, id: "wishlist-icon" do %>
|
|
127
|
+
<%= link_to spree.account_wishlist_path, id: "wishlist-icon", 'aria-label': 'Open wishlist' do %>
|
|
126
128
|
<%= render 'spree/shared/wishlist_icon', background_color: section.preferred_background_color %>
|
|
127
129
|
<% end %>
|
|
128
130
|
<% end %>
|
|
@@ -141,6 +143,7 @@
|
|
|
141
143
|
data-toggle-menu-target='toggleable'
|
|
142
144
|
role='dialog'
|
|
143
145
|
aria-modal='true'
|
|
146
|
+
aria-label='Mobile menu'
|
|
144
147
|
>
|
|
145
148
|
<div
|
|
146
149
|
class='flex justify-between flex-col lg:hidden w-full transition-transform has-[.currency-and-locale-modal:not(.hidden)]:transform-none body header--mobile-menu'
|
|
@@ -5,19 +5,21 @@
|
|
|
5
5
|
<%= button_tag class: 'decrease-quantity',
|
|
6
6
|
type: 'button',
|
|
7
7
|
data: { action: 'click->quantity-picker#decrease',
|
|
8
|
-
'quantity-picker-target': 'decrease' }
|
|
8
|
+
'quantity-picker-target': 'decrease' },
|
|
9
|
+
aria: { label: Spree.t('storefront.products.decrease_quantity') } do %>
|
|
9
10
|
<%= render 'spree/shared/icons/minus' %>
|
|
10
11
|
<% end %>
|
|
11
12
|
<%= number_field_tag :quantity, 1,
|
|
12
13
|
min: 1,
|
|
13
14
|
max: selected_variant&.backorderable? ? nil : selected_variant&.total_on_hand,
|
|
14
15
|
class: 'quantity-input',
|
|
15
|
-
'
|
|
16
|
-
|
|
16
|
+
data: { 'quantity-picker-target': 'quantity' },
|
|
17
|
+
aria: { label: Spree.t(:quantity) } %>
|
|
17
18
|
<%= button_tag class: 'increase-quantity',
|
|
18
19
|
type: 'button',
|
|
19
20
|
data: { action: 'click->quantity-picker#increase',
|
|
20
|
-
'quantity-picker-target': 'increase' }
|
|
21
|
+
'quantity-picker-target': 'increase' },
|
|
22
|
+
aria: { label: Spree.t('storefront.products.increase_quantity') } do %>
|
|
21
23
|
<%= render 'spree/shared/icons/plus' %>
|
|
22
24
|
<% end %>
|
|
23
25
|
</div>
|
|
@@ -75,10 +75,10 @@
|
|
|
75
75
|
<% end %>
|
|
76
76
|
</div>
|
|
77
77
|
</div>
|
|
78
|
-
<%= button_tag class: "absolute p-2 bg-white rounded-full z-10 border border-accent left-0 disabled:hidden hover:border-primary ml-2 lg:ml-0 swiper-custom-button-prev-#{section.id} block #{arrows_on_top ? '' : 'md:hidden'} top-(--top) lg:top-(--desktop-top)",
|
|
78
|
+
<%= button_tag class: "absolute p-2 bg-white rounded-full z-10 border border-accent left-0 disabled:hidden hover:border-primary ml-2 lg:ml-0 swiper-custom-button-prev-#{section.id} block #{arrows_on_top ? '' : 'md:hidden'} top-(--top) lg:top-(--desktop-top)", style: "--top: calc(#{theme_setting('product_listing_image_height_mobile')}px/2); --desktop-top: calc(#{theme_setting('product_listing_image_height')}px/2); transform: translate(-50%, -50%);" do %>
|
|
79
79
|
<%= render 'spree/shared/icons/chevron' %>
|
|
80
80
|
<% end %>
|
|
81
|
-
<%= button_tag class: "absolute p-2 bg-white rounded-full z-10 border border-accent right-0 disabled:hidden hover:border-primary mr-2 lg:mr-0 swiper-custom-button-next-#{section.id} block #{arrows_on_top ? '' : 'md:hidden'} top-(--top) lg:top-(--desktop-top)",
|
|
81
|
+
<%= button_tag class: "absolute p-2 bg-white rounded-full z-10 border border-accent right-0 disabled:hidden hover:border-primary mr-2 lg:mr-0 swiper-custom-button-next-#{section.id} block #{arrows_on_top ? '' : 'md:hidden'} top-(--top) lg:top-(--desktop-top)", style: "--top: calc(#{theme_setting('product_listing_image_height_mobile')}px/2); --desktop-top: calc(#{theme_setting('product_listing_image_height')}px/2); transform: translate(50%, -50%);" do %>
|
|
82
82
|
<%= render 'spree/shared/icons/chevron_right' %>
|
|
83
83
|
<% end %>
|
|
84
84
|
</div>
|
|
@@ -32,8 +32,8 @@
|
|
|
32
32
|
<% end %>
|
|
33
33
|
<% end %>
|
|
34
34
|
<% if option_type.color? %>
|
|
35
|
-
<li>
|
|
36
|
-
<label class="cursor-pointer">
|
|
35
|
+
<li role="option" aria-label="<%= value.presentation %>">
|
|
36
|
+
<label class="cursor-pointer" aria-label="<%= value.presentation %>">
|
|
37
37
|
<%= radio_button_tag option_type.presentation, value.name, selected_option == value,
|
|
38
38
|
name: option_type.presentation,
|
|
39
39
|
id: "product-option-#{product.id}-#{position}-#{index}",
|
|
@@ -56,10 +56,14 @@
|
|
|
56
56
|
option_id: option_type.id
|
|
57
57
|
},
|
|
58
58
|
name: option_type.presentation,
|
|
59
|
+
role: 'menuitemradio',
|
|
60
|
+
aria: { label: value.presentation },
|
|
59
61
|
id: "product-option-#{product.id}-#{position}-#{index}"
|
|
60
62
|
%>
|
|
61
63
|
<label
|
|
62
64
|
for='product-option-<%= product.id %>-<%= position %>-<%= index %>'
|
|
65
|
+
role="menuitem"
|
|
66
|
+
aria-label="<%= value.presentation %>"
|
|
63
67
|
class='text-sm cursor-pointer flex items-center justify-between px-4 py-2.5 hover:bg-accent focus:outline-hidden focus:bg-accent transition duration-150 ease-in-out <%= option_disabled ? "opacity-50 cursor-not-allowed" : "hover:bg-accent" %>'
|
|
64
68
|
>
|
|
65
69
|
<p><%=h value.presentation %></p>
|
|
@@ -7,19 +7,20 @@
|
|
|
7
7
|
<%= option_type_colors_preview_styles(option_type).html_safe %>
|
|
8
8
|
<fieldset data-option-id="<%= option_type.id %>" class="flex flex-col gap-y-2">
|
|
9
9
|
<span class="text-sm leading-4 uppercase tracking-widest"><%= option_type.presentation %>: <%= selected_option.presentation %></span>
|
|
10
|
-
<ul class="flex items-center flex-wrap gap-1">
|
|
10
|
+
<ul class="flex items-center flex-wrap gap-1" role="listbox" aria-label="<%= option_type.presentation %>">
|
|
11
11
|
<%= render 'spree/products/variant_options', product: product, option_type: option_type, position: index, selected_variant: selected_variant, options_param_name: options_param_name %>
|
|
12
12
|
</ul>
|
|
13
13
|
</fieldset>
|
|
14
14
|
<% else %>
|
|
15
15
|
<fieldset data-option-id="<%= option_type.id %>">
|
|
16
|
-
<div data-controller="dropdown" class="relative mb-2">
|
|
16
|
+
<div data-controller="dropdown" class="relative mb-2" role="group" aria-label="<%= option_type.presentation %>">
|
|
17
17
|
<div class="flex items-center justify-between">
|
|
18
18
|
<button
|
|
19
19
|
data-action="click->dropdown#toggle click@window->dropdown#hide"
|
|
20
20
|
type='button'
|
|
21
21
|
class='text-sm uppercase tracking-widest flex gap-2 items-center border border-default py-2 px-4 rounded-input dropdown-button'
|
|
22
|
-
data-dropdown-target="button"
|
|
22
|
+
data-dropdown-target="button"
|
|
23
|
+
aria-label="<%= selected_option ? option_type.presentation+":"+selected_option.presentation : Spree.t('storefront.variant_picker.please_choose', option_type: option_type.presentation) %>">
|
|
23
24
|
<legend class="mr-2" id="option-<%= option_type.id %>-value">
|
|
24
25
|
<% if selected_option %>
|
|
25
26
|
<%= option_type.presentation %>: <span class="option-value-text"><%= selected_option.presentation %></span>
|
|
@@ -37,6 +38,7 @@
|
|
|
37
38
|
data-transition-leave="transition ease-in"
|
|
38
39
|
data-transition-leave-from="opacity-100 translate-y-0"
|
|
39
40
|
data-transition-leave-to="opacity-0 translate-y-1"
|
|
41
|
+
role="menu"
|
|
40
42
|
class="hidden absolute top-11 left-0 z-[9999] flex w-screen max-w-max shadow-xs">
|
|
41
43
|
<div class="bg-background border-default border overflow-hidden w-72">
|
|
42
44
|
<%= render 'spree/products/variant_options', product: product, option_type: option_type, position: index, selected_variant: selected_variant, options_param_name: options_param_name %>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<link rel="preconnect" href="https://esm.sh" crossorigin>
|
|
2
|
+
<link rel="dns-prefetch" href="https://esm.sh">
|
|
3
|
+
|
|
4
|
+
<link rel="preload" href="https://esm.sh/swiper@11.2.2/swiper-bundle.min.css" as="style" onload="this.onload=null;this.rel='stylesheet'">
|
|
5
|
+
<noscript><link rel="stylesheet" href="https://esm.sh/swiper@11.2.2/swiper-bundle.min.css"></noscript>
|
|
6
|
+
<link rel="preload" href="https://esm.sh/flag-icons@7.3.2/css/flag-icons.min.css" as="style" onload="this.onload=null;this.rel='stylesheet'">
|
|
7
|
+
<noscript><link rel="stylesheet" href="https://esm.sh/flag-icons@7.3.2/css/flag-icons.min.css"></noscript>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<div id="search-suggestions" role="dialog" aria-modal="true">
|
|
1
|
+
<div id="search-suggestions" role="dialog" aria-label="Search suggestions" aria-modal="true">
|
|
2
2
|
<div class='w-full flex flex-col border-b border-default' data-controller="search-suggestions" data-show-class="h-screen min-h-screen" data-search-suggestions-url-value="<%= spree.search_suggestions_path %>">
|
|
3
3
|
<div class='hidden lg:flex justify-center w-full mt-4 mb-3' id="header-logo">
|
|
4
4
|
<%= render 'spree/shared/logo', logo: logo, height: logo_height %>
|
data/config/locales/en.yml
CHANGED
|
@@ -59,6 +59,8 @@ en:
|
|
|
59
59
|
join: Email me about new products, sales, and more. You can unsubscribe at any time.
|
|
60
60
|
status: You are currently %{status} to the newsletters.
|
|
61
61
|
products:
|
|
62
|
+
decrease_quantity: Decrease quantity
|
|
63
|
+
increase_quantity: Increase quantity
|
|
62
64
|
pinch_to_zoom_html: Pinch to<br>zoom
|
|
63
65
|
primary_image: primary image
|
|
64
66
|
secondary_image: secondary image
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
@import url('https://esm.sh/swiper@11.2.2/swiper-bundle.min.css');
|
|
2
|
-
@import url('https://esm.sh/flag-icons@7.3.2/css/flag-icons.min.css');
|
|
3
|
-
|
|
4
1
|
@import 'tailwindcss';
|
|
5
2
|
@plugin "@tailwindcss/typography";
|
|
6
3
|
@plugin "@tailwindcss/forms";
|
|
@@ -135,7 +132,7 @@ html {
|
|
|
135
132
|
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
|
|
136
133
|
}
|
|
137
134
|
|
|
138
|
-
body .section-header {
|
|
135
|
+
body:not(.inside-page-builder) > div.section-header {
|
|
139
136
|
@apply sticky top-0 z-50;
|
|
140
137
|
}
|
|
141
138
|
|
data/lib/spree/storefront.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: spree_storefront
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 5.2.
|
|
4
|
+
version: 5.2.6
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Vendo Connect Inc.
|
|
@@ -15,14 +15,14 @@ dependencies:
|
|
|
15
15
|
requirements:
|
|
16
16
|
- - ">="
|
|
17
17
|
- !ruby/object:Gem::Version
|
|
18
|
-
version: 5.2.
|
|
18
|
+
version: 5.2.6
|
|
19
19
|
type: :runtime
|
|
20
20
|
prerelease: false
|
|
21
21
|
version_requirements: !ruby/object:Gem::Requirement
|
|
22
22
|
requirements:
|
|
23
23
|
- - ">="
|
|
24
24
|
- !ruby/object:Gem::Version
|
|
25
|
-
version: 5.2.
|
|
25
|
+
version: 5.2.6
|
|
26
26
|
- !ruby/object:Gem::Dependency
|
|
27
27
|
name: active_link_to
|
|
28
28
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -37,20 +37,6 @@ dependencies:
|
|
|
37
37
|
- - ">="
|
|
38
38
|
- !ruby/object:Gem::Version
|
|
39
39
|
version: '0'
|
|
40
|
-
- !ruby/object:Gem::Dependency
|
|
41
|
-
name: canonical-rails
|
|
42
|
-
requirement: !ruby/object:Gem::Requirement
|
|
43
|
-
requirements:
|
|
44
|
-
- - "~>"
|
|
45
|
-
- !ruby/object:Gem::Version
|
|
46
|
-
version: 0.2.14
|
|
47
|
-
type: :runtime
|
|
48
|
-
prerelease: false
|
|
49
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
50
|
-
requirements:
|
|
51
|
-
- - "~>"
|
|
52
|
-
- !ruby/object:Gem::Version
|
|
53
|
-
version: 0.2.14
|
|
54
40
|
- !ruby/object:Gem::Dependency
|
|
55
41
|
name: heroicon
|
|
56
42
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -225,6 +211,7 @@ files:
|
|
|
225
211
|
- app/controllers/spree/wishlists_controller.rb
|
|
226
212
|
- app/finders/spree/storefront/variant_finder.rb
|
|
227
213
|
- app/helpers/spree/analytics_helper.rb
|
|
214
|
+
- app/helpers/spree/canonical_url_helper.rb
|
|
228
215
|
- app/helpers/spree/cart_helper.rb
|
|
229
216
|
- app/helpers/spree/checkout_analytics_helper.rb
|
|
230
217
|
- app/helpers/spree/checkout_helper.rb
|
|
@@ -570,9 +557,9 @@ licenses:
|
|
|
570
557
|
- AGPL-3.0-or-later
|
|
571
558
|
metadata:
|
|
572
559
|
bug_tracker_uri: https://github.com/spree/spree/issues
|
|
573
|
-
changelog_uri: https://github.com/spree/spree/releases/tag/v5.2.
|
|
560
|
+
changelog_uri: https://github.com/spree/spree/releases/tag/v5.2.6
|
|
574
561
|
documentation_uri: https://docs.spreecommerce.org/
|
|
575
|
-
source_code_uri: https://github.com/spree/spree/tree/v5.2.
|
|
562
|
+
source_code_uri: https://github.com/spree/spree/tree/v5.2.6
|
|
576
563
|
rdoc_options: []
|
|
577
564
|
require_paths:
|
|
578
565
|
- lib
|