wickes-css2 2.103.0-RG-1587-replace-klarna-logo-with-svg-image.1 → 2.103.0-RG-1742-billie-30-60-90-days.1

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.
Files changed (174) hide show
  1. package/Readme.md +1 -0
  2. package/build/css/components/card-product-banner.css +1 -1
  3. package/build/css/components/checkout-payment-details-v2.css +1 -1
  4. package/build/css/main.css +1 -1
  5. package/build/css/pdp-main-non-critical.css +1 -1
  6. package/build/css/plp-main.css +1 -1
  7. package/build/js/basket.min.js +1 -1
  8. package/build/js/bundle.min.js +1 -1
  9. package/build/js/checkout.min.js +1 -1
  10. package/build/js/emulation.min.js +19 -55
  11. package/build/js/merged-checkout.min.js +1 -1
  12. package/build/js/page/plp-cards-v2.js +6 -15
  13. package/build/js/page/plp-load-more.js +1 -1
  14. package/build/js/plp.bundle.min.js +1 -1
  15. package/build/js/project-list.min.js +1 -1
  16. package/package.json +2 -2
  17. package/src/components/card_product_v2.hbs +5 -10
  18. package/src/components/checkout-payment-details-v2.hbs +24 -9
  19. package/src/components/checkout-payment-repayment-terms.hbs +25 -0
  20. package/src/components/checkout_payment-new.hbs +4 -1
  21. package/src/components/checkout_payment-other-methods.hbs +4 -1
  22. package/src/components/injected-content.hbs +1 -1
  23. package/src/components/payments-checkout-v2.hbs +7 -2
  24. package/src/components/payments-checkout.hbs +6 -1
  25. package/src/components/payments.hbs +5 -1
  26. package/src/components/table_order-details-klarna.hbs +1 -1
  27. package/src/components/table_payment.hbs +4 -1
  28. package/src/data/data_search-results_v2.json +141 -56
  29. package/src/data/data_wismo.json +1 -1
  30. package/src/js/components/product-banner.js +148 -0
  31. package/src/js/emulation/forms.js +19 -1
  32. package/src/js/page/plp-cards-v2.js +6 -15
  33. package/src/js/page/plp-load-more.js +1 -1
  34. package/src/page_checkout_payment-details_guest-with-checkout-journey.html +1 -1
  35. package/src/page_my-order.html +1 -1
  36. package/src/page_payment-details-with-clearpay.html +2 -2
  37. package/src/page_plp_v2.html +6 -16
  38. package/src/page_search-results.html +2 -12
  39. package/src/page_shopping-cart-v2.html +2 -2
  40. package/src/page_split-orders-klarna.html +106 -0
  41. package/src/scss/components/card-product-banner.scss +3 -91
  42. package/src/scss/components/checkout-payment-details-v2.scss +1 -0
  43. package/src/scss/components/checkout-payment-repayment-terms.scss +103 -0
  44. package/src/scss/pages/page_products-list-combined.scss +0 -11
  45. package/src/scss/pages/page_products-list.scss +0 -8
  46. package/src/sitemap.html +6 -0
  47. package/build/css/components/energy-efficiency.css +0 -1
  48. package/build/css/components/global-search.css +0 -1
  49. package/build/css/components/kitchen/strip-stickers.css +0 -1
  50. package/build/css/components/legal-info.css +0 -1
  51. package/build/css/components/loader.css +0 -1
  52. package/build/css/components/long-banner.css +0 -1
  53. package/build/css/components/payment-details-BPS-form.css +0 -1
  54. package/build/css/components/pdf-loader.css +0 -1
  55. package/build/css/components/pdp-favourite-product.css +0 -1
  56. package/build/css/components/plp-favourite-product.css +0 -1
  57. package/build/css/components/price-block-v2-critical.css +0 -1
  58. package/build/css/components/price-block-v2.css +0 -1
  59. package/build/css/components/special-opening-schedule-v2.css +0 -1
  60. package/build/css/components/special-opening-schedule.css +0 -1
  61. package/build/css/components/store-locator-about.css +0 -1
  62. package/build/css/components/store-locator-facilities.css +0 -1
  63. package/build/css/components/store-locator-lookup.css +0 -1
  64. package/build/css/components/store-locator-v2-details.css +0 -1
  65. package/build/css/components/strip-stickers.css +0 -1
  66. package/build/css/components/tile-calculator.css +0 -1
  67. package/build/css/components/trade-pro-extras.css +0 -1
  68. package/build/css/pages/bicester-header.css +0 -1
  69. package/build/css/pages/bicester-project-list.css +0 -1
  70. package/build/css/pages/checkout-new.css +0 -1
  71. package/build/css/pages/checkout.css +0 -1
  72. package/build/css/pages/design-appointment.css +0 -1
  73. package/build/css/pages/home-movers.css +0 -1
  74. package/build/css/pages/iframe-paypage.css +0 -1
  75. package/build/css/pages/my-account-v2.css +0 -1
  76. package/build/css/pages/my-account.css +0 -1
  77. package/build/css/pages/new-usp-bar.css +0 -1
  78. package/build/css/pages/oldweb_header.css +0 -1
  79. package/build/css/pages/page_account-deletion.css +0 -1
  80. package/build/css/pages/page_act-trade-pro.css +0 -1
  81. package/build/css/pages/page_address-book.css +0 -1
  82. package/build/css/pages/page_bathroom-trends.css +0 -1
  83. package/build/css/pages/page_book-consultant-thank-you-new.css +0 -1
  84. package/build/css/pages/page_change-password.css +0 -1
  85. package/build/css/pages/page_checkout-payment-details.css +0 -1
  86. package/build/css/pages/page_checkout_delivery-new.css +0 -1
  87. package/build/css/pages/page_cms_homepage.css +0 -1
  88. package/build/css/pages/page_contact-us.css +0 -1
  89. package/build/css/pages/page_content.css +0 -1
  90. package/build/css/pages/page_coshh.css +0 -1
  91. package/build/css/pages/page_default-store.css +0 -1
  92. package/build/css/pages/page_discount.css +0 -1
  93. package/build/css/pages/page_empty-basket.css +0 -1
  94. package/build/css/pages/page_favourite-list.css +0 -1
  95. package/build/css/pages/page_fdl-management.css +0 -1
  96. package/build/css/pages/page_fdl-product.css +0 -1
  97. package/build/css/pages/page_fi.css +0 -1
  98. package/build/css/pages/page_forgotten-password.css +0 -1
  99. package/build/css/pages/page_half-login.css +0 -1
  100. package/build/css/pages/page_home.css +0 -1
  101. package/build/css/pages/page_hotspot-guttering.css +0 -1
  102. package/build/css/pages/page_in-store-checkout.css +0 -1
  103. package/build/css/pages/page_in-store_MVP_order-summary-submitted.css +0 -1
  104. package/build/css/pages/page_in-store_MVP_order-summary.css +0 -1
  105. package/build/css/pages/page_installation.css +0 -1
  106. package/build/css/pages/page_installer.css +0 -1
  107. package/build/css/pages/page_installer_form.css +0 -1
  108. package/build/css/pages/page_kitchen-claims.css +0 -1
  109. package/build/css/pages/page_kitchen-list.css +0 -1
  110. package/build/css/pages/page_login.css +0 -1
  111. package/build/css/pages/page_marketing-preferences.css +0 -1
  112. package/build/css/pages/page_merged-basket.css +0 -1
  113. package/build/css/pages/page_my-account_tradePro.css +0 -1
  114. package/build/css/pages/page_my-order.css +0 -1
  115. package/build/css/pages/page_my-orders.css +0 -1
  116. package/build/css/pages/page_new-checkout-forgot.css +0 -1
  117. package/build/css/pages/page_new-checkout_login-register.css +0 -1
  118. package/build/css/pages/page_no-results.css +0 -1
  119. package/build/css/pages/page_online-exclusive.css +0 -1
  120. package/build/css/pages/page_paint-mixing-error.css +0 -1
  121. package/build/css/pages/page_personal-details.css +0 -1
  122. package/build/css/pages/page_pre_home.css +0 -1
  123. package/build/css/pages/page_pre_home_thank-you.css +0 -1
  124. package/build/css/pages/page_product-details-critical.css +0 -1
  125. package/build/css/pages/page_product-details-v2-critical.css +0 -1
  126. package/build/css/pages/page_product-details-v2.css +0 -1
  127. package/build/css/pages/page_product-details.css +0 -1
  128. package/build/css/pages/page_product_search.css +0 -1
  129. package/build/css/pages/page_products-list-combined.css +0 -1
  130. package/build/css/pages/page_products-list-phone.css +0 -1
  131. package/build/css/pages/page_products-list.css +0 -1
  132. package/build/css/pages/page_products-list_v2.css +0 -1
  133. package/build/css/pages/page_projects.css +0 -1
  134. package/build/css/pages/page_quiz.css +0 -1
  135. package/build/css/pages/page_rate-review.css +0 -1
  136. package/build/css/pages/page_registration.css +0 -1
  137. package/build/css/pages/page_shopping-cart-v2.css +0 -1
  138. package/build/css/pages/page_shopping-cart.css +0 -1
  139. package/build/css/pages/page_split-orders.css +0 -1
  140. package/build/css/pages/page_store-locator-details.css +0 -1
  141. package/build/css/pages/page_store-locator.css +0 -1
  142. package/build/css/pages/page_thankyou.css +0 -1
  143. package/build/css/pages/page_ti.css +0 -1
  144. package/build/css/pages/page_tiling-calculator-generic.css +0 -1
  145. package/build/css/pages/page_top-rated.css +0 -1
  146. package/build/css/pages/page_track-my-order.css +0 -1
  147. package/build/css/pages/page_track_your_order.css +0 -1
  148. package/build/css/pages/page_trade_installer.css +0 -1
  149. package/build/css/pages/page_upd-pass.css +0 -1
  150. package/build/css/pages/page_wismo-details.css +0 -1
  151. package/build/css/pages/page_wismo-order-history.css +0 -1
  152. package/build/css/pages/page_wismo-orders.css +0 -1
  153. package/build/css/pages/print_quiz.css +0 -1
  154. package/build/css/pages/sticky_header.css +0 -1
  155. package/build/css/pages/tradePro-about.css +0 -1
  156. package/build/css/pages/tradePro-address-book.css +0 -1
  157. package/build/css/pages/tradePro-delivery-details.css +0 -1
  158. package/build/css/pages/tradePro-discount.css +0 -1
  159. package/build/css/pages/tradePro-order-history.css +0 -1
  160. package/build/css/pages/tradePro-payment-details.css +0 -1
  161. package/build/css/pages/tradePro-rewards-old.css +0 -1
  162. package/build/css/pages/tradePro-rewards.css +0 -1
  163. package/build/css/pages/tradePro-signup.css +0 -1
  164. package/build/css/pages/tradePro-thankyou-activate.css +0 -1
  165. package/build/img/klarna.svg +0 -10
  166. package/build/img/payment/checkout/klarna.svg +0 -10
  167. package/build/img/payment/footer/klarna.svg +0 -10
  168. package/src/components/card_sponsor_banner.hbs +0 -8
  169. package/src/components/card_sponsor_product.hbs +0 -6
  170. package/src/img/klarna.svg +0 -10
  171. package/src/img/payment/checkout/klarna.svg +0 -10
  172. package/src/img/payment/footer/klarna.svg +0 -10
  173. package/src/js/components/banner-placement-manager.js +0 -267
  174. package/src/js/emulation/banner-placement-manager.js +0 -53
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wickes-css2",
3
- "version": "2.103.0-RG-1587-replace-klarna-logo-with-svg-image.1",
3
+ "version": "2.103.0-RG-1742-billie-30-60-90-days.1",
4
4
  "description": "CSS and JS and page templates in use by Wickes",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -108,7 +108,7 @@
