wickes-css2 2.117.0-develop.1 → 2.117.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 (41) hide show
  1. package/build/css/main.css +1 -1
  2. package/build/css/my-account-main-v2.css +1 -1
  3. package/build/css/my-account-main.css +1 -1
  4. package/build/css/pages/page_product_search.css +1 -1
  5. package/build/css/pages/page_store-locator-details.css +1 -1
  6. package/build/css/pages/page_store-locator.css +1 -1
  7. package/build/css/pages/page_ti.css +1 -1
  8. package/build/css/pdp-main-before-combine.css +1 -1
  9. package/build/css/pdp-main-non-critical.css +1 -1
  10. package/build/css/pdp-main.css +1 -1
  11. package/build/css/plp-main.css +1 -1
  12. package/build/css/store-locator-main.css +1 -1
  13. package/build/js/bloomreach-widget.min.js +1 -1
  14. package/build/js/emulation.min.js +208 -30
  15. package/build/js/page/bloomreach-widget/why-not-add-widget.js +1 -1
  16. package/build/js/page/components/store-locator.js +165 -0
  17. package/build/js/store-locator.min.js +1 -0
  18. package/package.json +1 -1
  19. package/src/components/bloomreach/complete-your-project-skeleton.hbs +1 -1
  20. package/src/components/find-a-store.hbs +48 -32
  21. package/src/js/emulation/bloomreach-widget-loading.js +1 -1
  22. package/src/js/emulation/complete-your-project-loading.js +1 -1
  23. package/src/js/emulation/forms.js +81 -12
  24. package/src/js/emulation/gift-cards.js +1 -0
  25. package/src/js/emulation/store-locator-geo-emulation.js +185 -0
  26. package/src/js/emulation/store-locator-load-more.js +9 -1
  27. package/src/js/page/bloomreach-widget/why-not-add-widget.js +1 -1
  28. package/src/js/page/components/store-locator.js +165 -0
  29. package/src/page_product-details-bloomreach.html +1 -1
  30. package/src/page_product-details-with-why-not-add-single.html +1 -1
  31. package/src/page_store-locator-list.html +13 -13
  32. package/src/page_store-locator.html +12 -9
  33. package/src/scss/components/_account-heading.scss +1 -1
  34. package/src/scss/components/_find-a-store.scss +253 -49
  35. package/src/scss/components/_map.scss +30 -3
  36. package/src/scss/components/_shop-colour.scss +1 -1
  37. package/src/scss/pages/page_product_search.scss +11 -1
  38. package/src/scss/pages/page_store-locator-details.scss +1 -1
  39. package/src/scss/pages/page_store-locator.scss +249 -10
  40. package/src/scss/pages/page_ti.scss +1 -1
  41. package/src/scss/store-locator-main.scss +0 -5
@@ -1,42 +1,58 @@
1
1
  <div class="locator">
