wickes-css2 2.105.0-develop.6 → 2.105.0-develop.8

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 (209) hide show
  1. package/Readme.md +2 -2
  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/pages/my-account-v2.css +1 -1
  9. package/build/css/pages/page_discount.css +1 -1
  10. package/build/css/pages/page_product_search.css +1 -1
  11. package/build/css/pages/page_products-list-combined.css +1 -1
  12. package/build/css/pages/page_products-list.css +1 -1
  13. package/build/css/pages/tradePro-rewards.css +1 -1
  14. package/build/css/pdp-main-before-combine.css +1 -1
  15. package/build/css/pdp-main-non-critical.css +1 -1
  16. package/build/css/pdp-main.css +1 -1
  17. package/build/css/plp-main.css +1 -1
  18. package/build/css/store-locator-main.css +1 -1
  19. package/build/js/basket.min.js +2 -2
  20. package/build/js/bundle.min.js +1 -1
  21. package/build/js/checkout.min.js +2 -2
  22. package/build/js/emulation.min.js +10255 -10784
  23. package/build/js/general.bundle.min.js +1 -1
  24. package/build/js/kitchen/kitchen-plp.min.js +9 -1
  25. package/build/js/merged-checkout.min.js +2 -2
  26. package/build/js/mini-basket-slider.min.js +1 -1
  27. package/build/js/my-account.min.js +1 -1
  28. package/build/js/page/accordion.js +35 -0
  29. package/build/js/page/basket/basket-update-cart-action.js +56 -59
  30. package/build/js/page/basket/basket-update-cart.js +27 -27
  31. package/build/js/page/basket/basket-utils.js +33 -40
  32. package/build/js/page/basket/mini-basket-total.js +66 -70
  33. package/build/js/page/basket/quantity-change-handler.js +55 -73
  34. package/build/js/page/basket/update-quantity-operation.js +30 -39
  35. package/build/js/page/basket/update-quantity.js +62 -62
  36. package/build/js/page/basket-v2.js +229 -362
  37. package/build/js/page/billie-business-type.js +27 -27
  38. package/build/js/page/checkout-payment-details.js +299 -301
  39. package/build/js/page/components/discounts.js +36 -39
  40. package/build/js/page/components/mini-basket-slider.js +545 -604
  41. package/build/js/page/kitchen/plp-filters-chips.js +90 -0
  42. package/build/js/page/kitchen/plp-filters-mobile.js +72 -0
  43. package/build/js/page/kitchen/plp-filters-panel.js +119 -0
  44. package/build/js/page/kitchen/plp-filters-utils.js +65 -0
  45. package/build/js/page/kitchen/plp-filters.js +205 -0
  46. package/build/js/page/kitchen/sort-by.js +157 -0
  47. package/build/js/page/klarna-modal-scroll-disable.js +4 -4
  48. package/build/js/page/my-account.js +14 -29
  49. package/build/js/page/online-exclusive.js +30 -28
  50. package/build/js/page/tradePro-rewards.js +39 -69
  51. package/build/js/page/utils/copy-to-clipboard.js +47 -79
  52. package/build/js/page/utils/helpers.js +9 -14
  53. package/build/js/pdp.bundle.min.js +1 -1
  54. package/build/js/plp.bundle.min.js +1 -1
  55. package/build/js/project-list.min.js +85 -143
  56. package/build/js/tradePro-rewards.min.js +1 -1
  57. package/package.json +3 -3
  58. package/src/components/.DS_Store +0 -0
  59. package/src/components/accordion.hbs +2 -2
  60. package/src/components/kitchen/dropdown.hbs +3 -6
  61. package/src/components/kitchen/filter-modal.hbs +13 -10
  62. package/src/components/kitchen/plp-filters.hbs +1 -3
  63. package/src/components/kitchen/sort-by.hbs +1 -1
  64. package/src/components/my-account/barcode.hbs +1 -3
  65. package/src/components/my-account/cards-swap.hbs +10 -0
  66. package/src/components/my-account/clipboard-code-card.hbs +3 -3
  67. package/src/components/my-account/discount.hbs +1 -1
  68. package/src/components/my-account/greetings.hbs +1 -1
  69. package/src/components/search-filter.hbs +112 -121
  70. package/src/data/data_plp_load-more.json +1 -1
  71. package/src/data/my-account/data_my-account.json +9 -0
  72. package/src/js/components/cards-swap.js +72 -0
  73. package/src/js/components/general/accordion.js +33 -44
  74. package/src/js/components/general/cart-slider.js +16 -19
  75. package/src/js/components/general/create-popup-slider.js +173 -168
  76. package/src/js/components/general/search-filter.js +21 -0
  77. package/src/js/components/share-project-list.js +53 -0
  78. package/src/js/emulation/big-wins.js +904 -1081
  79. package/src/js/emulation/billie-modal.js +19 -23
  80. package/src/js/emulation/checkout-payment-details.js +38 -47
  81. package/src/js/emulation/custom-slider-emulation.js +13 -17
  82. package/src/js/emulation/forms.js +323 -360
  83. package/src/js/emulation/mini-basket-data.js +923 -1051
  84. package/src/js/emulation/paymentLoader.js +17 -17
  85. package/src/js/emulation/pdf-file-loader.js +91 -89
  86. package/src/js/emulation/popover-mini-basket.js +239 -246
  87. package/src/js/emulation/project-list-pdp.js +316 -320
  88. package/src/js/emulation/repayment-toggle.js +24 -23
  89. package/src/js/emulation/selectable.js +18 -22
  90. package/src/js/emulation/wismo-details.js +31 -23
  91. package/src/js/page/accordion.js +35 -0
  92. package/src/js/page/basket/basket-update-cart-action.js +56 -59
  93. package/src/js/page/basket/basket-update-cart.js +27 -27
  94. package/src/js/page/basket/basket-utils.js +33 -40
  95. package/src/js/page/basket/mini-basket-total.js +66 -70
  96. package/src/js/page/basket/quantity-change-handler.js +55 -73
  97. package/src/js/page/basket/update-quantity-operation.js +30 -39
  98. package/src/js/page/basket/update-quantity.js +62 -62
  99. package/src/js/page/basket-v2.js +229 -362
  100. package/src/js/page/billie-business-type.js +27 -27
  101. package/src/js/page/checkout-payment-details.js +299 -301
  102. package/src/js/page/components/discounts.js +36 -39
  103. package/src/js/page/components/mini-basket-slider.js +545 -604
  104. package/src/js/page/kitchen/plp-filters-chips.js +90 -0
  105. package/src/js/page/kitchen/plp-filters-mobile.js +72 -0
  106. package/src/js/page/kitchen/plp-filters-panel.js +119 -0
  107. package/src/js/page/kitchen/plp-filters-utils.js +65 -0
  108. package/src/js/page/kitchen/plp-filters.js +205 -0
  109. package/src/js/page/kitchen/sort-by.js +157 -0
  110. package/src/js/page/klarna-modal-scroll-disable.js +4 -4
  111. package/src/js/page/my-account.js +14 -29
  112. package/src/js/page/online-exclusive.js +30 -28
  113. package/src/js/page/tradePro-rewards.js +39 -69
  114. package/src/js/page/utils/copy-to-clipboard.js +47 -79
  115. package/src/js/page/utils/helpers.js +9 -14
  116. package/src/page_empty-shared-project-list-bicester-hub.html +0 -4
  117. package/src/page_empty-shopping-list_guest.html +0 -1
  118. package/src/page_kitchen-plp.html +2 -2
  119. package/src/page_my-account-installer.html +1 -1
  120. package/src/page_my-account-trade-pro-carousel-double.html +127 -0
  121. package/src/page_my-account-trade-pro-carousel.html +134 -0
  122. package/src/page_my-account-trade-pro.html +1 -1
  123. package/src/page_my-shopping-list-add-notes.html +0 -1
  124. package/src/page_my-shopping-list-energy.html +0 -1
  125. package/src/page_my-shopping-list-hide-download.html +1 -2
  126. package/src/page_my-shopping-list-pdf.html +0 -2
  127. package/src/page_my-shopping-list-saved-ref.html +0 -1
  128. package/src/page_my-shopping-list-wisdom-oos-registered.html +0 -1
  129. package/src/page_my-shopping-list-wisdom-oos.html +0 -1
  130. package/src/page_my-shopping-list-wisdom-partial-registered.html +0 -1
  131. package/src/page_my-shopping-list-wisdom-registered.html +0 -1
  132. package/src/page_my-shopping-list-wisdom.html +0 -1
  133. package/src/page_my-shopping-list.html +0 -1
  134. package/src/page_my-shopping-list_not-register.html +0 -3
  135. package/src/page_plp-with-paint.html +7 -2
  136. package/src/page_plp.html +7 -2
  137. package/src/page_plp_v2-energy-efficiency.html +6 -1
  138. package/src/page_plp_v2-favourite-products.html +7 -6
  139. package/src/page_plp_v2-vat.html +7 -2
  140. package/src/page_plp_v2.html +9 -22
  141. package/src/page_product_search-vat.html +7 -2
  142. package/src/page_product_search.html +7 -2
  143. package/src/page_project-list-generate-project-list-ID.html +0 -3
  144. package/src/page_project-list-vat.html +0 -4
  145. package/src/page_project-list-with-new-share-popup-android.html +1 -3
  146. package/src/page_project-list-with-new-share-popup-ios.html +1 -3
  147. package/src/page_project-list-with-new-share-popup.html +1 -2
  148. package/src/page_search-results.html +7 -2
  149. package/src/page_shared-project-list-bicester-hub.html +1 -3
  150. package/src/page_tradepro-discount-app.html +1 -1
  151. package/src/page_tradepro-discount-double.html +109 -0
  152. package/src/page_tradepro-discount.html +36 -2
  153. package/src/scss/common/_common.scss +4 -5
  154. package/src/scss/components/_accordion.scss +3 -1
  155. package/src/scss/components/_custom-slider.scss +14 -15
  156. package/src/scss/components/_date-selection-add-new-styles.scss +7 -6
  157. package/src/scss/components/_date-selection.scss +1 -1
  158. package/src/scss/components/_popover-mini-basket.scss +3 -3
  159. package/src/scss/components/_search-filter.scss +15 -95
  160. package/src/scss/components/checkout-chip.scss +2 -2
  161. package/src/scss/components/checkout-payment-repayment-terms.scss +1 -1
  162. package/src/scss/components/{_filter-modal.scss → kitchen/_filter-modal.scss} +4 -55
  163. package/src/scss/components/{_plp-filters.scss → kitchen/_plp-filters.scss} +13 -31
  164. package/src/scss/components/my-account/_barcode.scss +8 -0
  165. package/src/scss/components/my-account/_cards-swap.scss +58 -0
  166. package/src/scss/components/my-account/_clipboard-code.scss +8 -0
  167. package/src/scss/components/my-account/_discount.scss +10 -0
  168. package/src/scss/globals/_global-components.scss +0 -3
  169. package/src/scss/helpers/_colors-semantic.scss +68 -68
  170. package/src/scss/helpers/_variables.scss +196 -242
  171. package/src/scss/kitchen-plp-main.scss +3 -0
  172. package/src/scss/main.scss +65 -65
  173. package/src/scss/pages/my-account-v2.scss +37 -0
  174. package/src/scss/pages/page_discount.scss +8 -4
  175. package/src/scss/pages/page_product-details-v2.scss +4 -1
  176. package/src/scss/pages/page_product_search.scss +1 -9
  177. package/src/scss/pages/page_products-list-combined.scss +24 -28
  178. package/src/scss/pages/page_products-list.scss +0 -8
  179. package/src/scss/pages/tradePro-rewards.scss +4 -3
  180. package/src/sitemap.html +3 -0
  181. package/build/js/page/filters/desktop-nav.js +0 -64
  182. package/build/js/page/filters/mobile-nav.js +0 -93
  183. package/build/js/page/filters/plp-filters-chips.js +0 -92
  184. package/build/js/page/filters/plp-filters-mobile.js +0 -150
  185. package/build/js/page/filters/plp-filters-panel.js +0 -123
  186. package/build/js/page/filters/plp-filters-utils.js +0 -66
  187. package/build/js/page/filters/plp-filters.js +0 -256
  188. package/build/js/page/filters/sort-by.js +0 -172
  189. package/build/js/page/search-filter.js +0 -62
  190. package/build/js/page/share-project-list.js +0 -57
  191. package/build/js/page/utils/show-more-less.js +0 -273
  192. package/src/components/kitchen/filter-modal-content-kitchen.hbs +0 -10
  193. package/src/components/search-filter-modal-content.hbs +0 -102
  194. package/src/elements/btn.hbs +0 -7
  195. package/src/js/emulation/filters-emulation.js +0 -164
  196. package/src/js/emulation/product-counter.js +0 -50
  197. package/src/js/emulation/reset-filter-desktop.js +0 -5
  198. package/src/js/page/filters/desktop-nav.js +0 -64
  199. package/src/js/page/filters/mobile-nav.js +0 -93
  200. package/src/js/page/filters/plp-filters-chips.js +0 -92
  201. package/src/js/page/filters/plp-filters-mobile.js +0 -150
  202. package/src/js/page/filters/plp-filters-panel.js +0 -123
  203. package/src/js/page/filters/plp-filters-utils.js +0 -66
  204. package/src/js/page/filters/plp-filters.js +0 -256
  205. package/src/js/page/filters/sort-by.js +0 -172
  206. package/src/js/page/search-filter.js +0 -62
  207. package/src/js/page/share-project-list.js +0 -57
  208. package/src/js/page/utils/show-more-less.js +0 -273
  209. package/src/scss/components/_sort-by.scss +0 -190
