wickes-css2 2.105.0-develop.6 → 2.105.0-develop.8

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 (209) hide show
  1. package/Readme.md +2 -2
  2. package/build/css/category-main.css +1 -1
  3. package/build/css/homepage-main.css +1 -1
  4. package/build/css/kitchen-plp-main.css +1 -1
  5. package/build/css/main.css +1 -1
  6. package/build/css/my-account-main-v2.css +1 -1
  7. package/build/css/my-account-main.css +1 -1
  8. package/build/css/pages/my-account-v2.css +1 -1
  9. package/build/css/pages/page_discount.css +1 -1
  10. package/build/css/pages/page_product_search.css +1 -1
  11. package/build/css/pages/page_products-list-combined.css +1 -1
  12. package/build/css/pages/page_products-list.css +1 -1
  13. package/build/css/pages/tradePro-rewards.css +1 -1
  14. package/build/css/pdp-main-before-combine.css +1 -1
  15. package/build/css/pdp-main-non-critical.css +1 -1
  16. package/build/css/pdp-main.css +1 -1
  17. package/build/css/plp-main.css +1 -1
  18. package/build/css/store-locator-main.css +1 -1
  19. package/build/js/basket.min.js +2 -2
  20. package/build/js/bundle.min.js +1 -1
  21. package/build/js/checkout.min.js +2 -2
  22. package/build/js/emulation.min.js +10255 -10784
  23. package/build/js/general.bundle.min.js +1 -1
  24. package/build/js/kitchen/kitchen-plp.min.js +9 -1
  25. package/build/js/merged-checkout.min.js +2 -2
  26. package/build/js/mini-basket-slider.min.js +1 -1
  27. package/build/js/my-account.min.js +1 -1
  28. package/build/js/page/accordion.js +35 -0
  29. package/build/js/page/basket/basket-update-cart-action.js +56 -59
  30. package/build/js/page/basket/basket-update-cart.js +27 -27
  31. package/build/js/page/basket/basket-utils.js +33 -40
  32. package/build/js/page/basket/mini-basket-total.js +66 -70
  33. package/build/js/page/basket/quantity-change-handler.js +55 -73
  34. package/build/js/page/basket/update-quantity-operation.js +30 -39
  35. package/build/js/page/basket/update-quantity.js +62 -62
  36. package/build/js/page/basket-v2.js +229 -362
  37. package/build/js/page/billie-business-type.js +27 -27
  38. package/build/js/page/checkout-payment-details.js +299 -301
  39. package/build/js/page/components/discounts.js +36 -39
  40. package/build/js/page/components/mini-basket-slider.js +545 -604
  41. package/build/js/page/kitchen/plp-filters-chips.js +90 -0
  42. package/build/js/page/kitchen/plp-filters-mobile.js +72 -0
  43. package/build/js/page/kitchen/plp-filters-panel.js +119 -0
  44. package/build/js/page/kitchen/plp-filters-utils.js +65 -0
  45. package/build/js/page/kitchen/plp-filters.js +205 -0
  46. package/build/js/page/kitchen/sort-by.js +157 -0
  47. package/build/js/page/klarna-modal-scroll-disable.js +4 -4
  48. package/build/js/page/my-account.js +14 -29
  49. package/build/js/page/online-exclusive.js +30 -28
  50. package/build/js/page/tradePro-rewards.js +39 -69
  51. package/build/js/page/utils/copy-to-clipboard.js +47 -79
  52. package/build/js/page/utils/helpers.js +9 -14
  53. package/build/js/pdp.bundle.min.js +1 -1
  54. package/build/js/plp.bundle.min.js +1 -1
  55. package/build/js/project-list.min.js +85 -143
  56. package/build/js/tradePro-rewards.min.js +1 -1
  57. package/package.json +3 -3
  58. package/src/components/.DS_Store +0 -0
  59. package/src/components/accordion.hbs +2 -2
  60. package/src/components/kitchen/dropdown.hbs +3 -6
  61. package/src/components/kitchen/filter-modal.hbs +13 -10
  62. package/src/components/kitchen/plp-filters.hbs +1 -3
  63. package/src/components/kitchen/sort-by.hbs +1 -1
  64. package/src/components/my-account/barcode.hbs +1 -3
  65. package/src/components/my-account/cards-swap.hbs +10 -0
  66. package/src/components/my-account/clipboard-code-card.hbs +3 -3
  67. package/src/components/my-account/discount.hbs +1 -1
  68. package/src/components/my-account/greetings.hbs +1 -1
  69. package/src/components/search-filter.hbs +112 -121
  70. package/src/data/data_plp_load-more.json +1 -1
  71. package/src/data/my-account/data_my-account.json +9 -0
  72. package/src/js/components/cards-swap.js +72 -0
  73. package/src/js/components/general/accordion.js +33 -44
  74. package/src/js/components/general/cart-slider.js +16 -19
  75. package/src/js/components/general/create-popup-slider.js +173 -168
  76. package/src/js/components/general/search-filter.js +21 -0
  77. package/src/js/components/share-project-list.js +53 -0
  78. package/src/js/emulation/big-wins.js +904 -1081
  79. package/src/js/emulation/billie-modal.js +19 -23
  80. package/src/js/emulation/checkout-payment-details.js +38 -47
  81. package/src/js/emulation/custom-slider-emulation.js +13 -17
  82. package/src/js/emulation/forms.js +323 -360
  83. package/src/js/emulation/mini-basket-data.js +923 -1051
  84. package/src/js/emulation/paymentLoader.js +17 -17
  85. package/src/js/emulation/pdf-file-loader.js +91 -89
  86. package/src/js/emulation/popover-mini-basket.js +239 -246
  87. package/src/js/emulation/project-list-pdp.js +316 -320
  88. package/src/js/emulation/repayment-toggle.js +24 -23
  89. package/src/js/emulation/selectable.js +18 -22
  90. package/src/js/emulation/wismo-details.js +31 -23
  91. package/src/js/page/accordion.js +35 -0
  92. package/src/js/page/basket/basket-update-cart-action.js +56 -59
  93. package/src/js/page/basket/basket-update-cart.js +27 -27
  94. package/src/js/page/basket/basket-utils.js +33 -40
  95. package/src/js/page/basket/mini-basket-total.js +66 -70
  96. package/src/js/page/basket/quantity-change-handler.js +55 -73
  97. package/src/js/page/basket/update-quantity-operation.js +30 -39
  98. package/src/js/page/basket/update-quantity.js +62 -62
  99. package/src/js/page/basket-v2.js +229 -362
  100. package/src/js/page/billie-business-type.js +27 -27
  101. package/src/js/page/checkout-payment-details.js +299 -301
  102. package/src/js/page/components/discounts.js +36 -39
  103. package/src/js/page/components/mini-basket-slider.js +545 -604
  104. package/src/js/page/kitchen/plp-filters-chips.js +90 -0
  105. package/src/js/page/kitchen/plp-filters-mobile.js +72 -0
  106. package/src/js/page/kitchen/plp-filters-panel.js +119 -0
  107. package/src/js/page/kitchen/plp-filters-utils.js +65 -0
  108. package/src/js/page/kitchen/plp-filters.js +205 -0
  109. package/src/js/page/kitchen/sort-by.js +157 -0
  110. package/src/js/page/klarna-modal-scroll-disable.js +4 -4
  111. package/src/js/page/my-account.js +14 -29
  112. package/src/js/page/online-exclusive.js +30 -28
  113. package/src/js/page/tradePro-rewards.js +39 -69
  114. package/src/js/page/utils/copy-to-clipboard.js +47 -79
  115. package/src/js/page/utils/helpers.js +9 -14
  116. package/src/page_empty-shared-project-list-bicester-hub.html +0 -4
  117. package/src/page_empty-shopping-list_guest.html +0 -1
  118. package/src/page_kitchen-plp.html +2 -2
  119. package/src/page_my-account-installer.html +1 -1
  120. package/src/page_my-account-trade-pro-carousel-double.html +127 -0
  121. package/src/page_my-account-trade-pro-carousel.html +134 -0
  122. package/src/page_my-account-trade-pro.html +1 -1
  123. package/src/page_my-shopping-list-add-notes.html +0 -1
  124. package/src/page_my-shopping-list-energy.html +0 -1
  125. package/src/page_my-shopping-list-hide-download.html +1 -2
  126. package/src/page_my-shopping-list-pdf.html +0 -2
  127. package/src/page_my-shopping-list-saved-ref.html +0 -1
  128. package/src/page_my-shopping-list-wisdom-oos-registered.html +0 -1
  129. package/src/page_my-shopping-list-wisdom-oos.html +0 -1
  130. package/src/page_my-shopping-list-wisdom-partial-registered.html +0 -1
  131. package/src/page_my-shopping-list-wisdom-registered.html +0 -1
  132. package/src/page_my-shopping-list-wisdom.html +0 -1
  133. package/src/page_my-shopping-list.html +0 -1
  134. package/src/page_my-shopping-list_not-register.html +0 -3
  135. package/src/page_plp-with-paint.html +7 -2
  136. package/src/page_plp.html +7 -2
  137. package/src/page_plp_v2-energy-efficiency.html +6 -1
  138. package/src/page_plp_v2-favourite-products.html +7 -6
  139. package/src/page_plp_v2-vat.html +7 -2
  140. package/src/page_plp_v2.html +9 -22
  141. package/src/page_product_search-vat.html +7 -2
  142. package/src/page_product_search.html +7 -2
  143. package/src/page_project-list-generate-project-list-ID.html +0 -3
  144. package/src/page_project-list-vat.html +0 -4
  145. package/src/page_project-list-with-new-share-popup-android.html +1 -3
  146. package/src/page_project-list-with-new-share-popup-ios.html +1 -3
  147. package/src/page_project-list-with-new-share-popup.html +1 -2
  148. package/src/page_search-results.html +7 -2
  149. package/src/page_shared-project-list-bicester-hub.html +1 -3
  150. package/src/page_tradepro-discount-app.html +1 -1
  151. package/src/page_tradepro-discount-double.html +109 -0
  152. package/src/page_tradepro-discount.html +36 -2
  153. package/src/scss/common/_common.scss +4 -5
  154. package/src/scss/components/_accordion.scss +3 -1
  155. package/src/scss/components/_custom-slider.scss +14 -15
  156. package/src/scss/components/_date-selection-add-new-styles.scss +7 -6
  157. package/src/scss/components/_date-selection.scss +1 -1
  158. package/src/scss/components/_popover-mini-basket.scss +3 -3
  159. package/src/scss/components/_search-filter.scss +15 -95
  160. package/src/scss/components/checkout-chip.scss +2 -2
  161. package/src/scss/components/checkout-payment-repayment-terms.scss +1 -1
  162. package/src/scss/components/{_filter-modal.scss → kitchen/_filter-modal.scss} +4 -55
  163. package/src/scss/components/{_plp-filters.scss → kitchen/_plp-filters.scss} +13 -31
  164. package/src/scss/components/my-account/_barcode.scss +8 -0
  165. package/src/scss/components/my-account/_cards-swap.scss +58 -0
  166. package/src/scss/components/my-account/_clipboard-code.scss +8 -0
  167. package/src/scss/components/my-account/_discount.scss +10 -0
  168. package/src/scss/globals/_global-components.scss +0 -3
  169. package/src/scss/helpers/_colors-semantic.scss +68 -68
  170. package/src/scss/helpers/_variables.scss +196 -242
  171. package/src/scss/kitchen-plp-main.scss +3 -0
  172. package/src/scss/main.scss +65 -65
  173. package/src/scss/pages/my-account-v2.scss +37 -0
  174. package/src/scss/pages/page_discount.scss +8 -4
  175. package/src/scss/pages/page_product-details-v2.scss +4 -1
  176. package/src/scss/pages/page_product_search.scss +1 -9
  177. package/src/scss/pages/page_products-list-combined.scss +24 -28
  178. package/src/scss/pages/page_products-list.scss +0 -8
  179. package/src/scss/pages/tradePro-rewards.scss +4 -3
  180. package/src/sitemap.html +3 -0
  181. package/build/js/page/filters/desktop-nav.js +0 -64
  182. package/build/js/page/filters/mobile-nav.js +0 -93
  183. package/build/js/page/filters/plp-filters-chips.js +0 -92
  184. package/build/js/page/filters/plp-filters-mobile.js +0 -150
  185. package/build/js/page/filters/plp-filters-panel.js +0 -123
  186. package/build/js/page/filters/plp-filters-utils.js +0 -66
  187. package/build/js/page/filters/plp-filters.js +0 -256
  188. package/build/js/page/filters/sort-by.js +0 -172
  189. package/build/js/page/search-filter.js +0 -62
  190. package/build/js/page/share-project-list.js +0 -57
  191. package/build/js/page/utils/show-more-less.js +0 -273
  192. package/src/components/kitchen/filter-modal-content-kitchen.hbs +0 -10
  193. package/src/components/search-filter-modal-content.hbs +0 -102
  194. package/src/elements/btn.hbs +0 -7
  195. package/src/js/emulation/filters-emulation.js +0 -164
  196. package/src/js/emulation/product-counter.js +0 -50
  197. package/src/js/emulation/reset-filter-desktop.js +0 -5
  198. package/src/js/page/filters/desktop-nav.js +0 -64
  199. package/src/js/page/filters/mobile-nav.js +0 -93
  200. package/src/js/page/filters/plp-filters-chips.js +0 -92
  201. package/src/js/page/filters/plp-filters-mobile.js +0 -150
  202. package/src/js/page/filters/plp-filters-panel.js +0 -123
  203. package/src/js/page/filters/plp-filters-utils.js +0 -66
  204. package/src/js/page/filters/plp-filters.js +0 -256
  205. package/src/js/page/filters/sort-by.js +0 -172
  206. package/src/js/page/search-filter.js +0 -62
  207. package/src/js/page/share-project-list.js +0 -57
  208. package/src/js/page/utils/show-more-less.js +0 -273
  209. package/src/scss/components/_sort-by.scss +0 -190
