wickes-css2 2.109.0-develop.3 → 2.109.0-gift-cards.1

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 (112) hide show
  1. package/Readme.md +1 -2
  2. package/build/css/category-main.css +1 -1
  3. package/build/css/components/card-product-banner.css +1 -1
  4. package/build/css/components/checkout-payment-details-v2.css +1 -1
  5. package/build/css/homepage-main.css +1 -1
  6. package/build/css/kitchen-plp-main.css +1 -1
  7. package/build/css/main.css +1 -1
  8. package/build/css/my-account-main-v2.css +1 -1
  9. package/build/css/my-account-main.css +1 -1
  10. package/build/css/pages/checkout-new.css +1 -1
  11. package/build/css/pages/checkout.css +1 -1
  12. package/build/css/pages/page_checkout_delivery-new.css +1 -1
  13. package/build/css/pages/page_products-list-combined.css +1 -1
  14. package/build/css/pages/page_products-list.css +1 -1
  15. package/build/css/pages/page_shopping-cart-v2.css +1 -1
  16. package/build/css/pdp-main-before-combine.css +1 -1
  17. package/build/css/pdp-main-critical.css +1 -1
  18. package/build/css/pdp-main-non-critical.css +1 -1
  19. package/build/css/pdp-main.css +1 -1
  20. package/build/css/plp-main.css +1 -1
  21. package/build/css/store-locator-main.css +1 -1
  22. package/build/img/payment/checkout/giftcard.svg +28 -0
  23. package/build/img/payment/footer/giftcard.svg +28 -0
  24. package/build/js/basket.min.js +1 -1
  25. package/build/js/checkout.min.js +1 -1
  26. package/build/js/emulation.min.js +56 -178
  27. package/build/js/gift-cards.min.js +1 -1
  28. package/build/js/merged-checkout.min.js +1 -1
  29. package/build/js/mini-basket-slider.min.js +1 -1
  30. package/build/js/page/basket/mini-basket-total.js +2 -17
  31. package/build/js/page/checkout-payment-details.js +176 -79
  32. package/build/js/page/components/gift-cards.js +701 -357
  33. package/build/js/page/components/order-summary.js +0 -35
  34. package/build/js/pdp.bundle.min.js +1 -2
  35. package/build/js/toggle-password-visibility.min.js +1 -0
  36. package/package.json +3 -1
  37. package/src/components/base/button.hbs +1 -1
  38. package/src/components/card_product_banner_v2.hbs +1 -4
  39. package/src/components/card_sponsor_banner.hbs +1 -4
  40. package/src/components/checkout_order-summary-new.hbs +7 -10
  41. package/src/components/checkout_payment-new.hbs +31 -8
  42. package/src/components/click-and-collect-modal.hbs +14 -0
  43. package/src/components/date-selection.hbs +1 -1
  44. package/src/components/delivery-types.hbs +3 -11
  45. package/src/components/gift-cards.hbs +8 -15
  46. package/src/components/injected-content.hbs +1 -6
  47. package/src/components/modal.hbs +1 -1
  48. package/src/components/order-summary.hbs +2 -2
  49. package/src/components/payments.hbs +6 -5
  50. package/src/components/price-block-v2.hbs +214 -211
  51. package/src/data/data_checkout-giftcards.json +7 -0
  52. package/src/data/data_delivery-address-v2.json +5 -1
  53. package/src/data/data_payments-checkout.json +4 -0
  54. package/src/data/data_search-results_v2.json +2 -9
  55. package/src/data/data_spr_injected_content.json +0 -4
  56. package/src/data/footer_menu.json +4 -0
  57. package/src/img/payment/checkout/giftcard.svg +28 -0
  58. package/src/img/payment/footer/giftcard.svg +28 -0
  59. package/src/js/emulation/checkout-delivery-details.js +25 -28
  60. package/src/js/emulation/custom-slider-emulation.js +1 -1
  61. package/src/js/emulation/date-selection.js +24 -136
  62. package/src/js/emulation/forms.js +0 -12
  63. package/src/js/emulation/mini-basket-data.js +3 -3
  64. package/src/js/emulation/switchCalendar.js +8 -12
  65. package/src/js/page/basket/mini-basket-total.js +2 -17
  66. package/src/js/page/checkout-payment-details.js +176 -79
  67. package/src/js/page/components/gift-cards.js +701 -357
  68. package/src/js/page/components/order-summary.js +0 -35
  69. package/src/page_checkout_confirmation-gift-card.html +339 -0
  70. package/src/page_checkout_next-day-delivery-details.html +2 -2
  71. package/src/page_checkout_payment-details-v2-asm.html +1 -1
  72. package/src/page_checkout_payment-details-v2.html +1 -1
  73. package/src/page_checkout_payment-details_with-card-loader.html +1 -1
  74. package/src/page_checkout_payment-details_with-klarna-loader.html +1 -1
  75. package/src/page_checkout_payment-details_with-loader-v2.html +1 -1
  76. package/src/page_checkout_rapid-delivery-details.html +5 -7
  77. package/src/page_klarna_payment-details_with-klarna.html +1 -1
  78. package/src/page_payment-details-with-billie.html +1 -1
  79. package/src/page_payment-details-with-clearpay.html +1 -1
  80. package/src/page_payment-details-with-gift-card.html +2 -2
  81. package/src/page_payment-details_with_apple-pay.html +1 -1
  82. package/src/page_payment-details_with_google-pay.html +1 -1
  83. package/src/page_plp_v2.html +0 -1
  84. package/src/page_product-details-billie.html +2 -0
  85. package/src/page_product-details-clearpay.html +1 -0
  86. package/src/page_product-details-mfe-calculator.html +3 -9
  87. package/src/scss/common/_CTAs.scss +3 -7
  88. package/src/scss/components/_custom-slider.scss +0 -18
  89. package/src/scss/components/_date-selection-add-new-styles.scss +1 -43
  90. package/src/scss/components/_gift-cards.scss +32 -3
  91. package/src/scss/components/_order-summary.scss +12 -25
  92. package/src/scss/components/_payments-checkout.scss +2 -2
  93. package/src/scss/components/_payments-v2.scss +1 -1
  94. package/src/scss/components/_price-block-critical.scss +2 -2
  95. package/src/scss/components/_price-block.scss +4 -14
  96. package/src/scss/components/card-product-banner.scss +0 -8
  97. package/src/scss/helpers/_CTAs.scss +5 -15
  98. package/src/scss/helpers/_variables.scss +2 -0
  99. package/src/scss/pages/_checkout-confirmation-new.scss +86 -2
  100. package/src/scss/pages/page_checkout_delivery-new.scss +0 -36
  101. package/src/scss/pages/page_products-list-combined.scss +1 -8
  102. package/src/scss/pages/page_products-list.scss +1 -8
  103. package/src/scss/pages/page_shopping-cart-v2.scss +10 -34
  104. package/src/scss/pdp-main.scss +0 -1
  105. package/src/sitemap.html +6 -0
  106. package/build/js/page/components/notify-me.js +0 -99
  107. package/build/js/wickes-dc.js +0 -1
  108. package/src/components/modals/notify-me-modal.hbs +0 -76
  109. package/src/components/sponsor-top-banner.hbs +0 -10
  110. package/src/js/emulation/notify-me.js +0 -9
  111. package/src/js/page/components/notify-me.js +0 -99
  112. package/src/scss/components/_notify-me-modal.scss +0 -139
