wickes-css2 2.112.0-develop.1 → 2.112.0-develop.11

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 (367) hide show
  1. package/Readme.md +1 -5
  2. package/build/css/account-families-main.css +1 -1
  3. package/build/css/category-main.css +1 -1
  4. package/build/css/components/card-product-banner.css +1 -1
  5. package/build/css/components/card-store-locator-v2.css +1 -1
  6. package/build/css/components/global-search.css +1 -1
  7. package/build/css/components/special-opening-schedule-v2.css +1 -1
  8. package/build/css/homepage-main.css +1 -1
  9. package/build/css/kitchen-plp-main.css +1 -1
  10. package/build/css/main.css +1 -1
  11. package/build/css/my-account-main-v2.css +1 -1
  12. package/build/css/my-account-main.css +1 -1
  13. package/build/css/pages/checkout-new.css +1 -1
  14. package/build/css/pages/checkout.css +1 -1
  15. package/build/css/pages/home-movers.css +1 -1
  16. package/build/css/pages/my-account-v2.css +1 -1
  17. package/build/css/pages/my-account.css +1 -1
  18. package/build/css/pages/oldweb_header.css +1 -1
  19. package/build/css/pages/page_act-trade-pro.css +1 -1
  20. package/build/css/pages/page_book-consultant-thank-you-new.css +1 -1
  21. package/build/css/pages/page_checkout-payment-details.css +1 -1
  22. package/build/css/pages/page_checkout_delivery-new.css +1 -1
  23. package/build/css/pages/page_content.css +1 -1
  24. package/build/css/pages/page_default-store.css +1 -1
  25. package/build/css/pages/page_fdl-management.css +1 -1
  26. package/build/css/pages/page_fi.css +1 -1
  27. package/build/css/pages/page_forgotten-password.css +1 -1
  28. package/build/css/pages/page_home.css +1 -1
  29. package/build/css/pages/page_in-store-checkout.css +1 -1
  30. package/build/css/pages/page_installer_form.css +1 -1
  31. package/build/css/pages/page_kitchen-claims.css +1 -1
  32. package/build/css/pages/page_merged-basket.css +1 -1
  33. package/build/css/pages/page_my-order.css +1 -1
  34. package/build/css/pages/page_my-orders.css +1 -1
  35. package/build/css/pages/page_new-checkout-forgot.css +1 -1
  36. package/build/css/pages/page_online-exclusive.css +1 -1
  37. package/build/css/pages/page_pre_home.css +1 -1
  38. package/build/css/pages/page_pre_home_thank-you.css +1 -1
  39. package/build/css/pages/page_product-details-critical.css +1 -1
  40. package/build/css/pages/page_product-details-v2.css +1 -1
  41. package/build/css/pages/page_product-details.css +1 -1
  42. package/build/css/pages/page_product_search.css +1 -1
  43. package/build/css/pages/page_products-list-combined.css +1 -1
  44. package/build/css/pages/page_products-list.css +1 -1
  45. package/build/css/pages/page_registration.css +1 -1
  46. package/build/css/pages/page_shopping-cart-v2.css +1 -1
  47. package/build/css/pages/page_shopping-cart.css +1 -1
  48. package/build/css/pages/page_store-locator-details.css +1 -1
  49. package/build/css/pages/page_thankyou.css +1 -1
  50. package/build/css/pages/page_ti.css +1 -1
  51. package/build/css/pages/page_top-rated.css +1 -1
  52. package/build/css/pages/page_upd-pass.css +1 -1
  53. package/build/css/pages/page_wismo-details.css +1 -1
  54. package/build/css/pages/page_wismo-orders.css +1 -1
  55. package/build/css/pages/sticky_header.css +1 -1
  56. package/build/css/pages/tradePro-signup.css +1 -1
  57. package/build/css/pdp-main-before-combine.css +1 -1
  58. package/build/css/pdp-main-critical.css +1 -1
  59. package/build/css/pdp-main-non-critical.css +1 -1
  60. package/build/css/pdp-main.css +1 -1
  61. package/build/css/plp-main.css +1 -1
  62. package/build/css/shopping-list-pdf.css +1 -1
  63. package/build/css/store-locator-main.css +1 -1
  64. package/build/js/basket.min.js +1 -1
  65. package/build/js/bloomreach-widget.min.js +1 -1
  66. package/build/js/emulation.min.js +3072 -2397
  67. package/build/js/page/basket-v2.js +29 -20
  68. package/build/js/page/bloomreach-widget/bloomreach-widget-tracking.js +87 -0
  69. package/build/js/page/bloomreach-widget/bloomreach-widget.js +250 -0
  70. package/build/js/page/{bloomreach-widget.js → bloomreach-widget/complete-your-project-widget.js} +270 -359
  71. package/build/js/page/bloomreach-widget/why-not-add-widget.js +230 -0
  72. package/build/js/page/checkout-payment-details.js +10 -0
  73. package/build/js/page/utils/data-layer.js +9 -0
  74. package/package.json +3 -9
  75. package/src/components/address-billie.hbs +22 -18
  76. package/src/components/bloomreach/complete-card.hbs +6 -34
  77. package/src/components/bloomreach/complete-summary.hbs +2 -2
  78. package/src/components/bloomreach/why-not-add-card-skeleton.hbs +14 -0
  79. package/src/components/bloomreach/why-not-add-card.hbs +73 -0
  80. package/src/components/bloomreach/why-not-add-content.hbs +41 -0
  81. package/src/components/bloomreach/why-not-add-skeleton.hbs +9 -0
  82. package/src/components/bloomreach/why-not-add.hbs +6 -0
  83. package/src/components/checkout-edit-billing-address.hbs +1 -1
  84. package/src/components/checkout-payment-details-v2.hbs +6 -1
  85. package/src/components/my-account/order.hbs +6 -1
  86. package/src/components/order-item.hbs +7 -7
  87. package/src/components/pdp-price-actions.hbs +2 -2
  88. package/src/components/potential-promotion.hbs +4 -4
  89. package/src/components/price-badges.hbs +12 -0
  90. package/src/components/price-block-v2.hbs +5 -12
  91. package/src/components/reviews-rating.hbs +22 -0
  92. package/src/components/share-list-modal-without-social-icons.hbs +2 -2
  93. package/src/components/share-list-modal.hbs +7 -3
  94. package/src/data/data_shopping-cart-v2.json +46 -2
  95. package/src/data/data_shopping-cart-with-energy.json +26 -2
  96. package/src/data/my-account/data_my-order.json +8 -0
  97. package/src/js/emulation/basket-data.js +312 -0
  98. package/src/js/emulation/bloomreach-widget-loading.js +2 -2
  99. package/src/js/emulation/mock.js +2718 -2363
  100. package/src/js/emulation/shopping-list.js +40 -49
  101. package/src/js/emulation/tracking-emulation.js +38 -0
  102. package/src/js/emulation/why-not-add-loading.js +11 -0
  103. package/src/js/emulation/why-not-add.js +28 -0
  104. package/src/js/page/basket-v2.js +29 -20
  105. package/src/js/page/bloomreach-widget/bloomreach-widget-tracking.js +87 -0
  106. package/src/js/page/bloomreach-widget/bloomreach-widget.js +250 -0
  107. package/src/js/page/{bloomreach-widget.js → bloomreach-widget/complete-your-project-widget.js} +270 -359
  108. package/src/js/page/bloomreach-widget/why-not-add-widget.js +230 -0
  109. package/src/js/page/checkout-payment-details.js +10 -0
  110. package/src/js/page/utils/data-layer.js +9 -0
  111. package/src/page_payment-details-billie-registered-only.html +76 -0
  112. package/src/page_payment-details-billie-unregistered-only.html +76 -0
  113. package/src/page_product-details-bloomreach.html +1 -1
  114. package/src/page_product-details-with-global-search-v2.html +2 -1
  115. package/src/page_product-details-with-why-not-add-single.html +131 -0
  116. package/src/page_track-my-order-result.html +1 -0
  117. package/src/scss/category-main.scss +5 -7
  118. package/src/scss/common/_app.scss +1 -1
  119. package/src/scss/common/_rewards-counter.scss +1 -2
  120. package/src/scss/common/_typography.scss +1 -1
  121. package/src/scss/common/_vat-toggle.scss +1 -1
  122. package/src/scss/components/_add-list-id.scss +0 -1
  123. package/src/scss/components/_advice-inspiration-critical.scss +2 -2
  124. package/src/scss/components/_advice-inspiration.scss +2 -3
  125. package/src/scss/components/_anchor-nav.scss +1 -1
  126. package/src/scss/components/_aside-accordion.scss +0 -5
  127. package/src/scss/components/_aside-nav.scss +1 -1
  128. package/src/scss/components/_aside-nav2.scss +0 -2
  129. package/src/scss/components/_autocomplete.scss +0 -1
  130. package/src/scss/components/_banner-2.scss +1 -1
  131. package/src/scss/components/_banner-info.scss +1 -1
  132. package/src/scss/components/_banner.scss +0 -2
  133. package/src/scss/components/_barcode.scss +0 -1
  134. package/src/scss/components/_big-wins-critical.scss +8 -9
  135. package/src/scss/components/_big-wins.scss +25 -32
  136. package/src/scss/components/_billie-modal.scss +5 -6
  137. package/src/scss/components/_billie-online-messaging.scss +2 -2
  138. package/src/scss/components/_card.scss +1 -5
  139. package/src/scss/components/_cards-slider.scss +1 -1
  140. package/src/scss/components/_category-tree.scss +2 -2
  141. package/src/scss/components/_charity-donations.scss +7 -7
  142. package/src/scss/components/_checkout-action.scss +0 -2
  143. package/src/scss/components/_colour-block.scss +0 -2
  144. package/src/scss/components/_cookies-policy.scss +1 -1
  145. package/src/scss/components/_copy-project-id.scss +0 -1
  146. package/src/scss/components/_donation-cart-new.scss +6 -6
  147. package/src/scss/components/_donation-cart.scss +3 -4
  148. package/src/scss/components/_favourite-product.scss +1 -1
  149. package/src/scss/components/_gallery-critical.scss +3 -3
  150. package/src/scss/components/_gallery-pdp-critical.scss +4 -4
  151. package/src/scss/components/_gallery-pdp.scss +2 -2
  152. package/src/scss/components/_gallery.scss +2 -2
  153. package/src/scss/components/_hero.scss +0 -1
  154. package/src/scss/components/_home-banner.scss +1 -1
  155. package/src/scss/components/_kitchen-card.scss +4 -4
  156. package/src/scss/components/_lines-group.scss +0 -1
  157. package/src/scss/components/_marketing-preferences.scss +1 -1
  158. package/src/scss/components/_merge-basket-options.scss +0 -1
  159. package/src/scss/components/_modal-box.scss +5 -5
  160. package/src/scss/components/_new-checkout-form.scss +1 -1
  161. package/src/scss/components/_notifications-critical.scss +1 -3
  162. package/src/scss/components/_order-item-cc.scss +6 -7
  163. package/src/scss/components/_order-item.scss +11 -12
  164. package/src/scss/components/_order-line-shop-list.scss +2 -2
  165. package/src/scss/components/_order-line.scss +3 -3
  166. package/src/scss/components/_page-overlay.scss +3 -9
  167. package/src/scss/components/_payment-transactions.scss +5 -5
  168. package/src/scss/components/_payments.scss +0 -1
  169. package/src/scss/components/_pdp-cta.scss +0 -4
  170. package/src/scss/components/_pdp-info-v2.scss +2 -5
  171. package/src/scss/components/_popular-categories.scss +0 -2
  172. package/src/scss/components/_potential-promotion.scss +1 -1
  173. package/src/scss/components/_price-badges-critical.scss +0 -1
  174. package/src/scss/components/_price-badges.scss +0 -2
  175. package/src/scss/components/_price-tooltip.scss +3 -2
  176. package/src/scss/components/_price.scss +2 -2
  177. package/src/scss/components/_product-card-critical.scss +1 -2
  178. package/src/scss/components/_product-card.scss +3 -5
  179. package/src/scss/components/_product-main-info.scss +4 -5
  180. package/src/scss/components/_project-list-multiple.scss +4 -4
  181. package/src/scss/components/_project-list-total.scss +1 -1
  182. package/src/scss/components/_proposition.scss +2 -2
  183. package/src/scss/components/_range-card.scss +1 -3
  184. package/src/scss/components/_range-types.scss +2 -2
  185. package/src/scss/components/_recommended.scss +1 -5
  186. package/src/scss/components/_rewards.scss +1 -1
  187. package/src/scss/components/_saving-shopping-list-modal.scss +1 -2
  188. package/src/scss/components/_seo-widgets.scss +1 -2
  189. package/src/scss/components/_share-list-modal.scss +1 -2
  190. package/src/scss/components/_shop-colour.scss +1 -1
  191. package/src/scss/components/_shopping-list-note.scss +2 -2
  192. package/src/scss/components/_smart-banner.scss +4 -5
  193. package/src/scss/components/_snack-bar.scss +2 -2
  194. package/src/scss/components/_steps-three.scss +3 -3
  195. package/src/scss/components/_steps.scss +2 -2
  196. package/src/scss/components/_sticky-element-appearance.scss +2 -2
  197. package/src/scss/components/_tables.scss +1 -2
  198. package/src/scss/components/_tabs.scss +0 -1
  199. package/src/scss/components/_tc-generic-floor.scss +3 -3
  200. package/src/scss/components/_tc-generic.scss +4 -4
  201. package/src/scss/components/_thank-you-modal.scss +3 -1
  202. package/src/scss/components/_ti-floor.scss +3 -4
  203. package/src/scss/components/_ti-header.scss +2 -2
  204. package/src/scss/components/_ti-radio.scss +4 -4
  205. package/src/scss/components/_ti-total-area.scss +10 -10
  206. package/src/scss/components/_tile-banner.scss +1 -1
  207. package/src/scss/components/_tile-product.scss +3 -4
  208. package/src/scss/components/_tooltip.scss +2 -2
  209. package/src/scss/components/_trade-offers.scss +0 -1
  210. package/src/scss/components/_tradepro-discount-banner.scss +10 -15
  211. package/src/scss/components/_user-address-delivery.scss +1 -3
  212. package/src/scss/components/_user-address.scss +1 -1
  213. package/src/scss/components/_usp-component.scss +0 -1
  214. package/src/scss/components/_voucher-accordion.scss +3 -3
  215. package/src/scss/components/_wisdom-critical.scss +2 -3
  216. package/src/scss/components/_wisdom.scss +6 -9
  217. package/src/scss/components/_your-details.scss +0 -1
  218. package/src/scss/components/account-families/_add-members.scss +1 -3
  219. package/src/scss/components/account-families/_member-card.scss +3 -3
  220. package/src/scss/components/bloomreach/_bloomreach.scss +3 -0
  221. package/src/scss/components/bloomreach/_complete-card.scss +0 -38
  222. package/src/scss/components/bloomreach/_reviews.scss +60 -0
  223. package/src/scss/components/bloomreach/_why-not-add-card.scss +223 -0
  224. package/src/scss/components/bloomreach/_why-not-add.scss +143 -0
  225. package/src/scss/components/card-store-locator-v2.scss +0 -1
  226. package/src/scss/components/card_v2.scss +3 -7
  227. package/src/scss/components/checkout-loader-modal.scss +0 -1
  228. package/src/scss/components/energy-efficiency.scss +6 -6
  229. package/src/scss/components/global-search.scss +14 -20
  230. package/src/scss/components/kitchen/_chips.scss +7 -6
  231. package/src/scss/components/kitchen/_filter-card.scss +1 -1
  232. package/src/scss/components/kitchen/_sort-by.scss +2 -3
  233. package/src/scss/components/kitchen/strip-stickers.scss +1 -1
  234. package/src/scss/components/loader.scss +5 -6
  235. package/src/scss/components/my-account/_active-orders.scss +6 -6
  236. package/src/scss/components/my-account/_consignment-info.scss +3 -3
  237. package/src/scss/components/my-account/_contacts.scss +2 -2
  238. package/src/scss/components/my-account/_menu.scss +2 -2
  239. package/src/scss/components/my-account/_mobile-nav.scss +4 -4
  240. package/src/scss/components/my-account/_order-process.scss +3 -3
  241. package/src/scss/components/my-account/_order-status.scss +3 -3
  242. package/src/scss/components/my-account/_orders-nav.scss +1 -1
  243. package/src/scss/components/my-account/_payment-status.scss +2 -2
  244. package/src/scss/components/my-account/_saving-totaliser.scss +8 -7
  245. package/src/scss/components/my-account/_shipment.scss +2 -2
  246. package/src/scss/components/pdf-loader.scss +1 -2
  247. package/src/scss/components/price-block-v2-critical.scss +0 -1
  248. package/src/scss/components/price-block-v2.scss +0 -3
  249. package/src/scss/components/store-locator-v2-details.scss +2 -2
  250. package/src/scss/components/strip-stickers.scss +1 -1
  251. package/src/scss/helpers/_elements.scss +0 -1
  252. package/src/scss/helpers/_mixins.scss +5 -5
  253. package/src/scss/helpers/_store-locator-elements.scss +0 -1
  254. package/src/scss/helpers/_typography.scss +3 -3
  255. package/src/scss/helpers/_utilities.scss +0 -1
  256. package/src/scss/helpers/helpers-pdp-critical/_CTAs-critical-pdp.scss +1 -1
  257. package/src/scss/helpers/helpers-pdp-critical/_elements-critical-pdp.scss +0 -1
  258. package/src/scss/helpers/helpers-pdp-critical/_helpers-critical-pdp.scss +1 -1
  259. package/src/scss/helpers/helpers-pdp-critical/_typography-critical-pdp.scss +4 -4
  260. package/src/scss/libs/_bootstrap-extracted.scss +42 -12
  261. package/src/scss/libs/_cat-libs.scss +10 -10
  262. package/src/scss/libs/_font-awesome-icons.scss +133 -113
  263. package/src/scss/libs/_homepage-libs.scss +12 -12
  264. package/src/scss/libs/_plp-libs.scss +11 -11
  265. package/src/scss/libs/_skeleton.scss +4 -4
  266. package/src/scss/libs/_store-locator-libs.scss +1 -1
  267. package/src/scss/libs/flatpickr.scss +6 -6
  268. package/src/scss/my-account-main-v2.scss +19 -19
  269. package/src/scss/my-account-main.scss +19 -19
  270. package/src/scss/pages/_checkout-confirmation.scss +1 -3
  271. package/src/scss/pages/_checkout-sign-in.scss +1 -2
  272. package/src/scss/pages/_checkout-tradepro.scss +3 -4
  273. package/src/scss/pages/_checkout-widget.scss +10 -16
  274. package/src/scss/pages/_checkout_delivery-details.scss +1 -3
  275. package/src/scss/pages/_checkout_edit-delivery-address.scss +0 -1
  276. package/src/scss/pages/_checkout_terms-and-conditions.scss +0 -1
  277. package/src/scss/pages/_checkout_your-details.scss +1 -1
  278. package/src/scss/pages/_contact-us.scss +0 -1
  279. package/src/scss/pages/_facets.scss +0 -2
  280. package/src/scss/pages/_my-account_address-details.scss +0 -3
  281. package/src/scss/pages/_my-account_change-email.scss +0 -1
  282. package/src/scss/pages/_my-account_new.scss +25 -31
  283. package/src/scss/pages/_my-account_order-details.scss +1 -1
  284. package/src/scss/pages/_my-account_order-history.scss +1 -2
  285. package/src/scss/pages/_my-account_personal-details.scss +0 -5
  286. package/src/scss/pages/_my-account_profile.scss +1 -2
  287. package/src/scss/pages/_my-account_your-account.scss +0 -1
  288. package/src/scss/pages/_page_category-landing.scss +3 -2
  289. package/src/scss/pages/bicester-header.scss +0 -1
  290. package/src/scss/pages/checkout.scss +4 -5
  291. package/src/scss/pages/home-movers.scss +1 -1
  292. package/src/scss/pages/iframe-paypage.scss +44 -44
  293. package/src/scss/pages/my-account.scss +3 -3
  294. package/src/scss/pages/oldweb_header.scss +5 -6
  295. package/src/scss/pages/page_account-deletion.scss +1 -1
  296. package/src/scss/pages/page_act-trade-pro.scss +0 -1
  297. package/src/scss/pages/page_address-book.scss +0 -1
  298. package/src/scss/pages/page_bathroom-trends.scss +0 -1
  299. package/src/scss/pages/page_book-consultant-thank-you-new.scss +3 -5
  300. package/src/scss/pages/page_checkout-payment-details.scss +2 -5
  301. package/src/scss/pages/page_cms_homepage.scss +1 -1
  302. package/src/scss/pages/page_contact-us.scss +1 -1
  303. package/src/scss/pages/page_content.scss +0 -4
  304. package/src/scss/pages/page_default-store.scss +2 -3
  305. package/src/scss/pages/page_empty-basket.scss +0 -5
  306. package/src/scss/pages/page_fdl-management.scss +0 -1
  307. package/src/scss/pages/page_fi.scss +0 -2
  308. package/src/scss/pages/page_home.scss +0 -2
  309. package/src/scss/pages/page_hotspot-guttering.scss +0 -1
  310. package/src/scss/pages/page_in-store-checkout.scss +1 -3
  311. package/src/scss/pages/page_installer.scss +3 -5
  312. package/src/scss/pages/page_installer_form.scss +0 -1
  313. package/src/scss/pages/page_kitchen-claims.scss +2 -5
  314. package/src/scss/pages/page_kitchen-list.scss +1 -1
  315. package/src/scss/pages/page_marketing-preferences.scss +1 -1
  316. package/src/scss/pages/page_merged-basket.scss +2 -2
  317. package/src/scss/pages/page_my-account_tradePro.scss +1 -1
  318. package/src/scss/pages/page_my-order.scss +15 -15
  319. package/src/scss/pages/page_my-orders.scss +2 -2
  320. package/src/scss/pages/page_new-checkout_login-register.scss +1 -2
  321. package/src/scss/pages/page_no-results.scss +1 -2
  322. package/src/scss/pages/page_online-exclusive.scss +6 -6
  323. package/src/scss/pages/page_personal-details.scss +2 -2
  324. package/src/scss/pages/page_pre_home.scss +7 -7
  325. package/src/scss/pages/page_pre_home_thank-you.scss +2 -2
  326. package/src/scss/pages/page_product-details-critical.scss +7 -1
  327. package/src/scss/pages/page_product-details-v2-critical.scss +1 -2
  328. package/src/scss/pages/page_product-details.scss +7 -1
  329. package/src/scss/pages/page_products-list-phone.scss +0 -7
  330. package/src/scss/pages/page_products-list.scss +2 -2
  331. package/src/scss/pages/page_quiz.scss +3 -3
  332. package/src/scss/pages/page_rate-review.scss +0 -3
  333. package/src/scss/pages/page_registration.scss +0 -3
  334. package/src/scss/pages/page_store-locator-details.scss +2 -2
  335. package/src/scss/pages/page_ti.scss +1 -5
  336. package/src/scss/pages/page_top-rated.scss +5 -5
  337. package/src/scss/pages/page_track-my-order.scss +1 -1
  338. package/src/scss/pages/page_track_your_order.scss +5 -5
  339. package/src/scss/pages/page_upd-pass.scss +0 -1
  340. package/src/scss/pages/page_wismo-details.scss +8 -8
  341. package/src/scss/pages/page_wismo-order-history.scss +3 -3
  342. package/src/scss/pages/page_wismo-orders.scss +7 -7
  343. package/src/scss/pages/print_quiz.scss +3 -1
  344. package/src/scss/pages/sticky_header.scss +5 -6
  345. package/src/scss/pages/tradePro-about.scss +1 -1
  346. package/src/scss/pages/tradePro-discount.scss +1 -2
  347. package/src/scss/pages/tradePro-rewards-old.scss +4 -3
  348. package/src/scss/pages/tradePro-signup.scss +3 -5
  349. package/src/scss/partials/_breadcrumbs-critical.scss +2 -2
  350. package/src/scss/partials/_breadcrumbs.scss +2 -2
  351. package/src/scss/partials/_footer-v2.scss +2 -2
  352. package/src/scss/partials/_footer.scss +4 -4
  353. package/src/scss/partials/_footer_checkout-new.scss +1 -1
  354. package/src/scss/partials/_footer_checkout.scss +1 -1
  355. package/src/scss/partials/_header-critical.scss +6 -9
  356. package/src/scss/partials/_header.scss +7 -9
  357. package/src/scss/partials/_header_checkout.scss +2 -2
  358. package/src/scss/partials/_main-nav.scss +7 -11
  359. package/src/scss/partials/_sign-up.scss +3 -3
  360. package/src/scss/shopping-list-pdf.scss +1 -1
  361. package/src/sitemap.html +22 -4
  362. package/src/components/.DS_Store +0 -0
  363. package/src/img/.DS_Store +0 -0
  364. package/src/img/placeholders/.DS_Store +0 -0
  365. package/src/js/page/.DS_Store +0 -0
  366. package/src/scss/.DS_Store +0 -0
  367. package/src/scss/pages/.DS_Store +0 -0