@@ -1,256 +0,0 @@
1
- var Wick = window.Wick || {};
2
-
3
- Wick.PLPFilters = {
4
- ROOT_WRAPPER:
5
- '.page-KitchenPLPPage, .products-list-page:not(.page-responsiveThematicProductListPage)',
6
- ROOT: '.plp-filters',
7
- GROUP: '.plp-filters__group',
8
- APPLY_BTN: '.plp-filters__apply',
9
-
10
- INPUTS: '.filter-card__checkbox, .swatch__checkbox, .checkbox__input',
11
-
12
- appliedState: {},
13
-
14
- init() {
15
- // 1) initialize submodules
16
- Wick.PLPFiltersPanel.init();
17
- Wick.PLPFiltersMobile.init();
18
-
19
- // 2) initial state with URL
20
- const root = $(Wick.PLPFilters.ROOT);
21
- const rootWrapper = $(Wick.PLPFilters.ROOT_WRAPPER);
22
- if (!root.length) {
23
- return;
24
- }
25
-
26
- Wick.PLPFilters.appliedState = Wick.PLPFilters.readStateFromURL(rootWrapper);
27
- Wick.PLPFilters.setDOMFromState(rootWrapper, Wick.PLPFilters.appliedState);
28
-
29
- // 3) chips
30
- Wick.PLPChips.bindChipActions(rootWrapper);
31
-
32
- // 4) apply (desktop "View results")
33
- $(document).on('click', Wick.PLPFilters.APPLY_BTN, Wick.PLPFilters.applyFilters);
34
-
35
- // 5) primary render
36
- Wick.PLPFilters.updateSelectedUI(rootWrapper);
37
- },
38
-
39
- // ===== URL <-> STATE
40
- readStateFromURL(rootWrapper) {
41
- const url = new URL(window.location.href);
42
- const params = url.searchParams;
43
- const state = {};
44
-
45
- const groupsMeta = Wick.PLPUtils.getGroupsMeta(rootWrapper, Wick.PLPFilters.GROUP);
46
- if (!groupsMeta.length) {
47
- return state;
48
- }
49
-
50
- const byDomName = {};
51
- groupsMeta.forEach((m) => {
52
- byDomName[m.domName] = m;
53
- });
54
-
55
- for (const [key, val] of params.entries()) {
56
- const meta = byDomName[key];
57
- if (!meta) {
58
- continue;
59
- }
60
-
61
- const values = val
62
- .split(',')
63
- .map((v) => v.trim())
64
- .filter(Boolean);
65
- if (!values.length) {
66
- continue;
67
- }
68
-
69
- values.forEach((want) => {
70
- const inp = meta.group
71
- .find(Wick.PLPFilters.INPUTS)
72
- .filter(function () {
73
- return $(this).val() === want;
74
- })
75
- .first();
76
-
77
- if (!inp.length) {
78
- return;
79
- }
80
-
81
- const originalValue = inp.val();
82
- if (!state[meta.domName]) {
83
- state[meta.domName] = new Set();
84
- }
85
- state[meta.domName].add(originalValue);
86
- });
87
- }
88
-
89
- return state;
90
- },
91
-
92
- writeStateToURL(state) {
93
- const url = new URL(window.location.href);
94
-
95
- const groupsMeta = Wick.PLPUtils.getGroupsMeta(
96
- $(Wick.PLPFilters.ROOT_WRAPPER),
97
- Wick.PLPFilters.GROUP
98
- );
99
- const groupKeysDecoded = new Set(groupsMeta.map((m) => m.domName));
100
-
101
- const pairs = [];
102
- for (const [k, v] of url.searchParams.entries()) {
103
- if (!groupKeysDecoded.has(k)) {
104
- pairs.push(`${encodeURIComponent(k)}=${encodeURIComponent(v)}`);
105
- }
106
- }
107
-
108
- groupsMeta.forEach((meta) => {
109
- const set = state[meta.domName];
110
- if (!set || !set.size) return;
111
-
112
- const keyEnc = encodeURIComponent(meta.domName);
113
- const valueEnc = Array.from(set)
114
- .map((v) => encodeURIComponent(v))
115
- .join(',');
116
- pairs.push(`${keyEnc}=${valueEnc}`);
117
- });
118
-
119
- url.search = pairs.join('&');
120
-
121
- window.location.href = url.origin + url.pathname + url.search;
122
- },
123
-
124
- // set checkboxes according to state (both for desktop and modal)
125
- setDOMFromState(rootWrapper, state) {
126
- rootWrapper.find(Wick.PLPFilters.INPUTS).prop('checked', false);
127
-
128
- Object.keys(state).forEach((groupDomName) => {
129
- state[groupDomName].forEach((originalValue) => {
130
- const want = originalValue;
131
-
132
- const cand = rootWrapper
133
- .find(Wick.PLPFilters.INPUTS)
134
- .filter(function () {
135
- const i = $(this);
136
- const valMatch = i.val() === want;
137
- const g = i.closest(Wick.PLPFilters.GROUP);
138
- const groupMatch = g.length ? g.attr('data-filter') === groupDomName : true;
139
- return valMatch && groupMatch;
140
- })
141
- .first();
142
-
143
- if (cand.length) {
144
- cand.prop('checked', true);
145
- }
146
- });
147
- });
148
- },
149
-
150
- collectStateFromDOM(rootWrapper) {
151
- const state = {};
152
- rootWrapper
153
- .find(Wick.PLPFilters.INPUTS)
154
- .filter(':checked')
155
- .each((_, el) => {
156
- const input = $(el);
157
- const group = input.closest(Wick.PLPFilters.GROUP);
158
- const groupDomName = group.attr('data-filter') || '';
159
- if (!groupDomName) {
160
- return;
161
- }
162
-
163
- const val = (input.val() || '').trim();
164
- if (!val) {
165
- return;
166
- }
167
-
168
- if (!state[groupDomName]) {
169
- state[groupDomName] = new Set();
170
- }
171
- state[groupDomName].add(val);
172
- });
173
- return state;
174
- },
175
-
176
- // ===== APPLY
177
- applyFromScopes(scopeForCollect, push) {
178
- Wick.PLPFilters.appliedState = Wick.PLPFilters.collectStateFromDOM(scopeForCollect);
179
- Wick.PLPFilters.writeStateToURL(Wick.PLPFilters.appliedState, !!push);
180
- },
181
-
182
- applyFilters(e) {
183
- e.preventDefault();
184
- const scope = $(Wick.PLPFilters.ROOT_WRAPPER).add($(Wick.PLPFiltersMobile.MODAL_SEL));
185
- Wick.PLPFilters.applyFromScopes(scope, true);
186
- },
187
-
188
- // ===== RENDER
189
- updateSelectedUI(rootWrapper) {
190
- Wick.PLPChips.renderGroupCounters(rootWrapper);
191
- Wick.PLPChips.renderChips(rootWrapper);
192
- Wick.PLPFiltersMobile.updateMobileFilterInfo();
193
- },
194
-
195
- totalApplied() {
196
- return Object.values(Wick.PLPFilters.appliedState).reduce((n, set) => n + set.size, 0);
197
- },
198
-
199
- // Wick.PLPUtils for appliedState
200
- removeFromApplied(groupDomName, valOriginal) {
201
- const st = Wick.PLPFilters.appliedState[groupDomName];
202
- if (!st) {
203
- return;
204
- }
205
- st.delete(valOriginal);
206
- if (st.size === 0) {
207
- delete Wick.PLPFilters.appliedState[groupDomName];
208
- }
209
- },
210
-
211
- exportState() {
212
- const out = {};
213
- Object.keys(Wick.PLPFilters.appliedState).forEach((g) => {
214
- out[g] = Array.from(Wick.PLPFilters.appliedState[g]);
215
- });
216
- return out;
217
- },
218
- };
219
-
220
- Wick.Overlay = (function () {
221
- const BODY_CLASS = 'page-responsiveThematicProductListPage';
222
-
223
- if (!$('body').hasClass(BODY_CLASS)) {
224
- return;
225
- }
226
-
227
- const $filterMobile = $('.filter-results_mobile');
228
-
229
- $(document).on('click', '#open-overlay', function (event) {
230
- event.preventDefault();
231
-
232
- $('body').addClass('is-filters-visible');
233
- $filterMobile.addClass('show');
234
- });
235
-
236
- $(document).on('click', '#close-overlay, .filter-results__btn-close', function (event) {
237
- event.preventDefault();
238
-
239
- if ($filterMobile.hasClass('show')) {
240
- $('body').removeClass('is-filters-visible');
241
- $filterMobile.removeClass('show');
242
- }
243
- });
244
-
245
- $(document).on(
246
- 'click',
247
- '.filter-results_desktop .filter__item input[type="checkbox"]',
248
- function () {
249
- $(this).closest('form').submit();
250
- }
251
- );
252
- })();
253
-
254
- $(function () {
255
- Wick.PLPFilters.init();
256
- });
@@ -1,172 +0,0 @@
1
- var Wick = window.Wick || {};
2
-
3
- Wick.Sort = {
4
- ROOT: '.page-KitchenPLPPage, .products-list-page:not(.page-responsiveThematicProductListPage)',
5
- WRAP: '.sort',
6
- DROPDOWN: '.sort-dd',
7
- OPTION: '.sort-opt',
8
- INFO: '.js-sort-info',
9
- CHEVRON: '.sort__chevron',
10
-
11
- TRIGGER_MOBILE: '.sort--mobile',
12
- TRIGGER_DESKTOP_BTN: '.sort--desktop .sort-button',
13
-
14
- MAP_VALUE_TO_LABEL: {
15
- relevance: 'Relevance',
16
- priceLow: 'Price (lowest first)',
17
- priceHigh: 'Price (highest first)',
18
- },
19
-
20
- init: function () {
21
- const root = $(Wick.Sort.ROOT);
22
- if (!root.length) {
23
- return;
24
- }
25
-
26
- root.on('click', Wick.Sort.TRIGGER_MOBILE, (e) => {
27
- if ($(e.target).closest(Wick.Sort.DROPDOWN).length) {
28
- return;
29
- }
30
- e.preventDefault();
31
- Wick.Sort.toggle($(e.currentTarget));
32
- });
33
-
34
- root.on('click', Wick.Sort.TRIGGER_DESKTOP_BTN, (e) => {
35
- e.preventDefault();
36
- Wick.Sort.toggle($(e.currentTarget).closest(Wick.Sort.WRAP));
37
- });
38
-
39
- root.on('keydown', `${Wick.Sort.TRIGGER_MOBILE}, ${Wick.Sort.TRIGGER_DESKTOP_BTN}`, (e) => {
40
- if (e.key === 'Enter' || e.key === ' ') {
41
- e.preventDefault();
42
- Wick.Sort.toggle($(e.currentTarget).closest(Wick.Sort.WRAP));
43
- }
44
- });
45
-
46
- root.on('click', Wick.Sort.OPTION, (e) => {
47
- e.preventDefault();
48
- e.stopPropagation();
49
-
50
- const opt = $(e.currentTarget);
51
- const value = opt.data('value');
52
-
53
- if (opt.data('is-plp-srp')) {
54
- return;
55
- }
56
-
57
- Wick.Sort.updateSortParamInURL(value);
58
- });
59
-
60
- $(document).on('click', (e) => {
61
- const open = $(`${Wick.Sort.WRAP}.is-open`);
62
- if (!open.length) {
63
- return;
64
- }
65
- if (!open.is(e.target) && open.has(e.target).length === 0) {
66
- Wick.Sort.closeAll();
67
- }
68
- });
69
-
70
- $(document).on('keydown', (e) => {
71
- if (e.key === 'Escape') {
72
- Wick.Sort.closeAll();
73
- }
74
- });
75
-
76
- Wick.Sort.bootstrap();
77
- },
78
-
79
- updateSortParamInURL: function (value) {
80
- const url = new URL(window.location.href);
81
- const params = url.searchParams;
82
-
83
- if (value === 'relevance') {
84
- params.delete('sortBy');
85
- } else {
86
- params.set('sortBy', value);
87
- }
88
-
89
- url.search = params.toString();
90
-
91
- window.location.href = url.toString();
92
- },
93
-
94
- toggle: function (wrap) {
95
- const isOpen = wrap.hasClass('is-open');
96
- Wick.Sort.closeAll();
97
- if (!isOpen) {
98
- wrap.addClass('is-open');
99
- wrap.find(Wick.Sort.DROPDOWN).removeAttr('hidden');
100
- Wick.Sort.setExpanded(wrap, true);
101
-
102
- if (window.Wick && Wick.PLPFilters && typeof Wick.PLPFilters.closeAll === 'function') {
103
- Wick.PLPFilters.closeAll();
104
- }
105
- }
106
- },
107
-
108
- close: function (wrap) {
109
- wrap.removeClass('is-open');
110
- wrap.find(Wick.Sort.DROPDOWN).attr('hidden', true);
111
- Wick.Sort.setExpanded(wrap, false);
112
- },
113
-
114
- closeAll: function () {
115
- const all = $(Wick.Sort.WRAP);
116
- all.removeClass('is-open');
117
- all.find(Wick.Sort.DROPDOWN).attr('hidden', true);
118
- all.each((_, el) => Wick.Sort.setExpanded($(el), false));
119
- },
120
-
121
- bootstrap: function () {
122
- const urlParams = new URLSearchParams(window.location.search);
123
- const value = urlParams.get('sortBy') || 'relevance';
124
- const label = Wick.Sort.valueToLabel(value);
125
-
126
- $(Wick.Sort.WRAP).each((_, el) => {
127
- const w = $(el);
128
-
129
- const isPlpSrp = w.find(Wick.Sort.OPTION).first().data('is-plp-srp');
130
-
131
- if (isPlpSrp) {
132
- return;
133
- }
134
-
135
- w.find(Wick.Sort.OPTION)
136
- .removeClass('is-active')
137
- .filter(`[data-value="${value}"]`)
138
- .addClass('is-active');
139
- });
140
-
141
- const hasPlpSrp = $(Wick.Sort.OPTION).first().data('is-plp-srp');
142
-
143
- if (!hasPlpSrp) {
144
- $(document).trigger('sort:change', { value, label });
145
- $(Wick.Sort.INFO).text(label);
146
- }
147
- },
148
-
149
- setExpanded: function (wrap, expanded) {
150
- const btn = wrap.is('.sort--mobile') ? wrap : wrap.find('.sort-button').first();
151
- if (btn.length) {
152
- btn.attr('aria-expanded', expanded ? 'true' : 'false');
153
- }
154
- },
155
-
156
- valueToLabel: function (value) {
157
- return Wick.Sort.MAP_VALUE_TO_LABEL[value] || 'Relevance';
158
- },
159
- labelToValue: function (label) {
160
- const entries = Object.entries(Wick.Sort.MAP_VALUE_TO_LABEL);
161
- for (const [val, lab] of entries) {
162
- if (lab.toLowerCase() === label.toString().toLowerCase()) {
163
- return val;
164
- }
165
- }
166
- return 'relevance';
167
- },
168
- };
169
-
170
- $(function () {
171
- Wick.Sort.init();
172
- });
@@ -1,62 +0,0 @@
1
- // import { createShowMoreLess } from './utils/show-more-less';
2
-
3
- var Wick = Wick || {};
4
-
5
- Wick.Overlay = (function () {
6
- var filterMobile = $('.filter-results_mobile');
7
- $('#open-overlay').click(function (event) {
8
- event.preventDefault();
9
- $('body').addClass('is-filters-visible');
10
- filterMobile.toggleClass('show');
11
- });
12
-
13
- $('#close-overlay, .filter-results__btn-close').click(function (event) {
14
- event.preventDefault();
15
- if (filterMobile.hasClass('show')) {
16
- $('body').removeClass('is-filters-visible');
17
- filterMobile.removeClass('show');
18
- }
19
- });
20
-
21
- $('.filter-results_desktop .filter__item input[type="checkbox"]').click(function () {
22
- $(this).closest('form').submit();
23
- });
24
- })();
25
-
26
- Wick.SearchFilter = (function () {
27
- const SEL = {
28
- CATEGORY: '.category-filter',
29
- FILTER_MOBILE: '.filter-results_mobile',
30
- OPEN: '.filter-modal-cta',
31
- CLOSE: '.close',
32
- FILTER_RESULT: '.filter-results_desktop',
33
- DESKTOP_CHECKBOX: '.filter-results_desktop .filter__item input[type="checkbox"]',
34
- BODY_ACTIVE: 'is-filters-visible',
35
- };
36
-
37
- // removed show more/show less logic from frontend (will be implemented on backend)
38
- // const SRPShowMoreLess = createShowMoreLess({
39
- // excludeGroup: ($group) => $group.hasClass(SEL.CATEGORY),
40
- // });
41
-
42
- // const $fm = $(SEL.FILTER_MOBILE);
43
- // SRPShowMoreLess.init($(SEL.FILTER_RESULT));
44
- // SRPShowMoreLess.init($fm);
45
-
46
- $(SEL.OPEN).on('click', function (event) {
47
- event.preventDefault();
48
- // removed show more/show less logic from frontend (will be implemented on backend)
49
- // SRPShowMoreLess.init($fm);
50
- // SRPShowMoreLess.resetAll($fm);
51
- });
52
-
53
- $(document).on('click', SEL.CLOSE, function (event) {
54
- event.preventDefault();
55
- // removed show more/show less logic from frontend (will be implemented on backend)
56
- // SRPShowMoreLess.resetAll($fm);
57
- });
58
-
59
- $(document).on('click', SEL.DESKTOP_CHECKBOX, function () {
60
- $(this).closest('form').submit();
61
- });
62
- })();
@@ -1,57 +0,0 @@
1
- import { copyToClipboard } from './utils/copy-to-clipboard';
2
-
3
- var Wick = Wick || {};
4
- Wick.ShareProjectList = (function () {
5
- function init() {
6
- var $input = $('#share-list-modal #shopping-list-link');
7
- var linkContainer = $('#copy-link');
8
- var $actualLink = linkContainer.find('a');
9
- var copyClass = 'copy-link_hovered';
10
-
11
- $actualLink.on('click', function (e) {
12
- e.preventDefault();
13
- });
14
-
15
- function focusAndSelectInput() {
16
- if (!$input.length) return;
17
-
18
- var el = $input.get(0);
19
-
20
- $input.removeAttr('disabled');
21
-
22
- el.focus();
23
-
24
- var len = (el.value || '').length;
25
- if (typeof el.setSelectionRange === 'function') {
26
- el.setSelectionRange(0, len);
27
- } else if (typeof el.select === 'function') {
28
- el.select();
29
- }
30
- }
31
-
32
- linkContainer.on('click', function (e) {
33
- e.preventDefault();
34
-
35
- focusAndSelectInput();
36
-
37
- var value = ($input.val() || '').trim();
38
- if (!value) return;
39
-
40
- copyToClipboard(value, linkContainer[0], { noUpperCase: true })
41
- .then(function () {
42
- $actualLink.addClass(copyClass);
43
- })
44
- .catch(function (e) {
45
- console.error(e);
46
- });
47
- });
48
-
49
- $input.on('click', function (e) {
50
- e.preventDefault();
51
- focusAndSelectInput();
52
- $actualLink.removeClass(copyClass);
53
- });
54
- }
55
-
56
- init();
57
- })();