wickes-css2 2.105.0-develop.1 → 2.105.0-develop.11

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 (274) hide show
  1. package/Readme.md +5 -4
  2. package/build/css/category-main.css +1 -1
  3. package/build/css/components/checkout-payment-details-v2.css +1 -1
  4. package/build/css/homepage-main.css +1 -1
  5. package/build/css/kitchen-plp-main.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/checkout.css +1 -1
  11. package/build/css/pages/my-account-v2.css +1 -1
  12. package/build/css/pages/page_checkout_delivery-new.css +1 -1
  13. package/build/css/pages/page_discount.css +1 -1
  14. package/build/css/pages/page_product_search.css +1 -1
  15. package/build/css/pages/page_products-list-combined.css +1 -1
  16. package/build/css/pages/page_products-list.css +1 -1
  17. package/build/css/pages/tradePro-rewards.css +1 -1
  18. package/build/css/pdp-main-before-combine.css +1 -1
  19. package/build/css/pdp-main-critical.css +1 -1
  20. package/build/css/pdp-main-non-critical.css +1 -1
  21. package/build/css/pdp-main.css +1 -1
  22. package/build/css/plp-main.css +1 -1
  23. package/build/css/store-locator-main.css +1 -1
  24. package/build/img/google-pay-mark.svg +11 -0
  25. package/build/img/quick-filters/bath1.svg +10 -0
  26. package/build/img/quick-filters/bath3.svg +3 -0
  27. package/build/img/quick-filters/bath4.svg +10 -0
  28. package/build/img/quick-filters/bath5.svg +10 -0
  29. package/build/img/quick-filters/image1.jpg +0 -0
  30. package/build/img/quick-filters/image2.jpg +0 -0
  31. package/build/img/quick-filters/image3.jpg +0 -0
  32. package/build/js/account-members.min.js +1 -1
  33. package/build/js/basket.min.js +2 -2
  34. package/build/js/bundle.min.js +1 -1
  35. package/build/js/checkout.min.js +2 -2
  36. package/build/js/emulation.min.js +12140 -11596
  37. package/build/js/general.bundle.min.js +1 -1
  38. package/build/js/kitchen/kitchen-plp.min.js +1 -9
  39. package/build/js/merged-checkout.min.js +2 -2
  40. package/build/js/mini-basket-slider.min.js +1 -1
  41. package/build/js/my-account.min.js +1 -1
  42. package/build/js/page/basket/basket-update-cart-action.js +59 -56
  43. package/build/js/page/basket/basket-update-cart.js +27 -27
  44. package/build/js/page/basket/basket-utils.js +40 -33
  45. package/build/js/page/basket/mini-basket-total.js +70 -66
  46. package/build/js/page/basket/quantity-change-handler.js +73 -55
  47. package/build/js/page/basket/update-quantity-operation.js +39 -30
  48. package/build/js/page/basket/update-quantity.js +62 -62
  49. package/build/js/page/basket-v2.js +360 -225
  50. package/build/js/page/billie-business-type.js +27 -27
  51. package/build/js/page/checkout-payment-details.js +301 -299
  52. package/build/js/page/components/billie-modal.js +31 -0
  53. package/build/js/page/components/discounts.js +39 -36
  54. package/build/js/page/components/mini-basket-slider.js +604 -545
  55. package/build/js/page/filters/desktop-nav.js +64 -0
  56. package/build/js/page/filters/mobile-nav.js +93 -0
  57. package/build/js/page/filters/plp-filters-chips.js +92 -0
  58. package/build/js/page/filters/plp-filters-mobile.js +150 -0
  59. package/build/js/page/filters/plp-filters-panel.js +123 -0
  60. package/build/js/page/filters/plp-filters-utils.js +66 -0
  61. package/build/js/page/filters/plp-filters.js +268 -0
  62. package/build/js/page/filters/sort-by.js +172 -0
  63. package/build/js/page/kitchen/colour-swatches.js +5 -2
  64. package/build/js/page/klarna-modal-scroll-disable.js +4 -4
  65. package/build/js/page/my-account.js +32 -47
  66. package/build/js/page/online-exclusive.js +28 -31
  67. package/build/js/page/quick-filter.js +108 -0
  68. package/build/js/page/search-filter.js +62 -0
  69. package/build/js/page/share-project-list.js +57 -0
  70. package/build/js/page/tradePro-rewards.js +69 -39
  71. package/build/js/page/utils/copy-to-clipboard.js +79 -47
  72. package/build/js/page/utils/helpers.js +14 -9
  73. package/build/js/page/utils/show-more-less.js +273 -0
  74. package/build/js/pdp.bundle.min.js +1 -1
  75. package/build/js/plp-filters.min.js +9 -0
  76. package/build/js/plp.bundle.min.js +1 -1
  77. package/build/js/project-list.min.js +143 -85
  78. package/build/js/search-filter.min.js +1 -0
  79. package/build/js/share-project-list.min.js +1 -0
  80. package/build/js/tradePro-rewards.min.js +1 -1
  81. package/package.json +4 -2
  82. package/src/components/.DS_Store +0 -0
  83. package/src/components/accordion.hbs +2 -2
  84. package/src/components/checkout-payment-details-v2.hbs +1 -1
  85. package/src/components/date-selection.hbs +25 -6
  86. package/src/components/generate-project-id.hbs +1 -1
  87. package/src/components/kitchen/dropdown.hbs +6 -3
  88. package/src/components/kitchen/filter-modal-content-kitchen.hbs +10 -0
  89. package/src/components/kitchen/filter-modal.hbs +10 -13
  90. package/src/components/kitchen/kitchen-card.hbs +1 -1
  91. package/src/components/kitchen/plp-filters.hbs +3 -1
  92. package/src/components/kitchen/sort-by.hbs +1 -1
  93. package/src/components/my-account/barcode.hbs +1 -3
  94. package/src/components/my-account/cards-swap.hbs +10 -0
  95. package/src/components/my-account/clipboard-code-card.hbs +3 -3
  96. package/src/components/my-account/discount.hbs +1 -1
  97. package/src/components/my-account/greetings.hbs +1 -1
  98. package/src/components/order-summary.hbs +1 -0
  99. package/src/components/price-block-v2.hbs +1 -0
  100. package/src/components/quick-filter.hbs +56 -0
  101. package/src/components/search-filter-modal-content.hbs +102 -0
  102. package/src/components/search-filter.hbs +121 -112
  103. package/src/components/shopping-list-with-share-list-v2.hbs +28 -10
  104. package/src/components/shopping-list.hbs +5 -5
  105. package/src/data/data_plp_load-more.json +1 -1
  106. package/src/data/data_quick-filter.json +508 -0
  107. package/src/data/my-account/data_my-account.json +9 -0
  108. package/src/elements/btn.hbs +7 -0
  109. package/src/img/google-pay-mark.svg +11 -0
  110. package/src/img/quick-filters/bath1.svg +10 -0
  111. package/src/img/quick-filters/bath3.svg +3 -0
  112. package/src/img/quick-filters/bath4.svg +10 -0
  113. package/src/img/quick-filters/bath5.svg +10 -0
  114. package/src/img/quick-filters/image1.jpg +0 -0
  115. package/src/img/quick-filters/image2.jpg +0 -0
  116. package/src/img/quick-filters/image3.jpg +0 -0
  117. package/src/js/components/cards-swap.js +74 -0
  118. package/src/js/components/general/accordion.js +44 -33
  119. package/src/js/components/general/cart-slider.js +19 -16
  120. package/src/js/components/general/create-popup-slider.js +168 -173
  121. package/src/js/components/pdp-billie-modal-scroll-reset.js +53 -0
  122. package/src/js/components/share-project-list.js +8 -5
  123. package/src/js/emulation/big-wins.js +1081 -904
  124. package/src/js/emulation/billie-modal.js +39 -18
  125. package/src/js/emulation/checkout-payment-details.js +47 -38
  126. package/src/js/emulation/custom-slider-emulation.js +17 -13
  127. package/src/js/emulation/filters-emulation.js +164 -0
  128. package/src/js/emulation/forms.js +360 -323
  129. package/src/js/emulation/mini-basket-data.js +1051 -923
  130. package/src/js/emulation/paymentLoader.js +17 -17
  131. package/src/js/emulation/pdf-file-loader.js +89 -91
  132. package/src/js/emulation/popover-mini-basket.js +246 -239
  133. package/src/js/emulation/product-counter.js +50 -0
  134. package/src/js/emulation/project-list-pdp.js +320 -316
  135. package/src/js/emulation/repayment-toggle.js +23 -24
  136. package/src/js/emulation/reset-filter-desktop.js +5 -0
  137. package/src/js/emulation/selectable.js +22 -18
  138. package/src/js/emulation/wismo-details.js +23 -31
  139. package/src/js/page/basket/basket-update-cart-action.js +59 -56
  140. package/src/js/page/basket/basket-update-cart.js +27 -27
  141. package/src/js/page/basket/basket-utils.js +40 -33
  142. package/src/js/page/basket/mini-basket-total.js +70 -66
  143. package/src/js/page/basket/quantity-change-handler.js +73 -55
  144. package/src/js/page/basket/update-quantity-operation.js +39 -30
  145. package/src/js/page/basket/update-quantity.js +62 -62
  146. package/src/js/page/basket-v2.js +360 -225
  147. package/src/js/page/billie-business-type.js +27 -27
  148. package/src/js/page/checkout-payment-details.js +301 -299
  149. package/src/js/page/components/billie-modal.js +31 -0
  150. package/src/js/page/components/discounts.js +39 -36
  151. package/src/js/page/components/mini-basket-slider.js +604 -545
  152. package/src/js/page/filters/desktop-nav.js +64 -0
  153. package/src/js/page/filters/mobile-nav.js +93 -0
  154. package/src/js/page/filters/plp-filters-chips.js +92 -0
  155. package/src/js/page/filters/plp-filters-mobile.js +150 -0
  156. package/src/js/page/filters/plp-filters-panel.js +123 -0
  157. package/src/js/page/filters/plp-filters-utils.js +66 -0
  158. package/src/js/page/filters/plp-filters.js +268 -0
  159. package/src/js/page/filters/sort-by.js +172 -0
  160. package/src/js/page/kitchen/colour-swatches.js +5 -2
  161. package/src/js/page/klarna-modal-scroll-disable.js +4 -4
  162. package/src/js/page/my-account.js +32 -47
  163. package/src/js/page/online-exclusive.js +28 -31
  164. package/src/js/page/quick-filter.js +108 -0
  165. package/src/js/page/search-filter.js +62 -0
  166. package/src/js/page/share-project-list.js +57 -0
  167. package/src/js/page/tradePro-rewards.js +69 -39
  168. package/src/js/page/utils/copy-to-clipboard.js +79 -47
  169. package/src/js/page/utils/helpers.js +14 -9
  170. package/src/js/page/utils/show-more-less.js +273 -0
  171. package/src/page_empty-shared-project-list-bicester-hub.html +4 -0
  172. package/src/page_empty-shopping-list_guest.html +1 -0
  173. package/src/page_kitchen-plp.html +2 -2
  174. package/src/page_my-account-installer.html +1 -1
  175. package/src/page_my-account-trade-pro-carousel-double.html +127 -0
  176. package/src/page_my-account-trade-pro-carousel.html +134 -0
  177. package/src/page_my-account-trade-pro.html +1 -1
  178. package/src/page_my-shopping-list-add-notes.html +1 -0
  179. package/src/page_my-shopping-list-energy.html +1 -0
  180. package/src/page_my-shopping-list-hide-download.html +3 -2
  181. package/src/page_my-shopping-list-pdf.html +2 -0
  182. package/src/page_my-shopping-list-saved-ref.html +1 -0
  183. package/src/page_my-shopping-list-wisdom-oos-registered.html +1 -0
  184. package/src/page_my-shopping-list-wisdom-oos.html +1 -0
  185. package/src/page_my-shopping-list-wisdom-partial-registered.html +1 -0
  186. package/src/page_my-shopping-list-wisdom-registered.html +1 -0
  187. package/src/page_my-shopping-list-wisdom.html +1 -0
  188. package/src/page_my-shopping-list.html +1 -0
  189. package/src/page_my-shopping-list_not-register.html +3 -0
  190. package/src/page_plp-with-paint.html +2 -7
  191. package/src/page_plp.html +2 -7
  192. package/src/page_plp_v2-energy-efficiency.html +1 -6
  193. package/src/page_plp_v2-favourite-products.html +6 -7
  194. package/src/page_plp_v2-quick-filter_colourSwatches_11.html +79 -0
  195. package/src/page_plp_v2-quick-filter_colourSwatches_5.html +79 -0
  196. package/src/page_plp_v2-quick-filter_iconAndText_5.html +79 -0
  197. package/src/page_plp_v2-quick-filter_iconAndText_9.html +79 -0
  198. package/src/page_plp_v2-quick-filter_iconOnly_11.html +79 -0
  199. package/src/page_plp_v2-quick-filter_iconOnly_5.html +79 -0
  200. package/src/page_plp_v2-quick-filter_imageAndText_5.html +79 -0
  201. package/src/page_plp_v2-quick-filter_imageAndText_9.html +79 -0
  202. package/src/page_plp_v2-quick-filter_textOnly_5.html +79 -0
  203. package/src/page_plp_v2-quick-filter_textOnly_9.html +79 -0
  204. package/src/page_plp_v2-vat.html +2 -7
  205. package/src/page_plp_v2.html +22 -9
  206. package/src/page_product-details-tile-steps-klarna-widget-with-method-ids.html +120 -0
  207. package/src/page_product_search-vat.html +2 -7
  208. package/src/page_product_search.html +2 -7
  209. package/src/page_project-list-generate-project-list-ID.html +3 -0
  210. package/src/page_project-list-vat.html +4 -0
  211. package/src/page_project-list-with-new-share-popup-android.html +16 -0
  212. package/src/page_project-list-with-new-share-popup-ios.html +16 -0
  213. package/src/page_project-list-with-new-share-popup.html +2 -1
  214. package/src/page_search-results.html +2 -7
  215. package/src/page_shared-project-list-bicester-hub.html +3 -1
  216. package/src/page_shopping-cart-v2-klarna-with-method-ids.html +50 -0
  217. package/src/page_tradepro-discount-app.html +1 -1
  218. package/src/page_tradepro-discount-double.html +109 -0
  219. package/src/page_tradepro-discount.html +36 -2
  220. package/src/partials/head.hbs +1 -0
  221. package/src/scss/common/_common.scss +10 -4
  222. package/src/scss/components/_accordion.scss +1 -3
  223. package/src/scss/components/_custom-slider.scss +17 -16
  224. package/src/scss/components/_date-selection-add-new-styles.scss +48 -7
  225. package/src/scss/components/_date-selection.scss +80 -1
  226. package/src/scss/components/{kitchen/_filter-modal.scss → _filter-modal.scss} +55 -4
  227. package/src/scss/components/{kitchen/_plp-filters.scss → _plp-filters.scss} +31 -13
  228. package/src/scss/components/_popover-mini-basket.scss +3 -3
  229. package/src/scss/components/_quick-filter.scss +288 -0
  230. package/src/scss/components/_search-filter.scss +95 -15
  231. package/src/scss/components/_shared-shopping-list.scss +22 -0
  232. package/src/scss/components/_shopping-list.scss +18 -8
  233. package/src/scss/components/_sort-by.scss +190 -0
  234. package/src/scss/components/checkout-chip.scss +2 -2
  235. package/src/scss/components/checkout-payment-details-v2.scss +10 -4
  236. package/src/scss/components/checkout-payment-repayment-terms.scss +1 -1
  237. package/src/scss/components/kitchen/_price-tooltip.scss +1 -1
  238. package/src/scss/components/kitchen/_price.scss +1 -1
  239. package/src/scss/components/my-account/_barcode.scss +9 -1
  240. package/src/scss/components/my-account/_cards-swap.scss +60 -0
  241. package/src/scss/components/my-account/_clipboard-code.scss +11 -3
  242. package/src/scss/components/my-account/_discount.scss +12 -2
  243. package/src/scss/globals/_global-components.scss +3 -0
  244. package/src/scss/helpers/_colors-semantic.scss +68 -68
  245. package/src/scss/helpers/_variables.scss +244 -196
  246. package/src/scss/kitchen-plp-main.scss +0 -4
  247. package/src/scss/main.scss +65 -65
  248. package/src/scss/pages/_checkout-confirmation-new.scss +49 -21
  249. package/src/scss/pages/my-account-v2.scss +42 -5
  250. package/src/scss/pages/page_discount.scss +8 -4
  251. package/src/scss/pages/page_product-details-v2.scss +1 -4
  252. package/src/scss/pages/page_product_search.scss +9 -1
  253. package/src/scss/pages/page_products-list-combined.scss +28 -24
  254. package/src/scss/pages/page_products-list.scss +8 -0
  255. package/src/scss/pages/tradePro-rewards.scss +3 -4
  256. package/src/scss/plp-main.scss +1 -0
  257. package/src/sitemap.html +40 -4
  258. package/build/img/google-pay-mark.png +0 -0
  259. package/build/js/page/accordion.js +0 -35
  260. package/build/js/page/kitchen/plp-filters-chips.js +0 -90
  261. package/build/js/page/kitchen/plp-filters-mobile.js +0 -72
  262. package/build/js/page/kitchen/plp-filters-panel.js +0 -119
  263. package/build/js/page/kitchen/plp-filters-utils.js +0 -65
  264. package/build/js/page/kitchen/plp-filters.js +0 -205
  265. package/build/js/page/kitchen/sort-by.js +0 -157
  266. package/src/img/google-pay-mark.png +0 -0
  267. package/src/js/components/general/search-filter.js +0 -21
  268. package/src/js/page/accordion.js +0 -35
  269. package/src/js/page/kitchen/plp-filters-chips.js +0 -90
  270. package/src/js/page/kitchen/plp-filters-mobile.js +0 -72
  271. package/src/js/page/kitchen/plp-filters-panel.js +0 -119
  272. package/src/js/page/kitchen/plp-filters-utils.js +0 -65
  273. package/src/js/page/kitchen/plp-filters.js +0 -205
  274. package/src/js/page/kitchen/sort-by.js +0 -157
