wickes-css2 2.109.0-develop.6 → 2.109.0-develop.8

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 (57) hide show
  1. package/Readme.md +0 -1
  2. package/build/css/components/card-product-banner.css +1 -1
  3. package/build/css/components/special-opening-schedule-v2.css +1 -1
  4. package/build/css/components/special-opening-schedule.css +1 -1
  5. package/build/css/emulation.css +1 -1
  6. package/build/css/main.css +1 -1
  7. package/build/css/my-account-main-v2.css +1 -1
  8. package/build/css/my-account-main.css +1 -1
  9. package/build/css/pages/checkout-new.css +1 -1
  10. package/build/css/pages/page_merged-basket.css +1 -1
  11. package/build/css/pages/page_store-locator-details.css +1 -1
  12. package/build/css/pages/page_store-locator.css +1 -1
  13. package/build/css/plp-main.css +1 -1
  14. package/build/css/store-locator-main.css +1 -1
  15. package/build/js/basket.min.js +1 -1
  16. package/build/js/bundle.min.js +1 -1
  17. package/build/js/checkout.min.js +1 -1
  18. package/build/js/emulation.min.js +367 -111
  19. package/build/js/general.bundle.min.js +1 -1
  20. package/build/js/gift-cards.min.js +1 -1
  21. package/build/js/merged-checkout.min.js +1 -1
  22. package/build/js/page/checkout-payment-details.js +95 -11
  23. package/build/js/page/components/gift-cards.js +1 -1
  24. package/build/js/page/components/store-locator-cards.js +76 -0
  25. package/build/js/pdp.bundle.min.js +1 -1
  26. package/build/js/plp.bundle.min.js +1 -1
  27. package/build/js/project-list.min.js +1 -1
  28. package/build/js/store-locator-cards.min.js +1 -0
  29. package/build/js/toggle-password-visibility.min.js +1 -0
  30. package/package.json +1 -1
  31. package/src/components/card-store-locator.hbs +70 -33
  32. package/src/components/card_bloomreach_media_banner.hbs +10 -0
  33. package/src/components/card_sponsor_banner.hbs +1 -1
  34. package/src/components/checkout-payment-details-v2.hbs +4 -4
  35. package/src/components/checkout-payment-info-block.hbs +1 -1
  36. package/src/data/data_locators.json +441 -135
  37. package/src/data/data_search-results_v2.json +11 -0
  38. package/src/js/components/general/accordion.js +25 -2
  39. package/src/js/emulation/banner-placement-manager.js +235 -34
  40. package/src/js/emulation/checkout-payment-details.js +34 -1
  41. package/src/js/emulation/gift-cards.js +1 -1
  42. package/src/js/emulation/store-locator-load-more.js +69 -0
  43. package/src/js/page/checkout-payment-details.js +95 -11
  44. package/src/js/page/components/gift-cards.js +1 -1
  45. package/src/js/page/components/store-locator-cards.js +76 -0
  46. package/src/page_plp_bloomreach.html +81 -0
  47. package/src/page_plp_v2.html +5 -0
  48. package/src/page_store-locator-list.html +18 -28
  49. package/src/scss/components/_card-store-locator.scss +139 -32
  50. package/src/scss/components/card-product-banner.scss +35 -35
  51. package/src/scss/components/special-opening-schedule-v2.scss +2 -6
  52. package/src/scss/components/special-opening-schedule.scss +17 -4
  53. package/src/scss/emulation.scss +0 -6
  54. package/src/scss/pages/page_store-locator.scss +48 -26
  55. package/src/scss/store-locator-main.scss +15 -1
  56. package/src/sitemap.html +1 -0
  57. package/src/js/emulation/store-locator-list.js +0 -19
@@ -1,4 +1,6 @@
1
1
  var Wick = Wick || {};
