wickes-css2 2.97.0-IM-1593-code-width.1 → 2.97.0-develop.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/build/css/category-main.css +1 -1
  2. package/build/css/components/tile-calculator.css +1 -1
  3. package/build/css/main.css +1 -1
  4. package/build/css/my-account-main-v2.css +1 -1
  5. package/build/css/my-account-main.css +1 -1
  6. package/build/css/pages/page_address-book.css +1 -0
  7. package/build/css/pages/page_change-password.css +1 -0
  8. package/build/css/pages/page_ti.css +1 -1
  9. package/build/css/pages/tradePro-rewards.css +1 -1
  10. package/build/css/pdp-main-before-combine.css +1 -1
  11. package/build/css/pdp-main-critical.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/js/account-members.min.js +1 -1
  15. package/build/js/add-project-list-id.min.js +1 -1
  16. package/build/js/address-book.min.js +1 -0
  17. package/build/js/basket.min.js +2 -2
  18. package/build/js/bundle.min.js +1 -1
  19. package/build/js/change-password.min.js +1 -0
  20. package/build/js/checkout.min.js +2 -2
  21. package/build/js/emulation.min.js +7 -10
  22. package/build/js/energy-efficiency.min.js +1 -1
  23. package/build/js/general.bundle.min.js +1 -1
  24. package/build/js/global-search.min.js +1 -1
  25. package/build/js/merged-checkout.min.js +2 -2
  26. package/build/js/page/address-book.js +193 -0
  27. package/build/js/page/change-password.js +118 -0
  28. package/build/js/page/utils/errorMesages.js +14 -0
  29. package/build/js/page/utils/helpers.js +18 -0
  30. package/build/js/page/utils/validation.js +5 -1
  31. package/build/js/pdp.bundle.min.js +1 -1
  32. package/build/js/personal-details.min.js +1 -1
  33. package/build/js/plp.bundle.min.js +1 -1
  34. package/build/js/project-list.min.js +6 -2
  35. package/build/js/pstrength.min.js +161 -0
  36. package/build/js/quiz.min.js +1 -1
  37. package/build/js/track-my-order.min.js +1 -1
  38. package/package.json +10 -2
  39. package/src/components/address-card.hbs +40 -0
  40. package/src/components/base/link.hbs +13 -0
  41. package/src/components/leave-modal.hbs +13 -0
  42. package/src/components/my-account/delete-address-modal.hbs +23 -0
  43. package/src/components/my-account/leave-modal.hbs +1 -1
  44. package/src/components/pdp-info-v2.hbs +37 -0
  45. package/src/components/price-block-order.hbs +0 -1
  46. package/src/components/shopping-list-pdf.hbs +7 -37
  47. package/src/components/ti-header.hbs +34 -0
  48. package/src/components/ti-radio.hbs +57 -0
  49. package/src/components/ti-total-area.hbs +32 -0
  50. package/src/components/ti.hbs +791 -0
  51. package/src/components/tile-banner.hbs +13 -0
  52. package/src/components/tile-why-wickes.hbs +32 -0
  53. package/src/components/voucher.hbs +7 -6
  54. package/src/data/data_flooring-installation.json +186 -0
  55. package/src/data/data_voucher_tradePro.json +1 -1
  56. package/src/data/my-account/data_address-book.json +225 -0
  57. package/src/data/my-account/data_change-password.json +85 -0
  58. package/src/elements/form-row.hbs +11 -2
  59. package/src/js/components/general/switchVat.js +0 -11
  60. package/src/js/components/leave-event.js +2 -0
  61. package/src/js/components/pwdstrength.js +21 -0
  62. package/src/js/components/toggle-password-visibility.js +58 -0
  63. package/src/js/emulation/checkout_your-details.js +5 -5
  64. package/src/js/emulation/forms.js +1 -1
  65. package/src/js/emulation/project-list-print.js +1 -4
  66. package/src/js/libs/jquery.pstrength.custom-1.2.0.js +161 -0
  67. package/src/js/page/address-book.js +193 -0
  68. package/src/js/page/change-password.js +118 -0
  69. package/src/js/page/utils/errorMesages.js +14 -0
  70. package/src/js/page/utils/helpers.js +18 -0
  71. package/src/js/page/utils/validation.js +5 -1
  72. package/src/layouts/base.hbs +1 -1
  73. package/src/page_my-account_address-book-form.html +94 -0
  74. package/src/page_my-account_address-book.html +47 -24
  75. package/src/page_my-account_address-book_tradePro.html +45 -18
  76. package/src/page_my-account_change-password.html +62 -29
  77. package/src/page_personal-details-installer.html +6 -4
  78. package/src/page_personal-details.html +2 -0
  79. package/src/partials/header.hbs +1 -1
  80. package/src/scss/common/_common.scss +8 -0
  81. package/src/scss/components/_cards-slider.scss +0 -26
  82. package/src/scss/components/_leave-modal.scss +75 -0
  83. package/src/scss/components/_price-block-critical.scss +3 -3
  84. package/src/scss/components/_price-block.scss +8 -3
  85. package/src/scss/components/_rewards.scss +0 -20
  86. package/src/scss/components/_ti-header.scss +43 -0
  87. package/src/scss/components/_ti-radio.scss +142 -0
  88. package/src/scss/components/_ti-total-area.scss +53 -0
  89. package/src/scss/components/_tile-banner.scss +141 -0
  90. package/src/scss/components/_tile-why-wickes.scss +57 -0
  91. package/src/scss/components/tile-calculator.scss +4 -1
  92. package/src/scss/helpers/_mixins.scss +8 -0
  93. package/src/scss/libs/_pstrength.scss +34 -0
  94. package/src/scss/pages/_my-account_change-password.scss +0 -2
  95. package/src/scss/pages/page_address-book.scss +356 -0
  96. package/src/scss/pages/page_change-password.scss +147 -0
  97. package/src/scss/pages/page_ti.scss +719 -3
  98. package/src/scss/pages/tradePro-rewards.scss +1 -0
  99. package/src/sitemap.html +3 -4
  100. package/src/page_activate-trade-pro-api-flow.html +0 -62
  101. package/src/page_my-shopping-list-pdf-vat.html +0 -7
  102. /package/src/components/{button.hbs → base/button.hbs} +0 -0
