wickes-css2 2.102.0-lg-788-improve-mini-basket.5 → 2.102.0

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 (83) 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/homepage-main.css +1 -1
  4. package/build/css/kitchen-plp-main.css +1 -1
  5. package/build/css/main.css +1 -1
  6. package/build/css/my-account-main-v2.css +1 -1
  7. package/build/css/my-account-main.css +1 -1
  8. package/build/css/pages/my-account-v2.css +1 -1
  9. package/build/css/pages/page_products-list-combined.css +1 -1
  10. package/build/css/pages/page_products-list.css +1 -1
  11. package/build/css/pdp-main-before-combine.css +1 -1
  12. package/build/css/pdp-main-non-critical.css +1 -1
  13. package/build/css/pdp-main.css +1 -1
  14. package/build/css/plp-main.css +1 -1
  15. package/build/css/store-locator-main.css +1 -1
  16. package/build/js/basket.min.js +2 -2
  17. package/build/js/bundle.min.js +1 -1
  18. package/build/js/checkout.min.js +2 -2
  19. package/build/js/emulation.min.js +10 -1008
  20. package/build/js/general.bundle.min.js +1 -1
  21. package/build/js/merged-checkout.min.js +2 -2
  22. package/build/js/page/basket-v2.js +244 -138
  23. package/build/js/page/components/discounts.js +6 -6
  24. package/build/js/page/plp-cards-v2.js +6 -15
  25. package/build/js/page/plp-load-more.js +1 -1
  26. package/build/js/pdp.bundle.min.js +1 -1
  27. package/build/js/plp.bundle.min.js +1 -1
  28. package/build/js/project-list.min.js +1 -1
  29. package/package.json +2 -2
  30. package/src/components/card_product_v2.hbs +5 -10
  31. package/src/components/injected-content.hbs +1 -1
  32. package/src/components/mini-basket/mini-basket-empty.hbs +13 -3
  33. package/src/components/mini-basket/mini-basket.hbs +13 -32
  34. package/src/components/mini-basket/product-item.hbs +16 -37
  35. package/src/data/data_confirmation-summary.json +2 -4
  36. package/src/data/data_mini-basket.json +80 -4
  37. package/src/data/data_search-results_v2.json +141 -56
  38. package/src/data/my-account/data_my-account.json +6 -0
  39. package/src/js/components/general/cart-slider.js +0 -3
  40. package/src/js/components/general/create-popup-slider.js +1 -4
  41. package/src/js/components/general/mini-basket-slider.js +8 -0
  42. package/src/js/components/product-banner.js +148 -0
  43. package/src/js/emulation/custom-slider-emulation.js +10 -4
  44. package/src/js/page/basket-v2.js +244 -138
  45. package/src/js/page/components/discounts.js +6 -6
  46. package/src/js/page/plp-cards-v2.js +6 -15
  47. package/src/js/page/plp-load-more.js +1 -1
  48. package/src/layouts/base.hbs +6 -0
  49. package/src/page_plp_v2.html +6 -16
  50. package/src/page_search-results.html +2 -12
  51. package/src/page_tradePro_rewards_home_installer_message.html +56 -0
  52. package/src/page_tradePro_rewards_instore_installer_message.html +77 -0
  53. package/src/partials/scripts.hbs +0 -1
  54. package/src/scss/components/_custom-slider.scss +3 -125
  55. package/src/scss/components/_popover-mini-basket.scss +4 -0
  56. package/src/scss/components/card-product-banner.scss +3 -91
  57. package/src/scss/pages/my-account-v2.scss +29 -0
  58. package/src/scss/pages/page_products-list-combined.scss +0 -11
  59. package/src/scss/pages/page_products-list.scss +0 -8
  60. package/src/sitemap.html +8 -0
  61. package/build/js/mini-basket-slider.min.js +0 -1
  62. package/build/js/page/basket/basket-update-cart-action.js +0 -60
  63. package/build/js/page/basket/basket-update-cart.js +0 -29
  64. package/build/js/page/basket/basket-utils.js +0 -50
  65. package/build/js/page/basket/mini-basket-total.js +0 -97
  66. package/build/js/page/basket/quantity-change-handler.js +0 -56
  67. package/build/js/page/basket/update-quantity-operation.js +0 -37
  68. package/build/js/page/basket/update-quantity.js +0 -65
  69. package/build/js/page/components/mini-basket-slider.js +0 -524
  70. package/src/components/card_sponsor_banner.hbs +0 -8
  71. package/src/components/card_sponsor_product.hbs +0 -6
  72. package/src/components/mini-basket/mini-basket-order-item.hbs +0 -73
  73. package/src/js/components/banner-placement-manager.js +0 -258
  74. package/src/js/emulation/banner-placement-manager.js +0 -53
  75. package/src/js/emulation/mini-basket-data.js +0 -949
  76. package/src/js/page/basket/basket-update-cart-action.js +0 -60
  77. package/src/js/page/basket/basket-update-cart.js +0 -29
  78. package/src/js/page/basket/basket-utils.js +0 -50
  79. package/src/js/page/basket/mini-basket-total.js +0 -97
  80. package/src/js/page/basket/quantity-change-handler.js +0 -56
  81. package/src/js/page/basket/update-quantity-operation.js +0 -37
  82. package/src/js/page/basket/update-quantity.js +0 -65
  83. package/src/js/page/components/mini-basket-slider.js +0 -524
