wickes-css2 2.109.0-develop.5 → 2.109.0-develop.7

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 (48) hide show
  1. package/Readme.md +0 -1
  2. package/build/css/components/card-product-banner.css +1 -1
  3. package/build/css/components/special-opening-schedule-v2.css +1 -1
  4. package/build/css/components/special-opening-schedule.css +1 -1
  5. package/build/css/emulation.css +1 -1
  6. package/build/css/main.css +1 -1
  7. package/build/css/my-account-main-v2.css +1 -1
  8. package/build/css/my-account-main.css +1 -1
  9. package/build/css/pages/checkout-new.css +1 -1
  10. package/build/css/pages/page_merged-basket.css +1 -1
  11. package/build/css/pages/page_store-locator-details.css +1 -1
  12. package/build/css/pages/page_store-locator.css +1 -1
  13. package/build/css/plp-main.css +1 -1
  14. package/build/css/store-locator-main.css +1 -1
  15. package/build/js/basket.min.js +1 -1
  16. package/build/js/bundle.min.js +1 -1
  17. package/build/js/checkout.min.js +1 -1
  18. package/build/js/emulation.min.js +340 -110
  19. package/build/js/general.bundle.min.js +1 -1
  20. package/build/js/merged-checkout.min.js +1 -1
  21. package/build/js/page/components/store-locator-cards.js +76 -0
  22. package/build/js/pdp.bundle.min.js +1 -1
  23. package/build/js/plp.bundle.min.js +1 -1
  24. package/build/js/project-list.min.js +1 -1
  25. package/build/js/store-locator-cards.min.js +1 -0
  26. package/package.json +1 -1
  27. package/src/components/card-store-locator.hbs +70 -33
  28. package/src/components/card_bloomreach_media_banner.hbs +10 -0
  29. package/src/components/card_sponsor_banner.hbs +1 -1
  30. package/src/data/data_locators.json +441 -135
  31. package/src/data/data_search-results_v2.json +11 -0
  32. package/src/js/components/general/accordion.js +25 -2
  33. package/src/js/emulation/banner-placement-manager.js +235 -34
  34. package/src/js/emulation/gift-cards.js +1 -1
  35. package/src/js/emulation/store-locator-load-more.js +69 -0
  36. package/src/js/page/components/store-locator-cards.js +76 -0
  37. package/src/page_plp_bloomreach.html +81 -0
  38. package/src/page_plp_v2.html +5 -0
  39. package/src/page_store-locator-list.html +18 -28
  40. package/src/scss/components/_card-store-locator.scss +139 -32
  41. package/src/scss/components/card-product-banner.scss +35 -35
  42. package/src/scss/components/special-opening-schedule-v2.scss +2 -6
  43. package/src/scss/components/special-opening-schedule.scss +17 -4
  44. package/src/scss/emulation.scss +0 -6
  45. package/src/scss/pages/page_store-locator.scss +48 -26
  46. package/src/scss/store-locator-main.scss +15 -1
  47. package/src/sitemap.html +1 -0
  48. package/src/js/emulation/store-locator-list.js +0 -19
@@ -1,53 +1,254 @@
1
1
  // Simulate prompt for input
