wickes-css2 2.110.0 → 2.111.0-complete-your-project.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.
- package/build/css/category-main.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_personal-details.css +1 -1
- package/build/css/pages/page_product-details-v2.css +1 -1
- package/build/css/pdp-main-before-combine.css +1 -1
- package/build/css/pdp-main-critical.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/account-hub.min.js +1 -1
- package/build/js/basket.min.js +1 -1
- package/build/js/bloomreach-widget.min.js +1 -0
- package/build/js/bundle.min.js +1 -1
- package/build/js/checkout.min.js +1 -1
- package/build/js/emulation.min.js +3025 -217
- package/build/js/general.bundle.min.js +1 -1
- package/build/js/merged-checkout.min.js +1 -1
- package/build/js/page/bloomreach-widget.js +1173 -0
- package/build/js/page/utils/create-count-stepper.js +30 -9
- package/build/js/page/utils/create-loading-button.js +37 -0
- package/build/js/page/utils/create-toast.js +79 -0
- package/build/js/page/utils/custom-dropdown.js +80 -0
- package/build/js/pdp-count-stepper.min.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/build/js/saving-shopping-list.min.js +1 -1
- package/package.json +1 -1
- package/src/components/base/button.hbs +23 -5
- package/src/components/bloomreach/complete-card-dropdown.hbs +47 -0
- package/src/components/bloomreach/complete-card-skeleton.hbs +19 -0
- package/src/components/bloomreach/complete-card.hbs +138 -0
- package/src/components/bloomreach/complete-divider.hbs +3 -0
- package/src/components/bloomreach/complete-summary-skeleton.hbs +12 -0
- package/src/components/bloomreach/complete-summary.hbs +43 -0
- package/src/components/bloomreach/complete-wrapper.hbs +1 -0
- package/src/components/bloomreach/complete-your-project.hbs +21 -0
- package/src/components/gift-cards.hbs +1 -1
- package/src/elements/checkbox.hbs +8 -1
- package/src/js/components/general/cart-slider.js +19 -6
- package/src/js/emulation/bloomreach-widget-calculations.js +140 -0
- package/src/js/emulation/bloomreach-widget-loading.js +11 -0
- package/src/js/emulation/mock.js +3097 -1
- package/src/js/emulation/notify-me.js +1 -1
- package/src/js/page/bloomreach-widget.js +1173 -0
- package/src/js/page/utils/create-count-stepper.js +30 -9
- package/src/js/page/utils/create-loading-button.js +37 -0
- package/src/js/page/utils/create-toast.js +79 -0
- package/src/js/page/utils/custom-dropdown.js +80 -0
- package/src/page_product-details-banner.html +0 -1
- package/src/page_product-details-big-wins-disabled-delivery.html +0 -1
- package/src/page_product-details-big-wins-non-registered.html +0 -1
- package/src/page_product-details-big-wins-out-nearest.html +0 -1
- package/src/page_product-details-big-wins-unhappy.html +0 -1
- package/src/page_product-details-big-wins.html +0 -1
- package/src/page_product-details-billie.html +0 -1
- package/src/page_product-details-bloomreach.html +130 -0
- package/src/page_product-details-calculator.html +0 -1
- package/src/page_product-details-cashback-v2.html +0 -1
- package/src/page_product-details-clearpay.html +0 -1
- package/src/page_product-details-cnc-error-notification.html +0 -1
- package/src/page_product-details-cnc-success-notification-vat.html +0 -1
- package/src/page_product-details-cnc-success-notification.html +0 -1
- package/src/page_product-details-default-store.html +0 -1
- package/src/page_product-details-energy-efficiency.html +0 -1
- package/src/page_product-details-flooring-with-pr-placeholder.html +0 -1
- package/src/page_product-details-flooring.html +0 -1
- package/src/page_product-details-gallery-actual.html +0 -1
- package/src/page_product-details-mfe-calculator.html +0 -1
- package/src/page_product-details-minimum-v2.html +0 -1
- package/src/page_product-details-mtm-doors.html +0 -1
- package/src/page_product-details-only-clearpay.html +0 -1
- package/src/page_product-details-paint-mixing.html +0 -1
- package/src/page_product-details-saved-pl.html +0 -1
- package/src/page_product-details-tile-steps-klarna-widget-with-method-ids.html +0 -1
- package/src/page_product-details-tile-steps-logout.html +0 -1
- package/src/page_product-details-tile-steps-no-new-project-list.html +0 -1
- package/src/page_product-details-tile-steps-with-klarna.html +0 -1
- package/src/page_product-details-tile-steps.html +0 -1
- package/src/page_product-details-v2.html +0 -1
- package/src/page_product-details-vat.html +0 -1
- package/src/page_product-details-wisdom-mcfc-registered.html +0 -1
- package/src/page_product-details-wisdom-mcfc.html +0 -1
- package/src/page_product-details-wisdom-oos-registered.html +0 -1
- package/src/page_product-details-wisdom-oos.html +0 -1
- package/src/page_product-details-wisdom-registered.html +0 -1
- package/src/page_product-details-wisdom.html +0 -1
- package/src/page_product-details-with-favourite.html +0 -1
- package/src/page_product-details-with-global-search-v2.html +7 -1
- package/src/page_product-details_no-previous-default.html +0 -1
- package/src/page_track-my-order-result.html +1 -0
- package/src/partials/scripts.hbs +1 -0
- package/src/scss/common/_common.scss +1 -0
- package/src/scss/common/_elements.scss +13 -1
- package/src/scss/common/_loading-button.scss +49 -0
- package/src/scss/components/_notifications.scss +86 -5
- package/src/scss/components/bloomreach/_bloomreach.scss +3 -0
- package/src/scss/components/bloomreach/_complete-card-dropdown.scss +174 -0
- package/src/scss/components/bloomreach/_complete-card.scss +402 -0
- package/src/scss/components/bloomreach/_complete-your-project.scss +207 -0
- package/src/scss/helpers/_variables.scss +1 -0
- package/src/scss/pages/page_product-details-v2.scss +45 -2
- package/src/scss/pdp-main-critical.scss +0 -1
- package/src/scss/pdp-main.scss +1 -1
- package/src/sitemap.html +6 -0
- package/src/scss/components/_pdp-action-v2-critical.scss +0 -27
- package/src/scss/components/_pdp-action-v2.scss +0 -27
|
@@ -18,7 +18,8 @@ function normalizeOptions(options) {
|
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
function toInt(value) {
|
|
21
|
-
const n = parseInt(
|
|
21
|
+
const n = parseInt(`${value || ''}`.trim(), 10);
|
|
22
|
+
|
|
22
23
|
return Number.isFinite(n) ? n : NaN;
|
|
23
24
|
}
|
|
24
25
|
|
|
@@ -28,6 +29,7 @@ function clampMin(n, min) {
|
|
|
28
29
|
|
|
29
30
|
function ensureQty(value, fallback) {
|
|
30
31
|
const n = toInt(value);
|
|
32
|
+
|
|
31
33
|
return Number.isFinite(n) ? n : fallback;
|
|
32
34
|
}
|
|
33
35
|
|
|
@@ -58,12 +60,15 @@ function updateButtons($input, opt) {
|
|
|
58
60
|
|
|
59
61
|
const $minus = getMinusBtn($wrap);
|
|
60
62
|
|
|
61
|
-
if ($minus.length)
|
|
63
|
+
if ($minus.length) {
|
|
64
|
+
$minus.prop('disabled', qty <= opt.min);
|
|
65
|
+
}
|
|
62
66
|
}
|
|
63
67
|
|
|
64
68
|
function setQty($input, opt, qty) {
|
|
65
69
|
const next = clampMin(qty, opt.min);
|
|
66
|
-
|
|
70
|
+
|
|
71
|
+
$input.val(`${next}`);
|
|
67
72
|
updateButtons($input, opt);
|
|
68
73
|
|
|
69
74
|
if (typeof opt.onChange === 'function') {
|
|
@@ -83,11 +88,13 @@ function ensureButtons($input, opt) {
|
|
|
83
88
|
if (!hasMinus) {
|
|
84
89
|
$input.before(buildBtn('minus', true));
|
|
85
90
|
}
|
|
91
|
+
|
|
86
92
|
if (!hasPlus) {
|
|
87
93
|
$input.after(buildBtn('plus', false));
|
|
88
94
|
}
|
|
89
95
|
|
|
90
96
|
const initial = ensureQty($input.val(), opt.min);
|
|
97
|
+
|
|
91
98
|
setQty($input, opt, initial);
|
|
92
99
|
}
|
|
93
100
|
|
|
@@ -95,16 +102,24 @@ function getInputs($root, inputSel) {
|
|
|
95
102
|
const $scope = $root && $root.length ? $root : $(document);
|
|
96
103
|
const $self = $scope.is(inputSel) ? $scope : $();
|
|
97
104
|
const $found = $scope.find(inputSel);
|
|
105
|
+
|
|
98
106
|
return $self.add($found);
|
|
99
107
|
}
|
|
100
108
|
|
|
109
|
+
function getNamespace(inputSel) {
|
|
110
|
+
return `.countStepper_${inputSel.replace(/[^a-zA-Z0-9_-]/g, '')}`;
|
|
111
|
+
}
|
|
112
|
+
|
|
101
113
|
// ===== FACTORY =====
|
|
102
114
|
|
|
103
115
|
export function createCountStepper(options = {}) {
|
|
104
116
|
const OPT = normalizeOptions(options);
|
|
105
|
-
if (!OPT.inputSel) throw new Error('[createCountStepper] Missing inputSel');
|
|
106
117
|
|
|
107
|
-
|
|
118
|
+
if (!OPT.inputSel) {
|
|
119
|
+
throw new Error('[createCountStepper] Missing inputSel');
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
const NS = getNamespace(OPT.inputSel);
|
|
108
123
|
|
|
109
124
|
function init($root) {
|
|
110
125
|
getInputs($root, OPT.inputSel).each(function () {
|
|
@@ -112,7 +127,6 @@ export function createCountStepper(options = {}) {
|
|
|
112
127
|
});
|
|
113
128
|
}
|
|
114
129
|
|
|
115
|
-
// +/- click
|
|
116
130
|
$(document)
|
|
117
131
|
.off(`click${NS}`, '[data-count-btn]')
|
|
118
132
|
.on(`click${NS}`, '[data-count-btn]', function (e) {
|
|
@@ -120,15 +134,22 @@ export function createCountStepper(options = {}) {
|
|
|
120
134
|
const $parent = $btn.parent();
|
|
121
135
|
const $input = $parent.find(OPT.inputSel).first();
|
|
122
136
|
|
|
123
|
-
if (!$input.length)
|
|
137
|
+
if (!$input.length) {
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
124
140
|
|
|
125
141
|
e.preventDefault();
|
|
126
142
|
|
|
127
143
|
const type = ($btn.attr('data-count-type') || '').toLowerCase();
|
|
128
144
|
const current = ensureQty($input.val(), OPT.min);
|
|
129
145
|
|
|
130
|
-
if (type === 'plus')
|
|
131
|
-
|
|
146
|
+
if (type === 'plus') {
|
|
147
|
+
setQty($input, OPT, current + 1);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
if (type === 'minus') {
|
|
151
|
+
setQty($input, OPT, current - 1);
|
|
152
|
+
}
|
|
132
153
|
});
|
|
133
154
|
|
|
134
155
|
$(document)
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export function createLoadingButton(config = {}) {
|
|
2
|
+
const settings = {
|
|
3
|
+
text: '.loading-button__text',
|
|
4
|
+
loader: '.loading-button__loader',
|
|
5
|
+
loadingClass: 'loading-button--loading',
|
|
6
|
+
...config,
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
function setLoading($button, isLoading) {
|
|
10
|
+
if (!$button.length) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
$button.toggleClass(settings.loadingClass, isLoading);
|
|
15
|
+
$button.find(settings.text).toggleClass('d-none', isLoading);
|
|
16
|
+
$button.find(settings.loader).toggleClass('d-none', !isLoading);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
function start($button) {
|
|
20
|
+
setLoading($button, true);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
function stop($button) {
|
|
24
|
+
setLoading($button, false);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
function isLoading($button) {
|
|
28
|
+
return $button.hasClass(settings.loadingClass);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
return {
|
|
32
|
+
setLoading,
|
|
33
|
+
start,
|
|
34
|
+
stop,
|
|
35
|
+
isLoading,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
export function createToast(config = {}) {
|
|
2
|
+
const settings = {
|
|
3
|
+
containerClass: 'toast-container',
|
|
4
|
+
toastClass: 'toast',
|
|
5
|
+
closeSelector: '.notification__close',
|
|
6
|
+
backdropClass: 'modal-backdrop--toast',
|
|
7
|
+
duration: 3000,
|
|
8
|
+
template: null,
|
|
9
|
+
getData(type, text) {
|
|
10
|
+
return {
|
|
11
|
+
text,
|
|
12
|
+
classModifier: `${settings.toastClass} notification_${type}`,
|
|
13
|
+
success: type === 'success',
|
|
14
|
+
warning: type === 'warning',
|
|
15
|
+
error: type === 'error',
|
|
16
|
+
};
|
|
17
|
+
},
|
|
18
|
+
...config,
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
let closeTimer = null;
|
|
22
|
+
|
|
23
|
+
function clearCloseTimer() {
|
|
24
|
+
if (closeTimer) {
|
|
25
|
+
window.clearTimeout(closeTimer);
|
|
26
|
+
closeTimer = null;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function hide() {
|
|
31
|
+
clearCloseTimer();
|
|
32
|
+
|
|
33
|
+
$(`.${settings.containerClass}`).remove();
|
|
34
|
+
$(`.${settings.backdropClass}`).removeClass(settings.backdropClass);
|
|
35
|
+
|
|
36
|
+
if (window.Wick && Wick.Backdrop) {
|
|
37
|
+
Wick.Backdrop.hide();
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
$(document).off('click.toast');
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
function show({ type = 'success', text = '' }) {
|
|
44
|
+
if (!settings.template) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
hide();
|
|
49
|
+
|
|
50
|
+
const toastHtml = settings.template(settings.getData(type, text));
|
|
51
|
+
|
|
52
|
+
if (window.Wick && Wick.Backdrop) {
|
|
53
|
+
Wick.Backdrop.show();
|
|
54
|
+
$('.modal-backdrop').addClass(settings.backdropClass);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
$('body').append(`<div class="${settings.containerClass}">${toastHtml}</div>`);
|
|
58
|
+
|
|
59
|
+
$(`.${settings.containerClass}`)
|
|
60
|
+
.off('click.toastClose', settings.closeSelector)
|
|
61
|
+
.on('click.toastClose', settings.closeSelector, function (event) {
|
|
62
|
+
event.preventDefault();
|
|
63
|
+
hide();
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
$(document)
|
|
67
|
+
.off('click.toast')
|
|
68
|
+
.on('click.toast', `.${settings.backdropClass}`, function () {
|
|
69
|
+
hide();
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
closeTimer = window.setTimeout(hide, settings.duration);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
return {
|
|
76
|
+
show,
|
|
77
|
+
hide,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
export function createDropdown(config) {
|
|
2
|
+
const settings = {
|
|
3
|
+
root: '[data-dropdown]',
|
|
4
|
+
toggle: '[data-dropdown-toggle]',
|
|
5
|
+
value: '[data-dropdown-value]',
|
|
6
|
+
option: '[data-dropdown-option]',
|
|
7
|
+
openClass: 'dropdown--open',
|
|
8
|
+
selectedClass: 'dropdown__option--selected',
|
|
9
|
+
selectedValueData: 'selected-value',
|
|
10
|
+
ariaExpandedAttr: 'aria-expanded',
|
|
11
|
+
ariaSelectedAttr: 'aria-selected',
|
|
12
|
+
namespace: 'customDropdown',
|
|
13
|
+
onSelect: function () {},
|
|
14
|
+
...config,
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
function closeAll() {
|
|
18
|
+
$(settings.root).each(function () {
|
|
19
|
+
const $dropdown = $(this);
|
|
20
|
+
const $toggle = $dropdown.find(settings.toggle);
|
|
21
|
+
|
|
22
|
+
$dropdown.removeClass(settings.openClass);
|
|
23
|
+
$toggle.attr(settings.ariaExpandedAttr, 'false');
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
function selectOption($dropdown, $option) {
|
|
28
|
+
const $value = $dropdown.find(settings.value);
|
|
29
|
+
const $options = $dropdown.find(settings.option);
|
|
30
|
+
const selectedValue = $option.attr('data-value') || '';
|
|
31
|
+
|
|
32
|
+
$options.removeClass(settings.selectedClass).attr(settings.ariaSelectedAttr, 'false');
|
|
33
|
+
$option.addClass(settings.selectedClass).attr(settings.ariaSelectedAttr, 'true');
|
|
34
|
+
|
|
35
|
+
if ($value.length) {
|
|
36
|
+
$value.text($option.text().trim());
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
$dropdown.data(settings.selectedValueData, selectedValue);
|
|
40
|
+
|
|
41
|
+
settings.onSelect($dropdown, $option, selectedValue);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function bind() {
|
|
45
|
+
$(document).off(`click.${settings.namespace}`);
|
|
46
|
+
$(document).on(`click.${settings.namespace}`, function (event) {
|
|
47
|
+
const $target = $(event.target);
|
|
48
|
+
const $toggle = $target.closest(settings.toggle);
|
|
49
|
+
const $option = $target.closest(settings.option);
|
|
50
|
+
const $dropdown = $target.closest(settings.root);
|
|
51
|
+
|
|
52
|
+
if (!$dropdown.length) {
|
|
53
|
+
closeAll();
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
if ($toggle.length) {
|
|
58
|
+
const isOpen = $dropdown.hasClass(settings.openClass);
|
|
59
|
+
|
|
60
|
+
closeAll();
|
|
61
|
+
|
|
62
|
+
$dropdown.toggleClass(settings.openClass, !isOpen);
|
|
63
|
+
$toggle.attr(settings.ariaExpandedAttr, String(!isOpen));
|
|
64
|
+
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
if ($option.length) {
|
|
69
|
+
selectOption($dropdown, $option);
|
|
70
|
+
closeAll();
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
return {
|
|
76
|
+
bind,
|
|
77
|
+
closeAll,
|
|
78
|
+
selectOption,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
{{#extend "base" pageClass="page-product-details" title="Product details page new"
|
|
2
|
+
isDiscount=true
|
|
3
|
+
isSQM=true
|
|
4
|
+
isDescription=true
|
|
5
|
+
isCashback=false
|
|
6
|
+
isSize=true
|
|
7
|
+
isGuide=true
|
|
8
|
+
hourly-delivery=true
|
|
9
|
+
badge-text='15% off'
|
|
10
|
+
badge-color='yellow'
|
|
11
|
+
badge-text-color='gray'
|
|
12
|
+
currentlyInStock=true
|
|
13
|
+
pagePdp=true
|
|
14
|
+
globalSearchV2="true"
|
|
15
|
+
switch-vat=true
|
|
16
|
+
}}
|
|
17
|
+
{{#content "head" mode="append" pagePdp=true}}
|
|
18
|
+
<link type="text/css" rel="stylesheet" href="./css/components/global-search.css">
|
|
19
|
+
{{/content}}
|
|
20
|
+
{{#content "body"}}
|
|
21
|
+
<main class="pdp__main">
|
|
22
|
+
<div class="container">
|
|
23
|
+
<div class="pdp">
|
|
24
|
+
<div class="pdp__title">
|
|
25
|
+
<h1 class="pdp__heading">Bosch PSB 1800 LI-2 18V Li-Ion Cordless Combi Drill Example with long
|
|
26
|
+
title in two raws
|
|
27
|
+
</h1>
|
|
28
|
+
<div class="pdp__reviews_small">
|
|
29
|
+
<span class="product-code product-code-v2">Product code: <strong id="product-code-val">236334</strong></span>
|
|
30
|
+
<div class="product-card__reviews review-star">
|
|
31
|
+
<div class="product-rating product-rating-v2">
|
|
32
|
+
<div class="rating-bg">
|
|
33
|
+
<i class="fa fa-star" aria-hidden="true"></i>
|
|
34
|
+
<i class="fa fa-star" aria-hidden="true"></i>
|
|
35
|
+
<i class="fa fa-star" aria-hidden="true"></i>
|
|
36
|
+
<i class="fa fa-star" aria-hidden="true"></i>
|
|
37
|
+
<i class="fa fa-star" aria-hidden="true"></i>
|
|
38
|
+
<div class="rating-overlay"
|
|
39
|
+
data-rating="{{#if review-rating}}{{review-rating}}{{else}}0{{/if}}">
|
|
40
|
+
<i class="fa fa-star" aria-hidden="true"></i>
|
|
41
|
+
<i class="fa fa-star" aria-hidden="true"></i>
|
|
42
|
+
<i class="fa fa-star" aria-hidden="true"></i>
|
|
43
|
+
<i class="fa fa-star" aria-hidden="true"></i>
|
|
44
|
+
<i class="fa fa-star" aria-hidden="true"></i>
|
|
45
|
+
</div>
|
|
46
|
+
</div>
|
|
47
|
+
</div>
|
|
48
|
+
<span class="review-star-average review-star-average-v2">(4.6)</span>
|
|
49
|
+
</div>
|
|
50
|
+
<span class="pdp__reviews-link-wrap"><a href="#" data-link="#pdp-reviews" id="open-review">82 reviews</a></span>
|
|
51
|
+
</div>
|
|
52
|
+
</div>
|
|
53
|
+
|
|
54
|
+
<div class="pdp__gallery">
|
|
55
|
+
{{> gallery-pdp-v2 }}
|
|
56
|
+
</div>
|
|
57
|
+
<div class="pdp__aside">
|
|
58
|
+
{{> price-block-v2
|
|
59
|
+
isProductSaved=false
|
|
60
|
+
isUserLogedOut=true
|
|
61
|
+
install=true
|
|
62
|
+
sample=true
|
|
63
|
+
cc=true
|
|
64
|
+
delivery=true
|
|
65
|
+
}}
|
|
66
|
+
</div>
|
|
67
|
+
<div class="pdp__description">
|
|
68
|
+
{{> product-main-info-v2 isProductSaved=true}}
|
|
69
|
+
</div>
|
|
70
|
+
<div
|
|
71
|
+
class="pdp__widget"
|
|
72
|
+
data-complete-widget
|
|
73
|
+
data-context-key="completeYourProject2Recomendations"
|
|
74
|
+
>
|
|
75
|
+
{{> bloomreach/complete-your-project title="Complete your project"}}
|
|
76
|
+
</div>
|
|
77
|
+
{{> fulfilment-accordions }}
|
|
78
|
+
</div>
|
|
79
|
+
</div>
|
|
80
|
+
<div class="container container-info">
|
|
81
|
+
<div class="pdp">
|
|
82
|
+
<div class="pdp__info">
|
|
83
|
+
{{> pdp-info-v2 }}
|
|
84
|
+
</div>
|
|
85
|
+
</div>
|
|
86
|
+
</div>
|
|
87
|
+
{{> recently-viewed }}
|
|
88
|
+
|
|
89
|
+
{{> similar-products-v2 }}
|
|
90
|
+
|
|
91
|
+
{{> seo-widgets title="More products" }}
|
|
92
|
+
{{> seo-widgets title="Related category" }}
|
|
93
|
+
</main>
|
|
94
|
+
{{/content}}
|
|
95
|
+
{{#content "foot" mode="append"}}
|
|
96
|
+
<script type="text/html" id="mini-basket-popup">
|
|
97
|
+
{{> popover-mini-basket mod="popover-mini-basket_just-added" products=mini-basket.just-added just-added=true}}
|
|
98
|
+
</script>
|
|
99
|
+
<script defer src="./js/page/pdp.js"></script>
|
|
100
|
+
<script defer src="./js/global-search.min.js"></script>
|
|
101
|
+
{{#extend "modal" id="modal-pdp-feedback" title="Feedback Form" fullWidth=true}}
|
|
102
|
+
{{#content "body"}}
|
|
103
|
+
<iframe class="cboxIframe" name="cbox1538824723052"
|
|
104
|
+
src="https://docs.google.com/forms/d/1jHV5b8AazYbPmoTXJBxmyns4AcRhtKnnIC4_K_MFOPU/viewform?entry.1452922942=Wickes+Blue+Slate+Chippings+-+Major+Bag&entry.1885983523=Decorative+Uk+sourced+blue+slate+chippings+are+ideal+for+gardens+and+borders.+This+beautiful+stone+changes+colour+when+wet.&entry.935962220=112777&entry.474385230=1000626184"></iframe>
|
|
105
|
+
{{/content}}
|
|
106
|
+
{{/extend}}
|
|
107
|
+
{{> click-and-collect-modal}}
|
|
108
|
+
{{/content}}
|
|
109
|
+
{{/extend}}
|
|
110
|
+
<!--<script defer src="./js/components/badge-cashback.js"></script>-->
|
|
111
|
+
<script>
|
|
112
|
+
if (navigator.userAgent.indexOf('Safari') != -1 && navigator.userAgent.indexOf('Chrome') == -1) {
|
|
113
|
+
$(document).ready(function () {
|
|
114
|
+
$('.modal').on('scroll', function () {
|
|
115
|
+
$(':focus').blur();
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
$(document).ready(function () {
|
|
121
|
+
|
|
122
|
+
$('#info-details').toggleClass('accordion_collapsed');
|
|
123
|
+
$('#details-content').css('display', 'block');
|
|
124
|
+
|
|
125
|
+
$('#open-review').on('click', function () {
|
|
126
|
+
$('#info-review').toggleClass('accordion_collapsed');
|
|
127
|
+
$('#review-content').css('display', 'block');
|
|
128
|
+
})
|
|
129
|
+
})
|
|
130
|
+
</script>
|