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

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 (68) hide show
  1. package/Readme.md +5 -0
  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 +50 -994
  17. package/build/js/general.bundle.min.js +1 -1
  18. package/build/js/merged-checkout.min.js +2 -2
  19. package/build/js/page/basket-v2.js +244 -138
  20. package/build/js/page/components/discounts.js +6 -6
  21. package/build/js/pdp.bundle.min.js +1 -1
  22. package/build/js/plp.bundle.min.js +1 -1
  23. package/build/js/project-list.min.js +1 -1
  24. package/package.json +18 -3
  25. package/src/components/mini-basket/mini-basket-empty.hbs +13 -3
  26. package/src/components/mini-basket/mini-basket.hbs +13 -32
  27. package/src/components/mini-basket/product-item.hbs +16 -37
  28. package/src/components/srp-injected.hbs +3 -13
  29. package/src/data/data_confirmation-summary.json +2 -4
  30. package/src/data/data_mini-basket.json +80 -4
  31. package/src/js/components/banner-placement-manager.js +10 -1
  32. package/src/js/components/general/cart-slider.js +0 -3
  33. package/src/js/components/general/create-popup-slider.js +2 -5
  34. package/src/js/components/general/mini-basket-slider.js +8 -0
  35. package/src/js/emulation/account-hub.js +40 -40
  36. package/src/js/emulation/custom-slider-emulation.js +10 -4
  37. package/src/js/page/basket-v2.js +244 -138
  38. package/src/js/page/components/discounts.js +6 -6
  39. package/src/layouts/base.hbs +6 -0
  40. package/src/page_plp_v2.html +2 -1
  41. package/src/partials/scripts.hbs +0 -1
  42. package/src/scss/category-main.scss +1 -0
  43. package/src/scss/components/_custom-slider.scss +3 -124
  44. package/src/scss/components/_popover-mini-basket.scss +4 -0
  45. package/src/scss/emulation.scss +3 -3
  46. package/src/scss/helpers/_colors-semantic.scss +120 -0
  47. package/src/scss/helpers/_variables.scss +2 -0
  48. package/src/scss/pages/_facets.scss +86 -0
  49. package/src/scss/plp-main.scss +1 -0
  50. package/build/js/mini-basket-slider.min.js +0 -1
  51. package/build/js/page/basket/basket-update-cart-action.js +0 -60
  52. package/build/js/page/basket/basket-update-cart.js +0 -29
  53. package/build/js/page/basket/basket-utils.js +0 -50
  54. package/build/js/page/basket/mini-basket-total.js +0 -97
  55. package/build/js/page/basket/quantity-change-handler.js +0 -56
  56. package/build/js/page/basket/update-quantity-operation.js +0 -37
  57. package/build/js/page/basket/update-quantity.js +0 -65
  58. package/build/js/page/components/mini-basket-slider.js +0 -562
  59. package/src/components/mini-basket/mini-basket-order-item.hbs +0 -73
  60. package/src/js/emulation/mini-basket-data.js +0 -949
  61. package/src/js/page/basket/basket-update-cart-action.js +0 -60
  62. package/src/js/page/basket/basket-update-cart.js +0 -29
  63. package/src/js/page/basket/basket-utils.js +0 -50
  64. package/src/js/page/basket/mini-basket-total.js +0 -97
  65. package/src/js/page/basket/quantity-change-handler.js +0 -56
  66. package/src/js/page/basket/update-quantity-operation.js +0 -37
  67. package/src/js/page/basket/update-quantity.js +0 -65
  68. package/src/js/page/components/mini-basket-slider.js +0 -562
@@ -1,562 +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
- 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
- });
@@ -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>