wickes-css2 2.94.0-develop.13 → 2.94.0-develop.15

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 (75) hide show
  1. package/Readme.md +2 -2
  2. package/build/css/main.css +1 -1
  3. package/build/css/pages/checkout-new.css +1 -1
  4. package/build/css/pages/checkout.css +1 -1
  5. package/build/css/pages/page_checkout_delivery-new.css +1 -1
  6. package/build/css/pages/page_shopping-cart-v2.css +1 -1
  7. package/build/css/pages/tradePro-signup.css +1 -1
  8. package/build/css/pdp-main-non-critical.css +1 -1
  9. package/build/js/basket.min.js +2 -2
  10. package/build/js/bundle.min.js +1 -1
  11. package/build/js/checkout.min.js +2 -2
  12. package/build/js/emulation.min.js +2 -2
  13. package/build/js/general.bundle.min.js +1 -1
  14. package/build/js/merged-checkout.min.js +2 -2
  15. package/build/js/page/basket/summary-mobile.js +22 -0
  16. package/build/js/page/basket-v2.js +13 -0
  17. package/build/js/page/components/order-summary.js +8 -1
  18. package/build/js/page/components/sticky-order-observer.js +49 -0
  19. package/build/js/page/components/voucher.js +1 -1
  20. package/build/js/pdp.bundle.min.js +1 -1
  21. package/build/js/plp.bundle.min.js +1 -1
  22. package/build/js/project-list.min.js +1 -1
  23. package/package.json +1 -1
  24. package/src/components/checkout-action.hbs +14 -11
  25. package/src/components/checkout-voucher-accordion.hbs +15 -0
  26. package/src/components/checkout_order-summary-new.hbs +5 -3
  27. package/src/components/checkout_voucher_large.hbs +20 -16
  28. package/src/components/date-selection.hbs +1 -1
  29. package/src/components/order-item.hbs +3 -3
  30. package/src/components/order-summary.hbs +91 -56
  31. package/src/components/partner-signup-form.hbs +4 -0
  32. package/src/components/summary-mobile-bar.hbs +17 -0
  33. package/src/data/data_delivery-address-v2.json +1 -1
  34. package/src/data/data_shopping-cart-v2.json +24 -0
  35. package/src/js/components/general/is-trade-pro.js +15 -1
  36. package/src/js/emulation/basket-data.js +2 -2
  37. package/src/js/page/basket/summary-mobile.js +22 -0
  38. package/src/js/page/basket-v2.js +13 -0
  39. package/src/js/page/components/order-summary.js +8 -1
  40. package/src/js/page/components/sticky-order-observer.js +49 -0
  41. package/src/js/page/components/voucher.js +1 -1
  42. package/src/layouts/basket-new.hbs +1 -1
  43. package/src/layouts/checkout-new.hbs +1 -0
  44. package/src/page_checkout_confirmation-new-marketing-consent-error.html +0 -2
  45. package/src/page_checkout_delivery-address-customer-journey.html +0 -5
  46. package/src/page_checkout_delivery-address-v2.html +0 -4
  47. package/src/page_checkout_delivery-details-v2-asm.html +1 -5
  48. package/src/page_checkout_delivery-details-v2-calendar-message.html +0 -3
  49. package/src/page_checkout_delivery-details-v2-oos.html +0 -3
  50. package/src/page_checkout_delivery-details-v2-wisdom-not-available.html +0 -5
  51. package/src/page_checkout_delivery-details-v2-wisdom.html +0 -5
  52. package/src/page_checkout_delivery-details-with-loader-v2.html +0 -3
  53. package/src/page_checkout_delivery-details_guest-new.html +0 -5
  54. package/src/page_checkout_delivery_address-asm-new.html +0 -4
  55. package/src/page_checkout_next-day-delivery-details.html +0 -6
  56. package/src/page_checkout_payment-details-v2.html +1 -1
  57. package/src/page_checkout_payment-details_guest-with-checkout-journey.html +0 -2
  58. package/src/page_checkout_payment-details_login-with-checkout-journey.html +0 -2
  59. package/src/page_checkout_rapid-delivery-details.html +0 -6
  60. package/src/page_klarna_payment-details_with-klarna.html +3 -6
  61. package/src/page_payment-details-with-clearpay.html +1 -1
  62. package/src/page_payment-details_with_apple-pay.html +1 -1
  63. package/src/page_payment-details_with_google-pay.html +1 -1
  64. package/src/page_shopping-cart-v2.html +6 -16
  65. package/src/page_tradePro-signup.html +1 -1
  66. package/src/scss/components/_checkout-action.scss +132 -6
  67. package/src/scss/components/_marketing-preferences.scss +1 -1
  68. package/src/scss/components/_order-summary.scss +329 -178
  69. package/src/scss/components/_sticky-element-appearance.scss +25 -0
  70. package/src/scss/helpers/_variables.scss +2 -0
  71. package/src/scss/main.scss +1 -0
  72. package/src/scss/pages/_checkout-widget.scss +137 -28
  73. package/src/scss/pages/page_checkout_delivery-new.scss +119 -10
  74. package/src/scss/pages/page_shopping-cart-v2.scss +137 -34
  75. package/src/scss/pages/tradePro-signup.scss +27 -0
