wickes-css2 2.103.0-RG-1742-billie-30-60-90-days.1 → 2.103.0-RG-1742-billie-30-60-90-days.3

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 (138) hide show
  1. package/build/css/components/checkout-chip.css +1 -0
  2. package/build/css/components/checkout-payment-details-v2.css +1 -1
  3. package/build/css/components/checkout-payment-repayment-terms.css +1 -0
  4. package/build/css/components/energy-efficiency.css +1 -0
  5. package/build/css/components/global-search.css +1 -0
  6. package/build/css/components/kitchen/strip-stickers.css +1 -0
  7. package/build/css/components/legal-info.css +1 -0
  8. package/build/css/components/loader.css +1 -0
  9. package/build/css/components/long-banner.css +1 -0
  10. package/build/css/components/payment-details-BPS-form.css +1 -0
  11. package/build/css/components/pdf-loader.css +1 -0
  12. package/build/css/components/pdp-favourite-product.css +1 -0
  13. package/build/css/components/plp-favourite-product.css +1 -0
  14. package/build/css/components/price-block-v2-critical.css +1 -0
  15. package/build/css/components/price-block-v2.css +1 -0
  16. package/build/css/components/special-opening-schedule-v2.css +1 -0
  17. package/build/css/components/special-opening-schedule.css +1 -0
  18. package/build/css/components/store-locator-about.css +1 -0
  19. package/build/css/components/store-locator-facilities.css +1 -0
  20. package/build/css/components/store-locator-lookup.css +1 -0
  21. package/build/css/components/store-locator-v2-details.css +1 -0
  22. package/build/css/components/strip-stickers.css +1 -0
  23. package/build/css/components/tile-calculator.css +1 -0
  24. package/build/css/components/trade-pro-extras.css +1 -0
  25. package/build/css/main.css +1 -1
  26. package/build/css/pages/bicester-header.css +1 -0
  27. package/build/css/pages/bicester-project-list.css +1 -0
  28. package/build/css/pages/checkout-new.css +1 -0
  29. package/build/css/pages/checkout.css +1 -0
  30. package/build/css/pages/design-appointment.css +1 -0
  31. package/build/css/pages/home-movers.css +1 -0
  32. package/build/css/pages/iframe-paypage.css +1 -0
  33. package/build/css/pages/my-account-v2.css +1 -0
  34. package/build/css/pages/my-account.css +1 -0
  35. package/build/css/pages/new-usp-bar.css +1 -0
  36. package/build/css/pages/oldweb_header.css +1 -0
  37. package/build/css/pages/page_account-deletion.css +1 -0
  38. package/build/css/pages/page_act-trade-pro.css +1 -0
  39. package/build/css/pages/page_address-book.css +1 -0
  40. package/build/css/pages/page_bathroom-trends.css +1 -0
  41. package/build/css/pages/page_book-consultant-thank-you-new.css +1 -0
  42. package/build/css/pages/page_change-password.css +1 -0
  43. package/build/css/pages/page_checkout-payment-details.css +1 -0
  44. package/build/css/pages/page_checkout_delivery-new.css +1 -0
  45. package/build/css/pages/page_cms_homepage.css +1 -0
  46. package/build/css/pages/page_contact-us.css +1 -0
  47. package/build/css/pages/page_content.css +1 -0
  48. package/build/css/pages/page_coshh.css +1 -0
  49. package/build/css/pages/page_default-store.css +1 -0
  50. package/build/css/pages/page_discount.css +1 -0
  51. package/build/css/pages/page_empty-basket.css +1 -0
  52. package/build/css/pages/page_favourite-list.css +1 -0
  53. package/build/css/pages/page_fdl-management.css +1 -0
  54. package/build/css/pages/page_fdl-product.css +1 -0
  55. package/build/css/pages/page_fi.css +1 -0
  56. package/build/css/pages/page_forgotten-password.css +1 -0
  57. package/build/css/pages/page_half-login.css +1 -0
  58. package/build/css/pages/page_home.css +1 -0
  59. package/build/css/pages/page_hotspot-guttering.css +1 -0
  60. package/build/css/pages/page_in-store-checkout.css +1 -0
  61. package/build/css/pages/page_in-store_MVP_order-summary-submitted.css +1 -0
  62. package/build/css/pages/page_in-store_MVP_order-summary.css +1 -0
  63. package/build/css/pages/page_installation.css +1 -0
  64. package/build/css/pages/page_installer.css +1 -0
  65. package/build/css/pages/page_installer_form.css +1 -0
  66. package/build/css/pages/page_kitchen-claims.css +1 -0
  67. package/build/css/pages/page_kitchen-list.css +1 -0
  68. package/build/css/pages/page_login.css +1 -0
  69. package/build/css/pages/page_marketing-preferences.css +1 -0
  70. package/build/css/pages/page_merged-basket.css +1 -0
  71. package/build/css/pages/page_my-account_tradePro.css +1 -0
  72. package/build/css/pages/page_my-order.css +1 -0
  73. package/build/css/pages/page_my-orders.css +1 -0
  74. package/build/css/pages/page_new-checkout-forgot.css +1 -0
  75. package/build/css/pages/page_new-checkout_login-register.css +1 -0
  76. package/build/css/pages/page_no-results.css +1 -0
  77. package/build/css/pages/page_online-exclusive.css +1 -0
  78. package/build/css/pages/page_paint-mixing-error.css +1 -0
  79. package/build/css/pages/page_personal-details.css +1 -0
  80. package/build/css/pages/page_pre_home.css +1 -0
  81. package/build/css/pages/page_pre_home_thank-you.css +1 -0
  82. package/build/css/pages/page_product-details-critical.css +1 -0
  83. package/build/css/pages/page_product-details-v2-critical.css +1 -0
  84. package/build/css/pages/page_product-details-v2.css +1 -0
  85. package/build/css/pages/page_product-details.css +1 -0
  86. package/build/css/pages/page_product_search.css +1 -0
  87. package/build/css/pages/page_products-list-combined.css +1 -0
  88. package/build/css/pages/page_products-list-phone.css +1 -0
  89. package/build/css/pages/page_products-list.css +1 -0
  90. package/build/css/pages/page_products-list_v2.css +1 -0
  91. package/build/css/pages/page_projects.css +1 -0
  92. package/build/css/pages/page_quiz.css +1 -0
  93. package/build/css/pages/page_rate-review.css +1 -0
  94. package/build/css/pages/page_registration.css +1 -0
  95. package/build/css/pages/page_shopping-cart-v2.css +1 -0
  96. package/build/css/pages/page_shopping-cart.css +1 -0
  97. package/build/css/pages/page_split-orders.css +1 -0
  98. package/build/css/pages/page_store-locator-details.css +1 -0
  99. package/build/css/pages/page_store-locator.css +1 -0
  100. package/build/css/pages/page_thankyou.css +1 -0
  101. package/build/css/pages/page_ti.css +1 -0
  102. package/build/css/pages/page_tiling-calculator-generic.css +1 -0
  103. package/build/css/pages/page_top-rated.css +1 -0
  104. package/build/css/pages/page_track-my-order.css +1 -0
  105. package/build/css/pages/page_track_your_order.css +1 -0
  106. package/build/css/pages/page_trade_installer.css +1 -0
  107. package/build/css/pages/page_upd-pass.css +1 -0
  108. package/build/css/pages/page_wismo-details.css +1 -0
  109. package/build/css/pages/page_wismo-order-history.css +1 -0
  110. package/build/css/pages/page_wismo-orders.css +1 -0
  111. package/build/css/pages/print_quiz.css +1 -0
  112. package/build/css/pages/sticky_header.css +1 -0
  113. package/build/css/pages/tradePro-about.css +1 -0
  114. package/build/css/pages/tradePro-address-book.css +1 -0
  115. package/build/css/pages/tradePro-delivery-details.css +1 -0
  116. package/build/css/pages/tradePro-discount.css +1 -0
  117. package/build/css/pages/tradePro-order-history.css +1 -0
  118. package/build/css/pages/tradePro-payment-details.css +1 -0
  119. package/build/css/pages/tradePro-rewards-old.css +1 -0
  120. package/build/css/pages/tradePro-rewards.css +1 -0
  121. package/build/css/pages/tradePro-signup.css +1 -0
  122. package/build/css/pages/tradePro-thankyou-activate.css +1 -0
  123. package/build/js/emulation.min.js +145 -97
  124. package/build/js/page/checkout-payment-details.js +96 -43
  125. package/package.json +1 -1
  126. package/src/components/checkout-chip.hbs +15 -0
  127. package/src/components/checkout-payment-details-v2.hbs +35 -36
  128. package/src/components/checkout-payment-repayment-terms.hbs +3 -16
  129. package/src/data/data_billie-terms.json +7 -0
  130. package/src/js/emulation/checkout-payment-details.js +8 -8
  131. package/src/js/emulation/forms.js +99 -88
  132. package/src/js/emulation/paymentLoader.js +4 -3
  133. package/src/js/emulation/repayment-toggle.js +35 -0
  134. package/src/js/page/checkout-payment-details.js +96 -43
  135. package/src/scss/components/checkout-chip.scss +64 -0
  136. package/src/scss/components/checkout-payment-details-v2.scss +0 -1
  137. package/src/scss/components/checkout-payment-repayment-terms.scss +27 -91
  138. package/src/scss/main.scss +2 -0
