wickes-css2 2.105.0-develop.2 → 2.105.0-develop.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (168) hide show
  1. package/Readme.md +3 -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/page_product_search.css +1 -1
  9. package/build/css/pages/page_products-list-combined.css +1 -1
  10. package/build/css/pages/page_products-list.css +1 -1
  11. package/build/css/pdp-main-before-combine.css +1 -1
  12. package/build/css/pdp-main-non-critical.css +1 -1
  13. package/build/css/pdp-main.css +1 -1
  14. package/build/css/plp-main.css +1 -1
  15. package/build/css/store-locator-main.css +1 -1
  16. package/build/js/account-members.min.js +1 -1
  17. package/build/js/basket.min.js +2 -2
  18. package/build/js/bundle.min.js +1 -1
  19. package/build/js/checkout.min.js +2 -2
  20. package/build/js/emulation.min.js +12122 -11594
  21. package/build/js/general.bundle.min.js +1 -1
  22. package/build/js/kitchen/kitchen-plp.min.js +1 -9
  23. package/build/js/merged-checkout.min.js +2 -2
  24. package/build/js/mini-basket-slider.min.js +1 -1
  25. package/build/js/page/basket/basket-update-cart-action.js +59 -56
  26. package/build/js/page/basket/basket-update-cart.js +27 -27
  27. package/build/js/page/basket/basket-utils.js +40 -33
  28. package/build/js/page/basket/mini-basket-total.js +70 -66
  29. package/build/js/page/basket/quantity-change-handler.js +73 -55
  30. package/build/js/page/basket/update-quantity-operation.js +39 -30
  31. package/build/js/page/basket/update-quantity.js +62 -62
  32. package/build/js/page/basket-v2.js +362 -229
  33. package/build/js/page/billie-business-type.js +27 -27
  34. package/build/js/page/checkout-payment-details.js +301 -299
  35. package/build/js/page/components/discounts.js +39 -36
  36. package/build/js/page/components/mini-basket-slider.js +604 -545
  37. package/build/js/page/filters/desktop-nav.js +64 -0
  38. package/build/js/page/filters/mobile-nav.js +93 -0
  39. package/build/js/page/filters/plp-filters-chips.js +92 -0
  40. package/build/js/page/filters/plp-filters-mobile.js +150 -0
  41. package/build/js/page/filters/plp-filters-panel.js +123 -0
  42. package/build/js/page/filters/plp-filters-utils.js +66 -0
  43. package/build/js/page/filters/plp-filters.js +256 -0
  44. package/build/js/page/filters/sort-by.js +172 -0
  45. package/build/js/page/klarna-modal-scroll-disable.js +4 -4
  46. package/build/js/page/online-exclusive.js +28 -30
  47. package/build/js/page/search-filter.js +62 -0
  48. package/build/js/page/utils/helpers.js +14 -9
  49. package/build/js/page/utils/show-more-less.js +273 -0
  50. package/build/js/pdp.bundle.min.js +1 -1
  51. package/build/js/plp-filters.min.js +9 -0
  52. package/build/js/plp.bundle.min.js +1 -1
  53. package/build/js/project-list.min.js +1 -1
  54. package/build/js/search-filter.min.js +1 -0
  55. package/package.json +5 -3
  56. package/src/components/accordion.hbs +2 -2
  57. package/src/components/generate-project-id.hbs +1 -1
  58. package/src/components/kitchen/dropdown.hbs +6 -3
  59. package/src/components/kitchen/filter-modal-content-kitchen.hbs +10 -0
  60. package/src/components/kitchen/filter-modal.hbs +10 -13
  61. package/src/components/kitchen/plp-filters.hbs +3 -1
  62. package/src/components/kitchen/sort-by.hbs +1 -1
  63. package/src/components/search-filter-modal-content.hbs +102 -0
  64. package/src/components/search-filter.hbs +121 -112
  65. package/src/components/shopping-list-with-share-list-v2.hbs +28 -10
  66. package/src/components/shopping-list.hbs +5 -5
  67. package/src/data/data_plp_load-more.json +1 -1
  68. package/src/elements/btn.hbs +7 -0
  69. package/src/js/components/general/accordion.js +38 -29
  70. package/src/js/components/general/cart-slider.js +19 -16
  71. package/src/js/components/general/create-popup-slider.js +168 -173
  72. package/src/js/emulation/big-wins.js +1081 -904
  73. package/src/js/emulation/billie-modal.js +23 -19
  74. package/src/js/emulation/checkout-payment-details.js +47 -38
  75. package/src/js/emulation/custom-slider-emulation.js +17 -13
  76. package/src/js/emulation/filters-emulation.js +164 -0
  77. package/src/js/emulation/forms.js +360 -323
  78. package/src/js/emulation/mini-basket-data.js +1051 -923
  79. package/src/js/emulation/paymentLoader.js +17 -17
  80. package/src/js/emulation/pdf-file-loader.js +89 -91
  81. package/src/js/emulation/popover-mini-basket.js +246 -239
  82. package/src/js/emulation/product-counter.js +50 -0
  83. package/src/js/emulation/project-list-pdp.js +321 -316
  84. package/src/js/emulation/repayment-toggle.js +23 -24
  85. package/src/js/emulation/reset-filter-desktop.js +5 -0
  86. package/src/js/emulation/selectable.js +22 -18
  87. package/src/js/emulation/wismo-details.js +23 -31
  88. package/src/js/page/basket/basket-update-cart-action.js +59 -56
  89. package/src/js/page/basket/basket-update-cart.js +27 -27
  90. package/src/js/page/basket/basket-utils.js +40 -33
  91. package/src/js/page/basket/mini-basket-total.js +70 -66
  92. package/src/js/page/basket/quantity-change-handler.js +73 -55
  93. package/src/js/page/basket/update-quantity-operation.js +39 -30
  94. package/src/js/page/basket/update-quantity.js +62 -62
  95. package/src/js/page/basket-v2.js +362 -229
  96. package/src/js/page/billie-business-type.js +27 -27
  97. package/src/js/page/checkout-payment-details.js +301 -299
  98. package/src/js/page/components/discounts.js +39 -36
  99. package/src/js/page/components/mini-basket-slider.js +604 -545
  100. package/src/js/page/filters/desktop-nav.js +64 -0
  101. package/src/js/page/filters/mobile-nav.js +93 -0
  102. package/src/js/page/filters/plp-filters-chips.js +92 -0
  103. package/src/js/page/filters/plp-filters-mobile.js +150 -0
  104. package/src/js/page/filters/plp-filters-panel.js +123 -0
  105. package/src/js/page/filters/plp-filters-utils.js +66 -0
  106. package/src/js/page/filters/plp-filters.js +256 -0
  107. package/src/js/page/filters/sort-by.js +172 -0
  108. package/src/js/page/klarna-modal-scroll-disable.js +4 -4
  109. package/src/js/page/online-exclusive.js +28 -30
  110. package/src/js/page/search-filter.js +62 -0
  111. package/src/js/page/utils/helpers.js +14 -9
  112. package/src/js/page/utils/show-more-less.js +273 -0
  113. package/src/page_empty-shared-project-list-bicester-hub.html +3 -0
  114. package/src/page_kitchen-plp.html +2 -2
  115. package/src/page_my-shopping-list-hide-download.html +1 -1
  116. package/src/page_plp-with-paint.html +2 -7
  117. package/src/page_plp.html +2 -7
  118. package/src/page_plp_v2-energy-efficiency.html +1 -6
  119. package/src/page_plp_v2-favourite-products.html +6 -7
  120. package/src/page_plp_v2-vat.html +2 -7
  121. package/src/page_plp_v2.html +22 -9
  122. package/src/page_product_search-vat.html +2 -7
  123. package/src/page_product_search.html +2 -7
  124. package/src/page_project-list-with-new-share-popup-android.html +15 -0
  125. package/src/page_project-list-with-new-share-popup-ios.html +15 -0
  126. package/src/page_project-list-with-new-share-popup.html +1 -0
  127. package/src/page_search-results.html +2 -7
  128. package/src/page_shared-project-list-bicester-hub.html +1 -0
  129. package/src/scss/common/_common.scss +5 -4
  130. package/src/scss/components/_accordion.scss +1 -3
  131. package/src/scss/components/_custom-slider.scss +15 -14
  132. package/src/scss/components/_date-selection-add-new-styles.scss +6 -7
  133. package/src/scss/components/_date-selection.scss +1 -1
  134. package/src/scss/components/{kitchen/_filter-modal.scss → _filter-modal.scss} +55 -4
  135. package/src/scss/components/{kitchen/_plp-filters.scss → _plp-filters.scss} +31 -13
  136. package/src/scss/components/_popover-mini-basket.scss +3 -3
  137. package/src/scss/components/_search-filter.scss +95 -15
  138. package/src/scss/components/_shared-shopping-list.scss +22 -0
  139. package/src/scss/components/_shopping-list.scss +18 -8
  140. package/src/scss/components/_sort-by.scss +190 -0
  141. package/src/scss/components/checkout-chip.scss +2 -2
  142. package/src/scss/components/checkout-payment-repayment-terms.scss +1 -1
  143. package/src/scss/globals/_global-components.scss +3 -0
  144. package/src/scss/helpers/_colors-semantic.scss +68 -68
  145. package/src/scss/helpers/_variables.scss +242 -196
  146. package/src/scss/kitchen-plp-main.scss +0 -3
  147. package/src/scss/main.scss +65 -65
  148. package/src/scss/pages/page_product-details-v2.scss +1 -4
  149. package/src/scss/pages/page_product_search.scss +9 -1
  150. package/src/scss/pages/page_products-list-combined.scss +28 -24
  151. package/src/scss/pages/page_products-list.scss +8 -0
  152. package/src/scss/pages/tradePro-rewards.scss +2 -3
  153. package/src/sitemap.html +9 -1
  154. package/build/js/page/accordion.js +0 -35
  155. package/build/js/page/kitchen/plp-filters-chips.js +0 -90
  156. package/build/js/page/kitchen/plp-filters-mobile.js +0 -72
  157. package/build/js/page/kitchen/plp-filters-panel.js +0 -119
  158. package/build/js/page/kitchen/plp-filters-utils.js +0 -65
  159. package/build/js/page/kitchen/plp-filters.js +0 -205
  160. package/build/js/page/kitchen/sort-by.js +0 -157
  161. package/src/js/components/general/search-filter.js +0 -21
  162. package/src/js/page/accordion.js +0 -35
  163. package/src/js/page/kitchen/plp-filters-chips.js +0 -90
  164. package/src/js/page/kitchen/plp-filters-mobile.js +0 -72
  165. package/src/js/page/kitchen/plp-filters-panel.js +0 -119
  166. package/src/js/page/kitchen/plp-filters-utils.js +0 -65
  167. package/src/js/page/kitchen/plp-filters.js +0 -205
  168. package/src/js/page/kitchen/sort-by.js +0 -157
