spree_frontend 4.2.0.rc4 → 4.2.0.rc5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/spree/frontend/checkout/shipment.js +15 -2
  3. data/app/assets/stylesheets/spree/frontend/views/spree/checkout/confirm.scss +27 -22
  4. data/app/assets/stylesheets/spree/frontend/views/spree/orders/show.scss +3 -0
  5. data/app/controllers/spree/products_controller.rb +1 -3
  6. data/app/controllers/spree/store_controller.rb +0 -8
  7. data/app/helpers/spree/frontend_helper.rb +10 -4
  8. data/app/helpers/spree/navigation_helper.rb +1 -1
  9. data/app/models/spree/frontend_configuration.rb +1 -1
  10. data/app/views/kaminari/twitter-bootstrap-4/_first_page.html.erb +2 -2
  11. data/app/views/kaminari/twitter-bootstrap-4/_gap.html.erb +2 -2
  12. data/app/views/kaminari/twitter-bootstrap-4/_last_page.html.erb +2 -2
  13. data/app/views/kaminari/twitter-bootstrap-4/_next_page.html.erb +2 -2
  14. data/app/views/kaminari/twitter-bootstrap-4/_page.html.erb +2 -2
  15. data/app/views/kaminari/twitter-bootstrap-4/_paginator.html.erb +2 -2
  16. data/app/views/kaminari/twitter-bootstrap-4/_prev_page.html.erb +2 -2
  17. data/app/views/spree/address/_form.html.erb +15 -16
  18. data/app/views/spree/addresses/edit.html.erb +2 -2
  19. data/app/views/spree/addresses/new.html.erb +2 -2
  20. data/app/views/spree/checkout/_address.html.erb +2 -2
  21. data/app/views/spree/checkout/_confirm.html.erb +1 -33
  22. data/app/views/spree/checkout/_credit_card.html.erb +2 -2
  23. data/app/views/spree/checkout/_delivery_informations.html.erb +43 -36
  24. data/app/views/spree/checkout/_summary.html.erb +3 -5
  25. data/app/views/spree/checkout/payment/_gateway.html.erb +1 -1
  26. data/app/views/spree/home/index.html.erb +21 -22
  27. data/app/views/spree/orders/_coupon_code.html.erb +2 -3
  28. data/app/views/spree/orders/_line_item.html.erb +1 -1
  29. data/app/views/spree/orders/_line_item_data.html.erb +1 -1
  30. data/app/views/spree/orders/edit.html.erb +2 -3
  31. data/app/views/spree/orders/show.html.erb +1 -71
  32. data/app/views/spree/products/_cart_form.html.erb +2 -3
  33. data/app/views/spree/products/_color_option_type.html.erb +1 -2
  34. data/app/views/spree/products/_filters_desktop.html.erb +1 -2
  35. data/app/views/spree/products/_gallery.html.erb +4 -6
  36. data/app/views/spree/products/_gallery_modal.html.erb +3 -5
  37. data/app/views/spree/products/_option_type.html.erb +1 -2
  38. data/app/views/spree/products/_sort_mobile.html.erb +4 -4
  39. data/app/views/spree/products/related.html.erb +11 -5
  40. data/app/views/spree/products/show.html.erb +1 -2
  41. data/app/views/spree/shared/_carousel_4_products.html.erb +6 -12
  42. data/app/views/spree/shared/_change_store.html.erb +3 -3
  43. data/app/views/spree/shared/_color_select.html.erb +3 -3
  44. data/app/views/spree/shared/_delete_address_popup.html.erb +1 -2
  45. data/app/views/spree/shared/_error_messages.html.erb +2 -2
  46. data/app/views/spree/shared/_footer.html.erb +1 -1
  47. data/app/views/spree/shared/_head.html.erb +1 -1
  48. data/app/views/spree/shared/_header.html.erb +1 -1
  49. data/app/views/spree/shared/_main_nav_bar.html.erb +1 -1
  50. data/app/views/spree/shared/_mobile_change_store.html.erb +3 -3
  51. data/app/views/spree/shared/_mobile_navigation.html.erb +1 -1
  52. data/app/views/spree/shared/_nav_bar.html.erb +4 -4
  53. data/app/views/spree/shared/_no_product_available.html.erb +1 -1
  54. data/app/views/spree/shared/_option_values.html.erb +1 -1
  55. data/app/views/spree/shared/_order_details.html.erb +117 -174
  56. data/app/views/spree/shared/_payment.html.erb +2 -2
  57. data/app/views/spree/shared/_payment_sources.html.erb +2 -2
  58. data/app/views/spree/shared/_product_added_modal.html.erb +1 -1
  59. data/app/views/spree/shared/_search.html.erb +1 -2
  60. data/app/views/spree/shared/_translations.html.erb +6 -6
  61. data/app/views/spree/shared/carousel/_single.html.erb +5 -10
  62. data/app/views/spree/shared/carousel/_thumbnails.html.erb +5 -11
  63. data/app/views/spree/users/_address_controls.html.erb +1 -2
  64. data/app/views/spree/users/show.html.erb +3 -3
  65. data/config/routes.rb +0 -1
  66. data/spree_frontend.gemspec +1 -1
  67. metadata +10 -12
  68. data/app/views/spree/shared/forbidden.html.erb +0 -0
  69. data/app/views/spree/shared/unauthorized.html.erb +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1477557578e6d8ef0fe52f5d0d8e96d45ede1291ef6d5e635d397ab3ba2b1d64