@@ -1,39 +1,39 @@
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';
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
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';
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
23
  Handlebars.registerHelper('eq', function (a, b) {
24
- return a === b;
24
+ return a === b;
25
25
  });
26
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;
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
33
  });
34
34
 
35
- Handlebars.registerHelper('isToggleVatAvailable', function () {
36
- return Wick.checkLocalEnv ? false : window.ACC?.app?.isVatToggleAvailable;
35
+ Handlebars.registerHelper('isToggleVatAvailable', function() {
36
+ return Wick.checkLocalEnv ? false : window.ACC?.app?.isVatToggleAvailable;
37
37
  });
38
38
 
39
39
  var Wick = window.Wick || {};
@@ -41,599 +41,540 @@ var Wick = window.Wick || {};
41
41
  const urlsToReload = ['/cart', '/merge-carts'];
42
42
 
43
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')
156
- Wick.MiniBasketSliderFE.actionEventType =
157
- Wick.MiniBasketSliderFE.events.MINI_BASKET_QUANTITY_INCREASE;
158
- if (action === 'minus')
159
- Wick.MiniBasketSliderFE.actionEventType =
160
- Wick.MiniBasketSliderFE.events.MINI_BASKET_QUANTITY_DECREASE;
161
- if (action === 'remove')
162
- Wick.MiniBasketSliderFE.actionEventType =
163
- Wick.MiniBasketSliderFE.events.MINI_BASKET_ITEM_REMOVE;
164
-
165
- handleQuantityChange({
166
- quantityInput: quantityElement,
167
- action,
168
- value,
169
- context: $item,
170
- entryNumber,
171
- onQuantityChange: Wick.MiniBasketSliderFE.updateQuantityAction,
172
- debounceQuantityChange: Wick.MiniBasketSliderFE.debounceQuantityChange,
173
- parentWrap: Wick.MiniBasketSliderFE.el.productsItem,
174
- });
175
- },
176
- debounceQuantityChange: _.debounce(function (entryNumber, value, quantityInput, context) {
177
- showLoader(Wick.MiniBasketSliderFE.el.customLoader);
178
- Wick.MiniBasketSliderFE.updateQuantityAction(entryNumber, value, quantityInput, context);
179
- }, 500),
180
- updateQuantityAction: function (entryNumber, quantityToUpdate, quantityInput, context) {
181
- updateQuantityAction({
182
- entryNumber,
183
- quantityToUpdate,
184
- quantityInput,
185
- context,
186
- hideLoader: () =>
187
- setTimeout(() => hideLoader(Wick.MiniBasketSliderFE.el.customLoader), 500),
188
- updateAction: Wick.MiniBasketSliderFE.updateAction,
189
- isLocalEnv: Wick.checkLocalEnv,
190
- basketData: Wick.MiniBasketData,
191
- updateQuantityOperation: Wick.MiniBasketSliderFE.updateQuantityOperation,
192
- callActionFn: callAction,
193
- routes: ROUTES,
194
- isMiniBasket: true,
195
- });
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
+ }
196
214
 
197
- Wick.MiniBasketSliderFE.toggleMinusButtonState(context, quantityToUpdate);
198
- },
199
- toggleMinusButtonState($item, value) {
200
- const $minusBtn = $item.find(Wick.MiniBasketSliderFE.el.btnQuantityMinus);
201
- if (value > 1) {
202
- $minusBtn.prop('disabled', false);
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);
203
240
  } else {
204
- $minusBtn.prop('disabled', true);
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);
205
259
  }
