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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/build/css/category-main.css +1 -1
  2. package/build/css/components/card-product-banner.css +1 -1
  3. package/build/css/homepage-main.css +1 -1
  4. package/build/css/kitchen-plp-main.css +1 -1
  5. package/build/css/main.css +1 -1
  6. package/build/css/my-account-main-v2.css +1 -1
  7. package/build/css/my-account-main.css +1 -1
  8. package/build/css/pages/my-account-v2.css +1 -1
  9. package/build/css/pages/page_products-list-combined.css +1 -1
  10. package/build/css/pages/page_products-list.css +1 -1
  11. package/build/css/pdp-main-before-combine.css +1 -1
  12. package/build/css/pdp-main-non-critical.css +1 -1
  13. package/build/css/pdp-main.css +1 -1
  14. package/build/css/plp-main.css +1 -1
  15. package/build/css/store-locator-main.css +1 -1
  16. package/build/js/basket.min.js +2 -2
  17. package/build/js/bundle.min.js +1 -1
  18. package/build/js/checkout.min.js +2 -2
  19. package/build/js/emulation.min.js +10 -1008
  20. package/build/js/general.bundle.min.js +1 -1
  21. package/build/js/merged-checkout.min.js +2 -2
  22. package/build/js/page/basket-v2.js +244 -138
  23. package/build/js/page/components/discounts.js +6 -6
  24. package/build/js/page/plp-cards-v2.js +6 -15
  25. package/build/js/page/plp-load-more.js +1 -1
  26. package/build/js/pdp.bundle.min.js +1 -1
  27. package/build/js/plp.bundle.min.js +1 -1
  28. package/build/js/project-list.min.js +1 -1
  29. package/package.json +2 -2
  30. package/src/components/card_product_v2.hbs +5 -10
  31. package/src/components/injected-content.hbs +1 -1
  32. package/src/components/mini-basket/mini-basket-empty.hbs +13 -3
  33. package/src/components/mini-basket/mini-basket.hbs +13 -32
  34. package/src/components/mini-basket/product-item.hbs +16 -37
  35. package/src/data/data_confirmation-summary.json +2 -4
  36. package/src/data/data_mini-basket.json +80 -4
  37. package/src/data/data_search-results_v2.json +141 -56
  38. package/src/data/my-account/data_my-account.json +6 -0
  39. package/src/js/components/general/cart-slider.js +0 -3
  40. package/src/js/components/general/create-popup-slider.js +1 -4
  41. package/src/js/components/general/mini-basket-slider.js +8 -0
  42. package/src/js/components/product-banner.js +148 -0
  43. package/src/js/emulation/custom-slider-emulation.js +10 -4
  44. package/src/js/page/basket-v2.js +244 -138
  45. package/src/js/page/components/discounts.js +6 -6
  46. package/src/js/page/plp-cards-v2.js +6 -15
  47. package/src/js/page/plp-load-more.js +1 -1
  48. package/src/layouts/base.hbs +6 -0
  49. package/src/page_plp_v2.html +6 -16
  50. package/src/page_search-results.html +2 -12
  51. package/src/page_tradePro_rewards_home_installer_message.html +56 -0
  52. package/src/page_tradePro_rewards_instore_installer_message.html +77 -0
  53. package/src/partials/scripts.hbs +0 -1
  54. package/src/scss/components/_custom-slider.scss +3 -125
  55. package/src/scss/components/_popover-mini-basket.scss +4 -0
  56. package/src/scss/components/card-product-banner.scss +3 -91
  57. package/src/scss/pages/my-account-v2.scss +29 -0
  58. package/src/scss/pages/page_products-list-combined.scss +0 -11
  59. package/src/scss/pages/page_products-list.scss +0 -8
  60. package/src/sitemap.html +8 -0
  61. package/build/js/mini-basket-slider.min.js +0 -1
  62. package/build/js/page/basket/basket-update-cart-action.js +0 -60
  63. package/build/js/page/basket/basket-update-cart.js +0 -29
  64. package/build/js/page/basket/basket-utils.js +0 -50
  65. package/build/js/page/basket/mini-basket-total.js +0 -97
  66. package/build/js/page/basket/quantity-change-handler.js +0 -56
  67. package/build/js/page/basket/update-quantity-operation.js +0 -37
  68. package/build/js/page/basket/update-quantity.js +0 -65
  69. package/build/js/page/components/mini-basket-slider.js +0 -524
  70. package/src/components/card_sponsor_banner.hbs +0 -8
  71. package/src/components/card_sponsor_product.hbs +0 -6
  72. package/src/components/mini-basket/mini-basket-order-item.hbs +0 -73
  73. package/src/js/components/banner-placement-manager.js +0 -258
  74. package/src/js/emulation/banner-placement-manager.js +0 -53
  75. package/src/js/emulation/mini-basket-data.js +0 -949
  76. package/src/js/page/basket/basket-update-cart-action.js +0 -60
  77. package/src/js/page/basket/basket-update-cart.js +0 -29
  78. package/src/js/page/basket/basket-utils.js +0 -50
  79. package/src/js/page/basket/mini-basket-total.js +0 -97
  80. package/src/js/page/basket/quantity-change-handler.js +0 -56
  81. package/src/js/page/basket/update-quantity-operation.js +0 -37
  82. package/src/js/page/basket/update-quantity.js +0 -65
  83. package/src/js/page/components/mini-basket-slider.js +0 -524
