wickes-css2 2.107.0-ripple.2 → 2.107.0-ripple.21

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 (307) hide show
  1. package/build/css/category-main.css +1 -1
  2. package/build/css/components/card-product-banner.css +1 -1
  3. package/build/css/components/checkout-chip.css +1 -1
  4. package/build/css/components/checkout-payment-details-v2.css +1 -1
  5. package/build/css/components/price-block-v2-critical.css +1 -1
  6. package/build/css/components/price-block-v2.css +1 -1
  7. package/build/css/components/special-opening-schedule-v2.css +1 -1
  8. package/build/css/components/special-opening-schedule.css +1 -1
  9. package/build/css/emulation.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/my-account-v2.css +1 -1
  17. package/build/css/pages/page_checkout_delivery-new.css +1 -1
  18. package/build/css/pages/page_merged-basket.css +1 -1
  19. package/build/css/pages/page_personal-details.css +1 -1
  20. package/build/css/pages/page_product-details-v2-critical.css +1 -1
  21. package/build/css/pages/page_product-details-v2.css +1 -1
  22. package/build/css/pages/page_product-details.css +1 -1
  23. package/build/css/pages/page_products-list-combined.css +1 -1
  24. package/build/css/pages/page_products-list.css +1 -1
  25. package/build/css/pages/page_shopping-cart-v2.css +1 -1
  26. package/build/css/pages/page_store-locator-details.css +1 -1
  27. package/build/css/pages/page_store-locator.css +1 -1
  28. package/build/css/pdp-main-before-combine.css +1 -1
  29. package/build/css/pdp-main-critical.css +1 -1
  30. package/build/css/pdp-main-non-critical.css +1 -1
  31. package/build/css/pdp-main.css +1 -1
  32. package/build/css/plp-main.css +1 -1
  33. package/build/css/store-locator-main.css +1 -1
  34. package/build/js/account-hub.min.js +1 -1
  35. package/build/js/basket.min.js +2 -2
  36. package/build/js/bloomreach-widget.min.js +1 -0
  37. package/build/js/bundle.min.js +1 -1
  38. package/build/js/checkout.min.js +2 -2
  39. package/build/js/components/general/accordion.js +69 -0
  40. package/build/js/components/general/back-to-top.js +45 -0
  41. package/build/js/components/general/backdrop.js +23 -0
  42. package/build/js/components/general/cart-slider.js +36 -0
  43. package/build/js/components/general/clamp-content.js +95 -0
  44. package/build/js/components/general/clamp.js +216 -0
  45. package/build/js/components/general/clear-input.js +33 -0
  46. package/build/js/components/general/cookie-chat-back.js +51 -0
  47. package/build/js/components/general/cookies-policy.js +9 -0
  48. package/build/js/components/general/create-popup-slider.js +194 -0
  49. package/build/js/components/general/device-type.js +6 -0
  50. package/build/js/components/general/footer.js +67 -0
  51. package/build/js/components/general/handleAccordion.js +35 -0
  52. package/build/js/components/general/image-accordion.js +54 -0
  53. package/build/js/components/general/is-trade-pro.js +38 -0
  54. package/build/js/components/general/main-nav.js +16 -0
  55. package/build/js/components/general/main-navigation.js +275 -0
  56. package/build/js/components/general/notification.js +70 -0
  57. package/build/js/components/general/offer-banner.js +74 -0
  58. package/build/js/components/general/scroll-disable.js +54 -0
  59. package/build/js/components/general/search.js +43 -0
  60. package/build/js/components/general/snack-bar.js +160 -0
  61. package/build/js/components/general/sticky_header.js +62 -0
  62. package/build/js/components/general/switchVat.js +161 -0
  63. package/build/js/components/general/text-clamp.js +102 -0
  64. package/build/js/components/general/tooltips.js +8 -0
  65. package/build/js/components/general/validation.js +48 -0
  66. package/build/js/emulation.min.js +3377 -164
  67. package/build/js/general.bundle.min.js +1 -1
  68. package/build/js/gift-cards.min.js +1 -1
  69. package/build/js/kitchen/kitchen-plp.min.js +1 -1
  70. package/build/js/merged-checkout.min.js +2 -2
  71. package/build/js/mini-basket-slider.min.js +1 -1
  72. package/build/js/package-bulk-add.min.js +1 -0
  73. package/build/js/page/basket/mini-basket-total.js +17 -2
  74. package/build/js/page/bloomreach-widget.js +1148 -0
  75. package/build/js/page/checkout-payment-details.js +12 -1
  76. package/build/js/page/checkout.js +1 -1
  77. package/build/js/page/components/notify-me.js +99 -0
  78. package/build/js/page/components/order-summary.js +35 -0
  79. package/build/js/page/plp-load-more.js +81 -66
  80. package/build/js/page/ripple/bulk-add.js +63 -0
  81. package/build/js/page/ripple/package-bulk-add.js +43 -0
  82. package/build/js/page/ripple/postcode-checker.js +83 -0
  83. package/build/js/page/ripple/thumb-gallery.js +168 -0
  84. package/build/js/page/utils/create-count-stepper.js +30 -9
  85. package/build/js/page/utils/create-loading-button.js +37 -0
  86. package/build/js/page/utils/create-toast.js +79 -0
  87. package/build/js/page/utils/custom-dropdown.js +80 -0
  88. package/build/js/pdp-count-stepper.min.js +1 -1
  89. package/build/js/pdp.bundle.min.js +2 -1
  90. package/build/js/plp.bundle.min.js +1 -1
  91. package/build/js/postcode-checker.min.js +1 -0
  92. package/build/js/project-list.min.js +1 -1
  93. package/build/js/saving-shopping-list.min.js +1 -1
  94. package/build/js/wickes-dc.js +1 -0
  95. package/package.json +1 -4
  96. package/src/badges-ripple.html +120 -0
  97. package/src/badges.html +9 -18
  98. package/src/components/base/button.hbs +23 -5
  99. package/src/components/bloomreach/complete-card-dropdown.hbs +47 -0
  100. package/src/components/bloomreach/complete-card-skeleton.hbs +19 -0
  101. package/src/components/bloomreach/complete-card.hbs +138 -0
  102. package/src/components/bloomreach/complete-divider.hbs +3 -0
  103. package/src/components/bloomreach/complete-summary-skeleton.hbs +12 -0
  104. package/src/components/bloomreach/complete-summary.hbs +43 -0
  105. package/src/components/bloomreach/complete-wrapper.hbs +1 -0
  106. package/src/components/bloomreach/complete-your-project.hbs +21 -0
  107. package/src/components/card-store-locator.hbs +70 -33
  108. package/src/components/card_bloomreach_media_banner.hbs +10 -0
  109. package/src/components/card_product_banner_v2.hbs +4 -1
  110. package/src/components/card_sponsor_banner.hbs +4 -1
  111. package/src/components/cart-voucher.hbs +10 -1
  112. package/src/components/checkout_order-summary-new.hbs +11 -2
  113. package/src/components/click-and-collect-modal.hbs +0 -14
  114. package/src/components/date-selection.hbs +1 -1
  115. package/src/components/delivery-types.hbs +11 -3
  116. package/src/components/fulfilment-accordions.hbs +1 -1
  117. package/src/components/gift-cards.hbs +1 -1
  118. package/src/components/injected-content.hbs +6 -1
  119. package/src/components/kitchen/price.hbs +49 -29
  120. package/src/components/kitchen/strip-stickers.hbs +9 -3
  121. package/src/components/modal.hbs +1 -1
  122. package/src/components/modals/notify-me-modal.hbs +76 -0
  123. package/src/components/order-item.hbs +18 -5
  124. package/src/components/order-summary.hbs +2 -2
  125. package/src/components/package-card.hbs +30 -0
  126. package/src/components/pdp-price-actions.hbs +17 -0
  127. package/src/components/postcode-checker.hbs +24 -0
  128. package/src/components/potential-promotion.hbs +12 -3
  129. package/src/components/price-badges.hbs +14 -0
  130. package/src/components/price-block-v2.hbs +91 -31
  131. package/src/components/product-main-info-v2.hbs +2 -0
  132. package/src/components/sponsor-top-banner.hbs +10 -0
  133. package/src/components/suite-includes.hbs +43 -12
  134. package/src/components/suite-product-card.hbs +37 -15
  135. package/src/components/thumb-gallery.hbs +23 -0
  136. package/src/data/data_badges.json +143 -0
  137. package/src/data/data_bathroom-plp.json +814 -0
  138. package/src/data/data_delivery-address-v2.json +1 -1
  139. package/src/data/data_locators.json +441 -135
  140. package/src/data/data_search-results_v2.json +20 -2
  141. package/src/data/data_shopping-cart-v2.json +23 -5
  142. package/src/data/data_spr_injected_content.json +4 -0
  143. package/src/data/data_suite-includes-products.json +73 -2
  144. package/src/elements/checkbox.hbs +8 -1
  145. package/src/js/components/banner-placement-manager.js +25 -9
  146. package/src/js/components/general/accordion.js +25 -2
  147. package/src/js/components/general/cart-slider.js +19 -6
  148. package/src/js/components/package-card.js +69 -0
  149. package/src/js/components/store-locator-cards.js +76 -0
  150. package/src/js/emulation/banner-placement-manager.js +285 -53
  151. package/src/js/emulation/bloomreach-widget-calculations.js +132 -0
  152. package/src/js/emulation/bloomreach-widget-loading.js +11 -0
  153. package/src/js/emulation/checkout-delivery-details.js +28 -25
  154. package/src/js/emulation/custom-slider-emulation.js +1 -1
  155. package/src/js/emulation/date-selection.js +136 -24
  156. package/src/js/emulation/forms.js +12 -0
  157. package/src/js/emulation/gift-cards.js +1 -1
  158. package/src/js/emulation/mini-basket-data.js +3 -3
  159. package/src/js/emulation/mock.js +3112 -4
  160. package/src/js/emulation/notify-me.js +9 -0
  161. package/src/js/emulation/plp-load-more.js +13 -4
  162. package/src/js/emulation/postcode-checker.js +11 -0
  163. package/src/js/emulation/store-locator-load-more.js +69 -0
  164. package/src/js/emulation/switchCalendar.js +12 -8
  165. package/src/js/page/basket/mini-basket-total.js +17 -2
  166. package/src/js/page/bloomreach-widget.js +1148 -0
  167. package/src/js/page/checkout-payment-details.js +12 -1
  168. package/src/js/page/checkout.js +1 -1
  169. package/src/js/page/components/notify-me.js +99 -0
  170. package/src/js/page/components/order-summary.js +35 -0
  171. package/src/js/page/plp-load-more.js +81 -66
  172. package/src/js/page/ripple/bulk-add.js +63 -0
  173. package/src/js/page/ripple/package-bulk-add.js +43 -0
  174. package/src/js/page/ripple/postcode-checker.js +83 -0
  175. package/src/js/page/ripple/thumb-gallery.js +168 -0
  176. package/src/js/page/utils/create-count-stepper.js +30 -9
  177. package/src/js/page/utils/create-loading-button.js +37 -0
  178. package/src/js/page/utils/create-toast.js +79 -0
  179. package/src/js/page/utils/custom-dropdown.js +80 -0
  180. package/src/page_bathroom-plp-vat.html +81 -0
  181. package/src/page_bathroom-plp-without-load-more.html +83 -0
  182. package/src/page_bathroom-plp.html +98 -0
  183. package/src/page_checkout_next-day-delivery-details.html +2 -2
  184. package/src/page_checkout_payment-details-v2-asm.html +1 -1
  185. package/src/page_checkout_payment-details-v2.html +1 -1
  186. package/src/page_checkout_payment-details_with-card-loader.html +1 -1
  187. package/src/page_checkout_payment-details_with-klarna-loader.html +1 -1
  188. package/src/page_checkout_payment-details_with-loader-v2.html +1 -1
  189. package/src/page_checkout_rapid-delivery-details.html +7 -5
  190. package/src/page_klarna_payment-details_with-klarna.html +1 -1
  191. package/src/page_my-account-installer-carousel.html +131 -0
  192. package/src/page_payment-details-with-billie.html +1 -1
  193. package/src/page_payment-details-with-clearpay.html +1 -1
  194. package/src/page_payment-details-with-gift-card.html +1 -1
  195. package/src/page_payment-details_with_apple-pay.html +1 -1
  196. package/src/page_payment-details_with_google-pay.html +1 -1
  197. package/src/page_plp_bloomreach.html +81 -0
  198. package/src/page_plp_v2.html +6 -0
  199. package/src/page_product-details-banner.html +1 -4
  200. package/src/page_product-details-big-wins-disabled-delivery.html +1 -4
  201. package/src/page_product-details-big-wins-non-registered.html +1 -4
  202. package/src/page_product-details-big-wins-out-nearest.html +1 -4
  203. package/src/page_product-details-big-wins-unhappy.html +1 -4
  204. package/src/page_product-details-big-wins.html +1 -4
  205. package/src/page_product-details-billie.html +1 -4
  206. package/src/page_product-details-bloomreach.html +130 -0
  207. package/src/page_product-details-calculator.html +1 -4
  208. package/src/page_product-details-cashback-v2.html +1 -4
  209. package/src/page_product-details-clearpay.html +1 -4
  210. package/src/page_product-details-cnc-error-notification.html +1 -4
  211. package/src/page_product-details-cnc-success-notification-vat.html +1 -5
  212. package/src/page_product-details-cnc-success-notification.html +1 -4
  213. package/src/page_product-details-default-store.html +1 -4
  214. package/src/page_product-details-energy-efficiency.html +1 -4
  215. package/src/page_product-details-flooring-with-pr-placeholder.html +1 -4
  216. package/src/page_product-details-flooring.html +1 -4
  217. package/src/page_product-details-gallery-actual.html +1 -4
  218. package/src/page_product-details-mfe-calculator.html +10 -7
  219. package/src/page_product-details-minimum-v2.html +0 -1
  220. package/src/page_product-details-mtm-doors.html +1 -4
  221. package/src/page_product-details-only-clearpay.html +1 -4
  222. package/src/page_product-details-paint-mixing.html +1 -4
  223. package/src/page_product-details-ripple-gallery.html +119 -0
  224. package/src/page_product-details-saved-pl.html +1 -4
  225. package/src/page_product-details-suite-includes-banners.html +139 -0
  226. package/src/page_product-details-suite-includes-vat.html +126 -0
  227. package/src/page_product-details-suite-includes.html +32 -20
  228. package/src/page_product-details-tile-steps-klarna-widget-with-method-ids.html +1 -4
  229. package/src/page_product-details-tile-steps-logout.html +1 -4
  230. package/src/page_product-details-tile-steps-no-new-project-list.html +1 -4
  231. package/src/page_product-details-tile-steps-with-klarna.html +1 -4
  232. package/src/page_product-details-tile-steps.html +1 -4
  233. package/src/page_product-details-v2.html +1 -4
  234. package/src/page_product-details-vat.html +1 -4
  235. package/src/page_product-details-wisdom-mcfc-registered.html +1 -4
  236. package/src/page_product-details-wisdom-mcfc.html +1 -4
  237. package/src/page_product-details-wisdom-oos-registered.html +1 -4
  238. package/src/page_product-details-wisdom-oos.html +1 -4
  239. package/src/page_product-details-wisdom-registered.html +1 -4
  240. package/src/page_product-details-wisdom.html +1 -4
  241. package/src/page_product-details-with-favourite.html +1 -4
  242. package/src/page_product-details-with-global-search-v2.html +8 -4
  243. package/src/page_product-details_no-previous-default.html +1 -4
  244. package/src/page_shopping-cart-v2-vat.html +2 -1
  245. package/src/page_store-locator-list.html +17 -28
  246. package/src/page_track-my-order-result.html +1 -0
  247. package/src/partials/scripts.hbs +1 -0
  248. package/src/scss/common/_CTAs.scss +7 -3
  249. package/src/scss/common/_common.scss +1 -0
  250. package/src/scss/common/_elements.scss +13 -1
  251. package/src/scss/common/_loading-button.scss +49 -0
  252. package/src/scss/components/_card-store-locator.scss +139 -32
  253. package/src/scss/components/_custom-slider.scss +18 -0
  254. package/src/scss/components/_date-selection-add-new-styles.scss +43 -1
  255. package/src/scss/components/_image-accordion.scss +5 -2
  256. package/src/scss/components/_kitchen-card.scss +5 -4
  257. package/src/scss/components/_notifications.scss +86 -5
  258. package/src/scss/components/_notify-me-modal.scss +139 -0
  259. package/src/scss/components/_order-summary.scss +25 -12
  260. package/src/scss/components/_package-card.scss +63 -0
  261. package/src/scss/components/_package-plp.scss +88 -0
  262. package/src/scss/components/_pdp-action-v2-critical.scss +12 -0
  263. package/src/scss/components/_pdp-action-v2.scss +12 -0
  264. package/src/scss/components/_postcode-checker.scss +115 -0
  265. package/src/scss/components/_price-badges-critical.scss +10 -1
  266. package/src/scss/components/_price-badges.scss +10 -2
  267. package/src/scss/components/_price-block-critical.scss +11 -3
  268. package/src/scss/components/_price-block.scss +15 -4
  269. package/src/scss/components/_suite-includes.scss +29 -26
  270. package/src/scss/components/_suite-product-card.scss +33 -23
  271. package/src/scss/components/_thumb-gallery-critical.scss +34 -0
  272. package/src/scss/components/_thumb-gallery.scss +192 -0
  273. package/src/scss/components/bloomreach/_bloomreach.scss +3 -0
  274. package/src/scss/components/bloomreach/_complete-card-dropdown.scss +174 -0
  275. package/src/scss/components/bloomreach/_complete-card.scss +402 -0
  276. package/src/scss/components/bloomreach/_complete-your-project.scss +207 -0
  277. package/src/scss/components/card-product-banner.scss +35 -27
  278. package/src/scss/components/checkout-chip.scss +1 -0
  279. package/src/scss/components/checkout-payment-details-v2.scss +12 -0
  280. package/src/scss/components/kitchen/_price.scss +10 -0
  281. package/src/scss/components/kitchen/_strip-stickers.scss +46 -0
  282. package/src/scss/components/my-account/_clipboard-code.scss +4 -0
  283. package/src/scss/components/price-block-v2-critical.scss +54 -1
  284. package/src/scss/components/price-block-v2.scss +54 -3
  285. package/src/scss/components/special-opening-schedule-v2.scss +2 -6
  286. package/src/scss/components/special-opening-schedule.scss +17 -4
  287. package/src/scss/emulation.scss +0 -6
  288. package/src/scss/helpers/_CTAs.scss +15 -5
  289. package/src/scss/helpers/_variables.scss +1 -0
  290. package/src/scss/pages/page_checkout_delivery-new.scss +36 -0
  291. package/src/scss/pages/page_product-details-v2-critical.scss +217 -111
  292. package/src/scss/pages/page_product-details-v2.scss +200 -109
  293. package/src/scss/pages/page_product-details.scss +0 -2
  294. package/src/scss/pages/page_products-list-combined.scss +8 -1
  295. package/src/scss/pages/page_products-list.scss +8 -1
  296. package/src/scss/pages/page_shopping-cart-v2.scss +34 -10
  297. package/src/scss/pages/page_store-locator.scss +48 -26
  298. package/src/scss/pdp-main-critical.scss +1 -1
  299. package/src/scss/pdp-main.scss +5 -1
  300. package/src/scss/plp-main.scss +5 -0
  301. package/src/scss/store-locator-main.scss +15 -1
  302. package/src/sitemap.html +15 -0
  303. package/build/css/components/kitchen/strip-stickers.css +0 -1
  304. package/build/css/components/strip-stickers.css +0 -1
  305. package/src/js/emulation/store-locator-list.js +0 -19
  306. package/src/scss/components/kitchen/strip-stickers.scss +0 -18
  307. package/src/scss/components/strip-stickers.scss +0 -18