@@ -1,307 +1,309 @@
1
1
  var Wick = Wick || {};
2
- Wick.CheckoutPaymentDetails = (function() {
3
- const $modal = $('#modal-terms-and-conditions');
4
-
5
- let prevPaymentMethod = null;
6
- let prevClearableMethod;
7
-
8
- let detailsLabel = {
9
- inputName: 'card-name', buttonName: 'btn-enter-details',
10
- };
11
-
12
- const elements = {
13
- $billieRepaymentTerms: $('.js-billie-repayment-terms'),
14
- $billieInfoBlock: $('.checkout-payment-details__billie'),
15
- $wrapperPaymentInput: $('.checkout-payment-details__row'),
16
- paymentInputName: '[name=payment-method]',
17
- $cardDetails: $('.checkout-payment-details__card-details'),
18
- $placeOrder: $('.checkout-payment-details__place-order'),
19
- $billingAddress: $('.billing-address'),
20
- hiddenCardDetailsClass: 'checkout-payment-details__card-details_hidden',
21
- $billieBusiness: $('[data-billie-business]'),
22
- businessTypeName: '[name="businessType"]',
23
- $unregisteredFields: $('#unregistered-fields'),
24
- $registeredFields: $('#registered-fields'),
25
- hiddenClass: 'd-none',
26
- };
27
-
28
- function preparePage() {
29
- var modalOpened = $('.modal.show').length;
30
- if (!modalOpened) return;
31
-
32
- var modalContent = $modal.find('.modal-content').clone();
33
- $modal.modal('hide');
34
- modalContent.addClass('print-area');
35
-
36
- $('body')
37
- .addClass('print-mode')
38
- .append(modalContent);
39
- }
40
-
41
- function resetPage() {
42
- var modalPrintModeActive = $('body.print-mode').length;
43
- if (!modalPrintModeActive) return;
44
-
45
- $('body').removeClass('print-mode');
46
- $('.print-area').remove();
47
- $modal.modal('show');
48
- }
49
-
50
- function getPaymentMethods() {
51
- return $(elements.paymentInputName)
52
- .map((_, item) => $(item).val())
53
- .get();
54
- }
55
-
56
- function togglePaymentBlocks(paymentMethods, checkedMethod) {
57
- paymentMethods.forEach(method => {
58
- $(`[data-${method}]`).toggle(checkedMethod === method);
59
- });
60
- }
61
-
62
- function resetAllCheckoutForms(keepPaymentMethod) {
63
- const $container = elements.$wrapperPaymentInput.closest('.checkout-payment-details');
64
- if (!$container.length) return;
65
-
66
- $container.find('form').each(function() {
67
- if (Wick.Forms && typeof Wick.Forms.clearValidationErrors === 'function') {
68
- Wick.Forms.clearValidationErrors(this);
69
- }
70
- });
71
-
72
- $container
73
- .find('input[type="text"], input[type="email"], input[type="tel"], input[type="number"], input[type="password"], textarea')
74
- .val('');
75
-
76
- $container.find('select').each(function() {
77
- this.selectedIndex = 0;
78
- });
79
-
80
- $container.find('input[type="checkbox"]').prop('checked', false);
81
-
82
- $container.find('input[type="radio"]').each(function() {
83
- const $radio = $(this);
84
- const name = $radio.attr('name');
85
- const val = $radio.val();
86
-
87
- if (name === 'payment-method') {
88
- $radio.prop('checked', val === keepPaymentMethod);
89
- } else {
90
- $radio.prop('checked', false);
91
- }
92
- });
93
-
94
- $container.find('.radio-expanded-content').hide();
95
- }
96
-
97
- function setBillingDetailsRowVisibility(isVisible) {
98
- const $row = elements.$billingAddress.find('.checkout-payment-details__row');
99
- $row.toggle(isVisible);
100
- $row.find(':input').prop('disabled', !isVisible);
101
- }
102
-
103
- function setBillieStepVisibility(isReady) {
104
- setBillingDetailsRowVisibility(isReady);
105
- elements.$billieInfoBlock.toggle(isReady);
106
- }
107
-
108
- function resetBillieRepaymentSelection() {
109
- elements.$billieRepaymentTerms
110
- .find('input[name="repaymentTerms"]')
111
- .prop('checked', false);
112
- }
113
-
114
- function showBillieBusiness() {
115
- elements.$billieBusiness.removeClass(elements.hiddenClass);
116
- }
117
-
118
- function hideBillieBusiness() {
119
- elements.$billieBusiness.addClass(elements.hiddenClass);
120
-
121
- elements.$unregisteredFields
122
- .addClass(elements.hiddenClass)
123
- .removeAttr('style');
124
-
125
- elements.$registeredFields
126
- .addClass(elements.hiddenClass)
127
- .removeAttr('style');
128
-
129
- elements.$billieBusiness.find('input[type="radio"]').prop('checked', false);
130
- elements.$billieBusiness.find('input.tbx').val('');
131
- }
132
-
133
- function toggleBusinessTypeFields(type) {
134
- const isUnregistered = type === 'unregistered';
135
- const isRegistered = type === 'registered';
136
-
137
- elements.$unregisteredFields.toggleClass(elements.hiddenClass, !isUnregistered);
138
- elements.$registeredFields.toggleClass(elements.hiddenClass, !isRegistered);
139
- }
140
-
141
-
142
- function changeDetailsBlock(checkedMethod) {
143
- if (checkedMethod !== 'billie') {
144
- setBillingDetailsRowVisibility(true);
2
+ Wick.CheckoutPaymentDetails = (function () {
3
+ const $modal = $('#modal-terms-and-conditions');
4
+
5
+ let prevPaymentMethod = null;
6
+ let prevClearableMethod;
7
+
8
+ let detailsLabel = {
9
+ inputName: 'card-name',
10
+ buttonName: 'btn-enter-details',
11
+ };
12
+
13
+ const elements = {
14
+ $billieRepaymentTerms: $('.js-billie-repayment-terms'),
15
+ $billieInfoBlock: $('.checkout-payment-details__billie'),
16
+ $wrapperPaymentInput: $('.checkout-payment-details__row'),
17
+ paymentInputName: '[name=payment-method]',
18
+ $cardDetails: $('.checkout-payment-details__card-details'),
19
+ $placeOrder: $('.checkout-payment-details__place-order'),
20
+ $billingAddress: $('.billing-address'),
21
+ hiddenCardDetailsClass: 'checkout-payment-details__card-details_hidden',
22
+ $billieBusiness: $('[data-billie-business]'),
23
+ businessTypeName: '[name="businessType"]',
24
+ $unregisteredFields: $('#unregistered-fields'),
25
+ $registeredFields: $('#registered-fields'),
26
+ hiddenClass: 'd-none',
27
+ };
28
+
29
+ function preparePage() {
30
+ var modalOpened = $('.modal.show').length;
31
+ if (!modalOpened) return;
32
+
33
+ var modalContent = $modal.find('.modal-content').clone();
34
+ $modal.modal('hide');
35
+ modalContent.addClass('print-area');
36
+
37
+ $('body').addClass('print-mode').append(modalContent);
145
38
  }
146
39
 
147
- switch (checkedMethod) {
148
- case 'paypal':
149
- hideCardDetails();
150
- showPlaceOrder();
151
- hideBillingAddres();
152
- break;
153
-
154
- case 'klarna':
155
- hideBillingAddres();
156
- break;
157
-
158
- case 'billie':
159
- detailsLabel = {
160
- ...detailsLabel, labelText: 'Name on Billie account', buttonText: 'Pay with Billie',
161
- };
162
- changeLabelText(detailsLabel);
163
-
164
- setBillieStepVisibility(false);
165
- resetBillieRepaymentSelection();
166
- showBillieBusiness();
167
- break;
168
-
169
- case 'clearpay':
170
- detailsLabel = {
171
- ...detailsLabel, labelText: 'Name on Clearpay account', buttonText: 'Pay with Clearpay',
172
- };
173
- prevClearableMethod === 'card' && clearInputFields();
174
- changeLabelText(detailsLabel);
175
- prevClearableMethod = checkedMethod;
176
- break;
177
-
178
- case 'apple':
179
- hideCardDetails();
180
- hidePlaceOrder();
181
- hideBillingAddres();
182
- break;
183
-
184
- case 'google':
185
- hideCardDetails();
186
- hidePlaceOrder();
187
- hideBillingAddres();
188
- break;
189
-
190
- case 'card':
191
- detailsLabel = {
192
- ...detailsLabel, labelText: 'Name on card', buttonText: 'Enter card details',
193
- };
194
- prevClearableMethod === 'clearpay' && clearInputFields();
195
- changeLabelText(detailsLabel);
196
- prevClearableMethod = checkedMethod;
197
- break;
198
-
199
- default:
200
- showPlaceOrder();
40
+ function resetPage() {
41
+ var modalPrintModeActive = $('body.print-mode').length;
42
+ if (!modalPrintModeActive) return;
43
+
44
+ $('body').removeClass('print-mode');
45
+ $('.print-area').remove();
46
+ $modal.modal('show');
47
+ }
48
+
49
+ function getPaymentMethods() {
50
+ return $(elements.paymentInputName)
51
+ .map((_, item) => $(item).val())
52
+ .get();
53
+ }
54
+
55
+ function togglePaymentBlocks(paymentMethods, checkedMethod) {
56
+ paymentMethods.forEach((method) => {
57
+ $(`[data-${method}]`).toggle(checkedMethod === method);
58
+ });
59
+ }
60
+
61
+ function resetAllCheckoutForms(keepPaymentMethod) {
62
+ const $container = elements.$wrapperPaymentInput.closest('.checkout-payment-details');
63
+ if (!$container.length) return;
64
+
65
+ $container.find('form').each(function () {
66
+ if (Wick.Forms && typeof Wick.Forms.clearValidationErrors === 'function') {
67
+ Wick.Forms.clearValidationErrors(this);
68
+ }
69
+ });
70
+
71
+ $container
72
+ .find(
73
+ 'input[type="text"], input[type="email"], input[type="tel"], input[type="number"], input[type="password"], textarea'
74
+ )
75
+ .val('');
76
+
77
+ $container.find('select').each(function () {
78
+ this.selectedIndex = 0;
79
+ });
80
+
81
+ $container.find('input[type="checkbox"]').prop('checked', false);
82
+
83
+ $container.find('input[type="radio"]').each(function () {
84
+ const $radio = $(this);
85
+ const name = $radio.attr('name');
86
+ const val = $radio.val();
87
+
88
+ if (name === 'payment-method') {
89
+ $radio.prop('checked', val === keepPaymentMethod);
90
+ } else {
91
+ $radio.prop('checked', false);
92
+ }
93
+ });
94
+
95
+ $container.find('.radio-expanded-content').hide();
96
+ }
97
+
98
+ function setBillingDetailsRowVisibility(isVisible) {
99
+ const $row = elements.$billingAddress.find('.checkout-payment-details__row');
100
+ $row.toggle(isVisible);
101
+ $row.find(':input').prop('disabled', !isVisible);
102
+ }
103
+
104
+ function setBillieStepVisibility(isReady) {
105
+ setBillingDetailsRowVisibility(isReady);
106
+ elements.$billieInfoBlock.toggle(isReady);
107
+ }
108
+
109
+ function resetBillieRepaymentSelection() {
110
+ elements.$billieRepaymentTerms.find('input[name="repaymentTerms"]').prop('checked', false);
111
+ }
112
+
113
+ function showBillieBusiness() {
114
+ elements.$billieBusiness.removeClass(elements.hiddenClass);
115
+ }
116
+
117
+ function hideBillieBusiness() {
118
+ elements.$billieBusiness.addClass(elements.hiddenClass);
119
+
120
+ elements.$unregisteredFields.addClass(elements.hiddenClass).removeAttr('style');
121
+
122
+ elements.$registeredFields.addClass(elements.hiddenClass).removeAttr('style');
123
+
124
+ elements.$billieBusiness.find('input[type="radio"]').prop('checked', false);
125
+ elements.$billieBusiness.find('input.tbx').val('');
126
+ }
127
+
128
+ function toggleBusinessTypeFields(type) {
129
+ const isUnregistered = type === 'unregistered';
130
+ const isRegistered = type === 'registered';
131
+
132
+ elements.$unregisteredFields.toggleClass(elements.hiddenClass, !isUnregistered);
133
+ elements.$registeredFields.toggleClass(elements.hiddenClass, !isRegistered);
201
134
  }
202
- }
203
-
204
- function hideCardDetails() {
205
- elements.$cardDetails.addClass(elements.hiddenCardDetailsClass);
206
- }
207
-
208
- function hideBillingAddres() {
209
- elements.$billingAddress.addClass(elements.hiddenClass);
210
- }
211
-
212
- function changeLabelText(params) {
213
- const { inputName, labelText, buttonName, buttonText } = params;
214
-
215
- elements.$billingAddress.removeClass(elements.hiddenClass);
216
-
217
- let labelElement = elements.$billingAddress.find('[for="' + inputName + '"]');
218
- let buttonElement = elements.$billingAddress.find('.' + buttonName + ' .btn__text');
219
-
220
- labelElement && labelElement.text(labelText);
221
- buttonElement && buttonElement.text(buttonText);
222
- }
223
-
224
- function clearInputFields() {
225
- elements.$billingAddress.find('input.tbx').val('');
226
- }
227
-
228
- function showPlaceOrder() {
229
- elements.$placeOrder.removeClass(elements.hiddenClass);
230
- }
231
-
232
- function hidePlaceOrder() {
233
- elements.$placeOrder.addClass(elements.hiddenClass);
234
- }
235
-
236
- function initBillieBusinessTypeToggle() {
237
- $(document).on('change', elements.businessTypeName, function () {
238
- toggleBusinessTypeFields($(this).val());
239
- });
240
- }
241
-
242
- function init() {
243
- const paymentMethods = getPaymentMethods();
244
- initBillieBusinessTypeToggle();
245
- hideBillieBusiness();
246
-
247
- $(document).on('change', 'input[name="repaymentTerms"]', function() {
248
- const currentMethod = $(elements.paymentInputName + ':checked').val();
249
- if (currentMethod !== 'billie') return;
250
-
251
- const hasSelection = $('input[name="repaymentTerms"]:checked').length > 0;
252
- setBillieStepVisibility(hasSelection);
253
-
254
- const $row = $(this).closest('.form-row[data-row-required]');
255
- $row.removeClass('form-row_validation-error')
256
- .find('.form-row__error').remove();
257
- });
258
-
259
- elements.$wrapperPaymentInput.on('change', elements.paymentInputName, function() {
260
- const checkedMethod = $(this).val();
261
-
262
- if (prevPaymentMethod && prevPaymentMethod !== checkedMethod) {
263
- resetAllCheckoutForms(checkedMethod);
264
- } else {
265
- const form = $(this).closest('form')[0];
266
- form && Wick.Forms && Wick.Forms.clearValidationErrors && Wick.Forms.clearValidationErrors(form);
267
- }
268
-
269
- togglePaymentBlocks(paymentMethods, checkedMethod);
270
- changeDetailsBlock(checkedMethod);
271
-
272
- prevPaymentMethod = checkedMethod;
273
- });
274
-
275
- $('.btn-new-card').on('click', function() {
276
- $('[data-new-card]').show();
277
- $('[data-existing-card]').hide();
278
- return false;
279
- });
280
-
281
- $('.btn-back-to-existing-card').on('click', function() {
282
- $('[data-new-card]').hide();
283
- $('[data-existing-card]').show();
284
- return false;
285
- });
286
-
287
- prevPaymentMethod = $(elements.paymentInputName + ':checked').val() || null;
288
-
289
- if (!$modal.length) return;
290
-
291
- if (typeof (window.onbeforeprint) !== 'undefined') {
292
- window.onbeforeprint = preparePage;
293
- window.onafterprint = resetPage;
294
- } else if (window.matchMedia) {
295
- var mediaQueryList = window.matchMedia('print');
296
- mediaQueryList.addListener(function(mql) {
297
- if (mql.matches) {
298
- preparePage();
299
- } else {
300
- resetPage();
135
+
136
+ function changeDetailsBlock(checkedMethod) {
137
+ if (checkedMethod !== 'billie') {
138
+ setBillingDetailsRowVisibility(true);
139
+ }
140
+
141
+ switch (checkedMethod) {
142
+ case 'paypal':
143
+ hideCardDetails();
144
+ showPlaceOrder();
145
+ hideBillingAddres();
146
+ break;
147
+
148
+ case 'klarna':
149
+ hideBillingAddres();
150
+ break;
151
+
152
+ case 'billie':
153
+ detailsLabel = {
154
+ ...detailsLabel,
155
+ labelText: 'Name on Billie account',
156
+ buttonText: 'Pay with Billie',
157
+ };
158
+ changeLabelText(detailsLabel);
159
+
160
+ setBillieStepVisibility(false);
161
+ resetBillieRepaymentSelection();
162
+ showBillieBusiness();
163
+ break;
164
+
165
+ case 'clearpay':
166
+ detailsLabel = {
167
+ ...detailsLabel,
168
+ labelText: 'Name on Clearpay account',
169
+ buttonText: 'Pay with Clearpay',
170
+ };
171
+ prevClearableMethod === 'card' && clearInputFields();
172
+ changeLabelText(detailsLabel);
173
+ prevClearableMethod = checkedMethod;
174
+ break;
175
+
176
+ case 'apple':
177
+ hideCardDetails();
178
+ hidePlaceOrder();
179
+ hideBillingAddres();
180
+ break;
181
+
182
+ case 'google':
183
+ hideCardDetails();
184
+ hidePlaceOrder();
185
+ hideBillingAddres();
186
+ break;
187
+
188
+ case 'card':
189
+ detailsLabel = {
190
+ ...detailsLabel,
191
+ labelText: 'Name on card',
192
+ buttonText: 'Enter card details',
193
+ };
194
+ prevClearableMethod === 'clearpay' && clearInputFields();
195
+ changeLabelText(detailsLabel);
196
+ prevClearableMethod = checkedMethod;
197
+ break;
198
+
199
+ default:
200
+ showPlaceOrder();
201
+ }
202
+ }
203
+
204
+ function hideCardDetails() {
205
+ elements.$cardDetails.addClass(elements.hiddenCardDetailsClass);
206
+ }
207
+
208
+ function hideBillingAddres() {
209
+ elements.$billingAddress.addClass(elements.hiddenClass);
210
+ }
211
+
212
+ function changeLabelText(params) {
213
+ const { inputName, labelText, buttonName, buttonText } = params;
214
+
215
+ elements.$billingAddress.removeClass(elements.hiddenClass);
216
+
217
+ let labelElement = elements.$billingAddress.find('[for="' + inputName + '"]');
218
+ let buttonElement = elements.$billingAddress.find('.' + buttonName + ' .btn__text');
219
+
220
+ labelElement && labelElement.text(labelText);
221
+ buttonElement && buttonElement.text(buttonText);
222
+ }
223
+
224
+ function clearInputFields() {
225
+ elements.$billingAddress.find('input.tbx').val('');
226
+ }
227
+
228
+ function showPlaceOrder() {
229
+ elements.$placeOrder.removeClass(elements.hiddenClass);
230
+ }
231
+
232
+ function hidePlaceOrder() {
233
+ elements.$placeOrder.addClass(elements.hiddenClass);
234
+ }
235
+
236
+ function initBillieBusinessTypeToggle() {
237
+ $(document).on('change', elements.businessTypeName, function () {
238
+ toggleBusinessTypeFields($(this).val());
239
+ });
240
+ }
241
+
242
+ function init() {
243
+ const paymentMethods = getPaymentMethods();
244
+ initBillieBusinessTypeToggle();
245
+ hideBillieBusiness();
246
+
247
+ $(document).on('change', 'input[name="repaymentTerms"]', function () {
248
+ const currentMethod = $(elements.paymentInputName + ':checked').val();
249
+ if (currentMethod !== 'billie') return;
250
+
251
+ const hasSelection = $('input[name="repaymentTerms"]:checked').length > 0;
252
+ setBillieStepVisibility(hasSelection);
253
+
254
+ const $row = $(this).closest('.form-row[data-row-required]');
255
+ $row.removeClass('form-row_validation-error').find('.form-row__error').remove();
256
+ });
257
+
258
+ elements.$wrapperPaymentInput.on('change', elements.paymentInputName, function () {
259
+ const checkedMethod = $(this).val();
260
+
261
+ if (prevPaymentMethod && prevPaymentMethod !== checkedMethod) {
262
+ resetAllCheckoutForms(checkedMethod);
263
+ } else {
264
+ const form = $(this).closest('form')[0];
265
+ form &&
266
+ Wick.Forms &&
267
+ Wick.Forms.clearValidationErrors &&
268
+ Wick.Forms.clearValidationErrors(form);
269
+ }
270
+
271
+ togglePaymentBlocks(paymentMethods, checkedMethod);
272
+ changeDetailsBlock(checkedMethod);
273
+
274
+ prevPaymentMethod = checkedMethod;
275
+ });
276
+
277
+ $('.btn-new-card').on('click', function () {
278
+ $('[data-new-card]').show();
279
+ $('[data-existing-card]').hide();
280
+ return false;
281
+ });
282
+
283
+ $('.btn-back-to-existing-card').on('click', function () {
284
+ $('[data-new-card]').hide();
285
+ $('[data-existing-card]').show();
286
+ return false;
287
+ });
288
+
289
+ prevPaymentMethod = $(elements.paymentInputName + ':checked').val() || null;
290
+
291
+ if (!$modal.length) return;
292
+
293
+ if (typeof window.onbeforeprint !== 'undefined') {
294
+ window.onbeforeprint = preparePage;
295
+ window.onafterprint = resetPage;
296
+ } else if (window.matchMedia) {
297
+ var mediaQueryList = window.matchMedia('print');
298
+ mediaQueryList.addListener(function (mql) {
299
+ if (mql.matches) {
300
+ preparePage();
301
+ } else {
302
+ resetPage();
303
+ }
304
+ });
301
305
  }
302
- });
303
306
  }
304
- }
305
307
 
306
- init();
308
+ init();
307
309
  })();