wickes-css2 2.105.0-develop.3 → 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 (160) hide show
  1. package/Readme.md +1 -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/basket.min.js +2 -2
  17. package/build/js/bundle.min.js +1 -1
  18. package/build/js/checkout.min.js +2 -2
  19. package/build/js/emulation.min.js +12122 -11594
  20. package/build/js/general.bundle.min.js +1 -1
  21. package/build/js/kitchen/kitchen-plp.min.js +1 -9
  22. package/build/js/merged-checkout.min.js +2 -2
  23. package/build/js/mini-basket-slider.min.js +1 -1
  24. package/build/js/page/basket/basket-update-cart-action.js +59 -56
  25. package/build/js/page/basket/basket-update-cart.js +27 -27
  26. package/build/js/page/basket/basket-utils.js +40 -33
  27. package/build/js/page/basket/mini-basket-total.js +70 -66
  28. package/build/js/page/basket/quantity-change-handler.js +73 -55
  29. package/build/js/page/basket/update-quantity-operation.js +39 -30
  30. package/build/js/page/basket/update-quantity.js +62 -62
  31. package/build/js/page/basket-v2.js +362 -229
  32. package/build/js/page/billie-business-type.js +27 -27
  33. package/build/js/page/checkout-payment-details.js +301 -299
  34. package/build/js/page/components/discounts.js +39 -36
  35. package/build/js/page/components/mini-basket-slider.js +604 -545
  36. package/build/js/page/filters/desktop-nav.js +64 -0
  37. package/build/js/page/filters/mobile-nav.js +93 -0
  38. package/build/js/page/filters/plp-filters-chips.js +92 -0
  39. package/build/js/page/filters/plp-filters-mobile.js +150 -0
  40. package/build/js/page/filters/plp-filters-panel.js +123 -0
  41. package/build/js/page/filters/plp-filters-utils.js +66 -0
  42. package/build/js/page/filters/plp-filters.js +256 -0
  43. package/build/js/page/filters/sort-by.js +172 -0
  44. package/build/js/page/klarna-modal-scroll-disable.js +4 -4
  45. package/build/js/page/online-exclusive.js +28 -30
  46. package/build/js/page/search-filter.js +62 -0
  47. package/build/js/page/utils/helpers.js +14 -9
  48. package/build/js/page/utils/show-more-less.js +273 -0
  49. package/build/js/pdp.bundle.min.js +1 -1
  50. package/build/js/plp-filters.min.js +9 -0
  51. package/build/js/plp.bundle.min.js +1 -1
  52. package/build/js/project-list.min.js +1 -1
  53. package/build/js/search-filter.min.js +1 -0
  54. package/package.json +3 -3
  55. package/src/components/accordion.hbs +2 -2
  56. package/src/components/kitchen/dropdown.hbs +6 -3
  57. package/src/components/kitchen/filter-modal-content-kitchen.hbs +10 -0
  58. package/src/components/kitchen/filter-modal.hbs +10 -13
  59. package/src/components/kitchen/plp-filters.hbs +3 -1
  60. package/src/components/kitchen/sort-by.hbs +1 -1
  61. package/src/components/search-filter-modal-content.hbs +102 -0
  62. package/src/components/search-filter.hbs +121 -112
  63. package/src/data/data_plp_load-more.json +1 -1
  64. package/src/elements/btn.hbs +7 -0
  65. package/src/js/components/general/accordion.js +38 -29
  66. package/src/js/components/general/cart-slider.js +19 -16
  67. package/src/js/components/general/create-popup-slider.js +168 -173
  68. package/src/js/emulation/big-wins.js +1081 -904
  69. package/src/js/emulation/billie-modal.js +23 -19
  70. package/src/js/emulation/checkout-payment-details.js +47 -38
  71. package/src/js/emulation/custom-slider-emulation.js +17 -13
  72. package/src/js/emulation/filters-emulation.js +164 -0
  73. package/src/js/emulation/forms.js +360 -323
  74. package/src/js/emulation/mini-basket-data.js +1051 -923
  75. package/src/js/emulation/paymentLoader.js +17 -17
  76. package/src/js/emulation/pdf-file-loader.js +89 -91
  77. package/src/js/emulation/popover-mini-basket.js +246 -239
  78. package/src/js/emulation/product-counter.js +50 -0
  79. package/src/js/emulation/project-list-pdp.js +321 -316
  80. package/src/js/emulation/repayment-toggle.js +23 -24
  81. package/src/js/emulation/reset-filter-desktop.js +5 -0
  82. package/src/js/emulation/selectable.js +22 -18
  83. package/src/js/emulation/wismo-details.js +23 -31
  84. package/src/js/page/basket/basket-update-cart-action.js +59 -56
  85. package/src/js/page/basket/basket-update-cart.js +27 -27
  86. package/src/js/page/basket/basket-utils.js +40 -33
  87. package/src/js/page/basket/mini-basket-total.js +70 -66
  88. package/src/js/page/basket/quantity-change-handler.js +73 -55
  89. package/src/js/page/basket/update-quantity-operation.js +39 -30
  90. package/src/js/page/basket/update-quantity.js +62 -62
  91. package/src/js/page/basket-v2.js +362 -229
  92. package/src/js/page/billie-business-type.js +27 -27
  93. package/src/js/page/checkout-payment-details.js +301 -299
  94. package/src/js/page/components/discounts.js +39 -36
  95. package/src/js/page/components/mini-basket-slider.js +604 -545
  96. package/src/js/page/filters/desktop-nav.js +64 -0
  97. package/src/js/page/filters/mobile-nav.js +93 -0
  98. package/src/js/page/filters/plp-filters-chips.js +92 -0
  99. package/src/js/page/filters/plp-filters-mobile.js +150 -0
  100. package/src/js/page/filters/plp-filters-panel.js +123 -0
  101. package/src/js/page/filters/plp-filters-utils.js +66 -0
  102. package/src/js/page/filters/plp-filters.js +256 -0
  103. package/src/js/page/filters/sort-by.js +172 -0
  104. package/src/js/page/klarna-modal-scroll-disable.js +4 -4
  105. package/src/js/page/online-exclusive.js +28 -30
  106. package/src/js/page/search-filter.js +62 -0
  107. package/src/js/page/utils/helpers.js +14 -9
  108. package/src/js/page/utils/show-more-less.js +273 -0
  109. package/src/page_empty-shared-project-list-bicester-hub.html +3 -0
  110. package/src/page_kitchen-plp.html +2 -2
  111. package/src/page_plp-with-paint.html +2 -7
  112. package/src/page_plp.html +2 -7
  113. package/src/page_plp_v2-energy-efficiency.html +1 -6
  114. package/src/page_plp_v2-favourite-products.html +6 -7
  115. package/src/page_plp_v2-vat.html +2 -7
  116. package/src/page_plp_v2.html +22 -9
  117. package/src/page_product_search-vat.html +2 -7
  118. package/src/page_product_search.html +2 -7
  119. package/src/page_project-list-with-new-share-popup-android.html +1 -0
  120. package/src/page_project-list-with-new-share-popup-ios.html +1 -0
  121. package/src/page_project-list-with-new-share-popup.html +1 -0
  122. package/src/page_search-results.html +2 -7
  123. package/src/page_shared-project-list-bicester-hub.html +1 -0
  124. package/src/scss/common/_common.scss +5 -4
  125. package/src/scss/components/_accordion.scss +1 -3
  126. package/src/scss/components/_custom-slider.scss +15 -14
  127. package/src/scss/components/_date-selection-add-new-styles.scss +6 -7
  128. package/src/scss/components/_date-selection.scss +1 -1
  129. package/src/scss/components/{kitchen/_filter-modal.scss → _filter-modal.scss} +55 -4
  130. package/src/scss/components/{kitchen/_plp-filters.scss → _plp-filters.scss} +31 -13
  131. package/src/scss/components/_popover-mini-basket.scss +3 -3
  132. package/src/scss/components/_search-filter.scss +95 -15
  133. package/src/scss/components/_sort-by.scss +190 -0
  134. package/src/scss/components/checkout-chip.scss +2 -2
  135. package/src/scss/components/checkout-payment-repayment-terms.scss +1 -1
  136. package/src/scss/globals/_global-components.scss +3 -0
  137. package/src/scss/helpers/_colors-semantic.scss +68 -68
  138. package/src/scss/helpers/_variables.scss +242 -196
  139. package/src/scss/kitchen-plp-main.scss +0 -3
  140. package/src/scss/main.scss +65 -65
  141. package/src/scss/pages/page_product-details-v2.scss +1 -4
  142. package/src/scss/pages/page_product_search.scss +9 -1
  143. package/src/scss/pages/page_products-list-combined.scss +28 -24
  144. package/src/scss/pages/page_products-list.scss +8 -0
  145. package/src/scss/pages/tradePro-rewards.scss +2 -3
  146. package/build/js/page/accordion.js +0 -35
  147. package/build/js/page/kitchen/plp-filters-chips.js +0 -90
  148. package/build/js/page/kitchen/plp-filters-mobile.js +0 -72
  149. package/build/js/page/kitchen/plp-filters-panel.js +0 -119
  150. package/build/js/page/kitchen/plp-filters-utils.js +0 -65
  151. package/build/js/page/kitchen/plp-filters.js +0 -205
  152. package/build/js/page/kitchen/sort-by.js +0 -157
  153. package/src/js/components/general/search-filter.js +0 -21
  154. package/src/js/page/accordion.js +0 -35
  155. package/src/js/page/kitchen/plp-filters-chips.js +0 -90
  156. package/src/js/page/kitchen/plp-filters-mobile.js +0 -72
  157. package/src/js/page/kitchen/plp-filters-panel.js +0 -119
  158. package/src/js/page/kitchen/plp-filters-utils.js +0 -65
  159. package/src/js/page/kitchen/plp-filters.js +0 -205
  160. package/src/js/page/kitchen/sort-by.js +0 -157