@@ -0,0 +1,22 @@
1
+ const summaryMobileEl = {
2
+ summaryAside: '.summary__aside',
3
+ backToTop : '#back-to-top',
4
+ canDisplayPayPal: '#canDisplayPayPalOnBasketPage',
5
+ };
6
+
7
+ export function addClassToSummaryAside(data) {
8
+ const payPalEnabled = data?.paymentInfos?.payPalEnabled;
9
+ const clickAndCollectOnly = data.clickAndCollectOnly;
10
+ const canDisplayPayPal = $(summaryMobileEl.canDisplayPayPal).val() === 'true';
11
+ const isPayPalAllowed = payPalEnabled && clickAndCollectOnly && canDisplayPayPal;
12
+ const $aside = $(summaryMobileEl.summaryAside);
13
+ const $backToTop = $(summaryMobileEl.backToTop);
14
+
15
+ if (isPayPalAllowed === false) {
16
+ $aside.addClass('single-button');
17
+ $backToTop.addClass('single-button');
18
+ } else {
19
+ $aside.removeClass('single-button');
20
+ $backToTop.removeClass('single-button');
21
+ }
22
+ }
@@ -29,6 +29,8 @@ import {
29
29
  } from './basket/session-sync'
30
30
  import {displayEnergyEfficiency} from "./basket/display-energy-efficiency";
31
31
  import {appendLoader, hideLoader, showLoader} from "./utils/loader";
32
+ import {addClassToSummaryAside} from "./basket/summary-mobile";
33
+ import { initStickyObserver } from './components/sticky-order-observer';
32
34
 
33
35
  var Wick = window.Wick || {};
