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