wickes-css2 2.113.0-develop.1 → 2.113.0-develop.10

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 (267) hide show
  1. package/build/css/category-main.css +1 -1
  2. package/build/css/components/global-search.css +1 -1
  3. package/build/css/components/price-block-v2-critical.css +1 -1
  4. package/build/css/components/price-block-v2.css +1 -1
  5. package/build/css/components/store-locator-facilities.css +1 -1
  6. package/build/css/components/store-locator-lookup.css +1 -1
  7. package/build/css/components/tile-calculator.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/my-account-v2.css +1 -1
  16. package/build/css/pages/my-account.css +1 -1
  17. package/build/css/pages/page_address-book.css +1 -1
  18. package/build/css/pages/page_checkout_delivery-new.css +1 -1
  19. package/build/css/pages/page_default-store.css +1 -1
  20. package/build/css/pages/page_discount.css +1 -1
  21. package/build/css/pages/page_fi.css +1 -1
  22. package/build/css/pages/page_in-store-checkout.css +1 -1
  23. package/build/css/pages/page_merged-basket.css +1 -1
  24. package/build/css/pages/page_my-order.css +1 -1
  25. package/build/css/pages/page_my-orders.css +1 -1
  26. package/build/css/pages/page_product-details-critical.css +1 -1
  27. package/build/css/pages/page_product-details-v2-critical.css +1 -1
  28. package/build/css/pages/page_product-details-v2.css +1 -1
  29. package/build/css/pages/page_product-details.css +1 -1
  30. package/build/css/pages/page_shopping-cart-v2.css +1 -1
  31. package/build/css/pages/page_store-locator-details.css +1 -1
  32. package/build/css/pages/page_store-locator.css +1 -1
  33. package/build/css/pages/page_ti.css +1 -1
  34. package/build/css/pages/tradePro-discount.css +1 -1
  35. package/build/css/pages/tradePro-rewards-old.css +1 -1
  36. package/build/css/pages/tradePro-rewards.css +1 -1
  37. package/build/css/pdp-main-before-combine.css +1 -1
  38. package/build/css/pdp-main-critical.css +1 -1
  39. package/build/css/pdp-main-non-critical.css +1 -1
  40. package/build/css/pdp-main.css +1 -1
  41. package/build/css/plp-main.css +1 -1
  42. package/build/css/shopping-list-pdf.css +1 -1
  43. package/build/css/store-locator-main.css +1 -1
  44. package/build/img/emulation/low-trees.png +0 -0
  45. package/build/img/emulation/overhead-power-cables.png +0 -0
  46. package/build/img/emulation/parked-vehicles.png +0 -0
  47. package/build/img/emulation/traffic-access-issues.png +0 -0
  48. package/build/img/emulation/walls-or-fences.png +0 -0
  49. package/build/js/account-members.min.js +1 -1
  50. package/build/js/add-project-list-id.min.js +1 -1
  51. package/build/js/address-book.min.js +1 -1
  52. package/build/js/basket.min.js +2 -2
  53. package/build/js/bloomreach-widget.min.js +1 -1
  54. package/build/js/bundle.min.js +1 -1
  55. package/build/js/change-password.min.js +1 -1
  56. package/build/js/checkout.min.js +2 -2
  57. package/build/js/emulation.min.js +456 -3270
  58. package/build/js/general.bundle.min.js +1 -1
  59. package/build/js/gift-cards.min.js +1 -1
  60. package/build/js/kitchen/kitchen-plp.min.js +1 -1
  61. package/build/js/merged-checkout.min.js +2 -2
  62. package/build/js/package-bulk-add.min.js +1 -0
  63. package/build/js/page/bloomreach-widget/bloomreach-recommendation-carousel-widget.js +318 -0
  64. package/build/js/page/bloomreach-widget/bloomreach-widget-core.js +370 -0
  65. package/build/js/page/bloomreach-widget/bloomreach-widget-tracking.js +16 -13
  66. package/build/js/page/bloomreach-widget/bloomreach-widget.js +8 -237
  67. package/build/js/page/bloomreach-widget/complete-your-project/cards.js +308 -0
  68. package/build/js/page/bloomreach-widget/complete-your-project/config.js +60 -0
  69. package/build/js/page/bloomreach-widget/complete-your-project/model.js +140 -0
  70. package/build/js/page/bloomreach-widget/complete-your-project/presenter.js +69 -0
  71. package/build/js/page/bloomreach-widget/complete-your-project/quantity.js +80 -0
  72. package/build/js/page/bloomreach-widget/complete-your-project/view.js +179 -0
  73. package/build/js/page/bloomreach-widget/complete-your-project/widget.js +185 -0
  74. package/build/js/page/bloomreach-widget/dont-forget-widget.js +15 -0
  75. package/build/js/page/bloomreach-widget/why-not-add-widget.js +10 -228
  76. package/build/js/page/plp-load-more.js +81 -66
  77. package/build/js/page/ripple/bulk-add.js +71 -0
  78. package/build/js/page/ripple/package-bulk-add.js +43 -0
  79. package/build/js/page/ripple/postcode-checker.js +83 -0
  80. package/build/js/page/ripple/thumb-gallery.js +168 -0
  81. package/build/js/page/utils/validation.js +1 -1
  82. package/build/js/pdp.bundle.min.js +2 -2
  83. package/build/js/personal-details.min.js +1 -1
  84. package/build/js/plp.bundle.min.js +1 -1
  85. package/build/js/postcode-checker.min.js +1 -0
  86. package/build/js/project-list.min.js +2 -2
  87. package/build/js/quiz.min.js +1 -1
  88. package/build/js/track-my-order.min.js +1 -1
  89. package/package.json +4 -2
  90. package/src/badges-ripple.html +120 -0
  91. package/src/badges.html +9 -18
  92. package/src/components/base/button.hbs +7 -0
  93. package/src/components/bloomreach/complete-your-project-skeleton.hbs +21 -0
  94. package/src/components/bloomreach/complete-your-project.hbs +6 -21
  95. package/src/components/bloomreach/why-not-add-card-skeleton.hbs +2 -2
  96. package/src/components/bloomreach/why-not-add-card.hbs +79 -60
  97. package/src/components/bloomreach/why-not-add-content.hbs +3 -3
  98. package/src/components/bloomreach/why-not-add.hbs +1 -1
  99. package/src/components/date-selection.hbs +19 -10
  100. package/src/components/fulfilment-accordions.hbs +1 -1
  101. package/src/components/heavy-banners-wrapper.hbs +21 -0
  102. package/src/components/image-accordion.hbs +18 -0
  103. package/src/components/kitchen/price.hbs +49 -29
  104. package/src/components/kitchen/strip-stickers.hbs +9 -3
  105. package/src/components/package-card.hbs +30 -0
  106. package/src/components/pdp-price-actions.hbs +17 -0
  107. package/src/components/postcode-checker.hbs +24 -0
  108. package/src/components/price-badges.hbs +12 -10
  109. package/src/components/price-block-v2.hbs +274 -202
  110. package/src/components/product-main-info-v2.hbs +2 -0
  111. package/src/components/suite-includes.hbs +66 -0
  112. package/src/components/suite-product-card.hbs +47 -0
  113. package/src/components/thumb-gallery.hbs +23 -0
  114. package/src/data/data_badges.json +143 -0
  115. package/src/data/data_bathroom-plp.json +814 -0
  116. package/src/data/data_heavy-banner.json +29 -0
  117. package/src/data/data_suite-includes-products.json +134 -0
  118. package/src/data/my-account/data_my-account.json +1 -1
  119. package/src/data/my-account/data_my-order.json +1 -1
  120. package/src/data/my-account/data_my-orders.json +1 -1
  121. package/src/img/emulation/low-trees.png +0 -0
  122. package/src/img/emulation/overhead-power-cables.png +0 -0
  123. package/src/img/emulation/parked-vehicles.png +0 -0
  124. package/src/img/emulation/traffic-access-issues.png +0 -0
  125. package/src/img/emulation/walls-or-fences.png +0 -0
  126. package/src/js/components/banner-placement-manager.js +25 -9
  127. package/src/js/components/general/cart-slider.js +41 -4
  128. package/src/js/components/general/image-accordion.js +54 -0
  129. package/src/js/components/general/switchVat.js +8 -1
  130. package/src/js/components/package-card.js +69 -0
  131. package/src/js/components/store-locator-cards.js +76 -0
  132. package/src/js/emulation/banner-placement-manager.js +219 -188
  133. package/src/js/emulation/complete-your-project-loading.js +16 -0
  134. package/src/js/emulation/custom-slider-emulation.js +21 -8
  135. package/src/js/emulation/date-selection.js +2 -2
  136. package/src/js/emulation/dont-forget-loading.js +36 -0
  137. package/src/js/emulation/just-added-scenarios-emulation.js +131 -0
  138. package/src/js/emulation/mini-basket.js +34 -34
  139. package/src/js/emulation/mock.js +429 -4
  140. package/src/js/emulation/plp-load-more.js +13 -4
  141. package/src/js/emulation/postcode-checker.js +11 -0
  142. package/src/js/emulation/why-not-add-loading.js +14 -3
  143. package/src/js/emulation/why-not-add.js +12 -14
  144. package/src/js/page/bloomreach-widget/bloomreach-recommendation-carousel-widget.js +318 -0
  145. package/src/js/page/bloomreach-widget/bloomreach-widget-core.js +370 -0
  146. package/src/js/page/bloomreach-widget/bloomreach-widget-tracking.js +16 -13
  147. package/src/js/page/bloomreach-widget/bloomreach-widget.js +8 -237
  148. package/src/js/page/bloomreach-widget/complete-your-project/cards.js +308 -0
  149. package/src/js/page/bloomreach-widget/complete-your-project/config.js +60 -0
  150. package/src/js/page/bloomreach-widget/complete-your-project/model.js +140 -0
  151. package/src/js/page/bloomreach-widget/complete-your-project/presenter.js +69 -0
  152. package/src/js/page/bloomreach-widget/complete-your-project/quantity.js +80 -0
  153. package/src/js/page/bloomreach-widget/complete-your-project/view.js +179 -0
  154. package/src/js/page/bloomreach-widget/complete-your-project/widget.js +185 -0
  155. package/src/js/page/bloomreach-widget/dont-forget-widget.js +15 -0
  156. package/src/js/page/bloomreach-widget/why-not-add-widget.js +10 -228
  157. package/src/js/page/plp-load-more.js +81 -66
  158. package/src/js/page/ripple/bulk-add.js +71 -0
  159. package/src/js/page/ripple/package-bulk-add.js +43 -0
  160. package/src/js/page/ripple/postcode-checker.js +83 -0
  161. package/src/js/page/ripple/thumb-gallery.js +168 -0
  162. package/src/js/page/utils/validation.js +1 -1
  163. package/src/page_bathroom-plp-vat.html +81 -0
  164. package/src/page_bathroom-plp-without-load-more.html +83 -0
  165. package/src/page_bathroom-plp.html +98 -0
  166. package/src/page_checkout_big-bulky-delivery-details.html +272 -0
  167. package/src/page_checkout_premium-delivery-details.html +2 -2
  168. package/src/page_product-details-banner.html +1 -3
  169. package/src/page_product-details-big-wins-disabled-delivery.html +1 -3
  170. package/src/page_product-details-big-wins-non-registered.html +1 -3
  171. package/src/page_product-details-big-wins-out-nearest.html +1 -3
  172. package/src/page_product-details-big-wins-unhappy.html +1 -3
  173. package/src/page_product-details-big-wins.html +1 -3
  174. package/src/page_product-details-billie.html +1 -3
  175. package/src/page_product-details-calculator.html +1 -3
  176. package/src/page_product-details-cashback-v2.html +1 -3
  177. package/src/page_product-details-clearpay.html +1 -3
  178. package/src/page_product-details-cnc-error-notification.html +1 -3
  179. package/src/page_product-details-cnc-success-notification-vat.html +1 -4
  180. package/src/page_product-details-cnc-success-notification.html +1 -3
  181. package/src/page_product-details-default-store.html +1 -3
  182. package/src/page_product-details-energy-efficiency.html +1 -3
  183. package/src/page_product-details-flooring-with-pr-placeholder.html +1 -3
  184. package/src/page_product-details-flooring.html +1 -3
  185. package/src/page_product-details-gallery-actual.html +1 -3
  186. package/src/page_product-details-mfe-calculator.html +1 -3
  187. package/src/page_product-details-mtm-doors.html +1 -3
  188. package/src/page_product-details-only-clearpay.html +1 -3
  189. package/src/page_product-details-paint-mixing.html +1 -3
  190. package/src/page_product-details-ripple-gallery.html +121 -0
  191. package/src/page_product-details-saved-pl.html +1 -3
  192. package/src/page_product-details-suite-includes-banners.html +139 -0
  193. package/src/page_product-details-suite-includes-billie.html +128 -0
  194. package/src/page_product-details-suite-includes-klarna.html +120 -0
  195. package/src/page_product-details-suite-includes-vat.html +126 -0
  196. package/src/page_product-details-suite-includes.html +122 -0
  197. package/src/page_product-details-tile-steps-klarna-widget-with-method-ids.html +1 -3
  198. package/src/page_product-details-tile-steps-logout.html +1 -3
  199. package/src/page_product-details-tile-steps-no-new-project-list.html +1 -3
  200. package/src/page_product-details-tile-steps-with-klarna.html +1 -3
  201. package/src/page_product-details-tile-steps.html +1 -3
  202. package/src/page_product-details-v2.html +1 -3
  203. package/src/page_product-details-vat.html +1 -3
  204. package/src/page_product-details-wisdom-mcfc-registered.html +1 -3
  205. package/src/page_product-details-wisdom-mcfc.html +1 -3
  206. package/src/page_product-details-wisdom-oos-registered.html +1 -3
  207. package/src/page_product-details-wisdom-oos.html +1 -3
  208. package/src/page_product-details-wisdom-registered.html +1 -3
  209. package/src/page_product-details-wisdom.html +1 -3
  210. package/src/page_product-details-with-favourite.html +1 -3
  211. package/src/page_product-details-with-global-search-v2.html +6 -9
  212. package/src/page_product-details-with-why-not-add-single.html +2 -1
  213. package/src/page_product-details_no-previous-default.html +1 -3
  214. package/src/scss/components/_cards-slider.scss +3 -1
  215. package/src/scss/components/_checkout_order.scss +2 -1
  216. package/src/scss/components/_date-selection-add-new-styles.scss +29 -0
  217. package/src/scss/components/_heavy-banners.scss +216 -0
  218. package/src/scss/components/_image-accordion.scss +54 -0
  219. package/src/scss/components/_kitchen-card.scss +1 -0
  220. package/src/scss/components/_lines-group.scss +1 -1
  221. package/src/scss/components/_package-card.scss +63 -0
  222. package/src/scss/components/_package-plp.scss +88 -0
  223. package/src/scss/components/_postcode-checker.scss +115 -0
  224. package/src/scss/components/_price-badges-critical.scss +10 -0
  225. package/src/scss/components/_price-badges.scss +10 -0
  226. package/src/scss/components/_price-block-critical.scss +1 -0
  227. package/src/scss/components/_price-block.scss +1 -0
  228. package/src/scss/components/_sticky-element-appearance.scss +6 -2
  229. package/src/scss/components/_suite-includes.scss +141 -0
  230. package/src/scss/components/_suite-product-card.scss +98 -0
  231. package/src/scss/components/_thumb-gallery-critical.scss +34 -0
  232. package/src/scss/components/_thumb-gallery.scss +192 -0
  233. package/src/scss/components/bloomreach/_bloomreach.scss +1 -0
  234. package/src/scss/components/bloomreach/_card-shared.scss +24 -0
  235. package/src/scss/components/bloomreach/_complete-card.scss +1 -9
  236. package/src/scss/components/bloomreach/_reviews.scss +0 -2
  237. package/src/scss/components/bloomreach/_why-not-add-card.scss +137 -10
  238. package/src/scss/components/bloomreach/_why-not-add.scss +31 -2
  239. package/src/scss/components/energy-efficiency.scss +2 -2
  240. package/src/scss/components/global-search.scss +6 -2
  241. package/src/scss/components/kitchen/_price.scss +10 -0
  242. package/src/scss/components/kitchen/_strip-stickers.scss +46 -0
  243. package/src/scss/components/my-account/_active-orders.scss +9 -9
  244. package/src/scss/components/price-block-v2-critical.scss +58 -0
  245. package/src/scss/components/price-block-v2.scss +58 -0
  246. package/src/scss/helpers/helpers-pdp-critical/_helpers-critical-pdp.scss +13 -8
  247. package/src/scss/libs/_bootstrap-extracted.scss +5 -0
  248. package/src/scss/main.scss +1 -0
  249. package/src/scss/pages/iframe-paypage.scss +9 -11
  250. package/src/scss/pages/page_checkout_delivery-new.scss +4 -0
  251. package/src/scss/pages/page_cms_homepage.scss +10 -4
  252. package/src/scss/pages/page_installation.scss +2 -2
  253. package/src/scss/pages/page_online-exclusive.scss +7 -3
  254. package/src/scss/pages/page_product-details-v2-critical.scss +216 -109
  255. package/src/scss/pages/page_product-details-v2.scss +168 -107
  256. package/src/scss/pages/page_product-details.scss +11 -0
  257. package/src/scss/pages/page_top-rated.scss +38 -23
  258. package/src/scss/pdp-main-critical.scss +1 -0
  259. package/src/scss/pdp-main.scss +6 -0
  260. package/src/scss/plp-main.scss +5 -0
  261. package/src/sitemap.html +15 -0
  262. package/build/css/components/kitchen/strip-stickers.css +0 -1
  263. package/build/css/components/strip-stickers.css +0 -1
  264. package/build/js/page/bloomreach-widget/complete-your-project-widget.js +0 -1100
  265. package/src/js/page/bloomreach-widget/complete-your-project-widget.js +0 -1100
  266. package/src/scss/components/kitchen/strip-stickers.scss +0 -18
  267. package/src/scss/components/strip-stickers.scss +0 -18