@@ -1,258 +0,0 @@
1
- var Wick = Wick || {};
2
- Wick.BannerPlacementManager = {
3
- SPONSOR_BANNERS_DISPLAYED_EVENT: 'sponsorAdsDisplayedEvent',
4
- el: {
5
- banners: '.card-product-banner',
6
- sponsorBanners: '.card-sponsor-banner',
7
- sponsorProducts: '.card-sponsor-product',
8
- allBanners: '.card-product-banner, .card-sponsor-banner, .card-sponsor-product',
9
- productCard: '.product-card',
10
- allListSlots: '.product-card, .card-product-banner, .card-sponsor-banner, .card-sponsor-product',
11
- productsWrap: '.products-list-v2',
12
- $products: $('.product-card'),
13
- attrPositionDesktop: 'data-desktop-position',
14
- attrPositionMobile: 'data-mobile-position',
15
- attrRequiredAmountDesktop: 'data-required-amount-desktop',
16
- attrRequiredAmountMobile: 'data-required-amount-mobile',
17
- hide: 'd-none',
18
- sponsoredAdvBanners: '.sponsored-ad'
19
- },
20
- classes: {
21
- sponsorBanners: 'card-sponsor-banner',
22
- sponsorProducts: 'card-sponsor-product',
23
- productBanners: 'card-product-banner',
24
- bannerInactiveClass: 'card-product-banner--inactive'
25
- },
26
- isEventSent: false,
27
- currentBreakpoint: null,
28
- checkProductsInColumn() {
29
- Wick.BannerPlacementManager.addInactiveClasses();
30
- Wick.BannerPlacementManager.arrangeBannersInRightOrder();
31
- const $allBanners = $(Wick.BannerPlacementManager.el.allBanners);
32
- const totalProducts = Wick.BannerPlacementManager.getListLength();
33
- const totalSlots = totalProducts + $allBanners.length;
34
- $allBanners.each((index, banner) => {
35
- const bannerPosition = Wick.BannerPlacementManager.getBannerPosition(banner);
36
-
37
- if ($(banner).hasClass('card-product-banner')) {
38
- if (bannerPosition > totalSlots) {
39
- Wick.BannerPlacementManager.hideBanner(banner);
40
- $(Wick.BannerPlacementManager.el.productsWrap).append(banner);
41
- return;
42
- }
43
- }
44
-
45
- if ($(banner).hasClass(Wick.BannerPlacementManager.classes.sponsorBanners) || $(banner).hasClass(Wick.BannerPlacementManager.classes.sponsorProducts)) {
46
- if (bannerPosition > totalProducts) {
47
- Wick.BannerPlacementManager.showBanner(banner);
48
- Wick.BannerPlacementManager.removeInactiveClass(banner);
49
- $(Wick.BannerPlacementManager.el.productsWrap).append(banner);
50
- return;
51
- }
52
- }
53
-
54
- Wick.BannerPlacementManager.hideBannerDueLimit(banner, index);
55
- Wick.BannerPlacementManager.moveBannerToSpecifiedPosition(banner);
56
- });
57
- },
58
- moveBannerToSpecifiedPosition(banner) {
59
- const $listSlots = Wick.BannerPlacementManager.getListSlots();
60
- const bannerPosition = Wick.BannerPlacementManager.getBannerPosition(banner) - 2;
61
- const listSlotsLength = $listSlots.length;
62
-
63
- if (Wick.BannerPlacementManager.isBannerVisible(banner)) {
64
- if (bannerPosition <= listSlotsLength) {
65
- if ($listSlots[bannerPosition]) {
66
- Wick.BannerPlacementManager.showBanner(banner);
67
- Wick.BannerPlacementManager.removeInactiveClass(banner);
68
- Wick.BannerPlacementManager.moveBanner(banner, $listSlots[bannerPosition]);
69
- } else {
70
- Wick.BannerPlacementManager.hideBanner(banner);
71
- Wick.BannerPlacementManager.coverEdgeCases(banner);
72
- }
73
- } else {
74
- if ($(banner).hasClass(Wick.BannerPlacementManager.classes.sponsorBanners) || $(banner).hasClass(Wick.BannerPlacementManager.classes.sponsorProducts)) {
75
- Wick.BannerPlacementManager.showBanner(banner);
76
- Wick.BannerPlacementManager.removeInactiveClass(banner);
77
- $(Wick.BannerPlacementManager.el.productsWrap).append(banner);
78
- } else {
79
- Wick.BannerPlacementManager.hideBanner(banner);
80
- }
81
- }
82
- }
83
- },
84
- moveBanner(banner, targetElement) {
85
- $(banner).remove();
86
- $(targetElement).after(banner);
87
- },
88
- hideBanner(banner) {
89
- $(banner).addClass(Wick.BannerPlacementManager.el.hide);
90
- },
91
- showBanner(banner) {
92
- $(banner).removeClass(Wick.BannerPlacementManager.el.hide);
93
- },
94
- isBannerVisible(banner) {
95
- return !$(banner).hasClass(Wick.BannerPlacementManager.el.hide);
96
- },
97
- hideBannerDueLimit(banner) {
98
- const bannerMinLimit = Wick.BannerPlacementManager.getBannerLimit(banner) - 1;
99
- const $listSlots = Wick.BannerPlacementManager.getListSlots();
100
- const listProductsLength = $listSlots.length;
101
- Wick.BannerPlacementManager.showBanner(banner);
102
-
103
- if (bannerMinLimit > listProductsLength) {
104
- Wick.BannerPlacementManager.hideBanner(banner);
105
- }
106
- },
107
- getBannerPosition(banner) {
108
- const isMobile = Wick.BannerPlacementManager.isMobileResolution();
109
- const positionAttribute = isMobile
110
- ? Wick.BannerPlacementManager.el.attrPositionMobile
111
- : Wick.BannerPlacementManager.el.attrPositionDesktop
112
-
113
- return banner.hasAttribute(positionAttribute)
114
- ? Number(banner.getAttribute(positionAttribute))
115
- : Number(Wick.BannerPlacementManager.getListLength() + Wick.BannerPlacementManager.getBannersAmount());
116
- },
117
- getBannerLimit(banner) {
118
- const isMobile = Wick.BannerPlacementManager.isMobileResolution();
119
-
120
- const limitAttribute = isMobile
121
- ? Wick.BannerPlacementManager.el.attrRequiredAmountMobile
122
- : Wick.BannerPlacementManager.el.attrRequiredAmountDesktop;
123
-
124
- return banner.hasAttribute(limitAttribute)
125
- ? Number(banner.getAttribute(limitAttribute))
126
- : 0;
127
- },
128
- isMobileResolution() {
129
- return Wick.Responsive.getCurrentBreakpoint() !== 'up-lg';
130
- },
131
- getListLength() {
132
- const $listItems = $(Wick.BannerPlacementManager.el.productsWrap).children(Wick.BannerPlacementManager.el.productCard);
133
- return $listItems.length;
134
- },
135
- getBannersAmount() {
136
- return $(Wick.BannerPlacementManager.el.allBanners).length;
137
- },
138
- getProductsAmount() {
139
- return Wick.BannerPlacementManager.el.$products.length;
140
- },
141
- arrangeBannersInRightOrder() {
142
- const $allBanners = $(Wick.BannerPlacementManager.el.allBanners);
143
-
144
- const sponsorProducts = $allBanners.filter((i, el) =>
145
- $(el).hasClass(Wick.BannerPlacementManager.classes.sponsorProducts)
146
- );
147
- const sponsorBanners = $allBanners.filter((i, el) =>
148
- $(el).hasClass(Wick.BannerPlacementManager.classes.sponsorBanners)
149
- );
150
-
151
- const firstSponsorProductPos = sponsorProducts.length > 0
152
- ? Math.min(...sponsorProducts.map((i, el) => Wick.BannerPlacementManager.getBannerPosition(el)).get())
153
- : Infinity;
154
- const firstSponsorBannerPos = sponsorBanners.length > 0
155
- ? Math.min(...sponsorBanners.map((i, el) => Wick.BannerPlacementManager.getBannerPosition(el)).get())
156
- : Infinity;
157
-
158
- let groupOrder;
159
- if (firstSponsorProductPos < firstSponsorBannerPos) {
160
- groupOrder = [
161
- Wick.BannerPlacementManager.classes.sponsorProducts,
162
- Wick.BannerPlacementManager.classes.sponsorBanners,
163
- Wick.BannerPlacementManager.classes.productBanners
164
- ];
165
- } else {
166
- groupOrder = [
167
- Wick.BannerPlacementManager.classes.sponsorBanners,
168
- Wick.BannerPlacementManager.classes.sponsorProducts,
169
- Wick.BannerPlacementManager.classes.productBanners
170
- ];
171
- }
172
-
173
- $allBanners.sort((a, b) => {
174
- function getGroupIndex(el) {
175
- if ($(el).hasClass(groupOrder[0])) return 0;
176
- if ($(el).hasClass(groupOrder[1])) return 1;
177
- if ($(el).hasClass(groupOrder[2])) return 2;
178
- return 3;
179
- }
180
-
181
- const groupA = getGroupIndex(a);
182
- const groupB = getGroupIndex(b);
183
-
184
- if (groupA !== groupB) {
185
- return groupA - groupB;
186
- }
187
-
188
- const positionA = Wick.BannerPlacementManager.getBannerPosition(a);
189
- const positionB = Wick.BannerPlacementManager.getBannerPosition(b);
190
-
191
- return positionA - positionB;
192
- }).appendTo(Wick.BannerPlacementManager.el.productsWrap);
193
- },
194
- addInactiveClasses() {
195
- $(Wick.BannerPlacementManager.el.allBanners).addClass(Wick.BannerPlacementManager.el.hide);
196
- },
197
- removeInactiveClass(banner) {
198
- $(banner).removeClass(Wick.BannerPlacementManager.classes.bannerInactiveClass)
199
- },
200
- insertFirstBanner(banner) {
201
- const bannerPosition = Wick.BannerPlacementManager.getBannerPosition(banner);
202
-
203
- if (bannerPosition === 1) {
204
- Wick.BannerPlacementManager.showBanner(banner);
205
- Wick.BannerPlacementManager.removeInactiveClass(banner);
206
- $(banner).remove();
207
- $(Wick.BannerPlacementManager.el.productsWrap).prepend(banner);
208
- }
209
- },
210
- coverEdgeCases(banner) {
211
- Wick.BannerPlacementManager.insertFirstBanner(banner);
212
- },
213
- getListSlots() {
214
- return $(Wick.BannerPlacementManager.el.productsWrap)
215
- .children(Wick.BannerPlacementManager.el.allListSlots);
216
- },
217
- getBannerPriority(banner) {
218
- if ($(banner).hasClass(Wick.BannerPlacementManager.classes.sponsorProducts)) {
219
- return 1;
220
- }
221
- if ($(banner).hasClass(Wick.BannerPlacementManager.classes.sponsorBanners)) {
222
- return 2;
223
- }
224
- return 3;
225
- },
226
- dispatchSponsorAdsDisplayedEvent() {
227
- return new Promise((resolve, reject) => {
228
- const eventDetail = { resolve, reject };
229
- const sponsorAdsEvent = createEvent(Wick.BannerPlacementManager.SPONSOR_BANNERS_DISPLAYED_EVENT, { displayed: true }, eventDetail);
230
- window.dispatchEvent(sponsorAdsEvent);
231
- });
232
- },
233
- init() {
234
- Wick.Responsive.onResize(function () {
235
- if(Wick.BannerPlacementManager.currentBreakpoint !== Wick.Responsive.getCurrentBreakpoint()) {
236
- Wick.BannerPlacementManager.currentBreakpoint = Wick.Responsive.getCurrentBreakpoint()
237
- Wick.BannerPlacementManager.checkProductsInColumn();
238
-
239
- if (
240
- !Wick.BannerPlacementManager.isEventSent && $(Wick.BannerPlacementManager.el.sponsoredAdvBanners).length
241
- ) {
242
- Wick.BannerPlacementManager.dispatchSponsorAdsDisplayedEvent();
243
- Wick.BannerPlacementManager.isEventSent = true;
244
- }
245
-
246
- $(window).trigger('productBannerPositionChanged');
247
- }
248
- });
249
- }
250
- };
251
-
252
- $(document).ready(function () {
253
- if (!Wick.BannerPlacementManager.getBannersAmount() || !Wick.BannerPlacementManager.getProductsAmount()) {
254
- return;
255
- }
256
-
257
- Wick.BannerPlacementManager.init();
258
- })
@@ -1,53 +0,0 @@
1
- // Simulate prompt for input
2
- function getInputs() {
3
- const productBannerPositions = prompt("Enter Product Banner Positions:", "2") || "";
4
- const sponsorProductPositions = prompt("Enter Sponsor Product Positions (comma-separated):", "6,7,8") || "";
5
- const sponsorBannerPositions = prompt("Enter Sponsor Banner Positions:", "10") || "";
6
-
7
- return {
8
- productBannerPositions: productBannerPositions ? productBannerPositions.split(",").map(Number) : [],
9
- sponsorProductPositions: sponsorProductPositions ? sponsorProductPositions.split(",").map(Number) : [],
10
- sponsorBannerPositions: sponsorBannerPositions ? sponsorBannerPositions.split(",").map(Number) : [],
11
- };
12
- }
13
-
14
- function getPositionAttr() {
15
- const isMobile = Wick.BannerPlacementManager.isMobileResolution();
16
- return isMobile
17
- ? 'data-mobile-position'
18
- : 'data-desktop-position';
19
- }
20
-
21
- function updatePositions(inputs) {
22
- const productBannerElements = document.querySelectorAll(".card-product-banner");
23
- productBannerElements.forEach((el, index) => {
24
- if (inputs.productBannerPositions[index] !== undefined) {
25
- el.setAttribute(getPositionAttr(), inputs.productBannerPositions[index]);
26
- }
27
- });
28
-
29
- const sponsorProductElements = document.querySelectorAll(".card-sponsor-product");
30
- sponsorProductElements.forEach((el, index) => {
31
- if (inputs.sponsorProductPositions[index] !== undefined) {
32
- el.setAttribute(getPositionAttr(), inputs.sponsorProductPositions[index]);
33
- }
34
- });
35
-
36
- const sponsorBannerElements = document.querySelectorAll(".card-sponsor-banner");
37
- sponsorBannerElements.forEach((el, index) => {
38
- if (inputs.sponsorBannerPositions[index] !== undefined) {
39
- el.setAttribute(getPositionAttr(), inputs.sponsorBannerPositions[index]);
40
- }
41
- });
42
- }
43
-
44
- function init() {
45
- const inputs = getInputs();
46
- updatePositions(inputs);
47
- }
48
-
49
- $(document).ready(function () {
50
- if ($('.retail-media .products-list.products-list-v2').length) {
51
- setTimeout(() => init(), 100)
52
- }
53
- });