@@ -1,524 +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
- 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
- isMiniBasketOpened: false,
142
- miniBasketUpdateItemQuantity(e) {
143
- const $item = $(e.currentTarget).closest(Wick.MiniBasketSliderFE.el.productCardPreview);
144
- const quantityElement = $item.find(Wick.MiniBasketSliderFE.el.quantityValue)
145
- const value = quantityElement.text();
146
- const action = $(e.currentTarget).attr('data-action');
147
- const entryNumber = +$item.attr('data-id');
148
-
149
- handleQuantityChange({
150
- quantityInput: quantityElement,
151
- action,
152
- value,
153
- context: $item,
154
- entryNumber,
155
- onQuantityChange: Wick.MiniBasketSliderFE.updateQuantityAction,
156
- debounceQuantityChange: Wick.MiniBasketSliderFE.debounceQuantityChange,
157
- });
158
- },
159
- debounceQuantityChange: _.debounce(function (entryNumber, value, quantityInput, context) {
160
- showLoader(Wick.MiniBasketSliderFE.el.customLoader);
161
- Wick.MiniBasketSliderFE.updateQuantityAction(entryNumber, value, quantityInput, context)
162
- }, 500),
163
- updateQuantityAction: function (entryNumber, quantityToUpdate, quantityInput, context) {
164
- updateQuantityAction({
165
- entryNumber,
166
- quantityToUpdate,
167
- quantityInput,
168
- context,
169
- hideLoader: () => setTimeout(() => hideLoader(Wick.MiniBasketSliderFE.el.customLoader), 500),
170
- updateAction: Wick.MiniBasketSliderFE.updateAction,
171
- isLocalEnv: Wick.checkLocalEnv,
172
- basketData: Wick.MiniBasketData,
173
- updateQuantityOperation: Wick.MiniBasketSliderFE.updateQuantityOperation,
174
- callActionFn: callAction,
175
- routes: ROUTES,
176
- isMiniBasket: true,
177
- });
178
- },
179
- updateAction: function (response, quantityToUpdate, quantityInput, context, successCallback) {
180
- Wick.MiniBasketSliderFE.updateQuantityOperation(
181
- quantityToUpdate,
182
- quantityInput,
183
- context,
184
- response
185
- );
186
- successCallback(response);
187
- },
188
- updateQuantityOperation: function (quantityToUpdate, quantityInput, context, data) {
189
- const $notifications = $(Wick.MiniBasketSliderFE.el.notifications);
190
- if ($notifications.children().length > 0) {
191
- $notifications.empty();
192
- }
193
-
194
- updateQuantityOperation(quantityToUpdate, quantityInput, context, data, {
195
- updateCart: Wick.MiniBasketSliderFE.updateCart,
196
- showNotification: Wick.MiniBasketSliderFE.showNotification,
197
- updateQuantity: Wick.MiniBasketSliderFE.updateQuantity,
198
- updateItemTotal: null,
199
- isMessageExist: Wick.MiniBasketSliderFE.isMessageExist,
200
- getMessageInfo: Wick.MiniBasketSliderFE.getMessageInfo
201
- });
202
- },
203
- updateCart: function (repaintData, context, charity, initial, callback) {
204
- console.log('case(api) to update cart');
205
- updateCartBase({
206
- isLocalEnv: Wick.checkLocalEnv,
207
- apiUrl: ROUTES.BASKET_GET_CART,
208
- apiType: 'GET',
209
- hideLoader: () => setTimeout(() => hideLoader(Wick.MiniBasketSliderFE.el.customLoader), 500),
210
- callActionFn: callAction,
211
- actionCallback: callback || Wick.MiniBasketSliderFE.updateCartAction,
212
- repaintData,
213
- context,
214
- charity,
215
- initial,
216
- localUpdateFn: function(initial, repaintData, context, charity) {
217
- if (initial) {
218
- Wick.MiniBasketSliderFE.getCartEntries(Wick.MiniBasketData.initialCartState);
219
- } else {
220
- updateTotal(
221
- Wick.MiniBasketData.updateCart,
222
- Wick.MiniBasketSliderFE.getEqualMapForUpdateCart(Wick.MiniBasketData.updateCart)
223
- );
224
-
225
- if (repaintData) {
226
- Wick.MiniBasketSliderFE.repaintOrderItems(Wick.MiniBasketData.updateCart, repaintData);
227
- } else {
228
- Wick.MiniBasketSliderFE.updateItemsCount(Wick.MiniBasketData.updateCart);
229
- }
230
-
231
- !charity || Wick.MiniBasketSliderFE.addCharityEntryNumber(Wick.MiniBasketData.updateCart);
232
- if (context && context.length) {
233
- Wick.MiniBasketSliderFE.updatePromotion(Wick.MiniBasketData.updateCart, context);
234
- }
235
- Wick.MiniBasketSliderFE.getCartEntries(Wick.MiniBasketData.updateCart);
236
- Wick.MiniBasketSliderFE.checkProductArrays(Wick.MiniBasketData.updateCart) || Wick.MiniBasketSliderFE.removeOrderItem(repaintData);
237
- setTimeout(() => hideLoader(Wick.MiniBasketSliderFE.el.customLoader), 1000);
238
- }
239
- }
240
- });
241
- },
242
- updateCartAction: function (response, {repaintData, context, charity, initial}) {
243
- updateCartActionBase({
244
- response,
245
- repaintData,
246
- context,
247
- charity,
248
- initial,
249
- updateOrderSummaryFn: updateTotal,
250
- getEqualMapFn: Wick.MiniBasketSliderFE.getEqualMapForUpdateCart,
251
- repaintOrderItemsFn: Wick.MiniBasketSliderFE.repaintOrderItems,
252
- addCharityEntryNumberFn: Wick.MiniBasketSliderFE.addCharityEntryNumber,
253
- updatePromotionFn: Wick.MiniBasketSliderFE.updatePromotion,
254
- cartEntries: Wick.MiniBasketSliderFE.cartEntries,
255
- getCartEntriesFn: () => Wick.MiniBasketSliderFE.getCartEntries(response),
256
- checkProductArraysFn: Wick.MiniBasketSliderFE.checkProductArrays,
257
- removeOrderItemFn: Wick.MiniBasketSliderFE.removeOrderItem,
258
- elOrderItem: Wick.MiniBasketSliderFE.el.orderItem,
259
- triggerCartUpdate: false,
260
- extraActionsMiniBasket: () => {
261
- Wick.MiniBasketSliderFE.toggleMiniBasketEmptyView();
262
- Wick.MiniBasketSliderFE.updateItemsCount(response);
263
- }
264
- });
265
- },
266
- removeOrderItem(data) {
267
- Wick.MiniBasketSliderFE.updateItemsCount(data);
268
- },
269
- repaintOrderItems: function (data) {
270
- const ccGroup = data.pickupOrderGroups || [],
271
- deliveryGroup = data.deliveryOrderGroups || [];
272
- let itemDetails = {};
273
-
274
- $(Wick.MiniBasketSliderFE.el.orderItem).remove();
275
-
276
- if (ccGroup.length) {
277
- ccGroup.forEach((obj) => {
278
- obj.entries.forEach(item => {
279
- itemDetails = { item, type: 'cc', data };
280
- $(Wick.MiniBasketSliderFE.el.products).append(Wick.MiniBasketSliderFE.createOrderItem(itemDetails));
281
- });
282
- })
283
- }
284
-
285
- if (deliveryGroup.length) {
286
- deliveryGroup.forEach((obj) => {
287
- obj.entries.forEach(item => {
288
- if (item.charity) return;
289
- itemDetails = { item, type: 'delivery', data };
290
- $(Wick.MiniBasketSliderFE.el.products).append(Wick.MiniBasketSliderFE.createOrderItem(itemDetails));
291
- });
292
- })
293
- }
294
-
295
- Wick.MiniBasketSliderFE.updateItemsCount(data);
296
-
297
- $(document).trigger("cartRerender");
298
- },
299
- showNotification: function(data) {
300
- showNotification(data, Wick.MiniBasketSliderFE.el.notifications);
301
- },
302
- isMessageExist: isMessageExist,
303
- getMessageInfo: getMessageInfo,
304
- getCartEntries: function(data) {
305
- Wick.MiniBasketSliderFE.cartEntries = getCartEntries(data);
306
- },
307
- checkProductArrays: checkProductArrays,
308
- createOrderItem(itemDetails) {
309
- let promotionsHtml = '';
310
- if (itemDetails.item.updateable) {
311
- promotionsHtml = Wick.MiniBasketSliderFE.addPromotions(itemDetails.item, itemDetails.data);
312
- }
313
-
314
- if (itemDetails.item.deliveryPointOfService && itemDetails.item.deliveryPointOfService.description) {
315
- itemDetails.item.deliveryPointOfService.description = Wick.MiniBasketSliderFE.capitalizeWords(itemDetails.item.deliveryPointOfService.description);
316
- }
317
-
318
- return orderItemTemplate({
319
- item: itemDetails.item,
320
- type: itemDetails.type,
321
- promotionsHtml
322
- });
323
- },
324
- capitalizeWords(str) {
325
- return str
326
- .toLowerCase()
327
- .split(' ')
328
- .map(function(word) {
329
- return word.charAt(0).toUpperCase() + word.slice(1);
330
- })
331
- .join(' ');
332
- },
333
- updateItemsCount(data) {
334
- const totalCount = data.totalUnitCount || 0;
335
-
336
- $(Wick.MiniBasketSliderFE.el.miniBasketTotal).text(`Your basket (${totalCount})`);
337
- $(Wick.MiniBasketSliderFE.el.headerBasketCount).text(`${totalCount}`);
338
- $(Wick.MiniBasketSliderFE.el.basketTotalItem).html(`${totalCount}`);
339
- },
340
- updatePromotion: function(data) {
341
- updatePromotion(
342
- data,
343
- Wick.MiniBasketSliderFE.el.orderItem,
344
- Wick.MiniBasketSliderFE.el.orderItemOffers,
345
- Wick.MiniBasketSliderFE.el.orderItemInfo,
346
- Wick.MiniBasketSliderFE.addPromotions
347
- );
348
- },
349
- addPromotions: function (item, data) {
350
- let arr = [];
351
-
352
- data.potentialProductPromotions && data.potentialProductPromotions.forEach((entry) => {
353
- entry.consumedEntries.forEach((promo) => {
354
- if (promo.orderEntryNumber === item.entryNumber) {
355
- if (arr.length) {
356
- let duplicate = arr.every((el) => {
357
- return el !== `<div class="products__promo">${entry.description}</div>`
358
- })
359
-
360
- !duplicate || arr.push(`<div class="products__promo">${entry.description}</div>`);
361
-
362
- } else {
363
- arr.push(`<div class="products__promo">${entry.description}</div>`);
364
- }
365
- }
366
- })
367
-
368
- });
369
-
370
- data.appliedProductPromotions && data.appliedProductPromotions.forEach((entry) => {
371
- entry.consumedEntries.forEach((promo) => {
372
- if (promo.orderEntryNumber === item.entryNumber && entry.description) {
373
- if (arr.length) {
374
- let duplicate = arr.every((el) => {
375
- return el !== `<div class="products__promo">${entry.description}</div>`
376
- })
377
-
378
- !duplicate || arr.push(`<div class="products__promo">${entry.description}</div>`);
379
-
380
- } else {
381
- arr.push(`<div class="products__promo">${entry.description}</div>`);
382
- }
383
- }
384
- })
385
- });
386
-
387
- return arr.length ? `<div class="products__offers">${arr.join('')}</div>` : ''
388
- },
389
- initPopupSlider() {
390
- createPopupSlider({
391
- type: 'miniBasket',
392
- sliderSelector: '.custom-slider.mini-basket',
393
- onAppendEvent: Wick.MiniBasketSliderFE.events.SHOW_MINI_BASKET,
394
- onAppend: function (event, { showSlider }) {
395
- Wick.MiniBasketSliderFE.toggleMiniBasketEmptyView();
396
- showSlider();
397
- },
398
- onClose: function () {
399
- $(Wick.MiniBasketSliderFE.el.notifications).empty();
400
- Wick.MiniBasketSliderFE.isMiniBasketOpened = false;
401
- }
402
- });
403
- },
404
- toggleMiniBasketEmptyView() {
405
- if (!Wick.MiniBasketSliderFE.cartEntries.length) {
406
- if (!$(Wick.MiniBasketSliderFE.el.customSliderEmpty).length) {
407
- $(Wick.MiniBasketSliderFE.el.customSliderWrap).append(miniBasketEmpty());
408
- $(Wick.MiniBasketSliderFE.el.miniBasketFooter).addClass(Wick.MiniBasketSliderFE.classes.HIDDEN_CLASS_NAME);
409
- }
410
- } else {
411
- $(Wick.MiniBasketSliderFE.el.customSliderWrap).find(Wick.MiniBasketSliderFE.el.customSliderEmpty).remove();
412
- $(Wick.MiniBasketSliderFE.el.miniBasketFooter).removeClass(Wick.MiniBasketSliderFE.classes.HIDDEN_CLASS_NAME);
413
-
414
- if (!$(Wick.MiniBasketSliderFE.el.products).length) {
415
- $(Wick.MiniBasketSliderFE.el.customSliderWrap).append('<div class="products popover-mini-basket__cards-holder"></div>');
416
- }
417
- }
418
- },
419
- appendMiniBasketWrap() {
420
- if(!$(Wick.MiniBasketSliderFE.el.miniBasket).length) {
421
- $('body').append(miniBasketMainWrap());
422
- }
423
- },
424
- isEmptyBasketLocal() {
425
- return window.location.pathname.includes('page_product-details-saved-pl.html');
426
- },
427
- shouldReloadPage: function() {
428
- return urlsToReload.includes(window.location.pathname);
429
- },
430
- openMiniBasket() {
431
- if (Wick.MiniBasketSliderFE.isInitial && Wick.checkLocalEnv) {
432
- const initialCartState = Wick.MiniBasketSliderFE.isEmptyBasketLocal()
433
- ? Wick.MiniBasketData.initialCartEmptyState
434
- : Wick.MiniBasketData.initialCartState;
435
-
436
- Wick.MiniBasketSliderFE.getCartEntries(initialCartState);
437
-
438
- updateTotal(
439
- initialCartState,
440
- Wick.MiniBasketSliderFE.getEqualMapForUpdateCart(initialCartState)
441
- );
442
- Wick.MiniBasketSliderFE.repaintOrderItems(initialCartState);
443
- Wick.MiniBasketSliderFE.showMiniBasketEvent();
444
- setTimeout(() => {
445
- Wick.MiniBasketSliderFE.isInitial = false;
446
- }, 100);
447
- } else {
448
- if (!Wick.MiniBasketSliderFE.cartEntries.length) {
449
- Wick.MiniBasketSliderFE.updateCart(
450
- true,
451
- undefined,
452
- undefined,
453
- false,
454
- function (response, params) {
455
- Wick.MiniBasketSliderFE.updateCartAction(response, params);
456
- if (!Wick.MiniBasketSliderFE.isMiniBasketOpened) {
457
- Wick.MiniBasketSliderFE.showMiniBasketEvent();
458
- Wick.MiniBasketSliderFE.isMiniBasketOpened = true;
459
- }
460
- }
461
- );
462
- } else {
463
- Wick.MiniBasketSliderFE.showMiniBasketEvent();
464
- }
465
- }
466
- },
467
- showMiniBasketEvent() {
468
- return new Promise((resolve, reject) => {
469
- const eventDetail = { resolve, reject };
470
- const event = createEvent(
471
- Wick.MiniBasketSliderFE.events.SHOW_MINI_BASKET,
472
- {},
473
- eventDetail
474
- );
475
- document.dispatchEvent(event);
476
- });
477
- },
478
- bindMiniBasketBtnHandler(selector, eventName) {
479
- $(document).on('click', selector, function(e) {
480
- e.preventDefault();
481
- return new Promise((resolve, reject) => {
482
- const eventDetail = { resolve, reject };
483
- const event = createEvent(eventName, {}, eventDetail);
484
- window.dispatchEvent(event);
485
- })
486
- .then(() => {
487
- window.location.href = $(selector).attr('href');
488
- })
489
- .catch((error) => {
490
- console.error(error);
491
- });
492
- });
493
- },
494
- init () {
495
- $(Wick.MiniBasketSliderFE.el.miniBasket).on('click', Wick.MiniBasketSliderFE.el.btnQuantity, Wick.MiniBasketSliderFE.miniBasketUpdateItemQuantity);
496
- $(Wick.MiniBasketSliderFE.el.miniBasket).on('click', Wick.MiniBasketSliderFE.el.btnRemove, Wick.MiniBasketSliderFE.miniBasketUpdateItemQuantity);
497
-
498
- Wick.MiniBasketSliderFE.bindMiniBasketBtnHandler(
499
- Wick.MiniBasketSliderFE.el.btnCheckout,
500
- Wick.MiniBasketSliderFE.events.MINI_BASKET_CHECKOUT
501
- );
502
-
503
- Wick.MiniBasketSliderFE.bindMiniBasketBtnHandler(
504
- Wick.MiniBasketSliderFE.el.btnViewBasket,
505
- Wick.MiniBasketSliderFE.events.MINI_BASKET_VIEW_BASKET
506
- );
507
- }
508
- }
509
-
510
- $(document).ready(function () {
511
- const $minicartBtn = $('.header-minicart .header-minicart__btn');
512
- if (!$minicartBtn.length) return;
513
-
514
- if (Wick.MiniBasketSliderFE.shouldReloadPage()) {
515
- $minicartBtn.on('click', () => window.location.reload());
516
- return;
517
- }
518
-
519
- $minicartBtn.on('click', () => Wick.MiniBasketSliderFE.openMiniBasket());
520
-
521
- Wick.MiniBasketSliderFE.appendMiniBasketWrap();
522
- Wick.MiniBasketSliderFE.initPopupSlider();
523
- Wick.MiniBasketSliderFE.init();
524
- });