wickes-css2 2.111.0-complete-your-project.9 → 2.111.0-develop.2
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.
- package/Readme.md +1 -1
- package/build/css/category-main.css +1 -1
- package/build/css/components/global-search.css +1 -1
- package/build/css/homepage-main.css +1 -1
- package/build/css/kitchen-plp-main.css +1 -1
- package/build/css/main.css +1 -1
- package/build/css/my-account-main-v2.css +1 -1
- package/build/css/my-account-main.css +1 -1
- package/build/css/pages/page_personal-details.css +1 -1
- package/build/css/pages/page_product-details-v2.css +1 -1
- package/build/css/pdp-main-before-combine.css +1 -1
- package/build/css/pdp-main-critical.css +1 -1
- package/build/css/pdp-main-non-critical.css +1 -1
- package/build/css/pdp-main.css +1 -1
- package/build/css/plp-main.css +1 -1
- package/build/css/store-locator-main.css +1 -1
- package/build/js/account-hub.min.js +1 -1
- package/build/js/basket.min.js +2 -2
- package/build/js/bundle.min.js +1 -1
- package/build/js/checkout.min.js +2 -2
- package/build/js/emulation.min.js +146 -2870
- package/build/js/general.bundle.min.js +1 -1
- package/build/js/gift-cards.min.js +1 -1
- package/build/js/merged-checkout.min.js +2 -2
- package/build/js/mini-basket-slider.min.js +1 -1
- package/build/js/page/basket-v2.js +11 -18
- package/build/js/page/components/discounts.js +15 -8
- package/build/js/page/components/mini-basket-slider.js +18 -24
- package/build/js/page/components/voucher.js +56 -2
- package/build/js/page/utils/create-count-stepper.js +9 -30
- package/build/js/pdp-count-stepper.min.js +1 -1
- package/build/js/pdp.bundle.min.js +1 -1
- package/build/js/plp.bundle.min.js +1 -1
- package/build/js/project-list.min.js +1 -1
- package/build/js/saving-shopping-list.min.js +1 -1
- package/package.json +1 -1
- package/src/components/base/button.hbs +5 -23
- package/src/components/cart-voucher.hbs +4 -4
- package/src/components/checkout-voucher-remove-modal.hbs +16 -0
- package/src/components/gift-cards.hbs +1 -1
- package/src/components/mini-basket/mini-basket-order-item.hbs +4 -4
- package/src/components/tradepro-discount-banner.hbs +8 -0
- package/src/components/wismo-payment.hbs +50 -7
- package/src/data/data_delivery-address-v2.json +6 -6
- package/src/data/data_discounts.json +6 -6
- package/src/data/data_shopping-cart-v2.json +32 -11
- package/src/data/data_shopping-cart-with-energy.json +12 -12
- package/src/data/data_wismo.json +2 -1
- package/src/elements/checkbox.hbs +1 -8
- package/src/js/components/general/cart-slider.js +6 -19
- package/src/js/components/general/switchVat.js +9 -7
- package/src/js/components/general/tradepro-discount-banner.js +69 -0
- package/src/js/emulation/basket-data.js +11 -1
- package/src/js/emulation/checkout-data.js +3 -0
- package/src/js/emulation/mini-basket-data.js +68 -0
- package/src/js/emulation/mock.js +1 -3098
- package/src/js/emulation/notify-me.js +1 -1
- package/src/js/emulation/tradepro-discount-banner-emulation.js +13 -0
- package/src/js/page/basket-v2.js +11 -18
- package/src/js/page/components/discounts.js +15 -8
- package/src/js/page/components/mini-basket-slider.js +18 -24
- package/src/js/page/components/voucher.js +56 -2
- package/src/js/page/utils/create-count-stepper.js +9 -30
- package/src/layouts/checkout.hbs +1 -0
- package/src/page_basket-energy-efficiency.html +4 -0
- package/src/page_checkout_confirmation-new-marketing-consent-error.html +7 -0
- package/src/page_checkout_confirmation-new-marketing-consent.html +4 -0
- package/src/page_checkout_delivery-address-v2.html +4 -0
- package/src/page_checkout_delivery-details-v2-asm.html +7 -1
- package/src/page_checkout_delivery-details-v2-calendar-message.html +4 -0
- package/src/page_checkout_delivery-details-v2-oos.html +4 -0
- package/src/page_checkout_delivery-details-v2-wisdom-not-available.html +4 -0
- package/src/page_checkout_delivery-details-v2-wisdom.html +4 -0
- package/src/page_checkout_delivery-details-with-loader-v2.html +4 -0
- package/src/page_checkout_delivery-details_guest-new.html +4 -0
- package/src/page_checkout_delivery_address-asm-new.html +4 -0
- package/src/page_checkout_merge-basket-v2.html +6 -3
- package/src/page_checkout_merge-basket-vat-v2.html +6 -1
- package/src/page_checkout_merge-basket-with-energy.html +4 -0
- package/src/page_checkout_next-day-delivery-details.html +4 -0
- package/src/page_checkout_payment-details-v2-asm.html +4 -0
- package/src/page_checkout_payment-details-v2.html +4 -0
- package/src/page_checkout_payment-details_guest-click-collect-icon.html +4 -0
- package/src/page_checkout_payment-details_guest-with-checkout-journey.html +7 -0
- package/src/page_checkout_payment-details_login-with-checkout-journey.html +7 -0
- package/src/page_checkout_payment-details_with-card-loader.html +4 -0
- package/src/page_checkout_payment-details_with-loader-v2.html +4 -0
- package/src/page_checkout_rapid-delivery-details.html +4 -0
- package/src/page_empty-basket-instore.html +4 -0
- package/src/page_homepage-with-global-search-v2-vat.html +1 -0
- package/src/page_instore_progress_bar.html +4 -0
- package/src/page_product-details-banner.html +1 -0
- package/src/page_product-details-big-wins-disabled-delivery.html +1 -0
- package/src/page_product-details-big-wins-non-registered.html +1 -0
- package/src/page_product-details-big-wins-out-nearest.html +1 -0
- package/src/page_product-details-big-wins-unhappy.html +1 -0
- package/src/page_product-details-big-wins.html +1 -0
- package/src/page_product-details-billie.html +1 -0
- package/src/page_product-details-calculator.html +1 -0
- package/src/page_product-details-cashback-v2.html +1 -0
- package/src/page_product-details-clearpay.html +1 -0
- package/src/page_product-details-cnc-error-notification.html +1 -0
- package/src/page_product-details-cnc-success-notification-vat.html +1 -0
- package/src/page_product-details-cnc-success-notification.html +1 -0
- package/src/page_product-details-default-store.html +1 -0
- package/src/page_product-details-energy-efficiency.html +1 -0
- package/src/page_product-details-flooring-with-pr-placeholder.html +1 -0
- package/src/page_product-details-flooring.html +1 -0
- package/src/page_product-details-gallery-actual.html +1 -0
- package/src/page_product-details-mfe-calculator.html +1 -0
- package/src/page_product-details-minimum-v2.html +1 -0
- package/src/page_product-details-mtm-doors.html +1 -0
- package/src/page_product-details-only-clearpay.html +1 -0
- package/src/page_product-details-paint-mixing.html +1 -0
- package/src/page_product-details-saved-pl.html +1 -0
- package/src/page_product-details-tile-steps-klarna-widget-with-method-ids.html +1 -0
- package/src/page_product-details-tile-steps-logout.html +1 -0
- package/src/page_product-details-tile-steps-no-new-project-list.html +1 -0
- package/src/page_product-details-tile-steps-with-klarna.html +1 -0
- package/src/page_product-details-tile-steps.html +1 -0
- package/src/page_product-details-v2.html +1 -0
- package/src/page_product-details-vat.html +1 -0
- package/src/page_product-details-wisdom-mcfc-registered.html +1 -0
- package/src/page_product-details-wisdom-mcfc.html +1 -0
- package/src/page_product-details-wisdom-oos-registered.html +1 -0
- package/src/page_product-details-wisdom-oos.html +1 -0
- package/src/page_product-details-wisdom-registered.html +1 -0
- package/src/page_product-details-wisdom.html +1 -0
- package/src/page_product-details-with-favourite.html +1 -0
- package/src/page_product-details-with-global-search-v2.html +2 -7
- package/src/page_product-details_no-previous-default.html +1 -0
- package/src/page_shopping-cart-registered-v2.html +4 -0
- package/src/page_shopping-cart-v2-vat.html +6 -0
- package/src/page_shopping-cart-v2.html +5 -2
- package/src/page_shopping-cart-v3-instore.html +4 -0
- package/src/page_track-my-order-result.html +0 -1
- package/src/partials/scripts.hbs +0 -1
- package/src/scss/common/_common.scss +0 -1
- package/src/scss/common/_elements.scss +1 -13
- package/src/scss/components/_checkout-voucher-remove-modal.scss +108 -0
- package/src/scss/components/_notifications.scss +5 -86
- package/src/scss/components/_pdp-action-v2-critical.scss +27 -0
- package/src/scss/components/_pdp-action-v2.scss +27 -0
- package/src/scss/components/_tradepro-discount-banner.scss +78 -0
- package/src/scss/components/global-search.scss +11 -0
- package/src/scss/globals/_global-components.scss +1 -0
- package/src/scss/helpers/_variables.scss +0 -1
- package/src/scss/main.scss +2 -0
- package/src/scss/pages/page_product-details-v2.scss +2 -45
- package/src/scss/pdp-main-critical.scss +1 -0
- package/src/scss/pdp-main.scss +1 -1
- package/src/sitemap.html +0 -6
- package/build/js/bloomreach-widget.min.js +0 -1
- package/build/js/page/bloomreach-widget.js +0 -1213
- package/build/js/page/utils/create-loading-button.js +0 -37
- package/build/js/page/utils/create-toast.js +0 -79
- package/build/js/page/utils/custom-dropdown.js +0 -80
- package/src/components/bloomreach/complete-card-dropdown.hbs +0 -47
- package/src/components/bloomreach/complete-card-skeleton.hbs +0 -19
- package/src/components/bloomreach/complete-card.hbs +0 -138
- package/src/components/bloomreach/complete-divider.hbs +0 -3
- package/src/components/bloomreach/complete-summary-skeleton.hbs +0 -12
- package/src/components/bloomreach/complete-summary.hbs +0 -43
- package/src/components/bloomreach/complete-wrapper.hbs +0 -1
- package/src/components/bloomreach/complete-your-project.hbs +0 -21
- package/src/js/emulation/bloomreach-widget-calculations.js +0 -140
- package/src/js/emulation/bloomreach-widget-loading.js +0 -11
- package/src/js/page/bloomreach-widget.js +0 -1213
- package/src/js/page/utils/create-loading-button.js +0 -37
- package/src/js/page/utils/create-toast.js +0 -79
- package/src/js/page/utils/custom-dropdown.js +0 -80
- package/src/page_product-details-bloomreach.html +0 -130
- package/src/scss/common/_loading-button.scss +0 -49
- package/src/scss/components/bloomreach/_bloomreach.scss +0 -3
- package/src/scss/components/bloomreach/_complete-card-dropdown.scss +0 -174
- package/src/scss/components/bloomreach/_complete-card.scss +0 -408
- package/src/scss/components/bloomreach/_complete-your-project.scss +0 -207
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
var Wick = window.Wick || {};
|
|
2
|
+
|
|
3
|
+
$(document).ready(function () {
|
|
4
|
+
var href = window.location.href;
|
|
5
|
+
var isTargetPage =
|
|
6
|
+
href.indexOf('page_homepage-with-global-search-v2-vat') > -1 ||
|
|
7
|
+
href.indexOf('page_checkout_delivery-details-v2-asm') > -1 ||
|
|
8
|
+
href.indexOf('page_product-details-with-global-search-v2') > -1;
|
|
9
|
+
|
|
10
|
+
if (isTargetPage && Wick.TradeProDiscountBanner && !Wick.TradeProDiscountBanner.isOn()) {
|
|
11
|
+
Wick.TradeProDiscountBanner.init();
|
|
12
|
+
}
|
|
13
|
+
});
|
package/src/js/page/basket-v2.js
CHANGED
|
@@ -901,6 +901,11 @@ Wick.BasketPage = {
|
|
|
901
901
|
return '';
|
|
902
902
|
}
|
|
903
903
|
},
|
|
904
|
+
buildPromotion: function (entry) {
|
|
905
|
+
return Wick.VatToggle.isToggleVatAvailable() && entry.displayDescriptionExclusiveVat
|
|
906
|
+
? `<div class="order-item__promo including-vat-inherit">${entry.displayDescription}</div><div class="order-item__promo excluding-vat-inherit">${entry.displayDescriptionExclusiveVat}</div>`
|
|
907
|
+
: `<div class="order-item__promo">${entry.displayDescription}</div>`;
|
|
908
|
+
},
|
|
904
909
|
addPromotions: function (item, data) {
|
|
905
910
|
let arr = [];
|
|
906
911
|
|
|
@@ -910,18 +915,12 @@ Wick.BasketPage = {
|
|
|
910
915
|
if (promo.orderEntryNumber === item.entryNumber) {
|
|
911
916
|
if (arr.length) {
|
|
912
917
|
let duplicate = arr.every((el) => {
|
|
913
|
-
return (
|
|
914
|
-
el !==
|
|
915
|
-
`<div class="order-item__promo">${entry.description}</div>`
|
|
916
|
-
);
|
|
918
|
+
return el !== Wick.BasketPage.buildPromotion(entry);
|
|
917
919
|
});
|
|
918
920
|
|
|
919
|
-
!duplicate ||
|
|
920
|
-
arr.push(
|
|
921
|
-
`<div class="order-item__promo">${entry.description}</div>`
|
|
922
|
-
);
|
|
921
|
+
!duplicate || arr.push(Wick.BasketPage.buildPromotion(entry));
|
|
923
922
|
} else {
|
|
924
|
-
arr.push(
|
|
923
|
+
arr.push(Wick.BasketPage.buildPromotion(entry));
|
|
925
924
|
}
|
|
926
925
|
}
|
|
927
926
|
});
|
|
@@ -933,18 +932,12 @@ Wick.BasketPage = {
|
|
|
933
932
|
if (promo.orderEntryNumber === item.entryNumber && entry.description) {
|
|
934
933
|
if (arr.length) {
|
|
935
934
|
let duplicate = arr.every((el) => {
|
|
936
|
-
return (
|
|
937
|
-
el !==
|
|
938
|
-
`<div class="order-item__promo">${entry.description}</div>`
|
|
939
|
-
);
|
|
935
|
+
return el !== Wick.BasketPage.buildPromotion(entry);
|
|
940
936
|
});
|
|
941
937
|
|
|
942
|
-
!duplicate ||
|
|
943
|
-
arr.push(
|
|
944
|
-
`<div class="order-item__promo">${entry.description}</div>`
|
|
945
|
-
);
|
|
938
|
+
!duplicate || arr.push(Wick.BasketPage.buildPromotion(entry));
|
|
946
939
|
} else {
|
|
947
|
-
arr.push(
|
|
940
|
+
arr.push(Wick.BasketPage.buildPromotion(entry));
|
|
948
941
|
}
|
|
949
942
|
}
|
|
950
943
|
});
|
|
@@ -17,10 +17,10 @@ export function updateDiscount(data, isVoucher) {
|
|
|
17
17
|
if (isVoucher) {
|
|
18
18
|
promotions.forEach((discountItem) => {
|
|
19
19
|
osEl.$discountList().append(() => {
|
|
20
|
-
if (discountItem.usedCouponCode && discountItem.
|
|
20
|
+
if (discountItem.usedCouponCode && discountItem.displayDescription) {
|
|
21
21
|
return `
|
|
22
22
|
<li data-coupon-code="${discountItem.usedCouponCode}">
|
|
23
|
-
${discountItem
|
|
23
|
+
${buildDescriptionHtml(discountItem)}
|
|
24
24
|
<span class="icon checkout-widget__voucher-remove">
|
|
25
25
|
<span class="fas fa-times"></span>
|
|
26
26
|
</span>
|
|
@@ -28,8 +28,8 @@ export function updateDiscount(data, isVoucher) {
|
|
|
28
28
|
`;
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
if (discountItem.
|
|
32
|
-
return `<li>${discountItem
|
|
31
|
+
if (discountItem.displayDescription) {
|
|
32
|
+
return `<li>${buildDescriptionHtml(discountItem)}</li>`;
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
return '';
|
|
@@ -46,20 +46,27 @@ export function updateDiscount(data, isVoucher) {
|
|
|
46
46
|
|
|
47
47
|
function appendOrderPromotions(discountObj) {
|
|
48
48
|
if (!_.isEmpty(discountObj)) {
|
|
49
|
-
if (discountObj.usedCouponCode && discountObj.
|
|
49
|
+
if (discountObj.usedCouponCode && discountObj.displayDescription) {
|
|
50
50
|
osEl.$discountList().append(createRemoveCouponItem(discountObj));
|
|
51
|
-
} else if (discountObj.
|
|
51
|
+
} else if (discountObj.displayDescription) {
|
|
52
52
|
osEl.$discountList().append(function () {
|
|
53
|
-
return `<li>${discountObj
|
|
53
|
+
return `<li>${buildDescriptionHtml(discountObj)}</li>`;
|
|
54
54
|
});
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
+
function buildDescriptionHtml(obj) {
|
|
60
|
+
if (Wick.VatToggle.isToggleVatAvailable() && obj.displayDescriptionExclusiveVat) {
|
|
61
|
+
return `<span class="including-vat-inherit">${obj.displayDescription}</span><span class="excluding-vat-inherit">${obj.displayDescriptionExclusiveVat}</span>`;
|
|
62
|
+
}
|
|
63
|
+
return obj.displayDescription;
|
|
64
|
+
}
|
|
65
|
+
|
|
59
66
|
function createRemoveCouponItem(obj) {
|
|
60
67
|
return `
|
|
61
68
|
<li data-coupon-code="${obj.usedCouponCode}">
|
|
62
|
-
${obj
|
|
69
|
+
${buildDescriptionHtml(obj)}
|
|
63
70
|
<span class="icon checkout-widget__voucher-remove">
|
|
64
71
|
<span class="fas fa-times"></span>
|
|
65
72
|
</span>
|
|
@@ -33,7 +33,7 @@ Handlebars.registerHelper('removeFirst', function (str, remove) {
|
|
|
33
33
|
});
|
|
34
34
|
|
|
35
35
|
Handlebars.registerHelper('isToggleVatAvailable', function () {
|
|
36
|
-
return
|
|
36
|
+
return !!window.ACC?.app?.isVatToggleAvailable;
|
|
37
37
|
});
|
|
38
38
|
|
|
39
39
|
var Wick = window.Wick || {};
|
|
@@ -439,6 +439,15 @@ Wick.MiniBasketSliderFE = {
|
|
|
439
439
|
Wick.MiniBasketSliderFE.addPromotions
|
|
440
440
|
);
|
|
441
441
|
},
|
|
442
|
+
buildPromoHtml: function (entry) {
|
|
443
|
+
const desc = entry.displayDescription;
|
|
444
|
+
const descExc = entry.displayDescriptionExclusiveVat;
|
|
445
|
+
const isVatAvailable = !!window.ACC?.app?.isVatToggleAvailable;
|
|
446
|
+
if (isVatAvailable && descExc) {
|
|
447
|
+
return `<div class="products__promo"><span class="including-vat-inherit">${desc}</span><span class="excluding-vat-inherit">${descExc}</span></div>`;
|
|
448
|
+
}
|
|
449
|
+
return `<div class="products__promo">${desc}</div>`;
|
|
450
|
+
},
|
|
442
451
|
addPromotions: function (item, data) {
|
|
443
452
|
let arr = [];
|
|
444
453
|
|
|
@@ -446,17 +455,9 @@ Wick.MiniBasketSliderFE = {
|
|
|
446
455
|
data.potentialProductPromotions.forEach((entry) => {
|
|
447
456
|
entry.consumedEntries.forEach((promo) => {
|
|
448
457
|
if (promo.orderEntryNumber === item.entryNumber) {
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
el !== `<div class="products__promo">${entry.description}</div>`
|
|
453
|
-
);
|
|
454
|
-
});
|
|
455
|
-
|
|
456
|
-
!duplicate ||
|
|
457
|
-
arr.push(`<div class="products__promo">${entry.description}</div>`);
|
|
458
|
-
} else {
|
|
459
|
-
arr.push(`<div class="products__promo">${entry.description}</div>`);
|
|
458
|
+
const html = Wick.MiniBasketSliderFE.buildPromoHtml(entry);
|
|
459
|
+
if (!arr.includes(html)) {
|
|
460
|
+
arr.push(html);
|
|
460
461
|
}
|
|
461
462
|
}
|
|
462
463
|
});
|
|
@@ -465,18 +466,10 @@ Wick.MiniBasketSliderFE = {
|
|
|
465
466
|
data.appliedProductPromotions &&
|
|
466
467
|
data.appliedProductPromotions.forEach((entry) => {
|
|
467
468
|
entry.consumedEntries.forEach((promo) => {
|
|
468
|
-
if (promo.orderEntryNumber === item.entryNumber && entry.
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
el !== `<div class="products__promo">${entry.description}</div>`
|
|
473
|
-
);
|
|
474
|
-
});
|
|
475
|
-
|
|
476
|
-
!duplicate ||
|
|
477
|
-
arr.push(`<div class="products__promo">${entry.description}</div>`);
|
|
478
|
-
} else {
|
|
479
|
-
arr.push(`<div class="products__promo">${entry.description}</div>`);
|
|
469
|
+
if (promo.orderEntryNumber === item.entryNumber && entry.displayDescription) {
|
|
470
|
+
const html = Wick.MiniBasketSliderFE.buildPromoHtml(entry);
|
|
471
|
+
if (!arr.includes(html)) {
|
|
472
|
+
arr.push(html);
|
|
480
473
|
}
|
|
481
474
|
}
|
|
482
475
|
});
|
|
@@ -550,6 +543,7 @@ Wick.MiniBasketSliderFE = {
|
|
|
550
543
|
Wick.MiniBasketSliderFE.showMiniBasketEvent();
|
|
551
544
|
setTimeout(() => {
|
|
552
545
|
Wick.MiniBasketSliderFE.isInitial = false;
|
|
546
|
+
Wick.MiniBasketSliderFE.isMiniBasketLoaded = true;
|
|
553
547
|
}, 100);
|
|
554
548
|
return;
|
|
555
549
|
}
|
|
@@ -77,9 +77,49 @@ function executionVoucherApplying(value, context) {
|
|
|
77
77
|
}
|
|
78
78
|
}
|
|
79
79
|
|
|
80
|
+
let pendingVoucherRemoval = null;
|
|
81
|
+
|
|
80
82
|
export function voucherRemove() {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
+
const voucher = $(this).parent();
|
|
84
|
+
const voucherCode = voucher.attr('data-coupon-code');
|
|
85
|
+
const couponName = getVoucherDisplayName(voucher) || voucherCode;
|
|
86
|
+
const $modal = $('#voucher-remove-popup');
|
|
87
|
+
|
|
88
|
+
if ($modal.length) {
|
|
89
|
+
$modal.find('.modal-box__title').text(`Remove ${couponName} discount?`);
|
|
90
|
+
$modal
|
|
91
|
+
.find('.description')
|
|
92
|
+
.html(
|
|
93
|
+
`Are you sure you want to remove your <span class='voucher-remove-modal__coupon-name'>${couponName} discount</span> from this order? The total cost of your order will increase.`
|
|
94
|
+
);
|
|
95
|
+
pendingVoucherRemoval = { voucherCode, voucher };
|
|
96
|
+
|
|
97
|
+
const scrollPos = $(window).scrollTop();
|
|
98
|
+
if (Wick.Responsive.isTouchDevice()) {
|
|
99
|
+
$modal.one('show.bs.modal', function (e) {
|
|
100
|
+
e.stopPropagation();
|
|
101
|
+
$('body').css({ position: 'fixed', top: -scrollPos, width: '100%' });
|
|
102
|
+
});
|
|
103
|
+
$modal.one('hidden.bs.modal', function () {
|
|
104
|
+
$('body').css({ position: '', top: '', width: '' });
|
|
105
|
+
window.requestAnimationFrame(function () {
|
|
106
|
+
window.scrollTo(0, scrollPos);
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
$modal.modal('show');
|
|
112
|
+
} else {
|
|
113
|
+
voucher.addClass('checkout-widget__voucher-removed').text('Voucher removed');
|
|
114
|
+
voucherRemoveAction(voucherCode, voucher);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
function confirmVoucherRemove() {
|
|
119
|
+
if (!pendingVoucherRemoval) return;
|
|
120
|
+
const { voucherCode, voucher } = pendingVoucherRemoval;
|
|
121
|
+
pendingVoucherRemoval = null;
|
|
122
|
+
$('#voucher-remove-popup').modal('hide');
|
|
83
123
|
voucher.addClass('checkout-widget__voucher-removed').text('Voucher removed');
|
|
84
124
|
voucherRemoveAction(voucherCode, voucher);
|
|
85
125
|
}
|
|
@@ -115,6 +155,7 @@ function executionVoucherRemoving(data) {
|
|
|
115
155
|
);
|
|
116
156
|
updateClearpayPlacements(data.total);
|
|
117
157
|
updateClearpayVisibility(data.total);
|
|
158
|
+
Wick.BasketPage && Wick.BasketPage.updateCart(true);
|
|
118
159
|
}
|
|
119
160
|
|
|
120
161
|
function applyVoucher(data, context) {
|
|
@@ -131,6 +172,7 @@ function applyVoucher(data, context) {
|
|
|
131
172
|
);
|
|
132
173
|
updateClearpayPlacements(data.total);
|
|
133
174
|
updateClearpayVisibility(data.total);
|
|
175
|
+
Wick.BasketPage && Wick.BasketPage.updateCart(true);
|
|
134
176
|
setTimeout(function () {
|
|
135
177
|
voucherButton.attr('disabled', false);
|
|
136
178
|
$voucherFormInput.val('');
|
|
@@ -196,6 +238,16 @@ function getNotAppliedVoucher() {
|
|
|
196
238
|
}
|
|
197
239
|
}
|
|
198
240
|
|
|
241
|
+
function getVoucherDisplayName($voucher) {
|
|
242
|
+
if (Wick.VatToggle.isToggleVatAvailable()) {
|
|
243
|
+
const selector = Wick.VatToggle.isActive()
|
|
244
|
+
? '.excluding-vat, .excluding-vat-inherit'
|
|
245
|
+
: '.including-vat, .including-vat-inherit';
|
|
246
|
+
return $voucher.find(selector).first().text().trim();
|
|
247
|
+
}
|
|
248
|
+
return $voucher.text().trim();
|
|
249
|
+
}
|
|
250
|
+
|
|
199
251
|
function clearValidationErrors(form) {
|
|
200
252
|
var $form = $(form);
|
|
201
253
|
if ($form.hasClass(voucherEl.formInvalid)) {
|
|
@@ -261,5 +313,7 @@ $(document).ready(function () {
|
|
|
261
313
|
getCSRFToken();
|
|
262
314
|
}
|
|
263
315
|
|
|
316
|
+
$(document).on('click', '[data-action="confirm-voucher-remove"]', confirmVoucherRemove);
|
|
317
|
+
|
|
264
318
|
init();
|
|
265
319
|
});
|
|
@@ -18,8 +18,7 @@ function normalizeOptions(options) {
|
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
function toInt(value) {
|
|
21
|
-
const n = parseInt(
|
|
22
|
-
|
|
21
|
+
const n = parseInt(String(value || '').trim(), 10);
|
|
23
22
|
return Number.isFinite(n) ? n : NaN;
|
|
24
23
|
}
|
|
25
24
|
|
|
@@ -29,7 +28,6 @@ function clampMin(n, min) {
|
|
|
29
28
|
|
|
30
29
|
function ensureQty(value, fallback) {
|
|
31
30
|
const n = toInt(value);
|
|
32
|
-
|
|
33
31
|
return Number.isFinite(n) ? n : fallback;
|
|
34
32
|
}
|
|
35
33
|
|
|
@@ -60,15 +58,12 @@ function updateButtons($input, opt) {
|
|
|
60
58
|
|
|
61
59
|
const $minus = getMinusBtn($wrap);
|
|
62
60
|
|
|
63
|
-
if ($minus.length)
|
|
64
|
-
$minus.prop('disabled', qty <= opt.min);
|
|
65
|
-
}
|
|
61
|
+
if ($minus.length) $minus.prop('disabled', qty <= opt.min);
|
|
66
62
|
}
|
|
67
63
|
|
|
68
64
|
function setQty($input, opt, qty) {
|
|
69
65
|
const next = clampMin(qty, opt.min);
|
|
70
|
-
|
|
71
|
-
$input.val(`${next}`);
|
|
66
|
+
$input.val(String(next));
|
|
72
67
|
updateButtons($input, opt);
|
|
73
68
|
|
|
74
69
|
if (typeof opt.onChange === 'function') {
|
|
@@ -88,13 +83,11 @@ function ensureButtons($input, opt) {
|
|
|
88
83
|
if (!hasMinus) {
|
|
89
84
|
$input.before(buildBtn('minus', true));
|
|
90
85
|
}
|
|
91
|
-
|
|
92
86
|
if (!hasPlus) {
|
|
93
87
|
$input.after(buildBtn('plus', false));
|
|
94
88
|
}
|
|
95
89
|
|
|
96
90
|
const initial = ensureQty($input.val(), opt.min);
|
|
97
|
-
|
|
98
91
|
setQty($input, opt, initial);
|
|
99
92
|
}
|
|
100
93
|
|
|
@@ -102,24 +95,16 @@ function getInputs($root, inputSel) {
|
|
|
102
95
|
const $scope = $root && $root.length ? $root : $(document);
|
|
103
96
|
const $self = $scope.is(inputSel) ? $scope : $();
|
|
104
97
|
const $found = $scope.find(inputSel);
|
|
105
|
-
|
|
106
98
|
return $self.add($found);
|
|
107
99
|
}
|
|
108
100
|
|
|
109
|
-
function getNamespace(inputSel) {
|
|
110
|
-
return `.countStepper_${inputSel.replace(/[^a-zA-Z0-9_-]/g, '')}`;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
101
|
// ===== FACTORY =====
|
|
114
102
|
|
|
115
103
|
export function createCountStepper(options = {}) {
|
|
116
104
|
const OPT = normalizeOptions(options);
|
|
105
|
+
if (!OPT.inputSel) throw new Error('[createCountStepper] Missing inputSel');
|
|
117
106
|
|
|
118
|
-
|
|
119
|
-
throw new Error('[createCountStepper] Missing inputSel');
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
const NS = getNamespace(OPT.inputSel);
|
|
107
|
+
const NS = `.cnt_${Math.random().toString(16).slice(2)}`;
|
|
123
108
|
|
|
124
109
|
function init($root) {
|
|
125
110
|
getInputs($root, OPT.inputSel).each(function () {
|
|
@@ -127,6 +112,7 @@ export function createCountStepper(options = {}) {
|
|
|
127
112
|
});
|
|
128
113
|
}
|
|
129
114
|
|
|
115
|
+
// +/- click
|
|
130
116
|
$(document)
|
|
131
117
|
.off(`click${NS}`, '[data-count-btn]')
|
|
132
118
|
.on(`click${NS}`, '[data-count-btn]', function (e) {
|
|
@@ -134,22 +120,15 @@ export function createCountStepper(options = {}) {
|
|
|
134
120
|
const $parent = $btn.parent();
|
|
135
121
|
const $input = $parent.find(OPT.inputSel).first();
|
|
136
122
|
|
|
137
|
-
if (!$input.length)
|
|
138
|
-
return;
|
|
139
|
-
}
|
|
123
|
+
if (!$input.length) return;
|
|
140
124
|
|
|
141
125
|
e.preventDefault();
|
|
142
126
|
|
|
143
127
|
const type = ($btn.attr('data-count-type') || '').toLowerCase();
|
|
144
128
|
const current = ensureQty($input.val(), OPT.min);
|
|
145
129
|
|
|
146
|
-
if (type === 'plus')
|
|
147
|
-
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
if (type === 'minus') {
|
|
151
|
-
setQty($input, OPT, current - 1);
|
|
152
|
-
}
|
|
130
|
+
if (type === 'plus') setQty($input, OPT, current + 1);
|
|
131
|
+
if (type === 'minus') setQty($input, OPT, current - 1);
|
|
153
132
|
});
|
|
154
133
|
|
|
155
134
|
$(document)
|
package/src/layouts/checkout.hbs
CHANGED
|
@@ -58,6 +58,10 @@
|
|
|
58
58
|
<div class="modal-images"></div>
|
|
59
59
|
{{/content}}
|
|
60
60
|
{{/extend}}
|
|
61
|
+
{{> checkout-voucher-remove-modal
|
|
62
|
+
shopping-cart-v2.checkout.voucher-remove-popup
|
|
63
|
+
id="voucher-remove-popup"
|
|
64
|
+
}}
|
|
61
65
|
<script defer src="./js/energy-efficiency.min.js"></script>
|
|
62
66
|
<script defer src="./js/basket.min.js"></script>
|
|
63
67
|
{{/content}}
|
|
@@ -38,6 +38,10 @@
|
|
|
38
38
|
{{/content}}
|
|
39
39
|
|
|
40
40
|
{{#content "foot" mode="append"}}
|
|
41
|
+
{{> checkout-voucher-remove-modal
|
|
42
|
+
shopping-cart-v2.checkout.voucher-remove-popup
|
|
43
|
+
id="voucher-remove-popup"
|
|
44
|
+
}}
|
|
41
45
|
<script defer src="./js/page/checkout-confirmation-new.js"></script>
|
|
42
46
|
{{/content}}
|
|
43
47
|
|
|
@@ -39,6 +39,10 @@
|
|
|
39
39
|
{{/content}}
|
|
40
40
|
|
|
41
41
|
{{#content "foot" mode="append"}}
|
|
42
|
+
{{> checkout-voucher-remove-modal
|
|
43
|
+
shopping-cart-v2.checkout.voucher-remove-popup
|
|
44
|
+
id="voucher-remove-popup"
|
|
45
|
+
}}
|
|
42
46
|
<script defer src="./js/page/checkout-confirmation-new.js"></script>
|
|
43
47
|
{{/content}}
|
|
44
48
|
{{/extend}}
|
|
@@ -12,7 +12,9 @@
|
|
|
12
12
|
{{> order-summary delivery-address-v2.summary no-action=true id=1 basket-id=true email=true}}
|
|
13
13
|
{{/content}}
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
{{#content "banner"}}
|
|
16
|
+
{{>tradepro-discount-banner}}
|
|
17
|
+
{{/content}}
|
|
16
18
|
{{#content "main"}}
|
|
17
19
|
<div class="delivery-block">
|
|
18
20
|
<h3 class="delivery-block__heading">Delivery Information</h3>
|
|
@@ -124,6 +126,10 @@
|
|
|
124
126
|
{{/content}}
|
|
125
127
|
|
|
126
128
|
{{#content "foot" mode="append"}}
|
|
129
|
+
{{> checkout-voucher-remove-modal
|
|
130
|
+
shopping-cart-v2.checkout.voucher-remove-popup
|
|
131
|
+
id="voucher-remove-popup"
|
|
132
|
+
}}
|
|
127
133
|
<script defer src="./js/page/checkout-confirmation-new.js"></script>
|
|
128
134
|
<script defer src="./js/page/select-address.js"></script>
|
|
129
135
|
|
|
@@ -127,6 +127,10 @@
|
|
|
127
127
|
{{/content}}
|
|
128
128
|
|
|
129
129
|
{{#content "foot" mode="append"}}
|
|
130
|
+
{{> checkout-voucher-remove-modal
|
|
131
|
+
shopping-cart-v2.checkout.voucher-remove-popup
|
|
132
|
+
id="voucher-remove-popup"
|
|
133
|
+
}}
|
|
130
134
|
<script defer src="./js/page/checkout-confirmation-new.js"></script>
|
|
131
135
|
<script defer src="./js/page/select-address.js"></script>
|
|
132
136
|
|
|
@@ -151,6 +151,10 @@
|
|
|
151
151
|
{{/content}}
|
|
152
152
|
|
|
153
153
|
{{#content "foot" mode="append"}}
|
|
154
|
+
{{> checkout-voucher-remove-modal
|
|
155
|
+
shopping-cart-v2.checkout.voucher-remove-popup
|
|
156
|
+
id="voucher-remove-popup"
|
|
157
|
+
}}
|
|
154
158
|
<script defer src="./js/page/checkout-confirmation-new.js"></script>
|
|
155
159
|
<script defer src="./js/page/select-address.js"></script>
|
|
156
160
|
|
|
@@ -133,6 +133,10 @@
|
|
|
133
133
|
{{/content}}
|
|
134
134
|
|
|
135
135
|
{{#content "foot" mode="append"}}
|
|
136
|
+
{{> checkout-voucher-remove-modal
|
|
137
|
+
shopping-cart-v2.checkout.voucher-remove-popup
|
|
138
|
+
id="voucher-remove-popup"
|
|
139
|
+
}}
|
|
136
140
|
<script defer src="./js/page/checkout-confirmation-new.js"></script>
|
|
137
141
|
<script defer src="./js/page/select-address.js"></script>
|
|
138
142
|
|
|
@@ -130,6 +130,10 @@
|
|
|
130
130
|
{{/content}}
|
|
131
131
|
|
|
132
132
|
{{#content "foot" mode="append"}}
|
|
133
|
+
{{> checkout-voucher-remove-modal
|
|
134
|
+
shopping-cart-v2.checkout.voucher-remove-popup
|
|
135
|
+
id="voucher-remove-popup"
|
|
136
|
+
}}
|
|
133
137
|
<script defer src="./js/page/checkout-confirmation-new.js"></script>
|
|
134
138
|
<script defer src="./js/page/select-address.js"></script>
|
|
135
139
|
|
|
@@ -126,6 +126,10 @@
|
|
|
126
126
|
{{/content}}
|
|
127
127
|
|
|
128
128
|
{{#content "foot" mode="append"}}
|
|
129
|
+
{{> checkout-voucher-remove-modal
|
|
130
|
+
shopping-cart-v2.checkout.voucher-remove-popup
|
|
131
|
+
id="voucher-remove-popup"
|
|
132
|
+
}}
|
|
129
133
|
<script defer src="./js/page/checkout-confirmation-new.js"></script>
|
|
130
134
|
<script defer src="./js/page/select-address.js"></script>
|
|
131
135
|
|
|
@@ -124,6 +124,10 @@
|
|
|
124
124
|
{{/content}}
|
|
125
125
|
|
|
126
126
|
{{#content "foot" mode="append"}}
|
|
127
|
+
{{> checkout-voucher-remove-modal
|
|
128
|
+
shopping-cart-v2.checkout.voucher-remove-popup
|
|
129
|
+
id="voucher-remove-popup"
|
|
130
|
+
}}
|
|
127
131
|
<script defer src="./js/page/checkout-confirmation-new.js"></script>
|
|
128
132
|
|
|
129
133
|
{{#extend "modal" classMod="edit-delivery-address" id="modalDeliveryEdit" title="Edit delivery address" fullWidth=true}}
|
|
@@ -31,6 +31,10 @@
|
|
|
31
31
|
{{/content}}
|
|
32
32
|
|
|
33
33
|
{{#content "foot" mode="append"}}
|
|
34
|
+
{{> checkout-voucher-remove-modal
|
|
35
|
+
shopping-cart-v2.checkout.voucher-remove-popup
|
|
36
|
+
id="voucher-remove-popup"
|
|
37
|
+
}}
|
|
34
38
|
<script defer src="./js/page/checkout-confirmation-new.js"></script>
|
|
35
39
|
<script defer src="./js/page/select-address.js"></script>
|
|
36
40
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
{{#extend "base" pageClass="page_basket basket" title="Merged basket" hideBreadcrumbs=true footerCheckoutNew=true pageBasket=true}}
|
|
1
|
+
{{#extend "base" pageClass="page_basket basket" title="Merged basket" hideBreadcrumbs=true footerCheckoutNew=true pageBasket=true bundle="basket"}}
|
|
2
2
|
{{#content "head" mode="append"}}
|
|
3
3
|
<link type="text/css" rel="stylesheet" href="./css/pages/checkout.css">
|
|
4
4
|
<link type="text/css" rel="stylesheet" href="./css/pages/page_merged-basket.css">
|
|
@@ -55,7 +55,10 @@
|
|
|
55
55
|
</main>
|
|
56
56
|
{{/content}}
|
|
57
57
|
{{#content "foot" mode="append"}}
|
|
58
|
-
|
|
59
|
-
|
|
58
|
+
{{> checkout-voucher-remove-modal
|
|
59
|
+
shopping-cart-v2.checkout.voucher-remove-popup
|
|
60
|
+
id="voucher-remove-popup"
|
|
61
|
+
}}
|
|
62
|
+
<script defer="defer" src="./js/page/checkout-confirmation-new.js"></script>
|
|
60
63
|
{{/content}}
|
|
61
64
|
{{/extend}}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
footerCheckoutNew=true
|
|
6
6
|
pageBasket=true
|
|
7
7
|
switch-vat=true
|
|
8
|
+
bundle="basket"
|
|
8
9
|
}}
|
|
9
10
|
{{#content "head" mode="append"}}
|
|
10
11
|
<link type="text/css" rel="stylesheet" href="./css/pages/checkout.css">
|
|
@@ -62,6 +63,10 @@
|
|
|
62
63
|
</main>
|
|
63
64
|
{{/content}}
|
|
64
65
|
{{#content "foot" mode="append"}}
|
|
65
|
-
|
|
66
|
+
{{> checkout-voucher-remove-modal
|
|
67
|
+
shopping-cart-v2.checkout.voucher-remove-popup
|
|
68
|
+
id="voucher-remove-popup"
|
|
69
|
+
}}
|
|
70
|
+
<script defer="defer" src="./js/page/checkout-confirmation-new.js"></script>
|
|
66
71
|
{{/content}}
|
|
67
72
|
{{/extend}}
|
|
@@ -61,6 +61,10 @@
|
|
|
61
61
|
<div class="modal-images"></div>
|
|
62
62
|
{{/content}}
|
|
63
63
|
{{/extend}}
|
|
64
|
+
{{> checkout-voucher-remove-modal
|
|
65
|
+
shopping-cart-v2.checkout.voucher-remove-popup
|
|
66
|
+
id="voucher-remove-popup"
|
|
67
|
+
}}
|
|
64
68
|
<script defer="defer" src="./js/page/checkout-confirmation-new.js"></script>
|
|
65
69
|
<script defer src="./js/basket.min.js"></script>
|
|
66
70
|
<script defer src="./js/energy-efficiency.min.js"></script>
|
|
@@ -133,6 +133,10 @@
|
|
|
133
133
|
{{/content}}
|
|
134
134
|
|
|
135
135
|
{{#content "foot" mode="append"}}
|
|
136
|
+
{{> checkout-voucher-remove-modal
|
|
137
|
+
shopping-cart-v2.checkout.voucher-remove-popup
|
|
138
|
+
id="voucher-remove-popup"
|
|
139
|
+
}}
|
|
136
140
|
<script defer src="./js/page/checkout-confirmation-new.js"></script>
|
|
137
141
|
<script defer src="./js/page/select-address.js"></script>
|
|
138
142
|
|
|
@@ -48,6 +48,10 @@
|
|
|
48
48
|
{{/content}}
|
|
49
49
|
|
|
50
50
|
{{#content "foot" mode="append"}}
|
|
51
|
+
{{> checkout-voucher-remove-modal
|
|
52
|
+
shopping-cart-v2.checkout.voucher-remove-popup
|
|
53
|
+
id="voucher-remove-popup"
|
|
54
|
+
}}
|
|
51
55
|
<script defer src="./js/page/checkout-confirmation-new.js"></script>
|
|
52
56
|
<script defer src="./js/page/checkout-payment-details.js"></script>
|
|
53
57
|
{{> checkout-terms-and-conditions-modal }}
|