wickes-css2 2.94.0-develop.2 → 2.94.0-develop.21

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 (170) hide show
  1. package/Readme.md +4 -4
  2. package/build/css/category-main.css +1 -1
  3. package/build/css/components/checkout-payment-details-v2.css +1 -1
  4. package/build/css/homepage-main.css +1 -1
  5. package/build/css/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/checkout-new.css +1 -1
  9. package/build/css/pages/checkout.css +1 -1
  10. package/build/css/pages/my-account-v2.css +1 -1
  11. package/build/css/pages/my-account.css +1 -1
  12. package/build/css/pages/page_checkout_delivery-new.css +1 -1
  13. package/build/css/pages/page_default-store.css +1 -0
  14. package/build/css/pages/page_my-orders.css +1 -0
  15. package/build/css/pages/page_personal-details.css +1 -1
  16. package/build/css/pages/page_product-details-v2-critical.css +1 -1
  17. package/build/css/pages/page_product-details-v2.css +1 -1
  18. package/build/css/pages/page_products-list-combined.css +1 -1
  19. package/build/css/pages/page_products-list.css +1 -1
  20. package/build/css/pages/page_shopping-cart-v2.css +1 -1
  21. package/build/css/pages/tradePro-signup.css +1 -1
  22. package/build/css/pdp-main-before-combine.css +1 -1
  23. package/build/css/pdp-main-critical.css +1 -1
  24. package/build/css/pdp-main-non-critical.css +1 -1
  25. package/build/css/pdp-main.css +1 -1
  26. package/build/css/plp-main.css +1 -1
  27. package/build/css/store-locator-main.css +1 -1
  28. package/build/js/account-members.min.js +1 -1
  29. package/build/js/basket.min.js +2 -2
  30. package/build/js/bundle.min.js +1 -1
  31. package/build/js/checkout.min.js +2 -2
  32. package/build/js/default-store.min.js +1 -0
  33. package/build/js/emulation.min.js +153 -5
  34. package/build/js/general.bundle.min.js +1 -1
  35. package/build/js/merged-checkout.min.js +2 -2
  36. package/build/js/my-orders.min.js +1 -0
  37. package/build/js/page/basket/summary-mobile.js +22 -0
  38. package/build/js/page/basket-v2.js +20 -6
  39. package/build/js/page/components/order-summary.js +8 -1
  40. package/build/js/page/components/sticky-order-observer.js +49 -0
  41. package/build/js/page/components/voucher.js +1 -1
  42. package/build/js/page/default-store.js +44 -0
  43. package/build/js/page/my-orders.js +165 -0
  44. package/build/js/page/personal-details.js +105 -36
  45. package/build/js/page/quiz.js +20 -11
  46. package/build/js/pdp.bundle.min.js +1 -1
  47. package/build/js/personal-details.min.js +1 -1
  48. package/build/js/plp.bundle.min.js +1 -1
  49. package/build/js/project-list.min.js +1 -1
  50. package/build/js/quiz.min.js +1 -1
  51. package/package.json +1 -1
  52. package/src/components/account-families/actions-bar.hbs +3 -3
  53. package/src/components/checkout-action.hbs +14 -11
  54. package/src/components/checkout-voucher-accordion.hbs +15 -0
  55. package/src/components/checkout_order-summary-new.hbs +5 -3
  56. package/src/components/checkout_voucher_large.hbs +20 -16
  57. package/src/components/date-selection.hbs +1 -1
  58. package/src/components/default-store/current-store.hbs +60 -0
  59. package/src/components/default-store/list-of-store.hbs +39 -0
  60. package/src/components/default-store/store-form.hbs +29 -0
  61. package/src/components/default-store/store-unavailable.hbs +4 -0
  62. package/src/components/flatpickr-calendar.hbs +26 -0
  63. package/src/components/my-account/active-orders/header.hbs +6 -2
  64. package/src/components/my-account/active-orders/list-orders.hbs +14 -2
  65. package/src/components/my-account/active-orders/order-header.hbs +1 -1
  66. package/src/components/my-account/active-orders/order.hbs +10 -6
  67. package/src/components/my-account/clipboard-code-card.hbs +1 -1
  68. package/src/components/my-account/empty-orders.hbs +9 -0
  69. package/src/components/my-account/mobile-nav.hbs +23 -19
  70. package/src/components/my-account/orders-nav.hbs +15 -0
  71. package/src/components/my-account/personal-details-form.hbs +5 -0
  72. package/src/components/my-account/sort-by.hbs +3 -0
  73. package/src/components/my-account/user-account-actions.hbs +1 -1
  74. package/src/components/order-item.hbs +3 -3
  75. package/src/components/order-summary.hbs +91 -56
  76. package/src/components/partner-signup-form.hbs +4 -0
  77. package/src/components/signup-form.hbs +1 -2
  78. package/src/components/store-details.hbs +22 -20
  79. package/src/components/store-preview.hbs +0 -11
  80. package/src/components/summary-mobile-bar.hbs +17 -0
  81. package/src/components/user-information-field.hbs +1 -1
  82. package/src/data/data_big-wins-stores.json +0 -22
  83. package/src/data/data_delivery-address-v2.json +1 -1
  84. package/src/data/data_shopping-cart-v2.json +24 -0
  85. package/src/data/my-account/data_my-orders.json +246 -0
  86. package/src/data/my-account/data_personal-details.json +36 -11
  87. package/src/data/my-account/page_default-store.json +158 -0
  88. package/src/elements/dropdown.hbs +1 -1
  89. package/src/elements/input.hbs +2 -2
  90. package/src/js/components/flatpickr.js +167 -0
  91. package/src/js/components/general/handleAccordion.js +35 -0
  92. package/src/js/components/general/is-trade-pro.js +15 -1
  93. package/src/js/components/general/switchVat.js +1 -1
  94. package/src/js/components/leave-event.js +41 -2
  95. package/src/js/emulation/basket-data.js +2 -2
  96. package/src/js/emulation/big-wins.js +0 -2
  97. package/src/js/emulation/default-store.js +97 -0
  98. package/src/js/emulation/forms.js +1 -1
  99. package/src/js/emulation/mock.js +10 -0
  100. package/src/js/emulation/my-orders-local.js +41 -0
  101. package/src/js/page/basket/summary-mobile.js +22 -0
  102. package/src/js/page/basket-v2.js +20 -6
  103. package/src/js/page/components/order-summary.js +8 -1
  104. package/src/js/page/components/sticky-order-observer.js +49 -0
  105. package/src/js/page/components/voucher.js +1 -1
  106. package/src/js/page/default-store.js +44 -0
  107. package/src/js/page/my-orders.js +165 -0
  108. package/src/js/page/personal-details.js +105 -36
  109. package/src/js/page/quiz.js +20 -11
  110. package/src/layouts/basket-new.hbs +1 -1
  111. package/src/layouts/checkout-new.hbs +1 -0
  112. package/src/page_checkout_confirmation-new-marketing-consent-error.html +0 -2
  113. package/src/page_checkout_delivery-address-customer-journey.html +0 -5
  114. package/src/page_checkout_delivery-address-v2.html +0 -4
  115. package/src/page_checkout_delivery-details-v2-asm.html +1 -5
  116. package/src/page_checkout_delivery-details-v2-calendar-message.html +0 -3
  117. package/src/page_checkout_delivery-details-v2-oos.html +0 -3
  118. package/src/page_checkout_delivery-details-v2-wisdom-not-available.html +0 -5
  119. package/src/page_checkout_delivery-details-v2-wisdom.html +0 -5
  120. package/src/page_checkout_delivery-details-with-loader-v2.html +0 -3
  121. package/src/page_checkout_delivery-details_guest-new.html +0 -5
  122. package/src/page_checkout_delivery_address-asm-new.html +0 -4
  123. package/src/page_checkout_next-day-delivery-details.html +0 -6
  124. package/src/page_checkout_payment-details-v2.html +1 -1
  125. package/src/page_checkout_payment-details_guest-with-checkout-journey.html +0 -2
  126. package/src/page_checkout_payment-details_login-with-checkout-journey.html +0 -2
  127. package/src/page_checkout_payment-details_with-card-loader.html +56 -0
  128. package/src/page_checkout_rapid-delivery-details.html +0 -6
  129. package/src/page_default-store-page-empty.html +48 -0
  130. package/src/page_default-store-page.html +55 -0
  131. package/src/page_klarna_payment-details_with-klarna.html +3 -6
  132. package/src/page_my-orders-empty.html +49 -0
  133. package/src/page_my-orders.html +64 -0
  134. package/src/page_payment-details-with-clearpay.html +1 -1
  135. package/src/page_payment-details_with_apple-pay.html +1 -1
  136. package/src/page_payment-details_with_google-pay.html +1 -1
  137. package/src/page_personal-details-installer.html +17 -7
  138. package/src/page_personal-details.html +15 -7
  139. package/src/page_shopping-cart-v2.html +6 -16
  140. package/src/page_tradePro-signup.html +1 -1
  141. package/src/scss/barclays-paypage-combined-minified.css +1 -1
  142. package/src/scss/barclays-paypage-combined.css +9 -15
  143. package/src/scss/components/_big-wins-critical.scss +0 -1
  144. package/src/scss/components/_big-wins.scss +1 -8
  145. package/src/scss/components/_checkout-action.scss +132 -6
  146. package/src/scss/components/_marketing-preferences.scss +1 -1
  147. package/src/scss/components/_order-item-cc.scss +0 -6
  148. package/src/scss/components/_order-summary.scss +329 -178
  149. package/src/scss/components/_sticky-element-appearance.scss +25 -0
  150. package/src/scss/components/checkout-payment-details-v2.scss +2 -2
  151. package/src/scss/components/my-account/_active-orders.scss +263 -0
  152. package/src/scss/components/my-account/_orders-nav.scss +61 -0
  153. package/src/scss/components/my-account/_shipment.scss +1 -0
  154. package/src/scss/helpers/_variables.scss +3 -0
  155. package/src/scss/libs/flatpickr.scss +235 -0
  156. package/src/scss/main.scss +1 -0
  157. package/src/scss/pages/_checkout-widget.scss +137 -28
  158. package/src/scss/pages/_my-account_new.scss +1 -12
  159. package/src/scss/pages/my-account-v2.scss +1 -136
  160. package/src/scss/pages/page_checkout_delivery-new.scss +119 -10
  161. package/src/scss/pages/page_default-store.scss +634 -0
  162. package/src/scss/pages/page_my-orders.scss +232 -0
  163. package/src/scss/pages/page_personal-details.scss +37 -5
  164. package/src/scss/pages/page_products-list-combined.scss +0 -1
  165. package/src/scss/pages/page_products-list.scss +0 -1
  166. package/src/scss/pages/page_shopping-cart-v2.scss +137 -34
  167. package/src/scss/pages/tradePro-signup.scss +27 -0
  168. package/src/scss/partials/_header.scss +5 -0
  169. package/src/sitemap.html +6 -0
  170. package/src/scss/components/my-account/_order.scss +0 -112
