spree_frontend 4.2.0.rc4 → 4.2.0.rc5

Sign up to get free protection for your applications and to get access to all the features.
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>