@@ -8,6 +8,8 @@ Wick.CheckoutPaymentDetails = (function() {
8
8
  };
9
9
 
10
10
  const elements = {
11
+ $billieRepaymentTerms: $('.js-billie-repayment-terms'),
12
+ $billieInfoBlock: $('.checkout-payment-details__billie'),
11
13
  $wrapperPaymentInput: $('.checkout-payment-details__row'),
12
14
  paymentInputName: '[name=payment-method]',
13
15
  $cardDetails: $('.checkout-payment-details__card-details'),
@@ -15,45 +17,81 @@ Wick.CheckoutPaymentDetails = (function() {
15
17
  $billingAddress: $('.billing-address'),
16
18
  hiddenCardDetailsClass: 'checkout-payment-details__card-details_hidden',
17
19
  hiddenClass: 'd-none',
18
- }
20
+ };
19
21
 
20
22
  function preparePage() {
21
- var modalOpened = $(".modal.show").length;
23
+ var modalOpened = $('.modal.show').length;
22
24
  if (!modalOpened) {
23
25
  return;
24
26
  }
25
27
  var modalContent = $modal.find('.modal-content').clone();
26
- $modal.modal("hide");
27
- modalContent.addClass("print-area");
28
- $("body")
29
- .addClass("print-mode")
28
+ $modal.modal('hide');
29
+ modalContent.addClass('print-area');
30
+ $('body')
31
+ .addClass('print-mode')
30
32
  .append(modalContent);
31
33
  }
32
34
 
33
35
  function resetPage() {
34
- var modalPrintModeActive = $("body.print-mode").length;
36
+ var modalPrintModeActive = $('body.print-mode').length;
35
37
  if (!modalPrintModeActive) {
36
38
  return;
37
39
  }
38
- $("body").removeClass("print-mode");
39
- $(".print-area").remove();
40
- $modal.modal("show");
40
+ $('body').removeClass('print-mode');
41
+ $('.print-area').remove();
42
+ $modal.modal('show');
41
43
  }
42
44
 
43
45
  function getPaymentMethods() {
44
46
  return $(elements.paymentInputName)
45
47
  .map((_, item) => $(item).val())
46
- .get()
48
+ .get();
49
+ }
50
+
51
+ function setBillieStepVisibility(isReady) {
52
+ setBillingDetailsRowVisibility(isReady);
53
+
54
+ elements.$billieInfoBlock.toggle(isReady);
47
55
  }
48
56
 
49
57
  function togglePaymentBlocks(paymentMethods, checkedMethod) {
50
58
  paymentMethods.forEach(method => {
51
- $(`[data-${method}]`).toggle(checkedMethod === method)
52
- })
59
+ $(`[data-${method}]`).toggle(checkedMethod === method);
60
+ });
61
+ }
62
+
63
+ function setBillingDetailsRowVisibility(isVisible) {
64
+ const $row = elements.$billingAddress.find('.checkout-payment-details__row');
65
+
66
+ $row.toggle(isVisible);
67
+
68
+ $row.find(':input').prop('disabled', !isVisible);
69
+ }
70
+
71
+
72
+ function resetBillieRepaymentSelection() {
73
+ elements.$billieRepaymentTerms.find('input[name="repaymentTerms"]').prop('checked', false);
74
+ }
75
+
76
+ function bindBillieRepaymentGate() {
77
+ $(document).on('change', 'input[name="repaymentTerms"]', function() {
78
+ const currentMethod = $(elements.paymentInputName + ':checked').val();
79
+ if (currentMethod !== 'billie') return;
80
+
81
+ const hasSelection = $('input[name="repaymentTerms"]:checked').length > 0;
82
+ setBillingDetailsRowVisibility(hasSelection);
83
+
84
+ const $row = $(this).closest('.form-row[data-row-required]');
85
+ $row.removeClass('form-row_validation-error').find('.form-row__error').remove();
86
+ });
53
87
  }