@@ -24,25 +24,40 @@ Wick.PersonalDetails = {
24
24
  formInvalidClass: 'form_invalid',
25
25
  notification: '.notification',
26
26
  fieldError: '.form-row.form-row_validation-error',
27
+ changePasswordPopup: '#change-password-popup',
28
+ globalMessage: '.globalMessages',
27
29
  },
28
- initialFormState: {},
29
30
  errorMessages: {
30
31
  errorFirstName: 'Please enter your first name',
31
32
  errorSurname: 'Please enter your surname',
32
- errorEmail: 'Please enter you email',
33
- },
34
- fieldToLabelMap: {
35
- titleCode: 'Title',
36
- firstName: 'First name',
37
- lastName: 'Surname',
38
- email: 'Email',
39
- tradeType: 'How would you describe yourself or your main trade',
33
+ errorEmail: 'Please enter your email address',
40
34
  },
41
35
  defaultNotificationConfig: {
42
- container: '.globalMessages .col-12',
36
+ container: '.personal-details .globalMessages',
43
37
  closeBtn: true,
44
38
  noScrolling: true,
45
39
  },
40
+ isTradeTypeLabel() {
41
+ return $(Wick.PersonalDetails.el.userForm).find('label:contains("Trade type")').length;
42
+ },
43
+ fieldToLabelMap(name) {
44
+ let currentTradeType = ''
45
+ if (name === 'tradeType') {
46
+ currentTradeType = Wick.PersonalDetails.isTradeTypeLabel()
47
+ ? 'Trade type'
48
+ : 'How would you describe yourself or your main trade';
49
+ }
50
+
51
+ const fieldMap = {
52
+ titleCode: 'Title',
53
+ firstName: 'First name',
54
+ lastName: 'Surname',
55
+ email: 'Email address',
56
+ tradeType: currentTradeType,
57
+ };
58
+
59
+ return fieldMap[name] || name;
60
+ },
46
61
  getFieldsConfigurations: function () {
47
62
  return [
48
63
  {
@@ -111,11 +126,11 @@ Wick.PersonalDetails = {
111
126
  text: response.globalMessage.message,
112
127
  type: 'success',
113
128
  });
114
- Wick.PersonalDetails.initialFormState = Wick.LeaveEvent.getState(Wick.PersonalDetails.el.userForm);
115
- Wick.PersonalDetails.updateUserInformationSection(Wick.PersonalDetails.initialFormState);
116
- Wick.PersonalDetails.updateFormFields(Wick.PersonalDetails.initialFormState);
129
+ Wick.LeaveEvent.initialFormState = Wick.LeaveEvent.getState(Wick.PersonalDetails.el.userForm);
130
+ Wick.PersonalDetails.updateUserInformationSection(Wick.LeaveEvent.initialFormState);
131
+ Wick.PersonalDetails.updateFormFields(Wick.LeaveEvent.initialFormState);
117
132
  Wick.PersonalDetails.hideForm();
118
- Wick.LeaveEvent.removeLeaveEvent();
133
+ Wick.PersonalDetails.scrollToElement(Wick.PersonalDetails.el.globalMessage);
119
134
  })