@@ -1,11 +1,13 @@
1
1
  var Wick = Wick || {};
2
2
 
3
3
  Wick.ShoppingList = {
4
- bindAll : function () {
4
+ invalidEmailMessage: 'Please enter a valid email address',
5
+
6
+ bindAll: function () {
5
7
  Wick.ShoppingList.bindButtons();
6
8
  },
7
9
 
8
- bindButtons : function () {
10
+ bindButtons: function () {
9
11
  $('.btn-share-confirmation .btn-primary').on('click', function (e) {
10
12
  e.preventDefault();
11
13
  $('#share-via-email').prop('required', false);
@@ -13,7 +15,7 @@ Wick.ShoppingList = {
13
15
  });
14
16
  },
15
17
 
16
- submitSharingShoppingList : function () {
18
+ submitSharingShoppingList: function () {
17
19
  var forms = Wick.ShoppingList.getRecipientEmailsForms();
18
20
 
19
21
  if (Wick.ShoppingList.isFormsValid(forms)) {
@@ -21,82 +23,71 @@ Wick.ShoppingList = {
21
23
  }
22
24
  },
23
25
 
24
- onSuccessSharingShoppingList : function () {
26
+ onSuccessSharingShoppingList: function () {
25
27
  Wick.ShoppingList.resetFormErrors();
26
28
  },
27
29
 
28
- getRecipientEmailsForms : function () {
30
+ getRecipientEmailsForms: function () {
29
31
  var forms = new Array();
30
32
 
31
33
  forms.push($('#share-via-email'));
32
34
  $('.share-via-email-box').each(function () {
33
- forms.push($(this).find('[type="email"]'));
35
+ forms.push($(this).find('[name="share-list-modal"]'));
34
36
  });
35
37
 
36
38
  return forms;
37
39
  },
38
40
 
39
- isFormsValid : function (forms) {
40
- var oneFieldFilledIn = false;
41
+ clearValidationErrors: function (forms) {
42
+ forms.forEach(function (form) {
43
+ window.Wick.Validation.removeValidationError(form);
44
+ });
45
+ },
41
46
 
42
- forms.forEach(function(form) {
43
- if ($(form).val() !== '') {
44
- oneFieldFilledIn = true;
45
- }
47
+ isFormsValid: function (forms) {
48
+ Wick.ShoppingList.clearValidationErrors(forms);
49
+
50
+ var oneFieldFilledIn = forms.some(function (form) {
51
+ return $(form).val() !== '';
46
52
  });
47
53
 
48
54
  if (!oneFieldFilledIn) {
49
- Wick.ShoppingList.showEmptyFormsWarning(forms[0]);
55
+ window.Wick.Validation.displayValidationError(
56
+ forms[0],
57
+ Wick.ShoppingList.invalidEmailMessage
58
+ );
50
59
  return false;
51
60
  }
52
61
 
53
62
  var isFormsValid = true;
54
63
 
55
- forms.forEach(function(form) {
56
- console.log(form[0]);
57
- if (!form[0].checkValidity()) {
58
- Wick.ShoppingList.showInvalidEmailWarning(form);
59
- isFormsValid = false;
60
- }
61
- });
64
+ forms
65
+ .filter(function (form) {
66
+ return $(form).val() !== '';
67
+ })
68
+ .forEach(function (form) {
69
+ if (window.Wick.Validation.isValidEmail($(form).val())) {
70
+ window.Wick.Validation.removeValidationError(form);
71
+ } else {
72
+ window.Wick.Validation.displayValidationError(
73
+ form,
74
+ Wick.ShoppingList.invalidEmailMessage
75
+ );
76
+ isFormsValid = false;
77
+ }
78
+ });
62
79
 
63
80
  return isFormsValid;
64
81
  },
65
82
 
66
- showEmptyFormsWarning : function (form) {
67
- form.prop('required', true);
68
-
69
- try {
70
- form.get(0).reportValidity();
71
- } catch (e) {
72
- Wick.ShoppingList.resetFormErrors();
73
-
74
- form.closest('.form-row').addClass('form-row_validation-error');
75
- form.closest('.form-row__field').append('<div class="form-row__error">Please fill in the field</div>');
76
- }
77
- },
78
-
79
- showInvalidEmailWarning : function (form) {
80
- try {
81
- form.get(0).reportValidity();
82
- } catch (e) {
83
- Wick.ShoppingList.resetFormErrors();
84
-
85
- form.closest('.form-row').addClass('form-row_validation-error');
86
- form.closest('.form-row__field').append('<div class="form-row__error">Please fill in the field</div>');
87
- }
88
- },
89
-
90
83
  resetFormErrors: function () {
91
- $('#share-list-form .form-row').each(function() {
84
+ $('#share-list-form .form-row').each(function () {
92
85
  $(this).removeClass('form-row_validation-error');
93
86
  $(this).find('.form-row__error').remove();
94
87
  });
95
- }
88
+ },
96
89
  };
97
90
 
98
-
99
-
100
- $(document).ready(function() {
91
+ $(document).ready(function () {
101
92
  Wick.ShoppingList.bindAll();
102
93
  });
@@ -0,0 +1,38 @@
1
+ const TRACKING_WIDGET_SELECTOR = '[data-complete-widget], [data-why-not-add-widget]';
2
+ const TRACKED_EVENT_NAMES = [
3
+ 'brRecommendationWidgetView',
4
+ 'brRecommendationWidgetClick',
5
+ 'brRecommendationWidgetAddToCart',
6
+ ];
7
+
8
+ function initializeTrackingEmulation() {
9
+ if (
10
+ !document.querySelector(TRACKING_WIDGET_SELECTOR) ||
11
+ window.__trackingEmulationInitialized
12
+ ) {
13
+ return;
14
+ }
15
+
16
+ window.__trackingEmulationInitialized = true;
17
+ window.dataLayer = window.dataLayer || [];
18
+
19
+ const originalPush = window.dataLayer.push;
20
+
21
+ window.dataLayer.push = function () {
22
+ const entries = Array.prototype.slice.call(arguments);
23
+ const result = originalPush.apply(window.dataLayer, entries);
24
+
25
+ entries.forEach(function (entry) {
26
+ if (!entry || TRACKED_EVENT_NAMES.indexOf(entry.event) === -1) {
27
+ return;
28
+ }
29
+
30
+ console.log('[TRACKING EMULATION]', entry.event, entry);
31
+ console.log('[DATA LAYER]', window.dataLayer.slice());
32
+ });
33
+
34
+ return result;
35
+ };
36
+ }
37
+
38
+ $(document).ready(initializeTrackingEmulation);
@@ -0,0 +1,11 @@
1
+ var Wick = window.Wick || {};
2
+
3
+ $(document).ready(function () {
4
+ window.setTimeout(function () {
5
+ const $container = $('[data-why-not-add-widget]');
6
+ const mockDataKey = $container.data('mock-key');
7
+ const payloadData = Wick.FEMock.dataBloomreach[mockDataKey];
8
+
9
+ Wick.BloomreachWidget.init('whyNotAdd', payloadData);
10
+ }, 3000);
11
+ });
@@ -0,0 +1,28 @@
1
+ var Wick = window.Wick || {};
2
+
3
+ function simulateHybrisSendingHtml() {
4
+ const htmlFromHybris = Wick.FEMock.cartPDP;
5
+
6
+ window.dispatchEvent(
7
+ new CustomEvent('productAddedToCart', {
8
+ detail: {
9
+ html: htmlFromHybris,
10
+ },
11
+ })
12
+ );
13
+ }
14
+
15
+ function bindWhyNotAddToCartEvent() {
16
+ $(window)
17
+ .off('addToCart.whyNotAddEmulation')
18
+ .on('addToCart.whyNotAddEmulation', function ({ detail: { resolve } }) {
19
+ setTimeout(function () {
20
+ resolve();
21
+ simulateHybrisSendingHtml();
22
+ }, 3000);
23
+ });
24
+ }
25
+
26
+ $(document).ready(function () {
27
+ bindWhyNotAddToCartEvent();
28
+ });
@@ -277,13 +277,14 @@ Wick.BasketPage = {
277
277
  if (isSwitchVat) {
278
278
  const itemTotalIncVat = context.find(Wick.BasketPage.el.itemTotalIncVat);
279
279
  const itemTotalExcVat = context.find(Wick.BasketPage.el.itemTotalExcVat);
280
- const totalPrice = data.entry.itemTotalWithoutDiscount.formattedValue;
281
- const totalPriceExcVat = data.entry.itemTotalWithoutDiscountExcVat.formattedValue;
280
+ const totalPrice = data.entry.displayItemTotalWithoutDiscount.formattedValue;
281
+ const totalPriceExcVat =
282
+ data.entry.displayItemTotalWithoutDiscountExclusiveVat.formattedValue;
282
283
  itemTotalIncVat.text(totalPrice);
283
284
  itemTotalExcVat.text(totalPriceExcVat);
284
285
  } else {
285
286
  const totalValue = context.find(Wick.BasketPage.el.itemTotal);
286
- const totalPrice = data.entry.itemTotalWithoutDiscount.formattedValue;
287
+ const totalPrice = data.entry.displayItemTotalWithoutDiscount.formattedValue;
287
288
  totalValue.text(totalPrice);
288
289
  }
289
290
  }
@@ -798,20 +799,20 @@ Wick.BasketPage = {
798
799
  <div class="order-item__price-title">Item price:</div>
799
800
  <div class="order-item__price-value">
800
801
  ${
801
- currentItem.basePrice.value === 0
802
+ currentItem.displayBasePrice.value === 0
802
803
  ? '<span class="order-item__value">FREE</span>'
803
804
  : Wick.VatToggle.isToggleVatAvailable()
804
805
  ? `
805
806
  <div class="including-vat"><!--
806
- --><span class="order-item__value">${currentItem.basePrice.formattedValue}</span><!--
807
+ --><span class="order-item__value">${currentItem.displayBasePrice.formattedValue}</span><!--
807
808
  --><div class="price-vat">Inc.VAT</div>
808
809
  </div>
809
810
  <div class="excluding-vat"><!--
810
- --><span class="order-item__value">${currentItem.basePriceExcVat.formattedValue}</span><!--
811
+ --><span class="order-item__value">${currentItem.displayBasePriceExclusiveVat.formattedValue}</span><!--
811
812
  --><div class="price-vat">Exc.VAT</div>
812
813
  </div>
813
814
  `
814
- : `<span class="order-item__value">${currentItem.basePrice.formattedValue}</span>`
815
+ : `<span class="order-item__value">${currentItem.displayBasePrice.formattedValue}</span>`
815
816
  }
816
817
  </div>
817
818
  </div>
@@ -820,20 +821,20 @@ Wick.BasketPage = {
820
821
  <div class="order-item__total-title">Item total:</div>
821
822
  <div class="order-item__total-value">
822
823
  ${
823
- currentItem.itemTotalWithoutDiscount.value === 0
824
+ currentItem.displayItemTotalWithoutDiscount.value === 0
824
825
  ? '<span class="order-item__value">FREE</span>'
825
826
  : Wick.VatToggle.isToggleVatAvailable()
826
827
  ? `
827
828
  <div class="including-vat"><!--
828
- --><span class="order-item__value">${currentItem.itemTotalWithoutDiscount.formattedValue}</span><!--
829
+ --><span class="order-item__value">${currentItem.displayItemTotalWithoutDiscount.formattedValue}</span><!--
829
830
  --><div class="price-vat">Inc.VAT</div><!--
830
831
  --></div>
831
832
  <div class="excluding-vat"><!--
832
- --><span class="order-item__value">${currentItem.itemTotalWithoutDiscountExcVat.formattedValue}</span><!--
833
+ --><span class="order-item__value">${currentItem.displayItemTotalWithoutDiscountExclusiveVat.formattedValue}</span><!--
833
834
  --><div class="price-vat">Exc.VAT</div>
834
835
  </div>
835
836
  `
836
- : `<span class="order-item__value">${currentItem.itemTotalWithoutDiscount.formattedValue}</span>`
837
+ : `<span class="order-item__value">${currentItem.displayItemTotalWithoutDiscount.formattedValue}</span>`
837
838
  }
838
839
  </div>
839
840
  </div>
@@ -929,7 +930,7 @@ Wick.BasketPage = {
929
930
  data.appliedProductPromotions &&
930
931
  data.appliedProductPromotions.forEach((entry) => {
931
932
  entry.consumedEntries.forEach((promo) => {
932
- if (promo.orderEntryNumber === item.entryNumber && entry.description) {
933
+ if (promo.orderEntryNumber === item.entryNumber && entry.displayDescription) {
933
934
  if (arr.length) {
934
935
  let duplicate = arr.every((el) => {
935
936
  return el !== Wick.BasketPage.buildPromotion(entry);
@@ -1115,15 +1116,19 @@ Wick.BasketPage = {
1115
1116
  const arr = [];
1116
1117
  if (data.potentialOrderPromotions && data.potentialOrderPromotions.length) {
1117
1118
  data.potentialOrderPromotions.forEach((promo) => {
1118
- !promo.description ||
1119
+ !promo.displayDescription ||
1119
1120
  arr.push(`
1120
1121
  <div class="p-promotion">
1121
1122
  <div class="p-promotion__icon">
1122
1123
  <i class="icon fas fa-gift"></i>
1123
1124
  </div>
1124
- <div class="p-promotion__description">
1125
- ${promo.description}
1126
- </div>
1125
+ ${
1126
+ Wick.VatToggle.isToggleVatAvailable() &&
1127
+ promo.displayDescriptionExclusiveVat
1128
+ ? `<div class="p-promotion__description including-vat">${promo.displayDescription}</div>
1129
+ <div class="p-promotion__description excluding-vat d-none">${promo.displayDescriptionExclusiveVat}</div>`
1130
+ : `<div class="p-promotion__description">${promo.displayDescription}</div>`
1131
+ }
1127
1132
  <div class="p-promotion__close">
1128
1133
  <i class="icon fas fa-times"></i>
1129
1134
  </div>
@@ -1134,15 +1139,19 @@ Wick.BasketPage = {
1134
1139
 
1135
1140
  if (data.appliedOrderPromotions && data.appliedOrderPromotions.length) {
1136
1141
  data.appliedOrderPromotions.forEach((promo) => {
1137
- !promo.description ||
1142
+ !promo.displayDescription ||
1138
1143
  arr.push(`
1139
1144
  <div class="p-promotion">
1140
1145
  <div class="p-promotion__icon">
1141
1146
  <i class="icon fas fa-gift"></i>
1142
1147
  </div>
1143
- <div class="p-promotion__description">
1144
- ${promo.description}
1145
- </div>
1148
+ ${
1149
+ Wick.VatToggle.isToggleVatAvailable() &&
1150
+ promo.displayDescriptionExclusiveVat
1151
+ ? `<div class="p-promotion__description including-vat">${promo.displayDescription}</div>
1152
+ <div class="p-promotion__description excluding-vat d-none">${promo.displayDescriptionExclusiveVat}</div>`
1153
+ : `<div class="p-promotion__description">${promo.displayDescription}</div>`
1154
+ }
1146
1155
  <div class="p-promotion__close">
1147
1156
  <i class="icon fas fa-times"></i>
1148
1157
  </div>
@@ -0,0 +1,87 @@
1
+ import { pushDataLayerEvent } from '../utils/data-layer';
2
+
3
+ const EVENT_NAMES = {
4
+ view: 'brRecommendationWidgetView',
5
+ click: 'brRecommendationWidgetClick',
6
+ addToCart: 'brRecommendationWidgetAddToCart',
7
+ };
8
+
9
+ function disconnectViewObserver(state) {
10
+ if (!state.viewObserver) {
11
+ return;
12
+ }
13
+
14
+ state.viewObserver.disconnect();
15
+ state.viewObserver = null;
16
+ }
17
+
18
+ function observeView(state, elements) {
19
+ if (!window.IntersectionObserver) {
20
+ return;
21
+ }
22
+
23
+ elements = Array.isArray(elements) ? elements : [elements];
24
+
25
+ state.viewObserver = new IntersectionObserver(function (entries) {
26
+ if (
27
+ entries.some(function (entry) {
28
+ return entry.isIntersecting;
29
+ })
30
+ ) {
31
+ pushDataLayerEvent(EVENT_NAMES.view, state.widgetData);
32
+ disconnectViewObserver(state);
33
+ }
34
+ });
35
+
36
+ elements.forEach(function (element) {
37
+ if (element) {
38
+ state.viewObserver.observe(element);
39
+ }
40
+ });
41
+ }
42
+
43
+ function trackClick(state, itemId) {
44
+ pushDataLayerEvent(EVENT_NAMES.click, {
45
+ ...state.widgetData,
46
+ item_id: itemId,
47
+ });
48
+ }
49
+
50
+ function trackAddToCart(state, items) {
51
+ pushDataLayerEvent(EVENT_NAMES.addToCart, {
52
+ ...state.widgetData,
53
+ items,
54
+ });
55
+ }
56
+
57
+ export function createBloomreachWidgetTracking() {
58
+ const state = {
59
+ initWidgetPayload: null,
60
+ viewObserver: null,
61
+ };
62
+
63
+ return {
64
+ setPayload(payloadData) {
65
+ disconnectViewObserver(state);
66
+ const metadata = payloadData.widgetMetadata;
67
+
68
+ state.widgetData = {
69
+ wrid: metadata.responseId,
70
+ wid: metadata.id,
71
+ wty: metadata.type,
72
+ };
73
+ },
74
+
75
+ observeView(element) {
76
+ observeView(state, element);
77
+ },
78
+
79
+ trackClick(itemId) {
80
+ trackClick(state, itemId);
81
+ },
82
+
83
+ trackAddToCart(items) {
84
+ trackAddToCart(state, items);
85
+ },
86
+ };
87
+ }
@@ -0,0 +1,250 @@
1
+ var Wick = window.Wick || {};
2
+
3
+ import { isApp } from '../utils/helpers';
4
+ import { createEvent } from '../utils/create-event';
5
+ import CompleteYourProjectWidget from './complete-your-project-widget';
6
+ import WhyNotAddWidget from './why-not-add-widget';
7
+
8
+ Wick.BloomreachWidget = {
9
+ widgets: {},
10
+
11
+ el: {
12
+ loadingButtonText: '.loading-button__text',
13
+ loadingButtonLoader: '.loading-button__loader',
14
+ ratingOverlay: '.rating-overlay',
15
+ starOverlay: '.star-overlay',
16
+ vatInc: '.including-vat-inherit',
17
+ vatExc: '.excluding-vat-inherit',
18
+ },
19
+
20
+ registerWidgets(widgetList) {
21
+ widgetList.forEach(function ({ type, widget }) {
22
+ Wick.BloomreachWidget.widgets[type] = widget;
23
+ });
24
+ },
25
+
26
+ getWidget(type) {
27
+ return Wick.BloomreachWidget.widgets[type];
28
+ },
29
+
30
+ init(type, payloadData) {
31
+ const widget = Wick.BloomreachWidget.getWidget(type);
32
+
33
+ if (!widget || typeof widget.init !== 'function') {
34
+ return;
35
+ }
36
+
37
+ widget.init(payloadData, Wick.BloomreachWidget);
38
+ },
39
+
40
+ normalizePayload(payloadData) {
41
+ if (Array.isArray(payloadData)) {
42
+ return payloadData;
43
+ }
44
+
45
+ if (payloadData && Array.isArray(payloadData.recommendedProducts)) {
46
+ return payloadData.recommendedProducts;
47
+ }
48
+
49
+ return [];
50
+ },
51
+
52
+ hasRecommendations(payloadData) {
53
+ return Wick.BloomreachWidget.normalizePayload(payloadData).length > 0;
54
+ },
55
+
56
+ getDisplayPrice(product) {
57
+ return product.displayPrice || product.price || {};
58
+ },
59
+
60
+ getDisplayPriceExcVat(product) {
61
+ return product.displayPriceExclusiveVat || product.priceExclusiveVat || null;
62
+ },
63
+
64
+ getPriceValue(price) {
65
+ return price && typeof price.value === 'number' ? price.value : 0;
66
+ },
67
+
68
+ getPriceFormattedValue(price) {
69
+ if (!price) {
70
+ return '';
71
+ }
72
+
73
+ if (price.formattedValue) {
74
+ return price.formattedValue;
75
+ }
76
+
77
+ if (typeof price.value === 'number') {
78
+ return Wick.BloomreachWidget.formatPrice(price.value);
79
+ }
80
+
81
+ return '';
82
+ },
83
+
84
+ removeBlankTargets($root) {
85
+ if (!isApp()) {
86
+ return;
87
+ }
88
+
89
+ $root.find('a[target="_blank"]').removeAttr('target');
90
+ },
91
+
92
+ getWasPrice(product) {
93
+ const displayPrice = Wick.BloomreachWidget.getDisplayPrice(product);
94
+
95
+ return displayPrice && displayPrice.wasPrice ? displayPrice.wasPrice : null;
96
+ },
97
+
98
+ getWasPriceFormatted(product) {
99
+ const displayPrice = Wick.BloomreachWidget.getDisplayPrice(product);
100
+ const wasPrice = Wick.BloomreachWidget.getWasPrice(product);
101
+
102
+ if (wasPrice && wasPrice.formattedValue) {
103
+ return wasPrice.formattedValue;
104
+ }
105
+
106
+ if (typeof wasPrice === 'number') {
107
+ return Wick.BloomreachWidget.formatPrice(wasPrice);
108
+ }
109
+
110
+ if (wasPrice) {
111
+ return `${displayPrice.currencySymbol || '£'}${wasPrice}`;
112
+ }
113
+
114
+ return '';
115
+ },
116
+
117
+ getExcVatWasPrice(product) {
118
+ const priceExclusiveVat = product.priceExclusiveVat || null;
119
+ const displayPriceExclusiveVat = product.displayPriceExclusiveVat || null;
120
+ const wasPrice =
121
+ (displayPriceExclusiveVat && displayPriceExclusiveVat.wasPrice) ||
122
+ (priceExclusiveVat && priceExclusiveVat.wasPrice);
123
+
124
+ if (wasPrice && wasPrice.formattedValue) {
125
+ return wasPrice.formattedValue;
126
+ }
127
+
128
+ if (typeof wasPrice === 'number') {
129
+ return Wick.BloomreachWidget.formatPrice(wasPrice);
130
+ }
131
+
132
+ return wasPrice || '';
133
+ },
134
+
135
+ getProductImage(product, fallbackProduct) {
136
+ const productImages = product.images || [];
137
+ const fallbackImages = fallbackProduct ? fallbackProduct.images || [] : [];
138
+ const images = productImages.length ? productImages : fallbackImages;
139
+
140
+ return (
141
+ images.find(function (item) {
142
+ return item.format === 'product';
143
+ }) ||
144
+ images.find(function (item) {
145
+ return item.imageType === 'PRIMARY';
146
+ }) ||
147
+ images[0] ||
148
+ {}
149
+ );
150
+ },
151
+
152
+ getProductRenderData(product, options = {}) {
153
+ const displayPrice = Wick.BloomreachWidget.getDisplayPrice(product);
154
+ const displayPriceExcVat = Wick.BloomreachWidget.getDisplayPriceExcVat(product);
155
+ const wasPriceFormatted = Wick.BloomreachWidget.getWasPriceFormatted(product);
156
+ const excVatWasPriceFormatted = Wick.BloomreachWidget.getExcVatWasPrice(product);
157
+ const isSwitchVat = !!(window.ACC && window.ACC.app && window.ACC.app.isVatToggleAvailable);
158
+
159
+ return {
160
+ ...product,
161
+ price: displayPrice,
162
+ image:
163
+ options.image ||
164
+ Wick.BloomreachWidget.getProductImage(product, options.fallbackProduct),
165
+ wasPriceFormatted,
166
+ 'switch-vat': isSwitchVat,
167
+ incVatFormattedValue: Wick.BloomreachWidget.getPriceFormattedValue(displayPrice),
168
+ incVatValue: Wick.BloomreachWidget.getPriceValue(displayPrice),
169
+ excVatFormattedValue: Wick.BloomreachWidget.getPriceFormattedValue(displayPriceExcVat),
170
+ excVatValue: Wick.BloomreachWidget.getPriceValue(displayPriceExcVat),
171
+ incVatWasPriceFormatted: wasPriceFormatted,
172
+ excVatWasPriceFormatted: Wick.BloomreachWidget.getExcVatWasPrice(product),
173
+ };
174
+ },
175
+
176
+ drawRating($root) {
177
+ const { ratingOverlay, starOverlay } = Wick.BloomreachWidget.el;
178
+
179
+ $root.find(ratingOverlay).each(function () {
180
+ let rating = parseFloat($(this).attr('data-rating')) || 0;
181
+ const $stars = $(this).children(starOverlay);
182
+
183
+ $stars.each(function () {
184
+ const $star = $(this);
185
+
186
+ if (rating >= 1) {
187
+ rating--;
188
+ } else if (rating > 0) {
189
+ const width = Math.asin(2 * rating - 1) / Math.PI + 0.5;
190
+ $star.css('width', width + 'rem');
191
+ rating = 0;
192
+ } else {
193
+ $star.css('width', '0rem');
194
+ }
195
+ });
196
+ });
197
+ },
198
+
199
+ dispatchWidgetEvent(eventName, payload) {
200
+ return new Promise(function (resolve, reject) {
201
+ const eventDetail = { resolve, reject };
202
+ const event = createEvent(eventName, payload, eventDetail);
203
+
204
+ window.dispatchEvent(event);
205
+ });
206
+ },
207
+
208
+ reapplyVatDisplay() {
209
+ if (!Wick.VatToggle || typeof Wick.VatToggle.isActive !== 'function') {
210
+ return;
211
+ }
212
+
213
+ const { vatInc, vatExc } = Wick.BloomreachWidget.el;
214
+ const hiddenClassName = Wick.VatToggle.HIDDEN_CLASS_NAME || 'd-none';
215
+ const isExcVatActive = Wick.VatToggle.isActive();
216
+
217
+ $(vatInc).toggleClass(hiddenClassName, isExcVatActive);
218
+ $(vatExc).toggleClass(hiddenClassName, !isExcVatActive);
219
+ },
220
+
221
+ bindVatToggle(namespace) {
222
+ if (!Wick.VatToggle || !Wick.VatToggle.TOGGLE_VAT_EVENT_NAME) {
223
+ return;
224
+ }
225
+
226
+ const eventName = `${Wick.VatToggle.TOGGLE_VAT_EVENT_NAME}.${namespace}`;
227
+
228
+ $(window).off(eventName).on(eventName, Wick.BloomreachWidget.reapplyVatDisplay);
229
+ },
230
+
231
+ formatPrice(value) {
232
+ return new Intl.NumberFormat('en-GB', {
233
+ style: 'currency',
234
+ currency: 'GBP',
235
+ minimumFractionDigits: 2,
236
+ maximumFractionDigits: 2,
237
+ }).format(value);
238
+ },
239
+ };
240
+
241
+ Wick.BloomreachWidget.registerWidgets([
242
+ {
243
+ type: 'completeYourProject',
244
+ widget: CompleteYourProjectWidget,
245
+ },
246
+ {
247
+ type: 'whyNotAdd',
248
+ widget: WhyNotAddWidget,
249
+ },
250
+ ]);