54
88
 
55
89
  function changeDetailsBlock(checkedMethod) {
56
- switch(checkedMethod) {
90
+ if (checkedMethod !== 'billie') {
91
+ setBillingDetailsRowVisibility(true);
92
+ }
93
+
94
+ switch (checkedMethod) {
57
95
  case 'paypal':
58
96
  hideCardDetails();
59
97
  showPlaceOrder();
@@ -66,42 +104,48 @@ Wick.CheckoutPaymentDetails = (function() {
66
104
  detailsLabel = {
67
105
  ...detailsLabel,
68
106
  labelText: 'Name on Billie account',
69
- buttonText: 'Pay with Billie'
70
- }
107
+ buttonText: 'Pay with Billie',
108
+ };
71
109
  changeLabelText(detailsLabel);
110
+
111
+ setBillieStepVisibility(false);
112
+
113
+ resetBillieRepaymentSelection();
72
114
  break;
115
+
116
+
73
117
  case 'clearpay':
74
118
  detailsLabel = {
75
119
  ...detailsLabel,
76
120
  labelText: 'Name on Clearpay account',
77
- buttonText: 'Pay with Clearpay'
78
- }
121
+ buttonText: 'Pay with Clearpay',
122
+ };
79
123
  prevClearableMethod === 'card' && clearInputFields();
80
124
  changeLabelText(detailsLabel);
81
125
  prevClearableMethod = checkedMethod;
82
126
  break;
83
127
  case 'apple':
84
- hideCardDetails()
85
- hidePlaceOrder()
86
- hideBillingAddres()
128
+ hideCardDetails();
129
+ hidePlaceOrder();
130
+ hideBillingAddres();
87
131
  break;
88
132
  case 'google':
89
- hideCardDetails()
90
- hidePlaceOrder()
91
- hideBillingAddres()
133
+ hideCardDetails();
134
+ hidePlaceOrder();
135
+ hideBillingAddres();
92
136
  break;
93
137
  case 'card':
94
138
  detailsLabel = {
95
139
  ...detailsLabel,
96
140
  labelText: 'Name on card',
97
- buttonText: 'Enter card details'
98
- }
141
+ buttonText: 'Enter card details',
142
+ };
99
143
  prevClearableMethod === 'clearpay' && clearInputFields();
100
144
  changeLabelText(detailsLabel);
101
145
  prevClearableMethod = checkedMethod;
102
146
  break;
103
147
  default:
104
- showPlaceOrder()
148
+ showPlaceOrder();
105
149
  }
106
150
  }
