wickes-css2 2.102.0-lg-788-improve-mini-basket.7 → 2.103.0-0.5.0-icons.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.
Files changed (88) hide show
  1. package/Readme.md +0 -1
  2. package/build/css/category-main.css +1 -1
  3. package/build/css/components/card-product-banner.css +1 -1
  4. package/build/css/homepage-main.css +1 -1
  5. package/build/css/kitchen-plp-main.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/my-account-v2.css +1 -1
  10. package/build/css/pages/page_products-list-combined.css +1 -1
  11. package/build/css/pages/page_products-list.css +1 -1
  12. package/build/css/pdp-main-before-combine.css +1 -1
  13. package/build/css/pdp-main-non-critical.css +1 -1
  14. package/build/css/pdp-main.css +1 -1
  15. package/build/css/plp-main.css +1 -1
  16. package/build/css/store-locator-main.css +1 -1
  17. package/build/js/basket.min.js +2 -2
  18. package/build/js/bundle.min.js +1 -1
  19. package/build/js/checkout.min.js +2 -2
  20. package/build/js/emulation.min.js +10 -1008
  21. package/build/js/general.bundle.min.js +1 -1
  22. package/build/js/merged-checkout.min.js +2 -2
  23. package/build/js/page/basket-v2.js +244 -138
  24. package/build/js/page/components/discounts.js +6 -6
  25. package/build/js/page/plp-cards-v2.js +6 -15
  26. package/build/js/page/plp-load-more.js +1 -1
  27. package/build/js/pdp.bundle.min.js +1 -1
  28. package/build/js/plp.bundle.min.js +1 -1
  29. package/build/js/project-list.min.js +1 -1
  30. package/package.json +2 -2
  31. package/src/components/card_product_v2.hbs +5 -10
  32. package/src/components/injected-content.hbs +1 -1
  33. package/src/components/mini-basket/mini-basket-empty.hbs +13 -3
  34. package/src/components/mini-basket/mini-basket.hbs +13 -32
  35. package/src/components/mini-basket/product-item.hbs +16 -37
  36. package/src/components/srp-injected.hbs +3 -13
  37. package/src/data/data_confirmation-summary.json +2 -4
  38. package/src/data/data_mini-basket.json +80 -4
  39. package/src/data/data_search-results_v2.json +141 -56
  40. package/src/data/my-account/data_my-account.json +6 -0
  41. package/src/js/components/general/cart-slider.js +0 -3
  42. package/src/js/components/general/create-popup-slider.js +2 -5
  43. package/src/js/components/general/mini-basket-slider.js +8 -0
  44. package/src/js/components/product-banner.js +148 -0
  45. package/src/js/emulation/custom-slider-emulation.js +10 -4
  46. package/src/js/page/basket-v2.js +244 -138
  47. package/src/js/page/components/discounts.js +6 -6
  48. package/src/js/page/plp-cards-v2.js +6 -15
  49. package/src/js/page/plp-load-more.js +1 -1
  50. package/src/layouts/base.hbs +6 -0
  51. package/src/page_plp_v2.html +7 -16
  52. package/src/page_search-results.html +2 -12
  53. package/src/page_tradePro_rewards_home_installer_message.html +56 -0
  54. package/src/page_tradePro_rewards_instore_installer_message.html +77 -0
  55. package/src/partials/scripts.hbs +0 -1
  56. package/src/scss/category-main.scss +1 -0
  57. package/src/scss/components/_custom-slider.scss +3 -125
  58. package/src/scss/components/_popover-mini-basket.scss +4 -0
  59. package/src/scss/components/card-product-banner.scss +3 -91
  60. package/src/scss/pages/_facets.scss +86 -0
  61. package/src/scss/pages/my-account-v2.scss +29 -0
  62. package/src/scss/pages/page_products-list-combined.scss +0 -11
  63. package/src/scss/pages/page_products-list.scss +0 -8
  64. package/src/scss/plp-main.scss +1 -0
  65. package/src/sitemap.html +8 -0
  66. package/build/js/mini-basket-slider.min.js +0 -1
  67. package/build/js/page/basket/basket-update-cart-action.js +0 -60
  68. package/build/js/page/basket/basket-update-cart.js +0 -29
  69. package/build/js/page/basket/basket-utils.js +0 -50
  70. package/build/js/page/basket/mini-basket-total.js +0 -97
  71. package/build/js/page/basket/quantity-change-handler.js +0 -56
  72. package/build/js/page/basket/update-quantity-operation.js +0 -37
  73. package/build/js/page/basket/update-quantity.js +0 -65
  74. package/build/js/page/components/mini-basket-slider.js +0 -562
  75. package/src/components/card_sponsor_banner.hbs +0 -8
  76. package/src/components/card_sponsor_product.hbs +0 -6
  77. package/src/components/mini-basket/mini-basket-order-item.hbs +0 -73
  78. package/src/js/components/banner-placement-manager.js +0 -258
  79. package/src/js/emulation/banner-placement-manager.js +0 -53
  80. package/src/js/emulation/mini-basket-data.js +0 -949
  81. package/src/js/page/basket/basket-update-cart-action.js +0 -60
  82. package/src/js/page/basket/basket-update-cart.js +0 -29
  83. package/src/js/page/basket/basket-utils.js +0 -50
  84. package/src/js/page/basket/mini-basket-total.js +0 -97
  85. package/src/js/page/basket/quantity-change-handler.js +0 -56
  86. package/src/js/page/basket/update-quantity-operation.js +0 -37
  87. package/src/js/page/basket/update-quantity.js +0 -65
  88. package/src/js/page/components/mini-basket-slider.js +0 -562