108
108
  "branches": [
109
109
  "alt-master",
110
110
  {
111
- "name": "custom-tag/RG-1587-replace-klarna-logo-with-svg-image",
111
+ "name": "custom-tag/RG-1742-billie-30-60-90-days",
112
112
  "prerelease": "${name.replace(/^custom-tag\\//g, '')}"
113
113
  }
114
114
  ],
@@ -19,11 +19,11 @@
19
19
  <div class="product-card__reviews product-card__reviews-v2">
20
20
  <div class="product-rating product-rating-v2">
21
21
  <div class="rating-bg">
22
- <i class="fa fa-star star-in" aria-hidden="true"></i>
23
- <i class="fa fa-star star-in" aria-hidden="true"></i>
24
- <i class="fa fa-star star-in" aria-hidden="true"></i>
25
- <i class="fa fa-star star-in" aria-hidden="true"></i>
26
- <i class="fa fa-star star-in" aria-hidden="true"></i>
22
+ <i class="fa fa-star star-in" aria-hidden="true"></i>
23
+ <i class="fa fa-star star-in" aria-hidden="true"></i>
24
+ <i class="fa fa-star star-in" aria-hidden="true"></i>
25
+ <i class="fa fa-star star-in" aria-hidden="true"></i>
26
+ <i class="fa fa-star star-in" aria-hidden="true"></i>
27
27
 
