wickes-css2 2.113.0-ripple.7 → 2.113.0

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