wickes-css2 2.105.0-develop.2 → 2.105.0-develop.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Readme.md +3 -2
- 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_product_search.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/account-members.min.js +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 +12122 -11594
- package/build/js/general.bundle.min.js +1 -1
- package/build/js/kitchen/kitchen-plp.min.js +1 -9
- package/build/js/merged-checkout.min.js +2 -2
- package/build/js/mini-basket-slider.min.js +1 -1
- package/build/js/page/basket/basket-update-cart-action.js +59 -56
- package/build/js/page/basket/basket-update-cart.js +27 -27
- package/build/js/page/basket/basket-utils.js +40 -33
- package/build/js/page/basket/mini-basket-total.js +70 -66
- package/build/js/page/basket/quantity-change-handler.js +73 -55
- package/build/js/page/basket/update-quantity-operation.js +39 -30
- package/build/js/page/basket/update-quantity.js +62 -62
- package/build/js/page/basket-v2.js +362 -229
- package/build/js/page/billie-business-type.js +27 -27
- package/build/js/page/checkout-payment-details.js +301 -299
- package/build/js/page/components/discounts.js +39 -36
- package/build/js/page/components/mini-basket-slider.js +604 -545
- package/build/js/page/filters/desktop-nav.js +64 -0
- package/build/js/page/filters/mobile-nav.js +93 -0
- package/build/js/page/filters/plp-filters-chips.js +92 -0
- package/build/js/page/filters/plp-filters-mobile.js +150 -0
- package/build/js/page/filters/plp-filters-panel.js +123 -0
- package/build/js/page/filters/plp-filters-utils.js +66 -0
- package/build/js/page/filters/plp-filters.js +256 -0
- package/build/js/page/filters/sort-by.js +172 -0
- package/build/js/page/klarna-modal-scroll-disable.js +4 -4
- package/build/js/page/online-exclusive.js +28 -30
- package/build/js/page/search-filter.js +62 -0
- package/build/js/page/utils/helpers.js +14 -9
- package/build/js/page/utils/show-more-less.js +273 -0
- package/build/js/pdp.bundle.min.js +1 -1
- package/build/js/plp-filters.min.js +9 -0
- package/build/js/plp.bundle.min.js +1 -1
- package/build/js/project-list.min.js +1 -1
- package/build/js/search-filter.min.js +1 -0
- package/package.json +5 -3
- package/src/components/accordion.hbs +2 -2
- package/src/components/generate-project-id.hbs +1 -1
- package/src/components/kitchen/dropdown.hbs +6 -3
- package/src/components/kitchen/filter-modal-content-kitchen.hbs +10 -0
- package/src/components/kitchen/filter-modal.hbs +10 -13
- package/src/components/kitchen/plp-filters.hbs +3 -1
- package/src/components/kitchen/sort-by.hbs +1 -1
- package/src/components/search-filter-modal-content.hbs +102 -0
- package/src/components/search-filter.hbs +121 -112
- package/src/components/shopping-list-with-share-list-v2.hbs +28 -10
- package/src/components/shopping-list.hbs +5 -5
- package/src/data/data_plp_load-more.json +1 -1
- package/src/elements/btn.hbs +7 -0
- package/src/js/components/general/accordion.js +38 -29
- package/src/js/components/general/cart-slider.js +19 -16
- package/src/js/components/general/create-popup-slider.js +168 -173
- package/src/js/emulation/big-wins.js +1081 -904
- package/src/js/emulation/billie-modal.js +23 -19
- package/src/js/emulation/checkout-payment-details.js +47 -38
- package/src/js/emulation/custom-slider-emulation.js +17 -13
- package/src/js/emulation/filters-emulation.js +164 -0
- package/src/js/emulation/forms.js +360 -323
- package/src/js/emulation/mini-basket-data.js +1051 -923
- package/src/js/emulation/paymentLoader.js +17 -17
- package/src/js/emulation/pdf-file-loader.js +89 -91
- package/src/js/emulation/popover-mini-basket.js +246 -239
- package/src/js/emulation/product-counter.js +50 -0
- package/src/js/emulation/project-list-pdp.js +321 -316
- package/src/js/emulation/repayment-toggle.js +23 -24
- package/src/js/emulation/reset-filter-desktop.js +5 -0
- package/src/js/emulation/selectable.js +22 -18
- package/src/js/emulation/wismo-details.js +23 -31
- package/src/js/page/basket/basket-update-cart-action.js +59 -56
- package/src/js/page/basket/basket-update-cart.js +27 -27
- package/src/js/page/basket/basket-utils.js +40 -33
- package/src/js/page/basket/mini-basket-total.js +70 -66
- package/src/js/page/basket/quantity-change-handler.js +73 -55
- package/src/js/page/basket/update-quantity-operation.js +39 -30
- package/src/js/page/basket/update-quantity.js +62 -62
- package/src/js/page/basket-v2.js +362 -229
- package/src/js/page/billie-business-type.js +27 -27
- package/src/js/page/checkout-payment-details.js +301 -299
- package/src/js/page/components/discounts.js +39 -36
- package/src/js/page/components/mini-basket-slider.js +604 -545
- package/src/js/page/filters/desktop-nav.js +64 -0
- package/src/js/page/filters/mobile-nav.js +93 -0
- package/src/js/page/filters/plp-filters-chips.js +92 -0
- package/src/js/page/filters/plp-filters-mobile.js +150 -0
- package/src/js/page/filters/plp-filters-panel.js +123 -0
- package/src/js/page/filters/plp-filters-utils.js +66 -0
- package/src/js/page/filters/plp-filters.js +256 -0
- package/src/js/page/filters/sort-by.js +172 -0
- package/src/js/page/klarna-modal-scroll-disable.js +4 -4
- package/src/js/page/online-exclusive.js +28 -30
- package/src/js/page/search-filter.js +62 -0
- package/src/js/page/utils/helpers.js +14 -9
- package/src/js/page/utils/show-more-less.js +273 -0
- package/src/page_empty-shared-project-list-bicester-hub.html +3 -0
- package/src/page_kitchen-plp.html +2 -2
- package/src/page_my-shopping-list-hide-download.html +1 -1
- package/src/page_plp-with-paint.html +2 -7
- package/src/page_plp.html +2 -7
- package/src/page_plp_v2-energy-efficiency.html +1 -6
- package/src/page_plp_v2-favourite-products.html +6 -7
- package/src/page_plp_v2-vat.html +2 -7
- package/src/page_plp_v2.html +22 -9
- package/src/page_product_search-vat.html +2 -7
- package/src/page_product_search.html +2 -7
- package/src/page_project-list-with-new-share-popup-android.html +15 -0
- package/src/page_project-list-with-new-share-popup-ios.html +15 -0
- package/src/page_project-list-with-new-share-popup.html +1 -0
- package/src/page_search-results.html +2 -7
- package/src/page_shared-project-list-bicester-hub.html +1 -0
- package/src/scss/common/_common.scss +5 -4
- package/src/scss/components/_accordion.scss +1 -3
- package/src/scss/components/_custom-slider.scss +15 -14
- package/src/scss/components/_date-selection-add-new-styles.scss +6 -7
- package/src/scss/components/_date-selection.scss +1 -1
- package/src/scss/components/{kitchen/_filter-modal.scss → _filter-modal.scss} +55 -4
- package/src/scss/components/{kitchen/_plp-filters.scss → _plp-filters.scss} +31 -13
- package/src/scss/components/_popover-mini-basket.scss +3 -3
- package/src/scss/components/_search-filter.scss +95 -15
- package/src/scss/components/_shared-shopping-list.scss +22 -0
- package/src/scss/components/_shopping-list.scss +18 -8
- package/src/scss/components/_sort-by.scss +190 -0
- package/src/scss/components/checkout-chip.scss +2 -2
- package/src/scss/components/checkout-payment-repayment-terms.scss +1 -1
- package/src/scss/globals/_global-components.scss +3 -0
- package/src/scss/helpers/_colors-semantic.scss +68 -68
- package/src/scss/helpers/_variables.scss +242 -196
- package/src/scss/kitchen-plp-main.scss +0 -3
- package/src/scss/main.scss +65 -65
- package/src/scss/pages/page_product-details-v2.scss +1 -4
- package/src/scss/pages/page_product_search.scss +9 -1
- package/src/scss/pages/page_products-list-combined.scss +28 -24
- package/src/scss/pages/page_products-list.scss +8 -0
- package/src/scss/pages/tradePro-rewards.scss +2 -3
- package/src/sitemap.html +9 -1
- package/build/js/page/accordion.js +0 -35
- package/build/js/page/kitchen/plp-filters-chips.js +0 -90
- package/build/js/page/kitchen/plp-filters-mobile.js +0 -72
- package/build/js/page/kitchen/plp-filters-panel.js +0 -119
- package/build/js/page/kitchen/plp-filters-utils.js +0 -65
- package/build/js/page/kitchen/plp-filters.js +0 -205
- package/build/js/page/kitchen/sort-by.js +0 -157
- package/src/js/components/general/search-filter.js +0 -21
- package/src/js/page/accordion.js +0 -35
- package/src/js/page/kitchen/plp-filters-chips.js +0 -90
- package/src/js/page/kitchen/plp-filters-mobile.js +0 -72
- package/src/js/page/kitchen/plp-filters-panel.js +0 -119
- package/src/js/page/kitchen/plp-filters-utils.js +0 -65
- package/src/js/page/kitchen/plp-filters.js +0 -205
- package/src/js/page/kitchen/sort-by.js +0 -157
|
@@ -3,7 +3,7 @@ export function highlightCharacter(str, char, charClass) {
|
|
|
3
3
|
return str;
|
|
4
4
|
}
|
|
5
5
|
|
|
6
|
-
const pattern = new RegExp(`\\${char}+`,
|
|
6
|
+
const pattern = new RegExp(`\\${char}+`, 'g');
|
|
7
7
|
const replacement = `<span class="${charClass}">$&</span>`;
|
|
8
8
|
|
|
9
9
|
return str.replace(pattern, replacement);
|
|
@@ -12,7 +12,7 @@ export function highlightCharacter(str, char, charClass) {
|
|
|
12
12
|
export function createImageElements(images, alt) {
|
|
13
13
|
return images.map((link) => {
|
|
14
14
|
return $('<img>').attr('src', link).attr('alt', alt);
|
|
15
|
-
})
|
|
15
|
+
});
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
export function countLetters(str) {
|
|
@@ -35,15 +35,17 @@ export function isKeyboardOpen() {
|
|
|
35
35
|
return screenHeight !== screenHeightWithoutKeyboard;
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
export function isTouchDevice
|
|
38
|
+
export function isTouchDevice() {
|
|
39
39
|
return 'ontouchstart' in window;
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
export function isApp
|
|
43
|
-
return navigator.userAgent.match(
|
|
42
|
+
export function isApp() {
|
|
43
|
+
return navigator.userAgent.match(
|
|
44
|
+
/TradeProMobile_iOS|TradeProMobile_Android|DIYMobile_iOS|DIYMobile_Android|DIYApp_Guest_Mobile_iOS|DIYApp_Guest_Mobile_Android|AGENT_PLACEHOLDER/i
|
|
45
|
+
);
|
|
44
46
|
}
|
|
45
47
|
|
|
46
|
-
export function trimFields
|
|
48
|
+
export function trimFields() {
|
|
47
49
|
const fields = Wick.AddressBook.getFieldsConfigurations();
|
|
48
50
|
fields.forEach((field) => {
|
|
49
51
|
const trimmedValue = field.input.val().trim();
|
|
@@ -55,8 +57,11 @@ export function scrollToElement(element, offset = 20) {
|
|
|
55
57
|
const targetElement = $(element);
|
|
56
58
|
|
|
57
59
|
if (targetElement.length > 0) {
|
|
58
|
-
$('html, body').animate(
|
|
59
|
-
|
|
60
|
-
|
|
60
|
+
$('html, body').animate(
|
|
61
|
+
{
|
|
62
|
+
scrollTop: targetElement.offset().top - offset,
|
|
63
|
+
},
|
|
64
|
+
300
|
|
65
|
+
);
|
|
61
66
|
}
|
|
62
67
|
}
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
import btn from '../../../elements/btn.hbs';
|
|
2
|
+
|
|
3
|
+
// ===== HELPERS =====
|
|
4
|
+
|
|
5
|
+
function normalizeOptions(options) {
|
|
6
|
+
return {
|
|
7
|
+
groupSel: '.accordion.filter',
|
|
8
|
+
panelSel: '.accordion__content-inner',
|
|
9
|
+
itemSel: '.filter__item',
|
|
10
|
+
|
|
11
|
+
ctaAppendToSel: '.accordion__content-inner',
|
|
12
|
+
ctaClass: 'filter__facet-cta',
|
|
13
|
+
ctaAction: 'more',
|
|
14
|
+
ctaActionAttr: 'data-action',
|
|
15
|
+
|
|
16
|
+
toggleSel: '.accordion__header',
|
|
17
|
+
|
|
18
|
+
stateKey: 'showMoreLessState',
|
|
19
|
+
stepAttr: 'data-facet-step',
|
|
20
|
+
defaultStep: 5,
|
|
21
|
+
|
|
22
|
+
excludeGroup: null,
|
|
23
|
+
|
|
24
|
+
moreText: 'Show more',
|
|
25
|
+
lessText: 'Show less',
|
|
26
|
+
|
|
27
|
+
...options,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
function makeSelectors(opt) {
|
|
32
|
+
return {
|
|
33
|
+
GROUP: opt.groupSel,
|
|
34
|
+
PANEL: opt.panelSel,
|
|
35
|
+
ITEM: opt.itemSel,
|
|
36
|
+
TOGGLE: opt.toggleSel || null,
|
|
37
|
+
|
|
38
|
+
CTA: `.${opt.ctaClass}`,
|
|
39
|
+
CTA_APPEND_TO: opt.ctaAppendToSel,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
function isExcluded($group, excludeFn) {
|
|
44
|
+
return typeof excludeFn === 'function' ? !!excludeFn($group) : false;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
function getPanel($group, sel) {
|
|
48
|
+
return $group.find(sel.PANEL).first();
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
function getItems($group, sel) {
|
|
52
|
+
const $panel = getPanel($group, sel);
|
|
53
|
+
if (!$panel.length) return $();
|
|
54
|
+
|
|
55
|
+
const $direct = $panel.children(sel.ITEM);
|
|
56
|
+
return $direct.length ? $direct : $panel.find(sel.ITEM);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
function getStep($group, stepAttr, defaultStep) {
|
|
60
|
+
const raw = ($group.attr(stepAttr) || '').trim();
|
|
61
|
+
const n = parseInt(raw, 10);
|
|
62
|
+
return Number.isFinite(n) && n > 0 ? n : defaultStep;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
function getState($group, stateKey, total, step) {
|
|
66
|
+
let state = $group.data(stateKey);
|
|
67
|
+
|
|
68
|
+
if (!state) state = { visible: step, total };
|
|
69
|
+
|
|
70
|
+
state.total = total;
|
|
71
|
+
|
|
72
|
+
if (!state.visible || state.visible < step) state.visible = step;
|
|
73
|
+
if (state.visible > total) state.visible = total;
|
|
74
|
+
|
|
75
|
+
$group.data(stateKey, state);
|
|
76
|
+
return state;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
function setInitialState($group, stateKey, total, step) {
|
|
80
|
+
$group.data(stateKey, { visible: step, total });
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
function getGroups($root, groupSel) {
|
|
84
|
+
const $scope = $root && $root.length ? $root : $(document);
|
|
85
|
+
const $self = $scope.is(groupSel) ? $scope : $();
|
|
86
|
+
const $found = $scope.find(groupSel);
|
|
87
|
+
return $self.add($found);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// ===== CTA helpers =====
|
|
91
|
+
|
|
92
|
+
function getCta($group, sel) {
|
|
93
|
+
return $group.find(sel.CTA).first();
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
function removeCta($group, sel) {
|
|
97
|
+
const $cta = getCta($group, sel);
|
|
98
|
+
if ($cta.length) $cta.remove();
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
function ensureCta($group, sel, opt) {
|
|
102
|
+
let $cta = getCta($group, sel);
|
|
103
|
+
if ($cta.length) return $cta;
|
|
104
|
+
|
|
105
|
+
const $appendTo = $group.find(sel.CTA_APPEND_TO).first();
|
|
106
|
+
if (!$appendTo.length) return $();
|
|
107
|
+
|
|
108
|
+
const html = btn({
|
|
109
|
+
text: opt.moreText,
|
|
110
|
+
class: opt.ctaClass,
|
|
111
|
+
action: opt.ctaAction,
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
$appendTo.append(html);
|
|
115
|
+
|
|
116
|
+
$cta = getCta($group, sel);
|
|
117
|
+
|
|
118
|
+
if ($cta.length && !$cta.attr(opt.ctaActionAttr)) {
|
|
119
|
+
$cta.attr(opt.ctaActionAttr, opt.ctaAction);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
return $cta;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
function setCtaState($cta, mode, opt) {
|
|
126
|
+
if (!$cta || !$cta.length) return;
|
|
127
|
+
|
|
128
|
+
if (mode === 'less') {
|
|
129
|
+
$cta.text(opt.lessText).attr(opt.ctaActionAttr, 'less').show();
|
|
130
|
+
} else {
|
|
131
|
+
$cta.text(opt.moreText).attr(opt.ctaActionAttr, 'more').show();
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
// ===== CORE ACTIONS =====
|
|
136
|
+
|
|
137
|
+
function applyGroup($group, opt, sel) {
|
|
138
|
+
if (!$group || !$group.length) return;
|
|
139
|
+
|
|
140
|
+
// excluded -> CTA never exists
|
|
141
|
+
if (isExcluded($group, opt.excludeGroup)) {
|
|
142
|
+
removeCta($group, sel);
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
const $items = getItems($group, sel);
|
|
147
|
+
const total = $items.length;
|
|
148
|
+
const step = getStep($group, opt.stepAttr, opt.defaultStep);
|
|
149
|
+
|
|
150
|
+
// 0 items -> no CTA
|
|
151
|
+
if (total === 0) {
|
|
152
|
+
removeCta($group, sel);
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
const state = getState($group, opt.stateKey, total, step);
|
|
157
|
+
|
|
158
|
+
// show/hide items
|
|
159
|
+
$items.each(function (idx) {
|
|
160
|
+
$(this).toggle(idx < state.visible);
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
// <= step -> CTA not needed
|
|
164
|
+
if (total <= step) {
|
|
165
|
+
removeCta($group, sel);
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
// > step -> ensure CTA exists and update it
|
|
170
|
+
const $cta = ensureCta($group, sel, opt);
|
|
171
|
+
if (!$cta.length) return;
|
|
172
|
+
|
|
173
|
+
if (state.visible >= total) setCtaState($cta, 'less', opt);
|
|
174
|
+
else setCtaState($cta, 'more', opt);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
function expandGroup($group, opt, sel) {
|
|
178
|
+
if (!$group || !$group.length) return;
|
|
179
|
+
if (isExcluded($group, opt.excludeGroup)) return;
|
|
180
|
+
|
|
181
|
+
const total = getItems($group, sel).length;
|
|
182
|
+
if (!total) return;
|
|
183
|
+
|
|
184
|
+
const step = getStep($group, opt.stepAttr, opt.defaultStep);
|
|
185
|
+
const state = getState($group, opt.stateKey, total, step);
|
|
186
|
+
|
|
187
|
+
state.visible = Math.min(state.visible + step, total);
|
|
188
|
+
$group.data(opt.stateKey, state);
|
|
189
|
+
|
|
190
|
+
applyGroup($group, opt, sel);
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
function collapseGroupToInitial($group, opt, sel) {
|
|
194
|
+
if (!$group || !$group.length) return;
|
|
195
|
+
|
|
196
|
+
if (isExcluded($group, opt.excludeGroup)) {
|
|
197
|
+
removeCta($group, sel);
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
const total = getItems($group, sel).length;
|
|
202
|
+
const step = getStep($group, opt.stepAttr, opt.defaultStep);
|
|
203
|
+
|
|
204
|
+
setInitialState($group, opt.stateKey, total, step);
|
|
205
|
+
applyGroup($group, opt, sel);
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
// ===== MAIN FACTORY =====
|
|
209
|
+
|
|
210
|
+
export function createShowMoreLess(options = {}) {
|
|
211
|
+
const OPT = normalizeOptions(options);
|
|
212
|
+
const SEL = makeSelectors(OPT);
|
|
213
|
+
|
|
214
|
+
if (!SEL.GROUP || !SEL.PANEL || !SEL.ITEM) {
|
|
215
|
+
throw new Error('[createShowMoreLess] Missing required selectors');
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
// namespace for delegated events (avoid duplicates if factory created multiple times)
|
|
219
|
+
const NS = `.sml_${Math.random().toString(16).slice(2)}`;
|
|
220
|
+
|
|
221
|
+
function init($root) {
|
|
222
|
+
getGroups($root, SEL.GROUP).each(function () {
|
|
223
|
+
const $group = $(this);
|
|
224
|
+
|
|
225
|
+
if (isExcluded($group, OPT.excludeGroup)) {
|
|
226
|
+
removeCta($group, SEL);
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
const total = getItems($group, SEL).length;
|
|
231
|
+
const step = getStep($group, OPT.stepAttr, OPT.defaultStep);
|
|
232
|
+
|
|
233
|
+
setInitialState($group, OPT.stateKey, total, step);
|
|
234
|
+
applyGroup($group, OPT, SEL);
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
function resetAll($root) {
|
|
239
|
+
getGroups($root, SEL.GROUP).each(function () {
|
|
240
|
+
collapseGroupToInitial($(this), OPT, SEL);
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
// CTA click
|
|
245
|
+
$(document)
|
|
246
|
+
.off(`click${NS}`, SEL.CTA)
|
|
247
|
+
.on(`click${NS}`, SEL.CTA, function (e) {
|
|
248
|
+
e.preventDefault();
|
|
249
|
+
|
|
250
|
+
const $cta = $(this);
|
|
251
|
+
const $group = $cta.closest(SEL.GROUP);
|
|
252
|
+
|
|
253
|
+
if (!$group.length || isExcluded($group, OPT.excludeGroup)) return;
|
|
254
|
+
|
|
255
|
+
const action = ($cta.attr(OPT.ctaActionAttr) || 'more').toLowerCase();
|
|
256
|
+
|
|
257
|
+
if (action === 'less') collapseGroupToInitial($group, OPT, SEL);
|
|
258
|
+
else expandGroup($group, OPT, SEL);
|
|
259
|
+
});
|
|
260
|
+
|
|
261
|
+
// Toggle/header click -> collapse to initial
|
|
262
|
+
if (SEL.TOGGLE) {
|
|
263
|
+
$(document)
|
|
264
|
+
.off(`click${NS}`, SEL.TOGGLE)
|
|
265
|
+
.on(`click${NS}`, SEL.TOGGLE, function () {
|
|
266
|
+
const $group = $(this).closest(SEL.GROUP);
|
|
267
|
+
if (!$group.length || isExcluded($group, OPT.excludeGroup)) return;
|
|
268
|
+
collapseGroupToInitial($group, OPT, SEL);
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
return { init, resetAll };
|
|
273
|
+
}
|
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
</main>
|
|
12
12
|
{{/content}}
|
|
13
13
|
{{#content "foot" mode="append"}}
|
|
14
|
-
{{> kitchen/filter-modal }}
|
|
15
|
-
<script src="./js/page/accordion.js"></script>
|
|
14
|
+
{{> kitchen/filter-modal isKitchenMode=true modalTitle="Filter by" }}
|
|
16
15
|
<script src="./js/kitchen/kitchen-plp.min.js"></script>
|
|
16
|
+
<script src="./js/plp-filters.min.js"></script>
|
|
17
17
|
{{/content}}
|
|
18
18
|
{{/extend}}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
{{/content}}
|
|
4
4
|
{{#content "body"}}
|
|
5
5
|
<main>
|
|
6
|
-
{{> shopping-list emptyShopList=false isUserRegister=true pagination=true note=true
|
|
6
|
+
{{> shopping-list emptyShopList=false isUserRegister=true pagination=true note=true}}
|
|
7
7
|
</main>
|
|
8
8
|
{{/content}}
|
|
9
9
|
{{#content "foot" mode="append"}}
|
|
@@ -15,19 +15,13 @@
|
|
|
15
15
|
|
|
16
16
|
<div class="row">
|
|
17
17
|
<aside class="left-aside">
|
|
18
|
-
{{> search-filter collapsed="accordion_collapsed" hidden="hidden-state"
|
|
19
|
-
{{> search-filter-mobile collapsed="accordion_collapsed" hidden="hidden-state" fixed-height="custom-scroll"}}
|
|
18
|
+
{{> search-filter collapsed="accordion_collapsed" hidden="hidden-state"}}
|
|
20
19
|
</aside>
|
|
21
20
|
|
|
22
21
|
<div class="content">
|
|
23
22
|
{{> shop-colour title="Shop by colour"}}
|
|
24
23
|
<div class="sort-products-list">
|
|
25
24
|
<div class="sort-products-list__section sort-products-list__items-per-page">
|
|
26
|
-
<button class="btn btn-primary open-filters-btn" id="open-overlay">
|
|
27
|
-
<span class="btn__text">
|
|
28
|
-
<span class="icon"><span class="fas fa-filter"></span></span>Filter products
|
|
29
|
-
</span>
|
|
30
|
-
</button>
|
|
31
25
|
{{> form-row dropdown="true" ddn-mod="ddn_small" id="d1-top" label="Products per page" label-hidden="true" placeholder="All products per page"}}
|
|
32
26
|
</div>
|
|
33
27
|
<div class="sort-products-list__section sort-products-list__pagination">
|
|
@@ -71,5 +65,6 @@
|
|
|
71
65
|
<script defer src="./js/page/plp.js"></script>
|
|
72
66
|
<script defer src="./js/page/plp-img-v2.js"></script>
|
|
73
67
|
<script defer src="./js/page/plp-cards-v2.js"></script>
|
|
68
|
+
<script defer src="./js/search-filter.min.js"></script>
|
|
74
69
|
{{/content}}
|
|
75
70
|
{{/extend}}
|
package/src/page_plp.html
CHANGED
|
@@ -15,8 +15,7 @@
|
|
|
15
15
|
|
|
16
16
|
<div class="row">
|
|
17
17
|
<aside class="left-aside">
|
|
18
|
-
{{> search-filter collapsed="accordion_collapsed" hidden="hidden-state"
|
|
19
|
-
{{> search-filter-mobile collapsed="accordion_collapsed" hidden="hidden-state" fixed-height="custom-scroll"}}
|
|
18
|
+
{{> search-filter collapsed="accordion_collapsed" hidden="hidden-state"}}
|
|
20
19
|
</aside>
|
|
21
20
|
|
|
22
21
|
<div class="content">
|
|
@@ -25,11 +24,6 @@
|
|
|
25
24
|
|
|
26
25
|
<div class="sort-products-list">
|
|
27
26
|
<div class="sort-products-list__section sort-products-list__items-per-page">
|
|
28
|
-
<button class="btn btn-primary open-filters-btn" id="open-overlay">
|
|
29
|
-
<span class="btn__text">
|
|
30
|
-
<span class="icon"><span class="fas fa-filter"></span></span>Show filters
|
|
31
|
-
</span>
|
|
32
|
-
</button>
|
|
33
27
|
{{> form-row dropdown="true" ddn-mod="ddn_small" id="d1-top" label="Products per page" label-hidden="true" placeholder="All products per page"}}
|
|
34
28
|
</div>
|
|
35
29
|
<div class="sort-products-list__section sort-products-list__pagination">
|
|
@@ -67,5 +61,6 @@
|
|
|
67
61
|
{{/content}}
|
|
68
62
|
{{#content "foot" mode="append"}}
|
|
69
63
|
<script defer src="./js/page/plp.js"></script>
|
|
64
|
+
<script defer src="./js/search-filter.min.js"></script>
|
|
70
65
|
{{/content}}
|
|
71
66
|
{{/extend}}
|
|
@@ -17,17 +17,11 @@
|
|
|
17
17
|
<div class="row">
|
|
18
18
|
<aside class="left-aside">
|
|
19
19
|
{{> search-filter collapsed="accordion_collapsed" hidden="hidden-state" fixed-height="custom-scroll"}}
|
|
20
|
-
{{> search-filter-mobile collapsed="accordion_collapsed" hidden="hidden-state" fixed-height="custom-scroll"}}
|
|
21
20
|
</aside>
|
|
22
21
|
|
|
23
22
|
<div class="content">
|
|
24
23
|
<div class="sort-products-list">
|
|
25
24
|
<div class="sort-products-list__section sort-products-list__items-per-page">
|
|
26
|
-
<button class="btn btn-primary open-filters-btn" id="open-overlay">
|
|
27
|
-
<span class="btn__text">
|
|
28
|
-
<span class="icon"><span class="fas fa-filter"></span></span>Filter products
|
|
29
|
-
</span>
|
|
30
|
-
</button>
|
|
31
25
|
{{> form-row dropdown="true" ddn-mod="ddn_small" id="d1-top" label="Products per page" label-hidden="true" placeholder="All products per page"}}
|
|
32
26
|
</div>
|
|
33
27
|
<div class="sort-products-list__section sort-products-list__pagination">
|
|
@@ -78,5 +72,6 @@
|
|
|
78
72
|
<script defer src="./js/energy-efficiency.min.js"></script>
|
|
79
73
|
<script defer src="./js/page/plp-img-v2.js"></script>
|
|
80
74
|
<script defer src="./js/page/plp-cards-v2.js"></script>
|
|
75
|
+
<script defer src="./js/search-filter.min.js"></script>
|
|
81
76
|
{{/content}}
|
|
82
77
|
{{/extend}}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
{{#extend "base" hybrisClass="hybris-class" pageClass="products-list-page" title="Products list" pagePlp=true}}
|
|
1
|
+
{{#extend "base" hybrisClass="hybris-class" pageClass="page-responsiveThematicProductListPage products-list-page" title="Products list" pagePlp=true}}
|
|
2
2
|
{{#content "head" mode="append" pagePlp=true}}
|
|
3
3
|
<link type="text/css" rel="stylesheet" href="./css/components/plp-favourite-product.css">
|
|
4
4
|
{{/content}}
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
|
|
17
17
|
<div class="row">
|
|
18
18
|
<aside class="left-aside">
|
|
19
|
-
{{> search-filter collapsed="accordion_collapsed" hidden="hidden-state" fixed-height="custom-scroll"}}
|
|
19
|
+
{{> search-filter filterTitle="Filter results" collapsed="accordion_collapsed" hidden="hidden-state" fixed-height="custom-scroll"}}
|
|
20
20
|
{{> search-filter-mobile collapsed="accordion_collapsed" hidden="hidden-state" fixed-height="custom-scroll"}}
|
|
21
21
|
</aside>
|
|
22
22
|
|
|
@@ -40,16 +40,13 @@
|
|
|
40
40
|
</div>
|
|
41
41
|
|
|
42
42
|
<div class="products-list products-list-v2">
|
|
43
|
-
{{#if search-result_v2.product-banner}}
|
|
44
|
-
{{>card_product_banner_v2}}
|
|
45
|
-
{{/if}}
|
|
46
43
|
{{#each search-result_v2.products}}
|
|
47
44
|
{{>card_product_v2 showFavourite="true"}}
|
|
48
45
|
{{/each}}
|
|
49
46
|
</div>
|
|
50
47
|
|
|
51
48
|
<div class="sort-products-list">
|
|
52
|
-
<div class="sort-products-list__section sort-products-list__items-per-page
|
|
49
|
+
<div class="sort-products-list__section sort-products-list__items-per-page">
|
|
53
50
|
{{> form-row dropdown="true" ddn-mod="ddn_small" id="d1-bottom" label="Products per page" label-hidden="true" placeholder="All products per page"}}
|
|
54
51
|
</div>
|
|
55
52
|
<div class="sort-products-list__section sort-products-list__pagination">
|
|
@@ -75,5 +72,7 @@
|
|
|
75
72
|
<script defer src="./js/page/plp-img-v2.js"></script>
|
|
76
73
|
<script defer src="./js/page/plp-cards-v2.js"></script>
|
|
77
74
|
<script defer src="./js/plp-favourite-product.bundle.min.js"></script>
|
|
75
|
+
<script defer src="./js/plp-filters.min.js"></script>
|
|
76
|
+
<script defer src="./js/search-filter.min.js"></script>
|
|
78
77
|
{{/content}}
|
|
79
|
-
{{/extend}}
|
|
78
|
+
{{/extend}}
|
package/src/page_plp_v2-vat.html
CHANGED
|
@@ -16,18 +16,12 @@
|
|
|
16
16
|
|
|
17
17
|
<div class="row">
|
|
18
18
|
<aside class="left-aside">
|
|
19
|
-
{{> search-filter collapsed="accordion_collapsed" hidden="hidden-state"
|
|
20
|
-
{{> search-filter-mobile collapsed="accordion_collapsed" hidden="hidden-state" fixed-height="custom-scroll"}}
|
|
19
|
+
{{> search-filter collapsed="accordion_collapsed" hidden="hidden-state"}}
|
|
21
20
|
</aside>
|
|
22
21
|
|
|
23
22
|
<div class="content">
|
|
24
23
|
<div class="sort-products-list">
|
|
25
24
|
<div class="sort-products-list__section sort-products-list__items-per-page">
|
|
26
|
-
<button class="btn btn-primary open-filters-btn" id="open-overlay">
|
|
27
|
-
<span class="btn__text">
|
|
28
|
-
<span class="icon"><span class="fas fa-filter"></span></span>Filter products
|
|
29
|
-
</span>
|
|
30
|
-
</button>
|
|
31
25
|
{{> form-row dropdown="true" ddn-mod="ddn_small" id="d1-top" label="Products per page" label-hidden="true" placeholder="All products per page"}}
|
|
32
26
|
</div>
|
|
33
27
|
<div class="sort-products-list__section sort-products-list__pagination">
|
|
@@ -74,5 +68,6 @@
|
|
|
74
68
|
<script defer src="./js/page/plp.js"></script>
|
|
75
69
|
<script defer src="./js/page/plp-img-v2.js"></script>
|
|
76
70
|
<script defer src="./js/page/plp-cards-v2.js"></script>
|
|
71
|
+
<script defer src="./js/search-filter.min.js"></script>
|
|
77
72
|
{{/content}}
|
|
78
73
|
{{/extend}}
|
package/src/page_plp_v2.html
CHANGED
|
@@ -17,20 +17,30 @@
|
|
|
17
17
|
|
|
18
18
|
<div class="row">
|
|
19
19
|
<aside class="left-aside">
|
|
20
|
-
{{> search-filter collapsed="accordion_collapsed" hidden="hidden-state"
|
|
21
|
-
{{> search-filter-mobile collapsed="accordion_collapsed" hidden="hidden-state" fixed-height="custom-scroll"}}
|
|
20
|
+
{{> search-filter collapsed="accordion_collapsed" hidden="hidden-state"}}
|
|
22
21
|
</aside>
|
|
23
22
|
|
|
24
23
|
<div class="content">
|
|
25
|
-
<div class="
|
|
26
|
-
<
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
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
|
+
}}
|
|
32
39
|
</div>
|
|
33
40
|
</div>
|
|
41
|
+
<div class="sort-products-list">
|
|
42
|
+
{{> kitchen/sort-by }}
|
|
43
|
+
</div>
|
|
34
44
|
|
|
35
45
|
<div class="products-list products-list-v2">
|
|
36
46
|
{{#each search-result_v2.products}}
|
|
@@ -71,8 +81,11 @@
|
|
|
71
81
|
</main>
|
|
72
82
|
{{/content}}
|
|
73
83
|
{{#content "foot" mode="append"}}
|
|
84
|
+
{{> kitchen/filter-modal isKitchenMode=false modalTitle="Filter by" }}
|
|
74
85
|
<script defer src="./js/plp.bundle.min.js"></script>
|
|
75
86
|
<script defer src="./js/page/plp-img-v2.js"></script>
|
|
76
87
|
<script defer src="./js/page/plp-cards-v2.js"></script>
|
|
88
|
+
<script defer src="./js/search-filter.min.js"></script>
|
|
89
|
+
<script defer src="./js/plp-filters.min.js"></script>
|
|
77
90
|
{{/content}}
|
|
78
91
|
{{/extend}}
|
|
@@ -17,18 +17,12 @@
|
|
|
17
17
|
|
|
18
18
|
<div class="row">
|
|
19
19
|
<aside class="left-aside">
|
|
20
|
-
{{> search-filter collapsed="accordion_collapsed" hidden="hidden-state"
|
|
21
|
-
{{> search-filter-mobile collapsed="accordion_collapsed" hidden="hidden-state" fixed-height="custom-scroll"}}
|
|
20
|
+
{{> search-filter collapsed="accordion_collapsed" hidden="hidden-state"}}
|
|
22
21
|
</aside>
|
|
23
22
|
|
|
24
23
|
<div class="content">
|
|
25
24
|
<div class="sort-products-list">
|
|
26
25
|
<div class="sort-products-list__section sort-products-list__items-per-page">
|
|
27
|
-
<button class="btn btn-primary open-filters-btn" id="open-overlay">
|
|
28
|
-
<span class="btn__text">
|
|
29
|
-
<span class="icon"><span class="fas fa-filter"></span></span>Show filters
|
|
30
|
-
</span>
|
|
31
|
-
</button>
|
|
32
26
|
{{> form-row dropdown="true" ddn-mod="ddn_small" id="d1-top" label="Products per page" label-hidden="true" placeholder="All products per page"}}
|
|
33
27
|
</div>
|
|
34
28
|
<div class="sort-products-list__section sort-products-list__pagination">
|
|
@@ -69,5 +63,6 @@
|
|
|
69
63
|
<script defer src="./js/page/plp-img-v2.js"></script>
|
|
70
64
|
<script defer src="./js/page/plp-cards-v2.js"></script>
|
|
71
65
|
<script defer src="./js/components/badge-cashback.js"></script>
|
|
66
|
+
<script defer src="./js/search-filter.min.js"></script>
|
|
72
67
|
{{/content}}
|
|
73
68
|
{{/extend}}
|
|
@@ -17,18 +17,12 @@
|
|
|
17
17
|
|
|
18
18
|
<div class="row">
|
|
19
19
|
<aside class="left-aside">
|
|
20
|
-
{{> search-filter collapsed="accordion_collapsed" hidden="hidden-state"
|
|
21
|
-
{{> search-filter-mobile collapsed="accordion_collapsed" hidden="hidden-state" fixed-height="custom-scroll"}}
|
|
20
|
+
{{> search-filter collapsed="accordion_collapsed" hidden="hidden-state"}}
|
|
22
21
|
</aside>
|
|
23
22
|
|
|
24
23
|
<div class="content">
|
|
25
24
|
<div class="sort-products-list">
|
|
26
25
|
<div class="sort-products-list__section sort-products-list__items-per-page">
|
|
27
|
-
<button class="btn btn-primary open-filters-btn" id="open-overlay">
|
|
28
|
-
<span class="btn__text">
|
|
29
|
-
<span class="icon"><span class="fas fa-filter"></span></span>Show filters
|
|
30
|
-
</span>
|
|
31
|
-
</button>
|
|
32
26
|
{{> form-row dropdown="true" ddn-mod="ddn_small" id="d1-top" label="Products per page" label-hidden="true" placeholder="All products per page"}}
|
|
33
27
|
</div>
|
|
34
28
|
<div class="sort-products-list__section sort-products-list__pagination">
|
|
@@ -69,5 +63,6 @@
|
|
|
69
63
|
<script defer src="./js/page/plp-img-v2.js"></script>
|
|
70
64
|
<script defer src="./js/page/plp-cards-v2.js"></script>
|
|
71
65
|
<script defer src="./js/components/badge-cashback.js"></script>
|
|
66
|
+
<script defer src="./js/search-filter.min.js"></script>
|
|
72
67
|
{{/content}}
|
|
73
68
|
{{/extend}}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{{#extend "base" hybrisClass="hybris-class" pageClass="page_empty-shared-shopping-list" title="Project list - Bicester Hub" hideBanner="true" shopListEmpty="true"}}
|
|
2
|
+
{{#content "head" mode="append"}}
|
|
3
|
+
<link type="text/css" rel="stylesheet" href="./css/pages/bicester-project-list.css">
|
|
4
|
+
{{/content}}
|
|
5
|
+
{{#content "body"}}
|
|
6
|
+
<main>
|
|
7
|
+
{{> shopping-list-with-share-list-v2 isUserRegister=true isAndroid=true}}
|
|
8
|
+
</main>
|
|
9
|
+
{{/content}}
|
|
10
|
+
{{#content "foot" mode="append"}}
|
|
11
|
+
<script src="./js/project-list-note.min.js"></script>
|
|
12
|
+
<script async src="https://static.addtoany.com/menu/page.js"></script>
|
|
13
|
+
<script defer src="./js/saving-shopping-list.min.js"></script>
|
|
14
|
+
{{/content}}
|
|
15
|
+
{{/extend}}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{{#extend "base" hybrisClass="hybris-class" pageClass="page_empty-shared-shopping-list tp-ios" title="Project list - Bicester Hub" hideBanner="true" shopListEmpty="true"}}
|
|
2
|
+
{{#content "head" mode="append"}}
|
|
3
|
+
<link type="text/css" rel="stylesheet" href="./css/pages/bicester-project-list.css">
|
|
4
|
+
{{/content}}
|
|
5
|
+
{{#content "body"}}
|
|
6
|
+
<main>
|
|
7
|
+
{{> shopping-list-with-share-list-v2 isUserRegister=true}}
|
|
8
|
+
</main>
|
|
9
|
+
{{/content}}
|
|
10
|
+
{{#content "foot" mode="append"}}
|
|
11
|
+
<script src="./js/project-list-note.min.js"></script>
|
|
12
|
+
<script async src="https://static.addtoany.com/menu/page.js"></script>
|
|
13
|
+
<script defer src="./js/saving-shopping-list.min.js"></script>
|
|
14
|
+
{{/content}}
|
|
15
|
+
{{/extend}}
|