@@ -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
+ }
@@ -6,5 +6,9 @@
6
6
  <main>
7
7
  {{> shopping-list-bicester-hub emptyShopList="true" }}
8
8
  </main>
9
+ <script defer src="./js/share-project-list.min.js"></script>
10
+ {{/content}}
11
+ {{#content "foot" mode="append"}}
12
+ <script defer src="./js/saving-shopping-list.min.js"></script>
9
13
  {{/content}}
10
14
  {{/extend}}
@@ -5,5 +5,6 @@
5
5
  <main>
6
6
  {{> shopping-list emptyShopList=true pagination=false}}
7
7
  </main>
8
+ <script defer src="./js/share-project-list.min.js"></script>
8
9
  {{/content}}
9
10
  {{/extend}}
@@ -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}}
@@ -33,7 +33,7 @@
33
33
  subtitle=my_account.user.email
34
34
  }}
35
35
  {{> my-account/discount
36
- discountSrc=my_account.installer.discount
36
+ discountText=my_account.installer.discountText
37
37
  installer=true
38
38
  title="In-store discount"
39
39
  code=my_account.discount
@@ -0,0 +1,127 @@
1
+ {{#extend
2
+ "my-account-v2"
3
+ iconUserClass=my_account.tradepro.icons.tradeproID
4
+ dataBreadcrumbs=my_account.tradepro.breadcrumbs
5
+ pageClass="page_my-account_new"
6
+ title="My Account Trade Pro Carousel Double"
7
+ pageMyAcc=true
8
+ myAccV2=true
9
+ isLoggedIn=true
10
+ tradepro-nav=true
11
+ mainClass="my-account"
12
+ switch-vat=true
13
+ }}
14
+ {{#content "main"}}
15
+ <div class="container">
16
+ <div class="row">
17
+ <div class="col-12">
18
+ {{> my-account/mobile-nav my-account-menu-new
19
+ menu=my_account.tradepro.menu
20
+ active-index=0
21
+ page-name=my_account.tradepro.menu.[0].title
22
+ }}
23
+ </div>
24
+ </div>
25
+ </div>
26
+ <div class="account-summary">
27
+ <div class="container">
28
+ <div class="row">
29
+ <div class="col-12">
30
+ <div class="account-summary__wrapper d-none d-sm-grid mb-3">
31
+ {{> my-account/greetings
32
+ name=my_account.user.name
33
+ subtitle=my_account.user.email
34
+ }}
35
+ </div>
36
+ {{#extend "my-account/cards-swap"}}
37
+ {{#content "card1"}}
38
+ <div class="account-summary__wrapper account-summary__wrapper--secondary account-summary__wrapper--double">
39
+ {{> my-account/greetings
40
+ secondary=true
41
+ mod="d-sm-none"
42
+ name=my_account.user.name
43
+ subtitle=my_account.user.email
44
+ }}
45
+ {{> my-account/discount
46
+ secondary=true
47
+ discountText=my_account.tradepro2.discountText
48
+ title="In-store discount"
49
+ code=my_account.discount
50
+ }}
51
+ {{> my-account/clipboard-code-card
52
+ secondary=true
53
+ mod="trade-pro-id"
54
+ icon=my_account.tradepro.icons.tradeproID
55
+ title="TradePro ID"
56
+ code=my_account.tradeProId
57
+ }}
58
+ </div>
59
+ {{/content}}
60
+ {{#content "card2"}}
61
+ <div class="account-summary__wrapper">
62
+ {{> my-account/greetings
63
+ mod="d-sm-none"
64
+ name=my_account.user.name
65
+ subtitle=my_account.user.email
66
+ }}
67
+ {{> my-account/discount
68
+ discountText=my_account.tradepro.discountText
69
+ title="In-store discount"
70
+ code=my_account.discount
71
+ }}
72
+ {{> my-account/clipboard-code-card
73
+ mod="trade-pro-id"
74
+ icon=my_account.tradepro.icons.tradeproID
75
+ title="TradePro ID"
76
+ code=my_account.tradeProId
77
+ }}
78
+ {{> my-account/clipboard-code-card
79
+ mod="discount-code"
80
+ icon="fas fa-badge-percent"
81
+ title="Online discount code"
82
+ code=my_account.tradepro.discountCode
83
+ }}
84
+ </div>
85
+ {{/content}}
86
+ {{/extend}}
87
+ {{> my-account/active-orders/list-orders
88
+ switch-vat=true
89
+ title=my_account.tradepro.activeOrders.sectionTitle
90
+ linkText='View all orders'
91
+ orders=my_account.tradepro.activeOrders.orderList
92
+ }}
93
+ </div>
94
+ </div>
95
+ </div>
96
+ </div>
97
+ <div class="container">
98
+ <div class="row">
99
+ <div class="col-12">
100
+ {{> my-account/menu-items
101
+ items=my_account.tradepro.menu
102
+ }}
103
+ </div>
104
+ </div>
105
+ </div>
106
+ <div class="container">
107
+ <div class="row">
108
+ <div class="col-12">
109
+ {{> my-account/saving-totaliser this-last-year=true}}
110
+ </div>
111
+ </div>
112
+ </div>
113
+ <div class="account-actions">
114
+ <div class="container">
115
+ <div class="row">
116
+ <div class="col-12">
117
+ {{> my-account/user-account-actions mod="d-sm-none"}}
118
+ {{> my-account/contact-us contacts=my_account.contacts}}
119
+ </div>
120
+ </div>
121
+ </div>
122
+ </div>
123
+ {{/content}}
124
+ {{#content "foot" mode="append"}}
125
+ <script defer src="./js/my-account.min.js"></script>
126
+ {{/content}}
127
+ {{/extend}}
@@ -0,0 +1,134 @@
1
+ {{#extend
2
+ "my-account-v2"
3
+ iconUserClass=my_account.tradepro.icons.tradeproID
4
+ dataBreadcrumbs=my_account.tradepro.breadcrumbs
5
+ pageClass="page_my-account_new"
6
+ title="My Account Trade Pro Carousel"
7
+ pageMyAcc=true
8
+ myAccV2=true
9
+ isLoggedIn=true
10
+ tradepro-nav=true
11
+ mainClass="my-account"
12
+ switch-vat=true
13
+ }}
14
+ {{#content "main"}}
15
+ <div class="container">
16
+ <div class="row">
17
+ <div class="col-12">
18
+ {{> my-account/mobile-nav my-account-menu-new
19
+ menu=my_account.tradepro.menu
20
+ active-index=0
21
+ page-name=my_account.tradepro.menu.[0].title
22
+ }}
23
+ </div>
24
+ </div>
25
+ </div>
26
+ <div class="account-summary">
27
+ <div class="container">
28
+ <div class="row">
29
+ <div class="col-12">
30
+ <div class="account-summary__wrapper d-none d-sm-grid mb-3">
31
+ {{> my-account/greetings
32
+ name=my_account.user.name
33
+ subtitle=my_account.user.email
34
+ }}
35
+ </div>
36
+ {{#extend "my-account/cards-swap"}}
37
+ {{#content "card1"}}
38
+ <div class="account-summary__wrapper account-summary__wrapper--secondary">
39
+ {{> my-account/greetings
40
+ mod="d-sm-none"
41
+ secondary=true
42
+ name=my_account.user.name
43
+ subtitle=my_account.user.email
44
+ }}
45
+ {{> my-account/discount
46
+ secondary=true
47
+ discountText=my_account.tradepro2.discountText
48
+ title="In-store discount"
49
+ code=my_account.discount
50
+ }}
51
+ {{> my-account/clipboard-code-card
52
+ secondary=true
53
+ mod="trade-pro-id"
54
+ icon=my_account.tradepro.icons.tradeproID
55
+ title="TradePro ID"
56
+ code=my_account.tradeProId
57
+ }}
58
+ {{> my-account/clipboard-code-card
59
+ secondary=true
60
+ mod="discount-code"
61
+ icon="fas fa-badge-percent"
62
+ title="Online discount code"
63
+ code=my_account.tradepro.discountCode
64
+ }}
65
+ </div>
66
+ {{/content}}
67
+ {{#content "card2"}}
68
+ <div class="account-summary__wrapper">
69
+ {{> my-account/greetings
70
+ mod="d-sm-none"
71
+ name=my_account.user.name
72
+ subtitle=my_account.user.email
73
+ }}
74
+ {{> my-account/discount
75
+ discountText=my_account.tradepro.discountText
76
+ title="In-store discount"
77
+ code=my_account.discount
78
+ }}
79
+ {{> my-account/clipboard-code-card
80
+ mod="trade-pro-id"
81
+ icon=my_account.tradepro.icons.tradeproID
82
+ title="TradePro ID"
83
+ code=my_account.tradeProId
84
+ }}
85
+ {{> my-account/clipboard-code-card
86
+ mod="discount-code"
87
+ icon="fas fa-badge-percent"
88
+ title="Online discount code"
89
+ code=my_account.tradepro.discountCode
90
+ }}
91
+ </div>
92
+ {{/content}}
93
+ {{/extend}}
94
+ {{> my-account/active-orders/list-orders
95
+ switch-vat=true
96
+ title=my_account.tradepro.activeOrders.sectionTitle
97
+ linkText='View all orders'
98
+ orders=my_account.tradepro.activeOrders.orderList
99
+ }}
100
+ </div>
101
+ </div>
102
+ </div>
103
+ </div>
104
+ <div class="container">
105
+ <div class="row">
106
+ <div class="col-12">
107
+ {{> my-account/menu-items
108
+ items=my_account.tradepro.menu
109
+ }}
110
+ </div>
111
+ </div>
112
+ </div>
113
+ <div class="container">
114
+ <div class="row">
115
+ <div class="col-12">
116
+ {{> my-account/saving-totaliser this-last-year=true}}
117
+ </div>
118
+ </div>
119
+ </div>
120
+ <div class="account-actions">
121
+ <div class="container">
122
+ <div class="row">
123
+ <div class="col-12">
124
+ {{> my-account/user-account-actions mod="d-sm-none"}}
125
+ {{> my-account/contact-us contacts=my_account.contacts}}
126
+ </div>
127
+ </div>
128
+ </div>
129
+ </div>
130
+ {{/content}}
131
+ {{#content "foot" mode="append"}}
132
+ <script defer src="./js/my-account.min.js"></script>
133
+ {{/content}}
134
+ {{/extend}}
@@ -33,7 +33,7 @@
33
33
  subtitle=my_account.user.email
34
34
  }}
35
35
  {{> my-account/discount
36
- discountSrc=my_account.tradepro.discount
36
+ discountText=my_account.tradepro.discountText
37
37
  title="In-store discount"
38
38
  code=my_account.discount
39
39
  }}
@@ -18,5 +18,6 @@
18
18
  copy-id=true
19
19
  }}
20
20
  </main>
21
+ <script defer src="./js/share-project-list.min.js"></script>
21
22
  {{/content}}
22
23
  {{/extend}}
@@ -15,5 +15,6 @@
15
15
  {{/content}}
16
16
  <script defer src="./js/page/project-list.js"></script>
17
17
  <script defer src="./js/energy-efficiency.min.js"></script>
18
+ <script defer src="./js/share-project-list.min.js"></script>
18
19
  {{/content}}
19
20
  {{/extend}}
@@ -3,10 +3,11 @@
3
3
  {{/content}}
4
4
  {{#content "body"}}
5
5
  <main>
6
- {{> shopping-list emptyShopList=false isUserRegister=true pagination=true note=true hideDownload=true}}
6
+ {{> shopping-list emptyShopList=false isUserRegister=true pagination=true note=true}}
7
7
  </main>
8
8
  {{/content}}
9
9
  {{#content "foot" mode="append"}}
10
- <script src="./js/project-list-note.min.js"></script>
10
+ <script defer src="./js/project-list.min.js"></script>
11
+ <script defer src="./js/share-project-list.min.js"></script>
11
12
  {{/content}}
12
13
  {{/extend}}
@@ -3,5 +3,7 @@
3
3
  {{/content}}
4
4
  {{#content "body"}}
5
5
  {{> shopping-list-pdf}}
6
+
7
+ <script defer src="./js/share-project-list.min.js"></script>
6
8
  {{/content}}
7
9
  {{/extend}}
@@ -6,5 +6,6 @@
6
6
  {{> shopping-list emptyShopList=false isUserRegister=true pagination=true ref-value=true}}
7
7
  </main>
8
8
  <script defer src="./js/page/project-list.js"></script>
9
+ <script defer src="./js/share-project-list.min.js"></script>
9
10
  {{/content}}
10
11
  {{/extend}}
@@ -6,6 +6,7 @@
6
6
  {{> shopping-list emptyShopList=false isUserRegister=true pagination=true ref=true wisdom=true available=0}}
7
7
  </main>
8
8
  <script defer src="./js/page/project-list.js"></script>
9
+ <script defer src="./js/share-project-list.min.js"></script>
9
10
  {{/content}}
10
11
  {{#content "foot" mode="append"}}
11
12
  {{> wisdom-modal available=0 current=5}}
@@ -6,6 +6,7 @@
6
6
  {{> shopping-list emptyShopList=false isUserRegister=false pagination=true ref=true wisdom=true available=0}}
7
7
  </main>
8
8
  <script defer src="./js/page/project-list.js"></script>
9
+ <script defer src="./js/share-project-list.min.js"></script>
9
10
  {{/content}}
10
11
  {{#content "foot" mode="append"}}
11
12
  {{> wisdom-modal available=0 current=5}}
@@ -6,6 +6,7 @@
6
6
  {{> shopping-list emptyShopList=false isUserRegister=true pagination=true ref=true wisdom=true available=10}}
7
7
  </main>
8
8
  <script defer src="./js/page/project-list.js"></script>
9
+ <script defer src="./js/share-project-list.min.js"></script>
9
10
  {{/content}}
10
11
  {{#content "foot" mode="append"}}
11
12
  {{> wisdom-modal available=12 current=15}}
@@ -6,6 +6,7 @@
6
6
  {{> shopping-list emptyShopList=false isUserRegister=true pagination=true ref=true wisdom=true available=10}}
7
7
  </main>
8
8
  <script defer src="./js/page/project-list.js"></script>
9
+ <script defer src="./js/share-project-list.min.js"></script>
9
10
  {{/content}}
10
11
  {{#content "foot" mode="append"}}
11
12
  {{> wisdom-modal available=12 current=5}}
@@ -6,6 +6,7 @@
6
6
  {{> shopping-list emptyShopList=false isUserRegister=false pagination=true ref=true wisdom=true available=10}}
7
7
  </main>
8
8
  <script defer src="./js/page/project-list.js"></script>
9
+ <script defer src="./js/share-project-list.min.js"></script>
9
10
  {{/content}}
10
11
  {{#content "foot" mode="append"}}
11
12
  {{> wisdom-modal available=12 current=5}}
@@ -9,5 +9,6 @@
9
9
  <script src="https://cdnjs.cloudflare.com/ajax/libs/html2pdf.js/0.9.1/html2pdf.bundle.min.js"
10
10
  integrity="sha512-1qLXyA3x0VSWeM+8vOotn6+KIRGdcQ8QMzsNeDXmdJsUAnoDGjzlxzqAuUGJGrGkGrtOrq4buDoAHxR89D9PWA=="
11
11
  crossorigin="anonymous" referrerpolicy="no-referrer"></script>
12
+ <script defer src="./js/share-project-list.min.js"></script>
12
13
  {{/content}}
13
14
  {{/extend}}