28
28
  <div class="rating-overlay" data-rating="{{#if review-rating}}{{review-rating}}{{else}}0{{/if}}">
29
29
  <span class="star-overlay">
@@ -48,11 +48,6 @@
48
48
  </div>
49
49
  {{/if}}
50
50
  </div>
51
- {{#if isSponsor}}
52
- <div class="product-card__sponsored">Sponsored</div>
53
- {{else}}
54
- <div class="product-card__sponsored product-card__sponsored--empty">&nbsp;</div>
55
- {{/if}}
56
51
  {{#if switch-vat}}
57
52
  <div class="including-vat product-card__price {{#if sale}} product-card__price_sale {{/if}} {{#if
58
53
  recommended}}product-card__min-height{{/if}}">
@@ -52,12 +52,11 @@
52
52
  value="klarna"
53
53
  >
54
54
  <ins></ins>
55
- <div class="klarna-logo">
56
- <img
57
- src="./img/payment/checkout/klarna.svg"
58
- class="payments-checkout__image"
59
- alt="klarna"
60
- >
55
+ <div class="klarna-logo-img">
56
+ <klarna-placement
57
+ data-key="sidebar-promotion-auto-size"
58
+ data-locale="en-GB"
59
+ ></klarna-placement>
61
60
  </div>
62
61
  </label>
63
62
  </div>
@@ -170,7 +169,10 @@
170
169
  infoClass="klarna-info"
171
170
 
172
171
  heading="Choose your way to pay"
173
- brandLogoHtml="<img src='./img/klarna.svg' alt='klarna'>"
172
+ brandLogoHtml="<klarna-placement
173
+ data-key='sidebar-promotion-auto-size'
174
+ data-locale='en-GB'
175
+ ></klarna-placement>"
174
176
 
175
177
  listItem1="Pay in 3. Interest-free."
176
178
  listItem2="Pay now or Pay in 30 days."
@@ -196,6 +198,21 @@
196
198
  </a>"
197
199
  }}
198
200
 