@@ -1,254 +1,285 @@
1
- // Simulate prompt for input
1
+ (function () {
2
+ // Simulate prompt for input
2
3
 
3
- function parseSlots(value) {
4
- if (!value) {
5
- return [];
4
+ function parseSlots(value) {
5
+ if (!value) {
6
+ return [];
7
+ }
8
+
9
+ return String(value)
10
+ .split(',')
11
+ .map((item) => parseInt(item.trim(), 10))
12
+ .filter((item) => Number.isInteger(item) && item >= 0);
6
13
  }
7
14
 
8
- return String(value)
9
- .split(',')
10
- .map((item) => parseInt(item.trim(), 10))
11
- .filter((item) => Number.isInteger(item) && item >= 0);
12
- }
13
-
14
- function isBloomreachDisabled(slots) {
15
- return !slots.length || slots.every((s) => s === 0);
16
- }
17
-
18
- function toggleHybrisProductBanners(inputs) {
19
- const banners = document.querySelectorAll('.card-product-banner');
20
- const disabled = isBloomreachDisabled(inputs.bloomreachSlots);
21
-
22
- banners.forEach((banner) => {
23
- if (disabled) {
24
- banner.classList.remove('d-none');
25
- banner.classList.remove('card-product-banner--inactive');
26
- } else {
27
- banner.classList.add('d-none');
28
- banner.classList.add('card-product-banner--inactive');
29
- }
30
- });
31
- }
15
+ function isBloomreachDisabled(slots) {
16
+ return !slots.length || slots.every((s) => s === 0);
17
+ }
18
+
19
+ function toggleHybrisProductBanners(inputs) {
20
+ const banners = document.querySelectorAll('.card-product-banner');
21
+ const disabled = isBloomreachDisabled(inputs.bloomreachSlots);
22
+
23
+ banners.forEach((banner) => {
24
+ if (disabled) {
25
+ banner.classList.remove('d-none');
26
+ banner.classList.remove('card-product-banner--inactive');
27
+ } else {
28
+ banner.classList.add('d-none');
29
+ banner.classList.add('card-product-banner--inactive');
30
+ }
31
+ });
32
+ }
33
+
34
+ function getPositionAttr() {
35
+ const isMobile = window.Wick?.BannerPlacementManager?.isMobileResolution();
36
+
37
+ return isMobile ? 'data-mobile-position' : 'data-desktop-position';
38
+ }
39
+
40
+ function setUnifiedPosition(el, slot) {
41
+ el.setAttribute('data-desktop-position', String(slot));
42
+ el.setAttribute('data-mobile-position', String(slot));
43
+ }
32
44
 
33
- function getPositionAttr() {
34
- const isMobile = Wick.BannerPlacementManager.isMobileResolution();
45
+ function hasLegacyBanners() {
46
+ return Boolean(
47
+ document.querySelector('.card-product-banner') ||
48
+ document.querySelector('.card-sponsor-product') ||
49
+ document.querySelector('.card-sponsor-banner')
50
+ );
51
+ }
52
+
53
+ function isPackagePlp() {
54
+ const manager = window.Wick?.BannerPlacementManager;
55
+ const productsWrapSelector = manager
56
+ ? manager.el.productsWrap
57
+ : '.products-list.products-list-v2';
58
+ return (
59
+ productsWrapSelector.includes('.package-plp__cards') ||
60
+ document.querySelector('.package-plp__cards') !== null
61
+ );
62
+ }
35
63
 
36
- return isMobile ? 'data-mobile-position' : 'data-desktop-position';
37
- }
64
+ function getInputs() {
65
+ const hasLegacy = hasLegacyBanners();
38
66
 
39
- function setUnifiedPosition(el, slot) {
40
- el.setAttribute('data-desktop-position', String(slot));
41
- el.setAttribute('data-mobile-position', String(slot));
42
- }
67
+ const bloomreachSlots = parseSlots(
68
+ prompt('Enter Bloomreach Banner Slots (comma-separated):', '3') || ''
69
+ );
43
70
 
44
- function hasLegacyBanners() {
45
- return Boolean(
46
- document.querySelector('.card-product-banner') ||
47
- document.querySelector('.card-sponsor-product') ||
48
- document.querySelector('.card-sponsor-banner')
49
- );
50
- }
71
+ if (!hasLegacy) {
72
+ return {
73
+ bloomreachSlots,
74
+ sponsorProductPositions: [],
75
+ sponsorBannerPositions: [],
76
+ productBannerPositions: [],
77
+ };
78
+ }
51
79
 
52
- function getInputs() {
53
- const hasLegacy = hasLegacyBanners();
80
+ const productBannerPositions =
81
+ prompt('Enter Product Banner Positions (comma-separated):', '2') || '';
54
82
 
55
- const bloomreachSlots = parseSlots(
56
- prompt('Enter Bloomreach Banner Slots (comma-separated):', '3') || ''
57
- );
83
+ const sponsorProductPositions = isPackagePlp()
84
+ ? ''
85
+ : prompt('Enter Sponsor Product Positions (comma-separated):', '6,7,8') || '';
86
+
87
+ const sponsorBannerPositions =
88
+ prompt('Enter Sponsor Banner Positions (comma-separated):', '10') || '';
58
89
 
59
- if (!hasLegacy) {
60
90
  return {
91
+ productBannerPositions: parseSlots(productBannerPositions),
92
+ sponsorProductPositions: parseSlots(sponsorProductPositions),
93
+ sponsorBannerPositions: parseSlots(sponsorBannerPositions),
61
94
  bloomreachSlots,
62
- sponsorProductPositions: [],
63
- sponsorBannerPositions: [],
64
- productBannerPositions: [],
65
95
  };
66
96
  }
67
97
 
68
- const productBannerPositions =
69
- prompt('Enter Product Banner Positions (comma-separated):', '2') || '';
70
-
71
- const sponsorProductPositions =
72
- prompt('Enter Sponsor Product Positions (comma-separated):', '6,7,8') || '';
98
+ function updateBannerPositions(selector, positions) {
99
+ if (!positions?.length) {
100
+ return;
101
+ }
73
102
 
74
- const sponsorBannerPositions =
75
- prompt('Enter Sponsor Banner Positions (comma-separated):', '10') || '';
103
+ const positionAttr = getPositionAttr();
104
+ const elements = document.querySelectorAll(selector);
76
105
 
77
- return {
78
- productBannerPositions: parseSlots(productBannerPositions),
79
- sponsorProductPositions: parseSlots(sponsorProductPositions),
80
- sponsorBannerPositions: parseSlots(sponsorBannerPositions),
81
- bloomreachSlots,
82
- };
83
- }
106
+ elements.forEach((el, index) => {
107
+ if (positions[index] !== undefined) {
108
+ el.setAttribute(positionAttr, String(positions[index]));
109
+ }
110
+ });
111
+ }
84
112
 
85
- function updateBannerPositions(selector, positions) {
86
- if (!positions?.length) {
87
- return;
113
+ function updatePositions(inputs) {
114
+ updateBannerPositions('.card-product-banner', inputs.productBannerPositions);
115
+ updateBannerPositions('.card-sponsor-product', inputs.sponsorProductPositions);
116
+ updateBannerPositions('.card-sponsor-banner', inputs.sponsorBannerPositions);
88
117
  }
89
118
 
90
- const positionAttr = getPositionAttr();
91
- const elements = document.querySelectorAll(selector);
119
+ function patchBannerPlacementManagerForBloomreachEmulation(inputs) {
120
+ const manager = window.Wick?.BannerPlacementManager;
92
121
 
93
- elements.forEach((el, index) => {
94
- if (positions[index] !== undefined) {
95
- el.setAttribute(positionAttr, String(positions[index]));
122
+ if (!manager || manager.__bloomreachEmulationPatched) {
123
+ return;
96
124
  }
97
- });
98
- }
99
125
 
100
- function updatePositions(inputs) {
101
- updateBannerPositions('.card-product-banner', inputs.productBannerPositions);
102
- updateBannerPositions('.card-sponsor-product', inputs.sponsorProductPositions);
103
- updateBannerPositions('.card-sponsor-banner', inputs.sponsorBannerPositions);
104
- }
126
+ const shouldDisableProductBanners = Boolean(inputs.bloomreachSlots?.length);
127
+ const includeSponsorProduct = !isPackagePlp();
105
128
 
106
- function patchBannerPlacementManagerForBloomreachEmulation(inputs) {
107
- const manager = window.Wick?.BannerPlacementManager;
129
+ manager.el.bloomreachBanners = '.card-bloomreach-media-banner';
108
130
 
109
- if (!manager || manager.__bloomreachEmulationPatched) {
110
- return;
111
- }
131
+ let activeBanners = ['.card-bloomreach-media-banner', '.card-sponsor-banner'];
132
+ if (!shouldDisableProductBanners) activeBanners.push('.card-product-banner');
133
+ if (includeSponsorProduct) activeBanners.push('.card-sponsor-product');
134
+
135
+ manager.el.allBanners = activeBanners.join(', ');
112
136
 
113
- const shouldDisableProductBanners = Boolean(inputs.bloomreachSlots?.length);
137
+ let activeListSlots = [
138
+ manager.el.productCard || '.product-card',
139
+ '.card-bloomreach-media-banner',
140
+ '.card-sponsor-banner',
141
+ ];
142
+ if (!shouldDisableProductBanners) activeListSlots.push('.card-product-banner');
143
+ if (includeSponsorProduct) activeListSlots.push('.card-sponsor-product');
114
144
 
115
- manager.el.bloomreachBanners = '.card-bloomreach-media-banner';
145
+ manager.el.allListSlots = activeListSlots.join(', ');
146
+ manager.classes.bloomreachBanners = 'card-bloomreach-media-banner';
116
147
 
117
- manager.el.allBanners = shouldDisableProductBanners
118
- ? '.card-bloomreach-media-banner, .card-sponsor-banner, .card-sponsor-product'
119
- : '.card-product-banner, .card-bloomreach-media-banner, .card-sponsor-banner, .card-sponsor-product';
148
+ manager.getListSlots = function () {
149
+ return $(manager.el.productsWrap)
150
+ .children(manager.el.allListSlots)
151
+ .filter(function () {
152
+ if (
153
+ $(this).hasClass(manager.classes.productBanners) ||
154
+ $(this).hasClass(manager.classes.bloomreachBanners)
155
+ ) {
156
+ const position = manager.getBannerPosition(this);
157
+ const productsCount = manager.getListLength();
120
158
 
121
- manager.el.allListSlots = shouldDisableProductBanners
122
- ? '.product-card, .card-bloomreach-media-banner, .card-sponsor-banner, .card-sponsor-product'
123
- : '.product-card, .card-product-banner, .card-bloomreach-media-banner, .card-sponsor-banner, .card-sponsor-product';
159
+ return position <= productsCount;
160
+ }
124
161
 
125
- manager.classes.bloomreachBanners = 'card-bloomreach-media-banner';
162
+ return true;
163
+ });
164
+ };
126
165
 
127
- manager.getListSlots = function () {
128
- return $(manager.el.productsWrap)
129
- .children(manager.el.allListSlots)
130
- .filter(function () {
131
- if (
132
- $(this).hasClass(manager.classes.productBanners) ||
133
- $(this).hasClass(manager.classes.bloomreachBanners)
134
- ) {
135
- const position = manager.getBannerPosition(this);
136
- const productsCount = manager.getListLength();
166
+ manager.arrangeBannersInRightOrder = function () {
167
+ const $allBanners = $(manager.el.allBanners);
137
168
 
138
- return position <= productsCount;
169
+ function getSameSlotInsertionOrder(el) {
170
+ if ($(el).hasClass(manager.classes.bloomreachBanners)) {
171
+ return 0;
139
172
  }
140
173
 
141
- return true;
142
- });
143
- };
174
+ if ($(el).hasClass(manager.classes.sponsorBanners)) {
175
+ return 1;
176
+ }
144
177
 
145
- manager.arrangeBannersInRightOrder = function () {
146
- const $allBanners = $(manager.el.allBanners);
178
+ if ($(el).hasClass(manager.classes.sponsorProducts)) {
179
+ return 2;
180
+ }
147
181
 
148
- function getSameSlotInsertionOrder(el) {
149
- if ($(el).hasClass(manager.classes.bloomreachBanners)) {
150
- return 0;
151
- }
182
+ if ($(el).hasClass(manager.classes.productBanners)) {
183
+ return 3;
184
+ }
152
185
 
153
- if ($(el).hasClass(manager.classes.sponsorBanners)) {
154
- return 1;
186
+ return 4;
155
187
  }
156
188
 
157
- if ($(el).hasClass(manager.classes.sponsorProducts)) {
158
- return 2;
159
- }
189
+ $allBanners
190
+ .sort((a, b) => {
191
+ const positionA = manager.getBannerPosition(a);
192
+ const positionB = manager.getBannerPosition(b);
160
193
 
161
- if ($(el).hasClass(manager.classes.productBanners)) {
162
- return 3;
163
- }
194
+ if (positionA !== positionB) {
195
+ return positionA - positionB;
196
+ }
164
197
 
165
- return 4;
166
- }
198
+ return getSameSlotInsertionOrder(a) - getSameSlotInsertionOrder(b);
199
+ })
200
+ .appendTo(manager.el.productsWrap);
201
+ };
167
202
 
168
- $allBanners
169
- .sort((a, b) => {
170
- const positionA = manager.getBannerPosition(a);
171
- const positionB = manager.getBannerPosition(b);
203
+ manager.__bloomreachEmulationPatched = true;
204
+ }
172
205
 
173
- if (positionA !== positionB) {
174
- return positionA - positionB;
175
- }
206
+ function rebuildBloomreachBannersForEmulation(inputs) {
207
+ const slots = inputs.bloomreachSlots || [];
208
+ const manager = window.Wick?.BannerPlacementManager;
209
+ const productsWrapSelector = manager
210
+ ? manager.el.productsWrap
211
+ : '.products-list.products-list-v2';
212
+ const productsWrap = document.querySelector(productsWrapSelector);
176
213
 
177
- return getSameSlotInsertionOrder(a) - getSameSlotInsertionOrder(b);
178
- })
179
- .appendTo(manager.el.productsWrap);
180
- };
214
+ if (!productsWrap) {
215
+ return;
216
+ }
181
217
 
182
- manager.__bloomreachEmulationPatched = true;
183
- }
218
+ const existingBanners = document.querySelectorAll('.card-bloomreach-media-banner');
184
219
 
185
- function rebuildBloomreachBannersForEmulation(inputs) {
186
- const slots = inputs.bloomreachSlots || [];
187
- const productsWrap = document.querySelector('.products-list.products-list-v2');
220
+ if (isBloomreachDisabled(slots)) {
221
+ existingBanners.forEach((banner) => banner.remove());
222
+ return;
223
+ }
188
224
 
189
- if (!productsWrap) {
190
- return;
191
- }
225
+ if (!existingBanners.length) {
226
+ return;
227
+ }
192
228
 
193
- const existingBanners = document.querySelectorAll('.card-bloomreach-media-banner');
229
+ const template = existingBanners[0].cloneNode(true);
194
230
 
195
- if (isBloomreachDisabled(slots)) {
196
231
  existingBanners.forEach((banner) => banner.remove());
197
- return;
198
- }
199
-
200
- if (!existingBanners.length) {
201
- return;
202
- }
203
232
 
204
- const template = existingBanners[0].cloneNode(true);
233
+ const fragment = document.createDocumentFragment();
205
234
 
206
- existingBanners.forEach((banner) => banner.remove());
235
+ slots.forEach((slot) => {
236
+ if (slot === 0) return;
207
237
 
208
- const fragment = document.createDocumentFragment();
238
+ const node = template.cloneNode(true);
209
239
 
210
- slots.forEach((slot) => {
211
- if (slot === 0) return;
240
+ node.removeAttribute('data-slots');
241
+ setUnifiedPosition(node, slot);
212
242
 
213
- const node = template.cloneNode(true);
243
+ fragment.appendChild(node);
244
+ });
214
245
 
215
- node.removeAttribute('data-slots');
216
- setUnifiedPosition(node, slot);
246
+ productsWrap.appendChild(fragment);
247
+ }
217
248
 
218
- fragment.appendChild(node);
219
- });
249
+ function applyBloomreachEmulation() {
250
+ const inputs = getInputs();
220
251
 
221
- productsWrap.appendChild(fragment);
222
- }
252
+ updatePositions(inputs);
223
253
 
224
- function applyBloomreachEmulation() {
225
- const inputs = getInputs();
254
+ const isDisabled = isBloomreachDisabled(inputs.bloomreachSlots);
226
255
 
227
- updatePositions(inputs);
256
+ toggleHybrisProductBanners(inputs);
228
257
 
229
- const isDisabled = isBloomreachDisabled(inputs.bloomreachSlots);
258
+ if (!isDisabled) {
259
+ patchBannerPlacementManagerForBloomreachEmulation(inputs);
260
+ }
230
261
 
231
- toggleHybrisProductBanners(inputs);
262
+ rebuildBloomreachBannersForEmulation(inputs);
232
263
 
233
- if (!isDisabled) {
234
- patchBannerPlacementManagerForBloomreachEmulation(inputs);
264
+ if (
265
+ window.Wick &&
266
+ window.Wick.BannerPlacementManager &&
267
+ typeof window.Wick.BannerPlacementManager.checkProductsInColumn === 'function'
268
+ ) {
269
+ window.Wick.BannerPlacementManager.checkProductsInColumn();
270
+ }
235
271
  }
236
272
 
237
- rebuildBloomreachBannersForEmulation(inputs);
238
-
239
- if (
240
- window.Wick &&
241
- Wick.BannerPlacementManager &&
242
- typeof Wick.BannerPlacementManager.checkProductsInColumn === 'function'
243
- ) {
244
- Wick.BannerPlacementManager.checkProductsInColumn();
245
- }
246
- }
273
+ $(document).ready(function () {
274
+ const manager = window.Wick?.BannerPlacementManager;
275
+ const productsWrapSelector = manager
276
+ ? manager.el.productsWrap
277
+ : '.products-list.products-list-v2';
247
278
 
248
- $(document).ready(function () {
249
- if ($('.products-list.products-list-v2').length) {
250
- setTimeout(() => {
251
- applyBloomreachEmulation();
252
- }, 100);
253
- }
254
- });
279
+ if ($(productsWrapSelector).length) {
280
+ setTimeout(() => {
281
+ applyBloomreachEmulation();
282
+ }, 100);
283
+ }
284
+ });
285
+ })();
@@ -0,0 +1,16 @@
1
+ var Wick = window.Wick || {};
2
+
3
+ $(document).ready(function () {
4
+ const $container = $('[data-complete-widget]');
5
+
6
+ if (!$container.length) {
7
+ return;
8
+ }
9
+
10
+ window.setTimeout(function () {
11
+ const mockDataKey = $container.data('mock-key');
12
+ const payloadData = Wick.FEMock.dataBloomreach[mockDataKey];
13
+
14
+ Wick.BloomreachWidget.init('completeYourProject', payloadData);
15
+ }, 3000);
16
+ });
@@ -1,21 +1,34 @@
1
- function simulateHybrisSendingHtml() {
2
- const htmlFromHybris = Wick.FEMock.cartPDP;
3
- const event = new CustomEvent('productAddedToCart', {
4
- detail: { html: htmlFromHybris },
5
- });
6
- window.dispatchEvent(event);
1
+ var Wick = window.Wick || {};
2
+
3
+ import { getNextCartAddScenario, dispatchCartScenario } from './just-added-scenarios-emulation';
4
+
5
+ function getCartMock() {
6
+ const cartMockKey = $('.pdp__main').data('cart-mock-key') || 'cartPDP';
7
+
8
+ return Wick.FEMock[cartMockKey];
9
+ }
10
+
11
+ function simulateHybrisSendingHtml(event) {
12
+ event.preventDefault();
13
+
14
+ const scenario = getNextCartAddScenario();
15
+ const cartMock = getCartMock();
16
+
17
+ dispatchCartScenario(cartMock, scenario);
7
18
  }
8
19
 
9
20
  function bindResolveEvent(events) {
10
21
  $(window).on(events.join(' '), function ({ detail: { resolve } }) {
11
- setTimeout(() => {
22
+ setTimeout(function () {
12
23
  resolve();
13
24
  }, 200);
14
25
  });
15
26
  }
16
27
 
17
28
  $(document).ready(function () {
18
- $('.btn-add-to-basket').on('click', simulateHybrisSendingHtml);
29
+ $(document)
30
+ .off('click.customSliderEmulation', '.btn-add-to-basket')
31
+ .on('click.customSliderEmulation', '.btn-add-to-basket', simulateHybrisSendingHtml);
19
32
 
20
33
  bindResolveEvent([
21
34
  'CLOSE_JUST_ADDED',
@@ -142,8 +142,8 @@ function updatePremiumInfo() {
142
142
  const $image = $(DS_EL.image);
143
143
  const $premiumImage = $(DS_EL.premiumImage);
144
144
 
145
- $title.text('Premium delivery');
146
- $subtitle.html('Delivered tomorrow morning for &pound;12.00');
145
+ $title.text('Next Day AM delivery');
146
+ $subtitle.html('Delivered tomorrow Pre-12pm for £12.00');
147
147
  $infoIcon.addClass(DS_CLASSES.hidden);
148
148
  $subtitle.append($infoIcon);
149
149
  $image.addClass(DS_CLASSES.hidden);
@@ -0,0 +1,36 @@
1
+ var Wick = window.Wick || {};
2
+
3
+ let shouldFailNext = false;
4
+
5
+ const RESPONSE_MESSAGES = {
6
+ success: {
7
+ messageType: 'success',
8
+ messageText: 'Item added to cart',
9
+ },
10
+ error: {
11
+ messageType: 'error',
12
+ messageText: 'Product has not been added to basket',
13
+ },
14
+ };
15
+
16
+ function bindDontForgetAddToCartEvent() {
17
+ $(window)
18
+ .off('addToCart.dontForgetEmulation')
19
+ .on('addToCart.dontForgetEmulation', function ({ detail = {} }) {
20
+ const { payload, resolve } = detail;
21
+
22
+ if (!payload || payload.doNotShowAddedProductPopup !== true) {
23
+ return;
24
+ }
25
+
26
+ shouldFailNext = !shouldFailNext;
27
+
28
+ window.setTimeout(function () {
29
+ resolve(shouldFailNext ? RESPONSE_MESSAGES.error : RESPONSE_MESSAGES.success);
30
+ }, 2000);
31
+ });
32
+ }
33
+
34
+ $(document).ready(function () {
35
+ bindDontForgetAddToCartEvent();
36
+ });