2
- function getInputs() {
3
- const productBannerPositions = prompt("Enter Product Banner Positions:", "2") || "";
4
- const sponsorProductPositions = prompt("Enter Sponsor Product Positions (comma-separated):", "6,7,8") || "";
5
- const sponsorBannerPositions = prompt("Enter Sponsor Banner Positions:", "10") || "";
6
2
 
7
- return {
8
- productBannerPositions: productBannerPositions ? productBannerPositions.split(",").map(Number) : [],
9
- sponsorProductPositions: sponsorProductPositions ? sponsorProductPositions.split(",").map(Number) : [],
10
- sponsorBannerPositions: sponsorBannerPositions ? sponsorBannerPositions.split(",").map(Number) : [],
11
- };
3
+ function parseSlots(value) {
4
+ if (!value) {
5
+ return [];
6
+ }
7
+
8
+ return String(value)
9
+ .split(',')
10
+ .map((item) => parseInt(item.trim(), 10))
11
+ .filter((item) => Number.isInteger(item) && item >= 0);
12
+ }
13
+
14
+ function isBloomreachDisabled(slots) {
15
+ return !slots.length || slots.every((s) => s === 0);
16
+ }
17
+
18
+ function toggleHybrisProductBanners(inputs) {
19
+ const banners = document.querySelectorAll('.card-product-banner');
20
+ const disabled = isBloomreachDisabled(inputs.bloomreachSlots);
21
+
22
+ banners.forEach((banner) => {
23
+ if (disabled) {
24
+ banner.classList.remove('d-none');
25
+ banner.classList.remove('card-product-banner--inactive');
26
+ } else {
27
+ banner.classList.add('d-none');
28
+ banner.classList.add('card-product-banner--inactive');
29
+ }
30
+ });
12
31
  }
13
32
 
14
33
  function getPositionAttr() {
15
- const isMobile = Wick.BannerPlacementManager.isMobileResolution();
16
- return isMobile
17
- ? 'data-mobile-position'
18
- : 'data-desktop-position';
34
+ const isMobile = Wick.BannerPlacementManager.isMobileResolution();
35
+
36
+ return isMobile ? 'data-mobile-position' : 'data-desktop-position';
37
+ }
38
+
39
+ function setUnifiedPosition(el, slot) {
40
+ el.setAttribute('data-desktop-position', String(slot));
41
+ el.setAttribute('data-mobile-position', String(slot));
42
+ }
43
+
44
+ function hasLegacyBanners() {
45
+ return Boolean(
46
+ document.querySelector('.card-product-banner') ||
47
+ document.querySelector('.card-sponsor-product') ||
48
+ document.querySelector('.card-sponsor-banner')
49
+ );
50
+ }
51
+
52
+ function getInputs() {
53
+ const hasLegacy = hasLegacyBanners();
54
+
55
+ const bloomreachSlots = parseSlots(
56
+ prompt('Enter Bloomreach Banner Slots (comma-separated):', '3') || ''
57
+ );
58
+
59
+ if (!hasLegacy) {
60
+ return {
61
+ bloomreachSlots,
62
+ sponsorProductPositions: [],
63
+ sponsorBannerPositions: [],
64
+ productBannerPositions: [],
65
+ };
66
+ }
67
+
68
+ const productBannerPositions =
69
+ prompt('Enter Product Banner Positions (comma-separated):', '2') || '';
70
+
71
+ const sponsorProductPositions =
72
+ prompt('Enter Sponsor Product Positions (comma-separated):', '6,7,8') || '';
73
+
74
+ const sponsorBannerPositions =
75
+ prompt('Enter Sponsor Banner Positions (comma-separated):', '10') || '';
76
+
77
+ return {
78
+ productBannerPositions: parseSlots(productBannerPositions),
79
+ sponsorProductPositions: parseSlots(sponsorProductPositions),
80
+ sponsorBannerPositions: parseSlots(sponsorBannerPositions),
81
+ bloomreachSlots,
82
+ };
83
+ }
84
+
85
+ function updateBannerPositions(selector, positions) {
86
+ if (!positions?.length) {
87
+ return;
88
+ }
89
+
90
+ const positionAttr = getPositionAttr();
91
+ const elements = document.querySelectorAll(selector);
92
+
93
+ elements.forEach((el, index) => {
94
+ if (positions[index] !== undefined) {
95
+ el.setAttribute(positionAttr, String(positions[index]));
96
+ }
97
+ });
19
98
  }
20
99
 
21
100
  function updatePositions(inputs) {
22
- const productBannerElements = document.querySelectorAll(".card-product-banner");
23
- productBannerElements.forEach((el, index) => {
24
- if (inputs.productBannerPositions[index] !== undefined) {
25
- el.setAttribute(getPositionAttr(), inputs.productBannerPositions[index]);
101
+ updateBannerPositions('.card-product-banner', inputs.productBannerPositions);
102
+ updateBannerPositions('.card-sponsor-product', inputs.sponsorProductPositions);
103
+ updateBannerPositions('.card-sponsor-banner', inputs.sponsorBannerPositions);
104
+ }
105
+
106
+ function patchBannerPlacementManagerForBloomreachEmulation(inputs) {
107
+ const manager = window.Wick?.BannerPlacementManager;
108
+
109
+ if (!manager || manager.__bloomreachEmulationPatched) {
110
+ return;
26
111
  }
27
- });
28
112
 
29
- const sponsorProductElements = document.querySelectorAll(".card-sponsor-product");
30
- sponsorProductElements.forEach((el, index) => {
31
- if (inputs.sponsorProductPositions[index] !== undefined) {
32
- el.setAttribute(getPositionAttr(), inputs.sponsorProductPositions[index]);
113
+ const shouldDisableProductBanners = Boolean(inputs.bloomreachSlots?.length);
114
+
115
+ manager.el.bloomreachBanners = '.card-bloomreach-media-banner';
116
+
117
+ manager.el.allBanners = shouldDisableProductBanners
118
+ ? '.card-bloomreach-media-banner, .card-sponsor-banner, .card-sponsor-product'
119
+ : '.card-product-banner, .card-bloomreach-media-banner, .card-sponsor-banner, .card-sponsor-product';
120
+
121
+ manager.el.allListSlots = shouldDisableProductBanners
122
+ ? '.product-card, .card-bloomreach-media-banner, .card-sponsor-banner, .card-sponsor-product'
123
+ : '.product-card, .card-product-banner, .card-bloomreach-media-banner, .card-sponsor-banner, .card-sponsor-product';
124
+
125
+ manager.classes.bloomreachBanners = 'card-bloomreach-media-banner';
126
+
127
+ manager.getListSlots = function () {
128
+ return $(manager.el.productsWrap)
129
+ .children(manager.el.allListSlots)
130
+ .filter(function () {
131
+ if (
132
+ $(this).hasClass(manager.classes.productBanners) ||
133
+ $(this).hasClass(manager.classes.bloomreachBanners)
134
+ ) {
135
+ const position = manager.getBannerPosition(this);
136
+ const productsCount = manager.getListLength();
137
+
138
+ return position <= productsCount;
139
+ }
140
+
141
+ return true;
142
+ });
143
+ };
144
+
145
+ manager.arrangeBannersInRightOrder = function () {
146
+ const $allBanners = $(manager.el.allBanners);
147
+
148
+ function getSameSlotInsertionOrder(el) {
149
+ if ($(el).hasClass(manager.classes.bloomreachBanners)) {
150
+ return 0;
151
+ }
152
+
153
+ if ($(el).hasClass(manager.classes.sponsorBanners)) {
154
+ return 1;
155
+ }
156
+
157
+ if ($(el).hasClass(manager.classes.sponsorProducts)) {
158
+ return 2;
159
+ }
160
+
161
+ if ($(el).hasClass(manager.classes.productBanners)) {
162
+ return 3;
163
+ }
164
+
165
+ return 4;
166
+ }
167
+
168
+ $allBanners
169
+ .sort((a, b) => {
170
+ const positionA = manager.getBannerPosition(a);
171
+ const positionB = manager.getBannerPosition(b);
172
+
173
+ if (positionA !== positionB) {
174
+ return positionA - positionB;
175
+ }
176
+
177
+ return getSameSlotInsertionOrder(a) - getSameSlotInsertionOrder(b);
178
+ })
179
+ .appendTo(manager.el.productsWrap);
180
+ };
181
+
182
+ manager.__bloomreachEmulationPatched = true;
183
+ }
184
+
185
+ function rebuildBloomreachBannersForEmulation(inputs) {
186
+ const slots = inputs.bloomreachSlots || [];
187
+ const productsWrap = document.querySelector('.products-list.products-list-v2');
188
+
189
+ if (!productsWrap) {
190
+ return;
191
+ }
192
+
193
+ const existingBanners = document.querySelectorAll('.card-bloomreach-media-banner');
194
+
195
+ if (isBloomreachDisabled(slots)) {
196
+ existingBanners.forEach((banner) => banner.remove());
197
+ return;
33
198
  }
34
- });
35
199
 
36
- const sponsorBannerElements = document.querySelectorAll(".card-sponsor-banner");
37
- sponsorBannerElements.forEach((el, index) => {
38
- if (inputs.sponsorBannerPositions[index] !== undefined) {
39
- el.setAttribute(getPositionAttr(), inputs.sponsorBannerPositions[index]);
200
+ if (!existingBanners.length) {
201
+ return;
40
202
  }
41
- });
203
+
204
+ const template = existingBanners[0].cloneNode(true);
205
+
206
+ existingBanners.forEach((banner) => banner.remove());
207
+
208
+ const fragment = document.createDocumentFragment();
209
+
210
+ slots.forEach((slot) => {
211
+ if (slot === 0) return;
212
+
213
+ const node = template.cloneNode(true);
214
+
215
+ node.removeAttribute('data-slots');
216
+ setUnifiedPosition(node, slot);
217
+
218
+ fragment.appendChild(node);
219
+ });
220
+
221
+ productsWrap.appendChild(fragment);
42
222
  }
43
223
 
44
- function init() {
45
- const inputs = getInputs();
46
- updatePositions(inputs);
224
+ function applyBloomreachEmulation() {
225
+ const inputs = getInputs();
226
+
227
+ updatePositions(inputs);
228
+
229
+ const isDisabled = isBloomreachDisabled(inputs.bloomreachSlots);
230
+
231
+ toggleHybrisProductBanners(inputs);
232
+
233
+ if (!isDisabled) {
234
+ patchBannerPlacementManagerForBloomreachEmulation(inputs);
235
+ }
236
+
237
+ rebuildBloomreachBannersForEmulation(inputs);
238
+
239
+ if (
240
+ window.Wick &&
241
+ Wick.BannerPlacementManager &&
242
+ typeof Wick.BannerPlacementManager.checkProductsInColumn === 'function'
243
+ ) {
244
+ Wick.BannerPlacementManager.checkProductsInColumn();
245
+ }
47
246
  }
48
247
 
49
248
  $(document).ready(function () {
50
- if ($('.retail-media .products-list.products-list-v2').length) {
51
- setTimeout(() => init(), 100)
52
- }
249
+ if ($('.products-list.products-list-v2').length) {
250
+ setTimeout(() => {
251
+ applyBloomreachEmulation();
252
+ }, 100);
253
+ }
53
254
  });
@@ -205,7 +205,7 @@
205
205
  mock.giftCards = [];
206
206
  recomputeTotalsAndOrder();
207
207
 
208
- Wick.GiftCard.init({
208
+ Wick.GiftCard?.init({
209
209
  giftCardsLimit: GIFT_CARDS_LIMIT,
210
210
  errorCode: PAY_ERROR_CODE,
211
211
  giftCards: mock.giftCards.slice(),
@@ -0,0 +1,69 @@
1
+ import { appendLoader, showLoader, hideLoader } from '../page/utils/loader';
2
+
3
+ function initStoreLocatorLoadMore() {
4
+ const PAGE_SIZE = 8;
5
+
6
+ const SELECTORS = {
7
+ cards: '.cards-store-list',
8
+ btnMore: '.store-locator__load-button_more',
9
+ loader: '.store-locator-loader',
10
+ };
11
+
12
+ const loaderPayload = {
13
+ wrapper: 'body',
14
+ hidden: true,
15
+ modifier: 'store-locator-loader',
16
+ };
17
+
18
+ const $cards = $(SELECTORS.cards);
19
+ const $btnMore = $(SELECTORS.btnMore);
20
+
21
+ let visibleCount = PAGE_SIZE;
22
+
23
+ function updateVisibility() {
24
+ $cards.each(function (index) {
25
+ $(this).toggle(index < visibleCount);
26
+ });
27
+
28
+ if (visibleCount >= $cards.length) {
29
+ $btnMore.hide();
30
+ } else {
31
+ $btnMore.show();
32
+ }
33
+
34
+ Wick.StoreCardsAlign?.align();
35
+ }
36
+
37
+ function loadMore() {
38
+ showLoader(SELECTORS.loader);
39
+ $btnMore.prop('disabled', true);
40
+
41
+ setTimeout(() => {
42
+ visibleCount += PAGE_SIZE;
43
+ updateVisibility();
44
+
45
+ hideLoader(SELECTORS.loader);
46
+ $btnMore.prop('disabled', false).blur();
47
+ }, 1000);
48
+ }
49
+
50
+ function init() {
51
+ if (!$cards.length || !$btnMore.length) {
52
+ return;
53
+ }
54
+
55
+ if (!$(SELECTORS.loader).length) {
56
+ appendLoader(loaderPayload);
57
+ }
58
+
59
+ updateVisibility();
60
+
61
+ $btnMore.on('click', loadMore);
62
+ }
63
+
64
+ init();
65
+ }
66
+
67
+ $(document).ready(function () {
68
+ initStoreLocatorLoadMore();
69
+ });
@@ -0,0 +1,76 @@
1
+ var Wick = window.Wick || (window.Wick = {});
2
+
3
+ Wick.StoreCardsAlign = (function () {
4
+ const SELECTORS = {
5
+ card: '.card-store',
6
+ info: '.card-store__info',
7
+ accordionHeader: '.opening-times-accordion__header',
8
+ };
9
+
10
+ let resizeTimeout;
11
+
12
+ function alignCardInfoHeights() {
13
+ const rows = [];
14
+
15
+ $(SELECTORS.card).each(function () {
16
+ const $card = $(this);
17
+ const top = $card.offset().top;
18
+
19
+ let row = rows.find((r) => Math.abs(r.top - top) < 5);
20
+
21
+ if (!row) {
22
+ row = { top: top, items: [] };
23
+ rows.push(row);
24
+ }
25
+
26
+ row.items.push($card);
27
+ });
28
+
29
+ rows.forEach((row) => {
30
+ let maxHeight = 0;
31
+
32
+ // reset
33
+ row.items.forEach(($card) => {
34
+ $card.find(SELECTORS.info).css('min-height', '');
35
+ });
36
+
37
+ // find max
38
+ row.items.forEach(($card) => {
39
+ const h = $card.find(SELECTORS.info).outerHeight();
40
+ if (h > maxHeight) maxHeight = h;
41
+ });
42
+
43
+ // apply
44
+ row.items.forEach(($card) => {
45
+ $card.find(SELECTORS.info).css('min-height', maxHeight + 'px');
46
+ });
47
+ });
48
+ }
49
+
50
+ function bindEvents() {
51
+ // load
52
+ $(window).on('load', alignCardInfoHeights);
53
+
54
+ // resize
55
+ $(window).on('resize', () => {
56
+ clearTimeout(resizeTimeout);
57
+ resizeTimeout = setTimeout(alignCardInfoHeights, 100);
58
+ });
59
+
60
+ // accordion
61
+ $(document).on('click', SELECTORS.accordionHeader, () => {
62
+ setTimeout(alignCardInfoHeights, 0);
63
+ });
64
+ }
65
+
66
+ function init() {
67
+ bindEvents();
68
+ }
69
+
70
+ init();
71
+
72
+ return {
73
+ init: init,
74
+ align: alignCardInfoHeights,
75
+ };
76
+ })();
@@ -0,0 +1,81 @@
1
+ {{#extend "base" hybrisClass="hybris-class" pageClass="products-list-page retail-media category-seo-config" title="Products list" globalSearchV2="true" pagePlp=true}}
2
+ {{#content "head" mode="append" pagePlp=true}}
3
+ <link type="text/css" rel="stylesheet" href="./css/components/global-search.css">
4
+ {{/content}}
5
+ <style></style>
6
+ {{#content "body"}}
7
+ <main>
8
+ <div class="container">
9
+ <div class="page-header page-header_border-all">
10
+ <h1 class="page-header__title">
11
+ Fire Doors
12
+ </h1>
13
+ {{> srp-injected}}
14
+ </div>
15
+
16
+ {{> color-picker-plp }}
17
+
18
+ <div class="row">
19
+ <aside class="left-aside">
20
+ {{> search-filter collapsed="accordion_collapsed" hidden="hidden-state"}}
21
+ </aside>
22
+
23
+ <div class="content">
24
+ <div class="plp-filters" data-component="plp-filters" aria-label="Product filters">
25
+ <div class="plp-filters__bar plp-filters__bar-mobile" role="tablist" aria-label="Filters">
26
+ {{> kitchen/mobile-nav-item
27
+ icon="fas fa-filter"
28
+ title="Filter by"
29
+ info="1,818 results"
30
+ modalId="filterModal"
31
+ mod="filter-modal-cta"
32
+ }}
33
+ {{> kitchen/mobile-nav-item
34
+ icon="fas fa-sort-alt"
35
+ title="Sort by"
36
+ info="Relevance"
37
+ dropdown=true
38
+ }}
39
+ </div>
40
+ </div>
41
+ <div class="sort-products-list">
42
+ {{> kitchen/sort-by }}
43
+ </div>
44
+
45
+ <div class="products-list products-list-v2">
46
+ {{#each search-result_v2.products}}
47
+ {{>card_product_v2}}
48
+ {{/each}}
49
+ {{#if search-result_v2.bloomreach-media-banner}}
50
+ {{#each search-result_v2.bloomreach-media-banner}}
51
+ {{>card_bloomreach_media_banner}}
52
+ {{/each}}
53
+ {{/if}}
54
+ </div>
55
+ <div class="load-more-wrap">
56
+ <button class="btn btn-primary btn_full btn-load-more">
57
+ Load more
58
+ </button>
59
+ </div>
60
+ </div>
61
+ <!-- ./content -->
62
+ </div>
63
+ </div>
64
+ {{> legal-info}}
65
+
66
+ {{> similar-products-v2 }}
67
+
68
+ {{> seo-widgets title="More products" }}
69
+ {{> seo-widgets title="Related category" }}
70
+
71
+ </main>
72
+ {{/content}}
73
+ {{#content "foot" mode="append"}}
74
+ {{> kitchen/filter-modal isKitchenMode=false modalTitle="Filter by" }}
75
+ <script defer src="./js/plp.bundle.min.js"></script>
76
+
77
+ <script defer src="./js/page/plp-cards-v2.js"></script>
78
+ <script defer src="./js/search-filter.min.js"></script>
79
+ <script defer src="./js/plp-filters.min.js"></script>
80
+ {{/content}}
81
+ {{/extend}}
@@ -52,6 +52,11 @@
52
52
  {{>card_product_banner_v2}}
53
53
  {{/each}}
54
54
  {{/if}}
55
+ {{#if search-result_v2.bloomreach-media-banner}}
56
+ {{#each search-result_v2.bloomreach-media-banner}}
57
+ {{>card_bloomreach_media_banner}}
58
+ {{/each}}
59
+ {{/if}}
55
60
  {{#if search-result_v2.sponsor-banner}}
56
61
  {{#each search-result_v2.sponsor-banner}}
57
62
  {{>card_sponsor_banner}}
@@ -1,11 +1,14 @@
1
1
  {{#extend "base" pageClass="store-locator" title="Store locator list" pageStoreLocator=true}}
2
2
  {{#content "head" mode="append" pageStoreLocator=true}}{{/content}}
3
+
3
4
  {{#content "body"}}
4
5
  <main class="container">
5
6
  <h1>Store Locator</h1>
7
+
6
8
  <button class="btn btn-primary btn_store-near-me">
7
9
  <span class="btn__text">Find a store near me</span>
8
10
  </button>
11
+
9
12
  <div class="row-holder">
10
13
  <div class="map-container">
11
14
  <div class="map store-locator-popup__map">
@@ -13,43 +16,30 @@
13
16
  </div>
14
17
  </div>
15
18
  </div>
16
- {{> find-a-store data-action = "scroll-to-list"}}
19
+
20
+ {{> find-a-store data-action="scroll-to-list"}}
21
+
17
22
  <div class="cards-store-holder">
18
23
  <div class="cards-store-wrapper">
19
- <div class="row">
20
-
21
- <div class="cards-store-list">
22
- {{> card-store-locator view-map="true" distance="true" opening-times="true" schedule-title="true" locator-list="true"}}
23
- </div>
24
-
24
+ <div class="row" id="store-cards">
25
25
  {{#each locators}}
26
26
  <div class="cards-store-list">
27
- {{> card-store-locator view-map="true" distance="true" opening-times="true" schedule-title="true"}}
27
+ {{> card-store-locator
28
+ opening-times=true
29
+ schedule-title=true
30
+ locator-list=true
31
+ }}
28
32
  </div>
29
33
  {{/each}}
30
-
31
- <div class="cards-store-list__actions">
32
- <button class="btn btn-primary btn_full store-locator__load-button store-locator__load-button_more">
33
- <span class="icon icon__eye">
34
- <i class="fas fa-eye"></i>
35
- </span>
36
- <span class="btn__text">
37
- View more...
38
- </span>
39
- </button>
40
- <button class="btn btn-secondary btn_full store-locator__load-button" style="display: none;">
41
- <span class="icon icon__eye">
42
- <i class="fas fa-eye"></i>
43
- </span>
44
- <span class="btn__text">View less</span>
45
- </button>
46
- </div>
34
+ </div>
35
+ <div class="cards-store-list__actions">
36
+ <button class="btn btn-primary btn_full store-locator__load-button store-locator__load-button_more">
37
+ <span class="btn__text">Load more</span>
38
+ </button>
47
39
  </div>
48
40
  </div>
49
41
  </div>
50
- <div class="pagination-holder">
51
- {{> pagination pagination1="true"}}
52
- </div>
53
42
  </main>
54
43
  {{/content}}
55
44
  {{/extend}}
45
+ <script defer src="./js/store-locator-cards.min.js"></script>