@@ -1,372 +1,409 @@
1
1
  var Wick = Wick || {};
2
- Wick.Forms = (function() {
3
- var fieldRow = '.form-row[data-row-required]',
4
- field = '.form-row__field',
5
- fieldError = '.form-row__error',
6
- formInvalid = 'form_invalid',
7
- rowValidationError = 'form-row_validation-error',
8
- excludedClassesForForm = ['header', 'quiz-modal__form', 'search-store', 'track-order-form', 'change-password__form', 'address-book__form'],
9
- // validationError = '<div class="form-row__error">Error message here</div>',
10
- $forgotPassword = $('.link-forgot-password'),
11
- scenarios = [{
12
- condition: function() {
13
- // fill in the valid returning customer's details
14
- // Email: responsive@test.com; Password: 123456
15
- return $('#login-email').val() === 'responsive@test.com' && $('#password').val() === '123456';
16
- },
17
- action: function() {
18
- // redirected to the homepage
19
- Wick.User.login();
20
- window.location.href = './';
21
- },
22
- },
23
- {
24
- condition: function() {
25
- // continue as a new user with "test+random@user.com"
26
- return $('#registration-email').val().length;
27
- // return $('#registration-email').val() === 'test+random@user.com';
28
- },
29
- action: function() {
30
- // redirected to the register form
31
- window.location.href = './page_registration.html';
32
- },
33
- },
34
- {
35
- condition: function() {
36
- // When I click forgotten password link
37
- },
38
- action: function() {
39
- // redirected on the "Forgotten Password" page
40
- window.location.href = './page_forgotten-password.html';
41
- },
42
- },
43
- ],
44
-
45
- validationError = function(errorMsg) {
46
- return `<div class="form-row__error"> ${errorMsg || 'Error message here'}</div>`;
47
- };
48
-
49
- function isElementInViewport(el) {
50
- if (typeof jQuery === 'function' && el instanceof jQuery) {
51
- el = el[0];
52
- }
53
- var rect = el.getBoundingClientRect();
54
- return (
55
- rect.top >= 0 &&
56
- rect.left >= 0 &&
57
- rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&
58
- rect.right <= (window.innerWidth || document.documentElement.clientWidth)
59
- );
60
- }
61
-
62
- var showValidationErrors = function(form, errorMsg) {
63
- var $form = $(form);
64
- if (!$form.hasClass(formInvalid)) {
65
- $form.find('.form-row__error').remove();
66
- var $rows = $form.find(fieldRow).filter(function() {
67
- return $(this).is(':visible');
68
- });
69
-
70
- $rows.append(validationError(errorMsg)).addClass(rowValidationError);
2
+ Wick.Forms = (function () {
3
+ var fieldRow = '.form-row[data-row-required]',
4
+ field = '.form-row__field',
5
+ fieldError = '.form-row__error',
6
+ formInvalid = 'form_invalid',
7
+ rowValidationError = 'form-row_validation-error',
8
+ excludedClassesForForm = [
9
+ 'header',
10
+ 'quiz-modal__form',
11
+ 'search-store',
12
+ 'track-order-form',
13
+ 'change-password__form',
14
+ 'address-book__form',
15
+ ],
16
+ // validationError = '<div class="form-row__error">Error message here</div>',
17
+ $forgotPassword = $('.link-forgot-password'),
18
+ scenarios = [
19
+ {
20
+ condition: function () {
21
+ // fill in the valid returning customer's details
22
+ // Email: responsive@test.com; Password: 123456
23
+ return (
24
+ $('#login-email').val() === 'responsive@test.com' &&
25
+ $('#password').val() === '123456'
26
+ );
27
+ },
28
+ action: function () {
29
+ // redirected to the homepage
30
+ Wick.User.login();
31
+ window.location.href = './';
32
+ },
33
+ },
34
+ {
35
+ condition: function () {
36
+ // continue as a new user with "test+random@user.com"
37
+ return $('#registration-email').val().length;
38
+ // return $('#registration-email').val() === 'test+random@user.com';
39
+ },
40
+ action: function () {
41
+ // redirected to the register form
42
+ window.location.href = './page_registration.html';
43
+ },
44
+ },
45
+ {
46
+ condition: function () {
47
+ // When I click forgotten password link
48
+ },
49
+ action: function () {
50
+ // redirected on the "Forgotten Password" page
51
+ window.location.href = './page_forgotten-password.html';
52
+ },
53
+ },
54
+ ],
55
+ validationError = function (errorMsg) {
56
+ return `<div class="form-row__error"> ${errorMsg || 'Error message here'}</div>`;
57
+ };
58
+
59
+ function isElementInViewport(el) {
60
+ if (typeof jQuery === 'function' && el instanceof jQuery) {
61
+ el = el[0];
62
+ }
63
+ var rect = el.getBoundingClientRect();
64
+ return (
65
+ rect.top >= 0 &&
66
+ rect.left >= 0 &&
67
+ rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&
68
+ rect.right <= (window.innerWidth || document.documentElement.clientWidth)
69
+ );
71
70
  }
72
71
 
73
- var $firstMsg = $form.find(fieldRow).filter(function() {
74
- return $(this).is(':visible');
75
- }).first();
76
- if ($firstMsg.length && !isElementInViewport($firstMsg)) {
77
- var inModal = $firstMsg.closest('.modal').length,
78
- $scrollableEl = inModal ? $firstMsg.closest('.modal') : $('html, body'),
79
- y = inModal ? 0 : $firstMsg.offset().top - 30;
72
+ let $form;
73
+ var showValidationErrors = function (form, errorMsg) {
74
+ $form = $(form);
75
+ if (!$form.hasClass(formInvalid)) {
76
+ $form.find('.form-row__error').remove();
77
+ var $rows = $form.find(fieldRow).filter(function () {
78
+ return $(this).is(':visible');
79
+ });
80
80
 
81
- $scrollableEl.animate({ scrollTop: y }, 300);
82
- }
83
- };
81
+ $rows.append(validationError(errorMsg)).addClass(rowValidationError);
82
+ }
84
83
 
85
- var clearValidationErrors = function(form) {
86
- var $form = $(form);
84
+ var $firstMsg = $form
85
+ .find(fieldRow)
86
+ .filter(function () {
87
+ return $(this).is(':visible');
88
+ })
89
+ .first();
90
+ if ($firstMsg.length && !isElementInViewport($firstMsg)) {
91
+ var inModal = $firstMsg.closest('.modal').length,
92
+ $scrollableEl = inModal ? $firstMsg.closest('.modal') : $('html, body'),
93
+ y = inModal ? 0 : $firstMsg.offset().top - 30;
94
+
95
+ $scrollableEl.animate({ scrollTop: y }, 300);
96
+ }
97
+ };
87
98
 
88
- $form.removeClass(formInvalid);
99
+ var clearValidationErrors = function (form) {
100
+ $form = $(form);
89
101
 
90
- $form.find(fieldRow)
91
- .removeClass(rowValidationError)
92
- .find(fieldError).remove();
102
+ $form.removeClass(formInvalid);
93
103
 
94
- $form.find(fieldError).remove();
95
- };
104
+ $form.find(fieldRow).removeClass(rowValidationError).find(fieldError).remove();
96
105
 
106
+ $form.find(fieldError).remove();
107
+ };
97
108
 
98
- var handleSmoothScroll = function() {
99
- $('html, body').animate({
100
- scrollTop: $('.cards-store-list').offset().top - 60,
101
- }, 300);
102
- };
109
+ var handleSmoothScroll = function () {
110
+ $('html, body').animate(
111
+ {
112
+ scrollTop: $('.cards-store-list').offset().top - 60,
113
+ },
114
+ 300
115
+ );
116
+ };
103
117
 
104
- var handleFormSubmit = function() {
105
- var form = this;
118
+ var handleFormSubmit = function () {
119
+ var form = this;
120
+
121
+ if ($(form).is('#form-login') || $(form).is('#form-register')) {
122
+ for (var i = 0; i < scenarios.length; i++) {
123
+ var scenario = scenarios[i];
124
+ if (scenario.condition()) {
125
+ scenario.action(this);
126
+ return false;
127
+ }
128
+ }
129
+ }
106
130
 
107
- if ($(form).is('#form-login') || $(form).is('#form-register')) {
108
- for (var i = 0; i < scenarios.length; i++) {
109
- var scenario = scenarios[i];
110
- if (scenario.condition()) {
111
- scenario.action(this);
112
- return false;
131
+ if ($(form).is('#form-forgotten-password')) {
132
+ if ($(form).find('#email').val().length) {
133
+ window.location.href = './page_upd-pass.html';
134
+ return false;
135
+ }
113
136
  }
114
- }
115
- }
116
137
 
117
- if ($(form).is('#form-forgotten-password')) {
118
- if ($(form).find('#email').val().length) {
119
- window.location.href = './page_upd-pass.html';
120
- return false;
121
- }
122
- }
138
+ if ($(form).is('#form-forgotten-password-popup')) {
139
+ if ($(form).find('#email').val().length) {
140
+ window.location.href = './page_checkout_sign-in.html';
141
+ return false;
142
+ }
143
+ }
123
144
 
124
- if ($(form).is('#form-forgotten-password-popup')) {
125
- if ($(form).find('#email').val().length) {
126
- window.location.href = './page_checkout_sign-in.html';
127
- return false;
128
- }
129
- }
145
+ if ($(form).is('#checkout-form-forgotten-password-popup')) {
146
+ if ($(form).find('#email').val().length) {
147
+ $('.modal-reset-wrap').addClass('d-block');
148
+ $('.request-pass').addClass('d-none');
149
+ $('.modal-title').text('Password Reset');
150
+ return false;
151
+ }
152
+ }
130
153
 
131
- if ($(form).is('#checkout-form-forgotten-password-popup')) {
132
- if ($(form).find('#email').val().length) {
133
- $('.modal-reset-wrap').addClass('d-block');
134
- $('.request-pass').addClass('d-none');
135
- $('.modal-title').text('Password Reset');
136
- return false;
137
- }
138
- }
154
+ if ($(form).is('.update-pass')) {
155
+ if (
156
+ $(form).find('#new-password').val().length &&
157
+ $(form).find('#confirmed-password').val().length
158
+ ) {
159
+ window.location.href = './page_login.html';
160
+ return false;
161
+ }
162
+ }
139
163
 
140
- if ($(form).is('.update-pass')) {
141
- if ($(form).find('#new-password').val().length && $(form).find('#confirmed-password').val().length) {
142
- window.location.href = './page_login.html';
143
- return false;
144
- }
145
- }
164
+ if ($(form).is('.change-email')) {
165
+ if (
166
+ $(form).find('#new-email').val().length &&
167
+ $(form).find('#confirm-new-email').val().length &&
168
+ $(form).find('#password').val().length
169
+ ) {
170
+ window.location.href = './page_my-account.html';
171
+ return false;
172
+ }
173
+ }
146
174
 
147
- if ($(form).is('.change-email')) {
148
- if ($(form).find('#new-email').val().length &&
149
- $(form).find('#confirm-new-email').val().length &&
150
- $(form).find('#password').val().length) {
151
- window.location.href = './page_my-account.html';
152
- return false;
153
- }
154
- }
175
+ if ($(form).is('.form-change-password')) {
176
+ if (
177
+ $(form).find('#current-password').val().length &&
178
+ $(form).find('#new-password').val().length &&
179
+ $(form).find('#confirm-password').val().length
180
+ ) {
181
+ window.location.href = './page_my-account.html';
182
+ return false;
183
+ }
184
+ }
155
185
 
156
- if ($(form).is('.form-change-password')) {
157
- if ($(form).find('#current-password').val().length &&
158
- $(form).find('#new-password').val().length &&
159
- $(form).find('#confirm-password').val().length) {
160
- window.location.href = './page_my-account.html';
161
- return false;
162
- }
163
- }
186
+ if ($(form).is('.form-register')) {
187
+ if (
188
+ $(form).find('#first-name').val().length &&
189
+ $(form).find('#last-name').val().length &&
190
+ $(form).find('#postcode').val().length &&
191
+ $(form).find('#email').val().length &&
192
+ $(form).find('#password').val().length &&
193
+ $(form).find('#confirm-password').val().length
194
+ ) {
195
+ window.location.href = './page_my-account.html';
196
+ return false;
197
+ }
198
+ }
164
199
 
165
- if ($(form).is('.form-register')) {
166
- if ($(form).find('#first-name').val().length &&
167
- $(form).find('#last-name').val().length &&
168
- $(form).find('#postcode').val().length &&
169
- $(form).find('#email').val().length &&
170
- $(form).find('#password').val().length &&
171
- $(form).find('#confirm-password').val().length) {
172
- window.location.href = './page_my-account.html';
173
- return false;
174
- }
175
- }
200
+ if ($(form).is('.form-personal-details')) {
201
+ if ($(form).find('#first-name').val().length && $(form).find('#surname').val().length) {
202
+ window.location.href = './page_my-account.html';
203
+ return false;
204
+ }
205
+ }
176
206
 
177
- if ($(form).is('.form-personal-details')) {
178
- if ($(form).find('#first-name').val().length && $(form).find('#surname').val().length) {
179
- window.location.href = './page_my-account.html';
180
- return false;
181
- }
182
- }
207
+ if ($(form).is('.form-address-details')) {
208
+ if (
209
+ $(form).find('#first-name').val().length &&
210
+ $(form).find('#second-name').val().length &&
211
+ $(form).find('#address1').val().length &&
212
+ $(form).find('#town-city').val().length &&
213
+ $(form).find('#mobile-telephone').val().length
214
+ ) {
215
+ window.location.href = './page_my-account_address-book.html';
216
+ return false;
217
+ }
218
+ }
183
219
 
184
- if ($(form).is('.form-address-details')) {
185
- if ($(form).find('#first-name').val().length &&
186
- $(form).find('#second-name').val().length &&
187
- $(form).find('#address1').val().length &&
188
- $(form).find('#town-city').val().length &&
189
- $(form).find('#mobile-telephone').val().length) {
190
- window.location.href = './page_my-account_address-book.html';
191
- return false;
192
- }
193
- }
220
+ if ($(form).is('.form-locator')) {
221
+ if ($(form).find('#store-id').val()) {
222
+ window.location.href = './page_store-locator-details.html';
223
+ return false;
224
+ }
225
+ }
194
226
 
195
- if ($(form).is('.form-locator')) {
196
- if ($(form).find('#store-id').val()) {
197
- window.location.href = './page_store-locator-details.html';
198
- return false;
199
- }
200
- }
227
+ if ($(form).is('.form-locator-list')) {
228
+ if ($(form).find('#postcode-town').val().length) {
229
+ var actionAfterSubmit = $(form).attr('data-action');
230
+ if (actionAfterSubmit === 'scroll-to-list') {
231
+ clearValidationErrors(this);
232
+ handleSmoothScroll();
233
+ } else {
234
+ window.location.href = actionAfterSubmit;
235
+ }
236
+ return false;
237
+ }
238
+ }
201
239
 
202
- if ($(form).is('.form-locator-list')) {
203
- if ($(form).find('#postcode-town').val().length) {
204
- var actionAfterSubmit = $(form).attr('data-action');
205
- if (actionAfterSubmit === 'scroll-to-list') {
206
- clearValidationErrors(this);
207
- handleSmoothScroll();
208
- } else {
209
- window.location.href = actionAfterSubmit;
240
+ if ($(form).is('#form-mini-basket')) {
241
+ if (Wick.User.isLoggedIn()) {
242
+ window.location.href = './page_checkout_delivery-address.html';
243
+ } else {
244
+ window.location.href = './page_checkout_sign-in.html';
245
+ }
246
+ return false;
210
247
  }
211
- return false;
212
- }
213
- }
214
248
 
215
- if ($(form).is('#form-mini-basket')) {
216
- if (Wick.User.isLoggedIn()) {
217
- window.location.href = './page_checkout_delivery-address.html';
218
- } else {
219
- window.location.href = './page_checkout_sign-in.html';
220
- }
221
- return false;
222
- }
249
+ function isNotEmpty(field) {
250
+ var $field = $(field);
251
+ var type = ($field.attr('type') || '').toLowerCase();
223
252
 
224
- function isNotEmpty(field) {
225
- var $field = $(field);
226
- var type = ($field.attr('type') || '').toLowerCase();
253
+ if (type === 'checkbox') {
254
+ return $field.is(':checked');
255
+ }
227
256
 
228
- if (type === 'checkbox') {
229
- return $field.is(':checked');
230
- }
257
+ if (type === 'radio') {
258
+ var name = $field.attr('name');
259
+ if (!name) return false;
231
260
 
232
- if (type === 'radio') {
233
- var name = $field.attr('name');
234
- if (!name) return false;
261
+ var $scope = $field.closest('[data-row-required]');
262
+ if (!$scope.length) $scope = $field.closest('form');
235
263
 
236
- var $scope = $field.closest('[data-row-required]');
237
- if (!$scope.length) $scope = $field.closest('form');
264
+ return $scope
265
+ .find('input[type="radio"][name="' + name.replace(/"/g, '\\"') + '"]')
266
+ .is(':checked');
267
+ }
238
268
 
239
- return $scope.find('input[type="radio"][name="' + name.replace(/"/g, '\\"') + '"]').is(':checked');
240
- }
269
+ return !!$field.val();
270
+ }
241
271
 
242
- return !!$field.val();
243
- }
272
+ let requiredFields;
273
+ if ($(form).is('#form-checkout-your-details')) {
274
+ requiredFields = $(form).find('[data-row-required]:visible :input');
275
+ if (_.every(requiredFields, isNotEmpty)) {
276
+ window.location.href = $(form).attr('data-action');
277
+ return false;
278
+ }
279
+ }
244
280
 
281
+ if ($(form).is('#checkout-your-details-modal')) {
282
+ requiredFields = $(form).find('[data-row-required]:visible :input');
283
+ if (_.every(requiredFields, isNotEmpty)) {
284
+ $('#modalDeliveryEdit').modal('hide');
285
+ return false;
286
+ }
287
+ }
245
288
 
246
- if ($(form).is('#form-checkout-your-details')) {
247
- var requiredFields = $(form).find('[data-row-required]:visible :input');
248
- if (_.every(requiredFields, isNotEmpty)) {
249
- window.location.href = $(form).attr('data-action');
250
- return false;
251
- }
252
- }
289
+ if ($(form).is('#edit-delivery-address')) {
290
+ requiredFields = $(form).find('[data-row-required]:visible :input');
291
+ if (_.every(requiredFields, isNotEmpty)) {
292
+ $('#modalDeliveryGuest').modal('hide');
293
+ return false;
294
+ }
295
+ }
253
296
 
254
- if ($(form).is('#checkout-your-details-modal')) {
255
- var requiredFields = $(form).find('[data-row-required]:visible :input');
256
- if (_.every(requiredFields, isNotEmpty)) {
257
- $('#modalDeliveryEdit').modal('hide');
258
- return false;
259
- }
260
- }
297
+ if ($(form).is('.checkout-register')) {
298
+ if (
299
+ $(form).find('#password').val().length &&
300
+ $(form).find('#confirm-password').val().length
301
+ ) {
302
+ window.location.href = './page_my-account.html';
303
+ return false;
304
+ }
305
+ }
261
306
 
262
- if ($(form).is('#edit-delivery-address')) {
263
- var requiredFields = $(form).find('[data-row-required]:visible :input');
264
- if (_.every(requiredFields, isNotEmpty)) {
265
- $('#modalDeliveryGuest').modal('hide');
266
- return false;
267
- }
268
- }
307
+ if ($(form).is('#form-checkout-voucher')) {
308
+ if ($(form).find('#voucher-code').val().length) {
309
+ return false;
310
+ }
311
+ }
269
312
 
270
- if ($(form).is('.checkout-register')) {
271
- if ($(form).find('#password').val().length &&
272
- $(form).find('#confirm-password').val().length) {
273
- window.location.href = './page_my-account.html';
274
- return false;
275
- }
276
- }
313
+ if ($(form).is('.add-list-id__form')) {
314
+ if ($(form).find('#project-id').val().length) {
315
+ return false;
316
+ }
317
+ }
277
318
 
278
- if ($(form).is('#form-checkout-voucher')) {
279
- if ($(form).find('#voucher-code').val().length) {
280
- return false;
281
- }
282
- }
319
+ if ($(form).is('.header-search')) {
320
+ window.location.href = './page_search-results.html';
321
+ }
283
322
 
284
- if ($(form).is('.add-list-id__form')) {
285
- if ($(form).find('#project-id').val().length) {
286
- return false;
287
- }
288
- }
323
+ if ($(form).is('.click-and-collect__locator-form')) {
324
+ $form = $(form);
325
+ if ($form.find('#click-and-collect-town').val().length) {
326
+ clearValidationErrors(this);
327
+ } else if (!$form.hasClass(formInvalid)) {
328
+ // Validation for inline form
329
+ $form
330
+ .addClass(formInvalid)
331
+ .find(fieldRow)
332
+ .addClass(rowValidationError)
333
+ .find(field)
334
+ .append(validationError);
335
+ }
336
+ return false;
337
+ }
289
338
 
290
- if ($(form).is('.header-search')) {
291
- window.location.href = './page_search-results.html';
292
- }
339
+ if ($(form).is('.form-track-order')) {
340
+ $form = $(form);
341
+
342
+ if (
343
+ $form.find('#order').val().length &&
344
+ $form.find('#tel').val().length &&
345
+ $form.find('#email').val().length &&
346
+ $form.find('#postcode').val().length
347
+ ) {
348
+ clearValidationErrors(this);
349
+ } else if (!$form.hasClass(formInvalid)) {
350
+ $form.addClass(formInvalid);
351
+
352
+ $(fieldRow).each(function () {
353
+ $(this)
354
+ .addClass(rowValidationError)
355
+ .append(
356
+ '<div class="form-row__error">' + $(this).data('message') + '</div>'
357
+ );
358
+ });
359
+ }
360
+
361
+ return false;
362
+ }
293
363
 
294
- if ($(form).is('.click-and-collect__locator-form')) {
295
- var $form = $(form);
296
- if ($form.find('#click-and-collect-town').val().length) {
297
- clearValidationErrors(this);
298
- } else if (!$form.hasClass(formInvalid)) {
299
- // Validation for inline form
300
- $form.addClass(formInvalid)
301
- .find(fieldRow).addClass(rowValidationError)
302
- .find(field).append(validationError);
303
- }
304
- return false;
305
- }
364
+ if ($(form).is('#edit-billing-address')) {
365
+ requiredFields = $(form).find('[data-row-required]:visible :input');
366
+ if (_.every(requiredFields, isNotEmpty)) {
367
+ $('#modalEditBilling').modal('hide');
368
+ return false;
369
+ }
370
+ }
306
371
 
307
- if ($(form).is('.form-track-order')) {
308
- var $form = $(form);
372
+ showValidationErrors(this);
373
+ return false;
374
+ };
309
375
 
310
- if ($form.find('#order').val().length &&
311
- $form.find('#tel').val().length &&
312
- $form.find('#email').val().length &&
313
- $form.find('#postcode').val().length) {
314
- clearValidationErrors(this);
315
- } else if (!$form.hasClass(formInvalid)) {
316
- $form.addClass(formInvalid);
376
+ var scrollLocatorListPage = function () {
377
+ var isLocatorListPage = $('.cards-store-list').length;
378
+ var isScrollNeeded = window.location.hash === '#stores-list';
379
+ if (isLocatorListPage && isScrollNeeded) {
380
+ handleSmoothScroll();
381
+ }
382
+ };
317
383
 
318
- $(fieldRow).each(function() {
319
- $(this).addClass(rowValidationError)
320
- .append('<div class="form-row__error">' + $(this).data('message') + '</div>');
384
+ let bindEvents = function () {
385
+ let selector = excludedClassesForForm.reduce((acc, className) => {
386
+ return acc + ':not([class^="' + className + '"])';
387
+ }, 'form');
388
+ $(document).on('submit', selector, handleFormSubmit);
389
+ $forgotPassword.on('click', scenarios[2].action);
390
+ $('.btn-cancel').on('click', function () {
391
+ window.location.href = './page_my-account.html';
321
392
  });
322
- }
323
-
324
- return false;
325
- }
393
+ $('.btn-previous').on('click', function () {
394
+ window.location.href = './page_login.html';
395
+ });
396
+ };
326
397
 
327
- if ($(form).is('#edit-billing-address')) {
328
- var requiredFields = $(form).find('[data-row-required]:visible :input');
329
- if (_.every(requiredFields, isNotEmpty)) {
330
- $('#modalEditBilling').modal('hide');
331
- return false;
332
- }
333
- }
398
+ var init = function () {
399
+ bindEvents();
400
+ scrollLocatorListPage();
401
+ };
334
402
 
335
- showValidationErrors(this);
336
- return false;
337
- };
403
+ init();
338
404
 
339
- var scrollLocatorListPage = function() {
340
- var isLocatorListPage = $('.cards-store-list').length;
341
- var isScrollNeeded = window.location.hash === '#stores-list';
342
- if (isLocatorListPage && isScrollNeeded) {
343
- handleSmoothScroll();
344
- }
345
- };
346
-
347
- let bindEvents = function() {
348
- let selector = excludedClassesForForm.reduce((acc, className) => {
349
- return acc + ':not([class^="' + className + '"])';
350
- }, 'form');
351
- $(document).on('submit', selector, handleFormSubmit);
352
- $forgotPassword.on('click', scenarios[2].action);
353
- $('.btn-cancel').on('click', function() {
354
- window.location.href = './page_my-account.html';
355
- });
356
- $('.btn-previous').on('click', function() {
357
- window.location.href = './page_login.html';
358
- });
359
- };
360
-
361
- var init = function() {
362
- bindEvents();
363
- scrollLocatorListPage();
364
- };
365
-
366
- init();
367
-
368
- return {
369
- showValidationErrors: showValidationErrors,
370
- clearValidationErrors: clearValidationErrors,
371
- };
405
+ return {
406
+ showValidationErrors: showValidationErrors,
407
+ clearValidationErrors: clearValidationErrors,
408
+ };
372
409
  })();