wickes-css2 2.103.0-RG-1742-billie-30-60-90-days.3 → 2.103.0-develop.10
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.
- package/Readme.md +5 -1
- package/build/css/category-main.css +1 -1
- package/build/css/components/card-product-banner.css +1 -1
- package/build/css/homepage-main.css +1 -1
- package/build/css/kitchen-plp-main.css +1 -1
- package/build/css/main.css +1 -1
- package/build/css/my-account-main-v2.css +1 -1
- package/build/css/my-account-main.css +1 -1
- package/build/css/pages/page_products-list-combined.css +1 -1
- package/build/css/pages/page_products-list.css +1 -1
- package/build/css/pdp-main-before-combine.css +1 -1
- package/build/css/pdp-main-non-critical.css +1 -1
- package/build/css/pdp-main.css +1 -1
- package/build/css/plp-main.css +1 -1
- package/build/css/store-locator-main.css +1 -1
- package/build/js/basket.min.js +2 -2
- package/build/js/bundle.min.js +1 -1
- package/build/js/checkout.min.js +2 -2
- package/build/js/emulation.min.js +1301 -369
- package/build/js/general.bundle.min.js +1 -1
- package/build/js/merged-checkout.min.js +2 -2
- package/build/js/mini-basket-slider.min.js +1 -0
- package/build/js/page/basket/basket-update-cart-action.js +59 -0
- package/build/js/page/basket/basket-update-cart.js +29 -0
- package/build/js/page/basket/basket-utils.js +50 -0
- package/build/js/page/basket/mini-basket-total.js +97 -0
- package/build/js/page/basket/quantity-change-handler.js +64 -0
- package/build/js/page/basket/update-quantity-operation.js +37 -0
- package/build/js/page/basket/update-quantity.js +65 -0
- package/build/js/page/basket-v2.js +138 -244
- package/build/js/page/checkout-payment-details.js +43 -96
- package/build/js/page/components/discounts.js +6 -6
- package/build/js/page/components/mini-basket-slider.js +569 -0
- package/build/js/page/plp-cards-v2.js +15 -6
- package/build/js/page/plp-load-more.js +1 -1
- package/build/js/pdp.bundle.min.js +1 -1
- package/build/js/plp.bundle.min.js +1 -1
- package/build/js/project-list.min.js +1 -1
- package/package.json +18 -3
- package/src/components/card_product_v2.hbs +10 -5
- package/src/components/card_sponsor_banner.hbs +8 -0
- package/src/components/card_sponsor_product.hbs +6 -0
- package/src/components/checkout-payment-details-v2.hbs +23 -35
- package/src/components/injected-content.hbs +1 -1
- package/src/components/mini-basket/mini-basket-empty.hbs +3 -13
- package/src/components/mini-basket/mini-basket-order-item.hbs +73 -0
- package/src/components/mini-basket/mini-basket.hbs +32 -13
- package/src/components/mini-basket/product-item.hbs +37 -16
- package/src/components/srp-injected.hbs +3 -13
- package/src/data/data_confirmation-summary.json +4 -2
- package/src/data/data_mini-basket.json +4 -80
- package/src/data/data_search-results_v2.json +56 -141
- package/src/js/components/banner-placement-manager.js +267 -0
- package/src/js/components/general/cart-slider.js +4 -0
- package/src/js/components/general/create-popup-slider.js +5 -2
- package/src/js/emulation/account-hub.js +40 -40
- package/src/js/emulation/banner-placement-manager.js +53 -0
- package/src/js/emulation/checkout-payment-details.js +8 -8
- package/src/js/emulation/custom-slider-emulation.js +4 -10
- package/src/js/emulation/forms.js +89 -118
- package/src/js/emulation/mini-basket-data.js +949 -0
- package/src/js/emulation/paymentLoader.js +3 -4
- package/src/js/page/basket/basket-update-cart-action.js +59 -0
- package/src/js/page/basket/basket-update-cart.js +29 -0
- package/src/js/page/basket/basket-utils.js +50 -0
- package/src/js/page/basket/mini-basket-total.js +97 -0
- package/src/js/page/basket/quantity-change-handler.js +64 -0
- package/src/js/page/basket/update-quantity-operation.js +37 -0
- package/src/js/page/basket/update-quantity.js +65 -0
- package/src/js/page/basket-v2.js +138 -244
- package/src/js/page/checkout-payment-details.js +43 -96
- package/src/js/page/components/discounts.js +6 -6
- package/src/js/page/components/mini-basket-slider.js +569 -0
- package/src/js/page/plp-cards-v2.js +15 -6
- package/src/js/page/plp-load-more.js +1 -1
- package/src/layouts/base.hbs +0 -6
- package/src/page_plp_v2.html +17 -6
- package/src/page_search-results.html +12 -2
- package/src/partials/scripts.hbs +1 -0
- package/src/scss/category-main.scss +1 -0
- package/src/scss/components/_custom-slider.scss +131 -3
- package/src/scss/components/_popover-mini-basket.scss +0 -4
- package/src/scss/components/card-product-banner.scss +91 -3
- package/src/scss/emulation.scss +3 -3
- package/src/scss/helpers/_colors-semantic.scss +120 -0
- package/src/scss/helpers/_variables.scss +2 -0
- package/src/scss/main.scss +0 -2
- package/src/scss/pages/_facets.scss +86 -0
- package/src/scss/pages/page_products-list-combined.scss +11 -0
- package/src/scss/pages/page_products-list.scss +8 -0
- package/src/scss/plp-main.scss +1 -0
- package/build/css/components/checkout-chip.css +0 -1
- package/build/css/components/checkout-payment-repayment-terms.css +0 -1
- package/src/components/checkout-chip.hbs +0 -15
- package/src/components/checkout-payment-repayment-terms.hbs +0 -12
- package/src/data/data_billie-terms.json +0 -7
- package/src/js/components/general/mini-basket-slider.js +0 -8
- package/src/js/components/product-banner.js +0 -148
- package/src/js/emulation/repayment-toggle.js +0 -35
- package/src/scss/components/checkout-chip.scss +0 -64
- package/src/scss/components/checkout-payment-repayment-terms.scss +0 -39
|
@@ -4,25 +4,70 @@
|
|
|
4
4
|
{
|
|
5
5
|
"src": "https://eu-images.contentstack.com/v3/assets/blt066259863543a0d2/bltf2fa907eeef56dc5/62161f9af3bcce42fe002786/PLP-DecoratingTools-230222.jpg",
|
|
6
6
|
"href": "/sitemap.html",
|
|
7
|
-
"desktop-position":
|
|
8
|
-
"mobile-position":
|
|
7
|
+
"desktop-position": 8,
|
|
8
|
+
"mobile-position": 7,
|
|
9
9
|
"show": false
|
|
10
|
+
}
|
|
11
|
+
],
|
|
12
|
+
"sponsor-product": [
|
|
13
|
+
{
|
|
14
|
+
"isSponsor": true,
|
|
15
|
+
"desktop-position": 4,
|
|
16
|
+
"mobile-position": 3,
|
|
17
|
+
"title": "Rangemaster Classic Deluxe 90 Ceramic Range Cooker",
|
|
18
|
+
"code": "492747",
|
|
19
|
+
"src": "https://media.wickes.co.uk/is/image/wickes/normal/Footwear-Tough-Grit-Oak-Boot-7~GPID_1100568107_00",
|
|
20
|
+
"descr": "Offer is valid for the same product and size in a single purchase",
|
|
21
|
+
"reviews": "0",
|
|
22
|
+
"review-rating": "4.3",
|
|
23
|
+
"price": "<span class='product-card__price-value-text'>From</span> £99,009.00",
|
|
24
|
+
"perSQM": "£1,444.00",
|
|
25
|
+
"recommended": false,
|
|
26
|
+
"badge-text": "new",
|
|
27
|
+
"badge-color": "green",
|
|
28
|
+
"badge-text-color": "gray"
|
|
10
29
|
},
|
|
11
30
|
{
|
|
12
|
-
"
|
|
13
|
-
"
|
|
31
|
+
"isSponsor": true,
|
|
32
|
+
"desktop-position": 5,
|
|
33
|
+
"mobile-position": 4,
|
|
34
|
+
"title": "Rangemaster Classic Deluxe 90 Ceramic Range Cooker",
|
|
35
|
+
"code": "492747",
|
|
36
|
+
"src": "https://media.wickes.co.uk/is/image/wickes/normal/Footwear-Tough-Grit-Oak-Boot-7~GPID_1100568107_00",
|
|
37
|
+
"descr": "Offer is valid for the same product and size in a single purchase",
|
|
38
|
+
"reviews": "0",
|
|
39
|
+
"review-rating": "4.3",
|
|
40
|
+
"price": "<span class='product-card__price-value-text'>From</span> £99,009.00",
|
|
41
|
+
"perSQM": "£1,444.00",
|
|
42
|
+
"recommended": false,
|
|
43
|
+
"badge-text": "new",
|
|
44
|
+
"badge-color": "green",
|
|
45
|
+
"badge-text-color": "gray"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"isSponsor": true,
|
|
14
49
|
"desktop-position": 7,
|
|
15
50
|
"mobile-position": 5,
|
|
16
|
-
"
|
|
17
|
-
"
|
|
18
|
-
"
|
|
19
|
-
|
|
51
|
+
"title": "Rangemaster Classic Deluxe 90 Ceramic Range Cooker Rangemaster Classic Deluxe 90 Ceramic Range Cooker",
|
|
52
|
+
"code": "721657",
|
|
53
|
+
"src": "https://media.wickes.co.uk/is/image/wickes/normal/Footwear-Tough-Grit-Oak-Boot-7~GPID_1100568107_00",
|
|
54
|
+
"descr": "Offer is valid for the same product and size in a single purchase",
|
|
55
|
+
"reviews": "21",
|
|
56
|
+
"review-rating": "4.4",
|
|
57
|
+
"price": "£2,009.00",
|
|
58
|
+
"SQM": "£1,555.00",
|
|
59
|
+
"click-collect-only": true,
|
|
60
|
+
"badge-text": "Clearance",
|
|
61
|
+
"badge-color": "yellow",
|
|
62
|
+
"badge-text-color": "white"
|
|
63
|
+
}
|
|
64
|
+
],
|
|
65
|
+
"sponsor-banner": [
|
|
20
66
|
{
|
|
21
67
|
"src": "https://eu-images.contentstack.com/v3/assets/blt066259863543a0d2/bltf2fa907eeef56dc5/62161f9af3bcce42fe002786/PLP-DecoratingTools-230222.jpg",
|
|
22
68
|
"href": "/sitemap.html",
|
|
23
|
-
"
|
|
24
|
-
"
|
|
25
|
-
"show": false
|
|
69
|
+
"desktop-position": 6,
|
|
70
|
+
"mobile-position": 8
|
|
26
71
|
}
|
|
27
72
|
],
|
|
28
73
|
"products": [
|
|
@@ -196,136 +241,6 @@
|
|
|
196
241
|
"recommended": false,
|
|
197
242
|
"new": true,
|
|
198
243
|
"new-range": true
|
|
199
|
-
},
|
|
200
|
-
{
|
|
201
|
-
"title": "Rangemaster Classic Deluxe 90 Ceramic Range Cooker",
|
|
202
|
-
"code": "737934",
|
|
203
|
-
"src": "./img/placeholders/map-2.png",
|
|
204
|
-
"descr": "Offer is valid for the same product and size in a single purchase",
|
|
205
|
-
"reviews": "0",
|
|
206
|
-
"price": "£2,009.00",
|
|
207
|
-
"recommended": false
|
|
208
|
-
},
|
|
209
|
-
{
|
|
210
|
-
"title": "Rangemaster Classic Deluxe 90 Ceramic Range Cooker - Black with Chrome Trim ",
|
|
211
|
-
"code": "247767",
|
|
212
|
-
"src": "./img/placeholders/map-2.png",
|
|
213
|
-
"descr": "Offer is valid for the same product and size in a single purchase",
|
|
214
|
-
"reviews": "0",
|
|
215
|
-
"price": "£2,009.00",
|
|
216
|
-
"recommended": false
|
|
217
|
-
},
|
|
218
|
-
{
|
|
219
|
-
"title": "Rangemaster Classic Deluxe 90 Ceramic Range Cooker",
|
|
220
|
-
"code": "978004",
|
|
221
|
-
"src": "./img/placeholders/map-2.png",
|
|
222
|
-
"descr": "Offer is valid for the same product and size in a single purchase",
|
|
223
|
-
"reviews": "0",
|
|
224
|
-
"price": "£2,009.00",
|
|
225
|
-
"recommended": false
|
|
226
|
-
},
|
|
227
|
-
{
|
|
228
|
-
"title": "Rangemaster Classic Deluxe 90 Ceramic Range Cooker",
|
|
229
|
-
"code": "523586",
|
|
230
|
-
"src": "https://media.wickes.co.uk/is/image/wickes/normal/Footwear-Tough-Grit-Alder-Trainer-7~GPID_1100568095_00",
|
|
231
|
-
"descr": "Offer is valid for the same product and size in a single purchase",
|
|
232
|
-
"reviews": "0",
|
|
233
|
-
"perSQM": "£1,444.00",
|
|
234
|
-
"recommended": false
|
|
235
|
-
},
|
|
236
|
-
{
|
|
237
|
-
"title": "Rangemaster Classic Deluxe 90 Ceramic Range Cooker",
|
|
238
|
-
"code": "729112",
|
|
239
|
-
"src": "https://media.wickes.co.uk/is/image/wickes/normal/Footwear-Tough-Grit-Alder-Trainer-7~GPID_1100568095_00",
|
|
240
|
-
"descr": "Offer is valid for the same product and size in a single purchase",
|
|
241
|
-
"reviews": "0",
|
|
242
|
-
"price": "£2,315.00",
|
|
243
|
-
"recommended": false
|
|
244
|
-
},
|
|
245
|
-
{
|
|
246
|
-
"sale": {
|
|
247
|
-
"discount": "15% off",
|
|
248
|
-
"price": "£2,315.00"
|
|
249
|
-
},
|
|
250
|
-
"title": "Rangemaster Classic Deluxe 90 Ceramic Range Cooker",
|
|
251
|
-
"code": "279966",
|
|
252
|
-
"src": "https://media.wickes.co.uk/is/image/wickes/normal/Footwear-Tough-Grit-Alder-Trainer-7~GPID_1100568095_00",
|
|
253
|
-
"descr": "Offer is valid for the same product and size in a single purchase",
|
|
254
|
-
"reviews": "0",
|
|
255
|
-
|
|
256
|
-
"recommended": false
|
|
257
|
-
},
|
|
258
|
-
{
|
|
259
|
-
"title": "Rangemaster Classic Deluxe 90 Ceramic Range Cooker",
|
|
260
|
-
"code": "813053",
|
|
261
|
-
"src": "https://media.wickes.co.uk/is/image/wickes/normal/Footwear-Tough-Grit-Oak-Boot-7~GPID_1100568107_00",
|
|
262
|
-
"descr": "Offer is valid for the same product and size in a single purchase",
|
|
263
|
-
"reviews": "0",
|
|
264
|
-
"SQM": "£1,555.00",
|
|
265
|
-
"recommended": false
|
|
266
|
-
},
|
|
267
|
-
{
|
|
268
|
-
"title": "Rangemaster Classic Deluxe 90 Ceramic Range Cooker",
|
|
269
|
-
"code": "655972",
|
|
270
|
-
"src": "https://media.wickes.co.uk/is/image/wickes/normal/Footwear-Tough-Grit-Oak-Boot-7~GPID_1100568107_00",
|
|
271
|
-
"descr": "Offer is valid for the same product and size in a single purchase",
|
|
272
|
-
"reviews": "0",
|
|
273
|
-
|
|
274
|
-
"recommended": false
|
|
275
|
-
},
|
|
276
|
-
{
|
|
277
|
-
"title": "Rangemaster Classic Deluxe 90 Ceramic Range Cooker",
|
|
278
|
-
"code": "757775",
|
|
279
|
-
"src": "https://media.wickes.co.uk/is/image/wickes/normal/Footwear-Tough-Grit-Oak-Boot-7~GPID_1100568107_00",
|
|
280
|
-
"descr": "Offer is valid for the same product and size in a single purchase",
|
|
281
|
-
"reviews": "0",
|
|
282
|
-
|
|
283
|
-
"recommended": false
|
|
284
|
-
},
|
|
285
|
-
{
|
|
286
|
-
"title": "Rangemaster Classic Deluxe 90 Ceramic Range Cooker",
|
|
287
|
-
"code": "276523",
|
|
288
|
-
"src": "https://media.wickes.co.uk/is/image/wickes/normal/Footwear-Tough-Grit-Alder-Trainer-7~GPID_1100568095_00",
|
|
289
|
-
"descr": "Offer is valid for the same product and size in a single purchase",
|
|
290
|
-
"reviews": "0",
|
|
291
|
-
|
|
292
|
-
"recommended": false
|
|
293
|
-
},
|
|
294
|
-
{
|
|
295
|
-
"title": "Rangemaster Classic Deluxe 90 Ceramic Range Cooker",
|
|
296
|
-
"code": "334333",
|
|
297
|
-
"src": "https://media.wickes.co.uk/is/image/wickes/normal/Footwear-Tough-Grit-Alder-Trainer-7~GPID_1100568095_00",
|
|
298
|
-
"descr": "Offer is valid for the same product and size in a single purchase",
|
|
299
|
-
"reviews": "0",
|
|
300
|
-
|
|
301
|
-
"recommended": false
|
|
302
|
-
},
|
|
303
|
-
{
|
|
304
|
-
"title": "Rangemaster Classic Deluxe 90 Ceramic Range Cooker",
|
|
305
|
-
"code": "597258",
|
|
306
|
-
"src": "https://media.wickes.co.uk/is/image/wickes/normal/Footwear-Tough-Grit-Alder-Trainer-7~GPID_1100568095_00",
|
|
307
|
-
"descr": "Offer is valid for the same product and size in a single purchase",
|
|
308
|
-
"reviews": "0",
|
|
309
|
-
|
|
310
|
-
"recommended": false
|
|
311
|
-
},
|
|
312
|
-
{
|
|
313
|
-
"title": "Rangemaster Classic Deluxe 90 Ceramic Range Cooker",
|
|
314
|
-
"code": "806538",
|
|
315
|
-
"src": "https://media.wickes.co.uk/is/image/wickes/normal/Footwear-Tough-Grit-Oak-Boot-7~GPID_1100568107_00",
|
|
316
|
-
"descr": "Offer is valid for the same product and size in a single purchase",
|
|
317
|
-
"reviews": "0",
|
|
318
|
-
"perSQM": "£1,444.00",
|
|
319
|
-
"recommended": false
|
|
320
|
-
},
|
|
321
|
-
{
|
|
322
|
-
"title": "Rangemaster Classic Deluxe 90 Ceramic Range Cooker",
|
|
323
|
-
"code": "276521",
|
|
324
|
-
"src": "https://media.wickes.co.uk/is/image/wickes/normal/Footwear-Tough-Grit-Oak-Boot-7~GPID_1100568107_00",
|
|
325
|
-
"descr": "Offer is valid for the same product and size in a single purchase",
|
|
326
|
-
"reviews": "0",
|
|
327
|
-
|
|
328
|
-
"recommended": false
|
|
329
244
|
}
|
|
330
245
|
]
|
|
331
246
|
}
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
var Wick = Wick || {};
|
|
2
|
+
Wick.BannerPlacementManager = {
|
|
3
|
+
SPONSOR_BANNERS_DISPLAYED_EVENT: 'sponsorAdsDisplayedEvent',
|
|
4
|
+
el: {
|
|
5
|
+
banners: '.card-product-banner',
|
|
6
|
+
sponsorBanners: '.card-sponsor-banner',
|
|
7
|
+
sponsorProducts: '.card-sponsor-product',
|
|
8
|
+
allBanners: '.card-product-banner, .card-sponsor-banner, .card-sponsor-product',
|
|
9
|
+
productCard: '.product-card',
|
|
10
|
+
allListSlots: '.product-card, .card-product-banner, .card-sponsor-banner, .card-sponsor-product',
|
|
11
|
+
productsWrap: '.products-list-v2',
|
|
12
|
+
$products: $('.product-card'),
|
|
13
|
+
attrPositionDesktop: 'data-desktop-position',
|
|
14
|
+
attrPositionMobile: 'data-mobile-position',
|
|
15
|
+
attrRequiredAmountDesktop: 'data-required-amount-desktop',
|
|
16
|
+
attrRequiredAmountMobile: 'data-required-amount-mobile',
|
|
17
|
+
hide: 'd-none',
|
|
18
|
+
sponsoredAdvBanners: '.sponsored-ad'
|
|
19
|
+
},
|
|
20
|
+
classes: {
|
|
21
|
+
sponsorBanners: 'card-sponsor-banner',
|
|
22
|
+
sponsorProducts: 'card-sponsor-product',
|
|
23
|
+
productBanners: 'card-product-banner',
|
|
24
|
+
bannerInactiveClass: 'card-product-banner--inactive'
|
|
25
|
+
},
|
|
26
|
+
isEventSent: false,
|
|
27
|
+
currentBreakpoint: null,
|
|
28
|
+
checkProductsInColumn() {
|
|
29
|
+
Wick.BannerPlacementManager.addInactiveClasses();
|
|
30
|
+
Wick.BannerPlacementManager.arrangeBannersInRightOrder();
|
|
31
|
+
const $allBanners = $(Wick.BannerPlacementManager.el.allBanners);
|
|
32
|
+
const totalProducts = Wick.BannerPlacementManager.getListLength();
|
|
33
|
+
const totalSlots = totalProducts + $allBanners.length;
|
|
34
|
+
$allBanners.each((index, banner) => {
|
|
35
|
+
const bannerPosition = Wick.BannerPlacementManager.getBannerPosition(banner);
|
|
36
|
+
|
|
37
|
+
if ($(banner).hasClass('card-product-banner')) {
|
|
38
|
+
if (bannerPosition > totalSlots) {
|
|
39
|
+
Wick.BannerPlacementManager.hideBanner(banner);
|
|
40
|
+
$(Wick.BannerPlacementManager.el.productsWrap).append(banner);
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
if ($(banner).hasClass(Wick.BannerPlacementManager.classes.sponsorBanners) || $(banner).hasClass(Wick.BannerPlacementManager.classes.sponsorProducts)) {
|
|
46
|
+
if (bannerPosition > totalProducts) {
|
|
47
|
+
Wick.BannerPlacementManager.showBanner(banner);
|
|
48
|
+
Wick.BannerPlacementManager.removeInactiveClass(banner);
|
|
49
|
+
$(Wick.BannerPlacementManager.el.productsWrap).append(banner);
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
Wick.BannerPlacementManager.hideBannerDueLimit(banner, index);
|
|
55
|
+
Wick.BannerPlacementManager.moveBannerToSpecifiedPosition(banner);
|
|
56
|
+
});
|
|
57
|
+
},
|
|
58
|
+
moveBannerToSpecifiedPosition(banner) {
|
|
59
|
+
const $listSlots = Wick.BannerPlacementManager.getListSlots();
|
|
60
|
+
const bannerPosition = Wick.BannerPlacementManager.getBannerPosition(banner) - 2;
|
|
61
|
+
const listSlotsLength = $listSlots.length;
|
|
62
|
+
|
|
63
|
+
if (Wick.BannerPlacementManager.isBannerVisible(banner)) {
|
|
64
|
+
if (bannerPosition <= listSlotsLength) {
|
|
65
|
+
if ($listSlots[bannerPosition]) {
|
|
66
|
+
Wick.BannerPlacementManager.showBanner(banner);
|
|
67
|
+
Wick.BannerPlacementManager.removeInactiveClass(banner);
|
|
68
|
+
Wick.BannerPlacementManager.moveBanner(banner, $listSlots[bannerPosition]);
|
|
69
|
+
} else {
|
|
70
|
+
Wick.BannerPlacementManager.hideBanner(banner);
|
|
71
|
+
Wick.BannerPlacementManager.coverEdgeCases(banner);
|
|
72
|
+
}
|
|
73
|
+
} else {
|
|
74
|
+
if ($(banner).hasClass(Wick.BannerPlacementManager.classes.sponsorBanners) || $(banner).hasClass(Wick.BannerPlacementManager.classes.sponsorProducts)) {
|
|
75
|
+
Wick.BannerPlacementManager.showBanner(banner);
|
|
76
|
+
Wick.BannerPlacementManager.removeInactiveClass(banner);
|
|
77
|
+
$(Wick.BannerPlacementManager.el.productsWrap).append(banner);
|
|
78
|
+
} else {
|
|
79
|
+
Wick.BannerPlacementManager.hideBanner(banner);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
moveBanner(banner, targetElement) {
|
|
85
|
+
$(banner).remove();
|
|
86
|
+
$(targetElement).after(banner);
|
|
87
|
+
},
|
|
88
|
+
hideBanner(banner) {
|
|
89
|
+
$(banner).addClass(Wick.BannerPlacementManager.el.hide);
|
|
90
|
+
},
|
|
91
|
+
showBanner(banner) {
|
|
92
|
+
$(banner).removeClass(Wick.BannerPlacementManager.el.hide);
|
|
93
|
+
},
|
|
94
|
+
isBannerVisible(banner) {
|
|
95
|
+
return !$(banner).hasClass(Wick.BannerPlacementManager.el.hide);
|
|
96
|
+
},
|
|
97
|
+
hideBannerDueLimit(banner) {
|
|
98
|
+
const bannerMinLimit = Wick.BannerPlacementManager.getBannerLimit(banner) - 1;
|
|
99
|
+
const $listSlots = Wick.BannerPlacementManager.getListSlots();
|
|
100
|
+
const listProductsLength = $listSlots.length;
|
|
101
|
+
Wick.BannerPlacementManager.showBanner(banner);
|
|
102
|
+
|
|
103
|
+
if (bannerMinLimit > listProductsLength) {
|
|
104
|
+
Wick.BannerPlacementManager.hideBanner(banner);
|
|
105
|
+
}
|
|
106
|
+
},
|
|
107
|
+
getBannerPosition(banner) {
|
|
108
|
+
const isMobile = Wick.BannerPlacementManager.isMobileResolution();
|
|
109
|
+
const positionAttribute = isMobile
|
|
110
|
+
? Wick.BannerPlacementManager.el.attrPositionMobile
|
|
111
|
+
: Wick.BannerPlacementManager.el.attrPositionDesktop
|
|
112
|
+
|
|
113
|
+
return banner.hasAttribute(positionAttribute)
|
|
114
|
+
? Number(banner.getAttribute(positionAttribute))
|
|
115
|
+
: Number(Wick.BannerPlacementManager.getListLength() + Wick.BannerPlacementManager.getBannersAmount());
|
|
116
|
+
},
|
|
117
|
+
getBannerLimit(banner) {
|
|
118
|
+
const isMobile = Wick.BannerPlacementManager.isMobileResolution();
|
|
119
|
+
|
|
120
|
+
const limitAttribute = isMobile
|
|
121
|
+
? Wick.BannerPlacementManager.el.attrRequiredAmountMobile
|
|
122
|
+
: Wick.BannerPlacementManager.el.attrRequiredAmountDesktop;
|
|
123
|
+
|
|
124
|
+
return banner.hasAttribute(limitAttribute)
|
|
125
|
+
? Number(banner.getAttribute(limitAttribute))
|
|
126
|
+
: 0;
|
|
127
|
+
},
|
|
128
|
+
isMobileResolution() {
|
|
129
|
+
return Wick.Responsive.getCurrentBreakpoint() !== 'up-lg';
|
|
130
|
+
},
|
|
131
|
+
getListLength() {
|
|
132
|
+
const $listItems = $(Wick.BannerPlacementManager.el.productsWrap).children(Wick.BannerPlacementManager.el.productCard);
|
|
133
|
+
return $listItems.length;
|
|
134
|
+
},
|
|
135
|
+
getBannersAmount() {
|
|
136
|
+
return $(Wick.BannerPlacementManager.el.allBanners).length;
|
|
137
|
+
},
|
|
138
|
+
getProductsAmount() {
|
|
139
|
+
return Wick.BannerPlacementManager.el.$products.length;
|
|
140
|
+
},
|
|
141
|
+
arrangeBannersInRightOrder() {
|
|
142
|
+
const $allBanners = $(Wick.BannerPlacementManager.el.allBanners);
|
|
143
|
+
|
|
144
|
+
const sponsorProducts = $allBanners.filter((i, el) =>
|
|
145
|
+
$(el).hasClass(Wick.BannerPlacementManager.classes.sponsorProducts)
|
|
146
|
+
);
|
|
147
|
+
const sponsorBanners = $allBanners.filter((i, el) =>
|
|
148
|
+
$(el).hasClass(Wick.BannerPlacementManager.classes.sponsorBanners)
|
|
149
|
+
);
|
|
150
|
+
|
|
151
|
+
const firstSponsorProductPos = sponsorProducts.length > 0
|
|
152
|
+
? Math.min(...sponsorProducts.map((i, el) => Wick.BannerPlacementManager.getBannerPosition(el)).get())
|
|
153
|
+
: Infinity;
|
|
154
|
+
const firstSponsorBannerPos = sponsorBanners.length > 0
|
|
155
|
+
? Math.min(...sponsorBanners.map((i, el) => Wick.BannerPlacementManager.getBannerPosition(el)).get())
|
|
156
|
+
: Infinity;
|
|
157
|
+
|
|
158
|
+
let groupOrder;
|
|
159
|
+
if (firstSponsorProductPos < firstSponsorBannerPos) {
|
|
160
|
+
groupOrder = [
|
|
161
|
+
Wick.BannerPlacementManager.classes.sponsorProducts,
|
|
162
|
+
Wick.BannerPlacementManager.classes.sponsorBanners,
|
|
163
|
+
Wick.BannerPlacementManager.classes.productBanners
|
|
164
|
+
];
|
|
165
|
+
} else {
|
|
166
|
+
groupOrder = [
|
|
167
|
+
Wick.BannerPlacementManager.classes.sponsorBanners,
|
|
168
|
+
Wick.BannerPlacementManager.classes.sponsorProducts,
|
|
169
|
+
Wick.BannerPlacementManager.classes.productBanners
|
|
170
|
+
];
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
$allBanners.sort((a, b) => {
|
|
174
|
+
function getGroupIndex(el) {
|
|
175
|
+
if ($(el).hasClass(groupOrder[0])) return 0;
|
|
176
|
+
if ($(el).hasClass(groupOrder[1])) return 1;
|
|
177
|
+
if ($(el).hasClass(groupOrder[2])) return 2;
|
|
178
|
+
return 3;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
const groupA = getGroupIndex(a);
|
|
182
|
+
const groupB = getGroupIndex(b);
|
|
183
|
+
|
|
184
|
+
if (groupA !== groupB) {
|
|
185
|
+
return groupA - groupB;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
const positionA = Wick.BannerPlacementManager.getBannerPosition(a);
|
|
189
|
+
const positionB = Wick.BannerPlacementManager.getBannerPosition(b);
|
|
190
|
+
|
|
191
|
+
return positionA - positionB;
|
|
192
|
+
}).appendTo(Wick.BannerPlacementManager.el.productsWrap);
|
|
193
|
+
},
|
|
194
|
+
addInactiveClasses() {
|
|
195
|
+
$(Wick.BannerPlacementManager.el.allBanners).addClass(Wick.BannerPlacementManager.el.hide);
|
|
196
|
+
},
|
|
197
|
+
removeInactiveClass(banner) {
|
|
198
|
+
$(banner).removeClass(Wick.BannerPlacementManager.classes.bannerInactiveClass)
|
|
199
|
+
},
|
|
200
|
+
insertFirstBanner(banner) {
|
|
201
|
+
const bannerPosition = Wick.BannerPlacementManager.getBannerPosition(banner);
|
|
202
|
+
|
|
203
|
+
if (bannerPosition === 1) {
|
|
204
|
+
Wick.BannerPlacementManager.showBanner(banner);
|
|
205
|
+
Wick.BannerPlacementManager.removeInactiveClass(banner);
|
|
206
|
+
$(banner).remove();
|
|
207
|
+
$(Wick.BannerPlacementManager.el.productsWrap).prepend(banner);
|
|
208
|
+
}
|
|
209
|
+
},
|
|
210
|
+
coverEdgeCases(banner) {
|
|
211
|
+
Wick.BannerPlacementManager.insertFirstBanner(banner);
|
|
212
|
+
},
|
|
213
|
+
getListSlots() {
|
|
214
|
+
return $(Wick.BannerPlacementManager.el.productsWrap)
|
|
215
|
+
.children(Wick.BannerPlacementManager.el.allListSlots)
|
|
216
|
+
.filter(function() {
|
|
217
|
+
if ($(this).hasClass(Wick.BannerPlacementManager.classes.productBanners)) {
|
|
218
|
+
const position = Wick.BannerPlacementManager.getBannerPosition(this);
|
|
219
|
+
const productsCount = Wick.BannerPlacementManager.getListLength();
|
|
220
|
+
return position <= productsCount;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
return true;
|
|
224
|
+
});
|
|
225
|
+
},
|
|
226
|
+
getBannerPriority(banner) {
|
|
227
|
+
if ($(banner).hasClass(Wick.BannerPlacementManager.classes.sponsorProducts)) {
|
|
228
|
+
return 1;
|
|
229
|
+
}
|
|
230
|
+
if ($(banner).hasClass(Wick.BannerPlacementManager.classes.sponsorBanners)) {
|
|
231
|
+
return 2;
|
|
232
|
+
}
|
|
233
|
+
return 3;
|
|
234
|
+
},
|
|
235
|
+
dispatchSponsorAdsDisplayedEvent() {
|
|
236
|
+
return new Promise((resolve, reject) => {
|
|
237
|
+
const eventDetail = { resolve, reject };
|
|
238
|
+
const sponsorAdsEvent = createEvent(Wick.BannerPlacementManager.SPONSOR_BANNERS_DISPLAYED_EVENT, { displayed: true }, eventDetail);
|
|
239
|
+
window.dispatchEvent(sponsorAdsEvent);
|
|
240
|
+
});
|
|
241
|
+
},
|
|
242
|
+
init() {
|
|
243
|
+
Wick.Responsive.onResize(function () {
|
|
244
|
+
if(Wick.BannerPlacementManager.currentBreakpoint !== Wick.Responsive.getCurrentBreakpoint()) {
|
|
245
|
+
Wick.BannerPlacementManager.currentBreakpoint = Wick.Responsive.getCurrentBreakpoint()
|
|
246
|
+
Wick.BannerPlacementManager.checkProductsInColumn();
|
|
247
|
+
|
|
248
|
+
if (
|
|
249
|
+
!Wick.BannerPlacementManager.isEventSent && $(Wick.BannerPlacementManager.el.sponsoredAdvBanners).length
|
|
250
|
+
) {
|
|
251
|
+
Wick.BannerPlacementManager.dispatchSponsorAdsDisplayedEvent();
|
|
252
|
+
Wick.BannerPlacementManager.isEventSent = true;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
$(window).trigger('productBannerPositionChanged');
|
|
256
|
+
}
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
};
|
|
260
|
+
|
|
261
|
+
$(document).ready(function () {
|
|
262
|
+
if (!Wick.BannerPlacementManager.getBannersAmount() || !Wick.BannerPlacementManager.getProductsAmount()) {
|
|
263
|
+
return;
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
Wick.BannerPlacementManager.init();
|
|
267
|
+
})
|
|
@@ -11,6 +11,10 @@ createPopupSlider({
|
|
|
11
11
|
const htmlContent = event.detail.html;
|
|
12
12
|
$(el.slider).append(htmlContent);
|
|
13
13
|
showSlider();
|
|
14
|
+
Wick.MiniBasketSliderFE.isMiniBasketLoaded = false;
|
|
14
15
|
$(el.sliderWrap).on('scroll', _.debounce(() => handleScroll(el.sliderWrap), 100));
|
|
15
16
|
},
|
|
17
|
+
onClose: function () {
|
|
18
|
+
Wick.MiniBasketSliderFE.cartEntries = [];
|
|
19
|
+
}
|
|
16
20
|
});
|
|
@@ -8,7 +8,7 @@ function createEvent(eventName, payload, eventDetail) {
|
|
|
8
8
|
});
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
function createPopupSlider({ type, sliderSelector, onAppendEvent, onAppend }) {
|
|
11
|
+
function createPopupSlider({ type, sliderSelector, onAppendEvent, onAppend, onClose }) {
|
|
12
12
|
const events = {
|
|
13
13
|
CLOSE_JUST_ADDED: 'CLOSE_JUST_ADDED',
|
|
14
14
|
CLOSE_MINI_BASKET: 'CLOSE_MINI_BASKET'
|
|
@@ -119,6 +119,9 @@ function createPopupSlider({ type, sliderSelector, onAppendEvent, onAppend }) {
|
|
|
119
119
|
.finally(() => {
|
|
120
120
|
hideSlider();
|
|
121
121
|
Wick.Backdrop.hide();
|
|
122
|
+
if (typeof onClose === 'function') {
|
|
123
|
+
onClose();
|
|
124
|
+
}
|
|
122
125
|
})
|
|
123
126
|
}
|
|
124
127
|
|
|
@@ -167,7 +170,7 @@ function createPopupSlider({ type, sliderSelector, onAppendEvent, onAppend }) {
|
|
|
167
170
|
bindClosePopup();
|
|
168
171
|
|
|
169
172
|
if (onAppendEvent && onAppend) {
|
|
170
|
-
|
|
173
|
+
window.addEventListener(onAppendEvent, (event) => {
|
|
171
174
|
onAppend(event, { showSlider, handleScroll, el });
|
|
172
175
|
});
|
|
173
176
|
}
|
|
@@ -1,49 +1,49 @@
|
|
|
1
1
|
function returnMembers() {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
2
|
+
return {
|
|
3
|
+
canLoadMore: true,
|
|
4
|
+
members: [
|
|
5
|
+
{
|
|
6
|
+
id: 'john.doe@wickes.co.uk',
|
|
7
|
+
name: 'John Doe',
|
|
8
|
+
email: 'john.doe@wickes.co.uk',
|
|
9
|
+
date: '24/02/2022',
|
|
10
|
+
'order-history-url': 'page_tradePro_order-history.html',
|
|
11
|
+
status: 'PENDING',
|
|
12
|
+
'card-label': 'Pending',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
id: 'john.doe2@wickes.co.uk',
|
|
16
|
+
name: 'John Doe2',
|
|
17
|
+
email: 'john.doe2@wickes.co.uk',
|
|
18
|
+
date: '24/02/2022',
|
|
19
|
+
'order-history-url': 'page_tradePro_order-history.html',
|
|
20
|
+
'card-label': 'Other label',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
id: 'john.doe3@wickes.co.uk',
|
|
24
|
+
name: 'John Doe3',
|
|
25
|
+
email: 'john.doe3@wickes.co.uk',
|
|
26
|
+
date: '24/02/2022',
|
|
27
|
+
'order-history-url': 'page_tradePro_order-history.html',
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
};
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
function initAccountHubFunctionality() {
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
Wick.AccountHub.initAccountHub();
|
|
35
|
+
Wick.AccountHub.initAccountHubRemove();
|
|
36
36
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
37
|
+
$(window).on(Wick.AccountHub.LOAD_MORE_EVENT, function (e) {
|
|
38
|
+
setTimeout(() => {
|
|
39
|
+
e.detail.resolve(returnMembers());
|
|
40
|
+
}, 1000);
|
|
41
|
+
});
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
$(document).ready(function () {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
45
|
+
if (!$('.account-hub').length) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
initAccountHubFunctionality();
|
|
49
49
|
});
|
|
@@ -0,0 +1,53 @@
|
|
|
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
|
+
|
|
7
|
+
return {
|
|
8
|
+
productBannerPositions: productBannerPositions ? productBannerPositions.split(",").map(Number) : [],
|
|
9
|
+
sponsorProductPositions: sponsorProductPositions ? sponsorProductPositions.split(",").map(Number) : [],
|
|
10
|
+
sponsorBannerPositions: sponsorBannerPositions ? sponsorBannerPositions.split(",").map(Number) : [],
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
function getPositionAttr() {
|
|
15
|
+
const isMobile = Wick.BannerPlacementManager.isMobileResolution();
|
|
16
|
+
return isMobile
|
|
17
|
+
? 'data-mobile-position'
|
|
18
|
+
: 'data-desktop-position';
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
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]);
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
|
|
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]);
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
|
|
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]);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function init() {
|
|
45
|
+
const inputs = getInputs();
|
|
46
|
+
updatePositions(inputs);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
$(document).ready(function () {
|
|
50
|
+
if ($('.retail-media .products-list.products-list-v2').length) {
|
|
51
|
+
setTimeout(() => init(), 100)
|
|
52
|
+
}
|
|
53
|
+
});
|