@@ -10,22 +10,110 @@ Wick.CheckoutPaymentDetails = (function () {
10
10
  buttonName: 'btn-enter-details',
11
11
  };
12
12
 
13
- const elements = {
14
- $billieRepaymentTerms: $('.js-billie-repayment-terms'),
15
- $billieInfoBlock: $('.checkout-payment-details__billie'),
16
- $billieInfo: $('.checkout-payment-details__billie .billie-info'),
17
- $wrapperPaymentInput: $('.checkout-payment-details__row'),
18
- paymentInputName: '[name=payment-method]',
19
- $cardDetails: $('.checkout-payment-details__card-details'),
20
- $placeOrder: $('.checkout-payment-details__place-order'),
21
- $billingAddress: $('.billing-address'),
22
- hiddenCardDetailsClass: 'checkout-payment-details__card-details_hidden',
23
- $billieBusiness: $('[data-billie-business]'),
24
- businessTypeName: '[name="businessType"]',
25
- $unregisteredFields: $('#unregistered-fields'),
26
- $registeredFields: $('#registered-fields'),
27
- hiddenClass: 'd-none',
28
- };
13
+ const elements = {
14
+ $billieRepaymentTerms: $('.js-billie-repayment-terms'),
15
+ $billieWidget: $('.checkout-payment-details__billie[data-billie]'),
16
+ $wrapperPaymentInput: $('.checkout-payment-details__row'),
17
+ paymentInputName: '[name=payment-method]',
18
+ $cardDetails: $('.checkout-payment-details__card-details'),
19
+ $placeOrder: $('.checkout-payment-details__place-order'),
20
+ $billingAddress: $('.billing-address'),
21
+ hiddenCardDetailsClass: 'checkout-payment-details__card-details_hidden',
22
+ $billieBusiness: $('[data-billie-business]'),
23
+ businessTypeName: '[name="businessType"]',
24
+ $unregisteredFields: $('#unregistered-fields'),
25
+ $registeredFields: $('#registered-fields'),
26
+ hiddenClass: 'd-none',
27
+ $giftcardToggle: $('#giftcard-toggle'),
28
+ $giftcardPanel: $('#giftcard-inline'),
29
+ giftcardDisabledClass: 'giftcard-toggle--disabled',
30
+ giftcardRoot: '.giftcard',
31
+ giftcardHint: '.giftcard-hint',
32
+ giftcardNumber: 'input[name="giftcard-number"]',
33
+ giftcardPin: 'input[name="giftcard-pin"]',
34
+ }
35
+
36
+ function setGiftcardToggleEnabled(isEnabled) {
37
+ const $toggle = elements.$giftcardToggle;
38
+ const $panel = elements.$giftcardPanel;
39
+ const $giftcard = $toggle.closest('.giftcard');
40
+
41
+ if (!$toggle.length) {
42
+ return;
43
+ }
44
+
45
+ $giftcard.toggleClass('giftcard--disabled', !isEnabled);
46
+
47
+ if (isEnabled) {
48
+ $toggle
49
+ .attr('aria-disabled', 'false')
50
+ .attr('tabindex', '0')
51
+ .css('pointer-events', '');
52
+ } else {
53
+ if ($panel && $panel.length) $panel.prop('hidden', true);
54
+
55
+ $toggle
56
+ .attr('aria-disabled', 'true')
57
+ .attr('tabindex', '-1')
58
+ .css('pointer-events', 'none')
59
+ .attr('aria-expanded', 'false')
60
+ .show();
61
+
62
+ $giftcard.find('.giftcard-hint').show();
63
+ }
64
+ }
65
+
66
+
67
+ function resetGiftcardToDefault() {
68
+ const {
69
+ $giftcardToggle: $toggle,
70
+ $giftcardPanel: $panel,
71
+ giftcardRoot,
72
+ giftcardHint,
73
+ giftcardNumber,
74
+ giftcardPin,
75
+ } = elements;
76
+
77
+ if (!$toggle.length) {
78
+ return;
79
+ }
80
+
81
+ const $giftcard = $toggle.closest(giftcardRoot);
82
+
83
+ const $hint = $giftcard.find(giftcardHint);
84
+ const $number = $giftcard.find(giftcardNumber);
85
+ const $pin = $giftcard.find(giftcardPin);
86
+
87
+ if ($panel.length) $panel.prop('hidden', true);
88
+
89
+ $toggle.attr('aria-expanded', 'false').show();
90
+ $hint.show();
91
+
92
+ if (window.Wick?.GiftCard?.resetForm) {
93
+ Wick.GiftCard.resetForm($giftcard);
94
+ return;
95
+ }
96
+
97
+ $number.val('');
98
+ $pin.val('');
99
+ }
100
+
101
+ function syncGiftcardAvailability(checkedMethod) {
102
+ const enable = checkedMethod === 'card';
103
+
104
+ if (!enable) {
105
+ const $giftcard = elements.$giftcardToggle.closest(elements.giftcardRoot);
106
+ if (window.Wick?.GiftCard?.collapsePreserveState) {
107
+ Wick.GiftCard.collapsePreserveState($giftcard);
108
+ } else {
109
+ if (elements.$giftcardPanel.length) elements.$giftcardPanel.prop('hidden', true);
110
+ elements.$giftcardToggle.attr('aria-expanded', 'false').show();
111
+ $giftcard.find(elements.giftcardHint).show();
112
+ }
113
+ }
114
+
115
+ setGiftcardToggleEnabled(enable);
116
+ }
29
117
 
30
118
  function preparePage() {
31
119
  var modalOpened = $('.modal.show').length;
@@ -57,29 +145,36 @@ Wick.CheckoutPaymentDetails = (function () {
57
145
  paymentMethods.forEach((method) => {
58
146
  $(`[data-${method}]`).toggle(checkedMethod === method);
59
147
  });
148
+ const $selected = $(`[data-${checkedMethod}]`);
149
+ if ($selected.length) {
150
+ $selected.show();
151
+ }
60
152
  }
61
153
 
62
- function resetAllCheckoutForms(keepPaymentMethod) {
63
- const $container = elements.$wrapperPaymentInput.closest('.checkout-payment-details');
64
- if (!$container.length) return;
154
+ function resetAllCheckoutForms(keepPaymentMethod) {
155
+ const $container = elements.$wrapperPaymentInput.closest('.checkout-payment-details');
156
+ if (!$container.length) return;
157
+ const $giftcardScope = $container.find(elements.giftcardRoot);
158
+ const $exclude = $giftcardScope.find(':input');
65
159
 
66
- $container.find('form').each(function () {
67
- if (Wick.Forms && typeof Wick.Forms.clearValidationErrors === 'function') {
68
- Wick.Forms.clearValidationErrors(this);
69
- }
70
- });
160
+ $container.find('form').each(function() {
161
+ if ($(this).closest(elements.giftcardRoot).length) return;
71
162
 
72
- $container
73
- .find(
74
- 'input[type="text"], input[type="email"], input[type="tel"], input[type="number"], input[type="password"], textarea'
75
- )
76
- .val('');
163
+ if (Wick.Forms && typeof Wick.Forms.clearValidationErrors === 'function') {
164
+ Wick.Forms.clearValidationErrors(this);
165
+ }
166
+ });
77
167
 
78
- $container.find('select').each(function () {
79
- this.selectedIndex = 0;
80
- });
168
+ $container
169
+ .find('input[type="text"], input[type="email"], input[type="tel"], input[type="number"], input[type="password"], textarea')
170
+ .not($exclude)
171
+ .val('');
81
172
 
82
- $container.find('input[type="checkbox"]').prop('checked', false);
173
+ $container.find('select').not($exclude).each(function() {
174
+ this.selectedIndex = 0;
175
+ });
176
+
177
+ $container.find('input[type="checkbox"]').not($exclude).prop('checked', false);
83
178
 
84
179
  $container.find('input[type="radio"]').each(function () {
85
180
  const $radio = $(this);
@@ -222,34 +317,36 @@ Wick.CheckoutPaymentDetails = (function () {
222
317
  buttonElement && buttonElement.text(buttonText);
223
318
  }
224
319
 
225
- function clearInputFields() {
226
- elements.$billingAddress.find('input.tbx').val('');
227
- }
228
-
229
- function showPlaceOrder() {
230
- elements.$placeOrder.removeClass(elements.hiddenClass);
231
- }
232
-
233
- function hidePlaceOrder() {
234
- elements.$placeOrder.addClass(elements.hiddenClass);
235
- }
236
-
237
- function initBillieBusinessTypeToggle() {
238
- $(document).on('change', elements.businessTypeName, function () {
239
- toggleBusinessTypeFields($(this).val());
240
- });
241
- }
242
-
243
- function forceReflow($element) {
244
- if (!$element.length) return;
245
- void $element[0].offsetHeight;
246
- $(window).trigger('resize');
247
- }
248
-
249
- function init() {
250
- const paymentMethods = getPaymentMethods();
251
- initBillieBusinessTypeToggle();
252
- hideBillieBusiness();
320
+ function clearInputFields() {
321
+ elements.$billingAddress.find('input.tbx').val('');
322
+ }
323
+
324
+ function showPlaceOrder() {
325
+ elements.$placeOrder.removeClass(elements.hiddenClass);
326
+ }
327
+
328
+ function hidePlaceOrder() {
329
+ elements.$placeOrder.addClass(elements.hiddenClass);
330
+ }
331
+
332
+ function initBillieBusinessTypeToggle() {
333
+ $(document).on('change', elements.businessTypeName, function () {
334
+ toggleBusinessTypeFields($(this).val());
335
+ });
336
+ }
337
+
338
+ function forceReflow($element) {
339
+ if (!$element.length) return;
340
+ void $element[0].offsetHeight;
341
+ $(window).trigger('resize');
342
+ }
343
+
344
+ function init() {
345
+ const paymentMethods = getPaymentMethods();
346
+ const initialMethod = $(elements.paymentInputName + ':checked').val() || 'card';
347
+ syncGiftcardAvailability(initialMethod);
348
+ initBillieBusinessTypeToggle();
349
+ hideBillieBusiness();
253
350
 
254
351
  $(document).on('change', 'input[name="repaymentTerms"]', function () {
255
352
  const currentMethod = $(elements.paymentInputName + ':checked').val();
@@ -269,27 +366,27 @@ Wick.CheckoutPaymentDetails = (function () {
269
366
  elements.$wrapperPaymentInput.on('change', elements.paymentInputName, function () {
270
367
  const checkedMethod = $(this).val();
271
368
 
272
- if (prevPaymentMethod && prevPaymentMethod !== checkedMethod) {
273
- resetAllCheckoutForms(checkedMethod);
274
- } else {
275
- const form = $(this).closest('form')[0];
276
- form &&
277
- Wick.Forms &&
278
- Wick.Forms.clearValidationErrors &&
279
- Wick.Forms.clearValidationErrors(form);
280
- }
369
+ togglePaymentBlocks(paymentMethods, checkedMethod)
370
+ changeDetailsBlock(checkedMethod)
371
+ syncGiftcardAvailability(checkedMethod);
281
372
 
282
- togglePaymentBlocks(paymentMethods, checkedMethod);
283
- changeDetailsBlock(checkedMethod);
373
+ if (prevPaymentMethod && prevPaymentMethod !== checkedMethod) {
374
+ resetAllCheckoutForms(checkedMethod);
375
+ } else {
376
+ const form = $(this).closest('form')[0];
377
+ form && Wick.Forms && Wick.Forms.clearValidationErrors && Wick.Forms.clearValidationErrors(form);
378
+ }
284
379
 
285
- prevPaymentMethod = checkedMethod;
286
- });
380
+ prevPaymentMethod = checkedMethod;
381
+ });
287
382
 
288
- $('.btn-new-card').on('click', function () {
289
- $('[data-new-card]').show();
290
- $('[data-existing-card]').hide();
291
- return false;
292
- });
383
+ $('.btn-new-card').on('click', function() {
384
+ elements.$cardDetails.removeClass(elements.hiddenCardDetailsClass);
385
+
386
+ $('[data-new-card]').show();
387
+ $('[data-existing-card]').hide();
388
+ return false;
389
+ });
293
390
 
294
391
  $('.btn-back-to-existing-card').on('click', function () {
295
392
  $('[data-new-card]').hide();