107
151
 
@@ -117,7 +161,7 @@ Wick.CheckoutPaymentDetails = (function() {
117
161
  const { inputName, labelText, buttonName, buttonText } = params;
118
162
  elements.$billingAddress.removeClass(elements.hiddenClass);
119
163
  let labelElement = elements.$billingAddress.find('[for="' + inputName + '"]');
120
- let buttonElement = elements.$billingAddress.find("." + buttonName + " .btn__text");
164
+ let buttonElement = elements.$billingAddress.find('.' + buttonName + ' .btn__text');
121
165
 
122
166
  labelElement && labelElement.text(labelText);
123
167
  buttonElement && buttonElement.text(buttonText);
@@ -138,11 +182,27 @@ Wick.CheckoutPaymentDetails = (function() {
138
182
  function init() {
139
183
  const paymentMethods = getPaymentMethods();
140
184
 
185
+ $(document).on('change', 'input[name="repaymentTerms"]', function() {
186
+ const currentMethod = $(elements.paymentInputName + ':checked').val();
187
+ if (currentMethod !== 'billie') return;
188
+
189
+ const hasSelection = $('input[name="repaymentTerms"]:checked').length > 0;
190
+
191
+ setBillieStepVisibility(hasSelection);
192
+
193
+ const $row = $(this).closest('.form-row[data-row-required]');
194
+ $row.removeClass('form-row_validation-error')
195
+ .find('.form-row__error').remove();
196
+ });
197
+
198
+
141
199
  elements.$wrapperPaymentInput.on('change', elements.paymentInputName, function() {
142
- const checkedMethod = $(this).val();
200
+ const form = $(this).closest('form')[0];
201
+ form && Wick.Forms.clearValidationErrors(form);
143
202
 
144
- togglePaymentBlocks(paymentMethods, checkedMethod)
145
- changeDetailsBlock(checkedMethod)
203
+ const checkedMethod = $(this).val();
204
+ togglePaymentBlocks(paymentMethods, checkedMethod);
205
+ changeDetailsBlock(checkedMethod);
146
206
  });
147
207
 
148
208
  $('.btn-new-card').on('click', function() {
@@ -157,27 +217,20 @@ Wick.CheckoutPaymentDetails = (function() {
157
217
  return false;
158
218
  });
159
219
 
160
- // do not subscribe if no T&C modal on a current page
161
- if (!$modal.length) {
162
- return;
163
- }
220
+ if (!$modal.length) return;
164
221
 
165
- if (typeof(window.onbeforeprint) !== 'undefined') {
166
- // subscriptions for browsers
222
+ if (typeof (window.onbeforeprint) !== 'undefined') {
167
223
  window.onbeforeprint = preparePage;
168
224
  window.onafterprint = resetPage;
169
225
  } else if (window.matchMedia) {
170
- // subscriptions for iOS devices
171
226
  var mediaQueryList = window.matchMedia('print');
172
227
  mediaQueryList.addListener(function(mql) {
173
- if (mql.matches) {
174
- preparePage();
175
- } else {
176
- resetPage();
177
- }
228
+ if (mql.matches) preparePage();
229
+ else resetPage();
178
230
  });
179
231
  }
180
232
  }
181
233
 
234
+
182
235
  init();
183
236
  })();
@@ -0,0 +1,64 @@
1
+ @import '../helpers/variables';
2
+
3
+ .checkout-chip {
4
+ position: relative;
5
+ flex: 0 0 auto;
6
+
7
+ &__input {
8
+ position: absolute;
9
+ opacity: 0;
10
+ width: 1px;
11
+ height: 1px;
12
+ pointer-events: none;
13
+
14
+ &:checked + .checkout-chip__label {
15
+ border-color: $blue;
16
+
17
+ .checkout-chip__label-top,
18
+ .checkout-chip__label-bottom {
19
+ color: $blue;
20
+ }
21
+ }
22
+
23
+ &:focus-visible + .checkout-chip__label {
24
+ outline: 2px solid $blue;
25
+ outline-offset: 2px;
26
+ }
27
+ }
28
+
29
+ &__label {
30
+ background: $white;
31
+ border: 1px solid $gray;
32
+ border-radius: 16px;
33
+ padding: 8px 24px;
34
+ display: flex;
35
+ flex-direction: column;
36
+ align-items: center;
37
+ justify-content: center;
38
+ gap: 4px;
39
+ cursor: pointer;
40
+ user-select: none;
41
+ transition: border-color 0.2s ease;
42
+ }
43
+
44
+ &__label-top {
45
+ font-family: Roboto, sans-serif;
46
+ font-weight: 700;
47
+ font-size: 1rem;
48
+ line-height: 20px;
49
+ }
50
+
51
+ &__label-bottom {
52
+ font-family: Roboto, sans-serif;
53
+ font-weight: 400;
54
+ font-size: 0.87rem;
55
+ line-height: 22px;
56
+ text-align: center;
57
+ }
58
+ }
59
+
60
+ .form-row_validation-error {
61
+ .checkout-chip__label {
62
+ border: 1px solid $red;
63
+ }
64
+ }
@@ -1,6 +1,5 @@
1
1
  @import '../helpers/helpers';
2
2
  @import '../components/tooltip';
3
- @import '../components/checkout-payment-repayment-terms';
4
3
 
5
4
  .checkout-payment-details-v2 {
6
5
  .checkout-payment-details {
@@ -1,103 +1,39 @@
1
+ @import '../helpers/variables';
1
2
 
2
3
  .repayment-terms {
3
4
  background: $gray-bg;
4
5
  display: flex;
5
6
  flex-direction: column;
6
7
  gap: 16px;
7
- }
8
8
 
9
- .repayment-terms__divider {
10
- padding: 10px 0;
11
- }
12
-
13
- .repayment-terms__body {
14
- display: flex;
15
- flex-direction: column;
16
- gap: 20px;
17
- }
18
-
19
- .repayment-terms__title {
20
- display: flex;
21
- gap: 4px;
22
- align-items: flex-start;
23
- font-family: Roboto, sans-serif;
24
- font-weight: 500;
25
- font-size: 16px;
26
- line-height: 24px;
27
- }
28
-
29
- .repayment-terms__asterisk {
30
- color: $red;
31
- }
32
-
33
- .repayment-terms__chips {
34
- display: flex;
35
- gap: 8px;
36
- align-items: center;
37
- width: 100%;
38
- }
39
-
40
- .repayment-terms__input {
41
- position: absolute;
42
- opacity: 0;
43
- width: 1px;
44
- height: 1px;
45
- pointer-events: none;
46
- }
47
-
48
- .repayment-terms__chip {
49
- position: relative;
50
- flex: 0 0 auto;
51
- }
52
-
53
- .repayment-terms__label {
54
- background: $white;
55
- border: 1px solid $gray;
56
- border-radius: 16px;
57
- padding: 8px 24px;
58
-
59
- display: flex;
60
- flex-direction: column;
61
- align-items: center;
62
- justify-content: center;
63
- gap: 4px;
64
-
65
- cursor: pointer;
66
- user-select: none;
67
- }
68
-
69
- .form-row_validation-error {
70
- .repayment-terms__label {
71
- border: 1px solid $red;
9
+ &__title {
10
+ display: flex;
11
+ gap: 4px;
12
+ align-items: flex-start;
13
+ font-family: Roboto, sans-serif;
14
+ font-weight: 500;
15
+ font-size: 1rem;
16
+ line-height: 24px;
72
17
  }
73
- }
74
18
 
75
- .repayment-terms__label-top {
76
- font-family: Roboto, sans-serif;
77
- font-weight: 700;
78
- font-size: 16px;
79
- line-height: 20px;
80
- text-align: left;
81
- }
82
-
83
- .repayment-terms__label-bottom {
84
- font-family: Roboto, sans-serif;
85
- font-weight: 400;
86
- font-size: 14px;
87
- line-height: 22px;
88
- text-align: center;
89
- }
19
+ &__asterisk {
20
+ color: $red;
21
+ }
90
22
 
91
- .repayment-terms__input:checked + .repayment-terms__label {
92
- border-color: $blue;
93
- }
23
+ &__chips {
24
+ display: flex;
25
+ gap: 8px;
26
+ align-items: center;
27
+ width: 100%;
28
+ }
94
29
 
95
- .repayment-terms__input:checked + .repayment-terms__label .repayment-terms__label-top,
96
- .repayment-terms__input:checked + .repayment-terms__label .repayment-terms__label-bottom {
97
- color: $blue;
98
- }
30
+ &__body {
31
+ display: flex;
32
+ flex-direction: column;
33
+ gap: 20px;
34
+ }
99
35
 
100
- .repayment-terms__input:focus-visible + .repayment-terms__label {
101
- outline: 2px solid $blue;
102
- outline-offset: 2px;
103
- }
36
+ &__divider {
37
+ padding: 10px 0;
38
+ }
39
+ }
@@ -90,6 +90,8 @@
90
90
  @import 'components/cards-slider';
91
91
  @import 'components/sticky-element-appearance';
92
92
  @import 'components/voucher-accordion';
93
+ @import 'components/checkout-chip';
94
+ @import 'components/checkout-payment-repayment-terms';
93
95
 
94
96
  // Pages
95
97
  @import 'pages/contact-us';