2
- <div class="locator__header-wrapper">
3
- {{#if another-store}}
4
- <h2>Choose another store</h2>
5
- {{else}}
6
- <h2>Find a store</h2>
7
- {{/if}}
8
- <p>There are now more than 230 Wickes stores throughout the UK.</p>
9
- </div>
10
2
  <div class="form-locator-wrapper">
11
3
  <div class="form-bg forms-locator">
12
- <form action="#" class="form-locator">
13
- {{> form-row dropdown="true" id="store-id" label="Select a store" placeholder="Please select" required="true"}}
14
- <div class="form-row">
15
- <div class="form-row__field">
16
- <div class="form-row__col-btn">
17
- <button class="btn btn-primary btn_full">
18
- <span class="btn__text">Display store details</span>
4
+ <div class="locator__header-wrapper">
5
+ {{#if another-store}}
6
+ <h2>Choose another store</h2>
7
+ {{else}}
8
+ <h2>Find a store</h2>
9
+ {{/if}}
10
+ <p>There are now more than 230 Wickes stores throughout the UK.</p>
11
+ </div>
12
+
13
+ <div class="locator__form-wrapper">
14
+ <form action="#" class="form-locator-list" data-action="{{data-action}}">
15
+ <div class="form-row" data-row-required data-message="Check that you entered a valid postcode or place name.">
16
+ <label class="form-row__label" for="postcode-town">Postcode/Town</label>
17
+ <div class="form-row__field">
18
+ <input class="tbx form-locator__search-inp" value="" id="postcode-town" name="postcode-town" type="text">
19
+ <button class="header-search__submit" type="submit">
20
+ <span class="header-search__submit-icon">
21
+ <span class="fas fa-search"></span>
22
+ </span>
23
+ <span class="header-search__submit-label">
24
+ <span class="btn__text">Search</span>
25
+ </span>
19
26
  </button>
20
27
  </div>
21
28
  </div>
22
- </div>
23
- </form>
24
- <form action="#" class="form-locator-list" data-action="{{data-action}}">
25
- <div class="form-row">
26
- <label class="form-row__label" for="postcode-town">Postcode/Town</label>
27
- <div class="form-row__field">
28
- <input class="tbx form-locator__search-inp" value="" id="postcode-town" name="postcode-town" type="text">
29
- <button class="header-search__submit">
30
- <span class="header-search__submit-icon">
31
- <span class="fas fa-search"></span>
32
- </span>
33
- <span class="header-search__submit-label">
34
- <span class="btn__text">Search</span>
35
- </span>
29
+ </form>
30
+
31
+ <button class="locator__near-me" type="button">
32
+ <span class="locator__near-me-icon">
33
+ <span class="fas fa-map-pin"></span>
34
+ </span>
35
+ <span class="locator__near-me-text">Find a store near me</span>
36
+ </button>
37
+
38
+ <div class="locator__divider"></div>
39
+
40
+ <form action="#" class="form-locator">
41
+ <div class="locator__select-store">
42
+ {{> form-row dropdown="true" id="store-id" label="Select a store" placeholder="Please select" required="true" row-mod="locator__select-row"}}
43
+ <button class="btn btn-primary locator__details-button" type="submit">
44
+ <span class="btn__text">Display store details</span>
36
45
  </button>
37
46
  </div>
38
- </div>
39
- </form>
47
+ </form>
48
+ </div>
40
49
  </div>
41
50
  </div>
42
- </div>
51
+
52
+ <button class="locator__open-search" type="button">
53
+ <span class="locator__open-search-icon">
54
+ <span class="fas fa-search"></span>
55
+ </span>
56
+ <span class="locator__open-search-text">Open search</span>
57
+ </button>
58
+ </div>
@@ -6,6 +6,6 @@ $(document).ready(function () {
6
6
  const contextKey = $container.data('mock-key');
7
7
  const payloadData = Wick.FEMock.dataBloomreach[contextKey];
8
8
 
9
- Wick.BloomreachWidget.init('completeYourProject', payloadData);
9
+ Wick.BloomreachWidget?.init('completeYourProject', payloadData);
10
10
  }, 3000);
11
11
  });
@@ -11,6 +11,6 @@ $(document).ready(function () {
11
11
  const mockDataKey = $container.data('mock-key');
12
12
  const payloadData = Wick.FEMock.dataBloomreach[mockDataKey];
13
13
 
14
- Wick.BloomreachWidget.init('completeYourProject', payloadData);
14
+ Wick.BloomreachWidget?.init('completeYourProject', payloadData);
15
15
  }, 3000);
16
16
  });
