wickes-css2 2.103.0-develop.1 → 2.103.0-develop.4

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