2
+ window.INIT_KLARNA_PAYMENT = window.INIT_KLARNA_PAYMENT || 'INIT_KLARNA_PAYMENT';
3
+ window.INIT_BILLIE_PAYMENT = window.INIT_BILLIE_PAYMENT || 'INIT_BILLIE_PAYMENT';
2
4
  Wick.CheckoutPaymentDetails = (function () {
3
5
  const $modal = $('#modal-terms-and-conditions');
4
6
 
@@ -10,10 +12,11 @@ Wick.CheckoutPaymentDetails = (function () {
10
12
  buttonName: 'btn-enter-details',
11
13
  };
12
14
 
15
+ const toggleBillieRepaymentTermsClass = 'js-billie-repayment-terms--has-selection';
16
+
13
17
  const elements = {
14
18
  $billieRepaymentTerms: $('.js-billie-repayment-terms'),
15
- $billieInfoBlock: $('.checkout-payment-details__billie'),
16
- $billieInfo: $('.checkout-payment-details__billie .billie-info'),
19
+ $billieWidget: $('.checkout-payment-details__billie[data-billie]'),
17
20
  $wrapperPaymentInput: $('.checkout-payment-details__row'),
18
21
  paymentInputName: '[name=payment-method]',
19
22
  $cardDetails: $('.checkout-payment-details__card-details'),
@@ -27,6 +30,52 @@ Wick.CheckoutPaymentDetails = (function () {
27
30
  hiddenClass: 'd-none',
28
31
  };
29
32
 
33
+ let klarnaInited = false;
34
+ let billieInited = false;
35
+
36
+ function initKlarnaPayment() {
37
+ if (klarnaInited) return Promise.resolve({ ok: true, cached: true });
38
+
39
+ return new Promise((resolve, reject) => {
40
+ const payload = {};
41
+ const detail = {
42
+ resolve: (data) => {
43
+ klarnaInited = true;
44
+ resolve(data);
45
+ },
46
+ reject,
47
+ };
48
+
49
+ const evt = createEvent(window.INIT_KLARNA_PAYMENT, payload, detail);
50
+ window.dispatchEvent(evt);
51
+ });
52
+ }
53
+
54
+ function initBilliePayment() {
55
+ if (billieInited) return Promise.resolve({ ok: true, cached: true });
56
+
57
+ return new Promise((resolve, reject) => {
58
+ const payload = {};
59
+ const detail = {
60
+ resolve: (data) => {
61
+ billieInited = true;
62
+ resolve(data);
63
+ },
64
+ reject,
65
+ };
66
+
67
+ const evt = createEvent(window.INIT_BILLIE_PAYMENT, payload, detail);
68
+ window.dispatchEvent(evt);
69
+ });
70
+ }
71
+
72
+ function getBillieRepaymentTermsLength() {
73
+ const billieRepaymentTerms =
74
+ (window.Wick && window.Wick?.BillieData?.billiePaymentTerms) || [];
75
+
76
+ return Array.isArray(billieRepaymentTerms) ? billieRepaymentTerms.length : 0;
77
+ }
78
+
30
79
  function preparePage() {
31
80
  var modalOpened = $('.modal.show').length;
32
81
  if (!modalOpened) return;
@@ -55,10 +104,14 @@ Wick.CheckoutPaymentDetails = (function () {
55
104
 
56
105
  function togglePaymentBlocks(paymentMethods, checkedMethod) {
57
106
  paymentMethods.forEach((method) => {
58
- $(`[data-${method}]`).toggle(checkedMethod === method);
107
+ $(`[data-${method}]`).hide();
59
108
  });
60
- }
61
109
 
110
+ const $selected = $(`[data-${checkedMethod}]`);
111
+ if ($selected.length) {
112
+ $selected.show();
113
+ }
114
+ }
62
115
  function resetAllCheckoutForms(keepPaymentMethod) {
63
116
  const $container = elements.$wrapperPaymentInput.closest('.checkout-payment-details');
64
117
  if (!$container.length) return;
@@ -102,9 +155,18 @@ Wick.CheckoutPaymentDetails = (function () {
102
155
  $row.find(':input').prop('disabled', !isVisible);
103
156
  }
104
157
 
158
+ function _syncBillieUI(isReady) {
159
+ elements.$billieWidget.toggle(isReady);
160
+ elements.$billieRepaymentTerms.toggleClass(toggleBillieRepaymentTermsClass, isReady);
161
+ }
162
+
163
+ function resetBillieUi() {
164
+ _syncBillieUI(false);
165
+ }
166
+
105
167
  function setBillieStepVisibility(isReady) {
168
+ _syncBillieUI(isReady);
106
169
  setBillingDetailsRowVisibility(isReady);
107
- elements.$billieInfo.toggleClass(elements.hiddenClass, !isReady);
108
170
  }
109
171
 
110
172
  function resetBillieRepaymentSelection() {
@@ -130,13 +192,34 @@ Wick.CheckoutPaymentDetails = (function () {
130
192
  const isUnregistered = type === 'unregistered';
131
193
  const isRegistered = type === 'registered';
132
194
 
133
- elements.$unregisteredFields.toggleClass(elements.hiddenClass, !isUnregistered);
134
- elements.$registeredFields.toggleClass(elements.hiddenClass, !isRegistered);
195
+ elements.$unregisteredFields
196
+ .toggleClass(elements.hiddenClass, !isUnregistered)
197
+ .removeAttr('style');
198
+ elements.$registeredFields
199
+ .toggleClass(elements.hiddenClass, !isRegistered)
200
+ .removeAttr('style');
201
+ }
202
+
203
+ function showBillingAddressDataCardFields() {
204
+ const dataCardFields = elements.$billingAddress.find('[data-card]');
205
+ if (dataCardFields) {
206
+ dataCardFields.show();
207
+ }
135
208
  }
136
209
 
137
210
  function changeDetailsBlock(checkedMethod) {
138
211
  if (checkedMethod !== 'billie') {
212
+ resetBillieUi();
139
213
  setBillingDetailsRowVisibility(true);
214
+ hideBillieBusiness();
215
+ }
216
+
217
+ if (checkedMethod === 'klarna') {
218
+ initKlarnaPayment().catch(() => {});
219
+ }
220
+
221
+ if (checkedMethod === 'billie' && getBillieRepaymentTermsLength() === 1) {
222
+ initBilliePayment().catch(() => {});
140
223
  }
141
224
 
142
225
  switch (checkedMethod) {
@@ -158,7 +241,7 @@ Wick.CheckoutPaymentDetails = (function () {
158
241
  };
159
242
  changeLabelText(detailsLabel);
160
243
 
161
- setBillieStepVisibility(false);
244
+ setBillieStepVisibility(getBillieRepaymentTermsLength() === 1);
162
245
  resetBillieRepaymentSelection();
163
246
  showBillieBusiness();
164
247
  break;
@@ -172,15 +255,16 @@ Wick.CheckoutPaymentDetails = (function () {
172
255
  prevClearableMethod === 'card' && clearInputFields();
173
256
  changeLabelText(detailsLabel);
174
257
  prevClearableMethod = checkedMethod;
258
+ showBillingAddressDataCardFields();
175
259
  break;
176
260
 
177
- case 'apple':
261
+ case 'apple-pay':
178
262
  hideCardDetails();
179
263
  hidePlaceOrder();
180
264
  hideBillingAddres();
181
265
  break;
182
266
 
183
- case 'google':
267
+ case 'google-pay':
184
268
  hideCardDetails();
185
269
  hidePlaceOrder();
186
270
  hideBillingAddres();
@@ -256,7 +340,7 @@ Wick.CheckoutPaymentDetails = (function () {
256
340
  if (currentMethod !== 'billie') return;
257
341
 
258
342
  requestAnimationFrame(() => {
259
- forceReflow(elements.$billieInfoBlock);
343
+ forceReflow(elements.$billieWidget);
260
344
  });
261
345
 
262
346
  const hasSelection = $('input[name="repaymentTerms"]:checked').length > 0;
@@ -111,7 +111,7 @@ Wick.GiftCard = {
111
111
  klarnaInfo: '.checkout-payment-details__klarna',
112
112
  billingAddress: '.billing-address',
113
113
  altPaymentRowsAttr:
114
- '[data-apple],[data-google],[data-paypal],[data-klarna],[data-billie],[data-clearpay],[data-existing-card]',
114
+ '[data-apple-pay],[data-google-pay],[data-paypal],[data-klarna],[data-billie],[data-clearpay],[data-existing-card]',
115
115
  hiddenCard: 'checkout-payment-details__card-details_hidden',
116
116
  cardDetails: '.checkout-payment-details__card-details',
117
117
  },
@@ -0,0 +1,76 @@
1
+ var Wick = window.Wick || (window.Wick = {});
2
+
3
+ Wick.StoreCardsAlign = (function () {
4
+ const SELECTORS = {
5
+ card: '.card-store',
6
+ info: '.card-store__info',
7
+ accordionHeader: '.opening-times-accordion__header',
8
+ };
9
+
10
+ let resizeTimeout;
11
+
12
+ function alignCardInfoHeights() {
13
+ const rows = [];
14
+
15
+ $(SELECTORS.card).each(function () {
16
+ const $card = $(this);
17
+ const top = $card.offset().top;
18
+
19
+ let row = rows.find((r) => Math.abs(r.top - top) < 5);
20
+
21
+ if (!row) {
22
+ row = { top: top, items: [] };
23
+ rows.push(row);
24
+ }
25
+
26
+ row.items.push($card);
27
+ });
28
+
29
+ rows.forEach((row) => {
30
+ let maxHeight = 0;
31
+
32
+ // reset
33
+ row.items.forEach(($card) => {
34
+ $card.find(SELECTORS.info).css('min-height', '');
35
+ });
36
+
37
+ // find max
38
+ row.items.forEach(($card) => {
39
+ const h = $card.find(SELECTORS.info).outerHeight();
40
+ if (h > maxHeight) maxHeight = h;
41
+ });
42
+
43
+ // apply
44
+ row.items.forEach(($card) => {
45
+ $card.find(SELECTORS.info).css('min-height', maxHeight + 'px');
46
+ });
47
+ });
48
+ }
49
+
50
+ function bindEvents() {
51
+ // load
52
+ $(window).on('load', alignCardInfoHeights);
53
+
54
+ // resize
55
+ $(window).on('resize', () => {
56
+ clearTimeout(resizeTimeout);
57
+ resizeTimeout = setTimeout(alignCardInfoHeights, 100);
58
+ });
59
+
60
+ // accordion
61
+ $(document).on('click', SELECTORS.accordionHeader, () => {
62
+ setTimeout(alignCardInfoHeights, 0);
63
+ });
64
+ }
65
+
66
+ function init() {
67
+ bindEvents();
68
+ }
69
+
70
+ init();
71
+
72
+ return {
73
+ init: init,
74
+ align: alignCardInfoHeights,
75
+ };
76
+ })();