@@ -1,73 +0,0 @@
1
- <div class="card product-card-preview" data-id="{{item.entryNumber}}">
2
- <div
3
- class="products__item card__inner"
4
- data-name="{{item.product.name}}"
5
- data-id="{{item.product.code}}"
6
- data-price="{{item.product.price.formattedPriceWithoutCurrencySymbol}}"
7
- data-brand="{{item.product.brandName}}"
8
- data-category="{{removeFirst item.product.categoryPath 'Products/'}}"
9
- data-position="{{item.entryNumber}}"
10
- data-quantity="{{item.quantity}}"
11
- >
12
- <a href="{{item.product.url}}" class="card__img-wrap card__img-wrap_link products__image">
13
- <img
14
- class="product-img"
15
- src="{{item.product.image.url}}"
16
- alt="{{item.product.image.altText}}">
17
- </a>
18
- <div class="products__details product-card__content">
19
- <div class="products__details-header">
20
- <a href="{{item.product.url}}" class="title product-card__title product-card__title_link">
21
- {{item.product.name}}
22
- </a>
23
- <button class="btn btn--remove {{#unless item.updateable}}d-none{{/unless}}" data-action="remove">
24
- <i class="fas fa-trash remove-icon"></i>
25
- </button>
26
- </div>
27
- <div class="products__details-body">
28
- {{#if item.deliveryPointOfService.name}}
29
- <p class="item">Click &amp; Collect: <span class="value">{{item.deliveryPointOfService.description}}</span></p>
30
- {{else}}
31
- <p class="item">Added for delivery</p>
32
- {{/if}}
33
- </div>
34
-
35
- {{{promotionsHtml}}}
36
-
37
- <div class="products__details-footer">
38
- <div class="products__quantity-control">
39
- <button class="btn btn--quantity" data-action="minus"
40
- {{#unless item.updateable}}disabled{{/unless}} {{#if (eq item.quantity 1)}}disabled{{/if}}>
41
- <i class="fal fa-minus quantity-cta-icon"></i>
42
- </button>
43
- <div class="quantity product-card__quantity-label">
44
- <span class="value product-card__quantity-value" value="{{item.quantity}}">{{item.quantity}}</span>
45
- </div>
46
- <button class="btn btn--quantity" data-action="plus" {{#unless item.updateable}}disabled{{/unless}}>
47
- <i class="fal fa-plus quantity-cta-icon"></i>
48
- </button>
49
- </div>
50
- {{#if (eq item.basePrice.value 0)}}
51
- <span class="order-item__value product-card__price-value">FREE</span>
52
- {{else}}
53
- {{#if (isToggleVatAvailable)}}
54
- <div class="price including-vat-inherit">
55
- <span class="product-card__price-value">
56
- <span class="order-item__value">{{item.basePrice.formattedValue}}</span>
57
- <span class="inc">Inc.VAT</span>
58
- </span>
59
- </div>
60
- <div class="price excluding-vat-inherit">
61
- <span class="product-card__price-value">
62
- <span class="order-item__value">{{item.basePriceExcVat.formattedValue}}</span>
63
- <span class="inc">Exc.VAT</span>
64
- </span>
65
- </div>
66
- {{else}}
67
- <span class="price product-card__price-value">{{item.basePrice.formattedValue}}</span>
68
- {{/if}}
69
- {{/if}}
70
- </div>
71
- </div>
72
- </div>
73
- </div>
@@ -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
- });