@@ -0,0 +1,193 @@
1
+ import {
2
+ isValidFieldSize,
3
+ isValidInputTextField,
4
+ isValidPhoneNumber,
5
+ isValidPostcodeField,
6
+ updateStylingError
7
+ } from "./utils/validation";
8
+ import errorMessages from "./utils/errorMesages";
9
+ import {scrollToElement, trimFields} from "./utils/helpers";
10
+
11
+ var Wick = window.Wick || {};
12
+
13
+ Wick.AddressBook = {
14
+ el: {
15
+ $addressBook: $('.address-book'),
16
+ addressCard: '.address-card',
17
+ addressCardInformation: '.address-card__information',
18
+ deleteAddressModal: '.delete-modal',
19
+ deleteAddressLink: '.link--delete',
20
+ deleteModalContent: '.delete-modal .address-info__data',
21
+ deleteModalContinue: '.delete-modal .btn-continue',
22
+ addressForm: '.address-book__form',
23
+ btnCancel: '.address-book__form [data-action="cancel-form"]',
24
+ btnSaveForm: '.address-book__form [data-action="save-form"]',
25
+ $firstName: $('#firstName'),
26
+ $surName: $('#lastName'),
27
+ $addressLookupQuery: $('#address-lookup-query'),
28
+ $addressLine1: $('#address-line-1'),
29
+ $addressLine2: $('#address-line-2'),
30
+ $townCity: $('#town-city'),
31
+ $postCode: $('#postcode_additional'),
32
+ $mobilePhone: $('#mobile-telephone'),
33
+ $homePhone: $('#home-telephone'),
34
+ formRow: '.form-row',
35
+ formRowError: '.form-row__error'
36
+ },
37
+ getFieldsConfigurations: function () {
38
+ return [
39
+ {
40
+ input: Wick.AddressBook.el.$firstName,
41
+ validator: [isValidFieldSize, isValidInputTextField],
42
+ error: errorMessages.errorName,
43
+ },
44
+ {
45
+ input: Wick.AddressBook.el.$surName,
46
+ validator: [isValidFieldSize, isValidInputTextField],
47
+ error: errorMessages.errorSurname,
48
+ },
49
+ {
50
+ input: Wick.AddressBook.el.$addressLookupQuery,
51
+ validator: isValidFieldSize,
52
+ error: errorMessages.errorAddress,
53
+ },
54
+ {
55
+ input: Wick.AddressBook.el.$addressLine1,
56
+ validator: [isValidFieldSize, isValidInputTextField],
57
+ error: errorMessages.errorAddressLine1,
58
+ },
59
+ {
60
+ input: Wick.AddressBook.el.$addressLine2,
61
+ validator: isValidInputTextField,
62
+ error: errorMessages.errorAddressLine2,
63
+ required: false
64
+ },
65
+ {
66
+ input: Wick.AddressBook.el.$townCity,
67
+ validator: [isValidFieldSize, isValidInputTextField],
68
+ error: errorMessages.errorTown,
69
+ },
70
+ {
71
+ input: Wick.AddressBook.el.$postCode,
72
+ validator: [isValidFieldSize, isValidPostcodeField],
73
+ error: errorMessages.errorPostcode,
74
+ },
75
+ {
76
+ input: Wick.AddressBook.el.$mobilePhone,
77
+ validator: [isValidFieldSize, isValidPhoneNumber],
78
+ error: [errorMessages.errorMobilePhoneEmpty, errorMessages.errorMobilePhone],
79
+ },
80
+ {
81
+ input: Wick.AddressBook.el.$homePhone,
82
+ validator: isValidPhoneNumber,
83
+ error: errorMessages.errorHomePhone,
84
+ required: false
85
+ }
86
+ ];
87
+ },
88
+ validateInput: function (input, validatorFunction, errorMsg) {
89
+ const value = $(input).val();
90
+ let isValid = true;
91
+
92
+ const validators = Array.isArray(validatorFunction) ? validatorFunction : [validatorFunction];
93
+ const errors = Array.isArray(errorMsg) ? errorMsg : [errorMsg];
94
+
95
+ for (let index = 0; index < validators.length; index++) {
96
+ const validator = validators[index];
97
+ const isFieldValid = validator(value);
98
+
99
+ if (!isFieldValid) {
100
+ const currentErrorMessage = index < errors.length ? errors[index] : errors[0];
101
+ updateStylingError(input, isFieldValid, currentErrorMessage);
102
+
103
+ isValid = false;
104
+ break;
105
+ }
106
+ }
107
+
108
+ if (isValid) {
109
+ updateStylingError(input, true, '');
110
+ }
111
+
112
+ return isValid;
113
+ },
114
+ validateForm: function () {
115
+ trimFields();
116
+ let isValid = true;
117
+ const fields = Wick.AddressBook.getFieldsConfigurations();
118
+
119
+ fields.forEach((field) => {
120
+ const value = field.input.val();
121
+ const required = field.required !== false;
122
+
123
+ if (!required && !value) {
124
+ updateStylingError(field.input, true, '');
125
+ return;
126
+ }
127
+
128
+ isValid =
129
+ Wick.AddressBook.validateInput(field.input, field.validator, field.error) && isValid;
130
+ });
131
+
132
+ return isValid;
133
+ },
134
+ handleFormSubmit: function () {
135
+ $(Wick.AddressBook.el.addressForm).on('submit', function (event) {
136
+ event.preventDefault();
137
+
138
+ if (Wick.AddressBook.validateForm()) {
139
+ Wick.LeaveEvent.proceedBrowserLeave = false;
140
+ $(Wick.AddressBook.el.btnSaveForm).attr('disabled', true);
141
+ event.target.submit();
142
+ } else {
143
+ const targetElement = $(Wick.AddressBook.el.formRowError).closest(Wick.AddressBook.el.formRow)[0];
144
+
145
+ scrollToElement(targetElement);
146
+ }
147
+ });
148
+ },
149
+ deleteAddress() {
150
+ $(Wick.AddressBook.el.deleteAddressLink).on('click', function (e) {
151
+ e.preventDefault();
152
+
153
+ const $clickedLink = $(this);
154
+ const href = $clickedLink.attr('data-link');
155
+
156
+ const $addressCard = $(this).closest(Wick.AddressBook.el.addressCard);
157
+ const cardInfo = $addressCard.find(Wick.AddressBook.el.addressCardInformation).html();
158
+
159
+ $(Wick.AddressBook.el.deleteModalContent).html(cardInfo);
160
+
161
+ $(Wick.AddressBook.el.deleteModalContinue).on('click', function () {
162
+ window.location.href = href;
163
+ });
164
+
165
+ Wick.AddressBook.showModal();
166
+ });
167
+ },
168
+ showModal() {
169
+ $(Wick.AddressBook.el.deleteAddressModal).modal('show');
170
+ },
171
+ clearModal() {
172
+ $(Wick.AddressBook.el.deleteAddressModal).on('hidden.bs.modal', function () {
173
+ $(this).find(Wick.AddressBook.el.addressCardInformation).html('');
174
+ });
175
+ },
176
+ init () {
177
+ Wick.LeaveEvent.bindEvent(
178
+ Wick.AddressBook.el.addressForm,
179
+ Wick.AddressBook.el.btnCancel,
180
+ );
181
+ Wick.AddressBook.deleteAddress();
182
+ Wick.AddressBook.clearModal();
183
+ Wick.AddressBook.handleFormSubmit();
184
+ }
185
+ }
186
+
187
+ $(document).ready(function () {
188
+ if (!Wick.AddressBook.el.$addressBook.length) {
189
+ return;
190
+ }
191
+
192
+ Wick.AddressBook.init();
193
+ });
@@ -0,0 +1,118 @@
1
+ import {isValidFieldSize, isValidPasswordSize, updateStylingError} from "./utils/validation";
2
+
3
+ var Wick = window.Wick || {};
4
+
5
+ Wick.ChangePassword = {
6
+ el: {
7
+ changePasswordForm: '.change-password__form',
8
+ fieldRow: '.form-row',
9
+ $currentPassword: $('#currentPassword'),
10
+ $newPassword: $('#newPassword'),
11
+ $confirmPassword: $('#confirmPassword'),
12
+ formInvalidClass: 'form_invalid',
13
+ fieldError: '.form-row.form-row_validation-error',
14
+ btnCancel: '[data-action="cancel-form"]',
15
+ btnReset: '[data-action="reset-details"]',
16
+ saveForm: '[data-action="save-form"]'
17
+ },
18
+ errorMessages: {
19
+ errorCurrentPassword: 'Please enter your current password',
20
+ errorNewPassword: 'Please enter a strong password (at least 6 characters)',
21
+ errorPasswordMismatch: 'Password and password confirmation do not match'
22
+ },
23
+ defaultNotificationConfig: {
24
+ container: '.change-password .globalMessages .container',
25
+ closeBtn: true,
26
+ noScrolling: true,
27
+ },
28
+ getFieldsConfigurations: function () {
29
+ return [
30
+ {
31
+ input: Wick.ChangePassword.el.$currentPassword,
32
+ validator: isValidFieldSize,
33
+ error: Wick.ChangePassword.errorMessages.errorCurrentPassword,
34
+ },
35
+ {
36
+ input: Wick.ChangePassword.el.$newPassword,
37
+ validator: isValidPasswordSize,
38
+ error: Wick.ChangePassword.errorMessages.errorNewPassword,
39
+ },
40
+ {
41
+ input: Wick.ChangePassword.el.$confirmPassword,
42
+ validator: isValidPasswordSize,
43
+ error: Wick.ChangePassword.errorMessages.errorNewPassword,
44
+ },
45
+ ];
46
+ },
47
+ validateInput: function (input, validatorFunction, errorMsg) {
48
+ const value = $(input).val();
49
+
50
+ const isValid = validatorFunction(value);
51
+ updateStylingError(input, isValid, errorMsg);
52
+
53
+ return isValid;
54
+ },
55
+ validateForm: function () {
56
+ let isValid = true;
57
+
58
+ const fields = Wick.ChangePassword.getFieldsConfigurations();
59
+
60
+ fields.forEach((field) => {
61
+ isValid =
62
+ Wick.ChangePassword.validateInput(field.input, field.validator, field.error) && isValid;
63
+ });
64
+
65
+ if (isValid) {
66
+ const newPassword = Wick.ChangePassword.el.$newPassword.val();
67
+ const confirmPassword = Wick.ChangePassword.el.$confirmPassword.val();
68
+
69
+ if (newPassword !== confirmPassword) {
70
+ isValid = false;
71
+ updateStylingError(
72
+ Wick.ChangePassword.el.$confirmPassword,
73
+ false,
74
+ Wick.ChangePassword.errorMessages.errorPasswordMismatch
75
+ );
76
+ }
77
+ }
78
+
79
+ return isValid;
80
+ },
81
+ handleChangePasswordFormSubmit: function () {
82
+ $(Wick.ChangePassword.el.changePasswordForm).on('submit', function (event) {
83
+ event.preventDefault();
84
+
85
+ if (Wick.ChangePassword.validateForm()) {
86
+ Wick.LeaveEvent.removeLeaveEvent();
87
+ event.target.submit();
88
+ }
89
+ });
90
+ },
91
+ hasUnsavedChanges() {
92
+ const currentState = Wick.LeaveEvent.getState(Wick.ChangePassword.el.changePasswordForm);
93
+
94
+ return !_.isEqual(currentState, Wick.LeaveEvent.initialFormState);
95
+ },
96
+ reloadPage() {
97
+ location.reload();
98
+ },
99
+ init() {
100
+ Wick.LeaveEvent.bindEvent(
101
+ Wick.ChangePassword.el.changePasswordForm,
102
+ Wick.ChangePassword.el.btnCancel,
103
+ Wick.ChangePassword.el.btnReset,
104
+ Wick.ChangePassword.reloadPage
105
+ );
106
+
107
+ Wick.Pwdstrength.bindPStrength();
108
+ Wick.ChangePassword.handleChangePasswordFormSubmit();
109
+ },
110
+ };
111
+
112
+ $(document).ready(function () {
113
+ if (!$(Wick.ChangePassword.el.changePasswordForm).length) {
114
+ return;
115
+ }
116
+
117
+ Wick.ChangePassword.init();
118
+ });
@@ -0,0 +1,14 @@
1
+ const errorMessages = {
2
+ errorName: 'Please enter a first name',
3
+ errorSurname: 'Please enter a surname',
4
+ errorAddress: 'Please complete your address details',
5
+ errorAddressLine1: 'Please enter address line 1',
6
+ errorAddressLine2: 'Please enter address line 2',
7
+ errorTown: 'Please enter a town/city',
8
+ errorPostcode: 'Please enter a valid postcode',
9
+ errorMobilePhoneEmpty: 'Please enter mobile number',
10
+ errorMobilePhone: 'Please enter a valid mobile number with no spaces e.g. 07700900000',
11
+ errorHomePhone: 'Please enter a valid phone number. It should be 10 or 11 digits e.g. 01234 123456, 0123 412 3456'
12
+ }
13
+
14
+ export default errorMessages;
@@ -42,3 +42,21 @@ export function isTouchDevice () {
42
42
  export function isApp () {
43
43
  return navigator.userAgent.match(/TradeProMobile_iOS|TradeProMobile_Android|DIYMobile_iOS|DIYMobile_Android|DIYApp_Guest_Mobile_iOS|DIYApp_Guest_Mobile_Android|AGENT_PLACEHOLDER/i);
44
44
  }
45
+
46
+ export function trimFields () {
47
+ const fields = Wick.AddressBook.getFieldsConfigurations();
48
+ fields.forEach((field) => {
49
+ const trimmedValue = field.input.val().trim();
50
+ field.input.val(trimmedValue);
51
+ });
52
+ }
53
+
54
+ export function scrollToElement(element, offset = 20) {
55
+ const targetElement = $(element);
56
+
57
+ if (targetElement.length > 0) {
58
+ $('html, body').animate({
59
+ scrollTop: targetElement.offset().top - offset
60
+ }, 300);
61
+ }
62
+ }
@@ -95,7 +95,11 @@ export function validateCity(element) {
95
95
  }
96
96
 
97
97
  export function isValidFieldSize(value) {
98
- return value.length > 0 && value.length < 255;
98
+ return value.length > 0 && value.length < 256;
99
+ }
100
+
101
+ export function isValidPasswordSize(value) {
102
+ return value.length > 5 && value.length < 256;
99
103
  }
100
104
 
101
105
  export function isValidInputTextField(value) {