4
- data.tar.gz: 4bf49f127a3c63fbf42d02e628157297029568a11eed608a2da64a6b7c6151cc
3
+ metadata.gz: 4c687a751a5affd4522bc602689a69466af4401bcda69b405b419dda929e737d
4
+ data.tar.gz: c8e4dbc7e128ab9d655ba9afdb60891d700224a9a5a8e62ab1f7d9720b30a9b2
5
5
  SHA512:
6
- metadata.gz: b6c9a6e1456772e5a1a189e759e1503eb4a43c93c55546dc7acee0cfc24e0781dac0882220df9ce0b1a6d123e3817822838325e9da9873a9c168aa4a8cdba9bb
7
- data.tar.gz: 9c9fe56b7f1a9c33241eecca1367d279a2a2f4207290a4922244b0eeaf9b04ee734a1b76f92625314d62ec63d52f0406e77dd4a12ac6a67e5864ee43de3a0ec6
6
+ metadata.gz: 238f9fb68b0c36b60aee012683d1d33854fc1c9ed28fefc94e080fb194974b8a75d9c91b2634be22b98efac96cf136a4a34228658844aec166d117c1d0d062d1
7
+ data.tar.gz: c34ae40194f58f11d2dfdf1b8f89dc57c61b84e97cc2a13b18e1f8670ce841e0c9d2e87d65e780936912bd2ef478d933de50e019830332bc57ec53bfffa46ede
@@ -3,6 +3,7 @@ function ShippingTotalManager (input1) {
3
3
  this.input = input1
4
4
  this.shippingMethods = this.input.shippingMethods
5
5
  this.shipmentTotal = this.input.shipmentTotal
6
+ this.isFreeShipping = this.input.isFreeShipping
6
7
  this.taxTotal = this.input.taxTotal
7
8
  this.nonShipmentTax = $(this.taxTotal).data('non-shipment-tax')
8
9
  this.orderTotal = this.input.orderTotal
@@ -35,8 +36,19 @@ ShippingTotalManager.prototype.parseCurrencyToFloat = function (input) {
35
36
  return accounting.unformat(input, this.formatOptions.decimal)
36
37
  }
37
38
 
39
+ ShippingTotalManager.prototype.totalShipmentAmount = function (newShipmentTotal, oldShipmentTotal) {
40
+ var totalShipmentAmount = 0;
41
+ if (!this.isFreeShipping.html()) {
42
+ totalShipmentAmount = newShipmentTotal - oldShipmentTotal
43
+
44
+ return totalShipmentAmount
45
+ } else {
46
+ return totalShipmentAmount
47
+ }
48
+ }
49
+
38
50
  ShippingTotalManager.prototype.readjustSummarySection = function (orderTotal, newShipmentTotal, oldShipmentTotal, newTaxTotal, oldTaxTotal) {
39
- var newOrderTotal = orderTotal + (newShipmentTotal - oldShipmentTotal) + (newTaxTotal - oldTaxTotal)
51
+ var newOrderTotal = orderTotal + this.totalShipmentAmount(newShipmentTotal, oldShipmentTotal) + (newTaxTotal - oldTaxTotal)
40
52
  this.taxTotal.html(accounting.formatMoney(newTaxTotal, this.formatOptions))
41
53
  this.shipmentTotal.html(accounting.formatMoney(newShipmentTotal, this.formatOptions))
42
54
  return this.orderTotal.html(accounting.formatMoney(accounting.toFixed(newOrderTotal, 10), this.formatOptions))
@@ -53,7 +65,8 @@ Spree.ready(function ($) {
53
65
  orderTotal: $('#summary-order-total'),
54
66
  taxTotal: $('[data-hook="tax-total"]'),
55
67
  shipmentTotal: $('[data-hook="shipping-total"]'),
56
- shippingMethods: $('input[data-behavior="shipping-method-selector"]')
68
+ shippingMethods: $('input[data-behavior="shipping-method-selector"]'),
69
+ isFreeShipping: $('[data-hook="is-free-shipping"]')
57
70
  }
58
71
  return new ShippingTotalManager(input).bindEvent()
59
72
  })
@@ -2,11 +2,6 @@
2
2
  display: flex;
3
3
  flex-direction: column;
4
4
 
5
- div:first-child {
6
- -webkit-flex: 0;
7
- flex-shrink: 0;
8
- }
9
-
10
5
  &-order-details {
11
6
  padding-bottom: 40px;
12
7
  font-weight: 500;
@@ -36,6 +31,9 @@
36
31
  }
37
32
 
38
33
  &-line-items {
34
+ @include media-breakpoint-down(sm) {
35
+ flex-basis: 100%;
36
+ }
39
37
  @include media-breakpoint-up(lg) {
40
38
  border: none;
41
39
  flex: 1 1 0;
@@ -48,15 +46,6 @@
48
46
  &-line-item {
49
47
  $self: &;
50
48
 
51
- a {
52
- max-width: 50%;
53
- margin-right: 20px;
54
-
55
- @include media-breakpoint-up(lg) {
56
- margin-right: 40px;
57
- }
58
- }
59
-
60
49
  img {
61
50
  width: 90px;
62
51
  height: auto;
@@ -73,14 +62,28 @@
73
62
  &-name {
74
63
  font-size: font-px-to-rem(14px);
75
64
  border-top: 1px solid $global-border-style;
65
+ margin-right: 20px;
76
66
 
77
- @include media-breakpoint-up(sm) {
78
- font-size: font-px-to-rem(27px);
67
+ &-image {
68
+ padding-right: 16px;
79
69
  }
80
70
 
81
- @include media-breakpoint-up(lg) {
82
- font-size: font-px-to-rem(22px);
83
- width: 55%;
71
+ &-link {
72
+ max-width: 50%;
73
+
74
+ @include media-breakpoint-up(lg) {
75
+ margin-right: 40px;
76
+ }
77
+
78
+
79
+ @include media-breakpoint-up(sm) {
80
+ font-size: font-px-to-rem(27px);
81
+ }
82
+
83
+ @include media-breakpoint-up(lg) {
84
+ font-size: font-px-to-rem(22px);
85
+ width: 55%;
86
+ }
84
87
  }
85
88
 
86
89
  &-options {
@@ -185,6 +188,8 @@
185
188
  }
186
189
 
187
190
  &-delivery-informations {
191
+ flex-basis: 100%;
192
+
188
193
  div:first-child {
189
194
  flex-shrink: unset;
190
195
  -webkit-flex: unset;
@@ -253,9 +258,9 @@
253
258
  }
254
259
 
255
260
  #checkout-summary {
256
- margin-top: 20px;
257
- @include media-breakpoint-up(sm) {
258
- margin-top: 70px;
261
+ flex: 1 1 0;
262
+ @include media-breakpoint-down(sm) {
263
+ margin-top: 20px;
259
264
  }
260
265
  }
261
266
  }
@@ -261,6 +261,9 @@
261
261
  }
262
262
  #checkout-summary {
263
263
  margin-top: 30px;
264
+ @include media-breakpoint-down(sm) {
265
+ flex-basis: 100%;
266
+ }
264
267
  @include media-breakpoint-up(sm) {
265
268
  margin-top: 75px;
266
269
  }
@@ -33,9 +33,7 @@ module Spree
33
33
  end
34
34
 
35
35
  def related
36
- @related_products = related_products
37
-
38
- if @related_products.any?
36
+ if product_relation_types.any?
39
37
  render template: 'spree/products/related', layout: false
40
38
  else
41
39
  head :no_content
@@ -4,14 +4,6 @@ module Spree
4
4
 
5
5
  skip_before_action :verify_authenticity_token, only: :ensure_cart, raise: false
6
6
 
7
- def forbidden
8
- render 'spree/shared/forbidden', layout: Spree::Config[:layout], status: 403
9
- end
10
-
11
- def unauthorized
12
- render 'spree/shared/unauthorized', layout: Spree::Config[:layout], status: 401
13
- end
14
-
15
7
  def account_link
16
8
  render partial: 'spree/shared/link_to_account'
17
9
  fresh_when(try_spree_current_user)
@@ -16,7 +16,7 @@ module Spree
16
16
  end
17
17
 
18
18
  def stores
19
- @stores ||= Spree::Store.includes(:default_country)
19
+ @stores ||= Spree::Store.includes(:default_country).order(:id)
20
20
  end
21
21
 
22
22
  def store_currency_symbol(store)
@@ -248,7 +248,7 @@ module Spree
248
248
  end
249
249
 
250
250
  def price_filter_values
251
- [
251
+ @price_filter_values ||= [
252
252
  "#{I18n.t('activerecord.attributes.spree/product.less_than')} #{formatted_price(50)}",
253
253
  "#{formatted_price(50)} - #{formatted_price(100)}",
254
254
  "#{formatted_price(101)} - #{formatted_price(150)}",
@@ -295,7 +295,11 @@ module Spree
295
295
  end
296
296
 
297
297
  def checkout_available_payment_methods
298
- @order.available_payment_methods(current_store)
298
+ @checkout_available_payment_methods ||= @order.available_payment_methods(current_store)
299
+ end
300
+
301
+ def color_option_type_name
302
+ @color_option_type_name ||= Spree::OptionType.color&.name
299
303
  end
300
304
 
301
305
  private
@@ -314,7 +318,9 @@ module Spree
314
318
  end
315
319
  end
316
320
 
317
- def checkout_edit_link(step = 'address')
321
+ def checkout_edit_link(step = 'address', order = @order)
322
+ return if order.complete?
323
+
318
324
  classes = 'align-text-bottom checkout-confirm-delivery-informations-link'
319
325
 
320
326
  link_to spree.checkout_state_path(step), class: classes, method: :get do
@@ -3,7 +3,7 @@ require 'digest'
3
3
  module Spree
4
4
  module NavigationHelper
5
5
  def spree_navigation_data
6
- SpreeStorefrontConfig.dig(current_store.code, :navigation) || SpreeStorefrontConfig.dig(:default, :navigation) || []
6
+ @spree_navigation_data ||= SpreeStorefrontConfig.dig(current_store.code, :navigation) || SpreeStorefrontConfig.dig(:default, :navigation) || []
7
7
  # safeguard for older Spree installs that don't have spree_navigation initializer
8
8
  # or spree.yml file present
9
9
  rescue
@@ -2,7 +2,7 @@ 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 :http_cache_enabled, :boolean, default: true
5
- preference :locale, :string, default: Rails.application.config.i18n.default_locale
5
+ preference :locale, :string, default: nil
6
6
  preference :products_filters, :array, default: %w(keywords price sort_by)
7
7
  preference :additional_filters_partials, :array, default: %w()
8
8
  preference :remember_me_enabled, :boolean, default: true
@@ -4,8 +4,8 @@
4
4
  current_page: a page object for the currently displayed page
5
5
  total_pages: total number of pages
6
6
  per_page: number of items to fetch per page
7
- remote: data-remote
8
- -%>
7
+ remote: data-remote -%>
8
+
9
9
  <% unless current_page.first? %>
10
10
  <li class="first page-item">
11
11
  <%= link_to_unless current_page.first?, inline_svg_tag('pagination-double-arrow-right.svg', size: '13px*16px', class: 'spree-icon-arrow-left'), url, remote: remote, class: 'page-link', 'aria-label': 'First page' %>
@@ -3,8 +3,8 @@
3
3
  current_page: a page object for the currently displayed page
4
4
  total_pages: total number of pages
5
5
  per_page: number of items to fetch per page
6
- remote: data-remote
7
- -%>
6
+ remote: data-remote -%>
7
+
8
8
  <li class="page gap disabled page-item d-none d-lg-flex">
9
9
  <a href="#" onclick="return false;" class="page-link">
10
10
  <%= raw(t 'views.pagination.truncate') %>
@@ -4,8 +4,8 @@
4
4
  current_page: a page object for the currently displayed page
5
5
  total_pages: total number of pages
6
6
  per_page: number of items to fetch per page
7
- remote: data-remote
8
- -%>
7
+ remote: data-remote -%>
8
+
9
9
  <% unless current_page.last? %>
10
10
  <li class="last next page-item"><%# "next" class present for border styling in twitter bootstrap %>
11
11
  <%= link_to_unless current_page.last?, inline_svg_tag('pagination-double-arrow-right.svg', size: '13px*16px'), url, remote: remote, class: 'page-link', 'aria-label': 'Last page' %>
@@ -4,8 +4,8 @@
4
4
  current_page: a page object for the currently displayed page
5
5
  total_pages: total number of pages
6
6
  per_page: number of items to fetch per page
7
- remote: data-remote
8
- -%>
7
+ remote: data-remote -%>
8
+
9
9
  <% unless current_page.last? %>
10
10
  <li class="next_page page-item">
11
11
  <%= link_to_unless current_page.last?, inline_svg_tag('pagination-arrow-right.svg', size: '13px*16px'), url, rel: 'next', remote: remote, class: 'page-link', 'aria-label': 'Next page' %>
@@ -5,8 +5,8 @@
5
5
  current_page: a page object for the currently displayed page
6
6
  total_pages: total number of pages
7
7
  per_page: number of items to fetch per page
8
- remote: data-remote
9
- -%>
8
+ remote: data-remote -%>
9
+
10
10
  <li class="page<%= ' active' if page.current? %> page-item">
11
11
  <%= link_to page,
12
12
  url,
@@ -4,8 +4,8 @@
4
4
  total_pages: total number of pages
5
5
  per_page: number of items to fetch per page
6
6
  remote: data-remote
7
- paginator: the paginator that renders the pagination tags inside
8
- -%>
7
+ paginator: the paginator that renders the pagination tags inside -%>
8
+
9
9
  <% pagination_class ||= '' %>
10
10
 
11
11
  <%= paginator.render do %>
@@ -4,8 +4,8 @@
4
4
  current_page: a page object for the currently displayed page
5
5
  total_pages: total number of pages
6
6
  per_page: number of items to fetch per page
7
- remote: data-remote
8
- -%>
7
+ remote: data-remote -%>
8
+
9
9
  <% unless current_page.first? %>
10
10
  <li class="prev page-item">
11
11
  <%= link_to_unless current_page.first?, inline_svg_tag('pagination-arrow-right.svg', size: '13px*16px', class: 'spree-icon-arrow-left'), url, rel: 'prev', remote: remote, class: 'page-link', 'aria-label': 'Previous page' %>
@@ -1,54 +1,54 @@
1
1
  <% address_id = address_type.chars.first %>
2
2
 
3
- <div class="inner" data-hook=<%="#{address_type}_inner" %>>
4
- <div class="form-group" id=<%="#{address_id}firstname" %>>
3
+ <div class="inner" data-hook='<%= "#{address_type}_inner" %>'>
4
+ <div class="form-group" id='<%= "#{address_id}firstname" %>'>
5
5
  <%= form.label :firstname do %>
6
6
  <%= Spree.t(:first_name) %><abbr class="required" title="required">*</abbr>
7
7
  <% end %>
8
8
  <%= form.text_field :firstname, class: 'form-control', required: true %>
9
9
  </div>
10
- <div class="form-group" id=<%="#{address_id}lastname" %>>
10
+ <div class="form-group" id='<%= "#{address_id}lastname" %>'>
11
11
  <%= form.label :lastname do %>
12
12
  <%= Spree.t(:last_name) %><abbr class="required" title="required">*</abbr>
13
13
  <% end %>
14
14
  <%= form.text_field :lastname, class: 'form-control', required: true %>
15
15
  </div>
16
16
  <% if Spree::Config[:company] %>
17
- <div class="form-group" id=<%="#{address_id}company" %>>
17
+ <div class="form-group" id='<%= "#{address_id}company" %>'>
18
18
  <%= form.label :company, Spree.t(:company) %>
19
19
  <%= form.text_field :company, class: 'form-control' %>
20
20
  </div>
21
21
  <% end %>
22
- <div class="form-group" id=<%="#{address_id}address1" %>>
22
+ <div class="form-group" id='<%= "#{address_id}address1" %>'>
23
23
  <%= form.label :address1 do %>
24
24
  <%= Spree.t(:street_address) %><abbr class="required" title="required">*</abbr>
25
25
  <% end %>
26
26
  <%= form.text_field :address1, class: 'form-control required' %>
27
27
  </div>
28
- <div class="form-group" id=<%="#{address_id}address2" %>>
28
+ <div class="form-group" id='<%= "#{address_id}address2" %>'>
29
29
  <%= form.label :address2, Spree.t(:street_address_2) %>
30
30
  <%= form.text_field :address2, class: 'form-control' %>
31
31
  </div>
32
- <div class="form-group" id=<%="#{address_id}city" %>>
32
+ <div class="form-group" id='<%= "#{address_id}city" %>'>
33
33
  <%= form.label :city do %>
34
34
  <%= Spree.t(:city) %><abbr class="required" title="required">*</abbr>
35
35
  <% end %>
36
36
  <%= form.text_field :city, class: 'form-control', required: true %>
37
37
  </div>
38
- <div class="form-group" id=<%="#{address_id}country" %>>
38
+ <div class="form-group" id='<%= "#{address_id}country" %>'>
39
39
  <%= form.label :country_id do %>
40
40
  <%= Spree.t(:country) %><abbr class="required" title="required">*</abbr>
41
41
  <% end %>
42
- <span id=<%="#{address_id}country-selection" %>>
42
+ <span id='<%= "#{address_id}country-selection" %>'>
43
43
  <%= form.collection_select :country_id, available_countries, :id, :name, {}, { class: 'form-control', required: true } %>
44
44
  </span>
45
45
  </div>
46
46
 
47
47
  <% if Spree::Config[:address_requires_state] %>
48
- <div class="form-group" id=<%="#{address_id}state" %>>
48
+ <div class="form-group" id='<%= "#{address_id}state" %>'>
49
49
  <% have_states = !address.country.states.empty? %>
50
50
  <%= form.label :state do %>
51
- <%= Spree.t(:state) %><abbr class='required' title="required" id=<%="#{address_id}state-required"%>>*</abbr>
51
+ <%= Spree.t(:state) %><abbr class='required' title="required" id='<%= "#{address_id}state-required" %>'>*</abbr>
52
52
  <% end %>
53
53
 
54
54
  <%== state_elements = [
@@ -62,28 +62,27 @@
62
62
  class: !have_states ? 'form-control' : 'form-control hidden',
63
63
  required: !have_states,
64
64
  disabled: have_states)
65
- ].join.gsub('"', "'").gsub("\n", "")
66
- %>
65
+ ].join.gsub('"', "'").gsub("\n", "") %>
67
66
  </div>
68
67
  <noscript>
69
68
  <%= form.text_field :state_name, class: 'form-control', required: true %>
70
69
  </noscript>
71
70
  <% end %>
72
71
 
73
- <div class="form-group" id=<%="#{address_id}zipcode" %>>
72
+ <div class="form-group" id='<%= "#{address_id}zipcode" %>'>
74
73
  <%= form.label :zipcode do %>
75
74
  <%= Spree.t(:zip) %><% if address.require_zipcode? %><abbr class="required" title="required">*</abbr><% end %>
76
75
  <% end %>
77
76
  <%= form.text_field :zipcode, class: 'form-control', required: address.require_zipcode? %>
78
77
  </div>
79
- <div class="form-group" id=<%="#{address_id}phone" %>>
78
+ <div class="form-group" id='<%= "#{address_id}phone" %>'>
80
79
  <%= form.label :phone do %>
81
80
  <%= Spree.t(:phone) %><% if address.require_phone? %><abbr class="required" title="required">*</abbr><% end %>
82
81
  <% end %>
83
82
  <%= form.phone_field :phone, class: 'form-control', required: address.require_phone? %>
84
83
  </div>
85
84
  <% if Spree::Config[:alternative_shipping_phone] %>
86
- <div class="form-group" id=<%="#{address_id}altphone" %>>
85
+ <div class="form-group" id='<%= "#{address_id}altphone" %>'>
87
86
  <%= form.label :alternative_phone, Spree.t(:alternative_phone) %>
88
87
  <%= form.phone_field :alternative_phone, class: 'form-control' %>
89
88
  </div>
@@ -11,8 +11,8 @@
11
11
  address_name: 'address',
12
12
  address_form: f,
13
13
  address_type: 'shipping',
14
- address: @address
15
- %>
14
+ address: @address %>
15
+
16
16
  <%= f.submit Spree.t(:update), class: 'btn btn-primary btn-block spree-btn mb-5' %>
17
17
  <% end %>
18
18
  </div>
@@ -10,8 +10,8 @@
10
10
  address_name: 'address',
11
11
  address_form: f,
12
12
  address_type: 'shipping',
13
- address: @address
14
- %>
13
+ address: @address %>
14
+
15
15
  <%= f.submit t(:save, scope: :address_book), class: 'btn btn-primary btn-block spree-btn mb-5' %>
16
16
  <% end %>
17
17
  </div>