spree_frontend 4.1.3 → 4.1.8
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/javascripts/spree/frontend/checkout/address_book.js +38 -40
- data/app/assets/javascripts/spree/frontend/views/spree/products/cart_form.js +6 -0
- data/app/assets/stylesheets/spree/frontend/application.scss +1 -0
- data/app/assets/stylesheets/spree/frontend/views/spree/checkout/edit.scss +1 -1
- data/app/assets/stylesheets/spree/frontend/views/spree/orders/edit.scss +1 -1
- data/app/assets/stylesheets/spree/frontend/views/spree/products/gallery_modal.scss +6 -0
- data/app/assets/stylesheets/spree/frontend/views/spree/products/index.scss +27 -22
- data/app/helpers/spree/frontend_helper.rb +12 -5
- data/app/helpers/spree/structured_data_helper.rb +6 -2
- data/app/models/spree/frontend_configuration.rb +2 -0
- data/app/views/spree/checkout/edit.html.erb +20 -0
- data/app/views/spree/products/_filters_desktop.html.erb +5 -1
- data/app/views/spree/products/_filters_mobile.html.erb +6 -2
- data/app/views/spree/products/_gallery_modal.html.erb +1 -1
- data/app/views/spree/products/_product.html.erb +1 -1
- data/app/views/spree/products/index.html.erb +6 -3
- data/app/views/spree/products/show.html.erb +1 -1
- data/app/views/spree/shared/_option_values.html.erb +1 -1
- data/app/views/spree/shared/_quantity_select.html.erb +1 -1
- data/spree_frontend.gemspec +11 -5
- metadata +16 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c2d3e1b2a20d956cabfccd9cec656802fb73f4476132fb671872547153f48119
|
4
|
+
data.tar.gz: 320b77ae82bac0ddefe481fcc204c57a66b2ef8d3150ab5aa8177d93aeb0397b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 74053b67c46b9e580641840f65244cde9e3e38b9a0947a704022734706d9bee8d94d63ff72806c9d37fd58ff0c52612967cc65e5e190c1d5ea3ff39c0901e65b
|
7
|
+
data.tar.gz: 2120bc4a5b8ebeb1c09713e6b5834f2d9c966cfe80d481d0a2025a433a82693353a64edcd714f53f2615437bc4c0d4d13bd25df23ad2cfeb912e4c3a5d1beb2f
|
@@ -1,56 +1,54 @@
|
|
1
|
-
(function ($) {
|
2
|
-
$(
|
3
|
-
|
4
|
-
$('input#order_use_billing').unbind('change')
|
1
|
+
Spree.ready(function ($) {
|
2
|
+
if ($('.select_address').length > 0) {
|
3
|
+
$('input#order_use_billing').unbind('change');
|
5
4
|
|
6
|
-
|
7
|
-
|
5
|
+
hide_address_form('billing');
|
6
|
+
hide_address_form('shipping');
|
8
7
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
$('input#order_use_billing').click(function () {
|
14
|
-
if ($(this).is(':checked')) {
|
15
|
-
$('#shipping .select_address').hide()
|
16
|
-
hide_address_form('shipping')
|
17
|
-
} else {
|
18
|
-
$('#shipping .select_address').show()
|
19
|
-
if ($("input[name='order[ship_address_id]']:checked").val() == '0') {
|
20
|
-
show_address_form('shipping')
|
21
|
-
} else {
|
22
|
-
hide_address_form('shipping')
|
23
|
-
}
|
24
|
-
}
|
25
|
-
})
|
26
|
-
|
27
|
-
$("input[name='order[bill_address_id]']:radio").change(function () {
|
28
|
-
if ($("input[name='order[bill_address_id]']:checked").val() == '0') {
|
29
|
-
show_address_form('billing')
|
30
|
-
} else {
|
31
|
-
hide_address_form('billing')
|
32
|
-
}
|
33
|
-
})
|
8
|
+
if ($('input#order_use_billing').is(':checked')) {
|
9
|
+
$('#shipping .select_address').hide()
|
10
|
+
}
|
34
11
|
|
35
|
-
|
12
|
+
$('input#order_use_billing').click(function () {
|
13
|
+
if ($(this).is(':checked')) {
|
14
|
+
$('#shipping .select_address').hide()
|
15
|
+
hide_address_form('shipping')
|
16
|
+
} else {
|
17
|
+
$('#shipping .select_address').show()
|
36
18
|
if ($("input[name='order[ship_address_id]']:checked").val() == '0') {
|
37
19
|
show_address_form('shipping')
|
38
20
|
} else {
|
39
21
|
hide_address_form('shipping')
|
40
22
|
}
|
41
|
-
}
|
42
|
-
}
|
43
|
-
|
23
|
+
}
|
24
|
+
});
|
25
|
+
|
26
|
+
$("input[name='order[bill_address_id]']:radio").change(function () {
|
27
|
+
if ($("input[name='order[bill_address_id]']:checked").val() == '0') {
|
28
|
+
show_address_form('billing')
|
29
|
+
} else {
|
30
|
+
hide_address_form('billing')
|
31
|
+
}
|
32
|
+
});
|
33
|
+
|
34
|
+
$("input[name='order[ship_address_id]']:radio").change(function () {
|
35
|
+
if ($("input[name='order[ship_address_id]']:checked").val() == '0') {
|
36
|
+
show_address_form('shipping')
|
37
|
+
} else {
|
38
|
+
hide_address_form('shipping')
|
39
|
+
}
|
40
|
+
})
|
41
|
+
}
|
44
42
|
|
45
|
-
function hide_address_form
|
46
|
-
$('#' + address_type + ' .inner').hide()
|
43
|
+
function hide_address_form(address_type) {
|
44
|
+
$('#' + address_type + ' .inner').hide();
|
47
45
|
$('#' + address_type + ' .inner input').prop('disabled', true)
|
48
46
|
$('#' + address_type + ' .inner select').prop('disabled', true)
|
49
47
|
}
|
50
48
|
|
51
|
-
function show_address_form
|
52
|
-
$('#' + address_type + ' .inner').show()
|
49
|
+
function show_address_form(address_type) {
|
50
|
+
$('#' + address_type + ' .inner').show();
|
53
51
|
$('#' + address_type + ' .inner input').prop('disabled', false)
|
54
52
|
$('#' + address_type + ' .inner select').prop('disabled', false)
|
55
53
|
}
|
56
|
-
})
|
54
|
+
});
|
@@ -266,6 +266,12 @@ Spree.ready(function($) {
|
|
266
266
|
Spree.showProductAddedModal(JSON.parse(
|
267
267
|
$cartForm.attr('data-product-summary')
|
268
268
|
), Spree.variantById($cartForm, variantId))
|
269
|
+
$cartForm.trigger({
|
270
|
+
type: 'product_add_to_cart',
|
271
|
+
variant: Spree.variantById($cartForm, variantId),
|
272
|
+
quantity_increment: quantity,
|
273
|
+
cart: response.attributes
|
274
|
+
})
|
269
275
|
},
|
270
276
|
function(error) {
|
271
277
|
if (typeof error === 'string' && error !== '') {
|
@@ -47,6 +47,7 @@
|
|
47
47
|
@import "spree/frontend/views/spree/shared/product";
|
48
48
|
@import "spree/frontend/views/spree/products/show";
|
49
49
|
@import "spree/frontend/views/spree/products/cart_form";
|
50
|
+
@import "spree/frontend/views/spree/products/gallery_modal";
|
50
51
|
@import "spree/frontend/views/spree/shared/product_added_modal";
|
51
52
|
@import "spree/frontend/views/spree/shared/mobile_navigation";
|
52
53
|
@import "spree/frontend/views/spree/shared/no_product_available";
|
@@ -1,6 +1,6 @@
|
|
1
1
|
.plp {
|
2
2
|
&-not-found-header {
|
3
|
-
color:
|
3
|
+
color: $font-color;
|
4
4
|
font-size: font-px-to-rem(18px);
|
5
5
|
font-weight: 500;
|
6
6
|
letter-spacing: 0.45px;
|
@@ -30,7 +30,7 @@
|
|
30
30
|
}
|
31
31
|
|
32
32
|
&-not-found-text {
|
33
|
-
color:
|
33
|
+
color: $font-color;
|
34
34
|
margin-bottom: 350px;
|
35
35
|
font-size: font-px-to-rem(14px);
|
36
36
|
font-weight: 500;
|
@@ -50,7 +50,7 @@
|
|
50
50
|
height: 60px;
|
51
51
|
display: flex;
|
52
52
|
align-items: center;
|
53
|
-
color:
|
53
|
+
color: $font-color;
|
54
54
|
@include media-breakpoint-up("md") {
|
55
55
|
font-size: font-px-to-rem(32px);
|
56
56
|
}
|
@@ -68,7 +68,7 @@
|
|
68
68
|
}
|
69
69
|
|
70
70
|
&-buttons {
|
71
|
-
color:
|
71
|
+
color: $font-color;
|
72
72
|
display: flex;
|
73
73
|
align-items: center;
|
74
74
|
justify-content: space-between;
|
@@ -92,7 +92,7 @@
|
|
92
92
|
top: $spree-plp-filter-desktop-position;
|
93
93
|
left: 0;
|
94
94
|
&-card {
|
95
|
-
background-color:
|
95
|
+
background-color: $primary-background;
|
96
96
|
border: none;
|
97
97
|
a:hover {
|
98
98
|
text-decoration: none;
|
@@ -104,7 +104,7 @@
|
|
104
104
|
}
|
105
105
|
}
|
106
106
|
&-header {
|
107
|
-
background-color:
|
107
|
+
background-color: $primary-background;
|
108
108
|
border-color: $global-border-style;
|
109
109
|
cursor: pointer;
|
110
110
|
font-size: font-px-to-rem(17px);
|
@@ -125,7 +125,7 @@
|
|
125
125
|
}
|
126
126
|
&-item {
|
127
127
|
border: solid 1px $second-global-border;
|
128
|
-
color:
|
128
|
+
color: $font-color;
|
129
129
|
font-size: font-px-to-rem(16px);
|
130
130
|
font-weight: 500;
|
131
131
|
&--selected {
|
@@ -154,7 +154,7 @@
|
|
154
154
|
&-li--active {
|
155
155
|
list-style: none;
|
156
156
|
a {
|
157
|
-
color:
|
157
|
+
color: $font-color;
|
158
158
|
}
|
159
159
|
}
|
160
160
|
&-li--active {
|
@@ -186,7 +186,7 @@
|
|
186
186
|
}
|
187
187
|
}
|
188
188
|
a {
|
189
|
-
color:
|
189
|
+
color: $font-color;
|
190
190
|
border-color: $global-border-style !important;
|
191
191
|
padding: 5px 13px;
|
192
192
|
min-width: 37px;
|
@@ -207,7 +207,7 @@
|
|
207
207
|
}
|
208
208
|
|
209
209
|
&-overlay {
|
210
|
-
color:
|
210
|
+
color: $font-color;
|
211
211
|
position: fixed;
|
212
212
|
width: 100%;
|
213
213
|
height: 100%;
|
@@ -216,7 +216,7 @@
|
|
216
216
|
right: 0;
|
217
217
|
bottom: 0;
|
218
218
|
z-index: 999;
|
219
|
-
background-color:
|
219
|
+
background-color: $primary-background;
|
220
220
|
|
221
221
|
&-header {
|
222
222
|
height: 60px;
|
@@ -243,13 +243,13 @@
|
|
243
243
|
height: 12px;
|
244
244
|
margin-top: 2px;
|
245
245
|
margin-left: 2px;
|
246
|
-
background-color:
|
247
|
-
border: solid 1px
|
246
|
+
background-color: $secondary-color;
|
247
|
+
border: solid 1px $secondary-color;
|
248
248
|
border-radius: 50%;
|
249
249
|
}
|
250
250
|
}
|
251
251
|
a {
|
252
|
-
color:
|
252
|
+
color: $font-color;
|
253
253
|
&:hover {
|
254
254
|
text-decoration: none;
|
255
255
|
}
|
@@ -263,25 +263,25 @@
|
|
263
263
|
&-card {
|
264
264
|
border: none;
|
265
265
|
border-top: solid 1px $global-border-style;
|
266
|
-
background-color:
|
266
|
+
background-color: $primary-background;
|
267
267
|
&-header.collapsed {
|
268
268
|
.arrow {
|
269
269
|
transform: rotate(90deg);
|
270
270
|
}
|
271
271
|
}
|
272
272
|
&-header {
|
273
|
-
background-color:
|
273
|
+
background-color: $primary-background;
|
274
274
|
border-bottom: none;
|
275
275
|
cursor: pointer;
|
276
276
|
&-arrow {
|
277
|
-
color:
|
277
|
+
color: $font-color;
|
278
278
|
transform: rotate(-90deg);
|
279
279
|
}
|
280
280
|
}
|
281
281
|
|
282
282
|
&-item {
|
283
283
|
border: solid 1px $second-global-border;
|
284
|
-
color:
|
284
|
+
color: $font-color;
|
285
285
|
font-size: font-px-to-rem(13px);
|
286
286
|
&--selected {
|
287
287
|
border: solid 2px $secondary-color;
|
@@ -295,19 +295,24 @@
|
|
295
295
|
}
|
296
296
|
}
|
297
297
|
&-buttons {
|
298
|
-
|
298
|
+
background-color: $primary-background;
|
299
|
+
padding-bottom: 30px;
|
300
|
+
bottom: 0px;
|
299
301
|
}
|
300
302
|
}
|
301
303
|
|
302
304
|
&-scroll {
|
303
305
|
max-height: 100%;
|
304
306
|
overflow-y: auto;
|
305
|
-
padding-bottom:
|
307
|
+
padding-bottom: 150px;
|
308
|
+
@include media-breakpoint-up('sm') {
|
309
|
+
padding-bottom: 220px;
|
310
|
+
}
|
306
311
|
}
|
307
312
|
|
308
313
|
&-empty-dot {
|
309
|
-
background-color:
|
310
|
-
border: solid 1px
|
314
|
+
background-color: $primary-background;
|
315
|
+
border: solid 1px $secondary-color;
|
311
316
|
border-radius: 50%;
|
312
317
|
display: inline-block;
|
313
318
|
margin-right: 16px;
|
@@ -101,7 +101,8 @@ module Spree
|
|
101
101
|
end
|
102
102
|
end
|
103
103
|
content = content_tag('ul', raw(items.join("\n")), class: 'nav justify-content-between checkout-progress-steps', id: "checkout-step-#{@order.state}")
|
104
|
-
|
104
|
+
hrs = '<hr />' * (states.length - 1)
|
105
|
+
content << content_tag('div', raw(hrs), class: "checkout-progress-steps-line state-#{@order.state}")
|
105
106
|
end
|
106
107
|
|
107
108
|
def flash_messages(opts = {})
|
@@ -230,14 +231,20 @@ module Spree
|
|
230
231
|
]
|
231
232
|
end
|
232
233
|
|
233
|
-
def
|
234
|
-
static_filters
|
234
|
+
def static_filters
|
235
|
+
@static_filters ||= Spree::Frontend::Config[:products_filters]
|
236
|
+
end
|
235
237
|
|
236
|
-
|
238
|
+
def additional_filters_partials
|
239
|
+
@additional_filters_partials ||= Spree::Frontend::Config[:additional_filters_partials]
|
240
|
+
end
|
241
|
+
|
242
|
+
def filtering_params
|
243
|
+
@filtering_params ||= available_option_types.map(&:filter_param).concat(static_filters)
|
237
244
|
end
|
238
245
|
|
239
246
|
def filtering_params_cache_key
|
240
|
-
params.permit(*filtering_params)&.reject { |_, v| v.blank? }&.
|
247
|
+
@filtering_params_cache_key ||= params.permit(*filtering_params)&.reject { |_, v| v.blank? }&.to_param
|
241
248
|
end
|
242
249
|
|
243
250
|
def available_option_types_cache_key
|
@@ -22,10 +22,10 @@ module Spree
|
|
22
22
|
name: product.name,
|
23
23
|
image: structured_images(product),
|
24
24
|
description: product.description,
|
25
|
-
sku: product
|
25
|
+
sku: structured_sku(product),
|
26
26
|
offers: {
|
27
27
|
'@type': 'Offer',
|
28
|
-
price: product.price_in(current_currency).amount,
|
28
|
+
price: product.default_variant.price_in(current_currency).amount,
|
29
29
|
priceCurrency: current_currency,
|
30
30
|
availability: product.in_stock? ? 'InStock' : 'OutOfStock',
|
31
31
|
url: spree.product_url(product),
|
@@ -35,6 +35,10 @@ module Spree
|
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
|
+
def structured_sku(product)
|
39
|
+
product.default_variant.sku? ? product.default_variant.sku : product.sku
|
40
|
+
end
|
41
|
+
|
38
42
|
def structured_images(product)
|
39
43
|
image = default_image_for_product_or_variant(product)
|
40
44
|
|
@@ -2,6 +2,8 @@ module Spree
|
|
2
2
|
class FrontendConfiguration < Preferences::Configuration
|
3
3
|
preference :coupon_codes_enabled, :boolean, default: true # Determines if we show coupon code form at cart and checkout
|
4
4
|
preference :locale, :string, default: Rails.application.config.i18n.default_locale
|
5
|
+
preference :products_filters, :array, default: %w(keywords price sort_by)
|
6
|
+
preference :additional_filters_partials, :array, default: %w()
|
5
7
|
preference :remember_me_enabled, :boolean, default: true
|
6
8
|
end
|
7
9
|
end
|
@@ -1,5 +1,25 @@
|
|
1
1
|
<% @body_id = 'checkout-page' %>
|
2
2
|
|
3
|
+
<%
|
4
|
+
content_for :head do
|
5
|
+
agent = request.env['HTTP_USER_AGENT']
|
6
|
+
if agent =~ /Safari/ && !(agent =~ /Chrome/)
|
7
|
+
%>
|
8
|
+
<script>
|
9
|
+
if (!!window.performance && window.performance.navigation.type === 2) {
|
10
|
+
window.location.reload();
|
11
|
+
}
|
12
|
+
window.onpageshow = function(event) {
|
13
|
+
if (event.persisted) {
|
14
|
+
window.location.reload()
|
15
|
+
}
|
16
|
+
}
|
17
|
+
</script>
|
18
|
+
<%
|
19
|
+
end
|
20
|
+
end
|
21
|
+
%>
|
22
|
+
|
3
23
|
<div id="checkout" class="container checkout" data-hook>
|
4
24
|
<%= render partial: 'spree/shared/error_messages', locals: { target: @order } %>
|
5
25
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<% cache base_cache_key + [
|
1
|
+
<% cache base_cache_key + [available_option_types_cache_key, filtering_params_cache_key, @taxon&.id] do %>
|
2
2
|
<div id="plp-filters-accordion" class="d-none d-lg-block col-lg-3 pr-5 position-sticky h-100 plp-filters" data-hook="taxon_sidebar_navigation">
|
3
3
|
<% @available_option_types.each do |option_type| %>
|
4
4
|
<div class="w-100 card plp-filters-card">
|
@@ -53,6 +53,10 @@
|
|
53
53
|
<% end %>
|
54
54
|
</div>
|
55
55
|
</div>
|
56
|
+
|
57
|
+
<% additional_filters_partials.each do |partial| %>
|
58
|
+
<%= render "spree/products/filters/#{partial}", permitted_params: permitted_params %>
|
59
|
+
<% end %>
|
56
60
|
</div>
|
57
61
|
</div>
|
58
62
|
<% end %>
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<% is_visible = params[:menu_open] ? 'block' : 'none' %>
|
2
2
|
|
3
3
|
<div id="filter-by-overlay" class="d-lg-none plp-overlay" style="display: <%= is_visible %>;">
|
4
|
-
<% cache base_cache_key + [
|
4
|
+
<% cache base_cache_key + [available_option_types_cache_key, filtering_params_cache_key, @taxon&.id] do %>
|
5
5
|
<div class="plp-scroll">
|
6
6
|
<div class="container">
|
7
7
|
<div class="plp-overlay-header">
|
@@ -51,11 +51,15 @@
|
|
51
51
|
</div>
|
52
52
|
</div>
|
53
53
|
</div>
|
54
|
+
|
55
|
+
<% additional_filters_partials.each do |partial| %>
|
56
|
+
<%= render "spree/products/filters/mobile/#{partial}", permitted_params: permitted_params %>
|
57
|
+
<% end %>
|
54
58
|
</div>
|
55
59
|
</div>
|
56
60
|
<% end %>
|
57
61
|
|
58
|
-
<div class="container position-absolute text-center
|
62
|
+
<div class="container position-absolute text-center plp-overlay-buttons pt-3">
|
59
63
|
<%= link_to Spree.t('plp.clear_all'), permitted_params.select { |key, value| key == "sort_by"}, class: 'btn spree-btn btn-outline-primary w-100 mb-4' %>
|
60
64
|
<%= link_to Spree.t('plp.done'), permitted_params, class: 'btn btn-primary spree-btn w-100' %>
|
61
65
|
</div>
|
@@ -3,7 +3,7 @@
|
|
3
3
|
<div class="modal-dialog--zoom modal-dialog mw-100 vh-100 mt-0 mb-0" role="document">
|
4
4
|
<div class="modal-content h-100">
|
5
5
|
<div class="modal-body h-100">
|
6
|
-
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
6
|
+
<button type="button" class="close position-absolute" data-dismiss="modal" aria-label="Close">
|
7
7
|
<span aria-hidden="true">
|
8
8
|
<%= icon(name: 'close',
|
9
9
|
classes: 'd-block d-lg-none',
|
@@ -10,7 +10,7 @@
|
|
10
10
|
<% end %>
|
11
11
|
</div>
|
12
12
|
<div class="card-footer text-center">
|
13
|
-
<span class="price selling lead" content="<%= price.nil? 0 : price.to_d %>">
|
13
|
+
<span class="price selling lead" content="<%= price.nil? ? 0 : price.to_d %>">
|
14
14
|
<%= display_price(product) %>
|
15
15
|
</span>
|
16
16
|
<span content="<%= current_currency %>"></span>
|
@@ -1,7 +1,8 @@
|
|
1
1
|
<% permitted_params = params.permit(*filtering_params) %>
|
2
|
+
<% products_empty = @products.empty? %>
|
2
3
|
|
3
4
|
<div data-hook="search_results">
|
4
|
-
<% if
|
5
|
+
<% if products_empty %>
|
5
6
|
<% if permitted_params[:keywords].present? && permitted_params.to_h.one? %>
|
6
7
|
<%= render 'spree/products/no_results' %>
|
7
8
|
<% else %>
|
@@ -40,6 +41,8 @@
|
|
40
41
|
<%= render 'spree/products/filters_mobile', permitted_params: permitted_params %>
|
41
42
|
<%= render 'spree/products/sort_mobile', permitted_params: permitted_params %>
|
42
43
|
|
43
|
-
<%
|
44
|
-
|
44
|
+
<% unless products_empty %>
|
45
|
+
<% cache cache_key_for_products(@products, 'json-ld') do %>
|
46
|
+
<%= products_structured_data(@products) %>
|
47
|
+
<% end %>
|
45
48
|
<% end %>
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<% cache base_cache_key + [ot_downcase_name, params_ot_downcase_name,
|
1
|
+
<% cache base_cache_key + [ot_downcase_name, params_ot_downcase_name, filtering_params_cache_key, @taxon&.id] do %>
|
2
2
|
<% selected_option_values = params_ot_downcase_name&.split(',')&.map(&:to_i) || [] %>
|
3
3
|
<% option_type.option_values.each do |option_value| %>
|
4
4
|
<% id = option_value.id %>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<%# TODO: Use in cart %>
|
2
2
|
<div class="d-flex quantity-select mx-auto mx-md-0">
|
3
3
|
<%= button_tag '-', type: 'button', class: "border-right-0 flex-grow-0 flex-shrink-0 py-0 px-3 quantity-select-decrease" %>
|
4
|
-
<%= number_field_tag input_name, 1, min: 1, class: "p-0 flex-grow-1 flex-shrink-1 text-center form-control border-left-0 border-right-0 quantity-select-value", 'aria-label': Spree.t('pdp.quantity') %>
|
4
|
+
<%= number_field_tag input_name, 1, min: 1, max: maximum_quantity, class: "p-0 flex-grow-1 flex-shrink-1 text-center form-control border-left-0 border-right-0 quantity-select-value", 'aria-label': Spree.t('pdp.quantity') %>
|
5
5
|
<%= button_tag '+', type: 'button', class: "border-left-0 flex-grow-0 flex-shrink-0 py-0 px-3 quantity-select-increase" %>
|
6
6
|
</div>
|
data/spree_frontend.gemspec
CHANGED
@@ -5,16 +5,22 @@ Gem::Specification.new do |s|
|
|
5
5
|
s.platform = Gem::Platform::RUBY
|
6
6
|
s.name = 'spree_frontend'
|
7
7
|
s.version = Spree.version
|
8
|
-
s.summary = 'Frontend e-commerce functionality for the Spree project.'
|
9
|
-
s.description = s.summary
|
10
|
-
|
11
|
-
s.required_ruby_version = '>= 2.5.0'
|
12
|
-
|
13
8
|
s.author = 'Sean Schofield'
|
14
9
|
s.email = 'sean@spreecommerce.com'
|
10
|
+
s.summary = 'Frontend e-commerce functionality for the Spree project.'
|
11
|
+
s.description = s.summary
|
15
12
|
s.homepage = 'http://spreecommerce.org'
|
16
13
|
s.license = 'BSD-3-Clause'
|
17
14
|
|
15
|
+
s.metadata = {
|
16
|
+
"bug_tracker_uri" => "https://github.com/spree/spree/issues",
|
17
|
+
"changelog_uri" => "https://github.com/spree/spree/releases/tag/v#{s.version}",
|
18
|
+
"documentation_uri" => "https://guides.spreecommerce.org/",
|
19
|
+
"source_code_uri" => "https://github.com/spree/spree/tree/v#{s.version}",
|
20
|
+
}
|
21
|
+
|
22
|
+
s.required_ruby_version = '>= 2.5.0'
|
23
|
+
|
18
24
|
s.files = `git ls-files`.split("\n").reject { |f| f.match(/^spec/) && !f.match(/^spec\/fixtures/) }
|
19
25
|
s.require_path = 'lib'
|
20
26
|
s.requirements << 'none'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spree_frontend
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.1.
|
4
|
+
version: 4.1.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sean Schofield
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-08-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: spree_api
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 4.1.
|
19
|
+
version: 4.1.8
|
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: 4.1.
|
26
|
+
version: 4.1.8
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: spree_core
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - '='
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 4.1.
|
33
|
+
version: 4.1.8
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - '='
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 4.1.
|
40
|
+
version: 4.1.8
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: bootstrap
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -333,6 +333,7 @@ files:
|
|
333
333
|
- app/assets/stylesheets/spree/frontend/views/spree/orders/edit.scss
|
334
334
|
- app/assets/stylesheets/spree/frontend/views/spree/orders/show.scss
|
335
335
|
- app/assets/stylesheets/spree/frontend/views/spree/products/cart_form.scss
|
336
|
+
- app/assets/stylesheets/spree/frontend/views/spree/products/gallery_modal.scss
|
336
337
|
- app/assets/stylesheets/spree/frontend/views/spree/products/index.scss
|
337
338
|
- app/assets/stylesheets/spree/frontend/views/spree/products/show.scss
|
338
339
|
- app/assets/stylesheets/spree/frontend/views/spree/shared/_color_select.scss
|
@@ -498,8 +499,12 @@ files:
|
|
498
499
|
homepage: http://spreecommerce.org
|
499
500
|
licenses:
|
500
501
|
- BSD-3-Clause
|
501
|
-
metadata:
|
502
|
-
|
502
|
+
metadata:
|
503
|
+
bug_tracker_uri: https://github.com/spree/spree/issues
|
504
|
+
changelog_uri: https://github.com/spree/spree/releases/tag/v4.1.8
|
505
|
+
documentation_uri: https://guides.spreecommerce.org/
|
506
|
+
source_code_uri: https://github.com/spree/spree/tree/v4.1.8
|
507
|
+
post_install_message:
|
503
508
|
rdoc_options: []
|
504
509
|
require_paths:
|
505
510
|
- lib
|
@@ -515,8 +520,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
515
520
|
version: '0'
|
516
521
|
requirements:
|
517
522
|
- none
|
518
|
-
rubygems_version: 3.
|
519
|
-
signing_key:
|
523
|
+
rubygems_version: 3.1.2
|
524
|
+
signing_key:
|
520
525
|
specification_version: 4
|
521
526
|
summary: Frontend e-commerce functionality for the Spree project.
|
522
527
|
test_files: []
|