201
+
202
+ <div class="form-row" data-row-required data-message="Please select repayment terms">
203
+ <div class="form-row__field">
204
+ {{> checkout-payment-repayment-terms
205
+ name="repaymentTerms"
206
+ title="Select repayment terms"
207
+ repaymentTerms=(array
208
+ (hash id="repay-30" value="30" top="30" bottom="days")
209
+ (hash id="repay-60" value="60" top="60" bottom="days")
210
+ (hash id="repay-90" value="90" top="90" bottom="days")
211
+ )
212
+ }}
213
+ </div>
214
+ </div>
215
+
199
216
  {{> checkout-payment-info-block
200
217
  dataAttr="data-billie"
201
218
  blockClass="checkout-payment-details__billie"
@@ -224,8 +241,6 @@
224
241
  <img class="clearpay-widget__image" src="./img/payment/checkout/clearpay-widget.png" alt="clearpay widget">
225
242
  </div>
226
243
  </div>
227
-
228
-
229
244
  <div class="billing-address">
230
245
  {{> checkout-edit-billing-address actionBlock="true" no-set-card="true" billie-form=billie-form}}
231
246
  </div>
@@ -0,0 +1,25 @@
1
+ <div class="repayment-terms">
2
+ <div class="repayment-terms__title">
3
+ <span class="repayment-terms__asterisk">*</span>
4
+ <span>Select repayment terms</span>
5
+ </div>
6
+
7
+ <div class="repayment-terms__chips" role="radiogroup">
8
+ {{#each repaymentTerms}}
9
+ <div class="repayment-terms__chip">
10
+ <input
11
+ class="repayment-terms__input"
12
+ type="radio"
13
+ name="repaymentTerms"
14
+ id="{{id}}"
15
+ value="{{value}}"
16
+ />
17
+
18
+ <label class="repayment-terms__label" for="{{id}}">
19
+ <span class="repayment-terms__label-top">{{top}}</span>
20
+ <span class="repayment-terms__label-bottom">{{bottom}}</span>
21
+ </label>
22
+ </div>
23
+ {{/each}}
24
+ </div>
25
+ </div>
@@ -18,7 +18,10 @@
18
18
  <div>Payment method:</div>
19
19
  </div>
20
20
  <div class="klarna-logo-img">
21
- <img src="./img/klarna.svg" alt="klarna">
21
+ <klarna-placement
22
+ data-key="sidebar-promotion-auto-size"
23
+ data-locale="en-GB"
24
+ ></klarna-placement>
22
25
  </div>
23
26
  </div>
24
27
  {{else if billie}}
@@ -2,7 +2,10 @@
2
2
  <h3 class="heading-3">Payment</h3>
3
3
  {{#if klarna}}
4
4
  <div class="mb-3 klarna-logo-img">
5
- <img src="./img/klarna.svg" alt="klarna">
5
+ <klarna-placement
6
+ data-key="sidebar-promotion-auto-size"
7
+ data-locale="en-GB"
8
+ ></klarna-placement>
6
9
  </div>
7
10
  {{else}}
8
11
  <img class="mb-3" src="https://www.paypalobjects.com/webstatic/mktg/Logo/pp-logo-100px.png">
@@ -10,4 +10,4 @@
10
10
  </div>
11
11
  {{/if}}
12
12
  {{/each}}
13
- </div>
13
+ </div>
@@ -3,11 +3,16 @@
3
3
  <ul class="payments-checkout__list">
4
4
  {{#if billieIcon}}
5
5
  <li class="payments-checkout__item">
6
- <img class="payments-checkout__image" src="./img/payment/checkout/billie.svg" alt="billie">
6
+ <img class="payments-checkout__image" src="./img/payment/footer/billie.svg" alt="Billie">
7
7
  </li>
8
8
  {{else}}
9
9
  <li class="payments-checkout__item">
10
- <img class="payments-checkout__image" src="./img/payment/checkout/klarna.svg" alt="klarna">
10
+ <span class="payments-checkout-klarna">
11
+ <klarna-placement
12
+ data-key="sidebar-promotion-auto-size"
13
+ data-locale="en-GB"
14
+ ></klarna-placement>
15
+ </span>
11
16
  </li>
12
17
  {{/if}}
13
18
  {{#each payments-checkout-list}}
@@ -6,7 +6,12 @@
6
6
  </li>
7
7
  {{else}}
8
8
  <li class="payments-checkout__item">
9
- <img class="payments-checkout__image" src="./img/payment/checkout/klarna.svg" alt="klarna">
9
+ <span class="payments-checkout-klarna">
10
+ <klarna-placement
11
+ data-key="sidebar-promotion-auto-size"
12
+ data-locale="en-GB"
13
+ ></klarna-placement>
14
+ </span>
10
15
  </li>
11
16
  {{/if}}
12
17
  {{#if clearPayIcon}}
@@ -7,7 +7,11 @@
7
7
  </li>
8
8
  {{else}}
9
9
  <li class="payways__item">
10
- <img class="payways__image" src="./img/payment/footer/klarna.svg" alt="klarna">
10
+ <span class="payways-klarna">
11
+ <klarna-placement
12
+ data-key="sidebar-promotion-auto-size"
13
+ data-locale="en-GB"
14
+ ></klarna-placement>
11
15
  </span>
12
16
  </li>
13
17
  {{/if}}
@@ -66,7 +66,7 @@
66
66
  {{#with paymentInfo}}
67
67
  {{> order-details-section
68
68
  col-1-title="Payment details"
69
- col-1="<div class='klarna-logo-img'><img src='./img/klarna.svg' alt='klarna'></div>"
69
+ col-1="<div class='klarna-logo-img'><klarna-placement data-key='sidebar-promotion-auto-size' data-locale='en-GB'></klarna-placement></div>"
70
70
  col-2-title="Voucher"
71
71
  col-2=voucher
72
72
  }}
@@ -18,7 +18,10 @@
18
18
  <div class="table__content-heading">Payment details</div>
19
19
  <div class="pt-4">
20
20
  <div class="klarna-logo-img">
21
- <img src="./img/klarna.svg" alt="klarna">
21
+ <klarna-placement
22
+ data-key="sidebar-promotion-auto-size"
23
+ data-locale="en-GB"
24
+ ></klarna-placement>
22
25
  </div>
23
26
  </div>
24
27
  {{/if}}
@@ -4,70 +4,25 @@
4
4
  {
5
5
  "src": "https://eu-images.contentstack.com/v3/assets/blt066259863543a0d2/bltf2fa907eeef56dc5/62161f9af3bcce42fe002786/PLP-DecoratingTools-230222.jpg",
6
6
  "href": "/sitemap.html",
7
- "desktop-position": 8,
8
- "mobile-position": 7,
7
+ "desktop-position": 3,
8
+ "mobile-position": 2,
9
9
  "show": false
10
- }
11
- ],
12
- "sponsor-product": [
13
- {
14
- "isSponsor": true,
15
- "desktop-position": 4,
16
- "mobile-position": 3,
17
- "title": "Rangemaster Classic Deluxe 90 Ceramic Range Cooker",
18
- "code": "492747",
19
- "src": "https://media.wickes.co.uk/is/image/wickes/normal/Footwear-Tough-Grit-Oak-Boot-7~GPID_1100568107_00",
20
- "descr": "Offer is valid for the same product and size in a single purchase",
21
- "reviews": "0",
22
- "review-rating": "4.3",
23
- "price": "<span class='product-card__price-value-text'>From</span> £99,009.00",
24
- "perSQM": "£1,444.00",
25
- "recommended": false,
26
- "badge-text": "new",
27
- "badge-color": "green",
28
- "badge-text-color": "gray"
29
10
  },
30
11
  {
31
- "isSponsor": true,
32
- "desktop-position": 5,
33
- "mobile-position": 4,
34
- "title": "Rangemaster Classic Deluxe 90 Ceramic Range Cooker",
35
- "code": "492747",
36
- "src": "https://media.wickes.co.uk/is/image/wickes/normal/Footwear-Tough-Grit-Oak-Boot-7~GPID_1100568107_00",
37
- "descr": "Offer is valid for the same product and size in a single purchase",
38
- "reviews": "0",
39
- "review-rating": "4.3",
40
- "price": "<span class='product-card__price-value-text'>From</span> £99,009.00",
41
- "perSQM": "£1,444.00",
42
- "recommended": false,
43
- "badge-text": "new",
44
- "badge-color": "green",
45
- "badge-text-color": "gray"
46
- },
47
- {
48
- "isSponsor": true,
12
+ "src": "https://eu-images.contentstack.com/v3/assets/blt066259863543a0d2/bltf2fa907eeef56dc5/62161f9af3bcce42fe002786/PLP-DecoratingTools-230222.jpg",
13
+ "href": "/sitemap.html",
49
14
  "desktop-position": 7,
50
15
  "mobile-position": 5,
51
- "title": "Rangemaster Classic Deluxe 90 Ceramic Range Cooker Rangemaster Classic Deluxe 90 Ceramic Range Cooker",
52
- "code": "721657",
53
- "src": "https://media.wickes.co.uk/is/image/wickes/normal/Footwear-Tough-Grit-Oak-Boot-7~GPID_1100568107_00",
54
- "descr": "Offer is valid for the same product and size in a single purchase",
55
- "reviews": "21",
56
- "review-rating": "4.4",
57
- "price": "£2,009.00",
58
- "SQM": "£1,555.00",
59
- "click-collect-only": true,
60
- "badge-text": "Clearance",
61
- "badge-color": "yellow",
62
- "badge-text-color": "white"
63
- }
64
- ],
65
- "sponsor-banner": [
16
+ "required-amount-desktop": 6,
17
+ "required-amount-mobile": 4,
18
+ "show": false
19
+ },
66
20
  {
67
21
  "src": "https://eu-images.contentstack.com/v3/assets/blt066259863543a0d2/bltf2fa907eeef56dc5/62161f9af3bcce42fe002786/PLP-DecoratingTools-230222.jpg",
68
22
  "href": "/sitemap.html",
69
- "desktop-position": 6,
70
- "mobile-position": 8
23
+ "required-amount-desktop": 11,
24
+ "required-amount-mobile": 9,
25
+ "show": false
71
26
  }
72
27
  ],
73
28
  "products": [
@@ -241,6 +196,136 @@
241
196
  "recommended": false,
242
197
  "new": true,
243
198
  "new-range": true
199
+ },
200
+ {
201
+ "title": "Rangemaster Classic Deluxe 90 Ceramic Range Cooker",
202
+ "code": "737934",
203
+ "src": "./img/placeholders/map-2.png",
204
+ "descr": "Offer is valid for the same product and size in a single purchase",
205
+ "reviews": "0",
206
+ "price": "£2,009.00",
207
+ "recommended": false
208
+ },
209
+ {
210
+ "title": "Rangemaster Classic Deluxe 90 Ceramic Range Cooker - Black with Chrome Trim ",
211
+ "code": "247767",
212
+ "src": "./img/placeholders/map-2.png",
213
+ "descr": "Offer is valid for the same product and size in a single purchase",
214
+ "reviews": "0",
215
+ "price": "£2,009.00",
216
+ "recommended": false
217
+ },
218
+ {
219
+ "title": "Rangemaster Classic Deluxe 90 Ceramic Range Cooker",
220
+ "code": "978004",
221
+ "src": "./img/placeholders/map-2.png",
222
+ "descr": "Offer is valid for the same product and size in a single purchase",
223
+ "reviews": "0",
224
+ "price": "£2,009.00",
225
+ "recommended": false
226
+ },
227
+ {
228
+ "title": "Rangemaster Classic Deluxe 90 Ceramic Range Cooker",
229
+ "code": "523586",
230
+ "src": "https://media.wickes.co.uk/is/image/wickes/normal/Footwear-Tough-Grit-Alder-Trainer-7~GPID_1100568095_00",
231
+ "descr": "Offer is valid for the same product and size in a single purchase",
232
+ "reviews": "0",
233
+ "perSQM": "£1,444.00",
234
+ "recommended": false
235
+ },
236
+ {
237
+ "title": "Rangemaster Classic Deluxe 90 Ceramic Range Cooker",
238
+ "code": "729112",
239
+ "src": "https://media.wickes.co.uk/is/image/wickes/normal/Footwear-Tough-Grit-Alder-Trainer-7~GPID_1100568095_00",
240
+ "descr": "Offer is valid for the same product and size in a single purchase",
241
+ "reviews": "0",
242
+ "price": "£2,315.00",
243
+ "recommended": false
244
+ },
245
+ {
246
+ "sale": {
247
+ "discount": "15% off",
248
+ "price": "£2,315.00"
249
+ },
250
+ "title": "Rangemaster Classic Deluxe 90 Ceramic Range Cooker",
251
+ "code": "279966",
252
+ "src": "https://media.wickes.co.uk/is/image/wickes/normal/Footwear-Tough-Grit-Alder-Trainer-7~GPID_1100568095_00",
253
+ "descr": "Offer is valid for the same product and size in a single purchase",
254
+ "reviews": "0",
255
+
256
+ "recommended": false
257
+ },
258
+ {
259
+ "title": "Rangemaster Classic Deluxe 90 Ceramic Range Cooker",
260
+ "code": "813053",
261
+ "src": "https://media.wickes.co.uk/is/image/wickes/normal/Footwear-Tough-Grit-Oak-Boot-7~GPID_1100568107_00",
262
+ "descr": "Offer is valid for the same product and size in a single purchase",
263
+ "reviews": "0",
264
+ "SQM": "£1,555.00",
265
+ "recommended": false
266
+ },
267
+ {
268
+ "title": "Rangemaster Classic Deluxe 90 Ceramic Range Cooker",
269
+ "code": "655972",
270
+ "src": "https://media.wickes.co.uk/is/image/wickes/normal/Footwear-Tough-Grit-Oak-Boot-7~GPID_1100568107_00",
271
+ "descr": "Offer is valid for the same product and size in a single purchase",
272
+ "reviews": "0",
273
+
274
+ "recommended": false
275
+ },
276
+ {
277
+ "title": "Rangemaster Classic Deluxe 90 Ceramic Range Cooker",
278
+ "code": "757775",
279
+ "src": "https://media.wickes.co.uk/is/image/wickes/normal/Footwear-Tough-Grit-Oak-Boot-7~GPID_1100568107_00",
280
+ "descr": "Offer is valid for the same product and size in a single purchase",
281
+ "reviews": "0",
282
+
283
+ "recommended": false
284
+ },
285
+ {
286
+ "title": "Rangemaster Classic Deluxe 90 Ceramic Range Cooker",
287
+ "code": "276523",
288
+ "src": "https://media.wickes.co.uk/is/image/wickes/normal/Footwear-Tough-Grit-Alder-Trainer-7~GPID_1100568095_00",
289
+ "descr": "Offer is valid for the same product and size in a single purchase",
290
+ "reviews": "0",
291
+
292
+ "recommended": false
293
+ },
294
+ {
295
+ "title": "Rangemaster Classic Deluxe 90 Ceramic Range Cooker",
296
+ "code": "334333",
297
+ "src": "https://media.wickes.co.uk/is/image/wickes/normal/Footwear-Tough-Grit-Alder-Trainer-7~GPID_1100568095_00",
298
+ "descr": "Offer is valid for the same product and size in a single purchase",
299
+ "reviews": "0",
300
+
301
+ "recommended": false
302
+ },
303
+ {
304
+ "title": "Rangemaster Classic Deluxe 90 Ceramic Range Cooker",
305
+ "code": "597258",
306
+ "src": "https://media.wickes.co.uk/is/image/wickes/normal/Footwear-Tough-Grit-Alder-Trainer-7~GPID_1100568095_00",
307
+ "descr": "Offer is valid for the same product and size in a single purchase",
308
+ "reviews": "0",
309
+
310
+ "recommended": false
311
+ },
312
+ {
313
+ "title": "Rangemaster Classic Deluxe 90 Ceramic Range Cooker",
314
+ "code": "806538",
315
+ "src": "https://media.wickes.co.uk/is/image/wickes/normal/Footwear-Tough-Grit-Oak-Boot-7~GPID_1100568107_00",
316
+ "descr": "Offer is valid for the same product and size in a single purchase",
317
+ "reviews": "0",
318
+ "perSQM": "£1,444.00",
319
+ "recommended": false
320
+ },
321
+ {
322
+ "title": "Rangemaster Classic Deluxe 90 Ceramic Range Cooker",
323
+ "code": "276521",
324
+ "src": "https://media.wickes.co.uk/is/image/wickes/normal/Footwear-Tough-Grit-Oak-Boot-7~GPID_1100568107_00",
325
+ "descr": "Offer is valid for the same product and size in a single purchase",
326
+ "reviews": "0",
327
+
328
+ "recommended": false
244
329
  }
245
330
  ]
246
331
  }
@@ -64,7 +64,7 @@
64
64
  },
65
65
  {
66
66
  "name": "Payment details:",
67
- "value": "<div class='klarna-logo-img mt-1'><img src='./img/klarna.svg' alt='klarna'></div>"
67
+ "value": "<div class='klarna-logo-img mt-1'><klarna-placement data-key='sidebar-promotion-auto-size' data-locale='en-GB'></klarna-placement></div>"
68
68
  },
69
69
  {
70
70
  "name": "Voucher:",
@@ -0,0 +1,148 @@
1
+ var Wick = Wick || {};
2
+ Wick.ProductBanner = {
3
+ el: {
4
+ banners: '.card-product-banner',
5
+ bannerInactiveClass: 'card-product-banner--inactive',
6
+ productsWrap: '.products-list-v2',
7
+ $products: $('.product-card'),
8
+ attrPositionDesktop: 'data-desktop-position',
9
+ attrPositionMobile: 'data-mobile-position',
10
+ attrRequiredAmountDesktop: 'data-required-amount-desktop',
11
+ attrRequiredAmountMobile: 'data-required-amount-mobile',
12
+ hide: 'd-none'
13
+ },
14
+ currentBreakpoint: null,
15
+ checkProductsInColumn() {
16
+ Wick.ProductBanner.addInactiveClasses();
17
+ Wick.ProductBanner.arrangeBannersInRightOrder();
18
+ $(Wick.ProductBanner.el.banners).each((index, banner) => {
19
+ Wick.ProductBanner.hideBannerDueLimit(banner, index);
20
+ Wick.ProductBanner.moveBannerToSpecifiedPosition(banner);
21
+ });
22
+ },
23
+ moveBannerToSpecifiedPosition(banner) {
24
+ const $listSlots = Wick.ProductBanner.getListSlots();
25
+ const bannerPosition = Wick.ProductBanner.getBannerPosition(banner) - 2;
26
+ const listSlotsLength = $listSlots.length;
27
+
28
+ if(Wick.ProductBanner.isBannerVisible(banner)) {
29
+ if (bannerPosition <= listSlotsLength) {
30
+ if ($listSlots[bannerPosition]) {
31
+ Wick.ProductBanner.showBanner(banner);
32
+ Wick.ProductBanner.removeInactiveClass(banner);
33
+ Wick.ProductBanner.moveBanner(banner, $listSlots[bannerPosition]);
34
+ } else {
35
+ Wick.ProductBanner.hideBanner(banner);
36
+ Wick.ProductBanner.coverEdgeCases(banner);
37
+ }
38
+ } else {
39
+ Wick.ProductBanner.hideBanner(banner);
40
+ }
41
+ }
42
+ },
43
+ moveBanner(banner, targetElement) {
44
+ $(banner).remove();
45
+ $(targetElement).after(banner);
46
+ },
47
+ hideBanner(banner) {
48
+ $(banner).addClass(Wick.ProductBanner.el.hide);
49
+ },
50
+ showBanner(banner) {
51
+ $(banner).removeClass(Wick.ProductBanner.el.hide);
52
+ },
53
+ isBannerVisible(banner) {
54
+ return !$(banner).hasClass(Wick.ProductBanner.el.hide);
55
+ },
56
+ hideBannerDueLimit(banner) {
57
+ const bannerMinLimit = Wick.ProductBanner.getBannerLimit(banner) - 1;
58
+ const $listSlots = Wick.ProductBanner.getListSlots();
59
+ const listProductsLength = $listSlots.length;
60
+ Wick.ProductBanner.showBanner(banner);
61
+
62
+ if (bannerMinLimit > listProductsLength) {
63
+ Wick.ProductBanner.hideBanner(banner);
64
+ }
65
+ },
66
+ getBannerPosition(banner) {
67
+ const isMobile = Wick.ProductBanner.isMobileResolution();
68
+ const positionAttribute = isMobile
69
+ ? Wick.ProductBanner.el.attrPositionMobile
70
+ : Wick.ProductBanner.el.attrPositionDesktop
71
+
72
+ return banner.hasAttribute(positionAttribute)
73
+ ? Number(banner.getAttribute(positionAttribute))
74
+ : Number(Wick.ProductBanner.getListLength() + Wick.ProductBanner.getBannersAmount());
75
+ },
76
+ getBannerLimit(banner) {
77
+ const isMobile = Wick.ProductBanner.isMobileResolution();
78
+
79
+ const limitAttribute = isMobile
80
+ ? Wick.ProductBanner.el.attrRequiredAmountMobile
81
+ : Wick.ProductBanner.el.attrRequiredAmountDesktop;
82
+
83
+ return banner.hasAttribute(limitAttribute)
84
+ ? Number(banner.getAttribute(limitAttribute))
85
+ : 0;
86
+ },
87
+ isMobileResolution() {
88
+ return Wick.Responsive.getCurrentBreakpoint() !== 'up-lg';
89
+ },
90
+ getListLength() {
91
+ const $listItems = $(Wick.ProductBanner.el.productsWrap).find('.product-card');
92
+ return $listItems.length;
93
+ },
94
+ getBannersAmount() {
95
+ return $(Wick.ProductBanner.el.banners).length;
96
+ },
97
+ getProductsAmount() {
98
+ return Wick.ProductBanner.el.$products.length;
99
+ },
100
+ arrangeBannersInRightOrder() {
101
+ $(Wick.ProductBanner.el.banners).sort((a, b) => {
102
+ let bannerPositionA = Wick.ProductBanner.getBannerPosition(a);
103
+ let bannerPositionB = Wick.ProductBanner.getBannerPosition(b);
104
+
105
+ return bannerPositionA - bannerPositionB
106
+ }).appendTo(Wick.ProductBanner.el.productsWrap);
107
+ },
108
+ addInactiveClasses() {
109
+ $(Wick.ProductBanner.el.banners).addClass(Wick.ProductBanner.el.bannerInactiveClass);
110
+ },
111
+ removeInactiveClass(banner) {
112
+ $(banner).removeClass(Wick.ProductBanner.el.bannerInactiveClass)
113
+ },
114
+ insertFirstBanner(banner) {
115
+ const bannerPosition = Wick.ProductBanner.getBannerPosition(banner);
116
+
117
+ if (bannerPosition === 1) {
118
+ Wick.ProductBanner.showBanner(banner);
119
+ Wick.ProductBanner.removeInactiveClass(banner);
120
+ $(banner).remove();
121
+ $(Wick.ProductBanner.el.productsWrap).prepend(banner);
122
+ }
123
+ },
124
+ coverEdgeCases(banner) {
125
+ Wick.ProductBanner.insertFirstBanner(banner);
126
+ },
127
+ getListSlots() {
128
+ return $(Wick.ProductBanner.el.productsWrap)
129
+ .find('.product-card, .card-product-banner:not(.card-product-banner--inactive)');
130
+ },
131
+ init() {
132
+ Wick.Responsive.onResize(function () {
133
+ if(Wick.ProductBanner.currentBreakpoint !== Wick.Responsive.getCurrentBreakpoint()) {
134
+ Wick.ProductBanner.currentBreakpoint = Wick.Responsive.getCurrentBreakpoint()
135
+ Wick.ProductBanner.checkProductsInColumn();
136
+ $(window).trigger('productBannerPositionChanged');
137
+ }
138
+ });
139
+ }
140
+ };
141
+
142
+ $(document).ready(function () {
143
+ if (!Wick.ProductBanner.getBannersAmount() || !Wick.ProductBanner.getProductsAmount()) {
144
+ return;
145
+ }
146
+
147
+ Wick.ProductBanner.init();
148
+ })
@@ -211,9 +211,27 @@ Wick.Forms = (function(){
211
211
  }
212
212
 
213
213
  function isNotEmpty(field){
214
- return !!$(field).val();
214
+ var $field = $(field);
215
+ var type = ($field.attr('type') || '').toLowerCase();
216
+
217
+ if (type === 'checkbox') {
218
+ return $field.is(':checked');
219
+ }
220
+
221
+ if (type === 'radio') {
222
+ var name = $field.attr('name');
223
+ if (!name) return false;
224
+
225
+ var $scope = $field.closest('[data-row-required]');
226
+ if (!$scope.length) $scope = $field.closest('form');
227
+
228
+ return $scope.find('input[type="radio"][name="' + name.replace(/"/g, '\\"') + '"]').is(':checked');
229
+ }
230
+
231
+ return !!$field.val();
215
232
  }
216
233
 
234
+
217
235
  if ($(form).is('#form-checkout-your-details')) {
218
236
  var requiredFields = $(form).find('[data-row-required]:visible :input');
219
237
  if (_.every(requiredFields, isNotEmpty)){