workarea-nvy_theme 1.1.4 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.eslintrc.json +35 -0
- data/.github/workflows/ci.yml +60 -0
- data/.gitignore +1 -2
- data/.rubocop.yml +2 -7
- data/.stylelintrc.json +8 -0
- data/Gemfile +0 -1
- data/README.md +38 -51
- data/app/assets/javascripts/workarea/storefront/modules/mobile_filter_buttons.js +3 -1
- data/app/assets/stylesheets/workarea/storefront/blog/components/_blog_entry.scss +0 -6
- data/app/assets/stylesheets/workarea/storefront/components/_product_list.scss +14 -7
- data/app/views/layouts/workarea/storefront/application.html.haml +11 -17
- data/app/views/layouts/workarea/storefront/checkout.html.haml +1 -1
- data/app/views/workarea/storefront/blog_entries/show.html.haml +26 -20
- data/app/views/workarea/storefront/blogs/_blog_navigation.html.haml +6 -5
- data/app/views/workarea/storefront/carts/_move_to_wish_list.html.haml +4 -3
- data/app/views/workarea/storefront/carts/show.html.haml +1 -1
- data/app/views/workarea/storefront/categories/show.html.haml +3 -2
- data/app/views/workarea/storefront/checkouts/_gift_card_payment.html.haml +20 -12
- data/app/views/workarea/storefront/checkouts/confirmation.html.haml +3 -1
- data/app/views/workarea/storefront/content_blocks/_category_summary.html.haml +2 -1
- data/app/views/workarea/storefront/content_blocks/_product_insights.html.haml +2 -1
- data/app/views/workarea/storefront/content_blocks/_product_list.html.haml +2 -1
- data/app/views/workarea/storefront/menus/index.html.haml +4 -3
- data/app/views/workarea/storefront/orders/_summary.html.haml +7 -2
- data/app/views/workarea/storefront/products/_media.html.haml +3 -3
- data/app/views/workarea/storefront/products/_rating.html.haml +1 -2
- data/app/views/workarea/storefront/products/_reviews.html.haml +5 -5
- data/app/views/workarea/storefront/products/_reviews_aggregate.html.haml +2 -2
- data/app/views/workarea/storefront/products/show.html.haml +6 -3
- data/app/views/workarea/storefront/products/templates/_generic.html.haml +4 -4
- data/app/views/workarea/storefront/products/templates/_gift_card.html.haml +4 -4
- data/app/views/workarea/storefront/products/templates/_option_selects.html.haml +4 -4
- data/app/views/workarea/storefront/products/templates/_option_thumbnails.html.haml +4 -4
- data/app/views/workarea/storefront/products/templates/_swatches.html.haml +4 -4
- data/app/views/workarea/storefront/recent_views/show.html.haml +3 -10
- data/app/views/workarea/storefront/recommendations/show.html.haml +1 -1
- data/app/views/workarea/storefront/reviews/new.html.haml +3 -3
- data/app/views/workarea/storefront/searches/show.html.haml +4 -5
- data/app/views/workarea/storefront/shares/_share_buttons.html.haml +0 -3
- data/app/views/workarea/storefront/users/accounts/_wish_list_summary.html.haml +3 -2
- data/app/views/workarea/storefront/users/accounts/edit.html.haml +3 -3
- data/app/views/workarea/storefront/users/accounts/show.html.haml +3 -3
- data/app/views/workarea/storefront/users/addresses/edit.html.haml +3 -3
- data/app/views/workarea/storefront/users/addresses/new.html.haml +3 -3
- data/app/views/workarea/storefront/users/credit_cards/edit.html.haml +3 -3
- data/app/views/workarea/storefront/users/credit_cards/new.html.haml +3 -3
- data/lib/workarea/nvy_theme/version.rb +1 -1
- data/package.json +9 -0
- data/test/helpers/workarea/storefront/reviews_helper_test.decorator +9 -0
- data/test/system/workarea/admin/guest_browsing_system_test.decorator +1 -1
- data/test/system/workarea/storefront/analytics_system_test.decorator +1 -1
- data/workarea-nvy_theme.gemspec +11 -11
- data/yarn.lock +3265 -0
- metadata +42 -55
- data/LICENSE.md +0 -3
@@ -1,6 +1,7 @@
|
|
1
1
|
- if blog.tags.present?
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
-
|
6
|
-
|
2
|
+
%h2= t('workarea.storefront.blogs.tags')
|
3
|
+
%ul.secondary-nav{ role: 'navigation' }
|
4
|
+
- blog.tags.each do |tag|
|
5
|
+
%li.secondary-nav__item
|
6
|
+
= link_to blog_tagged_path(blog, tag[:name]), class: 'secondary-nav__link' do
|
7
|
+
= t('workarea.storefront.blogs.tag_link', tag)
|
@@ -1,6 +1,7 @@
|
|
1
1
|
.grid__cell
|
2
2
|
= form_tag from_cart_users_wish_list_path(item), method: 'post' do
|
3
3
|
= hidden_field_tag :return_to, users_wish_list_path, id: "wishlist_return_to_#{dom_id(item)}"
|
4
|
-
|
5
|
-
=
|
6
|
-
|
4
|
+
%p
|
5
|
+
= button_tag t('workarea.storefront.wish_lists.move_to_wish_list'), value: 'move_to_wish_list', class: 'text-button', data: { analytics: add_to_wish_list_analytics_data(item.product).to_json } do
|
6
|
+
= inline_svg('workarea/storefront/icons/heart.svg', class: 'text-button__icon')
|
7
|
+
= t('workarea.storefront.wish_lists.move_to_wish_list')
|
@@ -168,7 +168,7 @@
|
|
168
168
|
.grid
|
169
169
|
- @cart.recommendations.each do |product|
|
170
170
|
.grid__cell.grid__cell--50.grid__cell--25-at-medium
|
171
|
-
.product-summary.product-summary--small
|
171
|
+
.product-summary.product-summary--small
|
172
172
|
= render 'workarea/storefront/products/summary', product: product
|
173
173
|
|
174
174
|
- if @cart.quantity.zero?
|
@@ -3,10 +3,10 @@
|
|
3
3
|
|
4
4
|
- add_css(@category.css)
|
5
5
|
- add_javascript(@category.javascript)
|
6
|
+
- add_head_content(@category.head_content)
|
6
7
|
|
7
8
|
- content_for :head do
|
8
9
|
- cache "#{@category.cache_key}/head", expires_in: Workarea.config.cache_expirations.categories_fragment_cache do
|
9
|
-
%meta{ property: 'recent-view', content: recent_view_content(category_id: @category.id) }
|
10
10
|
%meta{ property: 'global-id', content: @category.to_global_id.to_param }
|
11
11
|
|
12
12
|
- if @category.first_page? && !@category.has_filters?
|
@@ -91,10 +91,11 @@
|
|
91
91
|
.pagination{ data: { analytics: product_list_analytics_data(@category.name).to_json, pagination: pagination_data(@category.products), back_to_top_button: '' } }
|
92
92
|
.grid
|
93
93
|
- @category.products.each_with_index do |product, position|
|
94
|
+
= render_schema_org(product_schema(product))
|
94
95
|
= append_partials('storefront.category_browse_grid_item', product: product, position: position)
|
95
96
|
|
96
97
|
.grid__cell.grid__cell--50.grid__cell--33-at-medium{ data: { pagination_item: '' } }
|
97
|
-
.product-summary
|
98
|
+
.product-summary
|
98
99
|
= render 'workarea/storefront/products/summary', product: product
|
99
100
|
- if show_pagination?(@category.products)
|
100
101
|
.pagination__button
|
@@ -1,28 +1,36 @@
|
|
1
|
-
.checkout-payment__secondary-method{ class: step.
|
1
|
+
.checkout-payment__secondary-method{ class: step.gift_card? ? 'checkout-payment__secondary-method--visible' : nil }
|
2
2
|
|
3
|
-
- if step.
|
3
|
+
- if step.gift_card?
|
4
4
|
.message.message--info
|
5
5
|
%p.message__type
|
6
6
|
%span.message__icon= t('workarea.storefront.messages.info')
|
7
7
|
%p.message__text
|
8
|
-
#{t('workarea.storefront.gift_cards.
|
9
|
-
#{t('workarea.storefront.gift_cards.
|
8
|
+
#{t('workarea.storefront.gift_cards.balance_html', amount: number_to_currency(step.gift_card_balance))}
|
9
|
+
#{t('workarea.storefront.gift_cards.applied_to_order_html', amount: number_to_currency(step.gift_card_amount))}
|
10
10
|
|
11
|
-
- if step.order_covered_by_gift_card?
|
12
|
-
#{t('workarea.storefront.gift_cards.place_order', amount: number_to_currency(step.gift_card_amount))}
|
13
11
|
- if step.tender_required?
|
14
|
-
#{t('workarea.storefront.gift_cards.
|
12
|
+
#{t('workarea.storefront.gift_cards.tender_required_html', amount: number_to_currency(step.order_balance))}
|
13
|
+
- else
|
14
|
+
#{t('workarea.storefront.gift_cards.place_order')}
|
15
15
|
|
16
|
-
= optional_field(t('workarea.storefront.gift_cards.enter_gift_card_prompt'), step.
|
16
|
+
= optional_field(t('workarea.storefront.gift_cards.enter_gift_card_prompt'), step.gift_cards, step.failed_gift_card) do
|
17
17
|
|
18
18
|
%h2= t('workarea.storefront.gift_cards.gift_card')
|
19
19
|
|
20
|
-
= form_tag
|
20
|
+
= form_tag checkout_gift_cards_path, method: 'patch', id: 'gift_card_form', class: 'inline-form' do
|
21
21
|
|
22
22
|
.inline-form__cell
|
23
23
|
.value
|
24
|
-
= text_field_tag 'gift_card_number', step.
|
25
|
-
- if step.
|
26
|
-
%span.value__error= step.
|
24
|
+
= text_field_tag 'gift_card_number', step.failed_gift_card&.number, class: 'text-box', autocomplete: 'off', title: t('workarea.storefront.gift_cards.gift_card_number'), placeholder: t('workarea.storefront.gift_cards.gift_card_number')
|
25
|
+
- if step.failed_gift_card && step.failed_gift_card.errors[:number].present?
|
26
|
+
%span.value__error= step.failed_gift_card.errors[:number].first
|
27
27
|
.inline-form__cell
|
28
28
|
%p= button_tag t('workarea.storefront.gift_cards.apply_gift_card'), value: 'apply_gift_card', class: 'button button--large'
|
29
|
+
|
30
|
+
.applied-gift-cards
|
31
|
+
- step.gift_cards.each do |gift_card|
|
32
|
+
%p.applied-gift-card
|
33
|
+
%strong.applied-gift-card__number= gift_card.display_number
|
34
|
+
= link_to t('workarea.storefront.gift_cards.remove'), checkout_gift_cards_path(gift_card_id: gift_card.id), data: { method: :delete, confirm: t('workarea.storefront.gift_cards.remove_confirmation') }, class: 'applied-gift-card__remove-link'
|
35
|
+
%br
|
36
|
+
%span.applied-gift-card__applied= t('workarea.storefront.gift_cards.balance_applied_html', amount: number_to_currency(gift_card.amount), balance: number_to_currency(gift_card.balance))
|
@@ -8,6 +8,8 @@
|
|
8
8
|
= render_content_blocks(@content.content_blocks_for('confirmation'))
|
9
9
|
|
10
10
|
%p= t('workarea.storefront.checkouts.confirmation_text', email: @order.email)
|
11
|
+
= append_partials('storefront.checkout_confirmation_text')
|
12
|
+
|
11
13
|
|
12
14
|
- if @order.user.present?
|
13
15
|
|
@@ -37,5 +39,5 @@
|
|
37
39
|
%span.button-property__text= t('workarea.storefront.users.sign_up_for_email')
|
38
40
|
%p= button_tag t('workarea.storefront.users.create_account'), value: 'sign_up', class: 'button button--solid button--large', data: { disable_with: loading_indicator(t('workarea.storefront.users.create_account_disabled_text')) }
|
39
41
|
|
40
|
-
= render 'workarea/storefront/orders/summary', order: @order, recommendations: @order.recommendations
|
42
|
+
= render 'workarea/storefront/orders/summary', order: @order, recommendations: @order.recommendations
|
41
43
|
= append_partials('storefront.checkout_confirmation')
|
@@ -10,6 +10,7 @@
|
|
10
10
|
- else
|
11
11
|
.grid
|
12
12
|
- products.each do |product|
|
13
|
+
= render_schema_org(product_schema(product))
|
13
14
|
.grid__cell.grid__cell--50.grid__cell--25-at-medium
|
14
|
-
%div.product-summary.product-summary--small
|
15
|
+
%div.product-summary.product-summary--small
|
15
16
|
= render 'workarea/storefront/products/summary', product: product
|
@@ -5,6 +5,7 @@
|
|
5
5
|
- if view_model.products.present?
|
6
6
|
.grid
|
7
7
|
- view_model.products.each do |product|
|
8
|
+
= render_schema_org(product_schema(product))
|
8
9
|
.grid__cell.grid__cell--50.grid__cell--25-at-medium
|
9
|
-
.product-summary.product-summary--small
|
10
|
+
.product-summary.product-summary--small
|
10
11
|
= render 'workarea/storefront/products/summary', product: product
|
@@ -5,6 +5,7 @@
|
|
5
5
|
- if products.present?
|
6
6
|
.grid{ data: { analytics: product_list_analytics_data("Custom product list").to_json } }
|
7
7
|
- products.each do |product|
|
8
|
+
= render_schema_org(product_schema(product))
|
8
9
|
.grid__cell.grid__cell--50.grid__cell--25-at-medium
|
9
|
-
%div.product-summary.product-summary--small
|
10
|
+
%div.product-summary.product-summary--small
|
10
11
|
= render 'workarea/storefront/products/summary', product: product
|
@@ -5,10 +5,11 @@
|
|
5
5
|
|
6
6
|
%ul.mobile-nav__menu{ role: 'navigation' }
|
7
7
|
- @menus.each do |menu|
|
8
|
+
- styles = link_selected?(menu.taxon) ? 'mobile-nav__link mobile-nav__link--selected' : 'mobile-nav__link'
|
8
9
|
%li.mobile-nav__item{ class: ('mobile-nav__item--has-children' if menu.content_blocks.present?)}
|
9
10
|
- if menu.content_blocks.present?
|
10
|
-
= link_to menu.name, menu_path(menu, return_to: mobile_nav_return_path, mobile_nav: true), class:
|
11
|
+
= link_to menu.name, menu_path(menu, return_to: mobile_nav_return_path, mobile_nav: true), class: styles
|
11
12
|
- elsif menu.taxon.present?
|
12
|
-
= link_to menu.taxon.name, storefront_path_for(menu.taxon), class:
|
13
|
+
= link_to menu.taxon.name, storefront_path_for(menu.taxon), class: styles
|
13
14
|
- else
|
14
|
-
%span
|
15
|
+
%span{ class: styles }= menu.name
|
@@ -48,8 +48,11 @@
|
|
48
48
|
%li
|
49
49
|
%p
|
50
50
|
= link_to item.product_name, product_path(item.product, sku: item.sku)
|
51
|
+
- if item.quantity > 1
|
52
|
+
%br
|
53
|
+
%strong #{t('workarea.storefront.orders.quantity')}: #{item.quantity}
|
51
54
|
%br
|
52
|
-
%strong
|
55
|
+
%strong= number_to_currency(item.total_price)
|
53
56
|
%br
|
54
57
|
= item.sku
|
55
58
|
%br
|
@@ -59,6 +62,8 @@
|
|
59
62
|
%br
|
60
63
|
- item.customizations.each do |name, value|
|
61
64
|
#{name.titleize}: #{value}
|
65
|
+
- if item.token&.enabled?
|
66
|
+
= link_to t('workarea.storefront.orders.download'), download_path(item.token)
|
62
67
|
%br
|
63
68
|
= append_partials('storefront.order_summary_item_details', item: item)
|
64
69
|
|
@@ -257,7 +262,7 @@
|
|
257
262
|
.grid
|
258
263
|
- recommendations.each do |product|
|
259
264
|
.grid__cell.grid__cell--50.grid__cell--25-at-medium
|
260
|
-
.product-summary.product-summary--small
|
265
|
+
.product-summary.product-summary--small
|
261
266
|
= render 'workarea/storefront/products/summary', product: product
|
262
267
|
|
263
268
|
%ul.order-help-menu
|
@@ -7,8 +7,8 @@
|
|
7
7
|
= link_to product_image_url(image, :zoom), class: button_class, target: '_blank', rel: 'noopener', data: { alternate_image_button: { src: product_image_url(image, :detail) }.to_json } do
|
8
8
|
%picture
|
9
9
|
%source{ srcset: product_image_url(image, :small_thumb), product_image_url(image, :small_thumb) => '1x', media: "(min-width: #{Workarea.config.storefront_break_points[:medium]}px)" }
|
10
|
-
= image_tag(product_image_url(image, :detail), alt: t('workarea.storefront.products.zoom')
|
10
|
+
= image_tag(product_image_url(image, :detail), alt: t('workarea.storefront.products.zoom'))
|
11
11
|
|
12
12
|
.product-media__primary-image
|
13
|
-
= link_to(product_image_url(product.primary_image, :zoom), target: '_blank', rel: 'noopener', class: 'product-media__primary-image-link', data: { dialog_button: '' }) do
|
14
|
-
= image_tag product_image_url(product.primary_image, :detail), alt: t('workarea.storefront.products.image_alt_attribute', name: product.name),
|
13
|
+
= link_to(product_image_url(product.primary_image, :zoom), target: '_blank', rel: 'noopener', class: 'product-media__primary-image-link', style: intrinsic_ratio_product_image_styles(product.primary_image), data: { dialog_button: '' }) do
|
14
|
+
= image_tag product_image_url(product.primary_image, :detail), alt: t('workarea.storefront.products.image_alt_attribute', name: product.name), class: 'product-media__primary-image-link-image'
|
@@ -1,4 +1,4 @@
|
|
1
|
-
%p.rating{ title: "#{rating.round(2)} #{t('workarea.storefront.reviews.out_of')} #{t('workarea.storefront.reviews.stars', count: 5)}"
|
1
|
+
%p.rating{ title: "#{rating.round(2)} #{t('workarea.storefront.reviews.out_of')} #{t('workarea.storefront.reviews.stars', count: 5)}" }
|
2
2
|
- full_star_count.times do
|
3
3
|
= inline_svg 'workarea/storefront/icons/star.svg', class: 'rating__star'
|
4
4
|
- if half_star_size > 0
|
@@ -6,5 +6,4 @@
|
|
6
6
|
- empty_star_count.times do
|
7
7
|
= inline_svg 'workarea/storefront/icons/empty_star.svg', class: 'rating__star'
|
8
8
|
%span.rating__text.visually-hidden
|
9
|
-
%meta{ itemprop: 'ratingValue', content: rating.round(2) }
|
10
9
|
#{rating.round(2)} #{t('workarea.storefront.reviews.out_of')} #{t('workarea.storefront.reviews.stars', count: 5)}
|
@@ -9,14 +9,14 @@
|
|
9
9
|
|
10
10
|
%ol.reviews__review-group
|
11
11
|
- product.reviews.each do |review|
|
12
|
-
%li.reviews__review{
|
12
|
+
%li.reviews__review{ data: { product_review_section_entry: { rating: review.rating.to_f, createdAt: review.created_at.to_i }.to_json } }
|
13
13
|
= rating_stars(review.rating)
|
14
14
|
|
15
|
-
%h3.reviews__review-title
|
16
|
-
%p.reviews__review-body
|
15
|
+
%h3.reviews__review-title= review.title
|
16
|
+
%p.reviews__review-body= review.body
|
17
17
|
.reviews__review-meta
|
18
|
-
%p.reviews__review-author
|
19
|
-
%span
|
18
|
+
%p.reviews__review-author
|
19
|
+
%span= review.user_info
|
20
20
|
- if review.verified?
|
21
21
|
%p.reviews__review-verified= t('workarea.storefront.reviews.verified_purchaser')
|
22
22
|
%p.reviews__review-date= local_time(review.created_at, format: :long, itemprop: 'datePublished')
|
@@ -1,5 +1,5 @@
|
|
1
1
|
- if product.has_reviews?
|
2
|
-
.reviews-aggregate
|
2
|
+
.reviews-aggregate
|
3
3
|
= link_to "#{product_path(product, product.browse_link_options)}#reviews", data: { scroll_to_button: '' }, class: 'reviews-aggregate__rating-link' do
|
4
4
|
= rating_stars(product.average_rating, aggregate: true)
|
5
5
|
|
@@ -7,7 +7,7 @@
|
|
7
7
|
%span.reviews-aggregate__count
|
8
8
|
%span.reviews-aggregate__read= t('workarea.storefront.reviews.read_reviews')
|
9
9
|
= surround '(', ')' do
|
10
|
-
%span
|
10
|
+
%span= product.total_reviews
|
11
11
|
|
12
12
|
= link_to t('workarea.storefront.reviews.write_a_review'), new_product_review_path(product), class: 'reviews-aggregate__write-action', data: { dialog_button: '' }
|
13
13
|
- if display_purchase_requirement_message
|
@@ -19,8 +19,11 @@
|
|
19
19
|
%meta{ property: 'og:description', content: strip_tags(@product.meta_description) }
|
20
20
|
|
21
21
|
- cache "#{@product.cache_key}/show", expires_in: Workarea.config.cache_expirations.product_show_fragment_cache do
|
22
|
+
|
23
|
+
= render_schema_org(product_schema(@product, related_products: @product.recommendations))
|
24
|
+
|
22
25
|
.view
|
23
|
-
.product-detail-container{
|
26
|
+
.product-detail-container{ data: { analytics: product_view_analytics_data(@product).to_json } }
|
24
27
|
|
25
28
|
.product-details{ class: "product-details--#{@product.template}" }
|
26
29
|
= render "workarea/storefront/products/templates/#{@product.template}", product: @product
|
@@ -28,7 +31,7 @@
|
|
28
31
|
- if @product.description.present?
|
29
32
|
.product-detail-container__description#description
|
30
33
|
%h2.product-detail-container__description-heading= t('workarea.storefront.products.description')
|
31
|
-
.product-detail-container__description-body
|
34
|
+
.product-detail-container__description-body!= @product.description
|
32
35
|
|
33
36
|
= append_partials('storefront.product_description', product: @product)
|
34
37
|
|
@@ -39,7 +42,7 @@
|
|
39
42
|
.grid{ data: { analytics: product_list_analytics_data('Product Recommendations').to_json } }
|
40
43
|
- @product.recommendations.each do |product|
|
41
44
|
.grid__cell.grid__cell--50.grid__cell--25-at-medium
|
42
|
-
.product-summary.product-summary--small
|
45
|
+
.product-summary.product-summary--small
|
43
46
|
= render 'workarea/storefront/products/summary', product: product
|
44
47
|
|
45
48
|
= append_partials('storefront.product_show', product: @product)
|
@@ -5,9 +5,9 @@
|
|
5
5
|
.grid__cell.grid__cell--40-at-medium
|
6
6
|
.product-details__info
|
7
7
|
.product-details__name
|
8
|
-
%h1.product-details__heading
|
8
|
+
%h1.product-details__heading= product.name
|
9
9
|
|
10
|
-
.product-prices.product-prices--details
|
10
|
+
.product-prices.product-prices--details
|
11
11
|
= render 'workarea/storefront/products/pricing', product: product
|
12
12
|
|
13
13
|
- if product.description.present?
|
@@ -15,7 +15,7 @@
|
|
15
15
|
%p= truncated_product_description(product, t('workarea.storefront.products.read_more'))
|
16
16
|
|
17
17
|
%p.product-details__id
|
18
|
-
%span
|
18
|
+
%span= product.id
|
19
19
|
|
20
20
|
= form_tag cart_items_path, method: 'post', class: 'product-details__add-to-cart-form', data: { dialog_form: { dialogOptions: { closeAll: true, initModules: true } }, analytics: add_to_cart_analytics_data(product).to_json } do
|
21
21
|
= hidden_field_tag :product_id, product.id, id: dom_id(product, 'product_id')
|
@@ -51,4 +51,4 @@
|
|
51
51
|
|
52
52
|
= append_partials('storefront.product_details', product: product)
|
53
53
|
|
54
|
-
%p.product-details__full-details=link_to t('workarea.storefront.products.view_full_details'), product_path(product, color: params[:color]), class: 'text-button'
|
54
|
+
%p.product-details__full-details=link_to t('workarea.storefront.products.view_full_details'), product_path(product, color: params[:color]), class: 'text-button'
|
@@ -5,9 +5,9 @@
|
|
5
5
|
.grid__cell.grid__cell--40-at-medium
|
6
6
|
.product-details__info
|
7
7
|
.product-details__name
|
8
|
-
%h1.product-details__heading
|
8
|
+
%h1.product-details__heading= product.name
|
9
9
|
|
10
|
-
.product-prices.product-prices--details
|
10
|
+
.product-prices.product-prices--details
|
11
11
|
= render 'workarea/storefront/products/pricing', product: product
|
12
12
|
|
13
13
|
- if product.description.present?
|
@@ -15,7 +15,7 @@
|
|
15
15
|
%p= truncated_product_description(product, t('workarea.storefront.products.read_more'))
|
16
16
|
|
17
17
|
%p.product-details__id
|
18
|
-
%span
|
18
|
+
%span= product.id
|
19
19
|
|
20
20
|
= form_tag cart_items_path, method: 'post', class: 'product-details__add-to-cart-form', data: { dialog_form: { dialogOptions: { closeAll: true, initModules: true } }, analytics: add_to_cart_analytics_data(product).to_json } do
|
21
21
|
= hidden_field_tag :product_id, product.id, id: dom_id(product, 'product_id')
|
@@ -64,4 +64,4 @@
|
|
64
64
|
|
65
65
|
= append_partials('storefront.product_details', product: product)
|
66
66
|
|
67
|
-
%p.product-details__full-details=link_to t('workarea.storefront.products.view_full_details'), product_path(product, color: params[:color]), class: 'text-button'
|
67
|
+
%p.product-details__full-details=link_to t('workarea.storefront.products.view_full_details'), product_path(product, color: params[:color]), class: 'text-button'
|
@@ -5,9 +5,9 @@
|
|
5
5
|
.grid__cell.grid__cell--40-at-medium
|
6
6
|
.product-details__info
|
7
7
|
.product-details__name
|
8
|
-
%h1.product-details__heading
|
8
|
+
%h1.product-details__heading= product.name
|
9
9
|
|
10
|
-
.product-prices.product-prices--details
|
10
|
+
.product-prices.product-prices--details
|
11
11
|
= render 'workarea/storefront/products/pricing', product: product
|
12
12
|
|
13
13
|
- if product.description.present?
|
@@ -15,7 +15,7 @@
|
|
15
15
|
%p= truncated_product_description(product, t('workarea.storefront.products.read_more'))
|
16
16
|
|
17
17
|
%p.product-details__id
|
18
|
-
%span
|
18
|
+
%span= product.id
|
19
19
|
|
20
20
|
= form_tag cart_items_path, method: 'post', class: 'product-details__add-to-cart-form', data: { dialog_form: { dialogOptions: { closeAll: true, initModules: true } }, analytics: add_to_cart_analytics_data(product).to_json } do
|
21
21
|
= hidden_field_tag :product_id, product.id, id: dom_id(product, 'product_id')
|
@@ -54,4 +54,4 @@
|
|
54
54
|
|
55
55
|
= append_partials('storefront.product_details', product: product)
|
56
56
|
|
57
|
-
%p.product-details__full-details=link_to t('workarea.storefront.products.view_full_details'), product_path(product, color: params[:color]), class: 'text-button'
|
57
|
+
%p.product-details__full-details=link_to t('workarea.storefront.products.view_full_details'), product_path(product, color: params[:color]), class: 'text-button'
|
@@ -5,9 +5,9 @@
|
|
5
5
|
.grid__cell.grid__cell--40-at-medium
|
6
6
|
.product-details__info
|
7
7
|
.product-details__name
|
8
|
-
%h1.product-details__heading
|
8
|
+
%h1.product-details__heading= product.name
|
9
9
|
|
10
|
-
.product-prices.product-prices--details
|
10
|
+
.product-prices.product-prices--details
|
11
11
|
= render 'workarea/storefront/products/pricing', product: product
|
12
12
|
|
13
13
|
- if product.description.present?
|
@@ -15,7 +15,7 @@
|
|
15
15
|
%p= truncated_product_description(product, t('workarea.storefront.products.read_more'))
|
16
16
|
|
17
17
|
%p.product-details__id
|
18
|
-
%span
|
18
|
+
%span= product.id
|
19
19
|
|
20
20
|
= form_tag cart_items_path, method: 'post', class: 'product-details__add-to-cart-form', data: { dialog_form: { dialogOptions: { closeAll: true, initModules: true } }, analytics: add_to_cart_analytics_data(product).to_json } do
|
21
21
|
= hidden_field_tag :product_id, product.id, id: dom_id(product, 'product_id')
|
@@ -59,4 +59,4 @@
|
|
59
59
|
|
60
60
|
= append_partials('storefront.product_details', product: product)
|
61
61
|
|
62
|
-
%p.product-details__full-details=link_to t('workarea.storefront.products.view_full_details'), product_path(product, color: params[:color]), class: 'text-button'
|
62
|
+
%p.product-details__full-details=link_to t('workarea.storefront.products.view_full_details'), product_path(product, color: params[:color]), class: 'text-button'
|
@@ -5,9 +5,9 @@
|
|
5
5
|
.grid__cell.grid__cell--40-at-medium
|
6
6
|
.product-details__info
|
7
7
|
.product-details__name
|
8
|
-
%h1.product-details__heading
|
8
|
+
%h1.product-details__heading= product.name
|
9
9
|
|
10
|
-
.product-prices.product-prices--details
|
10
|
+
.product-prices.product-prices--details
|
11
11
|
= render 'workarea/storefront/products/pricing', product: product
|
12
12
|
|
13
13
|
- if product.description.present?
|
@@ -15,7 +15,7 @@
|
|
15
15
|
%p= truncated_product_description(product, t('workarea.storefront.products.read_more'))
|
16
16
|
|
17
17
|
%p.product-details__id
|
18
|
-
%span
|
18
|
+
%span= product.id
|
19
19
|
|
20
20
|
= form_tag cart_items_path, method: 'post', class: 'product-details__add-to-cart-form', data: { dialog_form: { dialogOptions: { closeAll: true, initModules: true } }, analytics: add_to_cart_analytics_data(product).to_json } do
|
21
21
|
= hidden_field_tag :product_id, product.id, id: dom_id(product, 'product_id')
|
@@ -63,4 +63,4 @@
|
|
63
63
|
|
64
64
|
= append_partials('storefront.product_details', product: product)
|
65
65
|
|
66
|
-
%p.product-details__full-details=link_to t('workarea.storefront.products.view_full_details'), product_path(product, color: params[:color]), class: 'text-button'
|
66
|
+
%p.product-details__full-details=link_to t('workarea.storefront.products.view_full_details'), product_path(product, color: params[:color]), class: 'text-button'
|
@@ -1,4 +1,4 @@
|
|
1
|
-
- if @recent_views.products.any? || @recent_views.categories.any?
|
1
|
+
- if @recent_views.products.any? || @recent_views.categories.any?
|
2
2
|
.recent-views
|
3
3
|
|
4
4
|
- if @recent_views.products.any?
|
@@ -6,8 +6,9 @@
|
|
6
6
|
%h2.recent-views__heading= t('workarea.storefront.recommendations.recent_products')
|
7
7
|
.grid
|
8
8
|
- @recent_views.products.each do |product|
|
9
|
+
= render_schema_org(product_schema(product))
|
9
10
|
.grid__cell.grid__cell--50.grid__cell--25-at-medium
|
10
|
-
.product-summary.product-summary--small
|
11
|
+
.product-summary.product-summary--small
|
11
12
|
= render 'workarea/storefront/products/summary', product: product
|
12
13
|
|
13
14
|
- if @recent_views.categories.any?
|
@@ -17,11 +18,3 @@
|
|
17
18
|
- @recent_views.categories.each do |category|
|
18
19
|
%li.recent-views__item
|
19
20
|
= link_to category.name, category_path(category), class: 'recent-views__link'
|
20
|
-
|
21
|
-
- if @recent_views.searches.any?
|
22
|
-
.recent-views__section.recent-views__section--searches
|
23
|
-
%h2.recent-views__heading= t('workarea.storefront.recommendations.recent_searches')
|
24
|
-
%ul.recent-views__list
|
25
|
-
- @recent_views.searches.each do |search|
|
26
|
-
%li.recent-views__item
|
27
|
-
= link_to search, search_path(q: search), class: 'recent-views__link'
|