@@ -1,4 +1,4 @@
1
- var Wick = Wick || {};
1
+ var Wick = window.Wick || (window.Wick = {});
2
2
  Wick.Forms = (function () {
3
3
  var fieldRow = '.form-row[data-row-required]',
4
4
  field = '.form-row__field',
@@ -73,27 +73,39 @@ Wick.Forms = (function () {
73
73
  var showValidationErrors = function (form, errorMsg) {
74
74
  $form = $(form);
75
75
  var $rows = $form.find(fieldRow).not('[data-no-global-validation]');
76
+
76
77
  if (!$rows.length) return;
77
- $rows.find('.form-row__error').remove();
78
+
79
+ $rows.find(fieldError).remove();
78
80
 
79
81
  if (!$form.hasClass(formInvalid)) {
80
- $form.find('.form-row__error').remove();
82
+ $form.find(fieldError).remove();
83
+
81
84
  $rows = $form.find(fieldRow).filter(function () {
82
85
  return $(this).is(':visible');
83
86
  });
84
87
 
85
- $rows.append(validationError(errorMsg)).addClass(rowValidationError);
88
+ if ($form.is('.form-locator, .form-locator-list')) {
89
+ $rows.each(function () {
90
+ var $row = $(this);
91
+ var message = errorMsg || $row.data('message') || 'Error message here';
92
+
93
+ $row.addClass(rowValidationError).append(validationError(message));
94
+ });
95
+ } else {
96
+ $rows.append(validationError(errorMsg)).addClass(rowValidationError);
97
+ }
98
+
86
99
  $form.addClass(formInvalid);
87
100
  }
88
101
 
89
- $rows.append(validationError(errorMsg)).addClass(rowValidationError);
90
-
91
102
  var $firstMsg = $form
92
103
  .find(fieldRow)
93
104
  .filter(function () {
94
105
  return $(this).is(':visible');
95
106
  })
96
107
  .first();
108
+
97
109
  if ($firstMsg.length && !isElementInViewport($firstMsg)) {
98
110
  var inModal = $firstMsg.closest('.modal').length,
99
111
  $scrollableEl = inModal ? $firstMsg.closest('.modal') : $('html, body'),
@@ -229,19 +241,76 @@ Wick.Forms = (function () {
229
241
  window.location.href = './page_store-locator-details.html';
230
242
  return false;
231
243
  }
244
+
245
+ clearValidationErrors(this);
246
+
247
+ if (Wick.StoreLocator && Wick.StoreLocator.showStoreSelectionError) {
248
+ Wick.StoreLocator.showStoreSelectionError();
249
+ } else {
250
+ showValidationErrors(this, 'Please choose a store.');
251
+ }
252
+
253
+ return false;
232
254
  }
233
255
 
234
256
  if ($(form).is('.form-locator-list')) {
235
- if ($(form).find('#postcode-town').val().length) {
236
- var actionAfterSubmit = $(form).attr('data-action');
237
- if (actionAfterSubmit === 'scroll-to-list') {
238
- clearValidationErrors(this);
239
- handleSmoothScroll();
257
+ var searchValue = $.trim($(form).find('#postcode-town').val()),
258
+ actionAfterSubmit;
259
+
260
+ clearValidationErrors(this);
261
+
262
+ if (!searchValue.length) {
263
+ if (
264
+ Wick.StoreLocatorGeoEmulation &&
265
+ Wick.StoreLocatorGeoEmulation.handleEmptySearch
266
+ ) {
267
+ Wick.StoreLocatorGeoEmulation.handleEmptySearch();
268
+ }
269
+
270
+ return false;
271
+ }
272
+
273
+ if (
274
+ Wick.StoreLocatorGeoEmulation &&
275
+ Wick.StoreLocatorGeoEmulation.isValidSearch &&
276
+ !Wick.StoreLocatorGeoEmulation.isValidSearch(searchValue)
277
+ ) {
278
+ if (Wick.StoreLocator && Wick.StoreLocator.showPostcodeError) {
279
+ Wick.StoreLocator.showPostcodeError();
240
280
  } else {
241
- window.location.href = actionAfterSubmit;
281
+ showValidationErrors(
282
+ this,
283
+ 'Check that you entered a valid postcode or place name.'
284
+ );
242
285
  }
286
+
243
287
  return false;
244
288
  }
289
+
290
+ actionAfterSubmit = $(form).attr('data-action');
291
+
292
+ if (actionAfterSubmit === 'scroll-to-list') {
293
+ if (
294
+ Wick.StoreLocatorGeoEmulation &&
295
+ Wick.StoreLocatorGeoEmulation.showResults
296
+ ) {
297
+ Wick.StoreLocatorGeoEmulation.showResults();
298
+ } else {
299
+ if (Wick.StoreLocator && Wick.StoreLocator.showResults) {
300
+ Wick.StoreLocator.showResults();
301
+ }
302
+
303
+ handleSmoothScroll();
304
+ }
305
+ } else {
306
+ window.location.href =
307
+ Wick.StoreLocatorGeoEmulation &&
308
+ Wick.StoreLocatorGeoEmulation.withGeoState
309
+ ? Wick.StoreLocatorGeoEmulation.withGeoState(actionAfterSubmit)
310
+ : actionAfterSubmit;
311
+ }
312
+
313
+ return false;
245
314
  }
246
315
 
247
316
  if ($(form).is('#form-mini-basket')) {
@@ -1,3 +1,4 @@
1
+ var Wick = Wick || {};
1
2
  (function () {
2
3
  if (!window.Wick) return;
3
4
 
@@ -0,0 +1,185 @@
1
+ var Wick = window.Wick || (window.Wick = {});
2
+
3
+ Wick.StoreLocatorGeoEmulation = (function () {
4
+ var GEO_ON_CLASS = 'store-locator_geo-on',
5
+ GEO_OFF_CLASS = 'store-locator_geo-off',
6
+ SELECTORS = {
7
+ page: 'body.store-locator',
8
+ nearMe: '.locator__near-me',
9
+ cardsHolder: '.cards-store-holder',
10
+ cards: '.cards-store-list',
11
+ storeSelect: '#store-id',
12
+ storeCard: '.card-store',
13
+ },
14
+ UK_POSTCODE_PATTERN = /^(GIR\s?0AA|[A-Z]{1,2}\d[A-Z\d]?\s?\d[A-Z]{2})$/i;
15
+
16
+ function normalize(value) {
17
+ return $.trim(value || '').toLowerCase();
18
+ }
19
+
20
+ function isGeoOn() {
21
+ return $(SELECTORS.page).hasClass(GEO_ON_CLASS);
22
+ }
23
+
24
+ function isKnownLocation(value) {
25
+ var normalizedValue = normalize(value),
26
+ isMatch = false;
27
+
28
+ if (!normalizedValue) {
29
+ return false;
30
+ }
31
+
32
+ $(SELECTORS.storeSelect)
33
+ .find('option')
34
+ .each(function () {
35
+ var optionText = normalize($(this).text());
36
+
37
+ if (
38
+ optionText &&
39
+ optionText !== 'please select' &&
40
+ optionText.indexOf(normalizedValue) !== -1
41
+ ) {
42
+ isMatch = true;
43
+ return false;
44
+ }
45
+ });
46
+
47
+ if (isMatch) {
48
+ return true;
49
+ }
50
+
51
+ $(SELECTORS.storeCard).each(function () {
52
+ if (normalize($(this).text()).indexOf(normalizedValue) !== -1) {
53
+ isMatch = true;
54
+ return false;
55
+ }
56
+ });
57
+
58
+ return isMatch;
59
+ }
60
+
61
+ function isValidSearch(value) {
62
+ var normalizedValue = $.trim(value || '');
63
+
64
+ return (
65
+ !!normalizedValue &&
66
+ (UK_POSTCODE_PATTERN.test(normalizedValue) || isKnownLocation(normalizedValue))
67
+ );
68
+ }
69
+
70
+ function hideResults() {
71
+ $(SELECTORS.cardsHolder).hide();
72
+ }
73
+
74
+ function scrollToResults() {
75
+ var $firstCard = $(SELECTORS.cards).first();
76
+
77
+ if (!$firstCard.length) {
78
+ return;
79
+ }
80
+
81
+ $('html, body').animate(
82
+ {
83
+ scrollTop: $firstCard.offset().top - 60,
84
+ },
85
+ 300
86
+ );
87
+ }
88
+
89
+ function withGeoState(url) {
90
+ var parts = url.split('#'),
91
+ base = parts[0],
92
+ hash = parts[1] ? '#' + parts[1] : '',
93
+ separator;
94
+
95
+ base = base.replace(/([?&])geo=[^&#]*&?/g, function (match, prefix) {
96
+ return prefix === '?' ? '?' : '';
97
+ });
98
+ base = base.replace(/[?&]$/, '');
99
+ separator = base.indexOf('?') === -1 ? '?' : '&';
100
+
101
+ return base + separator + 'geo=' + (isGeoOn() ? 'on' : 'off') + hash;
102
+ }
103
+
104
+ function showResults() {
105
+ var $holder = $(SELECTORS.cardsHolder);
106
+
107
+ if (!$holder.length) {
108
+ window.location.href = withGeoState(
109
+ './page_store-locator-list.html?searched=true#stores-list'
110
+ );
111
+ return;
112
+ }
113
+
114
+ $holder.show();
115
+
116
+ if (Wick.StoreLocatorLoadMore && Wick.StoreLocatorLoadMore.reset) {
117
+ Wick.StoreLocatorLoadMore.reset();
118
+ }
119
+
120
+ if (Wick.StoreLocator && Wick.StoreLocator.showResults) {
121
+ Wick.StoreLocator.showResults();
122
+ }
123
+
124
+ scrollToResults();
125
+ }
126
+
127
+ function handleEmptySearch() {
128
+ if (isGeoOn()) {
129
+ showResults();
130
+ return;
131
+ }
132
+
133
+ if (Wick.StoreLocator && Wick.StoreLocator.showGeolocationWarning) {
134
+ Wick.StoreLocator.showGeolocationWarning();
135
+ }
136
+ }
137
+
138
+ function handleNearMeClick(event) {
139
+ event.preventDefault();
140
+
141
+ if (!isGeoOn()) {
142
+ hideResults();
143
+
144
+ if (Wick.StoreLocator && Wick.StoreLocator.showGeolocationWarning) {
145
+ Wick.StoreLocator.showGeolocationWarning();
146
+ }
147
+
148
+ return;
149
+ }
150
+
151
+ showResults();
152
+ }
153
+
154
+ function bindEvents() {
155
+ $(document)
156
+ .off('click.storeLocatorGeoEmulation', SELECTORS.nearMe)
157
+ .on('click.storeLocatorGeoEmulation', SELECTORS.nearMe, handleNearMeClick);
158
+ }
159
+
160
+ function init() {
161
+ var $page = $(SELECTORS.page);
162
+
163
+ if (!$page.length) {
164
+ return;
165
+ }
166
+
167
+ var geo = new URLSearchParams(window.location.search).get('geo'),
168
+ isGeoEnabled = geo !== 'off';
169
+
170
+ $page.toggleClass(GEO_ON_CLASS, isGeoEnabled);
171
+ $page.toggleClass(GEO_OFF_CLASS, !isGeoEnabled);
172
+
173
+ bindEvents();
174
+ }
175
+
176
+ init();
177
+
178
+ return {
179
+ init: init,
180
+ isValidSearch: isValidSearch,
181
+ handleEmptySearch: handleEmptySearch,
182
+ showResults: showResults,
183
+ withGeoState: withGeoState,
184
+ };
185
+ })();
@@ -58,9 +58,17 @@ function initStoreLocatorLoadMore() {
58
58
 
59
59
  updateVisibility();
60
60
 
61
- $btnMore.on('click', loadMore);
61
+ $btnMore.off('click.storeLocatorLoadMore').on('click.storeLocatorLoadMore', loadMore);
62
62
  }
63
63
 
64
+ window.Wick = window.Wick || {};
65
+ Wick.StoreLocatorLoadMore = {
66
+ reset: function () {
67
+ visibleCount = PAGE_SIZE;
68
+ updateVisibility();
69
+ },
70
+ };
71
+
64
72
  init();
65
73
  }
66
74
 
@@ -2,7 +2,7 @@ import { createBloomreachRecommendationCarouselWidget } from './bloomreach-recom
2
2
 
3
3
  const WhyNotAddWidget = createBloomreachRecommendationCarouselWidget({
4
4
  namespace: 'whyNotAdd',
5
- title: 'Why not add',
5
+ title: 'You might also like',
6
6
  widgetContainer: '[data-why-not-add-widget]',
7
7
  disableAfterSuccess: false,
8
8
  disableAfterFailure: false,
@@ -0,0 +1,165 @@
1
+ var Wick = window.Wick || (window.Wick = {});
2
+
3
+ Wick.StoreLocator = {
4
+ el: {
5
+ wrapper: '.store-locator-wrapper',
6
+ openSearch: '.locator__open-search',
7
+ formRow: '.form-row',
8
+ formRowError: '.form-row__error',
9
+ pageContainer: 'body.store-locator main.container',
10
+ postcode: '#postcode-town',
11
+ store: '#store-id',
12
+ },
13
+
14
+ classes: {
15
+ collapsed: 'store-locator_search-collapsed',
16
+ notification: 'store-locator__notification',
17
+ rowError: 'form-row_validation-error',
18
+ },
19
+
20
+ messages: {
21
+ postcode: 'Check that you entered a valid postcode or place name.',
22
+ geolocation:
23
+ 'To search for the stores nearest you, please enable geolocation services on your device.',
24
+ store: 'Please choose a store.',
25
+ },
26
+
27
+ isDesktopLayout() {
28
+ return Wick.Responsive.getCurrentBreakpoint() === 'up-lg';
29
+ },
30
+
31
+ collapseSearch() {
32
+ if (!Wick.StoreLocator.isDesktopLayout()) {
33
+ return;
34
+ }
35
+
36
+ $(Wick.StoreLocator.el.wrapper).addClass(Wick.StoreLocator.classes.collapsed);
37
+ },
38
+
39
+ openSearch() {
40
+ $(Wick.StoreLocator.el.wrapper).removeClass(Wick.StoreLocator.classes.collapsed);
41
+ },
42
+
43
+ removeTopMessage() {
44
+ $(Wick.StoreLocator.el.pageContainer)
45
+ .children('.' + Wick.StoreLocator.classes.notification)
46
+ .remove();
47
+ },
48
+
49
+ removeFieldError(selector) {
50
+ const $field = $(selector);
51
+
52
+ if (!$field.length) {
53
+ return;
54
+ }
55
+
56
+ if (Wick.Validation && Wick.Validation.removeValidationError) {
57
+ Wick.Validation.removeValidationError($field);
58
+ return;
59
+ }
60
+
61
+ $field
62
+ .closest(Wick.StoreLocator.el.formRow)
63
+ .removeClass(Wick.StoreLocator.classes.rowError)
64
+ .find(Wick.StoreLocator.el.formRowError)
65
+ .remove();
66
+ },
67
+
68
+ showFieldError(selector, message) {
69
+ let $field = $(selector),
70
+ $row;
71
+
72
+ if (!$field.length) {
73
+ return;
74
+ }
75
+
76
+ Wick.StoreLocator.removeFieldError(selector);
77
+
78
+ if (Wick.Validation && Wick.Validation.displayValidationError) {
79
+ Wick.Validation.displayValidationError($field, message);
80
+ return;
81
+ }
82
+
83
+ $row = $field.closest(Wick.StoreLocator.el.formRow);
84
+ $row.addClass(Wick.StoreLocator.classes.rowError).append(
85
+ $('<div/>', {
86
+ class: 'form-row__error',
87
+ text: message,
88
+ })
89
+ );
90
+ },
91
+
92
+ showTopMessage(type, message, closeBtn) {
93
+ let notification;
94
+
95
+ Wick.StoreLocator.removeTopMessage();
96
+
97
+ if (!Wick.Notification || !Wick.Notification.show) {
98
+ return;
99
+ }
100
+
101
+ notification = Wick.Notification.show({
102
+ container: Wick.StoreLocator.el.pageContainer,
103
+ type: type,
104
+ text: message,
105
+ closeBtn: closeBtn,
106
+ });
107
+
108
+ if (notification && notification.$self) {
109
+ notification.$self.addClass(Wick.StoreLocator.classes.notification);
110
+ }
111
+ },
112
+
113
+ clearFeedback() {
114
+ Wick.StoreLocator.removeTopMessage();
115
+ Wick.StoreLocator.removeFieldError(Wick.StoreLocator.el.postcode);
116
+ Wick.StoreLocator.removeFieldError(Wick.StoreLocator.el.store);
117
+ },
118
+
119
+ showPostcodeError() {
120
+ Wick.StoreLocator.openSearch();
121
+ Wick.StoreLocator.clearFeedback();
122
+ Wick.StoreLocator.showTopMessage('error', Wick.StoreLocator.messages.postcode, false);
123
+ Wick.StoreLocator.showFieldError(
124
+ Wick.StoreLocator.el.postcode,
125
+ Wick.StoreLocator.messages.postcode
126
+ );
127
+ },
128
+
129
+ showGeolocationWarning() {
130
+ Wick.StoreLocator.openSearch();
131
+ Wick.StoreLocator.clearFeedback();
132
+ Wick.StoreLocator.showTopMessage('warning', Wick.StoreLocator.messages.geolocation, true);
133
+ },
134
+
135
+ showStoreSelectionError() {
136
+ Wick.StoreLocator.openSearch();
137
+ Wick.StoreLocator.clearFeedback();
138
+ Wick.StoreLocator.showTopMessage('error', Wick.StoreLocator.messages.store, false);
139
+ Wick.StoreLocator.showFieldError(
140
+ Wick.StoreLocator.el.store,
141
+ Wick.StoreLocator.messages.store
142
+ );
143
+ },
144
+
145
+ showResults() {
146
+ Wick.StoreLocator.clearFeedback();
147
+ Wick.StoreLocator.collapseSearch();
148
+ },
149
+
150
+ bindEvents() {
151
+ $(document).on('click', Wick.StoreLocator.el.openSearch, Wick.StoreLocator.openSearch);
152
+ },
153
+
154
+ init() {
155
+ Wick.StoreLocator.bindEvents();
156
+
157
+ var searched = new URLSearchParams(window.location.search).get('searched');
158
+
159
+ if (searched === 'true') {
160
+ Wick.StoreLocator.collapseSearch();
161
+ }
162
+ },
163
+ };
164
+
165
+ Wick.StoreLocator.init();
@@ -72,7 +72,7 @@ switch-vat=true
72
72
  data-complete-widget
73
73
  data-mock-key="completeYourProject2Recomendations"
74
74
  >
75
- {{> bloomreach/complete-your-project title="Complete your project"}}
75
+ {{> bloomreach/complete-your-project titleWidget="Customers also bought"}}
76
76
  </div>
77
77
  {{> fulfilment-accordions }}
78
78
  </div>
@@ -74,7 +74,7 @@ isWhyNotAdd=true
74
74
  data-complete-widget
75
75
  data-mock-key="completeYourProject3Recomendations"
76
76
  >
77
- {{> bloomreach/complete-your-project title="Complete your project"}}
77
+ {{> bloomreach/complete-your-project titleWidget="Customers also bought"}}
78
78
  </div>
79
79
  {{> fulfilment-accordions }}
80
80
  </div>