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