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,71 +0,0 @@
1
- import { createToast } from '../utils/create-toast';
2
- import { createLoadingButton } from '../utils/create-loading-button';
3
- import { createEvent } from '../utils/create-event';
4
- const notificationTemplate = require('../../../elements/notifications.hbs');
5
-
6
- const BULK_ADD_EVENT = 'bulkAddToCart';
7
- const QUANTITY = 1;
8
-
9
- const bulkAddFailedResponse = {
10
- bulkAddToCartData: {
11
- messageType: 'error',
12
- messageText: 'Product was not added to basket',
13
- },
14
- };
15
-
16
- export function dispatchWindowEvent(eventName, payload) {
17
- return new Promise(function (resolve, reject) {
18
- window.dispatchEvent(createEvent(eventName, payload, { resolve, reject }));
19
- });
20
- }
21
-
22
- export function createBulkAddHelper({ productCodeSelector }) {
23
- let toast = null;
24
- let loadingButton = null;
25
-
26
- function getProductCode() {
27
- return $(productCodeSelector).val();
28
- }
29
-
30
- function addProductToCart(postcode) {
31
- const item = { productCode: getProductCode(), quantity: QUANTITY };
32
-
33
- const payload = {
34
- entries: [item]
35
- };
36
-
37
- if (postcode) {
38
- payload.postCode = postcode;
39
- }
40
-
41
- return dispatchWindowEvent(BULK_ADD_EVENT, payload);
42
- }
43
-
44
- function showBulkAddResult(response) {
45
- const bulkData = response && response.bulkAddToCartData;
46
-
47
- if (bulkData) {
48
- toast.show({ type: bulkData.messageType, text: bulkData.messageText });
49
- }
50
- }
51
-
52
- function init() {
53
- if (!toast) {
54
- toast = createToast({ template: notificationTemplate });
55
- }
56
- if (!loadingButton) {
57
- loadingButton = createLoadingButton();
58
- }
59
- }
60
-
61
- return {
62
- init,
63
- getProductCode,
64
- addProductToCart,
65
- showBulkAddResult,
66
- showBulkAddFailed: () => showBulkAddResult(bulkAddFailedResponse),
67
- get loadingButton() {
68
- return loadingButton;
69
- },
70
- };
71
- }
@@ -1,43 +0,0 @@
1
- import { createBulkAddHelper } from './bulk-add';
2
-
3
- var Wick = window.Wick || {};
4
-
5
- Wick.PackageBulkAdd = (function () {
6
- const selectors = {
7
- button: '.package-bulk-add',
8
- productCodeInput: '.pdp-price input[name=productCodePost]',
9
- };
10
-
11
- const bulkAdd = createBulkAddHelper({ productCodeSelector: selectors.productCodeInput });
12
-
13
- async function handleButtonClick(e) {
14
- e.preventDefault();
15
-
16
- const $buttons = $(selectors.button);
17
-
18
- if (bulkAdd.loadingButton.isLoading($buttons)) {
19
- return;
20
- }
21
-
22
- bulkAdd.loadingButton.start($buttons);
23
-
24
- try {
25
- bulkAdd.showBulkAddResult(await bulkAdd.addProductToCart());
26
- Wick.MiniBasketSliderFE.isMiniBasketLoaded = false;
27
- } catch {
28
- bulkAdd.showBulkAddFailed();
29
- } finally {
30
- bulkAdd.loadingButton.stop($buttons);
31
- }
32
- }
33
-
34
- function init() {
35
- bulkAdd.init();
36
-
37
- $(selectors.button).on('click', handleButtonClick);
38
- }
39
-
40
- return { init };
41
- })();
42
-
43
- $(document).ready(Wick.PackageBulkAdd.init);
@@ -1,83 +0,0 @@
1
- import { isValidPostcodeField } from '../utils/validation';
2
- import { createBulkAddHelper, dispatchWindowEvent } from './bulk-add';
3
-
4
- var Wick = window.Wick || {};
5
-
6
- Wick.PostcodeChecker = (function () {
7
- const POSTCODE_CHECK_AVAILABILITY_EVENT = 'postcodeCheckAviability';
8
- const QUANTITY = 1;
9
-
10
- const selectors = {
11
- root: '.postcode-checker',
12
- input: '.postcode-checker__input',
13
- button: '.postcode-checker__button',
14
- productCodeInput: '.pdp-price input[name=productCodePost]',
15
- };
16
-
17
- const modifiers = {
18
- hasError: 'postcode-checker--error',
19
- };
20
-
21
- const bulkAdd = createBulkAddHelper({ productCodeSelector: selectors.productCodeInput });
22
-
23
- function checkPostcodeAvailability(postcode) {
24
- const payload = { postcode, productCode: bulkAdd.getProductCode(), quantity: QUANTITY };
25
-
26
- return dispatchWindowEvent(POSTCODE_CHECK_AVAILABILITY_EVENT, payload);
27
- }
28
-
29
- async function bulkAddForPostcode(postcode) {
30
- try {
31
- await checkPostcodeAvailability(postcode);
32
- bulkAdd.showBulkAddResult(await bulkAdd.addProductToCart(postcode));
33
- Wick.MiniBasketSliderFE.isMiniBasketLoaded = false;
34
- } catch {
35
- bulkAdd.showBulkAddFailed();
36
- }
37
- }
38
-
39
- function isPostcodeValid($component, $postcodeInput) {
40
- const isValid = isValidPostcodeField($postcodeInput.val());
41
- $component.toggleClass(modifiers.hasError, !isValid);
42
- console.log({ isValid, val: $postcodeInput.val() });
43
- return isValid;
44
- }
45
-
46
- function handleSubmitClick($component, $postcodeInput, $submitButton) {
47
- if (
48
- bulkAdd.loadingButton.isLoading($submitButton) ||
49
- !isPostcodeValid($component, $postcodeInput)
50
- ) {
51
- return;
52
- }
53
-
54
- bulkAdd.loadingButton.start($submitButton);
55
-
56
- const postcode = $postcodeInput.val();
57
-
58
- bulkAddForPostcode(postcode).finally(function () {
59
- bulkAdd.loadingButton.stop($submitButton);
60
- });
61
- }
62
-
63
- function init() {
64
- bulkAdd.init();
65
-
66
- $(selectors.root).each(function () {
67
- const $component = $(this);
68
- const $postcodeInput = $component.find(selectors.input);
69
- const $submitButton = $component.find(selectors.button);
70
-
71
- $component.removeClass(modifiers.hasError);
72
-
73
- $submitButton.on('click', function (e) {
74
- e.preventDefault();
75
- handleSubmitClick($component, $postcodeInput, $submitButton);
76
- });
77
- });
78
- }
79
-
80
- return { init };
81
- })();
82
-
83
- $(document).ready(Wick.PostcodeChecker.init);
@@ -1,168 +0,0 @@
1
- var Wick = window.Wick || {};
2
-
3
- Wick.ThumbGallery = (function () {
4
- const BASE_URL = 'https://media.wickes.co.uk/image/upload/';
5
- const productName = window.pdpProduct && window.pdpProduct.name ? window.pdpProduct.name : '';
6
-
7
- const IMG_BREAKPOINTS = [
8
- { media: '(max-width: 576px)', w: 576, h: 324 },
9
- { media: '(max-width: 768px)', w: 510, h: 287 },
10
- { media: '(max-width: 992px)', w: 310, h: 174 },
11
- ];
12
-
13
- const MAIN_DEFAULT = { w: 710, h: 399 };
14
- const THUMB = { w: 100, h: 56 };
15
-
16
- function buildCloudinaryUrl(publicId, w, h) {
17
- const transforms = `b_rgb:FFFFFF,c_pad,dpr_1.0,f_jpg,h_${h},q_auto:good,w_${w}`;
18
- return `${BASE_URL}${transforms}/c_pad,h_${h},w_${w}/v1/${publicId}?pgw=1`;
19
- }
20
-
21
- function parseIdentifiers(hybrisString) {
22
- return hybrisString
23
- .trim()
24
- .slice(1, hybrisString.length - 1)
25
- .split(',')
26
- .map((s) => s.trim())
27
- .filter(Boolean);
28
- }
29
-
30
- function generateMainSlideHtml(publicId) {
31
- const sources = IMG_BREAKPOINTS.map(
32
- (bp) =>
33
- `<source srcset="${buildCloudinaryUrl(publicId, bp.w, bp.h)}" media="${bp.media}">`
34
- ).join('\n ');
35
-
36
- return `<div class="thumb-gallery__slide-wrapper swiper-slide">
37
- <picture>
38
- ${sources}
39
- <img class="swiper-slide-main" src="${buildCloudinaryUrl(publicId, MAIN_DEFAULT.w, MAIN_DEFAULT.h)}" alt="${productName}">
40
- </picture>
41
- </div>`;
42
- }
43
-
44
- function generateThumbSlideHtml(publicId) {
45
- return `<div class="thumb-gallery__slide-wrapper swiper-slide">
46
- <img class="swiper-slide-thumbs" src="${buildCloudinaryUrl(publicId, THUMB.w, THUMB.h)}" alt="${productName}">
47
- </div>`;
48
- }
49
-
50
- const SELECTORS = {
51
- galleryCarousel: '.thumb-gallery',
52
- swiperContainerMain: '.swiper-container-main',
53
- swiperContainerThumbs: '.swiper-container-thumbs',
54
- swiperMainWrapper: '.swiper-container-main .swiper-wrapper',
55
- swiperThumbsWrapper: '.swiper-container-thumbs .swiper-wrapper',
56
- nextBtn: '.thumb-gallery__next-btn',
57
- prevBtn: '.thumb-gallery__prev-btn',
58
- thumbNextBtn: '.swiper-container-thumbs__next-btn',
59
- thumbPrevBtn: '.swiper-container-thumbs__prev-btn',
60
- swiperSlide: '.swiper-slide',
61
- activeThumbClass: 'swiper-true-active',
62
- };
63
-
64
- const THUMBS_SWIPER_CONFIG = {
65
- spaceBetween: 8,
66
- slidesPerView: 8,
67
- watchSlidesVisibility: true,
68
- watchSlidesProgress: true,
69
- watchOverflow: true,
70
- observer: true,
71
- observeParents: true,
72
- simulateTouch: false,
73
- };
74
-
75
- const THUMBS_BREAKPOINTS = {
76
- 991: { slidesPerView: 5 },
77
- 767: { allowTouchMove: true, slidesPerView: 5 },
78
- };
79
-
80
- const MAIN_SWIPER_CONFIG = {
81
- speed: 400,
82
- slidesPerView: 1,
83
- loop: true,
84
- observer: true,
85
- observeParents: true,
86
- simulateTouch: false,
87
- };
88
-
89
- function handleThumbClick(swiper) {
90
- return function () {
91
- const clickedIndex = $(this).index();
92
- swiper.slideToLoop(clickedIndex);
93
- };
94
- }
95
-
96
- function updateActiveThumbnail(swiper, thumbsSwiper) {
97
- const activeIndex = swiper.realIndex;
98
- thumbsSwiper.slides.removeClass(SELECTORS.activeThumbClass);
99
- thumbsSwiper.slides.eq(activeIndex).addClass(SELECTORS.activeThumbClass);
100
- }
101
-
102
- function getThumbsConfig($thumbNextBtn, $thumbPrevBtn) {
103
- return {
104
- ...THUMBS_SWIPER_CONFIG,
105
- navigation: {
106
- nextEl: $thumbNextBtn[0],
107
- prevEl: $thumbPrevBtn[0],
108
- },
109
- breakpoints: { ...THUMBS_BREAKPOINTS },
110
- };
111
- }
112
-
113
- function getMainSwiperConfig($nextBtn, $prevBtn, thumbsSwiper, onSlideChange) {
114
- return {
115
- ...MAIN_SWIPER_CONFIG,
116
- navigation: {
117
- nextEl: $nextBtn[0],
118
- prevEl: $prevBtn[0],
119
- },
120
- thumbs: { swiper: thumbsSwiper },
121
- on: { slideChange: onSlideChange },
122
- };
123
- }
124
-
125
- function initializeCarousel($slider, ids) {
126
- $slider.find(SELECTORS.swiperMainWrapper).html(ids.map(generateMainSlideHtml).join('\n'));
127
- $slider
128
- .find(SELECTORS.swiperThumbsWrapper)
129
- .html(ids.map(generateThumbSlideHtml).join('\n'));
130
-
131
- const $container = $slider.find(SELECTORS.swiperContainerMain);
132
- const $nextBtn = $slider.find(SELECTORS.nextBtn);
133
- const $prevBtn = $slider.find(SELECTORS.prevBtn);
134
-
135
- const $thumbContainer = $slider.find(SELECTORS.swiperContainerThumbs);
136
- const $thumbNextBtn = $slider.find(SELECTORS.thumbNextBtn);
137
- const $thumbPrevBtn = $slider.find(SELECTORS.thumbPrevBtn);
138
-
139
- const thumbsSwiper = new Swiper(
140
- $thumbContainer[0],
141
- getThumbsConfig($thumbNextBtn, $thumbPrevBtn)
142
- );
143
-
144
- const swiper = new Swiper(
145
- $container[0],
146
- getMainSwiperConfig($nextBtn, $prevBtn, thumbsSwiper, () => {
147
- updateActiveThumbnail(swiper, thumbsSwiper);
148
- })
149
- );
150
-
151
- $thumbContainer.on('click', SELECTORS.swiperSlide, handleThumbClick(swiper));
152
- updateActiveThumbnail(swiper, thumbsSwiper);
153
- }
154
-
155
- function init(hybrisString) {
156
- const ids = parseIdentifiers(hybrisString);
157
-
158
- if (ids.length < 2) {
159
- return;
160
- }
161
-
162
- $(SELECTORS.galleryCarousel).each(function (_, slider) {
163
- initializeCarousel($(slider), ids);
164
- });
165
- }
166
-
167
- return { init };
168
- })();
@@ -1,81 +0,0 @@
1
- {{#extend "base" hybrisClass="hybris-class" pageClass="products-list-page" title="Bathroom PLP" globalSearchV2="true" pagePlp=true bundle="plp" switch-vat=true}}
2
- {{#content "head" mode="append"}}
3
- <link type="text/css" rel="stylesheet" href="./css/components/global-search.css">
4
- {{/content}}
5
- {{#content "body"}}
6
- <main>
7
- <div class="package-plp container">
8
- <div class="page-header page-header_border-all">
9
- <h1 class="page-header__title">
10
- Bathroom Suite Packages
11
- </h1>
12
- {{> srp-injected}}
13
- </div>
14
-
15
- {{> quick-filter filterData=quickFilter.iconAndText_5}}
16
-
17
- <div class="package-plp__container">
18
- <aside class="package-plp__search-filter">
19
- {{> search-filter collapsed="accordion_collapsed" hidden="hidden-state"}}
20
- </aside>
21
-
22
- <div class="package-plp__content">
23
- <div class="plp-filters" data-component="plp-filters" aria-label="Product filters">
24
- <div class="plp-filters__bar plp-filters__bar-mobile" role="tablist" aria-label="Filters">
25
- {{> kitchen/mobile-nav-item
26
- icon="fas fa-filter"
27
- title="Filter by"
28
- info="24 results"
29
- modalId="filterModal"
30
- mod="filter-modal-cta"
31
- }}
32
- {{> kitchen/mobile-nav-item
33
- icon="fas fa-sort-alt"
34
- title="Sort by"
35
- info="Relevance"
36
- dropdown=true
37
- }}
38
- </div>
39
- </div>
40
-
41
- <input id="numberOfPagesPLP" value="2" type="hidden">
42
- <div class="sort-products-list">
43
- {{> kitchen/sort-by }}
44
- </div>
45
-
46
- <div class="package-plp__cards">
47
- {{> package-card cards=ripple-plp.cards}}
48
- {{#if search-result_v2.product-banner}}
49
- {{#each search-result_v2.product-banner}}
50
- {{>card_product_banner_v2}}
51
- {{/each}}
52
- {{/if}}
53
- {{#if search-result_v2.bloomreach-media-banner}}
54
- {{#each search-result_v2.bloomreach-media-banner}}
55
- {{>card_bloomreach_media_banner}}
56
- {{/each}}
57
- {{/if}}
58
- {{#if search-result_v2.sponsor-banner}}
59
- {{#each search-result_v2.sponsor-banner}}
60
- {{>card_sponsor_banner}}
61
- {{/each}}
62
- {{/if}}
63
- </div>
64
-
65
- <div class="load-more-wrap">
66
- <button class="btn btn-primary btn_full btn-load-more">
67
- Load more
68
- </button>
69
- </div>
70
- </div>
71
- </div>
72
- </div>
73
- </main>
74
- {{/content}}
75
- {{#content "foot" mode="append"}}
76
- {{> kitchen/filter-modal isKitchenMode=false modalTitle="Filter by" }}
77
- <script defer src="./js/search-filter.min.js"></script>
78
- <script defer src="./js/plp-filters.min.js"></script>
79
- <script defer src="./js/page/quick-filter.js"></script>
80
- {{/content}}
81
- {{/extend}}
@@ -1,83 +0,0 @@
1
- {{#extend "base" hybrisClass="hybris-class" pageClass="products-list-page" title="Bathroom PLP" globalSearchV2="true" pagePlp=true bundle="plp"}}
2
- {{#content "head" mode="append"}}
3
- <link type="text/css" rel="stylesheet" href="./css/components/global-search.css">
4
- <link type="text/css" rel="stylesheet" href="https://static-content-develop.dev.wickes.co.uk/whisk/kitchen-static/css/kitchen-content.css">
5
- {{/content}}
6
- {{#content "body"}}
7
- <main>
8
- <div class="package-plp container">
9
- <div class="page-header page-header_border-all">
10
- <h1 class="page-header__title">
11
- Bathroom Suite Packages
12
- </h1>
13
- {{> srp-injected}}
14
- {{> sponsor-top-banner }}
15
- </div>
16
-
17
- {{> quick-filter filterData=quickFilter.iconAndText_5}}
18
-
19
- <div class="hybris-slot">
20
- <div style="min-height: 120px; background-color: gray;"></div>
21
- <div style="min-height: 120px; background-color: gray;"></div>
22
- </div>
23
-
24
- <div class="package-plp__container">
25
- <aside class="package-plp__search-filter">
26
- {{> search-filter collapsed="accordion_collapsed" hidden="hidden-state"}}
27
- </aside>
28
-
29
- <div class="package-plp__content">
30
- <div class="plp-filters" data-component="plp-filters" aria-label="Product filters">
31
- <div class="plp-filters__bar plp-filters__bar-mobile" role="tablist" aria-label="Filters">
32
- {{> kitchen/mobile-nav-item
33
- icon="fas fa-filter"
34
- title="Filter by"
35
- info="24 results"
36
- modalId="filterModal"
37
- mod="filter-modal-cta"
38
- }}
39
- {{> kitchen/mobile-nav-item
40
- icon="fas fa-sort-alt"
41
- title="Sort by"
42
- info="Relevance"
43
- dropdown=true
44
- }}
45
- </div>
46
- </div>
47
-
48
- <input id="numberOfPagesPLP" value="1" type="hidden">
49
- <div class="sort-products-list">
50
- {{> kitchen/sort-by }}
51
- </div>
52
-
53
- <div class="package-plp__cards">
54
- {{> package-card cards=(limitArray ripple-plp.cards 7)}}
55
- </div>
56
-
57
- <div class="load-more-wrap">
58
- <button class="btn btn-primary btn_full btn-load-more">
59
- Load more
60
- </button>
61
- </div>
62
- </div>
63
- </div>
64
- </div>
65
-
66
- <div class="container">
67
- <div class="hybris-slot">
68
- <div class="banner-emulation" style="height: 398px; min-height: 120px; background-color: gray;"></div>
69
- <div style="min-height: 120px; background-color: gray;"></div>
70
- <div style="min-height: 120px; background-color: gray;"></div>
71
- </div>
72
- </div>
73
-
74
- {{> legal-info}}
75
- </main>
76
- {{/content}}
77
- {{#content "foot" mode="append"}}
78
- {{> kitchen/filter-modal isKitchenMode=false modalTitle="Filter by" }}
79
- <script defer src="./js/search-filter.min.js"></script>
80
- <script defer src="./js/plp-filters.min.js"></script>
81
- <script defer src="./js/page/quick-filter.js"></script>
82
- {{/content}}
83
- {{/extend}}
@@ -1,98 +0,0 @@
1
- {{#extend "base" hybrisClass="hybris-class" pageClass="products-list-page" title="Bathroom PLP" globalSearchV2="true" pagePlp=true bundle="plp"}}
2
- {{#content "head" mode="append"}}
3
- <link type="text/css" rel="stylesheet" href="./css/components/global-search.css">
4
- <link type="text/css" rel="stylesheet" href="https://static-content-develop.dev.wickes.co.uk/whisk/kitchen-static/css/kitchen-content.css">
5
- {{/content}}
6
- {{#content "body"}}
7
- <main>
8
- <div class="package-plp container">
9
- <div class="page-header page-header_border-all">
10
- <h1 class="page-header__title">
11
- Bathroom Suite Packages
12
- </h1>
13
- {{> srp-injected}}
14
- {{> sponsor-top-banner }}
15
- </div>
16
-
17
- {{> quick-filter filterData=quickFilter.iconAndText_5}}
18
-
19
- <div class="hybris-slot">
20
- <div style="min-height: 120px; background-color: gray;"></div>
21
- <div style="min-height: 120px; background-color: gray;"></div>
22
- </div>
23
-
24
- <div class="package-plp__container">
25
- <aside class="package-plp__search-filter">
26
- {{> search-filter collapsed="accordion_collapsed" hidden="hidden-state"}}
27
- </aside>
28
-
29
- <div class="package-plp__content">
30
- <div class="plp-filters" data-component="plp-filters" aria-label="Product filters">
31
- <div class="plp-filters__bar plp-filters__bar-mobile" role="tablist" aria-label="Filters">
32
- {{> kitchen/mobile-nav-item
33
- icon="fas fa-filter"
34
- title="Filter by"
35
- info="24 results"
36
- modalId="filterModal"
37
- mod="filter-modal-cta"
38
- }}
39
- {{> kitchen/mobile-nav-item
40
- icon="fas fa-sort-alt"
41
- title="Sort by"
42
- info="Relevance"
43
- dropdown=true
44
- }}
45
- </div>
46
- </div>
47
-
48
- <input id="numberOfPagesPLP" value="2" type="hidden">
49
- <div class="sort-products-list">
50
- {{> kitchen/sort-by }}
51
- </div>
52
-
53
- <div class="package-plp__cards">
54
- {{> package-card cards=ripple-plp.cards}}
55
- {{#if search-result_v2.product-banner}}
56
- {{#each search-result_v2.product-banner}}
57
- {{>card_product_banner_v2}}
58
- {{/each}}
59
- {{/if}}
60
- {{#if search-result_v2.bloomreach-media-banner}}
61
- {{#each search-result_v2.bloomreach-media-banner}}
62
- {{>card_bloomreach_media_banner}}
63
- {{/each}}
64
- {{/if}}
65
- {{#if search-result_v2.sponsor-banner}}
66
- {{#each search-result_v2.sponsor-banner}}
67
- {{>card_sponsor_banner}}
68
- {{/each}}
69
- {{/if}}
70
- </div>
71
-
72
- <div class="load-more-wrap">
73
- <button class="btn btn-primary btn_full btn-load-more">
74
- Load more
75
- </button>
76
- </div>
77
- </div>
78
- </div>
79
- </div>
80
-
81
- <div class="container">
82
- <div class="hybris-slot">
83
- <div class="banner-emulation" style="height: 398px; min-height: 120px; background-color: gray;"></div>
84
- <div style="min-height: 120px; background-color: gray;"></div>
85
- <div style="min-height: 120px; background-color: gray;"></div>
86
- </div>
87
- </div>
88
-
89
- {{> legal-info}}
90
- </main>
91
- {{/content}}
92
- {{#content "foot" mode="append"}}
93
- {{> kitchen/filter-modal isKitchenMode=false modalTitle="Filter by" }}
94
- <script defer src="./js/search-filter.min.js"></script>
95
- <script defer src="./js/plp-filters.min.js"></script>
96
- <script defer src="./js/page/quick-filter.js"></script>
97
- {{/content}}
98
- {{/extend}}