34
36
  Wick.BasketPage = {
@@ -384,6 +386,7 @@ Wick.BasketPage = {
384
386
  } else {
385
387
  if (initial) {
386
388
  Wick.BasketPage.getCartEntries(Wick.BasketData.updateCart);
389
+ addClassToSummaryAside(Wick.BasketData.updateCart);
387
390
  const initialTotalPrice = Wick.BasketData.updateCart.totalPrice.value;
388
391
  updateClearpayVisibility(initialTotalPrice);
389
392
  } else {
@@ -405,6 +408,7 @@ Wick.BasketPage = {
405
408
  updateClearpayPlacements(Wick.BasketData.updateCart.totalPrice.value);
406
409
  updateClearpayVisibility(Wick.BasketData.updateCart.totalPrice.value);
407
410
  Wick.BasketPage.addPotentialPromo(Wick.BasketData.updateCart);
411
+ addClassToSummaryAside(Wick.BasketData.updateCart);
408
412
  Wick.BasketPage.getCartEntries(Wick.BasketData.updateCart);
409
413
  Wick.BasketPage.checkProductArrays(Wick.BasketData.updateCart) || Wick.BasketPage.removeOrderItem(repaintData);
410
414
  updateBasketSession();
@@ -415,6 +419,7 @@ Wick.BasketPage = {
415
419
  },
416
420
  updateCartAction: function (response, info) {
417
421
  updateClearpayVisibility(response.totalPrice.value)
422
+ addClassToSummaryAside(response)
418
423
  if (info.initial) {
419
424
  Wick.BasketPage.getCartEntries(response);
420
425
  } else {
@@ -1257,6 +1262,9 @@ Wick.BasketPage = {
1257
1262
  $(Wick.BasketPage.el.content).find(quantityButton).prop('disabled', false);
1258
1263
  }
1259
1264
  };
1265
+
1266
+ $(document).on('cartUpdate', initStickyObserver);
1267
+
1260
1268
  $(document).ready(function () {
1261
1269
  function init() {
1262
1270
 
@@ -1291,6 +1299,11 @@ $(document).ready(function () {
1291
1299
 
1292
1300
  $(Wick.BasketPage.el.voucherRemove).unbind('click');
1293
1301
  Wick.BasketPage.paintActionButton();
1302
+ initStickyObserver(
1303
+ $('[data-sticky-observe]'),
1304
+ $('[data-sticky-element]'),
1305
+ '.summary__aside.collapse.show'
1306
+ );
1294
1307
  Wick.BasketPage.updateCart(...Array(3), true);
1295
1308
  setDefaultCharityValue();
1296
1309
  if (!$(Wick.BasketPage.el.loader).length) {
@@ -1,4 +1,5 @@
1
1
  import {updateDiscount} from "./discounts";
2
+ import {addClassToSummaryAside} from "../basket/summary-mobile";
2
3
 
3
4
  const osEl = {
4
5
  $summarySection: $('.summary'),
@@ -9,9 +10,9 @@ const osEl = {
9
10
  itemFree: '.checkout-widget__item-free',
10
11
  itemDeficit: '.checkout-widget__item-deficit',
11
12
  summaryDelivery: '.checkout-widget__item-delivery',
13
+ summaryMobileTotal: '.summary__mobile-bar-total',
12
14
  }
13
15
 
14
-
15
16
  export function updateOrderSummary(data, equalMap, isVoucher) {
16
17
  equalMap.forEach((obj) => {
17
18
  if ($(obj.item).length) {
@@ -32,9 +33,12 @@ export function updateOrderSummary(data, equalMap, isVoucher) {
32
33
  }
33
34
  })
34
35
 
36
+ const value = data.totalPrice?.formattedValue || data.total;
37
+
35
38
  updateDiscount(data, isVoucher);
36
39
  hideUnusedDeliveryTypeCost(data, isVoucher);
37
40
  calculateFreeDelivery(data);
41
+ updateSummaryMobileBarTotal(value);
38
42
  }
39
43
 
40
44
  function createCheckoutWidgetItem(obj) {
@@ -97,3 +101,6 @@ function calculateFreeDelivery(data) {
97
101
  })
98
102
  }
99
103
 
104
+ function updateSummaryMobileBarTotal(formattedValue) {
105
+ $(osEl.summaryMobileTotal).text(formattedValue);
106
+ }
@@ -0,0 +1,49 @@
1
+ export function initStickyObserver(observedElements, stickyElements, collapseSelector) {
2
+ let io;
3
+
4
+ const $observed = observedElements instanceof jQuery
5
+ ? observedElements
6
+ : $(observedElements);
7
+
8
+ const $sticky = stickyElements instanceof jQuery
9
+ ? stickyElements
10
+ : $(stickyElements);
11
+
12
+ if (!$observed.length || !$sticky.length) return;
13
+
14
+ function toggle(hide) {
15
+ $sticky.toggleClass('is-hidden', hide);
16
+ $('body').toggleClass('summary-hidden', hide);
17
+ if (hide) {
18
+ $(collapseSelector).collapse('hide');
19
+ }
20
+ }
21
+
22
+ if ('IntersectionObserver' in window) {
23
+ io = new IntersectionObserver(
24
+ entries => {
25
+ const anyInView = entries.some(e => e.isIntersecting);
26
+ toggle(anyInView);
27
+ },
28
+ { rootMargin: '0px 0px -20% 0px', threshold: 0 }
29
+ );
30
+ $observed.each((_, el) => io.observe(el));
31
+ } else {
32
+ // Fallback for older browsers
33
+ function check() {
34
+ let anyInView = false;
35
+ $observed.each(function () {
36
+ const r = this.getBoundingClientRect();
37
+ if (r.top < window.innerHeight * 0.8 && r.bottom > 0) {
38
+ anyInView = true;
39
+ return false; // break
40
+ }
41
+ });
42
+ toggle(anyInView);
43
+ }
44
+ $(window)
45
+ .off('scroll.sticky resize.sticky')
46
+ .on('scroll.sticky resize.sticky', check);
47
+ check();
48
+ }
49
+ }
@@ -15,7 +15,7 @@ const voucherEl = {
15
15
  formInvalid: 'form_invalid',
16
16
  fieldRow: '.form-row[data-row-required]',
17
17
  rowValidationError: 'form-row_validation-error',
18
- voucherHide: '.checkout-voucher-hide',
18
+ voucherHide: 'checkout-voucher-hide',
19
19
  fieldError: '.form-row__error',
20
20
  subtotal: '.checkout-widget__item-bold',
21
21
  vat: '.checkout-widget__item-vat',