spree_frontend 4.6.0 → 4.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.circleci/config.yml +35 -124
- data/.codeclimate.yml +2 -2
- data/.gem_release.yml +1 -1
- data/.github/CONTRIBUTING.md +1 -1
- data/.github/dependabot.yml +9 -30
- data/.rubocop.yml +11 -184
- data/.ruby-version +1 -0
- data/Gemfile +12 -13
- data/LICENSE +1 -1
- data/README.md +31 -38
- data/SECURITY.md +1 -1
- data/app/assets/config/spree_frontend_manifest.js +2 -1
- data/app/assets/images/favicon.ico +0 -0
- data/app/assets/images/logo/spree_50.png +0 -0
- data/app/assets/images/noimage/large.png +0 -0
- data/app/assets/images/noimage/mini.png +0 -0
- data/app/assets/images/noimage/product.png +0 -0
- data/app/assets/images/noimage/small.png +0 -0
- data/app/assets/javascripts/spree/frontend/{account.js → account.es6} +2 -5
- data/app/assets/javascripts/spree/frontend/{api_tokens.js → api_tokens.es6} +2 -5
- data/app/assets/javascripts/spree/frontend/cart.js +1 -1
- data/app/assets/javascripts/spree/frontend/checkout/address.js +1 -1
- data/app/assets/javascripts/spree/frontend/checkout/address_book.js +1 -1
- data/app/assets/javascripts/spree/frontend/checkout/payment.js +1 -1
- data/app/assets/javascripts/spree/frontend/checkout/shipment.js +1 -1
- data/app/assets/javascripts/spree/frontend/checkout.js +1 -1
- data/app/assets/javascripts/spree/frontend/login.js +1 -1
- data/app/assets/javascripts/spree/frontend/main_nav_bar.js +1 -1
- data/app/assets/javascripts/spree/frontend/views/spree/layouts/spree_application.js +1 -1
- data/app/assets/javascripts/spree/frontend/views/spree/products/cart_form.js +9 -2
- data/app/assets/javascripts/spree/frontend/views/spree/products/index.js +1 -1
- data/app/assets/javascripts/spree/frontend/views/spree/products/modal_carousel.js +1 -1
- data/app/assets/javascripts/spree/frontend/views/spree/products/price_filters.es6 +1 -1
- data/app/assets/javascripts/spree/frontend/views/spree/shared/carousel/single.js +1 -1
- data/app/assets/javascripts/spree/frontend/views/spree/shared/carousel/swipes.js +1 -1
- data/app/assets/javascripts/spree/frontend/views/spree/shared/carousel/thumbnails.js +1 -1
- data/app/assets/javascripts/spree/frontend/views/spree/shared/carousel.js +1 -1
- data/app/assets/javascripts/spree/frontend/views/spree/shared/delete_address_popup.js +1 -1
- data/app/assets/javascripts/spree/frontend/views/spree/shared/mobile_navigation.js +1 -1
- data/app/assets/javascripts/spree/frontend/views/spree/shared/quantity_select.js +1 -1
- data/app/assets/javascripts/spree/lazysizes.config.js +1 -1
- data/app/assets/stylesheets/spree/frontend/components-custom/headers.scss +0 -2
- data/app/assets/stylesheets/spree/frontend/components-custom/inputs.scss +4 -146
- data/app/assets/stylesheets/spree/frontend/fonts.scss +0 -136
- data/app/assets/stylesheets/spree/frontend/variables/variables.scss +21 -7
- data/app/assets/stylesheets/spree/frontend/views/spree/checkout/edit.scss +0 -3
- data/app/assets/stylesheets/spree/frontend/views/spree/layouts/spree_application.scss +1 -1
- data/app/assets/stylesheets/spree/frontend/views/spree/orders/edit.scss +0 -20
- data/app/assets/stylesheets/spree/frontend/views/spree/products/index.scss +2 -2
- data/app/assets/stylesheets/spree/frontend/views/spree/products/show.scss +0 -20
- data/app/assets/stylesheets/spree/frontend/views/spree/shared/cart.scss +0 -14
- data/app/assets/stylesheets/spree/frontend/views/spree/shared/header.scss +0 -25
- data/app/assets/stylesheets/spree/frontend/views/spree/shared/login.scss +0 -16
- data/app/assets/stylesheets/spree/frontend/views/spree/shared/main_nav_bar.scss +1 -8
- data/app/assets/stylesheets/spree/frontend/views/spree/shared/nav_bar.scss +1 -14
- data/app/assets/stylesheets/spree/frontend/views/spree/shared/no_product_available.scss +1 -1
- data/app/assets/stylesheets/spree/frontend/views/spree/shared/order_details.scss +0 -1
- data/app/assets/stylesheets/spree/frontend/views/spree/taxons/show.scss +1 -1
- data/app/assets/stylesheets/spree/frontend/views/spree/users/show.scss +0 -28
- data/app/helpers/spree/addresses_helper.rb +6 -10
- data/app/helpers/spree/frontend_helper.rb +3 -3
- data/app/helpers/spree/navigation_helper.rb +3 -3
- data/app/helpers/spree/products_filters_helper.rb +3 -3
- data/app/helpers/spree/taxons_helper.rb +1 -1
- data/app/javascript/spree/frontend/application.js +2 -0
- data/app/services/spree/build_localized_redirect_url.rb +2 -2
- data/app/views/spree/addresses/_form.html.erb +4 -5
- data/app/views/spree/addresses/edit.html.erb +1 -1
- data/app/views/spree/addresses/new.html.erb +1 -1
- data/app/views/spree/checkout/_address.html.erb +1 -1
- data/app/views/spree/checkout/_delivery.html.erb +1 -1
- data/app/views/spree/checkout/_summary.html.erb +1 -1
- data/app/views/spree/checkout/edit.html.erb +1 -1
- data/app/views/spree/checkout/payment/_gateway.html.erb +4 -4
- data/app/views/spree/checkout/payment/_storecredit.html.erb +1 -1
- data/app/views/spree/checkout/registration.html.erb +1 -1
- data/app/views/spree/layouts/spree_application.html.erb +4 -1
- data/app/views/spree/orders/_line_item_data.html.erb +1 -1
- data/app/views/spree/orders/show.html.erb +1 -1
- data/app/views/spree/products/_cart_form.html.erb +2 -2
- data/app/views/spree/products/_color_option_type.html.erb +1 -1
- data/app/views/spree/products/_description.html.erb +1 -1
- data/app/views/spree/products/_filters_desktop.html.erb +1 -1
- data/app/views/spree/products/_filters_mobile.html.erb +3 -3
- data/app/views/spree/products/_option_type.html.erb +1 -1
- data/app/views/spree/products/_promotions.html.erb +1 -1
- data/app/views/spree/products/_properties.html.erb +1 -1
- data/app/views/spree/products/_sort_desktop.html.erb +9 -24
- data/app/views/spree/products/index.html.erb +1 -1
- data/app/views/spree/products/related.html.erb +1 -1
- data/app/views/spree/shared/_checkout_header.html.erb +1 -1
- data/app/views/spree/shared/_currency_dropdown.html.erb +1 -1
- data/app/views/spree/shared/_delete_address_popup.html.erb +2 -2
- data/app/views/spree/shared/_footer.html.erb +3 -3
- data/app/views/spree/shared/_head.html.erb +2 -1
- data/app/views/spree/shared/_internationalization_options.html.erb +3 -3
- data/app/views/spree/shared/_line_item.html.erb +1 -1
- data/app/views/spree/shared/_locale_dropdown.html.erb +1 -1
- data/app/views/spree/shared/_login.html.erb +2 -2
- data/app/views/spree/shared/_main_nav_bar.html.erb +2 -2
- data/app/views/spree/shared/_mobile_internationalization_options.html.erb +1 -1
- data/app/views/spree/shared/_mobile_navigation.html.erb +1 -1
- data/app/views/spree/shared/_nav_bar.html.erb +5 -5
- data/app/views/spree/shared/_no_product_available.html.erb +1 -1
- data/app/views/spree/shared/_order_details.html.erb +3 -3
- data/app/views/spree/shared/_product_added_modal.html.erb +2 -2
- data/app/views/spree/shared/_user_form.html.erb +3 -3
- data/app/views/spree/taxons/_header.html.erb +1 -1
- data/app/views/spree/taxons/_subcategories.html.erb +1 -1
- data/app/views/spree/taxons/product_carousel.html.erb +1 -1
- data/app/views/spree/users/edit.html.erb +1 -1
- data/app/views/spree/users/show.html.erb +1 -1
- data/config/importmap.rb +2 -0
- data/config/initializers/admin_actions.rb +18 -0
- data/config/locales/en.yml +37 -0
- data/lib/generators/spree/frontend/install/install_generator.rb +0 -2
- data/lib/spree/frontend/configuration.rb +1 -1
- data/lib/spree/frontend/engine.rb +9 -5
- data/lib/spree/frontend/version.rb +3 -3
- data/lib/spree/frontend.rb +3 -1
- data/spree_frontend.gemspec +13 -11
- metadata +67 -51
- data/.deepsource.toml +0 -19
- data/.eslintignore +0 -7
- data/.eslintrc +0 -36
- data/.solargraph.yml +0 -20
- data/.stylelintignore +0 -4
- data/.stylelintrc +0 -6
- data/app/assets/images/logo-spree.png +0 -0
- data/app/assets/images/logo.png +0 -0
- data/app/assets/images/logo.svg +0 -10
- data/app/assets/images/logo@2x.png +0 -0
- data/app/assets/images/logo@3x.png +0 -0
- data/app/assets/images/noimage/plp.png +0 -0
- data/app/assets/images/noimage/plp.svg +0 -16
- data/app/views/spree/shared/_get_started.html.erb +0 -32
- data/lib/generators/spree/frontend/install/templates/app/assets/config/manifest.js +0 -2
- data/license.md +0 -13
@@ -5,10 +5,13 @@
|
|
5
5
|
<!--[if IE 9 ]> <html class="ie ie9" lang="<%= I18n.locale %>"> <![endif]-->
|
6
6
|
<!--[if gt IE 9]><!--><html lang="<%= I18n.locale %>"><!--<![endif]-->
|
7
7
|
<head data-hook="inside_head">
|
8
|
+
<link rel="preconnect" href="https://fonts.googleapis.com">
|
9
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
10
|
+
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap" rel="stylesheet">
|
11
|
+
|
8
12
|
<%= render partial: 'spree/shared/head' %>
|
9
13
|
</head>
|
10
14
|
<body class="<%= body_class %>" id="<%= @body_id || 'default' %>" data-hook="body">
|
11
|
-
<%= render partial: 'spree/shared/get_started' %>
|
12
15
|
<%= render partial: 'spree/shared/header' %>
|
13
16
|
<div id="overlay" class="overlay hide-on-esc"></div>
|
14
17
|
|
@@ -10,7 +10,7 @@
|
|
10
10
|
<div class="shopping-cart-item-quantity <%= additional_classes %>" data-hook="cart_item_quantity">
|
11
11
|
<div class="d-flex align-items-center">
|
12
12
|
<%= button_tag '-', type: 'button', class: "border-right-0 shopping-cart-item-quantity-decrease-btn", data: { id: dom_id(line_item) } %>
|
13
|
-
<%= item_form.number_field :quantity, min: 0, class: "form-control text-center border-left-0 border-right-0 shopping-cart-item-quantity-input", size: 5, data: { id: dom_id(line_item) }, aria: { label: Spree.t('cart_page.change_quantity') } %>
|
13
|
+
<%= item_form.number_field :quantity, min: 0, class: "form-control text-center border-left-0 border-right-0 rounded-0 shopping-cart-item-quantity-input", size: 5, data: { id: dom_id(line_item) }, aria: { label: Spree.t('cart_page.change_quantity') } %>
|
14
14
|
<%= button_tag '+', type: 'button', class: "border-left-0 shopping-cart-item-quantity-increase-btn", data: { id: dom_id(line_item) } %>
|
15
15
|
</div>
|
16
16
|
</div>
|
@@ -12,7 +12,7 @@
|
|
12
12
|
<p class="order-show-explain w-100 text-center"><%= Spree.t(:order_success_explain) %></p>
|
13
13
|
<% end %>
|
14
14
|
|
15
|
-
<p class="order-show-number
|
15
|
+
<p class="order-show-number w-100 text-center">
|
16
16
|
<%= accurate_title %> / <%= pretty_date(@order.completed_at) %>
|
17
17
|
</p>
|
18
18
|
<%= render partial: 'spree/shared/order_details', locals: { order: @order } %>
|
@@ -37,7 +37,7 @@
|
|
37
37
|
</div>
|
38
38
|
<% end %>
|
39
39
|
|
40
|
-
<div class="text-center text-md-left add-to-cart-form-general-availability
|
40
|
+
<div class="text-center text-md-left add-to-cart-form-general-availability">
|
41
41
|
<%= Spree.t(:availability) %>:
|
42
42
|
<% if !is_product_available_in_currency %>
|
43
43
|
<%= render 'cart_form_availability_templates', type: 'not-available-in-currency' %>
|
@@ -74,7 +74,7 @@
|
|
74
74
|
<%= render 'spree/shared/quantity_select', input_name: :quantity %>
|
75
75
|
</div>
|
76
76
|
|
77
|
-
<%= button_tag class: 'btn btn-primary w-100
|
77
|
+
<%= button_tag class: 'btn btn-primary w-100 font-weight-bold add-to-cart-button', id: 'add-to-cart-button', type: :submit, disabled: true do %>
|
78
78
|
<%= Spree.t(:add_to_cart) %>
|
79
79
|
<% end %>
|
80
80
|
</div>
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<div class="product-variants-variant product-variants-variant--color" data-option-type-id="<%= option_type[:id] %>">
|
2
|
-
<span class="d-block mb-2 text-center text-md-left
|
2
|
+
<span class="d-block mb-2 text-center text-md-left product-variants-variant-title">
|
3
3
|
<%= option_type[:presentation] %>
|
4
4
|
</span>
|
5
5
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<h3 class="pt-4 font-weight-bold
|
1
|
+
<h3 class="pt-4 font-weight-bold product-details-subtitle"><%= Spree.t(:description) %></h3>
|
2
2
|
|
3
3
|
<% if Spree::Frontend::Config[:show_raw_product_description] || product_wysiwyg_editor_enabled? %>
|
4
4
|
<div id="product-description-long" class="m-0 text-break product-description" data-hook="description">
|
@@ -85,7 +85,7 @@
|
|
85
85
|
<%= max_price_filter_input class: 'w-50 p-2' %>
|
86
86
|
</div>
|
87
87
|
|
88
|
-
<%= link_to Spree.t('plp.done'), permitted_params, class: 'btn btn-primary spree-btn w-100', data: { params: permitted_params } %>
|
88
|
+
<%= link_to Spree.t('plp.done'), permitted_params, class: 'btn btn-sm btn-primary spree-btn w-100', data: { params: permitted_params } %>
|
89
89
|
</div>
|
90
90
|
</div>
|
91
91
|
</div>
|
@@ -15,7 +15,7 @@
|
|
15
15
|
<% ot_downcase_name = option_type_name.downcase %>
|
16
16
|
|
17
17
|
<div class="card plp-overlay-card">
|
18
|
-
<div class="card-header
|
18
|
+
<div class="card-header <%= 'collapsed' if params[ot_downcase_name].blank? %> plp-overlay-card-header" data-toggle="collapse" id="filtersMobile<%= option_type_name %>" data-target="#collapseFilterMobile<%= option_type_name %>" aria-expanded="true" aria-controls="collapseFilterMobile<%= option_type_name %>" role="heading" aria-level="3">
|
19
19
|
<%= option_type.presentation %>
|
20
20
|
<%= icon(name: 'arrow-right',
|
21
21
|
classes: 'spree-icon-arrow spree-icon-arrow-right mt-1 float-right arrow plp-overlay-card-header-arrow',
|
@@ -35,7 +35,7 @@
|
|
35
35
|
<% property_name = property.name %>
|
36
36
|
<% collapsed = params.dig(:properties, property.filter_param).blank? %>
|
37
37
|
<div class="card plp-overlay-card">
|
38
|
-
<div class="card-header
|
38
|
+
<div class="card-header <%= 'collapsed' if collapsed %> plp-overlay-card-header" data-toggle="collapse" id="filtersMobile<%= property_name %>" data-target="#collapseFilterMobile<%= property_name %>" aria-expanded="true" aria-controls="collapseFilterMobile<%= property_name %>" role="heading" aria-level="3">
|
39
39
|
<%= property.presentation %>
|
40
40
|
<%= icon(name: 'arrow-right',
|
41
41
|
classes: 'spree-icon-arrow spree-icon-arrow-right mt-1 float-right arrow plp-overlay-card-header-arrow',
|
@@ -57,7 +57,7 @@
|
|
57
57
|
<% end %>
|
58
58
|
|
59
59
|
<div class="card plp-overlay-card">
|
60
|
-
<div class="card-header
|
60
|
+
<div class="card-header <%= 'collapsed' if params[:price].blank? %> plp-overlay-card-header" id="headingFour" data-toggle="collapse" data-target="#collapseFour" aria-expanded="true" aria-controls="collapseFour" role="heading" aria-level="3">
|
61
61
|
<%= Spree.t('plp.price') %>
|
62
62
|
<%= icon(name: 'arrow-right',
|
63
63
|
classes: 'spree-icon-arrow spree-icon-arrow-right mt-1 float-right arrow plp-overlay-card-header-arrow',
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<div class="product-variants-variant" data-option-type-id="<%= option_type[:id] %>">
|
2
|
-
<span class="d-block mb-2 text-center text-md-left
|
2
|
+
<span class="d-block mb-2 text-center text-md-left product-variants-variant-title">
|
3
3
|
<%= option_type[:presentation] %>
|
4
4
|
</span>
|
5
5
|
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
<% if promotions.any? %>
|
4
4
|
<div id="promotions">
|
5
|
-
<h3 class="pt-4 font-weight-bold
|
5
|
+
<h3 class="pt-4 font-weight-bold product-details-subtitle"><%= Spree.t(:promotions) %></h3>
|
6
6
|
<% promotions.each do |promotion| %>
|
7
7
|
<div class="row">
|
8
8
|
<div class="col-12 col-md-7 col-lg-6 mb-3">
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<% unless @product_properties.blank? %>
|
2
|
-
<h3 class="pt-4 font-weight-bold
|
2
|
+
<h3 class="pt-4 font-weight-bold product-details-subtitle"><%= Spree.t(:details) %></h3>
|
3
3
|
<ul id="product-properties" class="m-0 list-unstyled product-properies" data-hook>
|
4
4
|
<% @product_properties.each do |product_property| %>
|
5
5
|
<% if product_property.show_property? %>
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<div class="
|
1
|
+
<div class="dropdown d-none d-lg-flex justify-content-end mt-5 pr-4 pb-3 plp-sort">
|
2
2
|
<a data-toggle="dropdown" class="plp-sort-header" href="#" role="button" aria-haspopup="true" aria-expanded="false">
|
3
3
|
<%= Spree.t("plp.#{ params[:sort_by].blank? ? 'sort_by': params[:sort_by].gsub('-', '_') }") %>
|
4
4
|
<%= icon(name: 'arrow-right',
|
@@ -10,27 +10,12 @@
|
|
10
10
|
width: 18,
|
11
11
|
height: 18) %>
|
12
12
|
</a>
|
13
|
-
<div class="dropdown-menu text-right
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
</li>
|
22
|
-
<li class="p-3 plp-sort-dropdown-ul-li<%= '--active' if params[:sort_by] == 'name-z-a' %>">
|
23
|
-
<%= link_to Spree.t('plp.name_z_a'), url_for(permitted_params.merge(sort_by: 'name-z-a')), class: 'dropdown-item' %>
|
24
|
-
</li>
|
25
|
-
<li class="p-3 plp-sort-dropdown-ul-li<%= '--active' if params[:sort_by] == 'newest-first' %>">
|
26
|
-
<%= link_to Spree.t('plp.newest_first'), url_for(permitted_params.merge(sort_by: 'newest-first')), class: 'dropdown-item' %>
|
27
|
-
</li>
|
28
|
-
<li class="p-3 plp-sort-dropdown-ul-li<%= '--active' if params[:sort_by] == 'price-high-to-low' %>">
|
29
|
-
<%= link_to Spree.t('plp.price_high_to_low'), url_for(permitted_params.merge(sort_by: 'price-high-to-low')), class: 'dropdown-item' %>
|
30
|
-
</li>
|
31
|
-
<li class="p-3 plp-sort-dropdown-ul-li<%= '--active' if params[:sort_by] == 'price-low-to-high' %>">
|
32
|
-
<%= link_to Spree.t('plp.price_low_to_high'), url_for(permitted_params.merge(sort_by: 'price-low-to-high')), class: 'dropdown-item' %>
|
33
|
-
</li>
|
34
|
-
</ul>
|
35
|
-
</div>
|
13
|
+
<div class="dropdown-menu text-right">
|
14
|
+
<%= active_link_to Spree.t('plp.default'), url_for(permitted_params.merge(sort_by: nil)), class: 'dropdown-item', active: { sort_by: nil } %>
|
15
|
+
<%= active_link_to Spree.t('plp.name_a_z'), url_for(permitted_params.merge(sort_by: 'name-a-z')), class: 'dropdown-item', active: { sort_by: 'name-a-z' } %>
|
16
|
+
<%= active_link_to Spree.t('plp.name_z_a'), url_for(permitted_params.merge(sort_by: 'name-z-a')), class: 'dropdown-item', active: { sort_by: 'name-z-a' } %>
|
17
|
+
<%= active_link_to Spree.t('plp.newest_first'), url_for(permitted_params.merge(sort_by: 'newest-first')), class: 'dropdown-item', active: { sort_by: 'newest-first' } %>
|
18
|
+
<%= active_link_to Spree.t('plp.price_high_to_low'), url_for(permitted_params.merge(sort_by: 'price-high-to-low')), class: 'dropdown-item', active: { sort_by: 'price-high-to-low' } %>
|
19
|
+
<%= active_link_to Spree.t('plp.price_low_to_high'), url_for(permitted_params.merge(sort_by: 'price-low-to-high')), class: 'dropdown-item', active: { sort_by: 'price-low-to-high' } %>
|
20
|
+
</div>
|
36
21
|
</div>
|
@@ -11,7 +11,7 @@
|
|
11
11
|
<% else %>
|
12
12
|
<% if params[:keywords] %>
|
13
13
|
<div class="container d-md-flex pt-md-5">
|
14
|
-
<div class="plp-results-text
|
14
|
+
<div class="plp-results-text mx-md-auto py-md-5">
|
15
15
|
<%= "#{@products.total_count} #{Spree.t('plp.results_for')} '#{params[:keywords].upcase}'" %>
|
16
16
|
</div>
|
17
17
|
</div>
|
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
<% if products.any? %>
|
7
7
|
<div class="product-details-related" id="product-details-related-<%= relation_type.id %>">
|
8
|
-
<p class="font-weight-bold text-center
|
8
|
+
<p class="font-weight-bold text-center product-details-carousel-text"><%= relation_type.name %></p>
|
9
9
|
<%= render 'spree/shared/carousel_4_products', id: "related-products-carousel-#{relation_type.id}", products: products %>
|
10
10
|
</div>
|
11
11
|
<% end %>
|
@@ -4,7 +4,7 @@
|
|
4
4
|
<div class="row">
|
5
5
|
|
6
6
|
<div class="col d-flex align-items-center truncate pr-0">
|
7
|
-
<%= link_to spree.cart_path, class: "
|
7
|
+
<%= link_to spree.cart_path, class: "truncate checkout-header-link-text btn btn-link", method: :get do %>
|
8
8
|
<%= icon(name: 'arrow-right',
|
9
9
|
classes: 'spree-icon-arrow spree-icon-arrow-left',
|
10
10
|
width: 14,
|
@@ -6,7 +6,7 @@
|
|
6
6
|
</label>
|
7
7
|
<%= select_tag(:switch_to_currency,
|
8
8
|
options_for_select(supported_currency_options, current_currency),
|
9
|
-
class: 'custom-select w-100') %>
|
9
|
+
class: 'custom-select custom-select-sm w-100') %>
|
10
10
|
<noscript><%= submit_tag %></noscript>
|
11
11
|
</div>
|
12
12
|
<% end %>
|
@@ -12,10 +12,10 @@
|
|
12
12
|
</p>
|
13
13
|
|
14
14
|
<div class="d-flex delete-address-popup-buttons">
|
15
|
-
<div class="btn bg-light-background text-primary border-2 border-primary
|
15
|
+
<div class="btn bg-light-background text-primary border-2 border-primary font-weight-bold delete-address-popup-button js-delete-address-popup-close-button"><%= Spree.t(:cancel) %></div>
|
16
16
|
<a
|
17
17
|
id="delete-address-popup-confirm"
|
18
|
-
class="btn btn-primary
|
18
|
+
class="btn btn-primary font-weight-bold delete-address-popup-button"
|
19
19
|
data-method="delete"
|
20
20
|
rel="nofollow"
|
21
21
|
href="#">
|
@@ -47,7 +47,7 @@
|
|
47
47
|
</div>
|
48
48
|
</div>
|
49
49
|
</div>
|
50
|
-
<div class="row d-none d-xl-flex border-top pt-5
|
50
|
+
<div class="row d-none d-xl-flex border-top pt-5 footer-spree-menu-links">
|
51
51
|
|
52
52
|
<% if spree_menu('footer').present? %>
|
53
53
|
<% spree_menu('footer').children.each do |parent| %>
|
@@ -71,10 +71,10 @@
|
|
71
71
|
<% if spree.respond_to?(:account_path) %>
|
72
72
|
<div class="col-3 mb-5">
|
73
73
|
<div class="footer-spree-label">
|
74
|
-
<%= Spree.t(
|
74
|
+
<%= Spree.t(:my_account) %>
|
75
75
|
</div>
|
76
76
|
<div class="pt-2">
|
77
|
-
<%= link_to Spree.t(:my_orders)
|
77
|
+
<%= link_to Spree.t(:my_orders), spree.account_path(anchor: "account-my-orders") %>
|
78
78
|
</div>
|
79
79
|
</div>
|
80
80
|
<% end %>
|
@@ -7,8 +7,9 @@
|
|
7
7
|
<%= favicon_link_tag(spree_favicon_path) %>
|
8
8
|
<%= stylesheet_link_tag 'spree/frontend/all', media: 'screen', data: { turbo_track: 'reload' } %>
|
9
9
|
<%= csrf_meta_tags %>
|
10
|
+
|
11
|
+
<%= javascript_importmap_tags('application-spree-frontend') %>
|
10
12
|
<%= render 'spree/shared/paths' %>
|
11
13
|
<%= render 'spree/shared/locale_and_currency' %>
|
12
|
-
<%= javascript_include_tag "application", defer: true, data: { turbo_track: 'reload' } %>
|
13
14
|
<%= javascript_include_tag 'spree/frontend/all', defer: true, data: { turbo_track: 'reload' } %>
|
14
15
|
<%= yield :head %>
|
@@ -4,8 +4,8 @@
|
|
4
4
|
<button id="internationalization-button-desktop" type="button" data-toggle="dropdown" class="navbar-right-dropdown-toggle" aria-label="<%= Spree.t(:internationalization) %>">
|
5
5
|
<%= icon(name: 'global',
|
6
6
|
classes: 'd-none d-xl-inline-block',
|
7
|
-
width:
|
8
|
-
height:
|
7
|
+
width: 24,
|
8
|
+
height: 24) %>
|
9
9
|
<%= icon(name: 'arrow-down',
|
10
10
|
classes: 'd-inline-block d-xl-none',
|
11
11
|
width: 15,
|
@@ -17,7 +17,7 @@
|
|
17
17
|
<% stores.each do |store| %>
|
18
18
|
<div class="pl-3 d-flex justify-content-between align-items-center stores-list">
|
19
19
|
<%= country_flag_icon(store_country_iso(store)) %>
|
20
|
-
<%= store_link(store, class: "dropdown-item
|
20
|
+
<%= store_link(store, class: "dropdown-item #{'font-weight-bold' if current_store == store}") %>
|
21
21
|
</div>
|
22
22
|
<% end %>
|
23
23
|
<% else %>
|
@@ -4,7 +4,7 @@
|
|
4
4
|
<%= link_to product_image(line_item.variant), spree.product_path(line_item.product) %>
|
5
5
|
<div class="d-flex flex-column mt-2 mt-lg-0">
|
6
6
|
<div><%= link_to line_item.name, spree.product_path(line_item.product) %></div>
|
7
|
-
<ul class="checkout-confirm-order-details-line-items-line-item-name-options
|
7
|
+
<ul class="checkout-confirm-order-details-line-items-line-item-name-options list-unstyled mb-0">
|
8
8
|
<% line_item.variant.option_values.sort { |ov| ov.option_type.position }.each do |ov| %>
|
9
9
|
<li>
|
10
10
|
<% # TODO: rework option values so options_text method can be used here %>
|
@@ -4,12 +4,12 @@
|
|
4
4
|
<div id="password-credentials" class="mb-4">
|
5
5
|
<div class="form-group mb-4">
|
6
6
|
<p class="form-group checkout-content-inner-field">
|
7
|
-
<%= f.email_field :email, class: '
|
7
|
+
<%= f.email_field :email, class: 'form-control', placeholder: Spree.t(:email), value: params.dig(:spree_user, :email) %>
|
8
8
|
</p>
|
9
9
|
</div>
|
10
10
|
<div class="form-group mb-4">
|
11
11
|
<p class="form-group checkout-content-inner-field">
|
12
|
-
<%= f.password_field :password, class: '
|
12
|
+
<%= f.password_field :password, class: 'form-control', placeholder: Spree.t(:password) %>
|
13
13
|
</p>
|
14
14
|
</div>
|
15
15
|
</div>
|
@@ -22,14 +22,14 @@
|
|
22
22
|
<!-- Categories -->
|
23
23
|
<% if child.container? && child.code?('category') %>
|
24
24
|
<div class="category-links my-4 mx-2">
|
25
|
-
<div class="category-links-header
|
25
|
+
<div class="category-links-header">
|
26
26
|
<%= child.name %>
|
27
27
|
</div>
|
28
28
|
<% if child.children.present? %>
|
29
29
|
<ul class="pl-0">
|
30
30
|
<% child.children.each do |category_link| %>
|
31
31
|
<li>
|
32
|
-
<%= spree_nav_link_tag(category_link, { class: "
|
32
|
+
<%= spree_nav_link_tag(category_link, { class: "main-nav-bar-category-links dropdown-item truncate" }) %>
|
33
33
|
</li>
|
34
34
|
<% end %>
|
35
35
|
</ul>
|
@@ -22,7 +22,7 @@
|
|
22
22
|
<% stores.each do |store| %>
|
23
23
|
<li class="d-flex justify-content-between align-items-center mobile-navigation-list-item">
|
24
24
|
<%= country_flag_icon(store_country_iso(store)) %>
|
25
|
-
<%= store_link(store, class: "dropdown-item
|
25
|
+
<%= store_link(store, class: "dropdown-item d-flex #{'font-weight-bold' if current_store == store}") %>
|
26
26
|
</li>
|
27
27
|
<% end %>
|
28
28
|
<% else %>
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<% if spree_menu.present? %>
|
2
|
-
<div class="position-fixed
|
2
|
+
<div class="position-fixed d-xl-none mobile-navigation" role="navigation" aria-label="<%= Spree.t('nav_bar.mobile') %>">
|
3
3
|
<div class="container d-flex align-items-center justify-content-between header-spree" data-hook>
|
4
4
|
<button class="m-0 p-0" id="mobile-navigation-back-button" aria-label="<%= Spree.t('nav_bar.go_to_previous_menu') %>">
|
5
5
|
<%= icon(name: 'arrow-right',
|
@@ -4,8 +4,8 @@
|
|
4
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
|
-
width:
|
8
|
-
height:
|
7
|
+
width: 24,
|
8
|
+
height: 24) %>
|
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">
|
@@ -19,8 +19,8 @@
|
|
19
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
|
-
width:
|
23
|
-
height:
|
22
|
+
width: 24,
|
23
|
+
height: 24) %>
|
24
24
|
</button>
|
25
25
|
|
26
26
|
<div id="link-to-account" class="dropdown-menu dropdown-menu-right text-right">
|
@@ -29,7 +29,7 @@
|
|
29
29
|
</li>
|
30
30
|
<% end %>
|
31
31
|
<li id="link-to-cart">
|
32
|
-
<%= render 'spree/shared/cart', class: 'd-inline-block cart-icon', size:
|
32
|
+
<%= render 'spree/shared/cart', class: 'd-inline-block cart-icon', size: 24, item_count: 0 %>
|
33
33
|
</li>
|
34
34
|
<%= render partial: 'spree/shared/internationalization_options' %>
|
35
35
|
</ul>
|
@@ -15,7 +15,7 @@
|
|
15
15
|
<% end %>
|
16
16
|
<p>
|
17
17
|
|
18
|
-
<div class="btn btn-primary
|
18
|
+
<div class="btn btn-primary font-weight-bold d-flex no-product-available-button" id="no-product-available-hide-button">
|
19
19
|
<p class="d-flex m-auto no-product-available-button-text">
|
20
20
|
<%= Spree.t(:ok) %>
|
21
21
|
</p>
|
@@ -56,7 +56,7 @@
|
|
56
56
|
<%= Spree.t(:products) %>
|
57
57
|
</div>
|
58
58
|
<div class="d-table" data-hook="order_details">
|
59
|
-
<div class="d-none d-lg-table-row text-secondary
|
59
|
+
<div class="d-none d-lg-table-row text-secondary" data-hook="order_details_line_items_headers">
|
60
60
|
<p class="d-table-cell pb-1">
|
61
61
|
<%= Spree.t(:product) %>
|
62
62
|
</p>
|
@@ -82,7 +82,7 @@
|
|
82
82
|
<%= link_to item.name, spree.product_path(item.product), class: 'checkout-confirm-order-details-line-items-line-item-name-link' %>
|
83
83
|
</div>
|
84
84
|
<% unless item.variant.is_master? %>
|
85
|
-
<ul class="checkout-confirm-order-details-line-items-line-item-name-options
|
85
|
+
<ul class="checkout-confirm-order-details-line-items-line-item-name-options list-unstyled mb-0">
|
86
86
|
<% item.variant.option_values.sort { |ov| ov.option_type.position }.each do |ov| %>
|
87
87
|
<li>
|
88
88
|
<% # TODO: rework option values so options_text method can be used here %>
|
@@ -120,7 +120,7 @@
|
|
120
120
|
<% unless @order.uneditable? %>
|
121
121
|
<div data-hook="buttons">
|
122
122
|
<% submit_label_key = @order.confirm? ? :place_order : :save_and_continue %>
|
123
|
-
<%= submit_tag Spree.t(submit_label_key), class: 'btn btn-primary
|
123
|
+
<%= submit_tag Spree.t(submit_label_key), class: 'btn btn-primary font-weight-bold w-100 checkout-content-save-continue-button' %>
|
124
124
|
</div>
|
125
125
|
<% end %>
|
126
126
|
</div>
|
@@ -47,14 +47,14 @@
|
|
47
47
|
<div class="container-fluid">
|
48
48
|
<div class="row pb-4 justify-content-center">
|
49
49
|
<div class="col-12 col-lg-8">
|
50
|
-
<%= link_to spree.checkout_path, class: 'btn btn-primary w-100 font-weight-bold
|
50
|
+
<%= link_to spree.checkout_path, class: 'btn btn-primary w-100 font-weight-bold product-added-modal-button', method: :get do %>
|
51
51
|
<%= Spree.t(:checkout) %>
|
52
52
|
<% end %>
|
53
53
|
</div>
|
54
54
|
</div>
|
55
55
|
<div class="row justify-content-center">
|
56
56
|
<div class="col-12 col-lg-8">
|
57
|
-
<%= link_to spree.cart_path, class: 'btn btn-outline-primary w-100 font-weight-bold
|
57
|
+
<%= link_to spree.cart_path, class: 'btn btn-outline-primary w-100 font-weight-bold product-added-modal-button' do %>
|
58
58
|
<%= Spree.t('pdp.view_cart') %>
|
59
59
|
<% end %>
|
60
60
|
</div>
|
@@ -1,12 +1,12 @@
|
|
1
1
|
<div class="form-group mb-5">
|
2
|
-
<%= f.email_field :email, class: '
|
2
|
+
<%= f.email_field :email, class: 'form-control', placeholder: Spree.t(:email) %>
|
3
3
|
</div>
|
4
4
|
|
5
5
|
<div class="form-group mb-4">
|
6
|
-
<%= f.password_field :password, class: '
|
6
|
+
<%= f.password_field :password, class: 'form-control', placeholder: Spree.t(:password) %>
|
7
7
|
</div>
|
8
8
|
|
9
9
|
<div class="form-group mb-5">
|
10
|
-
<%= f.password_field :password_confirmation, class: '
|
10
|
+
<%= f.password_field :password_confirmation, class: 'form-control', placeholder: Spree.t(:confirm_password) %>
|
11
11
|
</div>
|
12
12
|
<div data-hook="signup_below_password_fields"></div>
|
@@ -7,7 +7,7 @@
|
|
7
7
|
<% child_taxons = [current_taxon, *current_taxon.children.where(hide_from_nav: false)] %>
|
8
8
|
<% if current_taxon.level > 0 && child_taxons.size > 1 %>
|
9
9
|
<div class="d-flex justify-content-center position-sticky sticky-top-90px taxon-subcategories-wrapper">
|
10
|
-
<div class="py-1
|
10
|
+
<div class="py-1 d-none d-xl-flex overflow-x taxon-subcategories">
|
11
11
|
<% child_taxons.each_with_index.map do |subcategory, index| %>
|
12
12
|
<%=
|
13
13
|
link_to_unless subcategory == taxon,
|
@@ -5,7 +5,7 @@
|
|
5
5
|
<%= form_for Spree.user_class.new, as: @user, url: spree.user_path(@user), method: :put do |f| %>
|
6
6
|
<%= render partial: 'spree/shared/user_form', locals: { f: f, remember_me_field: false } %>
|
7
7
|
<div>
|
8
|
-
<%= f.submit Spree.t(:update), class: 'btn btn-lg btn-block btn-primary
|
8
|
+
<%= f.submit Spree.t(:update), class: 'btn btn-lg btn-block btn-primary font-weight-bold' %>
|
9
9
|
</div>
|
10
10
|
<% end %>
|
11
11
|
</div>
|
@@ -12,7 +12,7 @@
|
|
12
12
|
<dd class="account-page-user-info-item-definition"><%= @user.email %></dd>
|
13
13
|
|
14
14
|
<div class="d-lg-inline-block account-page-user-info-item-store-credits">
|
15
|
-
<p class="my-0 text-
|
15
|
+
<p class="my-0 text-center">
|
16
16
|
<%= Spree.t(:store_credit_name) %>
|
17
17
|
<% @user.available_store_credits(current_store).each do |value| %>
|
18
18
|
<br><b class="account-page-user-info-item-store-credits-amount"><%= value %></b>
|
data/config/importmap.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
Rails.application.config.after_initialize do
|
2
|
+
if Spree::Core::Engine.backend_available?
|
3
|
+
action = ::Spree::Admin::Actions::ActionBuilder.new('preview', ->(resource) { "/products/#{resource.slug}" }).
|
4
|
+
with_icon_key('view.svg').
|
5
|
+
with_label_translation_key('admin.utilities.preview').
|
6
|
+
with_id('adminPreviewProduct').
|
7
|
+
with_target(:blank).
|
8
|
+
with_data_attributes({ turbo: false }).
|
9
|
+
build
|
10
|
+
|
11
|
+
Rails.application.config.spree_backend.actions[:product].add(action)
|
12
|
+
Rails.application.config.spree_backend.actions[:images].add(action)
|
13
|
+
Rails.application.config.spree_backend.actions[:variants].add(action)
|
14
|
+
Rails.application.config.spree_backend.actions[:prices].add(action)
|
15
|
+
Rails.application.config.spree_backend.actions[:stock].add(action)
|
16
|
+
Rails.application.config.spree_backend.actions[:product_properties].add(action)
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
en:
|
2
|
+
spree:
|
3
|
+
pdp:
|
4
|
+
checkout: Checkout
|
5
|
+
description: Description
|
6
|
+
details: Details
|
7
|
+
products_included_in_promotion: Products included in the promotion
|
8
|
+
quantity: Quantity
|
9
|
+
view_cart: View cart
|
10
|
+
you_may_also_like: You may also like
|
11
|
+
plp:
|
12
|
+
best_selling: Best Selling
|
13
|
+
clear_all: Clear All
|
14
|
+
collection: Collection
|
15
|
+
color: Color
|
16
|
+
done: Done
|
17
|
+
default: Default
|
18
|
+
filter_by: Filter By
|
19
|
+
newest_first: Newest First
|
20
|
+
no_results: No results
|
21
|
+
no_results_found: No results found
|
22
|
+
not_found_filters1: We couldn’t find a match for these filters.
|
23
|
+
not_found_filters2: Please try another choose.
|
24
|
+
not_found_text1: We couldn’t find products for '%{keywords}'.
|
25
|
+
not_found_text2: Please try another search.
|
26
|
+
price: Price
|
27
|
+
price_high_to_low: Price (High - Low)
|
28
|
+
price_low_to_high: Price (Low - High)
|
29
|
+
name_a_z: Name (A-Z)
|
30
|
+
name_z_a: Name (Z-A)
|
31
|
+
result: Result
|
32
|
+
results_for: Results For
|
33
|
+
size: Size
|
34
|
+
sort_by: Sort By
|
35
|
+
top_sellers: Top Sellers
|
36
|
+
type: Type
|
37
|
+
|
@@ -23,8 +23,6 @@ module Spree
|
|
23
23
|
directory 'homepage', './app/assets/images/homepage'
|
24
24
|
# SCSS theming
|
25
25
|
template 'variables.scss', './app/assets/stylesheets/spree/frontend/variables/variables.scss'
|
26
|
-
# Sprockets 4 manifest
|
27
|
-
template 'app/assets/config/manifest.js', force: Rails.env.test?
|
28
26
|
# home page template
|
29
27
|
directory 'home', './app/views/spree/home'
|
30
28
|
end
|
@@ -4,7 +4,7 @@ module Spree
|
|
4
4
|
preference :additional_filters_partials, :array, default: %w()
|
5
5
|
preference :always_put_site_name_in_title, :boolean, default: true
|
6
6
|
preference :coupon_codes_enabled, :boolean, default: true # Determines if we show coupon code form at cart and checkout
|
7
|
-
preference :http_cache_enabled, :boolean, default:
|
7
|
+
preference :http_cache_enabled, :boolean, default: false
|
8
8
|
preference :layout, :string, default: 'spree/layouts/spree_application'
|
9
9
|
preference :locale, :string, default: nil
|
10
10
|
preference :products_filters, :array, default: %w(keywords price sort_by)
|