120
135
  .catch((error) => {
121
136
  Wick.Notification.show({
@@ -124,11 +139,12 @@ Wick.PersonalDetails = {
124
139
  type: 'error',
125
140
  });
126
141
  Wick.PersonalDetails.handleFieldErrors(error);
142
+ Wick.PersonalDetails.scrollToElement(Wick.PersonalDetails.el.globalMessage);
127
143
  });
128
144
  },
129
- handleFieldErrors(fieldErrors) {
130
- if (fieldErrors && fieldErrors.length) {
131
- fieldErrors.forEach((fieldError) => {
145
+ handleFieldErrors(error) {
146
+ if (error.fieldErrors && error.fieldErrors.length) {
147
+ error.fieldErrors.forEach((fieldError) => {
132
148
  const field = `#${fieldError.field}`;
133
149
  updateStylingError(field, false, fieldError.message);
134
150
  });
@@ -136,6 +152,15 @@ Wick.PersonalDetails = {
136
152
  },
137
153
  submitForm(event) {
138
154
  event.preventDefault();
155
+ Wick.PersonalDetails.trimAndRewriteInputs(Wick.PersonalDetails.el.userForm);
156
+
157
+ if (!Wick.PersonalDetails.hasUnsavedChanges()) {
158
+ Wick.PersonalDetails.hideForm();
159
+ $(Wick.PersonalDetails.el.notification).remove();
160
+ Wick.PersonalDetails.scrollToElement(Wick.PersonalDetails.el.globalMessage);
161
+ return;
162
+ }
163
+
139
164
  if (Wick.PersonalDetails.validateForm()) {
140
165
  Wick.PersonalDetails.requestToUpdateForm();
141
166
  } else {
@@ -144,6 +169,7 @@ Wick.PersonalDetails = {
144
169
  text: 'Please correct the errors below.',
145
170
  type: 'error',
146
171
  });
172
+ Wick.PersonalDetails.scrollToElement(Wick.PersonalDetails.el.globalMessage);
147
173
  }
148
174
  },
149
175
  updateUserInformationSection(personalDetails) {
@@ -153,27 +179,36 @@ Wick.PersonalDetails = {
153
179
 
154
180
  $userInformationList.empty();
155
181
 
156
- personalDetails.forEach(({ name, value }) => {
157
- const label = Wick.PersonalDetails.fieldToLabelMap[name] || name;
158
-
182
+ personalDetails.forEach(({ name, value, text }) => {
183
+ const label = Wick.PersonalDetails.fieldToLabelMap(name);
184
+ const textField = text || value
159
185
  $userInformationList.append(
160
186
  userInformationField({
161
187
  label,
162
- value,
188
+ textField,
163
189
  })
164
190
  );
165
191
  });
192
+
193
+ Wick.PersonalDetails.hideParentListItemIfLabelExists('CSRFToken');
166
194
  },
167
195
  updateFormFields(personalDetails) {
168
- personalDetails.forEach(({ name, value }) => {
196
+ personalDetails.forEach(({ name, value, text }) => {
169
197
  const field = document.querySelector(`#${name}`);
170
198
  if (field) {
171
- field.value = value || '';
172
- field.setAttribute('value', value || '');
173
-
174
- if (field.tagName === 'SELECT' || field.tagName === 'INPUT') {
175
- field.value = value || '';
176
- field.setAttribute('value', value || '');
199
+ if (field.tagName === 'INPUT') {
200
+ field.value = text || value || '';
201
+ field.setAttribute('value', text || value || '');
202
+ } else {
203
+ const options = field.querySelectorAll('option');
204
+ options.forEach(option => {
205
+ if (option.textContent.trim() === value || option.value === value) {
206
+ option.setAttribute('selected', 'selected');
207
+ field.value = option.value;
208
+ } else {
209
+ option.removeAttribute('selected');
210
+ }
211
+ });
177
212
  }
178
213
  }
179
214
  });
@@ -182,18 +217,21 @@ Wick.PersonalDetails = {
182
217
  Wick.PersonalDetails.hideForm();
183
218
  $(Wick.PersonalDetails.el.notification).remove();
184
219
  $(Wick.LeaveEvent.el.leavePopup).modal('hide');
185
- Wick.PersonalDetails.updateFormFields(Wick.PersonalDetails.initialFormState);
220
+ Wick.PersonalDetails.updateFormFields(Wick.LeaveEvent.initialFormState);
221
+ },
222
+ hasUnsavedChanges() {
223
+ const currentState = Wick.LeaveEvent.getState(Wick.PersonalDetails.el.userForm);
224
+
225
+ return !_.isEqual(currentState, Wick.LeaveEvent.initialFormState);
186
226
  },
187
227
  changePasswordHandler(event) {
188
228
  const changePasswordUrl = $(Wick.PersonalDetails.el.btnChangePassword).attr('href');
189
- const currentState = Wick.LeaveEvent.getState(Wick.PersonalDetails.el.userForm);
190
- const isDifferent = !_.isEqual(currentState, Wick.PersonalDetails.initialFormState);
191
229
 
192
- if (isDifferent) {
230
+ if (Wick.PersonalDetails.hasUnsavedChanges()) {
193
231
  event.preventDefault();
194
- $(Wick.LeaveEvent.el.leavePopup).modal('show');
232
+ $(Wick.PersonalDetails.el.changePasswordPopup).modal('show');
195
233
  Wick.LeaveEvent.proceedBrowserLeave = true;
196
- $(Wick.LeaveEvent.el.leavePopup).find(Wick.PersonalDetails.el.btnContinue).off('click').on('click', function () {
234
+ $(Wick.PersonalDetails.el.changePasswordPopup).find(Wick.PersonalDetails.el.btnContinue).off('click').on('click', function () {
197
235
  Wick.LeaveEvent.removeLeaveEvent();
198
236
  $(Wick.LeaveEvent.el.leavePopup).modal('hide');
199
237
  window.location.href = changePasswordUrl;
@@ -202,9 +240,40 @@ Wick.PersonalDetails = {
202
240
  window.location.href = changePasswordUrl;
203
241
  }
204
242
  },
243
+ hideParentListItemIfLabelExists(labelText) {
244
+ const label = $(Wick.PersonalDetails.el.userInformationList).find(`label:contains("${labelText}")`);
245
+
246
+ if (label.length > 0) {
247
+ label.closest('li').hide();
248
+ }
249
+ },
250
+ scrollToElement(element) {
251
+ const globalMessage = $(element);
252
+
253
+ if (globalMessage.length > 0) {
254
+ $('html, body').animate({
255
+ scrollTop: globalMessage.offset().top - 20
256
+ }, 300);
257
+ }
258
+ },
259
+ trimAndRewriteInputs(formSelector) {
260
+ const $form = $(formSelector);
261
+
262
+ if (!$form.length) {
263
+ return;
264
+ }
265
+
266
+ $form.find('input[type="text"], input[type="email"]').each(function () {
267
+ $(this).val($.trim($(this).val()));
268
+ });
269
+ },
205
270
  init: function () {
206
- Wick.LeaveEvent.bindEvent(Wick.PersonalDetails.el.userForm, Wick.PersonalDetails.el.btnCancel, Wick.PersonalDetails.el.btnContinue, Wick.PersonalDetails.resetFormToInitialState);
207
- Wick.PersonalDetails.initialFormState = Wick.LeaveEvent.getState(Wick.PersonalDetails.el.userForm)
271
+ Wick.LeaveEvent.bindEvent(
272
+ Wick.PersonalDetails.el.userForm,
273
+ Wick.PersonalDetails.el.btnCancel,
274
+ Wick.PersonalDetails.el.btnContinue,
275
+ Wick.PersonalDetails.resetFormToInitialState
276
+ );
208
277
 
209
278
  $(Wick.PersonalDetails.el.btnEdit).on('click', Wick.PersonalDetails.showForm);
210
279
  $(Wick.PersonalDetails.el.btnSave).on('click', Wick.PersonalDetails.submitForm);
@@ -4,7 +4,7 @@ import {
4
4
  isValidInputTextField,
5
5
  updateStylingError
6
6
  } from "./utils/validation";
7
- import {isTouchDevice, isApp} from "./utils/helpers";
7
+ import {isTouchDevice} from "./utils/helpers";
8
8
 
9
9
  var Wick = window.Wick || {};
10
10
  Wick.Quiz = {
@@ -209,9 +209,25 @@ Wick.Quiz = {
209
209
  };
210
210
 
211
211
  html2pdf()
212
- .set(options)
213
- .from(selector)
214
- .save();
212
+ .set(options)
213
+ .from(selector)
214
+ .output('datauristring')
215
+ .then(function (pdfAsDataUri) {
216
+
217
+ const postMessage = {
218
+ event: 'matchMakertoolResultBase64',
219
+ data: {
220
+ filename: options.filename,
221
+ file: pdfAsDataUri
222
+ }
223
+ };
224
+
225
+ if (window.ReactNativeWebView && window.ReactNativeWebView.postMessage) {
226
+ window.ReactNativeWebView.postMessage(JSON.stringify(postMessage));
227
+ } else {
228
+ console.warn('ReactNativeWebView not available');
229
+ }
230
+ }).save();
215
231
  }).catch(error => console.error("Error converting SVGs:", error));
216
232
  },
217
233
 
@@ -251,12 +267,6 @@ Wick.Quiz = {
251
267
  };
252
268
  },
253
269
 
254
- disablePrintButtonOnMobileApp: function() {
255
- if (isApp()) {
256
- Wick.Quiz.disableButton(Wick.Quiz.el.btnPrintResultQuiz);
257
- }
258
- },
259
-
260
270
  handlePrintOrPDFInteraction: function (event) {
261
271
  event.preventDefault();
262
272
 
@@ -284,7 +294,6 @@ Wick.Quiz = {
284
294
  debouncedHandleInteraction(event);
285
295
  });
286
296
 
287
- Wick.Quiz.disablePrintButtonOnMobileApp();
288
297
  }
289
298
  };
290
299