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.
- checksums.yaml +4 -4
- data/app/assets/javascripts/spree/frontend/checkout/shipment.js +15 -2
- data/app/assets/stylesheets/spree/frontend/views/spree/checkout/confirm.scss +27 -22
- data/app/assets/stylesheets/spree/frontend/views/spree/orders/show.scss +3 -0
- data/app/controllers/spree/products_controller.rb +1 -3
- data/app/controllers/spree/store_controller.rb +0 -8
- data/app/helpers/spree/frontend_helper.rb +10 -4
- data/app/helpers/spree/navigation_helper.rb +1 -1
- data/app/models/spree/frontend_configuration.rb +1 -1
- data/app/views/kaminari/twitter-bootstrap-4/_first_page.html.erb +2 -2
- data/app/views/kaminari/twitter-bootstrap-4/_gap.html.erb +2 -2
- data/app/views/kaminari/twitter-bootstrap-4/_last_page.html.erb +2 -2
- data/app/views/kaminari/twitter-bootstrap-4/_next_page.html.erb +2 -2
- data/app/views/kaminari/twitter-bootstrap-4/_page.html.erb +2 -2
- data/app/views/kaminari/twitter-bootstrap-4/_paginator.html.erb +2 -2
- data/app/views/kaminari/twitter-bootstrap-4/_prev_page.html.erb +2 -2
- data/app/views/spree/address/_form.html.erb +15 -16
- data/app/views/spree/addresses/edit.html.erb +2 -2
- data/app/views/spree/addresses/new.html.erb +2 -2
- data/app/views/spree/checkout/_address.html.erb +2 -2
- data/app/views/spree/checkout/_confirm.html.erb +1 -33
- data/app/views/spree/checkout/_credit_card.html.erb +2 -2
- data/app/views/spree/checkout/_delivery_informations.html.erb +43 -36
- data/app/views/spree/checkout/_summary.html.erb +3 -5
- data/app/views/spree/checkout/payment/_gateway.html.erb +1 -1
- data/app/views/spree/home/index.html.erb +21 -22
- data/app/views/spree/orders/_coupon_code.html.erb +2 -3
- data/app/views/spree/orders/_line_item.html.erb +1 -1
- data/app/views/spree/orders/_line_item_data.html.erb +1 -1
- data/app/views/spree/orders/edit.html.erb +2 -3
- data/app/views/spree/orders/show.html.erb +1 -71
- data/app/views/spree/products/_cart_form.html.erb +2 -3
- data/app/views/spree/products/_color_option_type.html.erb +1 -2
- data/app/views/spree/products/_filters_desktop.html.erb +1 -2
- data/app/views/spree/products/_gallery.html.erb +4 -6
- data/app/views/spree/products/_gallery_modal.html.erb +3 -5
- data/app/views/spree/products/_option_type.html.erb +1 -2
- data/app/views/spree/products/_sort_mobile.html.erb +4 -4
- data/app/views/spree/products/related.html.erb +11 -5
- data/app/views/spree/products/show.html.erb +1 -2
- data/app/views/spree/shared/_carousel_4_products.html.erb +6 -12
- data/app/views/spree/shared/_change_store.html.erb +3 -3
- data/app/views/spree/shared/_color_select.html.erb +3 -3
- data/app/views/spree/shared/_delete_address_popup.html.erb +1 -2
- data/app/views/spree/shared/_error_messages.html.erb +2 -2
- data/app/views/spree/shared/_footer.html.erb +1 -1
- data/app/views/spree/shared/_head.html.erb +1 -1
- data/app/views/spree/shared/_header.html.erb +1 -1
- data/app/views/spree/shared/_main_nav_bar.html.erb +1 -1
- data/app/views/spree/shared/_mobile_change_store.html.erb +3 -3
- data/app/views/spree/shared/_mobile_navigation.html.erb +1 -1
- data/app/views/spree/shared/_nav_bar.html.erb +4 -4
- data/app/views/spree/shared/_no_product_available.html.erb +1 -1
- data/app/views/spree/shared/_option_values.html.erb +1 -1
- data/app/views/spree/shared/_order_details.html.erb +117 -174
- data/app/views/spree/shared/_payment.html.erb +2 -2
- data/app/views/spree/shared/_payment_sources.html.erb +2 -2
- data/app/views/spree/shared/_product_added_modal.html.erb +1 -1
- data/app/views/spree/shared/_search.html.erb +1 -2
- data/app/views/spree/shared/_translations.html.erb +6 -6
- data/app/views/spree/shared/carousel/_single.html.erb +5 -10
- data/app/views/spree/shared/carousel/_thumbnails.html.erb +5 -11
- data/app/views/spree/users/_address_controls.html.erb +1 -2
- data/app/views/spree/users/show.html.erb +3 -3
- data/config/routes.rb +0 -1
- data/spree_frontend.gemspec +1 -1
- metadata +10 -12
- data/app/views/spree/shared/forbidden.html.erb +0 -0
- data/app/views/spree/shared/unauthorized.html.erb +0 -0
@@ -2,16 +2,15 @@
|
|
2
2
|
<% if @product_images.size > 0 %>
|
3
3
|
<div
|
4
4
|
class="w-100 d-flex align-self-start justify-content-between product-details-images"
|
5
|
-
data-hook="product_left_part_wrap"
|
6
|
-
|
5
|
+
data-hook="product_left_part_wrap">
|
6
|
+
|
7
7
|
<div class="d-none d-md-block product-details-thumbnails" data-hook="product_thumbnails">
|
8
8
|
<%= render 'spree/shared/carousel/thumbnails',
|
9
9
|
images: @product_images,
|
10
10
|
group_id: 'main-product-carousel',
|
11
11
|
id: 'productThumbnailsCarousel',
|
12
12
|
trigger_id: 'productCarousel',
|
13
|
-
per_page: 5
|
14
|
-
%>
|
13
|
+
per_page: 5 %>
|
15
14
|
</div>
|
16
15
|
<div class="product-details-single" data-hook="product_images">
|
17
16
|
<%= render 'spree/shared/carousel/single',
|
@@ -19,8 +18,7 @@
|
|
19
18
|
group_id: 'main-product-carousel',
|
20
19
|
id: 'productCarousel',
|
21
20
|
trigger_id: 'productCarousel',
|
22
|
-
zoomed: false
|
23
|
-
%>
|
21
|
+
zoomed: false %>
|
24
22
|
</div>
|
25
23
|
</div>
|
26
24
|
<% end %>
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<% if @product_images.size > 0 %>
|
2
|
-
<div class="modal fade" id="picturesModal" tabindex="-1" role="dialog"
|
2
|
+
<div class="modal fade" id="picturesModal" tabindex="-1" role="dialog">
|
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">
|
@@ -23,8 +23,7 @@
|
|
23
23
|
group_id: 'main-product-modal-carousel',
|
24
24
|
id: 'productModalThumbnailsCarousel',
|
25
25
|
trigger_id: 'productCarousel',
|
26
|
-
per_page: 4
|
27
|
-
%>
|
26
|
+
per_page: 4 %>
|
28
27
|
</div>
|
29
28
|
<% end %>
|
30
29
|
<div class="product-details-single">
|
@@ -33,8 +32,7 @@
|
|
33
32
|
group_id: 'main-product-modal-carousel',
|
34
33
|
id: 'productModalCarousel',
|
35
34
|
trigger_id: 'productCarousel',
|
36
|
-
zoomed: true
|
37
|
-
%>
|
35
|
+
zoomed: true %>
|
38
36
|
</div>
|
39
37
|
</div>
|
40
38
|
</div>
|
@@ -15,8 +15,7 @@
|
|
15
15
|
"option-type-index" => index,
|
16
16
|
"presentation" => option_value[:presentation],
|
17
17
|
"variant-id" => option_value[:variant_id]
|
18
|
-
}
|
19
|
-
%>
|
18
|
+
} %>
|
20
19
|
|
21
20
|
<%= label_tag "variant_option_value_id_#{option_type[:id]}_#{option_value[:id]}",
|
22
21
|
class: "m-1 select-label",
|
@@ -8,7 +8,7 @@
|
|
8
8
|
<div class="plp-overlay-header-border"></div>
|
9
9
|
<ul class="pt-1 plp-overlay-ul">
|
10
10
|
<li class="plp-overlay-ul-li <%= 'plp-overlay-ul-li--active' if params[:sort_by].blank? %>">
|
11
|
-
<a class="p-3 d-block" href="<%= url_for(permitted_params.merge(sort_by: nil)) %>"
|
11
|
+
<a class="p-3 d-block" href="<%= url_for(permitted_params.merge(sort_by: nil)) %>">
|
12
12
|
<div class="plp-empty-dot">
|
13
13
|
<div class="filled-dot"></div>
|
14
14
|
</div>
|
@@ -16,7 +16,7 @@
|
|
16
16
|
</a>
|
17
17
|
</li>
|
18
18
|
<li class="plp-overlay-ul-li <%= 'plp-overlay-ul-li--active' if params[:sort_by] == 'newest-first' %>">
|
19
|
-
<a class="p-3 d-block" href="<%= url_for(permitted_params.merge(sort_by: 'newest-first')) %>"
|
19
|
+
<a class="p-3 d-block" href="<%= url_for(permitted_params.merge(sort_by: 'newest-first')) %>">
|
20
20
|
<div class="plp-empty-dot">
|
21
21
|
<div class="filled-dot"></div>
|
22
22
|
</div>
|
@@ -24,7 +24,7 @@
|
|
24
24
|
</a>
|
25
25
|
</li>
|
26
26
|
<li class="plp-overlay-ul-li <%= 'plp-overlay-ul-li--active' if params[:sort_by] == 'price-high-to-low' %>">
|
27
|
-
<a class="p-3 d-block" href="<%= url_for(permitted_params.merge(sort_by: 'price-high-to-low')) %>"
|
27
|
+
<a class="p-3 d-block" href="<%= url_for(permitted_params.merge(sort_by: 'price-high-to-low')) %>">
|
28
28
|
<div class="plp-empty-dot">
|
29
29
|
<div class="filled-dot"></div>
|
30
30
|
</div>
|
@@ -32,7 +32,7 @@
|
|
32
32
|
</a>
|
33
33
|
</li>
|
34
34
|
<li class="plp-overlay-ul-li <%= 'plp-overlay-ul-li--active' if params[:sort_by] == 'price-low-to-high' %>">
|
35
|
-
<a class="p-3 d-block" href="<%= url_for(permitted_params.merge(sort_by: 'price-low-to-high')) %>"
|
35
|
+
<a class="p-3 d-block" href="<%= url_for(permitted_params.merge(sort_by: 'price-low-to-high')) %>">
|
36
36
|
<div class="plp-empty-dot">
|
37
37
|
<div class="filled-dot"></div>
|
38
38
|
</div>
|
@@ -1,8 +1,14 @@
|
|
1
|
-
<% if
|
1
|
+
<% if product_relation_types.any? %>
|
2
2
|
<div id="related-products">
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
3
|
+
<% product_relation_types.each do |relation_type| %>
|
4
|
+
<% products = product_relations_by_type(relation_type) %>
|
5
|
+
|
6
|
+
<% if products.any? %>
|
7
|
+
<div class="product-details-related" id="product-details-related-<%= relation_type.id %>">
|
8
|
+
<p class="font-weight-bold text-center text-uppercase product-details-carousel-text"><%= relation_type.name %></p>
|
9
|
+
<%= render 'spree/shared/carousel_4_products', id: "related-products-carousel-#{relation_type.id}", products: products %>
|
10
|
+
</div>
|
11
|
+
<% end %>
|
12
|
+
<% end %>
|
7
13
|
</div>
|
8
14
|
<% end %>
|
@@ -20,8 +20,7 @@
|
|
20
20
|
class="d-flex position-absolute justify-content-center align-items-center carousel-icon-control carousel-icon-control--previous"
|
21
21
|
href="#<%= id %>-mobile"
|
22
22
|
role="button"
|
23
|
-
data-slide="prev"
|
24
|
-
>
|
23
|
+
data-slide="prev">
|
25
24
|
<span class="d-flex justify-content-center align-items-center carousel-icon-control-rounded" aria-hidden="true">
|
26
25
|
<%= icon(name: 'arrow-right',
|
27
26
|
classes: 'spree-icon-arrow spree-icon-arrow-left',
|
@@ -35,8 +34,7 @@
|
|
35
34
|
class="d-flex position-absolute justify-content-center align-items-center carousel-icon-control carousel-icon-control--next"
|
36
35
|
href="#<%= id %>-mobile"
|
37
36
|
role="button"
|
38
|
-
data-slide="next"
|
39
|
-
>
|
37
|
+
data-slide="next">
|
40
38
|
<span class="d-flex justify-content-center align-items-center carousel-icon-control-rounded" aria-hidden="true">
|
41
39
|
<%= icon(name: 'arrow-right',
|
42
40
|
classes: 'spree-icon-arrow spree-icon-arrow-right',
|
@@ -56,14 +54,12 @@
|
|
56
54
|
class="d-flex position-absolute justify-content-center align-items-center carousel-icon-control carousel-icon-control--previous"
|
57
55
|
href="#<%= id %>-desktop"
|
58
56
|
role="button"
|
59
|
-
data-slide="prev"
|
60
|
-
>
|
57
|
+
data-slide="prev">
|
61
58
|
<span class="d-flex justify-content-center align-items-center carousel-icon-control-rounded" aria-hidden="true">
|
62
59
|
<%= icon(name: 'arrow-right',
|
63
60
|
classes: 'spree-icon-arrow spree-icon-arrow-left',
|
64
61
|
width: 20,
|
65
|
-
height: 20)
|
66
|
-
%>
|
62
|
+
height: 20) %>
|
67
63
|
</span>
|
68
64
|
<span class="sr-only"><%= Spree.t(:previous) %></span>
|
69
65
|
</a>
|
@@ -80,14 +76,12 @@
|
|
80
76
|
class="d-md-flex position-absolute justify-content-center align-items-center carousel-icon-control carousel-icon-control--next"
|
81
77
|
href="#<%= id %>-desktop"
|
82
78
|
role="button"
|
83
|
-
data-slide="next"
|
84
|
-
>
|
79
|
+
data-slide="next">
|
85
80
|
<span class="d-flex justify-content-center align-items-center carousel-icon-control-rounded" aria-hidden="true">
|
86
81
|
<%= icon(name: 'arrow-right',
|
87
82
|
classes: 'spree-icon-arrow spree-icon-arrow-right',
|
88
83
|
width: 20,
|
89
|
-
height: 20)
|
90
|
-
%>
|
84
|
+
height: 20) %>
|
91
85
|
</span>
|
92
86
|
<span class="sr-only"><%= Spree.t(:next) %></span>
|
93
87
|
</a>
|
@@ -1,15 +1,15 @@
|
|
1
1
|
<% if Spree::Config.show_store_selector && stores.size > 1 %>
|
2
2
|
<li class="d-none d-xl-block change-store">
|
3
3
|
<div class="dropdown navbar-right-dropdown">
|
4
|
-
<button id="stores-button" type="button" data-toggle="dropdown" class="navbar-right-dropdown-toggle" aria-label="<%= Spree.t('nav_bar.change_country')%>">
|
4
|
+
<button id="stores-button" type="button" data-toggle="dropdown" class="navbar-right-dropdown-toggle" aria-label="<%= Spree.t('nav_bar.change_country') %>">
|
5
5
|
<%= icon(name: 'global',
|
6
6
|
classes: 'd-none d-xl-inline-block',
|
7
7
|
width: 41,
|
8
|
-
height: 36)
|
8
|
+
height: 36) %>
|
9
9
|
<%= icon(name: 'arrow-down',
|
10
10
|
classes: 'd-inline-block d-xl-none',
|
11
11
|
width: 15,
|
12
|
-
height: 15)
|
12
|
+
height: 15) %>
|
13
13
|
</button>
|
14
14
|
|
15
15
|
<div id="stores_list" class="dropdown-menu dropdown-menu-right text-right">
|
@@ -1,9 +1,9 @@
|
|
1
1
|
<svg class="color-select" height="32" viewBox="0 0 32 32" width="32" xmlns="http://www.w3.org/2000/svg">
|
2
2
|
<g class="color-select-border" fill="none" fill-rule="evenodd">
|
3
|
-
<circle class="<%= 'color-select-border--selected' if selected %> plp-overlay-color-item" cx="16" cy="16" r="15" stroke-width="2"/>
|
3
|
+
<circle class="<%= 'color-select-border--selected' if selected %> plp-overlay-color-item" cx="16" cy="16" r="15" stroke-width="2" />
|
4
4
|
<g transform="translate(2 2)">
|
5
|
-
<circle cx="14" cy="14" fill="<%= color %>" fill-rule="evenodd" r="12"/>
|
6
|
-
<circle cx="14" cy="14" r="13" stroke="#fff" stroke-width="2"/>
|
5
|
+
<circle cx="14" cy="14" fill="<%= color %>" fill-rule="evenodd" r="12" />
|
6
|
+
<circle cx="14" cy="14" r="13" stroke="#fff" stroke-width="2" />
|
7
7
|
</g>
|
8
8
|
</g>
|
9
9
|
</svg>
|
@@ -1,10 +1,10 @@
|
|
1
1
|
<% if target && target.errors.any? %>
|
2
2
|
<div id="errorExplanation" class="alert alert-danger d-flex justify-content-center mb-0" data-hook>
|
3
|
-
<ul class="mb-0 pl-0"
|
3
|
+
<ul class="mb-0 pl-0" style="list-style-type: none;">
|
4
4
|
<% target.errors.full_messages.each do |msg| %>
|
5
5
|
<li><%= msg %></li>
|
6
6
|
<% end %>
|
7
7
|
</ul>
|
8
|
-
<br
|
8
|
+
<br>
|
9
9
|
</div>
|
10
10
|
<% end %>
|
@@ -33,7 +33,7 @@
|
|
33
33
|
<div class="d-flex flex-column align-items-center align-items-xl-start pb-3 flex-grow-2 footer-spree-contact-note">
|
34
34
|
<div>
|
35
35
|
<strong><%= current_store.name %></strong>
|
36
|
-
<br
|
36
|
+
<br>
|
37
37
|
<% if current_store.address %>
|
38
38
|
<%= current_store.address.html_safe %>
|
39
39
|
<% end %>
|
@@ -8,7 +8,7 @@
|
|
8
8
|
<button class="navbar-toggler border-0 px-0 d-flex" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-label="<%= Spree.t('nav_bar.show_menu') %>">
|
9
9
|
<%= icon(name: 'burger',
|
10
10
|
width: 18.5,
|
11
|
-
height: 16)
|
11
|
+
height: 16) %>
|
12
12
|
</button>
|
13
13
|
</div>
|
14
14
|
<figure class="logo flex-grow-0 flex-xl-grow-1 order-xl-0 header-spree-fluid-logo m-0">
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<% if stores.size > 1 %>
|
2
2
|
<li class="d-flex justify-content-between align-items-center mobile-navigation-list-item">
|
3
|
-
<span class="w-75"><%= Spree.t('nav_bar.change_country')%></span>
|
4
|
-
<a class="w-25 text-right mobile-navigation-category-link" data-category="countries" href="#" aria-label="<%= Spree.t('nav_bar.change_country')%>">
|
3
|
+
<span class="w-75"><%= Spree.t('nav_bar.change_country') %></span>
|
4
|
+
<a class="w-25 text-right mobile-navigation-category-link" data-category="countries" href="#" aria-label="<%= Spree.t('nav_bar.change_country') %>">
|
5
5
|
<%= icon(name: 'arrow-right',
|
6
6
|
classes: 'd-sm-none spree-icon-arrow spree-icon-arrow-right',
|
7
7
|
width: 16,
|
@@ -14,7 +14,7 @@
|
|
14
14
|
|
15
15
|
<ul class="list-unstyled position-absolute mobile-navigation-sublist" data-category="countries">
|
16
16
|
<li class="text-center font-weight-bold mobile-navigation-sublist-header">
|
17
|
-
<%= Spree.t('nav_bar.change_country')%>
|
17
|
+
<%= Spree.t('nav_bar.change_country') %>
|
18
18
|
</li>
|
19
19
|
<% stores.each do |store| %>
|
20
20
|
<li class="d-flex justify-content-between align-items-center mobile-navigation-list-item">
|
@@ -25,7 +25,7 @@
|
|
25
25
|
<li class="d-flex justify-content-between align-items-center mobile-navigation-list-item">
|
26
26
|
<%= link_to root[:title], root[:url], class: 'w-75' %>
|
27
27
|
<% if root[:items].present? %>
|
28
|
-
<a class="w-25 text-right mobile-navigation-category-link" data-category="<%= root[:title].parameterize %>" href="#" aria-label="<%= Spree.t('go_to_category')%>">
|
28
|
+
<a class="w-25 text-right mobile-navigation-category-link" data-category="<%= root[:title].parameterize %>" href="#" aria-label="<%= Spree.t('go_to_category') %>">
|
29
29
|
<%= icon(name: 'arrow-right',
|
30
30
|
classes: 'd-inline spree-icon-arrow spree-icon-arrow-right',
|
31
31
|
width: 14,
|
@@ -1,11 +1,11 @@
|
|
1
1
|
<ul id="nav-bar" class="nav align-items-center d-flex flex-nowrap justify-content-end navbar-right">
|
2
2
|
<li>
|
3
3
|
<div class="navbar-right-search-menu">
|
4
|
-
<button type="button" class="navbar-right-dropdown-toggle search-icons" aria-label="<%= Spree.t('nav_bar.show_search')%>">
|
4
|
+
<button type="button" class="navbar-right-dropdown-toggle search-icons" aria-label="<%= Spree.t('nav_bar.show_search') %>">
|
5
5
|
<%= icon(name: 'magnifying-glass',
|
6
6
|
classes: 'd-inline-block',
|
7
7
|
width: 36,
|
8
|
-
height: 36)
|
8
|
+
height: 36) %>
|
9
9
|
</button>
|
10
10
|
|
11
11
|
<div id="search-dropdown" class="p-0 px-md-4 py-md-2 w-100 shadow navbar-right-search-menu-dropdown hide-on-esc">
|
@@ -16,11 +16,11 @@
|
|
16
16
|
<% if defined?(spree.account_link_path) %>
|
17
17
|
<li>
|
18
18
|
<div class="dropdown navbar-right-dropdown">
|
19
|
-
<button id="account-button" type="button" data-toggle="dropdown" class="navbar-right-dropdown-toggle account-icon" aria-label="<%= Spree.t('nav_bar.show_user_menu')%>">
|
19
|
+
<button id="account-button" type="button" data-toggle="dropdown" class="navbar-right-dropdown-toggle account-icon" aria-label="<%= Spree.t('nav_bar.show_user_menu') %>">
|
20
20
|
<%= icon(name: 'person',
|
21
21
|
classes: 'd-inline-block',
|
22
22
|
width: 41.4,
|
23
|
-
height: 36)
|
23
|
+
height: 36) %>
|
24
24
|
</button>
|
25
25
|
|
26
26
|
<div id="link-to-account" class="dropdown-menu dropdown-menu-right text-right">
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<div class="p-0 justify-content-around mx-auto no-product-available">
|
2
|
-
<div id=
|
2
|
+
<div id="no-product-available-close-button" class="d-flex no-product-available-icon">
|
3
3
|
<%= inline_svg_tag "close.svg", class: "w-100 h-100" %>
|
4
4
|
</div>
|
5
5
|
|
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
<% option_value_param = (selected_option_values.include?(id) ? selected_option_values - [id] : selected_option_values + [id]).join(',') %>
|
8
8
|
<%= link_to permitted_params.merge(ot_downcase_name => option_value_param, menu_open: 1), data: { params: permitted_params.merge(ot_downcase_name => option_value_param, menu_open: 1), id: id, filter_name: ot_downcase_name, multiselect: true } do %>
|
9
|
-
<% if
|
9
|
+
<% if color_option_type_name.present? && color_option_type_name.downcase == ot_downcase_name %>
|
10
10
|
|
11
11
|
<span class="d-inline-block mb-1">
|
12
12
|
<%= render partial: 'spree/shared/color_select', locals: {
|
@@ -1,184 +1,127 @@
|
|
1
|
-
|
2
|
-
<div class="
|
3
|
-
|
4
|
-
|
5
|
-
<h4 class="h5">
|
6
|
-
<%= Spree.t(:billing_address) %> <%= link_to "(#{Spree.t(:edit)})", spree.checkout_state_path(:address) unless order.completed? %>
|
7
|
-
</h4>
|
8
|
-
<%= render 'spree/shared/address', address: order.bill_address %>
|
1
|
+
<div class='checkout-confirm-order-details w-100 d-flex flex-wrap' data-hook>
|
2
|
+
<div class="checkout-confirm-delivery-informations text-left mt-3">
|
3
|
+
<div class="d-lg-none checkout-confirm-delivery-informations-header">
|
4
|
+
<%= Spree.t(:delivery_information) %>
|
9
5
|
</div>
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
6
|
+
<dl>
|
7
|
+
<% if order.has_step?("address") %>
|
8
|
+
<div data-hook="order-ship-address">
|
9
|
+
<dt class="text-uppercase">
|
10
|
+
<%= Spree.t(:shipping_address) %>
|
11
|
+
<%= checkout_edit_link %>
|
12
|
+
</dt>
|
13
|
+
<%= render 'spree/shared/address', address: order.ship_address %>
|
14
|
+
</div>
|
15
|
+
<div data-hook="order-bill-address">
|
16
|
+
<dt class="text-uppercase">
|
17
|
+
<%= Spree.t(:billing_address) %>
|
18
|
+
<%= checkout_edit_link %>
|
19
|
+
</dt>
|
20
|
+
<%= render 'spree/shared/address', address: order.bill_address %>
|
21
|
+
</div>
|
22
|
+
<% end %>
|
23
|
+
<% if order.has_step?("delivery") %>
|
24
|
+
<div data-hook="order-shipment">
|
25
|
+
<dt class="text-uppercase">
|
26
|
+
<%= Spree.t(:shipping) %>
|
27
|
+
<%= checkout_edit_link('delivery') %>
|
28
|
+
</dt>
|
29
|
+
<% @order.shipments.valid.each do |shipment| %>
|
30
|
+
<dd><%= shipment.shipping_method&.name %> </dd>
|
28
31
|
<% end %>
|
32
|
+
<%= render 'spree/shared/shipment_tracking', order: order if order.shipped? %>
|
29
33
|
</div>
|
30
|
-
<%= render 'spree/shared/shipment_tracking', order: order if order.shipped? %>
|
31
|
-
</div>
|
32
|
-
<% end %>
|
33
|
-
<% end %>
|
34
|
-
|
35
|
-
<% if order.has_step?("payment") %>
|
36
|
-
<div class="col-md-3 col-6 mb-3" data-hook="order-payment">
|
37
|
-
<h4 class="h5">
|
38
|
-
<%= Spree.t(:payment_information) %> <%= link_to "(#{Spree.t(:edit)})", spree.checkout_state_path(:payment) unless order.completed? %>
|
39
|
-
</h4>
|
40
|
-
<div class="payment-info">
|
41
|
-
<%= render collection: order.payments.valid, partial: 'spree/shared/payment' %>
|
42
|
-
</div>
|
43
|
-
</div>
|
44
|
-
<% end %>
|
45
|
-
</div>
|
46
|
-
|
47
|
-
<div class="table-responsive">
|
48
|
-
<table id='line-items' class="table mt-4" data-hook="order_details">
|
49
|
-
<col width="15%" valign="middle" halign="center">
|
50
|
-
<col width="70%" valign="middle">
|
51
|
-
<col width="5%" valign="middle" halign="center">
|
52
|
-
<col width="5%" valign="middle" halign="center">
|
53
|
-
<col width="5%" valign="middle" halign="center">
|
54
|
-
|
55
|
-
<thead data-hook>
|
56
|
-
<tr class="active" data-hook="order_details_line_items_headers">
|
57
|
-
<th colspan="2"><%= Spree.t(:item) %></th>
|
58
|
-
<th class="price"><%= Spree.t(:price) %></th>
|
59
|
-
<th class="qty"><%= Spree.t(:qty) %></th>
|
60
|
-
<th class="total"><span><%= Spree.t(:total) %></span></th>
|
61
|
-
</tr>
|
62
|
-
</thead>
|
63
|
-
|
64
|
-
<tbody data-hook>
|
65
|
-
<% order.line_items.each do |item| %>
|
66
|
-
<tr data-hook="order_details_line_item_row">
|
67
|
-
<td data-hook="order_item_image">
|
68
|
-
<%= link_to small_image(line_item.variant), line_item.product %>
|
69
|
-
</td>
|
70
|
-
<td data-hook="order_item_description">
|
71
|
-
<h4><%= item.name %></h4>
|
72
|
-
<p>
|
73
|
-
<%= truncate(item.description, length: 100) %>
|
74
|
-
<%= "(" + item.variant.options_text + ")" unless item.variant.option_values.empty? %>
|
75
|
-
</p>
|
76
|
-
</td>
|
77
|
-
<td data-hook="order_item_price" class="lead text-primary price">
|
78
|
-
<span><%= item.single_money.to_html %></span>
|
79
|
-
</td>
|
80
|
-
<td data-hook="order_item_qty" class="order-qty">
|
81
|
-
<%= item.quantity %>
|
82
|
-
</td>
|
83
|
-
<td data-hook="order_item_total" class="lead text-primary total">
|
84
|
-
<span><%= item.display_amount.to_html %></span>
|
85
|
-
</td>
|
86
|
-
</tr>
|
87
34
|
<% end %>
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
<tr class="total" id="subtotal-row">
|
104
|
-
<td colspan="4">
|
105
|
-
<strong><%= Spree.t(:subtotal) %>:</strong>
|
106
|
-
</td>
|
107
|
-
<td class="total">
|
108
|
-
<span><%= order.display_item_total.to_html %></span>
|
109
|
-
</td>
|
110
|
-
</tr>
|
111
|
-
</tfoot>
|
112
|
-
|
113
|
-
<% if order.line_item_adjustments.exists? %>
|
114
|
-
<% if order.line_item_adjustments.promotion.eligible.exists? %>
|
115
|
-
<tfoot id="price-adjustments" data-hook="order_details_price_adjustments">
|
116
|
-
<% order.line_item_adjustments.promotion.eligible.group_by(&:label).each do |label, adjustments| %>
|
117
|
-
<tr class="total">
|
118
|
-
<td colspan="4">
|
119
|
-
<%= Spree.t(:promotion) %>: <strong><%= label %></strong>
|
120
|
-
</td>
|
121
|
-
<td class="total">
|
122
|
-
<span>
|
123
|
-
<%= Spree::Money.new(
|
124
|
-
adjustments.sum(&:amount), currency: order.currency
|
125
|
-
) %>
|
126
|
-
</span>
|
127
|
-
</td>
|
128
|
-
</tr>
|
129
|
-
<% end %>
|
130
|
-
</tfoot>
|
35
|
+
<% if order.has_step?("payment") %>
|
36
|
+
<div data-hook="order-payment">
|
37
|
+
<dt class="text-uppercase">
|
38
|
+
<%= Spree.t(:payment) %>
|
39
|
+
<%= checkout_edit_link('payment') %>
|
40
|
+
</dt>
|
41
|
+
<dd>
|
42
|
+
<%= render collection: @order.payments.valid, partial: 'spree/shared/payment' %>
|
43
|
+
</dd>
|
44
|
+
<dd>
|
45
|
+
<% if !@order.complete? && @order.using_store_credit? %>
|
46
|
+
<%= button_tag Spree.t('store_credit.remove'), name: 'remove_store_credit', class: 'continue btn' %>
|
47
|
+
<% end %>
|
48
|
+
</dd>
|
49
|
+
</div>
|
131
50
|
<% end %>
|
132
|
-
|
51
|
+
</dl>
|
52
|
+
</div>
|
133
53
|
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
54
|
+
<div class="checkout-confirm-order-details-line-items d-flex flex-column mt-5 mr-md-4">
|
55
|
+
<div class="checkout-confirm-order-details-line-items-header d-none d-sm-block d-lg-none align-self-start mb-3">
|
56
|
+
<%= Spree.t(:products) %>
|
57
|
+
</div>
|
58
|
+
<div class="d-table" data-hook="order_details">
|
59
|
+
<div class="d-none d-lg-table-row text-secondary text-uppercase" data-hook="order_details_line_items_headers">
|
60
|
+
<p class="d-table-cell pb-1">
|
61
|
+
<%= Spree.t(:product) %>
|
62
|
+
</p>
|
63
|
+
<p class="d-table-cell pb-1">
|
64
|
+
<%= Spree.t(:price) %>
|
65
|
+
</p>
|
66
|
+
<p class="d-table-cell pb-1">
|
67
|
+
<%= Spree.t(:quantity) %>
|
68
|
+
</p>
|
69
|
+
<p class="d-table-cell pb-1">
|
70
|
+
<%= Spree.t(:total) %>
|
71
|
+
</p>
|
72
|
+
</div>
|
73
|
+
<% @order.line_items.each do |item| %>
|
74
|
+
<div class="checkout-confirm-order-details-line-items-line-item w-100 d-table-row" data-hook="order_details_line_item_row">
|
75
|
+
<div class="checkout-confirm-order-details-line-items-line-item-name d-table-cell align-middle py-3 py-sm-4">
|
76
|
+
<div class="d-flex align-items-lg-center">
|
77
|
+
<div class="checkout-confirm-order-details-line-items-line-item-name-image" data-hook="order_item_image">
|
78
|
+
<%= link_to product_image(item.variant), item.product %>
|
79
|
+
</div>
|
80
|
+
<div class="d-flex flex-column mt-2 mt-lg-0" data-hook="order_item_description">
|
81
|
+
<div data-hook="order_item_name">
|
82
|
+
<%= link_to item.name, item.product, class: 'checkout-confirm-order-details-line-items-line-item-name-link' %>
|
83
|
+
</div>
|
84
|
+
<% unless item.variant.is_master? %>
|
85
|
+
<ul class="checkout-confirm-order-details-line-items-line-item-name-options text-uppercase list-unstyled mb-0">
|
86
|
+
<% item.variant.option_values.sort { |ov| ov.option_type.position }.each do |ov| %>
|
87
|
+
<li>
|
88
|
+
<% # TODO: rework option values so options_text method can be used here %>
|
89
|
+
<%= "#{ov.option_type.presentation}: #{ov.name.titleize}" %>
|
90
|
+
</li>
|
91
|
+
<% end %>
|
92
|
+
</ul>
|
93
|
+
<% end %>
|
94
|
+
<div class="d-lg-none" data-hook="order_item_price">
|
95
|
+
<div class="font-weight-bold"><%= item.single_money.to_html %></div>
|
96
|
+
</div>
|
97
|
+
<div class="d-lg-none" data-hook="order_item_qty">
|
98
|
+
<span><%= Spree.t(:quantity) %>:</span>
|
99
|
+
<span class="font-weight-bold"><%= item.quantity %></span>
|
100
|
+
</div>
|
101
|
+
</div>
|
102
|
+
</div>
|
103
|
+
</div>
|
104
|
+
<div class="checkout-confirm-order-details-line-items-line-item-price d-none d-lg-table-cell align-middle py-4" data-hook="order_item_price">
|
105
|
+
<div><%= item.single_money.to_html %></div>
|
106
|
+
</div>
|
107
|
+
<div class="checkout-confirm-order-details-line-items-line-item-quantity d-none d-lg-table-cell align-middle py-4" data-hook="order_item_qty">
|
108
|
+
<span class="checkout-confirm-order-details-line-items-line-item-quantity-val d-lg-block"><%= item.quantity %></span>
|
109
|
+
</div>
|
110
|
+
<div class="checkout-confirm-order-details-line-items-line-item-total d-none d-lg-table-cell align-middle py-4" data-hook="order_item_total">
|
111
|
+
<div><%= item.display_total.to_s %></div>
|
112
|
+
</div>
|
113
|
+
</div>
|
148
114
|
<% end %>
|
149
|
-
</
|
115
|
+
</div>
|
116
|
+
</div>
|
150
117
|
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
<td class="total">
|
159
|
-
<span>
|
160
|
-
<%= Spree::Money.new(
|
161
|
-
adjustments.sum(&:amount), currency: order.currency
|
162
|
-
) %>
|
163
|
-
</span>
|
164
|
-
</td>
|
165
|
-
</tr>
|
166
|
-
<% end %>
|
167
|
-
</tfoot>
|
118
|
+
<div class="mt-5" id="checkout-summary" data-hook="checkout_summary_box">
|
119
|
+
<%= render partial: 'spree/checkout/summary', locals: { order: @order } %>
|
120
|
+
<% unless @order.complete? %>
|
121
|
+
<div data-hook="buttons">
|
122
|
+
<% submit_label_key = @order.confirm? ? :place_order : :save_and_continue %>
|
123
|
+
<%= submit_tag Spree.t(submit_label_key), class: 'btn btn-primary text-uppercase font-weight-bold w-100 checkout-content-save-continue-button' %>
|
124
|
+
</div>
|
168
125
|
<% end %>
|
169
|
-
|
170
|
-
<tfoot id="order-charges" data-hook="order_details_adjustments">
|
171
|
-
<% order.adjustments.eligible.each do |adjustment| %>
|
172
|
-
<% next if (adjustment.source_type == 'Spree::TaxRate') and (adjustment.amount == 0) %>
|
173
|
-
<tr class="total">
|
174
|
-
<td colspan="4" align="right">
|
175
|
-
<strong><%= adjustment.label %></strong>
|
176
|
-
</td>
|
177
|
-
<td class="total">
|
178
|
-
<span><%= adjustment.display_amount.to_html %></span>
|
179
|
-
</td>
|
180
|
-
</tr>
|
181
|
-
<% end %>
|
182
|
-
</tfoot>
|
183
|
-
</table>
|
126
|
+
</div>
|
184
127
|
</div>
|