@@ -0,0 +1,70 @@
1
+ var Wick = Wick || {};
2
+ Wick.Notification = (function () {
3
+ function Notification(params) {
4
+ var self = this,
5
+ iconSuccess =
6
+ '<span class="icon notification__icon"><span class="fas fa-check-circle"></span></span>',
7
+ iconWarning =
8
+ '<span class="icon notification__icon"><span class="fas fa-exclamation-circle"></span></span>',
9
+ iconError =
10
+ '<span class="icon notification__icon"><span class="fas fa-times-circle"></span></span>',
11
+ closeBtn =
12
+ '<span class="icon notification__close"><span class="far fa-times"></span></span>';
13
+
14
+ this.$self = $('<div/>', {
15
+ class: 'notification notification_general notification_' + params.type,
16
+ html: params.text,
17
+ })
18
+ .prepend(
19
+ params.type === 'success'
20
+ ? iconSuccess
21
+ : params.type === 'warning'
22
+ ? iconWarning
23
+ : params.type === 'error'
24
+ ? iconError
25
+ : ''
26
+ )
27
+ .prepend(params.closeBtn ? closeBtn : '')
28
+ .prependTo(params.container);
29
+
30
+ this.hide = function () {
31
+ self.$self.remove();
32
+ };
33
+ }
34
+
35
+ $(document).on('click', '.notification__close', function () {
36
+ $(this).parents('.notification, .notification_app, .sticky-wrapper').remove();
37
+ });
38
+
39
+ return {
40
+ show: function (params) {
41
+ var $oldNote = $(params.container).find('.notification');
42
+ if ($oldNote.length) {
43
+ $oldNote.remove();
44
+ }
45
+
46
+ var newNote = new Notification(params),
47
+ offset = Wick.OfferBanner ? Wick.OfferBanner.$element.outerHeight(true) : 0,
48
+ stickyHeaderOffset = $('body.tp-app').length
49
+ ? $('.sticky-header-wrapper').height() || 0
50
+ : 0;
51
+
52
+ if (params.noScrolling === undefined) {
53
+ $('html, body').animate(
54
+ { scrollTop: newNote.$self.offset()?.top - offset - stickyHeaderOffset - 30 },
55
+ 300
56
+ );
57
+ }
58
+
59
+ if (params.temporary !== undefined) {
60
+ setTimeout(
61
+ function () {
62
+ newNote.hide();
63
+ },
64
+ params.delay ? params.delay : 5000
65
+ );
66
+ }
67
+ return newNote;
68
+ },
69
+ };
70
+ })();
@@ -0,0 +1,74 @@
1
+ $(document).ready(function () {
2
+ Wick.OfferBanner = (function () {
3
+ var offerBanner = $('.offer-banner')[0],
4
+ offer;
5
+
6
+ var stickyWrapper = $('.sticky-wrapper')[0];
7
+
8
+ if (!offerBanner) {
9
+ return;
10
+ }
11
+
12
+ Wick.applyBottomMarginIfBanner = function () {
13
+ if (!Wick.isTradePro) {
14
+ return;
15
+ }
16
+
17
+ if (!offerBanner) {
18
+ return;
19
+ }
20
+
21
+ let bannerHeight = $(offerBanner).outerHeight();
22
+ $(stickyWrapper).css('margin-bottom', bannerHeight + 'px');
23
+ };
24
+
25
+ var init = function () {
26
+ offer = new Waypoint.Sticky({
27
+ element: offerBanner
28
+ });
29
+ };
30
+
31
+ var toggle = function () {
32
+ if (offer) {
33
+ offer.destroy();
34
+ offer = null;
35
+ } else {
36
+ init();
37
+ }
38
+ };
39
+
40
+ function handleResize() {
41
+ if (!offer) {
42
+ return;
43
+ }
44
+ var elHeight = offer.$element.outerHeight(true);
45
+ if (elHeight !== offer.$wrapper.outerHeight(true)) {
46
+ offer.$wrapper.height(elHeight);
47
+ }
48
+
49
+ Wick.applyBottomMarginIfBanner();
50
+ }
51
+
52
+ var bindEvents = function () {
53
+ $(window).on('resize', handleResize);
54
+ $(window).on('orientationchange', handleResize);
55
+ $(document).on('mobileNav.toggle', toggle);
56
+ };
57
+
58
+ // Workaround for sticky banner functionality in IE
59
+ function isIE() {
60
+ var ua = navigator.userAgent;
61
+ /* MSIE used to detect old browsers and Trident used to newer ones*/
62
+ return ua.indexOf("MSIE ") > -1 || ua.indexOf("Trident/") > -1;
63
+ }
64
+
65
+ if (isIE()) {
66
+ init();
67
+ bindEvents();
68
+ }
69
+
70
+ Wick.applyBottomMarginIfBanner();
71
+
72
+ return offer;
73
+ })();
74
+ });
@@ -0,0 +1,54 @@
1
+ var Wick = Wick || {};
2
+
3
+ Wick.ScrollDisable = {
4
+ el: {
5
+ $body: $('body')
6
+ },
7
+ currentPosition: 0,
8
+ disableScroll: function () {
9
+ Wick.ScrollDisable.el.$body
10
+ .addClass('scroll-disable')
11
+ .css('margin-top', -Wick.ScrollDisable.currentPosition + 'px');
12
+ },
13
+ enableScroll: function () {
14
+ Wick.ScrollDisable.el.$body
15
+ .removeClass('scroll-disable')
16
+ .css('margin-top', '');
17
+ window.scrollTo(0, Wick.ScrollDisable.currentPosition);
18
+ },
19
+ initializeShowModalEvents: function (modal) {
20
+ const $modal = $(modal);
21
+ Wick.ScrollDisable.currentPosition = $(window).scrollTop();
22
+
23
+ Wick.ScrollDisable.disableScroll();
24
+ Wick.ScrollDisable.initializeHideModalEvents($modal);
25
+ },
26
+ initializeHideModalEvents: function (modal) {
27
+ modal.on('hidden.bs.modal', function() {
28
+ Wick.ScrollDisable.enableScroll();
29
+ });
30
+ },
31
+ handleTagAdded: function () {
32
+ Wick.ScrollDisable.currentPosition = $(window).scrollTop();
33
+ Wick.ScrollDisable.disableScroll(Wick.ScrollDisable.currentPosition);
34
+ },
35
+ handleTagRemoved: function () {
36
+ Wick.ScrollDisable.enableScroll(Wick.ScrollDisable.currentPosition);
37
+ },
38
+ init: function () {
39
+ if (!Wick.Responsive.isTouchDevice()) {
40
+ return;
41
+ }
42
+
43
+ $(document).on('show.bs.modal', '.modal', function (event) {
44
+ Wick.ScrollDisable.initializeShowModalEvents(event.currentTarget);
45
+ });
46
+
47
+ Wick.ScrollDisable.el.$body.on("tagKlarnaModalAdded", Wick.ScrollDisable.handleTagAdded);
48
+ Wick.ScrollDisable.el.$body.on("tagKlarnaModalRemoved", Wick.ScrollDisable.handleTagRemoved);
49
+ }
50
+ };
51
+
52
+ $(document).ready(function () {
53
+ Wick.ScrollDisable.init();
54
+ });
@@ -0,0 +1,43 @@
1
+ var Wick = Wick || {};
2
+
3
+ Wick.Search = (function() {
4
+ var $searchBtn = $('#search-button'),
5
+ $searchWrapper = $('#search-wrapper'),
6
+ $searchInput = $('#search'),
7
+ searchWrapperActive = 'search-wrapper--active',
8
+ searchActive = 'search--active',
9
+ navButton = $('.header-hamburger-menu'),
10
+ openNavClass = 'header-hamburger-menu_close-visible';
11
+
12
+ var closeNav = function () {
13
+ if (navButton.hasClass(openNavClass)) {
14
+ navButton
15
+ .trigger('click')
16
+ .trigger('blur')
17
+ }
18
+ };
19
+
20
+ var showSearch = function () {
21
+ $searchWrapper.addClass(searchWrapperActive);
22
+ $searchInput.focus();
23
+ $searchBtn.addClass(searchActive);
24
+ closeNav();
25
+ };
26
+
27
+ var hideSearch = function () {
28
+ $searchWrapper.removeClass(searchWrapperActive);
29
+ $searchBtn.removeClass(searchActive);
30
+ };
31
+
32
+ $searchInput.focusout(function() {
33
+ setTimeout(hideSearch,0);
34
+ })
35
+
36
+ $searchBtn.click(function () {
37
+ if ($searchBtn.hasClass(searchActive)) {
38
+ hideSearch();
39
+ } else {
40
+ showSearch();
41
+ }
42
+ })
43
+ })()
@@ -0,0 +1,160 @@
1
+ var Wick = Wick || {};
2
+ Wick.SnackBar = {
3
+ messages: [],
4
+ overlaySelector: '.snack-bar-notification-modal',
5
+ types: {
6
+ SUCCESS: 'success',
7
+ ERROR: 'error',
8
+ WARNING: 'warning'
9
+ },
10
+ };
11
+
12
+ Wick.SnackBar = {
13
+ ...Wick.SnackBar,
14
+ defaultMessagesState: {
15
+ [Wick.SnackBar.types.SUCCESS]: {
16
+ icon: 'fa-check-circle',
17
+ className: 'snack-bar-notification-success',
18
+ withCloseButton: true,
19
+ autoClose: false,
20
+ delayBeforeClose: 3000,
21
+ },
22
+ [Wick.SnackBar.types.ERROR]: {
23
+ icon: 'fa-times-circle',
24
+ className: 'snack-bar-notification-error',
25
+ withCloseButton: true,
26
+ autoClose: false,
27
+ delayBeforeClose: 3000,
28
+ },
29
+ [Wick.SnackBar.types.WARNING]: {
30
+ icon: 'fa-exclamation-circle',
31
+ className: 'snack-bar-notification-warning',
32
+ withCloseButton: true,
33
+ autoClose: false,
34
+ delayBeforeClose: 3000,
35
+ },
36
+ },
37
+
38
+ init() {
39
+ Wick.SnackBar.createNotificationWrapper();
40
+ Wick.SnackBar.defineOverlayListener();
41
+ },
42
+
43
+ createNotificationWrapper(overlayClassName = 'snack-bar-notification-modal') {
44
+ Wick.SnackBar.overlaySelector = `.${overlayClassName}`;
45
+ if ($(Wick.SnackBar.overlaySelector).length) {
46
+ console.warn('Snack bar already initialized');
47
+ return;
48
+ }
49
+ const wrapper = $("<div>", { class: overlayClassName });
50
+ $(document.body).append(wrapper);
51
+ },
52
+
53
+ defineOverlayListener() {
54
+ $(Wick.SnackBar.overlaySelector)
55
+ .on('click', Wick.SnackBar.hideOverlayByOutsideClick);
56
+ },
57
+
58
+ getDefaultOptionsForMessageType(type) {
59
+ return Wick.SnackBar.defaultMessagesState[type];
60
+ },
61
+
62
+ show(messageOptions) {
63
+ const id = Date.now();
64
+ const defaultMessageOptions = Wick.SnackBar.getDefaultOptionsForMessageType(messageOptions.type);
65
+ const templateArgs = {
66
+ ...defaultMessageOptions,
67
+ ...messageOptions,
68
+ id,
69
+ };
70
+
71
+ const template = Wick.SnackBar.createMessageTemplate(templateArgs);
72
+ Wick.SnackBar.messages.push(templateArgs);
73
+ $(Wick.SnackBar.overlaySelector).append(template);
74
+ Wick.SnackBar.showOverlay();
75
+ template.addClass('animateTop');
76
+ },
77
+
78
+ addCloseBtn(template) {
79
+ const closeBtn = $(`
80
+ <span class="icon notification__close">
81
+ <span class="far fa-times"></span>
82
+ </span>
83
+ `)
84
+ closeBtn.on('click', function (e) {
85
+ e.stopPropagation();
86
+ const message = $(this).closest('.snack-bar-notification-wrapper');
87
+
88
+ message.addClass('animateBottom');
89
+
90
+ message.on('animationend', () => {
91
+ message.remove();
92
+ if (!Wick.SnackBar.hasChildren(Wick.SnackBar.overlaySelector)) {
93
+ Wick.SnackBar.hideOverlay();
94
+ }
95
+ });
96
+ })
97
+ template.find('.snack-bar-notification-popup').append(closeBtn);
98
+ },
99
+
100
+ showOverlay() {
101
+ $(Wick.SnackBar.overlaySelector).fadeIn();
102
+ },
103
+
104
+ hideOverlay() {
105
+ $(Wick.SnackBar.overlaySelector).fadeOut();
106
+ },
107
+
108
+ getTemplate(text = '', icon, className){
109
+ return $(`
110
+ <div class="snack-bar-notification-wrapper">
111
+ <div class="snack-bar-notification-wrapper-inner">
112
+ <div class="snack-bar-notification-popup ${className}">
113
+ <span class="icon notification__icon">
114
+ <span class="fas ${icon}"></span>
115
+ </span>
116
+ <span class="snack-bar-notification_text">${text}</span>
117
+ </div>
118
+ </div>
119
+ </div>
120
+ `);
121
+ },
122
+
123
+ addTemplateId(template, id) {
124
+ template.attr('data-message-id', id)
125
+ },
126
+
127
+ hasChildren(selector) {
128
+ return $(selector).children().length >= 1;
129
+ },
130
+
131
+ hideOverlayByOutsideClick() {
132
+ const notificationWrap = $('.snack-bar-notification-wrapper');
133
+ notificationWrap.addClass('animateBottom');
134
+ notificationWrap.on('animationstart', () => {
135
+ notificationWrap.remove();
136
+ Wick.SnackBar.hideOverlay();
137
+ });
138
+ },
139
+
140
+ createMessageTemplate({ text, icon, className, withCloseButton, id, delayBeforeClose, autoClose }) {
141
+ const templateWithText = Wick.SnackBar.getTemplate(text, icon, className);
142
+ Wick.SnackBar.addTemplateId(templateWithText, id)
143
+ if (withCloseButton) {
144
+ Wick.SnackBar.addCloseBtn(templateWithText);
145
+ }
146
+ if (autoClose) {
147
+ setTimeout(function () {
148
+ templateWithText.addClass('animateBottom');
149
+ templateWithText.on('animationend', () => {
150
+ templateWithText.remove();
151
+ if (!Wick.SnackBar.hasChildren('.snack-bar-notification-modal')) {
152
+ Wick.SnackBar.hideOverlay();
153
+ }
154
+ });
155
+ }, delayBeforeClose);
156
+ }
157
+
158
+ return templateWithText;
159
+ },
160
+ };
@@ -0,0 +1,62 @@
1
+ var Wick = Wick || {};
2
+ Wick.StickyHeader = (function () {
3
+
4
+ var position = $(window).scrollTop(),
5
+ headerTopLine = $('.header__top-line'),
6
+ headerWrapper = $('.header-wrapper'),
7
+ stickyHeaderWrapper = $('.sticky-header-wrapper'),
8
+ stickyHeaderWrapperHeight = headerWrapper.height(),
9
+ flag = 1;
10
+ stickyHeaderWrapper.height(stickyHeaderWrapperHeight);
11
+
12
+ $(window).scroll(function () {
13
+ var mainNav = $('.main-nav.js-visible'),
14
+ mainNavDisplay = mainNav.css('display');
15
+
16
+ var scroll = $(window).scrollTop();
17
+
18
+ if (mainNavDisplay !== 'block') {
19
+ if (scroll > position && flag === 1) {
20
+ hideTop(scroll, position);
21
+ } else if (scroll < position && flag === 0) {
22
+ showTop(scroll, position);
23
+ }
24
+ } else if (mainNavDisplay === 'block' && flag === 0){
25
+ showTop(scroll, position);
26
+ }
27
+ position = scroll;
28
+ });
29
+
30
+
31
+ function hideTop(pageOffsetTop, scrolledPosition) {
32
+ if (pageOffsetTop + scrolledPosition <= 0) {
33
+ return;
34
+ }
35
+ headerTopLine.each(function (index) {
36
+ headerTopLine[index].classList.add('header-top-line-hide');
37
+ });
38
+
39
+ flag = 0;
40
+ }
41
+
42
+ function showTop() {
43
+ headerTopLine.each(function (index) {
44
+ headerTopLine[index].classList.remove('header-top-line-hide');
45
+ });
46
+
47
+ flag = 1;
48
+ }
49
+
50
+ function goBack() {
51
+ $('.header-back-btn').click(function(e){
52
+ e.stopPropagation();
53
+ e.preventDefault();
54
+ if (navigator.userAgent.match(/TradeProMobile_iOS|TradeProMobile_Android|DIYMobile_iOS|DIYMobile_Android/i)) {
55
+ window.history.back();
56
+ }
57
+ });
58
+ }
59
+
60
+ goBack();
61
+
62
+ })();
@@ -0,0 +1,161 @@
1
+ var Wick = window.Wick || {};
2
+
3
+ Wick.VatToggle = {
4
+ VAT_COOKIE: 'isVatChecked',
5
+ TOGGLE_VAT_EVENT_NAME: 'toggleVat',
6
+ HIDDEN_CLASS_NAME: 'd-none',
7
+ el: {
8
+ switchVatLabel: '.switch-vat-label',
9
+ includingVat: '.including-vat',
10
+ excludingVat: '.excluding-vat',
11
+ includingVatGlobalClass: 'including-vat-global',
12
+ excludingVatGlobalClass: 'excluding-vat-global',
13
+ switchVatInput: '.switch-vat input',
14
+ isHidden: 'd-none',
15
+ switchLabelCheckedClass: 'switch-label__checked',
16
+ },
17
+
18
+ toggle: function () {
19
+ const newSwitcherValue = !Wick.VatToggle.isOn();
20
+
21
+ Wick.VatToggle.setLabelState();
22
+ Wick.VatToggle.setSwitcherState(newSwitcherValue);
23
+
24
+ Wick.VatToggle.setCookie(Wick.VatToggle.VAT_COOKIE, newSwitcherValue);
25
+
26
+ const event = Wick.VatToggle.createToggleEvent(newSwitcherValue);
27
+ window.dispatchEvent(event);
28
+ },
29
+
30
+ setLabelState: function () {
31
+ Wick.VatToggle.toggleLabelClass();
32
+ },
33
+
34
+ setSwitcherState: function (isToggled) {
35
+ $(Wick.VatToggle.el.switchVatInput).attr('checked', isToggled);
36
+ },
37
+
38
+ getSwitcherState: function () {
39
+ if ($(Wick.VatToggle.el.switchVatInput).length) {
40
+ return !!$(Wick.VatToggle.el.switchVatInput).attr('checked');
41
+ } else {
42
+ return null;
43
+ }
44
+ },
45
+
46
+ createToggleEvent: function (isToggled) {
47
+ return new CustomEvent(Wick.VatToggle.TOGGLE_VAT_EVENT_NAME, {
48
+ detail: { toggled: isToggled },
49
+ });
50
+ },
51
+
52
+ toggleLabelClass: function () {
53
+ $(Wick.VatToggle.el.switchVatLabel).toggleClass(Wick.VatToggle.el.switchLabelCheckedClass);
54
+ },
55
+
56
+ isToggleVatAvailable: function () {
57
+ return window.ACC.app.isVatToggleAvailable;
58
+ },
59
+
60
+ isOn: function () {
61
+ return !!Wick.VatToggle.getCookie(Wick.VatToggle.VAT_COOKIE);
62
+ },
63
+
64
+ toggleDisplayClass: function () {
65
+ const includingVatEl = Wick.VatToggle.el.includingVat;
66
+ const excludingVat = Wick.VatToggle.el.excludingVat;
67
+ const hiddenClassName = Wick.VatToggle.HIDDEN_CLASS_NAME;
68
+
69
+ $(includingVatEl).toggleClass(hiddenClassName);
70
+ $(excludingVat).toggleClass(hiddenClassName);
71
+ },
72
+ reapplyDisplayClass: function () {
73
+ const includingVatEl = Wick.VatToggle.el.includingVat;
74
+ const excludingVatEl = Wick.VatToggle.el.excludingVat;
75
+ const hiddenClassName = Wick.VatToggle.HIDDEN_CLASS_NAME;
76
+
77
+ let vatState = null;
78
+
79
+ // check switcher state for web or cookie for app
80
+ if (Wick.VatToggle.getSwitcherState() !== null) {
81
+ vatState = Wick.VatToggle.getSwitcherState();
82
+ } else {
83
+ vatState = Wick.VatToggle.isOn();
84
+ }
85
+
86
+ if (vatState) {
87
+ $(includingVatEl).addClass(hiddenClassName);
88
+ $(excludingVatEl).removeClass(hiddenClassName);
89
+ } else {
90
+ $(includingVatEl).removeClass(hiddenClassName);
91
+ $(excludingVatEl).addClass(hiddenClassName);
92
+ }
93
+ },
94
+
95
+ updateGlobalClass: function () {
96
+ const includingVatGlobal = Wick.VatToggle.el.includingVatGlobalClass;
97
+ const excludingVatGlobal = Wick.VatToggle.el.excludingVatGlobalClass;
98
+
99
+ if (Wick.VatToggle.isOn()) {
100
+ $('body').removeClass(includingVatGlobal).addClass(excludingVatGlobal);
101
+ } else {
102
+ $('body').removeClass(excludingVatGlobal).addClass(includingVatGlobal);
103
+ }
104
+ },
105
+
106
+ getCookie: function (cookieName) {
107
+ const cookie = decodeURIComponent(document.cookie)
108
+ .split(';')
109
+ .map((cookie = '') => cookie.trim())
110
+ .find((cookie = '') => cookie.startsWith(`${cookieName}=`));
111
+
112
+ if (cookie) {
113
+ const cookieValue = cookie.replace(`${cookieName}=`, '');
114
+ return covertStringBooleanToBoolean(cookieValue);
115
+ }
116
+
117
+ return '';
118
+ },
119
+
120
+ setCookie: function (cookie, value) {
121
+ const cookiesString = `${cookie}=${encodeURIComponent(value)};path=/`;
122
+ document.cookie = cookiesString;
123
+ },
124
+
125
+ init: function () {
126
+ const isVatShouldBeToggled = Wick.VatToggle.isOn();
127
+ const isVatToggled = !!Wick.VatToggle.getSwitcherState();
128
+
129
+ if (isVatShouldBeToggled) {
130
+ Wick.VatToggle.setLabelState();
131
+ }
132
+ Wick.VatToggle.setSwitcherState(isVatShouldBeToggled);
133
+ Wick.VatToggle.updateGlobalClass();
134
+
135
+ $(Wick.VatToggle.el.switchVatInput).on('change', Wick.VatToggle.toggle);
136
+
137
+ $(window).on(Wick.VatToggle.TOGGLE_VAT_EVENT_NAME, function () {
138
+ Wick.VatToggle.toggleDisplayClass();
139
+ Wick.VatToggle.updateGlobalClass();
140
+ });
141
+
142
+ if (isVatShouldBeToggled !== isVatToggled) {
143
+ const event = Wick.VatToggle.createToggleEvent(isVatShouldBeToggled);
144
+ window.dispatchEvent(event);
145
+ }
146
+ },
147
+ };
148
+
149
+ function covertStringBooleanToBoolean(stringBoolean) {
150
+ if (stringBoolean === 'true') {
151
+ return true;
152
+ }
153
+ if (stringBoolean === 'false') {
154
+ return false;
155
+ }
156
+ return stringBoolean;
157
+ }
158
+
159
+ $(document).ready(function () {
160
+ Wick.VatToggle.init();
161
+ });