206
- },
207
- updateAction: function (response, quantityToUpdate, quantityInput, context, successCallback) {
208
- Wick.MiniBasketSliderFE.updateQuantityOperation(
209
- quantityToUpdate,
210
- quantityInput,
211
- context,
212
- response
213
- );
214
- successCallback(response);
215
- },
216
- updateQuantityOperation: function (quantityToUpdate, quantityInput, context, data) {
217
- const $notifications = $(Wick.MiniBasketSliderFE.el.notifications);
218
- if ($notifications.children().length > 0) {
219
- $notifications.empty();
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);
220
287
  }
221
-
222
- updateQuantityOperation(quantityToUpdate, quantityInput, context, data, {
223
- updateCart: Wick.MiniBasketSliderFE.updateCart,
224
- showNotification: Wick.MiniBasketSliderFE.showNotification,
225
- updateQuantity: Wick.MiniBasketSliderFE.updateQuantity,
226
- updateItemTotal: null,
227
- isMessageExist: Wick.MiniBasketSliderFE.isMessageExist,
228
- getMessageInfo: Wick.MiniBasketSliderFE.getMessageInfo,
229
- });
230
- },
231
- updateCart: function (repaintData, context, charity, initial, callback) {
232
- console.log('case(api) to update cart');
233
- updateCartBase({
234
- isLocalEnv: Wick.checkLocalEnv,
235
- apiUrl: ROUTES.BASKET_GET_CART,
236
- apiType: 'GET',
237
- hideLoader: () =>
238
- setTimeout(() => hideLoader(Wick.MiniBasketSliderFE.el.customLoader), 500),
239
- callActionFn: callAction,
240
- actionCallback: callback || Wick.MiniBasketSliderFE.updateCartAction,
241
- repaintData,
242
- context,
243
- charity,
244
- initial,
245
- localUpdateFn: function (initial, repaintData, context, charity) {
246
- if (initial) {
247
- Wick.MiniBasketSliderFE.getCartEntries(Wick.MiniBasketData.initialCartState);
248
- } else {
249
- updateTotal(
250
- Wick.MiniBasketData.updateCart,
251
- Wick.MiniBasketSliderFE.getEqualMapForUpdateCart(
252
- Wick.MiniBasketData.updateCart
253
- )
254
- );
255
-
256
- if (repaintData) {
257
- Wick.MiniBasketSliderFE.repaintOrderItems(
258
- Wick.MiniBasketData.updateCart,
259
- repaintData
260
- );
261
- } else {
262
- Wick.MiniBasketSliderFE.updateItemsCount(Wick.MiniBasketData.updateCart);
263
- }
264
-
265
- !charity ||
266
- Wick.MiniBasketSliderFE.addCharityEntryNumber(
267
- Wick.MiniBasketData.updateCart
268
- );
269
- if (context && context.length) {
270
- Wick.MiniBasketSliderFE.updatePromotion(
271
- Wick.MiniBasketData.updateCart,
272
- context
273
- );
274
- }
275
- Wick.MiniBasketSliderFE.getCartEntries(Wick.MiniBasketData.updateCart);
276
- Wick.MiniBasketSliderFE.checkProductArrays(Wick.MiniBasketData.updateCart) ||
277
- Wick.MiniBasketSliderFE.removeOrderItem(repaintData);
278
- setTimeout(() => hideLoader(Wick.MiniBasketSliderFE.el.customLoader), 1000);
279
- }
280
- },
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 (deliveryGroup.length) {
317
+ deliveryGroup.forEach((obj) => {
318
+ obj.entries.forEach(item => {
319
+ if (item.charity) return;
320
+ itemDetails = { item, type: 'delivery', data, position };
321
+ $(Wick.MiniBasketSliderFE.el.products).append(Wick.MiniBasketSliderFE.createOrderItem(itemDetails));
322
+ position++;
281
323
  });
282
- },
283
- updateCartAction: function (response, { repaintData, context, charity, initial }) {
284
- updateCartActionBase({
285
- response,
286
- repaintData,
287
- context,
288
- charity,
289
- initial,
290
- updateOrderSummaryFn: updateTotal,
291
- getEqualMapFn: Wick.MiniBasketSliderFE.getEqualMapForUpdateCart,
292
- repaintOrderItemsFn: Wick.MiniBasketSliderFE.repaintOrderItems,
293
- addCharityEntryNumberFn: Wick.MiniBasketSliderFE.addCharityEntryNumber,
294
- updatePromotionFn: Wick.MiniBasketSliderFE.updatePromotion,
295
- cartEntries: Wick.MiniBasketSliderFE.cartEntries,
296
- getCartEntriesFn: () => Wick.MiniBasketSliderFE.getCartEntries(response),
297
- checkProductArraysFn: Wick.MiniBasketSliderFE.checkProductArrays,
298
- removeOrderItemFn: Wick.MiniBasketSliderFE.removeOrderItem,
299
- elOrderItem: Wick.MiniBasketSliderFE.el.orderItem,
300
- triggerCartUpdate: false,
301
- extraActionsMiniBasket: () => {
302
- Wick.MiniBasketSliderFE.toggleMiniBasketEmptyView();
303
- Wick.MiniBasketSliderFE.updateItemsCount(response);
304
-
305
- if (Wick.MiniBasketSliderFE.actionEventType) {
306
- Wick.MiniBasketSliderFE.fireMiniBasketActionEvent(
307
- Wick.MiniBasketSliderFE.actionEventType,
308
- response
309
- );
310
- }
311
- },
324
+ })
325
+ }
326
+
327
+ if (ccGroup.length) {
328
+ ccGroup.forEach((obj) => {
329
+ obj.entries.forEach(item => {
330
+ itemDetails = { item, type: 'cc', data, position };
331
+ $(Wick.MiniBasketSliderFE.el.products).append(Wick.MiniBasketSliderFE.createOrderItem(itemDetails));
332
+ position++;
312
333
  });
313
- },
314
- fireMiniBasketActionEvent(eventType, cartData) {
315
- if (!eventType) return;
316
- const payload = {
317
- orderType: cartData.orderType || '',
318
- deliveryOrderGroups: cartData.deliveryOrderGroups || [],
319
- pickupOrderGroups: cartData.pickupOrderGroups || [],
320
- };
321
- const event = createEvent(eventType, payload, {});
322
- window.dispatchEvent(event);
323
- },
324
- removeOrderItem(data) {
325
- Wick.MiniBasketSliderFE.updateItemsCount(data);
326
- },
327
- repaintOrderItems: function (data) {
328
- const ccGroup = data.pickupOrderGroups || [],
329
- deliveryGroup = data.deliveryOrderGroups || [];
330
- let itemDetails = {};
331
- let position = 0;
332
-
333
- $(Wick.MiniBasketSliderFE.el.orderItem).remove();
334
-
335
- if (deliveryGroup.length) {
336
- deliveryGroup.forEach((obj) => {
337
- obj.entries.forEach((item) => {
338
- if (item.charity) return;
339
- itemDetails = { item, type: 'delivery', data, position };
340
- $(Wick.MiniBasketSliderFE.el.products).append(
341
- Wick.MiniBasketSliderFE.createOrderItem(itemDetails)
342
- );
343
- position++;
344
- });
345
- });
346
- }
334
+ })
335
+ }
347
336
 
348
- if (ccGroup.length) {
349
- ccGroup.forEach((obj) => {
350
- obj.entries.forEach((item) => {
351
- itemDetails = { item, type: 'cc', data, position };
352
- $(Wick.MiniBasketSliderFE.el.products).append(
353
- Wick.MiniBasketSliderFE.createOrderItem(itemDetails)
354
- );
355
- position++;
356
- });
357
- });
358
- }
337
+ Wick.MiniBasketSliderFE.updateItemsCount(data);
338
+
339
+ $(document).trigger("cartRerender");
340
+ },
341
+ showNotification: function(data) {
342
+ showNotification(data, Wick.MiniBasketSliderFE.el.notifications);
343
+
344
+ Wick.MiniBasketSliderFE.scrollToNotifications();
345
+ },
346
+ scrollToNotifications: function() {
347
+ const $notifications = $(Wick.MiniBasketSliderFE.el.notifications);
348
+ if (!$notifications.children().length) return;
349
+
350
+ const $scrollContainer = $(Wick.MiniBasketSliderFE.el.customSliderWrap);
351
+ if (!$scrollContainer.length) return;
352
+
353
+ $scrollContainer.stop(true, true).animate({ scrollTop: 0 }, 200);
354
+ },
355
+ isMessageExist: isMessageExist,
356
+ getMessageInfo: getMessageInfo,
357
+ getCartEntries: function(data) {
358
+ if (!data.deliveryOrderGroups) {
359
+ data.deliveryOrderGroups = [];
360
+ data.pickupOrderGroups = [];
361
+ Wick.MiniBasketSliderFE.cartEntries = getCartEntries(data);
362
+ return
363
+ }
359
364
 
360
- Wick.MiniBasketSliderFE.updateItemsCount(data);
361
-
362
- $(document).trigger('cartRerender');
363
- },
364
- showNotification: function (data) {
365
- showNotification(data, Wick.MiniBasketSliderFE.el.notifications);
366
-
367
- Wick.MiniBasketSliderFE.scrollToNotifications();
368
- },
369
- scrollToNotifications: function () {
370
- const $notifications = $(Wick.MiniBasketSliderFE.el.notifications);
371
- if (!$notifications.children().length) return;
372
-
373
- const $scrollContainer = $(Wick.MiniBasketSliderFE.el.customSliderWrap);
374
- if (!$scrollContainer.length) return;
375
-
376
- $scrollContainer.stop(true, true).animate({ scrollTop: 0 }, 200);
377
- },
378
- isMessageExist: isMessageExist,
379
- getMessageInfo: getMessageInfo,
380
- getCartEntries: function (data) {
381
- if (!data.deliveryOrderGroups) {
382
- data.deliveryOrderGroups = [];
383
- data.pickupOrderGroups = [];
384
- Wick.MiniBasketSliderFE.cartEntries = getCartEntries(data);
385
- return;
386
- }
365
+ Wick.MiniBasketSliderFE.cartEntries = getCartEntries(data);
366
+ },
367
+ checkProductArrays: checkProductArrays,
368
+ createOrderItem(itemDetails) {
369
+ let promotionsHtml = '';
370
+ if (itemDetails.item.updateable) {
371
+ promotionsHtml = Wick.MiniBasketSliderFE.addPromotions(itemDetails.item, itemDetails.data);
372
+ }
387
373
 
388
- Wick.MiniBasketSliderFE.cartEntries = getCartEntries(data);
389
- },
390
- checkProductArrays: checkProductArrays,
391
- createOrderItem(itemDetails) {
392
- let promotionsHtml = '';
393
- if (itemDetails.item.updateable) {
394
- promotionsHtml = Wick.MiniBasketSliderFE.addPromotions(
395
- itemDetails.item,
396
- itemDetails.data
397
- );
398
- }
374
+ if (itemDetails.item.deliveryPointOfService && itemDetails.item.deliveryPointOfService.description) {
375
+ itemDetails.item.deliveryPointOfService.description = Wick.MiniBasketSliderFE.capitalizeWords(itemDetails.item.deliveryPointOfService.description);
376
+ }
377
+
378
+ return orderItemTemplate({
379
+ item: itemDetails.item,
380
+ type: itemDetails.type,
381
+ promotionsHtml,
382
+ position: itemDetails.position
383
+ });
384
+ },
385
+ capitalizeWords(str) {
386
+ return str
387
+ .toLowerCase()
388
+ .split(' ')
389
+ .map(function(word) {
390
+ return word.charAt(0).toUpperCase() + word.slice(1);
391
+ })
392
+ .join(' ');
393
+ },
394
+ updateItemsCount(data) {
395
+ const totalCount = data.totalUnitCount || 0;
396
+
397
+ $(Wick.MiniBasketSliderFE.el.miniBasketTotal).text(`Your basket (${totalCount})`);
398
+ $(Wick.MiniBasketSliderFE.el.headerBasketCount).text(`${totalCount}`);
399
+ $(Wick.MiniBasketSliderFE.el.basketTotalItem).html(`${totalCount}`);
400
+ },
401
+ updatePromotion: function(data) {
402
+ updatePromotion(
403
+ data,
404
+ Wick.MiniBasketSliderFE.el.orderItem,
405
+ Wick.MiniBasketSliderFE.el.orderItemOffers,
406
+ Wick.MiniBasketSliderFE.el.orderItemInfo,
407
+ Wick.MiniBasketSliderFE.addPromotions
408
+ );
409
+ },
410
+ addPromotions: function (item, data) {
411
+ let arr = [];
412
+
413
+ data.potentialProductPromotions && data.potentialProductPromotions.forEach((entry) => {
414
+ entry.consumedEntries.forEach((promo) => {
415
+ if (promo.orderEntryNumber === item.entryNumber) {
416
+ if (arr.length) {
417
+ let duplicate = arr.every((el) => {
418
+ return el !== `<div class="products__promo">${entry.description}</div>`
419
+ })
399
420
 
400
- if (
401
- itemDetails.item.deliveryPointOfService &&
402
- itemDetails.item.deliveryPointOfService.description
403
- ) {
404
- itemDetails.item.deliveryPointOfService.description =
405
- Wick.MiniBasketSliderFE.capitalizeWords(
406
- itemDetails.item.deliveryPointOfService.description
407
- );
421
+ !duplicate || arr.push(`<div class="products__promo">${entry.description}</div>`);
422
+
423
+ } else {
424
+ arr.push(`<div class="products__promo">${entry.description}</div>`);
425
+ }
408
426
  }
427
+ })
409
428
 
410
- return orderItemTemplate({
411
- item: itemDetails.item,
412
- type: itemDetails.type,
413
- promotionsHtml,
414
- position: itemDetails.position,
415
- });
416
- },
417
- capitalizeWords(str) {
418
- return str
419
- .toLowerCase()
420
- .split(' ')
421
- .map(function (word) {
422
- return word.charAt(0).toUpperCase() + word.slice(1);
429
+ });
430
+
431
+ data.appliedProductPromotions && data.appliedProductPromotions.forEach((entry) => {
432
+ entry.consumedEntries.forEach((promo) => {
433
+ if (promo.orderEntryNumber === item.entryNumber && entry.description) {
434
+ if (arr.length) {
435
+ let duplicate = arr.every((el) => {
436
+ return el !== `<div class="products__promo">${entry.description}</div>`
423
437
  })
424
- .join(' ');
425
- },
426
- updateItemsCount(data) {
427
- const totalCount = data.totalUnitCount || 0;
428
-
429
- $(Wick.MiniBasketSliderFE.el.miniBasketTotal).text(`Your basket (${totalCount})`);
430
- $(Wick.MiniBasketSliderFE.el.headerBasketCount).text(`${totalCount}`);
431
- $(Wick.MiniBasketSliderFE.el.basketTotalItem).html(`${totalCount}`);
432
- },
433
- updatePromotion: function (data) {
434
- updatePromotion(
435
- data,
436
- Wick.MiniBasketSliderFE.el.orderItem,
437
- Wick.MiniBasketSliderFE.el.orderItemOffers,
438
- Wick.MiniBasketSliderFE.el.orderItemInfo,
439
- Wick.MiniBasketSliderFE.addPromotions
440
- );
441
- },
442
- addPromotions: function (item, data) {
443
- let arr = [];
444
-
445
- data.potentialProductPromotions &&
446
- data.potentialProductPromotions.forEach((entry) => {
447
- entry.consumedEntries.forEach((promo) => {
448
- if (promo.orderEntryNumber === item.entryNumber) {
449
- if (arr.length) {
450
- let duplicate = arr.every((el) => {
451
- return (
452
- el !== `<div class="products__promo">${entry.description}</div>`
453
- );
454
- });
455
-
456
- !duplicate ||
457
- arr.push(`<div class="products__promo">${entry.description}</div>`);
458
- } else {
459
- arr.push(`<div class="products__promo">${entry.description}</div>`);
460
- }
461
- }
462
- });
463
- });
464
-
465
- data.appliedProductPromotions &&
466
- data.appliedProductPromotions.forEach((entry) => {
467
- entry.consumedEntries.forEach((promo) => {
468
- if (promo.orderEntryNumber === item.entryNumber && entry.description) {
469
- if (arr.length) {
470
- let duplicate = arr.every((el) => {
471
- return (
472
- el !== `<div class="products__promo">${entry.description}</div>`
473
- );
474
- });
475
-
476
- !duplicate ||
477
- arr.push(`<div class="products__promo">${entry.description}</div>`);
478
- } else {
479
- arr.push(`<div class="products__promo">${entry.description}</div>`);
480
- }
481
- }
482
- });
483
- });
484
-
485
- return arr.length ? `<div class="products__offers">${arr.join('')}</div>` : '';
486
- },
487
- initPopupSlider() {
488
- createPopupSlider({
489
- type: 'miniBasket',
490
- sliderSelector: '.custom-slider.mini-basket',
491
- onAppendEvent: Wick.MiniBasketSliderFE.events.SHOW_MINI_BASKET,
492
- onAppend: function (event, { showSlider }) {
493
- Wick.MiniBasketSliderFE.toggleMiniBasketEmptyView();
494
- showSlider();
495
- },
496
- onClose: function () {
497
- $(Wick.MiniBasketSliderFE.el.notifications).empty();
498
- Wick.MiniBasketSliderFE.isMiniBasketOpened = false;
499
- Wick.MiniBasketSliderFE.actionEventType = null;
500
- },
501
- });
502
- },
503
- toggleMiniBasketEmptyView() {
504
- if (!Wick.MiniBasketSliderFE.cartEntries.length) {
505
- if (!$(Wick.MiniBasketSliderFE.el.customSliderEmpty).length) {
506
- $(Wick.MiniBasketSliderFE.el.customSliderWrap).append(miniBasketEmpty());
507
- $(Wick.MiniBasketSliderFE.el.miniBasketFooter).addClass(
508
- Wick.MiniBasketSliderFE.classes.HIDDEN_CLASS_NAME
509
- );
510
- }
511
- } else {
512
- $(Wick.MiniBasketSliderFE.el.customSliderWrap)
513
- .find(Wick.MiniBasketSliderFE.el.customSliderEmpty)
514
- .remove();
515
- $(Wick.MiniBasketSliderFE.el.miniBasketFooter).removeClass(
516
- Wick.MiniBasketSliderFE.classes.HIDDEN_CLASS_NAME
517
- );
518
-
519
- if (!$(Wick.MiniBasketSliderFE.el.products).length) {
520
- $(Wick.MiniBasketSliderFE.el.customSliderWrap).append(
521
- '<div class="products popover-mini-basket__cards-holder"></div>'
522
- );
523
- }
524
- }
525
- },
526
- appendMiniBasketWrap() {
527
- if (!$(Wick.MiniBasketSliderFE.el.miniBasket).length) {
528
- $('body').append(miniBasketMainWrap());
529
- }
530
- },
531
- isEmptyBasketLocal() {
532
- return window.location.pathname.includes('page_product-details-saved-pl.html');
533
- },
534
- shouldReloadPage: function () {
535
- return urlsToReload.includes(window.location.pathname);
536
- },
537
- openMiniBasket() {
538
- if (Wick.MiniBasketSliderFE.isInitial && Wick.checkLocalEnv) {
539
- const initialCartState = Wick.MiniBasketSliderFE.isEmptyBasketLocal()
540
- ? Wick.MiniBasketData.initialCartEmptyState
541
- : Wick.MiniBasketData.initialCartState;
542
-
543
- Wick.MiniBasketSliderFE.getCartEntries(initialCartState);
544
-
545
- updateTotal(
546
- initialCartState,
547
- Wick.MiniBasketSliderFE.getEqualMapForUpdateCart(initialCartState)
548
- );
549
- Wick.MiniBasketSliderFE.repaintOrderItems(initialCartState);
550
- Wick.MiniBasketSliderFE.showMiniBasketEvent();
551
- setTimeout(() => {
552
- Wick.MiniBasketSliderFE.isInitial = false;
553
- }, 100);
554
- return;
555
- }
556
438
 
557
- if (!Wick.MiniBasketSliderFE.isMiniBasketLoaded) {
558
- Wick.MiniBasketSliderFE.updateCart(
559
- true,
560
- undefined,
561
- undefined,
562
- false,
563
- function (response, params) {
564
- Wick.MiniBasketSliderFE.updateCartAction(response, params);
565
- Wick.MiniBasketSliderFE.isMiniBasketLoaded = true;
566
- Wick.MiniBasketSliderFE.isMiniBasketOpened = true;
567
- Wick.MiniBasketSliderFE.showMiniBasketEvent();
568
- }
569
- );
570
- } else {
571
- Wick.MiniBasketSliderFE.showMiniBasketEvent();
439
+ !duplicate || arr.push(`<div class="products__promo">${entry.description}</div>`);
440
+
441
+ } else {
442
+ arr.push(`<div class="products__promo">${entry.description}</div>`);
443
+ }
572
444
  }
573
- },
574
- showMiniBasketEvent() {
575
- return new Promise((resolve, reject) => {
576
- const eventDetail = { resolve, reject };
577
- const event = createEvent(
578
- Wick.MiniBasketSliderFE.events.SHOW_MINI_BASKET,
579
- {},
580
- eventDetail
581
- );
582
- window.dispatchEvent(event);
583
- });
584
- },
585
- bindMiniBasketBtnHandler(selector, eventName) {
586
- $(document).on('click', selector, function (e) {
587
- e.preventDefault();
588
- return new Promise((resolve, reject) => {
589
- const eventDetail = { resolve, reject };
590
- const event = createEvent(eventName, {}, eventDetail);
591
- window.dispatchEvent(event);
592
- })
593
- .then(() => {
594
- window.location.href = $(selector).attr('href');
595
- })
596
- .catch((error) => {
597
- console.error(error);
598
- });
445
+ })
446
+ });
447
+
448
+ return arr.length ? `<div class="products__offers">${arr.join('')}</div>` : ''
449
+ },
450
+ initPopupSlider() {
451
+ createPopupSlider({
452
+ type: 'miniBasket',
453
+ sliderSelector: '.custom-slider.mini-basket',
454
+ onAppendEvent: Wick.MiniBasketSliderFE.events.SHOW_MINI_BASKET,
455
+ onAppend: function (event, { showSlider }) {
456
+ Wick.MiniBasketSliderFE.toggleMiniBasketEmptyView();
457
+ showSlider();
458
+ },
459
+ onClose: function () {
460
+ $(Wick.MiniBasketSliderFE.el.notifications).empty();
461
+ Wick.MiniBasketSliderFE.isMiniBasketOpened = false;
462
+ Wick.MiniBasketSliderFE.actionEventType = null;
463
+ }
464
+ });
465
+ },
466
+ toggleMiniBasketEmptyView() {
467
+ if (!Wick.MiniBasketSliderFE.cartEntries.length) {
468
+ if (!$(Wick.MiniBasketSliderFE.el.customSliderEmpty).length) {
469
+ $(Wick.MiniBasketSliderFE.el.customSliderWrap).append(miniBasketEmpty());
470
+ $(Wick.MiniBasketSliderFE.el.miniBasketFooter).addClass(Wick.MiniBasketSliderFE.classes.HIDDEN_CLASS_NAME);
471
+ }
472
+ } else {
473
+ $(Wick.MiniBasketSliderFE.el.customSliderWrap).find(Wick.MiniBasketSliderFE.el.customSliderEmpty).remove();
474
+ $(Wick.MiniBasketSliderFE.el.miniBasketFooter).removeClass(Wick.MiniBasketSliderFE.classes.HIDDEN_CLASS_NAME);
475
+
476
+ if (!$(Wick.MiniBasketSliderFE.el.products).length) {
477
+ $(Wick.MiniBasketSliderFE.el.customSliderWrap).append('<div class="products popover-mini-basket__cards-holder"></div>');
478
+ }
479
+ }
480
+ },
481
+ appendMiniBasketWrap() {
482
+ if(!$(Wick.MiniBasketSliderFE.el.miniBasket).length) {
483
+ $('body').append(miniBasketMainWrap());
484
+ }
485
+ },
486
+ isEmptyBasketLocal() {
487
+ return window.location.pathname.includes('page_product-details-saved-pl.html');
488
+ },
489
+ shouldReloadPage: function() {
490
+ return urlsToReload.includes(window.location.pathname);
491
+ },
492
+ openMiniBasket() {
493
+ if (Wick.MiniBasketSliderFE.isInitial && Wick.checkLocalEnv) {
494
+ const initialCartState = Wick.MiniBasketSliderFE.isEmptyBasketLocal()
495
+ ? Wick.MiniBasketData.initialCartEmptyState
496
+ : Wick.MiniBasketData.initialCartState;
497
+
498
+ Wick.MiniBasketSliderFE.getCartEntries(initialCartState);
499
+
500
+ updateTotal(
501
+ initialCartState,
502
+ Wick.MiniBasketSliderFE.getEqualMapForUpdateCart(initialCartState)
503
+ );
504
+ Wick.MiniBasketSliderFE.repaintOrderItems(initialCartState);
505
+ Wick.MiniBasketSliderFE.showMiniBasketEvent();
506
+ setTimeout(() => {
507
+ Wick.MiniBasketSliderFE.isInitial = false;
508
+ }, 100);
509
+ return;
510
+ }
511
+
512
+ if (!Wick.MiniBasketSliderFE.isMiniBasketLoaded) {
513
+ Wick.MiniBasketSliderFE.updateCart(true, undefined, undefined, false, function (response, params) {
514
+ Wick.MiniBasketSliderFE.updateCartAction(response, params);
515
+ Wick.MiniBasketSliderFE.isMiniBasketLoaded = true;
516
+ Wick.MiniBasketSliderFE.isMiniBasketOpened = true;
517
+ Wick.MiniBasketSliderFE.showMiniBasketEvent();
518
+ });
519
+ } else {
520
+ Wick.MiniBasketSliderFE.showMiniBasketEvent();
521
+ }
522
+ },
523
+ showMiniBasketEvent() {
524
+ return new Promise((resolve, reject) => {
525
+ const eventDetail = { resolve, reject };
526
+ const event = createEvent(
527
+ Wick.MiniBasketSliderFE.events.SHOW_MINI_BASKET,
528
+ {},
529
+ eventDetail
530
+ );
531
+ window.dispatchEvent(event);
532
+ });
533
+ },
534
+ bindMiniBasketBtnHandler(selector, eventName) {
535
+ $(document).on('click', selector, function(e) {
536
+ e.preventDefault();
537
+ return new Promise((resolve, reject) => {
538
+ const eventDetail = { resolve, reject };
539
+ const event = createEvent(eventName, {}, eventDetail);
540
+ window.dispatchEvent(event);
541
+ })
542
+ .then(() => {
543
+ window.location.href = $(selector).attr('href');
544
+ })
545
+ .catch((error) => {
546
+ console.error(error);
599
547
  });
600
- },
601
- init() {
602
- $(Wick.MiniBasketSliderFE.el.miniBasket).on(
603
- 'click',
604
- Wick.MiniBasketSliderFE.el.btnQuantity,
605
- Wick.MiniBasketSliderFE.miniBasketUpdateItemQuantity
606
- );
607
- $(Wick.MiniBasketSliderFE.el.miniBasket).on(
608
- 'click',
609
- Wick.MiniBasketSliderFE.el.btnRemove,
610
- Wick.MiniBasketSliderFE.miniBasketUpdateItemQuantity
611
- );
612
-
613
- Wick.MiniBasketSliderFE.bindMiniBasketBtnHandler(
614
- Wick.MiniBasketSliderFE.el.btnCheckout,
615
- Wick.MiniBasketSliderFE.events.MINI_BASKET_CHECKOUT
616
- );
617
-
618
- Wick.MiniBasketSliderFE.bindMiniBasketBtnHandler(
619
- Wick.MiniBasketSliderFE.el.btnViewBasket,
620
- Wick.MiniBasketSliderFE.events.MINI_BASKET_VIEW_BASKET
621
- );
622
- },
623
- };
548
+ });
549
+ },
550
+ init () {
551
+ $(Wick.MiniBasketSliderFE.el.miniBasket).on('click', Wick.MiniBasketSliderFE.el.btnQuantity, Wick.MiniBasketSliderFE.miniBasketUpdateItemQuantity);
552
+ $(Wick.MiniBasketSliderFE.el.miniBasket).on('click', Wick.MiniBasketSliderFE.el.btnRemove, Wick.MiniBasketSliderFE.miniBasketUpdateItemQuantity);
553
+
554
+ Wick.MiniBasketSliderFE.bindMiniBasketBtnHandler(
555
+ Wick.MiniBasketSliderFE.el.btnCheckout,
556
+ Wick.MiniBasketSliderFE.events.MINI_BASKET_CHECKOUT
557
+ );
558
+
559
+ Wick.MiniBasketSliderFE.bindMiniBasketBtnHandler(
560
+ Wick.MiniBasketSliderFE.el.btnViewBasket,
561
+ Wick.MiniBasketSliderFE.events.MINI_BASKET_VIEW_BASKET
562
+ );
563
+ }
564
+ }
624
565
 
625
566
  $(document).ready(function () {
626
- const $minicartBtn = $('.header-minicart .header-minicart__btn');
627
- if (!$minicartBtn.length) return;
567
+ const $minicartBtn = $('.header-minicart .header-minicart__btn');
568
+ if (!$minicartBtn.length) return;
628
569
 
629
- if (Wick.MiniBasketSliderFE.shouldReloadPage()) {
630
- $minicartBtn.on('click', () => window.location.reload());
631
- return;
632
- }
570
+ if (Wick.MiniBasketSliderFE.shouldReloadPage()) {
571
+ $minicartBtn.on('click', () => window.location.reload());
572
+ return;
573
+ }
633
574
 
634
- $minicartBtn.on('click', () => Wick.MiniBasketSliderFE.openMiniBasket());
575
+ $minicartBtn.on('click', () => Wick.MiniBasketSliderFE.openMiniBasket());
635
576
 
636
- Wick.MiniBasketSliderFE.appendMiniBasketWrap();
637
- Wick.MiniBasketSliderFE.initPopupSlider();
638
- Wick.MiniBasketSliderFE.init();
577
+ Wick.MiniBasketSliderFE.appendMiniBasketWrap();
578
+ Wick.MiniBasketSliderFE.initPopupSlider();
579
+ Wick.MiniBasketSliderFE.init();
639
580
  });