spree_frontend 4.1.3 → 4.1.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8d86ff5e025b67089cf9392a93b84465d0c950f635e0aa64b853880434e379ad
4
- data.tar.gz: ed91603a662f3fc1e6d6a18d08748e5e1c0cc499607652b6b5cb7e8788eff4e2
3
+ metadata.gz: c2d3e1b2a20d956cabfccd9cec656802fb73f4476132fb671872547153f48119
4
+ data.tar.gz: 320b77ae82bac0ddefe481fcc204c57a66b2ef8d3150ab5aa8177d93aeb0397b
5
5
  SHA512:
6
- metadata.gz: 7ee50ae2ae0a15cd68bf28f55820d528df630d9543301182027d60670f5e2ed1009476bd721b75c9c9be9870e2ecdd8ad82f808cd42346816a4e601a89f13200
7
- data.tar.gz: 92d1c2ef2541949d5116f84a28cf5b254b823cdf4fb2c6c07d7d9b2110968aa103d9d2e5e3779c3335f733c8e80e5e2f3017b66db1e1cc9a3c3dd0f64321189f
6
+ metadata.gz: 74053b67c46b9e580641840f65244cde9e3e38b9a0947a704022734706d9bee8d94d63ff72806c9d37fd58ff0c52612967cc65e5e190c1d5ea3ff39c0901e65b
7
+ data.tar.gz: 2120bc4a5b8ebeb1c09713e6b5834f2d9c966cfe80d481d0a2025a433a82693353a64edcd714f53f2615437bc4c0d4d13bd25df23ad2cfeb912e4c3a5d1beb2f
@@ -1,56 +1,54 @@
1
- (function ($) {
2
- $(document).ready(function () {
3
- if ($('.select_address').length > 0) {
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
- hide_address_form('billing')
7
- hide_address_form('shipping')
5
+ hide_address_form('billing');
6
+ hide_address_form('shipping');
8
7
 
9
- if ($('input#order_use_billing').is(':checked')) {
10
- $('#shipping .select_address').hide()
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
- $("input[name='order[ship_address_id]']:radio").change(function () {
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 (address_type) {
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 (address_type) {
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
- })(jQuery)
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";
@@ -149,7 +149,7 @@
149
149
  }
150
150
  hr {
151
151
  margin: 0;
152
- width: 33%;
152
+ flex: 1;
153
153
  border: 1px solid theme-color('info');
154
154
  }
155
155
  }
@@ -42,7 +42,7 @@
42
42
  }
43
43
  }
44
44
  &-continue-link {
45
- margin-top: 234px;
45
+ margin-top: 100px;
46
46
  margin-bottom: 30px;
47
47
  @include media-breakpoint-up(sm) {
48
48
  padding: 20px 12px;
@@ -0,0 +1,6 @@
1
+ #picturesModal {
2
+ .close {
3
+ right: 0;
4
+ z-index: 3;
5
+ }
6
+ }
@@ -1,6 +1,6 @@
1
1
  .plp {
2
2
  &-not-found-header {
3
- color: theme-color("dark-text");
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: theme-color("dark-text");
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: theme-color("dark-text");
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: theme-color("dark-text");
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: theme-color("light-background");
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: theme-color("light-background");
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: theme-color("dark-text");
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: theme-color("dark-text");
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: theme-color("dark-text");
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: theme-color("dark-text");
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: theme-color("light-background");
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: theme-color("secondary");
247
- border: solid 1px theme-color("secondary");
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: theme-color("dark-text");
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: theme-color("light-background");
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: theme-color("light-background");
273
+ background-color: $primary-background;
274
274
  border-bottom: none;
275
275
  cursor: pointer;
276
276
  &-arrow {
277
- color: theme-color("dark-test");
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: theme-color("dark-text");
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
- bottom: 30px;
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: 140px;
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: theme-color("light-background");
310
- border: solid 1px theme-color("secondary");
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
- content << content_tag('div', raw('<hr /><hr /><hr />'), class: "checkout-progress-steps-line state-#{@order.state}")
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 filtering_params
234
- static_filters = %w(keywords price sort_by)
234
+ def static_filters
235
+ @static_filters ||= Spree::Frontend::Config[:products_filters]
236
+ end
235
237
 
236
- available_option_types.map(&:filter_param).concat(static_filters)
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? }&.to_s
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.sku,
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 + [available_option_types, permitted_params, @taxon&.id] do %>
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 + [available_option_types, permitted_params, @taxon&.id] do %>
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 mb-2 plp-overlay-buttons pt-3">
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 @products.empty? %>
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
- <% cache cache_key_for_products(@products, 'json-ld') do %>
44
- <%= products_structured_data(@products) %>
44
+ <% unless products_empty %>
45
+ <% cache cache_key_for_products(@products, 'json-ld') do %>
46
+ <%= products_structured_data(@products) %>
47
+ <% end %>
45
48
  <% end %>
@@ -38,7 +38,7 @@
38
38
 
39
39
  <%= render partial: 'gallery_modal' %>
40
40
  </div>
41
- <div id="related-products" />
41
+ <div id="related-products"></div>
42
42
 
43
43
  <%= products_structured_data([@product]) %>
44
44
 
@@ -1,4 +1,4 @@
1
- <% cache base_cache_key + [ot_downcase_name, params_ot_downcase_name, permitted_params, @taxon&.id] do %>
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>
@@ -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.3
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-03-31 00:00:00.000000000 Z
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.3
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.3
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.3
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.3
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
- post_install_message:
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.0.6
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: []