spree_frontend 4.1.0.rc2 → 4.1.0.rc3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/javascripts/spree/frontend/cart.js +12 -0
- data/app/assets/javascripts/spree/frontend/checkout/address.js +2 -3
- data/app/assets/javascripts/spree/frontend/checkout/shipment.js +16 -4
- data/app/assets/javascripts/spree/frontend/views/spree/layouts/spree_application.js +30 -0
- data/app/assets/javascripts/spree/frontend/views/spree/products/modal_carousel.js +31 -12
- data/app/assets/javascripts/spree/frontend/views/spree/shared/carousel/thumbnails.js +77 -37
- data/app/assets/javascripts/spree/frontend/views/spree/shared/nav_bar.js +16 -7
- data/app/assets/javascripts/spree/frontend/views/spree/shared/product_added_modal.js +1 -1
- data/app/assets/stylesheets/spree/frontend/application.scss +1 -0
- data/app/assets/stylesheets/spree/frontend/components-bootstrap/modal.scss +4 -0
- data/app/assets/stylesheets/spree/frontend/components-custom/inputs.scss +14 -13
- data/app/assets/stylesheets/spree/frontend/views/spree/checkout/confirm.scss +5 -0
- data/app/assets/stylesheets/spree/frontend/views/spree/checkout/edit.scss +7 -0
- data/app/assets/stylesheets/spree/frontend/views/spree/checkout/registration.scss +0 -1
- data/app/assets/stylesheets/spree/frontend/views/spree/orders/edit.scss +9 -0
- data/app/assets/stylesheets/spree/frontend/views/spree/products/cart_form.scss +17 -15
- data/app/assets/stylesheets/spree/frontend/views/spree/products/show.scss +7 -0
- data/app/assets/stylesheets/spree/frontend/views/spree/shared/carousel/thumbnails.scss +3 -12
- data/app/assets/stylesheets/spree/frontend/views/spree/shared/delete_address_popup.scss +3 -26
- data/app/assets/stylesheets/spree/frontend/views/spree/shared/dropdown.scss +3 -0
- data/app/assets/stylesheets/spree/frontend/views/spree/shared/main_nav_bar.scss +2 -1
- data/app/assets/stylesheets/spree/frontend/views/spree/shared/quantity_select.scss +3 -1
- data/app/controllers/spree/products_controller.rb +13 -0
- data/app/controllers/spree/taxons_controller.rb +32 -7
- data/app/helpers/spree/addresses_helper.rb +3 -1
- data/app/helpers/spree/frontend_helper.rb +15 -6
- data/app/views/spree/checkout/_delivery.html.erb +2 -1
- data/app/views/spree/checkout/_summary.html.erb +29 -2
- data/app/views/spree/checkout/edit.html.erb +7 -5
- data/app/views/spree/checkout/registration.html.erb +1 -1
- data/app/views/spree/products/_cart_form.html.erb +2 -2
- data/app/views/spree/products/_filters_desktop.html.erb +3 -3
- data/app/views/spree/products/_filters_mobile.html.erb +7 -7
- data/app/views/spree/products/_gallery_modal.html.erb +2 -2
- data/app/views/spree/products/_sort_desktop.html.erb +2 -2
- data/app/views/spree/products/_sort_mobile.html.erb +2 -2
- data/app/views/spree/shared/_cart.html.erb +0 -2
- data/app/views/spree/shared/_checkout_header.html.erb +1 -1
- data/app/views/spree/shared/_copyright.html.erb +1 -1
- data/app/views/spree/shared/_header.html.erb +1 -1
- data/app/views/spree/shared/_link_to_cart.html.erb +5 -2
- data/app/views/spree/shared/_main_nav_bar.html.erb +3 -3
- data/app/views/spree/shared/_nav_bar.html.erb +1 -1
- data/app/views/spree/shared/_option_values.html.erb +1 -1
- data/app/views/spree/shared/_registration.html.erb +1 -1
- data/app/views/spree/shared/carousel/_thumbnails.html.erb +1 -1
- data/app/views/spree/taxons/_subcategories.html.erb +2 -3
- metadata +7 -6
@@ -1,22 +1,27 @@
|
|
1
1
|
module Spree
|
2
2
|
class TaxonsController < Spree::StoreController
|
3
|
+
include Spree::FrontendHelper
|
3
4
|
helper 'spree/products'
|
4
5
|
|
5
|
-
before_action :load_taxon
|
6
|
+
before_action :load_taxon
|
6
7
|
|
7
8
|
respond_to :html
|
8
9
|
|
9
10
|
def show
|
11
|
+
if stale?(etag: etag, last_modified: last_modified, public: true)
|
12
|
+
load_products
|
13
|
+
end
|
10
14
|
end
|
11
15
|
|
12
16
|
def product_carousel
|
13
|
-
if
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
+
if stale?(etag: carousel_etag, last_modified: last_modified, public: true)
|
18
|
+
load_products
|
19
|
+
if @products.any?
|
20
|
+
render template: 'spree/taxons/product_carousel', layout: false
|
21
|
+
else
|
22
|
+
head :no_content
|
23
|
+
end
|
17
24
|
end
|
18
|
-
|
19
|
-
fresh_when etag: "product-carousel/#{@taxon.cache_key_with_version}", last_modified: @taxon.updated_at.utc, public: true
|
20
25
|
end
|
21
26
|
|
22
27
|
private
|
@@ -33,5 +38,25 @@ module Spree
|
|
33
38
|
@searcher = build_searcher(params.merge(taxon: @taxon.id, include_images: true))
|
34
39
|
@products = @searcher.retrieve_products
|
35
40
|
end
|
41
|
+
|
42
|
+
def etag
|
43
|
+
[
|
44
|
+
store_etag,
|
45
|
+
@taxon,
|
46
|
+
available_option_types_cache_key,
|
47
|
+
filtering_params_cache_key
|
48
|
+
]
|
49
|
+
end
|
50
|
+
|
51
|
+
def carousel_etag
|
52
|
+
[
|
53
|
+
store_etag,
|
54
|
+
@taxon
|
55
|
+
]
|
56
|
+
end
|
57
|
+
|
58
|
+
def last_modified
|
59
|
+
@taxon.updated_at&.utc
|
60
|
+
end
|
36
61
|
end
|
37
62
|
end
|
@@ -7,10 +7,12 @@ module Spree
|
|
7
7
|
yield
|
8
8
|
else
|
9
9
|
is_required = Spree::Address.required_fields.include?(method)
|
10
|
+
method_name = I18n.t("activerecord.attributes.spree/address.#{method}")
|
11
|
+
required = Spree.t(:required)
|
10
12
|
form.text_field(method,
|
11
13
|
class: [is_required ? 'required' : nil, 'spree-flat-input'].compact,
|
12
14
|
required: is_required,
|
13
|
-
placeholder:
|
15
|
+
placeholder: is_required ? "#{method_name} #{required}" : method_name)
|
14
16
|
end
|
15
17
|
end
|
16
18
|
end
|
@@ -11,13 +11,14 @@ module Spree
|
|
11
11
|
return '' if current_page?('/') || taxon.nil?
|
12
12
|
|
13
13
|
separator = raw(separator)
|
14
|
-
crumbs = [content_tag(:li, content_tag(:span, link_to(content_tag(:span, Spree.t(:home), itemprop: 'name'), spree.root_path, itemprop: 'url') + separator, itemprop: 'item'), itemscope: 'itemscope', itemtype: 'https://schema.org/ListItem', itemprop: 'itemListElement', class: 'breadcrumb-item')]
|
14
|
+
crumbs = [content_tag(:li, content_tag(:span, link_to(content_tag(:span, Spree.t(:home), itemprop: 'name'), spree.root_path, itemprop: 'url') + separator, itemprop: 'item'), itemscope: 'itemscope', itemtype: 'https://schema.org/ListItem', itemprop: 'itemListElement', itemid: spree.root_path, class: 'breadcrumb-item', position: 0)]
|
15
15
|
if taxon
|
16
|
-
|
17
|
-
crumbs << content_tag(:li, content_tag(:span, link_to(content_tag(:span,
|
18
|
-
crumbs << content_tag(:li, content_tag(:span, content_tag(:span,
|
16
|
+
ancestors = taxon.ancestors.where.not(parent_id: nil)
|
17
|
+
crumbs << ancestors.each_with_index.map { |ancestor, index| content_tag(:li, content_tag(:span, link_to(content_tag(:span, ancestor.name, itemprop: 'name'), seo_url(ancestor, params: permitted_product_params), itemprop: 'url', itemid: seo_url(ancestor, params: permitted_product_params), position: index + 1) + separator, itemprop: 'item'), itemscope: 'itemscope', itemtype: 'https://schema.org/ListItem', itemprop: 'itemListElement', itemid: seo_url(ancestor, params: permitted_product_params), class: 'breadcrumb-item', position: index + 1) }
|
18
|
+
crumbs << content_tag(:li, content_tag(:span, link_to(content_tag(:span, taxon.name, itemprop: 'name'), seo_url(taxon, params: permitted_product_params), itemprop: 'url', itemid: seo_url(taxon, params: permitted_product_params), position: ancestors.size + 1) + separator, itemprop: 'item'), class: 'breadcrumb-item', itemscope: 'itemscope', itemtype: 'https://schema.org/ListItem', itemprop: 'itemListElement', itemid: seo_url(taxon, params: permitted_product_params), position: ancestors.size + 1)
|
19
|
+
crumbs << content_tag(:li, content_tag(:span, content_tag(:span, product.name) + separator, itemid: spree.product_path(product, taxon_id: taxon.try(:id)), position: ancestors.size + 2), class: 'breadcrumb-item', itemid: spree.product_path(product, taxon_id: taxon.try(:id)), position: ancestors.size + 2) if product
|
19
20
|
else
|
20
|
-
crumbs << content_tag(:li, content_tag(:span, Spree.t(:products), itemprop: 'item'), class: 'active', itemscope: 'itemscope', itemtype: 'https://schema.org/ListItem', itemprop: 'itemListElement')
|
21
|
+
crumbs << content_tag(:li, content_tag(:span, Spree.t(:products), itemprop: 'item'), class: 'active', itemscope: 'itemscope', itemtype: 'https://schema.org/ListItem', itemprop: 'itemListElement', position: 1)
|
21
22
|
end
|
22
23
|
crumb_list = content_tag(:ol, raw(crumbs.flatten.map(&:mb_chars).join), class: 'breadcrumb', itemscope: 'itemscope', itemtype: 'https://schema.org/BreadcrumbList')
|
23
24
|
content_tag(:nav, crumb_list, id: 'breadcrumbs', class: 'col-12 mt-1 mt-sm-3 mt-lg-4', aria: { label: 'breadcrumb' })
|
@@ -205,8 +206,16 @@ module Spree
|
|
205
206
|
available_option_types.map(&:filter_param).concat(static_filters)
|
206
207
|
end
|
207
208
|
|
209
|
+
def filtering_params_cache_key
|
210
|
+
params.permit(*filtering_params)&.reject { |_, v| v.blank? }&.to_s
|
211
|
+
end
|
212
|
+
|
213
|
+
def available_option_types_cache_key
|
214
|
+
@available_option_types_cache_key ||= Spree::OptionType.maximum(:updated_at)&.utc&.to_i
|
215
|
+
end
|
216
|
+
|
208
217
|
def available_option_types
|
209
|
-
@available_option_types ||= Rails.cache.fetch(
|
218
|
+
@available_option_types ||= Rails.cache.fetch("available-option-types/#{available_option_types_cache_key}") do
|
210
219
|
Spree::OptionType.includes(:option_values).to_a
|
211
220
|
end
|
212
221
|
@available_option_types
|
@@ -15,7 +15,8 @@
|
|
15
15
|
rate.id,
|
16
16
|
data: {
|
17
17
|
behavior: 'shipping-method-selector',
|
18
|
-
cost: rate.display_cost
|
18
|
+
cost: rate.display_cost,
|
19
|
+
tax: rate.display_tax_amount
|
19
20
|
} %>
|
20
21
|
<span class="spree-radio-label-custom-input"></span>
|
21
22
|
<span class="rate-name"><%= rate.name %></span>
|
@@ -13,13 +13,40 @@
|
|
13
13
|
|
14
14
|
<% order.all_adjustments.nonzero.tax.eligible.group_by(&:label).each do |label, adjustments| %>
|
15
15
|
<div class="d-table-cell"><%= label %></div>
|
16
|
-
|
16
|
+
<% tax_total = Spree::Money.new(adjustments.sum(&:amount), currency: order.currency) %>
|
17
|
+
<div class="d-table-cell text-right"
|
18
|
+
data-hook='tax-total'
|
19
|
+
data-currency='<%= Money::Currency.find(order.currency).symbol %>'
|
20
|
+
data-non-shipment-tax='<%= adjustments.reject{ |adj| adj.adjustable_type== 'Spree::Shipment'}.sum(&:amount) %>'
|
21
|
+
thousands-separator='<%= tax_total.thousands_separator %>'
|
22
|
+
decimal-mark='<%= tax_total.decimal_mark %>'
|
23
|
+
precision='<%= Money::Currency.find(order.currency).exponent %>'
|
24
|
+
>
|
25
|
+
<%= tax_total.to_html %>
|
26
|
+
</div>
|
27
|
+
<% end %>
|
28
|
+
<% if order.all_adjustments.nonzero.tax.eligible.empty? %>
|
29
|
+
<div class="d-table-cell"><%= Spree::TaxRate.first&.name || Spree.t(:tax) %></div>
|
30
|
+
<div class="d-table-cell text-right"
|
31
|
+
data-hook='tax-total'
|
32
|
+
data-non-shipment-tax='0'
|
33
|
+
>
|
34
|
+
<%= Spree::Money.new(0, currency: order.currency) %>
|
35
|
+
</div>
|
17
36
|
<% end %>
|
18
37
|
|
19
38
|
<% if order.passed_checkout_step?("address") && order.shipments.any? %>
|
20
39
|
<div class="d-table-cell"><%= Spree.t(:shipping) %>:</div>
|
21
40
|
<% shipping_total = Spree::Money.new(order.shipments.to_a.sum(&:cost), currency: order.currency) %>
|
22
|
-
<div class="d-table-cell text-right"
|
41
|
+
<div class="d-table-cell text-right"
|
42
|
+
data-hook='shipping-total'
|
43
|
+
data-currency='<%= Money::Currency.find(order.currency).symbol %>'
|
44
|
+
thousands-separator='<%= shipping_total.thousands_separator %>'
|
45
|
+
decimal-mark='<%= shipping_total.decimal_mark %>'
|
46
|
+
precision='<%= Money::Currency.find(order.currency).exponent %>'
|
47
|
+
>
|
48
|
+
<%= shipping_total.to_html %>
|
49
|
+
</div>
|
23
50
|
|
24
51
|
<% if order.shipment_adjustments.nonzero.exists? %>
|
25
52
|
<% order.shipment_adjustments.nonzero.promotion.eligible.group_by(&:label).each do |label, adjustments| %>
|
@@ -20,11 +20,13 @@
|
|
20
20
|
</div>
|
21
21
|
|
22
22
|
<% unless @order.confirm? %>
|
23
|
-
<div id="checkout-summary" class="col-md-12 col-lg-auto" data-hook="checkout_summary_box">
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
23
|
+
<div id="checkout-summary" class="col-md-12 col-lg-auto h-100" data-hook="checkout_summary_box">
|
24
|
+
<div class="checkout-summary-container position-sticky">
|
25
|
+
<%= render partial: 'summary', locals: { order: @order } %>
|
26
|
+
<div data-hook="buttons">
|
27
|
+
<% submit_label_key = @order.confirm? ? :place_order : :save_and_continue %>
|
28
|
+
<%= submit_tag Spree.t(submit_label_key), class: 'btn btn-primary text-uppercase font-weight-bold w-100 checkout-content-save-continue-button' %>
|
29
|
+
</div>
|
28
30
|
</div>
|
29
31
|
</div>
|
30
32
|
<% end %>
|
@@ -5,7 +5,7 @@
|
|
5
5
|
<%= render partial: 'spree/shared/login' if defined?(spree_login_path) %>
|
6
6
|
</div>
|
7
7
|
<div class="col-xs-12 col-lg-6">
|
8
|
-
<div class="col-lg-11 mx-auto
|
8
|
+
<div class="col-lg-11 mx-auto">
|
9
9
|
<% if defined?(spree_signup_path) %>
|
10
10
|
<%= render partial: 'spree/shared/registration', locals: { registration_button: '' } %>
|
11
11
|
<div class="checkout-registration-styled-or">
|
@@ -14,7 +14,7 @@
|
|
14
14
|
<%= render 'cart_form_availability_templates', type: 'out-of-stock' %>
|
15
15
|
</template>
|
16
16
|
|
17
|
-
<% is_product_available_in_currency = product_available_in_currency?
|
17
|
+
<% is_product_available_in_currency = product_available_in_currency? %>
|
18
18
|
<% default_variant = default_variant(@variants) %>
|
19
19
|
|
20
20
|
<%= form_for :order, html: {
|
@@ -27,7 +27,7 @@
|
|
27
27
|
<div id="inside-product-cart-form" data-hook="inside_product_cart_form">
|
28
28
|
<% if is_product_available_in_currency %>
|
29
29
|
<div id="product-price" class="mb-2 text-center text-md-left add-to-cart-form-price" data-hook="product_price">
|
30
|
-
<span class="price selling" content="<%= @
|
30
|
+
<span class="price selling" content="<%= @product_price.to_d %>">
|
31
31
|
<%= display_price(default_variant) %>
|
32
32
|
</span>
|
33
33
|
<span content="<%= current_currency %>"></span>
|
@@ -1,7 +1,7 @@
|
|
1
|
-
<% cache base_cache_key + [available_option_types, permitted_params
|
1
|
+
<% cache base_cache_key + [available_option_types, permitted_params] do %>
|
2
2
|
<div id="plp-filters-accordion" class="d-none d-lg-block col-lg-3 pr-5 position-sticky h-100 plp-filters" data-hook="taxon_sidebar_navigation">
|
3
3
|
<% @available_option_types.each do |option_type| %>
|
4
|
-
<div class="w-100
|
4
|
+
<div class="w-100 card plp-filters-card">
|
5
5
|
<% ot_downcase_name = option_type.filter_param %>
|
6
6
|
<% option_type_name = ot_downcase_name.titleize %>
|
7
7
|
|
@@ -29,7 +29,7 @@
|
|
29
29
|
</div>
|
30
30
|
<% end %>
|
31
31
|
|
32
|
-
<div class="w-100
|
32
|
+
<div class="w-100 card plp-filters-card">
|
33
33
|
<div class="card-header <%= 'collapsed' if params[:price].blank? %> px-1 plp-filters-card-header" id="filtersPrice" data-toggle="collapse" data-target="#collapseFilterPrice" aria-expanded="false" aria-controls="collapseFilterPrice" role="heading" aria-level="2">
|
34
34
|
<%= Spree.t('plp.price') %>
|
35
35
|
<%= icon(name: 'plus',
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<% is_visible = params[:menu_open] ? 'block' : 'none' %>
|
2
2
|
|
3
|
-
|
4
|
-
|
3
|
+
<div id="filter-by-overlay" class="d-lg-none plp-overlay" style="display: <%= is_visible %>;">
|
4
|
+
<% cache base_cache_key + [available_option_types, permitted_params] do %>
|
5
5
|
<div class="plp-scroll">
|
6
6
|
<div class="container">
|
7
7
|
<div class="plp-overlay-header">
|
@@ -53,10 +53,10 @@
|
|
53
53
|
</div>
|
54
54
|
</div>
|
55
55
|
</div>
|
56
|
+
<% end %>
|
56
57
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
</div>
|
58
|
+
<div class="container position-absolute text-center mb-2 plp-overlay-buttons pt-3">
|
59
|
+
<%= link_to Spree.t('plp.clear_all'), permitted_params.select { |key, value| key == "sort_by"}, class: 'btn spree-btn btn-outline-primary w-100 mb-4' %>
|
60
|
+
<%= link_to Spree.t('plp.done'), permitted_params, class: 'btn btn-primary spree-btn w-100' %>
|
61
61
|
</div>
|
62
|
-
|
62
|
+
</div>
|
@@ -1,13 +1,13 @@
|
|
1
1
|
<div class="modal fade" id="picturesModal" tabindex="-1" role="dialog" >
|
2
2
|
<div class="modal-dialog--zoom modal-dialog mw-100 vh-100 mt-0 mb-0" role="document">
|
3
3
|
<div class="modal-content h-100">
|
4
|
-
<div class="modal-body">
|
4
|
+
<div class="modal-body h-100">
|
5
5
|
<button class="modal-close" type="button" class="close" data-dismiss="modal" aria-label="Close">
|
6
6
|
<span aria-hidden="true">✕</span>
|
7
7
|
</button>
|
8
8
|
<div class="d-flex justify-content-center align-items-center product-details-images h-100">
|
9
9
|
<% if @product_images.size > 1 %>
|
10
|
-
<div class="d-none d-sm-block product-details-thumbnails">
|
10
|
+
<div class="h-100 d-none d-sm-block product-details-thumbnails">
|
11
11
|
<%= render 'spree/shared/carousel/thumbnails',
|
12
12
|
images: @product_images,
|
13
13
|
group_id: 'main-product-modal-carousel',
|
@@ -13,8 +13,8 @@
|
|
13
13
|
|
14
14
|
<div class="dropdown-menu text-right plp-sort-dropdown">
|
15
15
|
<ul class="pt-1 plp-sort-dropdown-ul">
|
16
|
-
<li class="p-3 plp-sort-dropdown-ul-li<%= '--active' if params[:sort_by]
|
17
|
-
<%= link_to Spree.t('plp.default'), url_for(permitted_params.merge(sort_by:
|
16
|
+
<li class="p-3 plp-sort-dropdown-ul-li<%= '--active' if params[:sort_by].blank? %>">
|
17
|
+
<%= link_to Spree.t('plp.default'), url_for(permitted_params.merge(sort_by: nil)) %>
|
18
18
|
</li>
|
19
19
|
<li class="p-3 plp-sort-dropdown-ul-li<%= '--active' if params[:sort_by] == 'newest-first' %>">
|
20
20
|
<%= link_to Spree.t('plp.newest_first'), url_for(permitted_params.merge(sort_by: 'newest-first')) %>
|
@@ -7,8 +7,8 @@
|
|
7
7
|
</div>
|
8
8
|
<div class="plp-overlay-header-border"></div>
|
9
9
|
<ul class="pt-1 plp-overlay-ul">
|
10
|
-
<li class="p-3 plp-overlay-ul-li<%= '--active' if params[:sort_by]
|
11
|
-
<a href="<%= url_for(permitted_params.merge(sort_by:
|
10
|
+
<li class="p-3 plp-overlay-ul-li<%= '--active' if params[:sort_by].blank? %>">
|
11
|
+
<a 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>
|
@@ -10,7 +10,7 @@
|
|
10
10
|
<%= link_to Spree.t('back'), spree.cart_path, class: "d-sm-none text-uppercase", method: :get %>
|
11
11
|
</div>
|
12
12
|
<div class="d-flex flex-nowrap align-items-center justify-content-center">
|
13
|
-
<figure class="logo flex-grow-0 flex-xl-grow-0 order-xl-0 header-spree-fluid-logo">
|
13
|
+
<figure class="logo flex-grow-0 flex-xl-grow-0 order-xl-0 header-spree-fluid-logo m-0">
|
14
14
|
<%= logo(Spree::Config[:logo], method: :get) %>
|
15
15
|
</figure>
|
16
16
|
</div>
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<div class="border-
|
1
|
+
<div class="border-top footer-spree-copyright">
|
2
2
|
<div class="container">
|
3
3
|
<div class="d-flex flex-column flex-lg-row align-items-center justify-content-center py-3 footer-spree-copyright-content">
|
4
4
|
<div>Designed and developed by</div>
|
@@ -11,7 +11,7 @@
|
|
11
11
|
height: 16) %>
|
12
12
|
</button>
|
13
13
|
</div>
|
14
|
-
<figure class="logo flex-grow-0 flex-xl-grow-1 order-xl-0 header-spree-fluid-logo">
|
14
|
+
<figure class="logo flex-grow-0 flex-xl-grow-1 order-xl-0 header-spree-fluid-logo m-0">
|
15
15
|
<%= logo %>
|
16
16
|
</figure>
|
17
17
|
<div id="main-nav-bar" class="flex-grow-0 d-none d-xl-block h-100 header-spree-fluid-primary-navigation">
|
@@ -1,2 +1,5 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
<% item_count = simple_current_order&.item_count || 0 %>
|
2
|
+
<% cache [base_cache_key, 'cart-indicator', item_count] do %>
|
3
|
+
<%= render 'spree/shared/cart', class: 'd-none d-xl-inline-block cart-icon--xl', size: 36, item_count: item_count %>
|
4
|
+
<%= render 'spree/shared/cart', class: 'd-xl-none', size: 24, item_count: item_count %>
|
5
|
+
<% end %>
|
@@ -2,7 +2,7 @@
|
|
2
2
|
<ul class="nav h-100 main-nav-bar">
|
3
3
|
<% spree_navigation_data.each do |root| %>
|
4
4
|
<li class="navbar main-nav-bar-dropdown main-nav-bar-category">
|
5
|
-
<%= link_to root[:title], root[:url], class:
|
5
|
+
<%= link_to root[:title], root[:url], class: "p-2 main-nav-bar-item main-nav-bar-category-button" %>
|
6
6
|
<% if root[:items].present? || root[:promo_banners].present? %>
|
7
7
|
<div class="w-100 shadow main-nav-bar-category-dropdown">
|
8
8
|
<div class="container p-0 d-flex justify-content-xl-around mx-auto">
|
@@ -17,7 +17,7 @@
|
|
17
17
|
<ul class="pl-0">
|
18
18
|
<% root[:items].each do |item| %>
|
19
19
|
<li>
|
20
|
-
<%= link_to item[:title], item[:url], class:
|
20
|
+
<%= link_to item[:title], item[:url], class: "text-uppercase main-nav-bar-category-links" %>
|
21
21
|
</li>
|
22
22
|
<% end %>
|
23
23
|
</ul>
|
@@ -26,7 +26,7 @@
|
|
26
26
|
<% if root[:promo_banners].present? %>
|
27
27
|
<% root[:promo_banners].each do |promo_banner| %>
|
28
28
|
<%= link_to promo_banner[:url] do %>
|
29
|
-
<div class="category-image
|
29
|
+
<div class="category-image text-center mx-3">
|
30
30
|
<%= main_nav_image(promo_banner[:image], promo_banner[:title]) %>
|
31
31
|
<div class="category-box">
|
32
32
|
<div class="category-box-small-text">
|
@@ -21,7 +21,7 @@
|
|
21
21
|
<% if defined?(spree.account_link_path) %>
|
22
22
|
<li>
|
23
23
|
<div class="dropdown navbar-right-dropdown">
|
24
|
-
<button type="button" data-toggle="dropdown" class="navbar-right-dropdown-toggle" aria-label="<%= Spree.t('nav_bar.show_user_menu')%>">
|
24
|
+
<button id="account-button" type="button" data-toggle="dropdown" class="navbar-right-dropdown-toggle" aria-label="<%= Spree.t('nav_bar.show_user_menu')%>">
|
25
25
|
<%= icon(name: 'person',
|
26
26
|
classes: 'd-none d-xl-inline-block',
|
27
27
|
width: 41.4,
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<% cache base_cache_key + [ot_downcase_name, params_ot_downcase_name, permitted_params
|
1
|
+
<% cache base_cache_key + [ot_downcase_name, params_ot_downcase_name, permitted_params] do %>
|
2
2
|
<% selected_option_values = params_ot_downcase_name&.split(',')&.map(&:to_i) || [] %>
|
3
3
|
<% option_type.option_values.each do |option_value| %>
|
4
4
|
<% id = option_value.id %>
|
@@ -1,4 +1,4 @@
|
|
1
1
|
<% if defined?(spree_signup_path) %>
|
2
|
-
<h3 class="spree-
|
2
|
+
<h3 class="spree-mb-large spree-mt-large spree-header"><%= Spree.t('dont_have_account') %></h3>
|
3
3
|
<%= link_to Spree.t(:sign_up), spree_signup_path, class: "btn btn-block btn-outline-primary spree-btn #{registration_button}" %>
|
4
4
|
<% end %>
|
@@ -13,7 +13,7 @@
|
|
13
13
|
<% if image_index % per_page == 0 %>
|
14
14
|
<div class="carousel-item product-thumbnails-carousel-item<%= ' active' if image_index == 0 %>">
|
15
15
|
<div class="h-100 d-flex flex-column justify-content-center">
|
16
|
-
<div class="product-thumbnails-carousel-item-content">
|
16
|
+
<div class="product-thumbnails-carousel-item-content py-1">
|
17
17
|
<% end %>
|
18
18
|
<div
|
19
19
|
class="product-thumbnails-carousel-item-single product-thumbnails-carousel-item-single--visible"
|
@@ -1,7 +1,6 @@
|
|
1
1
|
<% cache([base_cache_key, taxon, 'subcategories', permitted_product_params]) do %>
|
2
|
-
<% [taxon.parent, taxon].each do |current_taxon| %>
|
3
|
-
<% child_taxons = [current_taxon, *current_taxon.children] %>
|
4
|
-
|
2
|
+
<% [taxon.parent, taxon].compact.each do |current_taxon| %>
|
3
|
+
<% child_taxons = [current_taxon, *current_taxon.children.where(hide_from_nav: false)] %>
|
5
4
|
<% if current_taxon.level > 0 && child_taxons.size > 1 %>
|
6
5
|
<div class="d-flex justify-content-center position-sticky sticky-top-90px taxon-subcategories-wrapper">
|
7
6
|
<div class="py-1 text-uppercase d-none d-xl-flex overflow-x taxon-subcategories">
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spree_frontend
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.1.0.
|
4
|
+
version: 4.1.0.rc3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sean Schofield
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-02-
|
11
|
+
date: 2020-02-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: spree_api
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 4.1.0.
|
19
|
+
version: 4.1.0.rc3
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 4.1.0.
|
26
|
+
version: 4.1.0.rc3
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: spree_core
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - '='
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 4.1.0.
|
33
|
+
version: 4.1.0.rc3
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - '='
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 4.1.0.
|
40
|
+
version: 4.1.0.rc3
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: bootstrap
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -340,6 +340,7 @@ files:
|
|
340
340
|
- app/assets/stylesheets/spree/frontend/views/spree/shared/cart.scss
|
341
341
|
- app/assets/stylesheets/spree/frontend/views/spree/shared/category_nav_bar.scss
|
342
342
|
- app/assets/stylesheets/spree/frontend/views/spree/shared/delete_address_popup.scss
|
343
|
+
- app/assets/stylesheets/spree/frontend/views/spree/shared/dropdown.scss
|
343
344
|
- app/assets/stylesheets/spree/frontend/views/spree/shared/footer.scss
|
344
345
|
- app/assets/stylesheets/spree/frontend/views/spree/shared/header.scss
|
345
346
|
- app/assets/stylesheets/spree/frontend/views/spree/shared/login.scss
|