wickes-css2 2.102.0-lg-788-improve-mini-basket.6 → 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 -535
  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 -535
@@ -1,535 +0,0 @@
1
- import {handleQuantityChange} from "../basket/quantity-change-handler";
2
- import {updateQuantityAction} from "../basket/update-quantity";
3
- import {ROUTES} from "../utils/routes";
4
- import {callAction} from "../utils/http-action";
5
- import {updateTotal} from "../basket/mini-basket-total";
6
- import {updateQuantityOperation} from "../basket/update-quantity-operation";
7
- import {
8
- checkProductArrays,
9
- getCartEntries,
10
- getMessageInfo,
11
- isMessageExist,
12
- updatePromotion,
13
- showNotification
14
- } from "../basket/basket-utils";
15
- import {updateCartBase} from "../basket/basket-update-cart";
16
- import {updateCartActionBase} from "../basket/basket-update-cart-action";
17
- import {hideLoader, showLoader} from "../utils/loader";
18
-
19
- const Handlebars = require("hbsfy/runtime");
20
- import orderItemTemplate from "../../../components/mini-basket/mini-basket-order-item.hbs";
21
- import miniBasketMainWrap from "../../../components/mini-basket/mini-basket.hbs"
22
- import miniBasketEmpty from "../../../components/mini-basket/mini-basket-empty.hbs"
23
- Handlebars.registerHelper('eq', function (a, b) {
24
- return a === b;
25
- });
26
-
27
- Handlebars.registerHelper('removeFirst', function(str, remove) {
28
- if (typeof str !== 'string' || typeof remove !== 'string') return str;
29
- if (str.startsWith(remove)) {
30
- return str.slice(remove.length);
31
- }
32
- return str;
33
- });
34
-
35
- Handlebars.registerHelper('isToggleVatAvailable', function() {
36
- return Wick.checkLocalEnv ? false : window.ACC?.app?.isVatToggleAvailable;
37
- });
38
-
39
- var Wick = window.Wick || {};
40
-
41
- const urlsToReload = ['/cart', '/merge-carts'];
42
-
43
- Wick.MiniBasketSliderFE = {
44
- events: {
45
- MINI_BASKET_CHECKOUT: 'MINI_BASKET_CHECKOUT',
46
- MINI_BASKET_VIEW_BASKET: 'MINI_BASKET_VIEW_BASKET',
47
- SHOW_MINI_BASKET: 'SHOW_MINI_BASKET'
48
- },
49
- el: {
50
- miniBasket: '.custom-slider.mini-basket',
51
- customLoader: '.mini-basket .basket-loader',
52
- subtotal: '.checkout-widget__item-bold',
53
- value: '.checkout-widget__item-value',
54
- vat: '.checkout-widget__item-vat',
55
- delivery: '.checkout-widget__item-delivery',
56
- charity: '.checkout-widget__item-charity',
57
- cc: '.checkout-widget__item-cc',
58
- discountItem: '.checkout-widget__details-discount',
59
- totalToggle: '.mini-basket__total-toggle',
60
- totalToggleValue: '.mini-basket__total-toggle-value',
61
- orderItem: '.mini-basket .card.product-card-preview',
62
- products: '.mini-basket .products',
63
- miniBasketSection: '.mini-basket .products',
64
- miniBasketTotal: '.custom-slider__count',
65
- headerBasketCount: '.header-minicart .header-minicart__counter',
66
- itemTotalIncVat: '.price .including-vat-inherit .value',
67
- itemTotalExcVat: '.price excluding-vat-inherit .value',
68
- itemTotal: '.price',
69
- orderItemOffers: '.products__offers',
70
- orderItemInfo: '.products__details-body',
71
- productCardPreview: '.card.product-card-preview',
72
- notifications: '.custom-slider__notifications',
73
- btnQuantity: '.card .btn--quantity',
74
- btnQuantityMinus: '.btn--quantity[data-action="minus"]',
75
- btnRemove: '.card .btn--remove',
76
- customSliderWrap: '.custom-slider__wrap',
77
- miniBasketFooter: '.custom-slider__footer',
78
- customSliderEmpty: '.custom-slider__empty',
79
- quantityValue: '.product-card__quantity-value',
80
- productsItem: '.products__item',
81
- totalHide: 'order-item__total-hide',
82
- btnCheckout: '#addToCartPopupCheckoutButton',
83
- btnViewBasket: '.mini-basket a.btn-view-basket-cta',
84
- basketTotalItem: '.basket-total-items'
85
- },
86
- classes: {
87
- HIDDEN_CLASS_NAME: 'd-none',
88
- },
89
- cartEntries: [],
90
- getEqualMapForUpdateCart: function (data) {
91
- return [
92
- {
93
- item: Wick.MiniBasketSliderFE.el.subtotal,
94
- itemValue: Wick.MiniBasketSliderFE.el.value,
95
- dataValue: data.subtotalWithoutCharity.formattedValue,
96
- value: data.subTotal.value,
97
- title: 'Items subtotal:'
98
- },
99
- {
100
- item: Wick.MiniBasketSliderFE.el.vat,
101
- itemValue: Wick.MiniBasketSliderFE.el.value,
102
- dataValue: data.totalTax.formattedValue,
103
- value: data.totalTax.value,
104
- title: 'VAT:'
105
- },
106
- {
107
- item: Wick.MiniBasketSliderFE.el.cc,
108
- itemValue: Wick.MiniBasketSliderFE.el.value,
109
- dataValue: 'Free',
110
- title: 'Click & Collect:'
111
- },
112
- {
113
- item: Wick.MiniBasketSliderFE.el.delivery,
114
- itemValue: Wick.MiniBasketSliderFE.el.value,
115
- dataValue: data.deliveryCost.formattedValue,
116
- value: data.deliveryCost.value,
117
- title: 'Delivery:'
118
- },
119
- {
120
- item: Wick.MiniBasketSliderFE.el.charity,
121
- itemValue: Wick.MiniBasketSliderFE.el.value,
122
- dataValue: data.charityPrice.formattedValue,
123
- value: data.charityPrice.value,
124
- title: 'Charity donation:'
125
- },
126
- {
127
- item: Wick.MiniBasketSliderFE.el.discountItem,
128
- itemValue: Wick.MiniBasketSliderFE.el.value,
129
- dataValue: data.totalDiscounts ? data.totalDiscounts.formattedValue : '',
130
- value: data.totalDiscounts ? data.totalDiscounts.value : '',
131
- title: 'Discount(s):'
132
- },
133
- {
134
- item: Wick.MiniBasketSliderFE.el.totalToggle,
135
- itemValue: Wick.MiniBasketSliderFE.el.totalToggleValue,
136
- dataValue: data.totalPrice.formattedValue,
137
- value: data.totalPrice.value,
138
- },
139
- ];
140
- },
141
- isInitial: true,
142
- isMiniBasketOpened: false,
143
- miniBasketUpdateItemQuantity(e) {
144
- const $item = $(e.currentTarget).closest(Wick.MiniBasketSliderFE.el.productCardPreview);
145
- const quantityElement = $item.find(Wick.MiniBasketSliderFE.el.quantityValue)
146
- const value = quantityElement.text();
147
- const action = $(e.currentTarget).attr('data-action');
148
- const entryNumber = +$item.attr('data-id');
149
-
150
- handleQuantityChange({
151
- quantityInput: quantityElement,
152
- action,
153
- value,
154
- context: $item,
155
- entryNumber,
156
- onQuantityChange: Wick.MiniBasketSliderFE.updateQuantityAction,
157
- debounceQuantityChange: Wick.MiniBasketSliderFE.debounceQuantityChange,
158
- });
159
- },
160
- debounceQuantityChange: _.debounce(function (entryNumber, value, quantityInput, context) {
161
- showLoader(Wick.MiniBasketSliderFE.el.customLoader);
162
- Wick.MiniBasketSliderFE.updateQuantityAction(entryNumber, value, quantityInput, context)
163
- }, 500),
164
- updateQuantityAction: function (entryNumber, quantityToUpdate, quantityInput, context) {
165
- updateQuantityAction({
166
- entryNumber,
167
- quantityToUpdate,
168
- quantityInput,
169
- context,
170
- hideLoader: () => setTimeout(() => hideLoader(Wick.MiniBasketSliderFE.el.customLoader), 500),
171
- updateAction: Wick.MiniBasketSliderFE.updateAction,
172
- isLocalEnv: Wick.checkLocalEnv,
173
- basketData: Wick.MiniBasketData,
174
- updateQuantityOperation: Wick.MiniBasketSliderFE.updateQuantityOperation,
175
- callActionFn: callAction,
176
- routes: ROUTES,
177
- isMiniBasket: true,
178
- });
179
-
180
- Wick.MiniBasketSliderFE.toggleMinusButtonState(context, quantityToUpdate);
181
- },
182
- toggleMinusButtonState($item, value) {
183
- const $minusBtn = $item.find(Wick.MiniBasketSliderFE.el.btnQuantityMinus);
184
- if (value > 1) {
185
- $minusBtn.prop('disabled', false);
186
- } else {
187
- $minusBtn.prop('disabled', true);
188
- }
189
- },
190
- updateAction: function (response, quantityToUpdate, quantityInput, context, successCallback) {
191
- Wick.MiniBasketSliderFE.updateQuantityOperation(
192
- quantityToUpdate,
193
- quantityInput,
194
- context,
195
- response
196
- );
197
- successCallback(response);
198
- },
199
- updateQuantityOperation: function (quantityToUpdate, quantityInput, context, data) {
200
- const $notifications = $(Wick.MiniBasketSliderFE.el.notifications);
201
- if ($notifications.children().length > 0) {
202
- $notifications.empty();
203
- }
204
-
205
- updateQuantityOperation(quantityToUpdate, quantityInput, context, data, {
206
- updateCart: Wick.MiniBasketSliderFE.updateCart,
207
- showNotification: Wick.MiniBasketSliderFE.showNotification,
208
- updateQuantity: Wick.MiniBasketSliderFE.updateQuantity,
209
- updateItemTotal: null,
210
- isMessageExist: Wick.MiniBasketSliderFE.isMessageExist,
211
- getMessageInfo: Wick.MiniBasketSliderFE.getMessageInfo
212
- });
213
- },
214
- updateCart: function (repaintData, context, charity, initial, callback) {
215
- console.log('case(api) to update cart');
216
- updateCartBase({
217
- isLocalEnv: Wick.checkLocalEnv,
218
- apiUrl: ROUTES.BASKET_GET_CART,
219
- apiType: 'GET',
220
- hideLoader: () => setTimeout(() => hideLoader(Wick.MiniBasketSliderFE.el.customLoader), 500),
221
- callActionFn: callAction,
222
- actionCallback: callback || Wick.MiniBasketSliderFE.updateCartAction,
223
- repaintData,
224
- context,
225
- charity,
226
- initial,
227
- localUpdateFn: function(initial, repaintData, context, charity) {
228
- if (initial) {
229
- Wick.MiniBasketSliderFE.getCartEntries(Wick.MiniBasketData.initialCartState);
230
- } else {
231
- updateTotal(
232
- Wick.MiniBasketData.updateCart,
233
- Wick.MiniBasketSliderFE.getEqualMapForUpdateCart(Wick.MiniBasketData.updateCart)
234
- );
235
-
236
- if (repaintData) {
237
- Wick.MiniBasketSliderFE.repaintOrderItems(Wick.MiniBasketData.updateCart, repaintData);
238
- } else {
239
- Wick.MiniBasketSliderFE.updateItemsCount(Wick.MiniBasketData.updateCart);
240
- }
241
-
242
- !charity || Wick.MiniBasketSliderFE.addCharityEntryNumber(Wick.MiniBasketData.updateCart);
243
- if (context && context.length) {
244
- Wick.MiniBasketSliderFE.updatePromotion(Wick.MiniBasketData.updateCart, context);
245
- }
246
- Wick.MiniBasketSliderFE.getCartEntries(Wick.MiniBasketData.updateCart);
247
- Wick.MiniBasketSliderFE.checkProductArrays(Wick.MiniBasketData.updateCart) || Wick.MiniBasketSliderFE.removeOrderItem(repaintData);
248
- setTimeout(() => hideLoader(Wick.MiniBasketSliderFE.el.customLoader), 1000);
249
- }
250
- }
251
- });
252
- },
253
- updateCartAction: function (response, {repaintData, context, charity, initial}) {
254
- updateCartActionBase({
255
- response,
256
- repaintData,
257
- context,
258
- charity,
259
- initial,
260
- updateOrderSummaryFn: updateTotal,
261
- getEqualMapFn: Wick.MiniBasketSliderFE.getEqualMapForUpdateCart,
262
- repaintOrderItemsFn: Wick.MiniBasketSliderFE.repaintOrderItems,
263
- addCharityEntryNumberFn: Wick.MiniBasketSliderFE.addCharityEntryNumber,
264
- updatePromotionFn: Wick.MiniBasketSliderFE.updatePromotion,
265
- cartEntries: Wick.MiniBasketSliderFE.cartEntries,
266
- getCartEntriesFn: () => Wick.MiniBasketSliderFE.getCartEntries(response),
267
- checkProductArraysFn: Wick.MiniBasketSliderFE.checkProductArrays,
268
- removeOrderItemFn: Wick.MiniBasketSliderFE.removeOrderItem,
269
- elOrderItem: Wick.MiniBasketSliderFE.el.orderItem,
270
- triggerCartUpdate: false,
271
- extraActionsMiniBasket: () => {
272
- Wick.MiniBasketSliderFE.toggleMiniBasketEmptyView();
273
- Wick.MiniBasketSliderFE.updateItemsCount(response);
274
- }
275
- });
276
- },
277
- removeOrderItem(data) {
278
- Wick.MiniBasketSliderFE.updateItemsCount(data);
279
- },
280
- repaintOrderItems: function (data) {
281
- const ccGroup = data.pickupOrderGroups || [],
282
- deliveryGroup = data.deliveryOrderGroups || [];
283
- let itemDetails = {};
284
-
285
- $(Wick.MiniBasketSliderFE.el.orderItem).remove();
286
-
287
- if (ccGroup.length) {
288
- ccGroup.forEach((obj) => {
289
- obj.entries.forEach(item => {
290
- itemDetails = { item, type: 'cc', data };
291
- $(Wick.MiniBasketSliderFE.el.products).append(Wick.MiniBasketSliderFE.createOrderItem(itemDetails));
292
- });
293
- })
294
- }
295
-
296
- if (deliveryGroup.length) {
297
- deliveryGroup.forEach((obj) => {
298
- obj.entries.forEach(item => {
299
- if (item.charity) return;
300
- itemDetails = { item, type: 'delivery', data };
301
- $(Wick.MiniBasketSliderFE.el.products).append(Wick.MiniBasketSliderFE.createOrderItem(itemDetails));
302
- });
303
- })
304
- }
305
-
306
- Wick.MiniBasketSliderFE.updateItemsCount(data);
307
-
308
- $(document).trigger("cartRerender");
309
- },
310
- showNotification: function(data) {
311
- showNotification(data, Wick.MiniBasketSliderFE.el.notifications);
312
- },
313
- isMessageExist: isMessageExist,
314
- getMessageInfo: getMessageInfo,
315
- getCartEntries: function(data) {
316
- Wick.MiniBasketSliderFE.cartEntries = getCartEntries(data);
317
- },
318
- checkProductArrays: checkProductArrays,
319
- createOrderItem(itemDetails) {
320
- let promotionsHtml = '';
321
- if (itemDetails.item.updateable) {
322
- promotionsHtml = Wick.MiniBasketSliderFE.addPromotions(itemDetails.item, itemDetails.data);
323
- }
324
-
325
- if (itemDetails.item.deliveryPointOfService && itemDetails.item.deliveryPointOfService.description) {
326
- itemDetails.item.deliveryPointOfService.description = Wick.MiniBasketSliderFE.capitalizeWords(itemDetails.item.deliveryPointOfService.description);
327
- }
328
-
329
- return orderItemTemplate({
330
- item: itemDetails.item,
331
- type: itemDetails.type,
332
- promotionsHtml
333
- });
334
- },
335
- capitalizeWords(str) {
336
- return str
337
- .toLowerCase()
338
- .split(' ')
339
- .map(function(word) {
340
- return word.charAt(0).toUpperCase() + word.slice(1);
341
- })
342
- .join(' ');
343
- },
344
- updateItemsCount(data) {
345
- const totalCount = data.totalUnitCount || 0;
346
-
347
- $(Wick.MiniBasketSliderFE.el.miniBasketTotal).text(`Your basket (${totalCount})`);
348
- $(Wick.MiniBasketSliderFE.el.headerBasketCount).text(`${totalCount}`);
349
- $(Wick.MiniBasketSliderFE.el.basketTotalItem).html(`${totalCount}`);
350
- },
351
- updatePromotion: function(data) {
352
- updatePromotion(
353
- data,
354
- Wick.MiniBasketSliderFE.el.orderItem,
355
- Wick.MiniBasketSliderFE.el.orderItemOffers,
356
- Wick.MiniBasketSliderFE.el.orderItemInfo,
357
- Wick.MiniBasketSliderFE.addPromotions
358
- );
359
- },
360
- addPromotions: function (item, data) {
361
- let arr = [];
362
-
363
- data.potentialProductPromotions && data.potentialProductPromotions.forEach((entry) => {
364
- entry.consumedEntries.forEach((promo) => {
365
- if (promo.orderEntryNumber === item.entryNumber) {
366
- if (arr.length) {
367
- let duplicate = arr.every((el) => {
368
- return el !== `<div class="products__promo">${entry.description}</div>`
369
- })
370
-
371
- !duplicate || arr.push(`<div class="products__promo">${entry.description}</div>`);
372
-
373
- } else {
374
- arr.push(`<div class="products__promo">${entry.description}</div>`);
375
- }
376
- }
377
- })
378
-
379
- });
380
-
381
- data.appliedProductPromotions && data.appliedProductPromotions.forEach((entry) => {
382
- entry.consumedEntries.forEach((promo) => {
383
- if (promo.orderEntryNumber === item.entryNumber && entry.description) {
384
- if (arr.length) {
385
- let duplicate = arr.every((el) => {
386
- return el !== `<div class="products__promo">${entry.description}</div>`
387
- })
388
-
389
- !duplicate || arr.push(`<div class="products__promo">${entry.description}</div>`);
390
-
391
- } else {
392
- arr.push(`<div class="products__promo">${entry.description}</div>`);
393
- }
394
- }
395
- })
396
- });
397
-
398
- return arr.length ? `<div class="products__offers">${arr.join('')}</div>` : ''
399
- },
400
- initPopupSlider() {
401
- createPopupSlider({
402
- type: 'miniBasket',
403
- sliderSelector: '.custom-slider.mini-basket',
404
- onAppendEvent: Wick.MiniBasketSliderFE.events.SHOW_MINI_BASKET,
405
- onAppend: function (event, { showSlider }) {
406
- Wick.MiniBasketSliderFE.toggleMiniBasketEmptyView();
407
- showSlider();
408
- },
409
- onClose: function () {
410
- $(Wick.MiniBasketSliderFE.el.notifications).empty();
411
- Wick.MiniBasketSliderFE.isMiniBasketOpened = false;
412
- }
413
- });
414
- },
415
- toggleMiniBasketEmptyView() {
416
- if (!Wick.MiniBasketSliderFE.cartEntries.length) {
417
- if (!$(Wick.MiniBasketSliderFE.el.customSliderEmpty).length) {
418
- $(Wick.MiniBasketSliderFE.el.customSliderWrap).append(miniBasketEmpty());
419
- $(Wick.MiniBasketSliderFE.el.miniBasketFooter).addClass(Wick.MiniBasketSliderFE.classes.HIDDEN_CLASS_NAME);
420
- }
421
- } else {
422
- $(Wick.MiniBasketSliderFE.el.customSliderWrap).find(Wick.MiniBasketSliderFE.el.customSliderEmpty).remove();
423
- $(Wick.MiniBasketSliderFE.el.miniBasketFooter).removeClass(Wick.MiniBasketSliderFE.classes.HIDDEN_CLASS_NAME);
424
-
425
- if (!$(Wick.MiniBasketSliderFE.el.products).length) {
426
- $(Wick.MiniBasketSliderFE.el.customSliderWrap).append('<div class="products popover-mini-basket__cards-holder"></div>');
427
- }
428
- }
429
- },
430
- appendMiniBasketWrap() {
431
- if(!$(Wick.MiniBasketSliderFE.el.miniBasket).length) {
432
- $('body').append(miniBasketMainWrap());
433
- }
434
- },
435
- isEmptyBasketLocal() {
436
- return window.location.pathname.includes('page_product-details-saved-pl.html');
437
- },
438
- shouldReloadPage: function() {
439
- return urlsToReload.includes(window.location.pathname);
440
- },
441
- openMiniBasket() {
442
- if (Wick.MiniBasketSliderFE.isInitial && Wick.checkLocalEnv) {
443
- const initialCartState = Wick.MiniBasketSliderFE.isEmptyBasketLocal()
444
- ? Wick.MiniBasketData.initialCartEmptyState
445
- : Wick.MiniBasketData.initialCartState;
446
-
447
- Wick.MiniBasketSliderFE.getCartEntries(initialCartState);
448
-
449
- updateTotal(
450
- initialCartState,
451
- Wick.MiniBasketSliderFE.getEqualMapForUpdateCart(initialCartState)
452
- );
453
- Wick.MiniBasketSliderFE.repaintOrderItems(initialCartState);
454
- Wick.MiniBasketSliderFE.showMiniBasketEvent();
455
- setTimeout(() => {
456
- Wick.MiniBasketSliderFE.isInitial = false;
457
- }, 100);
458
- } else {
459
- if (!Wick.MiniBasketSliderFE.cartEntries.length) {
460
- Wick.MiniBasketSliderFE.updateCart(
461
- true,
462
- undefined,
463
- undefined,
464
- false,
465
- function (response, params) {
466
- Wick.MiniBasketSliderFE.updateCartAction(response, params);
467
- if (!Wick.MiniBasketSliderFE.isMiniBasketOpened) {
468
- Wick.MiniBasketSliderFE.showMiniBasketEvent();
469
- Wick.MiniBasketSliderFE.isMiniBasketOpened = true;
470
- }
471
- }
472
- );
473
- } else {
474
- Wick.MiniBasketSliderFE.showMiniBasketEvent();
475
- }
476
- }
477
- },
478
- showMiniBasketEvent() {
479
- return new Promise((resolve, reject) => {
480
- const eventDetail = { resolve, reject };
481
- const event = createEvent(
482
- Wick.MiniBasketSliderFE.events.SHOW_MINI_BASKET,
483
- {},
484
- eventDetail
485
- );
486
- document.dispatchEvent(event);
487
- });
488
- },
489
- bindMiniBasketBtnHandler(selector, eventName) {
490
- $(document).on('click', selector, function(e) {
491
- e.preventDefault();
492
- return new Promise((resolve, reject) => {
493
- const eventDetail = { resolve, reject };
494
- const event = createEvent(eventName, {}, eventDetail);
495
- window.dispatchEvent(event);
496
- })
497
- .then(() => {
498
- window.location.href = $(selector).attr('href');
499
- })
500
- .catch((error) => {
501
- console.error(error);
502
- });
503
- });
504
- },
505
- init () {
506
- $(Wick.MiniBasketSliderFE.el.miniBasket).on('click', Wick.MiniBasketSliderFE.el.btnQuantity, Wick.MiniBasketSliderFE.miniBasketUpdateItemQuantity);
507
- $(Wick.MiniBasketSliderFE.el.miniBasket).on('click', Wick.MiniBasketSliderFE.el.btnRemove, Wick.MiniBasketSliderFE.miniBasketUpdateItemQuantity);
508
-
509
- Wick.MiniBasketSliderFE.bindMiniBasketBtnHandler(
510
- Wick.MiniBasketSliderFE.el.btnCheckout,
511
- Wick.MiniBasketSliderFE.events.MINI_BASKET_CHECKOUT
512
- );
513
-
514
- Wick.MiniBasketSliderFE.bindMiniBasketBtnHandler(
515
- Wick.MiniBasketSliderFE.el.btnViewBasket,
516
- Wick.MiniBasketSliderFE.events.MINI_BASKET_VIEW_BASKET
517
- );
518
- }
519
- }
520
-
521
- $(document).ready(function () {
522
- const $minicartBtn = $('.header-minicart .header-minicart__btn');
523
- if (!$minicartBtn.length) return;
524
-
525
- if (Wick.MiniBasketSliderFE.shouldReloadPage()) {
526
- $minicartBtn.on('click', () => window.location.reload());
527
- return;
528
- }
529
-
530
- $minicartBtn.on('click', () => Wick.MiniBasketSliderFE.openMiniBasket());
531
-
532
- Wick.MiniBasketSliderFE.appendMiniBasketWrap();
533
- Wick.MiniBasketSliderFE.initPopupSlider();
534
- Wick.MiniBasketSliderFE.init();
535
- });
@@ -1,8 +0,0 @@
1
- <div class="card-sponsor-banner {{#unless show}}d-none{{/unless}}"
2
- {{#if desktop-position}}data-desktop-position="{{desktop-position}}"{{/if}}
3
- {{#if mobile-position}}data-mobile-position="{{mobile-position}}"{{/if}}
4
- >
5
- <a class="card-sponsor-banner__link" href="{{href}}">
6
- <img class="card-sponsor-banner__image" src="{{src}}" alt="banner">
7
- </a>
8
- </div>
@@ -1,6 +0,0 @@
1
- <div class="card-sponsor-product {{#unless show}}d-none{{/unless}}"
2
- {{#if desktop-position}}data-desktop-position="{{desktop-position}}"{{/if}}
3
- {{#if mobile-position}}data-mobile-position="{{mobile-position}}"{{/if}}
4
- >
5
- {{>card_product_v2}}
6
- </div>
@@ -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>