wickes-css2 2.106.0-develop.4 → 2.106.0-develop.6

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.
@@ -65,11 +65,6 @@ Wick.PLPFiltersMobile = {
65
65
  $btn.text(total > 0 ? `View results (${total})` : 'View results');
66
66
  },
67
67
 
68
- hideAccordions() {
69
- $(Wick.PLPFiltersMobile.$ACCORDION).addClass(Wick.PLPFiltersMobile.ACCORDION_COLLAPSED);
70
- $(Wick.PLPFiltersMobile.$ACCORDION_CONTENT).hide();
71
- },
72
-
73
68
  init() {
74
69
  // two-way binding for input between desktop and modal
75
70
  $(document)
@@ -86,13 +81,14 @@ Wick.PLPFiltersMobile = {
86
81
  $(document)
87
82
  .off('shown.bs.modal.plpFiltersMobile', Wick.PLPFiltersMobile.MODAL_SEL)
88
83
  .on('shown.bs.modal.plpFiltersMobile', Wick.PLPFiltersMobile.MODAL_SEL, function () {
89
- Wick.PLPFilters.setDOMFromState($(this), Wick.PLPFilters.appliedState);
84
+ Wick.PLPFilters.setDOMFromState($(this), Wick.PLPFilters.draftState);
90
85
  });
91
86
 
92
87
  $(document)
93
88
  .off('hide.bs.modal.plpFiltersMobile', Wick.PLPFiltersMobile.MODAL_SEL)
94
89
  .on('hide.bs.modal.plpFiltersMobile', Wick.PLPFiltersMobile.MODAL_SEL, function () {
95
- Wick.PLPFiltersMobile.hideAccordions();
90
+ const scope = $(Wick.PLPFiltersMobile.ROOT_WRAPPER).add($(this));
91
+ Wick.PLPFilters.draftState = Wick.PLPFilters.collectStateFromDOM(scope);
96
92
  });
97
93
 
98
94
  // mobile "View results" button in modal
@@ -126,6 +122,7 @@ Wick.PLPFiltersMobile = {
126
122
 
127
123
  e.preventDefault();
128
124
 
125
+ Wick.PLPFilters.draftState = {};
129
126
  Wick.PLPFilters.appliedState = {};
130
127
  Wick.PLPFilters.writeStateToURL(Wick.PLPFilters.appliedState, false);
131
128
 
@@ -1,6 +1,14 @@
1
1
  var Wick = window.Wick || {};
2
2
 
3
3
  Wick.PLPUtils = (function () {
4
+ function cloneState(state) {
5
+ const out = {};
6
+ Object.keys(state).forEach((k) => {
7
+ out[k] = new Set(state[k]);
8
+ });
9
+ return out;
10
+ }
11
+
4
12
  function syncTwinInputsByName(name, checked, source) {
5
13
  const all = $('.filter-card__checkbox, .swatch__checkbox, .checkbox__input').filter(
6
14
  function () {
@@ -57,6 +65,7 @@ Wick.PLPUtils = (function () {
57
65
  }
58
66
 
59
67
  return {
68
+ cloneState,
60
69
  syncTwinInputsByName,
61
70
  getPanelType,
62
71
  countItems,
@@ -6,6 +6,7 @@ Wick.PLPFilters = {
6
6
  ROOT: '.plp-filters',
7
7
  GROUP: '.plp-filters__group',
8
8
  APPLY_BTN: '.plp-filters__apply',
9
+ draftState: null,
9
10
 
10
11
  INPUTS: '.filter-card__checkbox, .swatch__checkbox, .checkbox__input',
11
12
 
@@ -24,6 +25,7 @@ Wick.PLPFilters = {
24
25
  }
25
26
 
26
27
  Wick.PLPFilters.appliedState = Wick.PLPFilters.readStateFromURL(rootWrapper);
28
+ Wick.PLPFilters.draftState = Wick.PLPUtils.cloneState(Wick.PLPFilters.appliedState);
27
29
  Wick.PLPFilters.setDOMFromState(rootWrapper, Wick.PLPFilters.appliedState);
28
30
 
29
31
  // 3) chips
@@ -43,8 +45,11 @@ Wick.PLPFilters = {
43
45
  handlePageShow() {
44
46
  window.addEventListener('pageshow', function () {
45
47
  const rootWrapper = $(Wick.PLPFilters.ROOT_WRAPPER);
46
- Wick.PLPFilters.appliedState = Wick.PLPFilters.readStateFromURL(rootWrapper);
47
- Wick.PLPFilters.setDOMFromState(rootWrapper, Wick.PLPFilters.appliedState);
48
+ const stateScope = rootWrapper.add($(Wick.PLPFiltersMobile.MODAL_SEL));
49
+
50
+ Wick.PLPFilters.appliedState = Wick.PLPFilters.readStateFromURL(stateScope);
51
+ Wick.PLPFilters.draftState = Wick.PLPFilters.appliedState;
52
+ Wick.PLPFilters.setDOMFromState(stateScope, Wick.PLPFilters.appliedState);
48
53
  });
49
54
  },
50
55
 
@@ -187,7 +192,10 @@ Wick.PLPFilters = {
187
192
 
188
193
  // ===== APPLY
189
194
  applyFromScopes(scopeForCollect, push) {
190
- Wick.PLPFilters.appliedState = Wick.PLPFilters.collectStateFromDOM(scopeForCollect);
195
+ const nextState = Wick.PLPFilters.collectStateFromDOM(scopeForCollect);
196
+
197
+ Wick.PLPFilters.draftState = nextState;
198
+ Wick.PLPFilters.appliedState = nextState;
191
199
  Wick.PLPFilters.writeStateToURL(Wick.PLPFilters.appliedState, !!push);
192
200
  },
193
201
 
@@ -1,57 +1,175 @@
1
1
  import { copyToClipboard } from './utils/copy-to-clipboard';
2
2
 
3
- var Wick = Wick || {};
3
+ var Wick = window.Wick || {};
4
+
4
5
  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';
6
+ const SELECTORS = {
7
+ input: '#share-list-modal #shopping-list-link',
8
+ linkContainer: '#copy-link',
9
+ link: 'a',
10
+ };
10
11
 
11
- $actualLink.on('click', function (e) {
12
- e.preventDefault();
13
- });
12
+ const CLASSES = {
13
+ copied: 'copy-link_hovered',
14
+ };
15
+
16
+ function logActiveElement() {
17
+ const active = document.activeElement;
18
+
19
+ if (!active) {
20
+ return;
21
+ }
22
+ }
23
+
24
+ function getElements() {
25
+ const $input = $(SELECTORS.input);
26
+ const $linkContainer = $(SELECTORS.linkContainer);
27
+ const $link = $linkContainer.find(SELECTORS.link);
28
+
29
+ return {
30
+ $input: $input,
31
+ $linkContainer: $linkContainer,
32
+ $link: $link,
33
+ };
34
+ }
35
+
36
+ function enableFocusAndSelect($input, source) {
37
+ if (!$input.length) {
38
+ return;
39
+ }
14
40
 
15
- function focusAndSelectInput() {
16
- if (!$input.length) return;
41
+ const input = $input.get(0);
42
+ const value = input.value || '';
43
+ const valueLength = value.length;
17
44
 
18
- var el = $input.get(0);
45
+ logActiveElement('[ShareProjectList] before removeAttr disabled');
19
46
 
20
- $input.removeAttr('disabled');
47
+ $input.removeAttr('disabled');
21
48
 
22
- el.focus();
49
+ try {
50
+ input.focus();
51
+ } catch (error) {
52
+ console.error('[ShareProjectList] input.focus() failed', {
53
+ source: source,
54
+ error: error,
55
+ });
56
+ }
57
+
58
+ logActiveElement('[ShareProjectList] after input.focus()');
23
59
 
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();
60
+ try {
61
+ if (typeof input.setSelectionRange === 'function') {
62
+ input.setSelectionRange(0, valueLength);
63
+ } else if (typeof input.select === 'function') {
64
+ input.select();
29
65
  }
66
+ } catch (error) {
67
+ console.error('[ShareProjectList] selection failed', {
68
+ source: source,
69
+ error: error,
70
+ });
30
71
  }
31
72
 
32
- linkContainer.on('click', function (e) {
33
- e.preventDefault();
73
+ logActiveElement('[ShareProjectList] after selection');
74
+
75
+ setTimeout(function () {
76
+ logActiveElement('[ShareProjectList] after 0ms timeout');
77
+ }, 0);
78
+
79
+ setTimeout(function () {
80
+ logActiveElement('[ShareProjectList] after 50ms timeout');
81
+ }, 50);
82
+
83
+ setTimeout(function () {
84
+ logActiveElement('[ShareProjectList] after 150ms timeout');
85
+ }, 150);
86
+ }
87
+
88
+ function getInputValue($input) {
89
+ const value = String($input.val() || '').trim();
90
+
91
+ return value;
92
+ }
93
+
94
+ function bindEvents(elements) {
95
+ const $input = elements.$input;
96
+ const $linkContainer = elements.$linkContainer;
97
+ const $link = elements.$link;
34
98
 
35
- focusAndSelectInput();
99
+ $input.on('focus', function () {
100
+ logActiveElement('[ShareProjectList] on input focus');
101
+ });
36
102
 
37
- var value = ($input.val() || '').trim();
38
- if (!value) return;
103
+ $input.on('blur', function () {
104
+ logActiveElement('[ShareProjectList] on input blur');
105
+ });
39
106
 
40
- copyToClipboard(value, linkContainer[0], { noUpperCase: true })
107
+ $link.on('click', function (event) {
108
+ event.preventDefault();
109
+ });
110
+
111
+ $linkContainer.on('mousedown', function () {
112
+ logActiveElement('[ShareProjectList] on mousedown before focus');
113
+ });
114
+
115
+ $linkContainer.on('click', function (event) {
116
+ let value;
117
+
118
+ logActiveElement('[ShareProjectList] before click preventDefault');
119
+
120
+ event.preventDefault();
121
+
122
+ enableFocusAndSelect($input, 'linkContainer click');
123
+
124
+ value = getInputValue($input);
125
+ if (!value) {
126
+ return;
127
+ }
128
+
129
+ copyToClipboard(value, $linkContainer.get(0), { noUpperCase: true })
41
130
  .then(function () {
42
- $actualLink.addClass(copyClass);
131
+ $link.addClass(CLASSES.copied);
132
+
133
+ logActiveElement('[ShareProjectList] after copy success before refocus');
134
+
135
+ enableFocusAndSelect($input, 'copy success refocus');
136
+
137
+ setTimeout(function () {
138
+ enableFocusAndSelect($input, 'copy success refocus timeout 0');
139
+ }, 0);
140
+
141
+ setTimeout(function () {
142
+ enableFocusAndSelect($input, 'copy success refocus timeout 50');
143
+ }, 50);
43
144
  })
44
- .catch(function (e) {
45
- console.error(e);
145
+ .catch(function (error) {
146
+ console.error('[ShareProjectList] Failed to copy shopping list link', error);
147
+
148
+ logActiveElement('[ShareProjectList] after copy error before refocus');
149
+
150
+ enableFocusAndSelect($input, 'copy error refocus');
46
151
  });
47
152
  });
48
153
 
49
- $input.on('click', function (e) {
50
- e.preventDefault();
51
- focusAndSelectInput();
52
- $actualLink.removeClass(copyClass);
154
+ $input.on('click', function () {
155
+ enableFocusAndSelect($input, 'input click');
156
+ $link.removeClass(CLASSES.copied);
53
157
  });
54
158
  }
55
159
 
56
- init();
160
+ function init() {
161
+ var elements = getElements();
162
+
163
+ if (!elements.$input.length || !elements.$linkContainer.length || !elements.$link.length) {
164
+ return;
165
+ }
166
+
167
+ bindEvents(elements);
168
+ }
169
+
170
+ return {
171
+ init: init,
172
+ };
57
173
  })();
174
+
175
+ Wick.ShareProjectList.init();
@@ -1,4 +1,4 @@
1
- var Wick=window.Wick||{};function formatNumberInElement(e){const i=new Intl.NumberFormat("en-GB");document.querySelectorAll(e).forEach(e=>{var t=e.textContent.trim(),t=Number(t.replace(/[^\d]/g,""));Number.isNaN(t)||(e.textContent=i.format(t))})}Wick.PLPUtils=function(){function i(e){return e.find(".plp-filters__options--cards").length?"cards":e.find(".swatch-list").length?"swatches":"text"}return{syncTwinInputsByName:function(e,t,i){$(".filter-card__checkbox, .swatch__checkbox, .checkbox__input").filter(function(){return $(this).attr("name")===e}).each(function(){i&&this===i[0]||$(this).prop("checked",t)})},getPanelType:i,countItems:function(e){var t=i(e);return"cards"===t?e.find(".filter-card").length||0:"swatches"===t?e.find(".swatch").length||0:e.find(".checkbox").length||0},setCardsColumns:function(e,t){(e=e.find(".plp-filters__options--cards")).length&&e.css("grid-template-columns",`repeat(${t}, minmax(0,1fr))`)},getGroupsMeta:function(e,t){const r=[];return e.find(t).each((e,t)=>{var t=$(t),i=t.attr("data-filter")||"";i&&r.push({domName:i,paramKey:i,group:t})}),r}}}(),(Wick=window.Wick||{}).PLPChips={GROUP:".plp-filters__group",TOGGLE:".plp-filters__toggle",INPUTS:".filter-card__checkbox, .swatch__checkbox, .checkbox__input",CHIPS_WRAP_SEL:".plp-selected",BADGE_CLASS:"plp-filters__badge",renderGroupCounters(e){e.find(Wick.PLPChips.GROUP).each((e,t)=>{var t=$(t),i=t.attr("data-filter")||"",i=Wick.PLPFilters.appliedState[i]?Wick.PLPFilters.appliedState[i].size:0,t=t.find(Wick.PLPChips.TOGGLE).find(`.${Wick.PLPChips.BADGE_CLASS} span`);0<i?t.text(i).css("display","flex"):t.text("").hide()})},renderChips(t){t=t.find(Wick.PLPChips.CHIPS_WRAP_SEL);if(t.length){const r=t.find(".plp-selected__list");let e=t.find(".plp-selected__clear-all");r.empty();var i=Wick.PLPFilters.totalApplied();t.find(".plp-selected__clear-all").prop("hidden",0===i),0===i?(t.hide(),e.length&&e.remove()):(Object.keys(Wick.PLPFilters.appliedState).forEach(t=>{Wick.PLPFilters.appliedState[t].forEach(e=>{r.append(`<button type="button" class="pf-chip" data-group="${t}" data-value="${e}">
1
+ var Wick=window.Wick||{};function formatNumberInElement(e){const i=new Intl.NumberFormat("en-GB");document.querySelectorAll(e).forEach(e=>{var t=e.textContent.trim(),t=Number(t.replace(/[^\d]/g,""));Number.isNaN(t)||(e.textContent=i.format(t))})}Wick.PLPUtils=function(){function i(e){return e.find(".plp-filters__options--cards").length?"cards":e.find(".swatch-list").length?"swatches":"text"}return{cloneState:function(t){const i={};return Object.keys(t).forEach(e=>{i[e]=new Set(t[e])}),i},syncTwinInputsByName:function(e,t,i){$(".filter-card__checkbox, .swatch__checkbox, .checkbox__input").filter(function(){return $(this).attr("name")===e}).each(function(){i&&this===i[0]||$(this).prop("checked",t)})},getPanelType:i,countItems:function(e){var t=i(e);return"cards"===t?e.find(".filter-card").length||0:"swatches"===t?e.find(".swatch").length||0:e.find(".checkbox").length||0},setCardsColumns:function(e,t){(e=e.find(".plp-filters__options--cards")).length&&e.css("grid-template-columns",`repeat(${t}, minmax(0,1fr))`)},getGroupsMeta:function(e,t){const r=[];return e.find(t).each((e,t)=>{var t=$(t),i=t.attr("data-filter")||"";i&&r.push({domName:i,paramKey:i,group:t})}),r}}}(),(Wick=window.Wick||{}).PLPChips={GROUP:".plp-filters__group",TOGGLE:".plp-filters__toggle",INPUTS:".filter-card__checkbox, .swatch__checkbox, .checkbox__input",CHIPS_WRAP_SEL:".plp-selected",BADGE_CLASS:"plp-filters__badge",renderGroupCounters(e){e.find(Wick.PLPChips.GROUP).each((e,t)=>{var t=$(t),i=t.attr("data-filter")||"",i=Wick.PLPFilters.appliedState[i]?Wick.PLPFilters.appliedState[i].size:0,t=t.find(Wick.PLPChips.TOGGLE).find(`.${Wick.PLPChips.BADGE_CLASS} span`);0<i?t.text(i).css("display","flex"):t.text("").hide()})},renderChips(t){t=t.find(Wick.PLPChips.CHIPS_WRAP_SEL);if(t.length){const r=t.find(".plp-selected__list");let e=t.find(".plp-selected__clear-all");r.empty();var i=Wick.PLPFilters.totalApplied();t.find(".plp-selected__clear-all").prop("hidden",0===i),0===i?(t.hide(),e.length&&e.remove()):(Object.keys(Wick.PLPFilters.appliedState).forEach(t=>{Wick.PLPFilters.appliedState[t].forEach(e=>{r.append(`<button type="button" class="pf-chip" data-group="${t}" data-value="${e}">
2
2
  <span class="pf-chip__text">${e}</span>
3
3
  <i class="fa fa-times pf-chip__close" aria-hidden="true"></i>
4
4
  <span class="sr-only">Remove ${e} from ${t}</span>
@@ -6,4 +6,4 @@ var Wick=window.Wick||{};function formatNumberInElement(e){const i=new Intl.Numb
6
6
  <button type="button" class="plp-selected__clear-all btn btn-secondary">
7
7
  <i class="fa fa-times" aria-hidden="true"></i><span>Clear all</span>
8
8
  </button>
9
- `),r.append(e)))}},bindChipActions(e){e.on("click",".pf-chip",e=>{e.preventDefault();var e=$(e.target).closest(".pf-chip"),t=e.data("group"),e=e.data("value");Wick.PLPFilters.removeFromApplied(t,e),Wick.PLPFilters.writeStateToURL(Wick.PLPFilters.appliedState,!1)}),e.on("click",".plp-selected__clear-all",e=>{e.preventDefault(),Wick.PLPFilters.writeStateToURL({},!1)})}},(Wick=window.Wick||{}).PLPFiltersPanel={ROOT:".plp-filters",BAR:".plp-filters__bar",GROUP:".plp-filters__group",TOGGLE:".plp-filters__toggle",PANEL:".plp-filters__panel",init(){$(document).on("click",Wick.PLPFiltersPanel.TOGGLE,Wick.PLPFiltersPanel.togglePanel),$(document).on("click",e=>{var t=$(Wick.PLPFiltersPanel.ROOT);t.is(e.target)||0!==t.has(e.target).length||Wick.PLPFiltersPanel.closeAll()}),$(document).on("keydown",e=>{"Escape"===e.key&&Wick.PLPFiltersPanel.closeAll()}),$(window).on("resize",_.debounce(()=>{var e=$(Wick.PLPFiltersPanel.GROUP+".is-open").first();e.length&&(e=e.find(Wick.PLPFiltersPanel.TOGGLE).first(),Wick.PLPFiltersPanel.layoutPanel(e))},120))},togglePanel(e){e.preventDefault();const t=$(this);var e=t.closest(Wick.PLPFiltersPanel.GROUP),i=e.children(Wick.PLPFiltersPanel.PANEL).first(),r=!e.hasClass("is-open");Wick.PLPFiltersPanel.closeAll(),r&&(e.addClass("is-open"),t.attr("aria-expanded","true"),i.attr("aria-hidden","false"),requestAnimationFrame(()=>Wick.PLPFiltersPanel.layoutPanel(t)))},closeAll(){$(Wick.PLPFiltersPanel.GROUP).removeClass("is-open"),$(Wick.PLPFiltersPanel.TOGGLE).attr("aria-expanded","false"),$(Wick.PLPFiltersPanel.PANEL).attr("aria-hidden","true").removeClass("plp-filters__panel--wide plp-filters__panel--auto").css({left:"",right:""})},layoutPanel(t){var e=$(Wick.PLPFiltersPanel.ROOT),t=t.closest(Wick.PLPFiltersPanel.GROUP),i=t.children(Wick.PLPFiltersPanel.PANEL).first();let r=t.closest(Wick.PLPFiltersPanel.BAR);if((r=r.length?r:e.find(".plp-filters__bar-desktop:visible").first()||e.find(".plp-filters__bar-desktop").first()||e.find(Wick.PLPFiltersPanel.BAR).filter(":visible").first()||e.find(Wick.PLPFiltersPanel.BAR).first()).length&&i.length){i.removeClass("plp-filters__panel--wide plp-filters__panel--auto").css({left:"",right:"",width:""});var e=r.offset(),t=t.offset(),l=Math.round(r.outerWidth()),t=Math.round(t.left-e.left),e=Wick.PLPUtils.getPanelType(i),o=Math.max(1,Wick.PLPUtils.countItems(i));if("cards"===e){Wick.PLPUtils.setCardsColumns(i,Math.min(o,4));let e=t;o=i.outerWidth();(e=e+o>l?l-o:e)<0&&(e=0),void i.css({left:e-t})}else if("swatches"===e){o=i.outerWidth();let e=t;e+o>l&&(e=l-o)<0&&(e=0),void i.css({left:e-t})}else i.css({right:0})}}},(Wick=window.Wick||{}).PLPFiltersMobile={ROOT_WRAPPER:".page-KitchenPLPPage, .products-list-page:not(.page-responsiveThematicProductListPage)",PRODUCTS_LIST:".products-list-page",INPUTS:".filter-card__checkbox, .swatch__checkbox, .checkbox__input",MODAL_SEL:"#filterModal",MODAL_VIEW_BTN:"#filterModal .btn.btn-primary",MODAL_CLEAR_BTN:"#filterModal .btn.btn-secondary",$ACCORDION:".accordion",$ACCORDION_CONTENT:".accordion__content",ACCORDION_COLLAPSED:"accordion_collapsed",getPlural(e,t,i){return 1===e?t:i},isProductPage(){return 0<$(Wick.PLPFiltersMobile.PRODUCTS_LIST).length},getMobileCounts(){if(Wick.PLPFiltersMobile.isProductPage()){const e=Wick.ProductCounter&&Wick.ProductCounter.count||0;return{mode:"products",total:e}}const e=Wick.PLPFilters.totalApplied();return{mode:"filters",total:e}},updateMobileFilterInfo(){var e,t,i=$('.mobile-nav__item[data-target="#filterModal"] .mobile-nav__info');i.length&&({mode:t,total:e}=Wick.PLPFiltersMobile.getMobileCounts(),"products"!==t)&&(0<e?(t=Wick.PLPFiltersMobile.getPlural(e,"filter","filters"),i.text(e+` ${t} applied`)):i.text("No filters applied"))},updateViewResultsButton(){var e,t=Wick.PLPFiltersMobile.getMobileCounts()["mode"];"products"!==t&&(t=$(Wick.PLPFiltersMobile.MODAL_VIEW_BTN)).length&&(e=Wick.PLPFiltersMobile.getMobileCounts()["total"],t.text(0<e?`View results (${e})`:"View results"))},hideAccordions(){$(Wick.PLPFiltersMobile.$ACCORDION).addClass(Wick.PLPFiltersMobile.ACCORDION_COLLAPSED),$(Wick.PLPFiltersMobile.$ACCORDION_CONTENT).hide()},init(){$(document).off("change.plpFiltersMobile",Wick.PLPFiltersMobile.INPUTS).on("change.plpFiltersMobile",Wick.PLPFiltersMobile.INPUTS,function(){var e=$(this),t=e.attr("name");t&&Wick.PLPUtils.syncTwinInputsByName(t,e.prop("checked"),e)}),$(document).off("shown.bs.modal.plpFiltersMobile",Wick.PLPFiltersMobile.MODAL_SEL).on("shown.bs.modal.plpFiltersMobile",Wick.PLPFiltersMobile.MODAL_SEL,function(){Wick.PLPFilters.setDOMFromState($(this),Wick.PLPFilters.appliedState)}),$(document).off("hide.bs.modal.plpFiltersMobile",Wick.PLPFiltersMobile.MODAL_SEL).on("hide.bs.modal.plpFiltersMobile",Wick.PLPFiltersMobile.MODAL_SEL,function(){Wick.PLPFiltersMobile.hideAccordions()}),$(document).off("click.plpFiltersMobile",Wick.PLPFiltersMobile.MODAL_VIEW_BTN).on("click.plpFiltersMobile",Wick.PLPFiltersMobile.MODAL_VIEW_BTN,function(e){$(this).data("is-plp-srp")?(e.stopImmediatePropagation(),e.preventDefault()):(e.preventDefault(),e=$(Wick.PLPFiltersMobile.ROOT_WRAPPER).add($(Wick.PLPFiltersMobile.MODAL_SEL)),Wick.PLPFilters.applyFromScopes(e,!0))}),$(document).off("click.plpFiltersMobile",Wick.PLPFiltersMobile.MODAL_CLEAR_BTN).on("click.plpFiltersMobile",Wick.PLPFiltersMobile.MODAL_CLEAR_BTN,function(e){$(this).data("is-plp-srp")?(e.stopImmediatePropagation(),e.preventDefault()):(e.preventDefault(),Wick.PLPFilters.appliedState={},Wick.PLPFilters.writeStateToURL(Wick.PLPFilters.appliedState,!1),$(document).find(Wick.PLPFiltersMobile.INPUTS+":checked").prop("checked",!1),Wick.PLPFilters.updateSelectedUI($(Wick.PLPFiltersMobile.ROOT_WRAPPER)))}),$(document).off("productCounter:change.plpFiltersMobile").on("productCounter:change.plpFiltersMobile",function(){Wick.PLPFiltersMobile.updateMobileFilterInfo(),Wick.PLPFiltersMobile.updateViewResultsButton()}),Wick.PLPFiltersMobile.updateMobileFilterInfo(),Wick.PLPFiltersMobile.updateViewResultsButton()}},(Wick=window.Wick||{}).PLPFilters={ROOT_WRAPPER:".page-KitchenPLPPage, .products-list-page:not(.page-responsiveThematicProductListPage)",ROOT:".plp-filters",GROUP:".plp-filters__group",APPLY_BTN:".plp-filters__apply",INPUTS:".filter-card__checkbox, .swatch__checkbox, .checkbox__input",appliedState:{},init(){Wick.PLPFiltersPanel.init(),Wick.PLPFiltersMobile.init();var e=$(Wick.PLPFilters.ROOT),t=$(Wick.PLPFilters.ROOT_WRAPPER);e.length&&(Wick.PLPFilters.appliedState=Wick.PLPFilters.readStateFromURL(t),Wick.PLPFilters.setDOMFromState(t,Wick.PLPFilters.appliedState),Wick.PLPChips.bindChipActions(t),$(document).on("click",Wick.PLPFilters.APPLY_BTN,Wick.PLPFilters.applyFilters),Wick.PLPFilters.updateSelectedUI(t),Wick.PLPFilters.handlePageShow())},handlePageShow(){window.addEventListener("pageshow",function(){var e=$(Wick.PLPFilters.ROOT_WRAPPER);Wick.PLPFilters.appliedState=Wick.PLPFilters.readStateFromURL(e),Wick.PLPFilters.setDOMFromState(e,Wick.PLPFilters.appliedState)})},readStateFromURL(e){var t=new URL(window.location.href).searchParams;const i={};e=Wick.PLPUtils.getGroupsMeta(e,Wick.PLPFilters.GROUP);if(e.length){const o={};e.forEach(e=>{o[e.domName]=e});for(var[r,l]of t.entries()){const s=o[r];s&&(r=l.split(",").map(e=>e.trim()).filter(Boolean)).length&&r.forEach(e=>{var t=s.group.find(Wick.PLPFilters.INPUTS).filter(function(){return $(this).val()===e}).first();t.length&&(t=t.val(),i[s.domName]||(i[s.domName]=new Set),i[s.domName].add(t))})}}return i},writeStateToURL(i){var e,t,r=new URL(window.location.href),l=Wick.PLPUtils.getGroupsMeta($(Wick.PLPFilters.ROOT_WRAPPER),Wick.PLPFilters.GROUP),o=new Set(l.map(e=>e.domName));const s=[];for([e,t]of r.searchParams.entries())o.has(e)||s.push(encodeURIComponent(e)+"="+encodeURIComponent(t));l.forEach(e=>{var t=i[e.domName];t&&t.size&&(e=encodeURIComponent(e.domName),t=Array.from(t).map(e=>encodeURIComponent(e)).join(","),s.push(e+"="+t))}),r.search=s.join("&"),window.location.href=r.origin+r.pathname+r.search},setDOMFromState(t,e){t.find(Wick.PLPFilters.INPUTS).prop("checked",!1),Object.keys(e).forEach(r=>{e[r].forEach(e=>{const i=e;e=t.find(Wick.PLPFilters.INPUTS).filter(function(){var e=$(this),t=e.val()===i,e=e.closest(Wick.PLPFilters.GROUP),e=!e.length||e.attr("data-filter")===r;return t&&e}).first();e.length&&e.prop("checked",!0)})})},collectStateFromDOM(e){const r={};return e.find(Wick.PLPFilters.INPUTS).filter(":checked").each((e,t)=>{var t=$(t),i=t.closest(Wick.PLPFilters.GROUP).attr("data-filter")||"";i&&(t=(t.val()||"").trim())&&(r[i]||(r[i]=new Set),r[i].add(t))}),r},applyFromScopes(e,t){Wick.PLPFilters.appliedState=Wick.PLPFilters.collectStateFromDOM(e),Wick.PLPFilters.writeStateToURL(Wick.PLPFilters.appliedState,!!t)},applyFilters(e){e.preventDefault();e=$(Wick.PLPFilters.ROOT_WRAPPER).add($(Wick.PLPFiltersMobile.MODAL_SEL));Wick.PLPFilters.applyFromScopes(e,!0)},updateSelectedUI(e){Wick.PLPChips.renderGroupCounters(e),Wick.PLPChips.renderChips(e),Wick.PLPFiltersMobile.updateMobileFilterInfo()},totalApplied(){return Object.values(Wick.PLPFilters.appliedState).reduce((e,t)=>e+t.size,0)},removeFromApplied(e,t){var i=Wick.PLPFilters.appliedState[e];i&&(i.delete(t),0===i.size)&&delete Wick.PLPFilters.appliedState[e]},exportState(){const t={};return Object.keys(Wick.PLPFilters.appliedState).forEach(e=>{t[e]=Array.from(Wick.PLPFilters.appliedState[e])}),t}},Wick.Overlay=function(){if($("body").hasClass("page-responsiveThematicProductListPage")){const t=$(".filter-results_mobile");$(document).on("click","#open-overlay",function(e){e.preventDefault(),$("body").addClass("is-filters-visible"),t.addClass("show")}),$(document).on("click","#close-overlay, .filter-results__btn-close",function(e){e.preventDefault(),t.hasClass("show")&&($("body").removeClass("is-filters-visible"),t.removeClass("show"))}),$(document).on("click",'.filter-results_desktop .filter__item input[type="checkbox"]',function(){$(this).closest("form").submit()})}}(),$(function(){Wick.PLPFilters.init()}),(Wick=window.Wick||{}).Sort={ROOT:".page-KitchenPLPPage, .products-list-page:not(.page-responsiveThematicProductListPage)",WRAP:".sort",DROPDOWN:".sort-dd",OPTION:".sort-opt",INFO:".js-sort-info",CHEVRON:".sort__chevron",TRIGGER_MOBILE:".sort--mobile",TRIGGER_DESKTOP_BTN:".sort--desktop .sort-button",MAP_VALUE_TO_LABEL:{relevance:"Relevance",priceLow:"Price (lowest first)",priceHigh:"Price (highest first)"},init:function(){var e=$(Wick.Sort.ROOT);e.length&&(e.on("click",Wick.Sort.TRIGGER_MOBILE,e=>{$(e.target).closest(Wick.Sort.DROPDOWN).length||(e.preventDefault(),Wick.Sort.toggle($(e.currentTarget)))}),e.on("click",Wick.Sort.TRIGGER_DESKTOP_BTN,e=>{e.preventDefault(),Wick.Sort.toggle($(e.currentTarget).closest(Wick.Sort.WRAP))}),e.on("keydown",Wick.Sort.TRIGGER_MOBILE+", "+Wick.Sort.TRIGGER_DESKTOP_BTN,e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),Wick.Sort.toggle($(e.currentTarget).closest(Wick.Sort.WRAP)))}),e.on("click",Wick.Sort.OPTION,e=>{e.preventDefault(),e.stopPropagation();var e=$(e.currentTarget),t=e.data("value");e.data("is-plp-srp")||Wick.Sort.updateSortParamInURL(t)}),$(document).on("click",e=>{var t=$(Wick.Sort.WRAP+".is-open");t.length&&!t.is(e.target)&&0===t.has(e.target).length&&Wick.Sort.closeAll()}),$(document).on("keydown",e=>{"Escape"===e.key&&Wick.Sort.closeAll()}),Wick.Sort.bootstrap())},updateSortParamInURL:function(e){var t=new URL(window.location.href),i=t.searchParams;"relevance"===e?i.delete("sortBy"):i.set("sortBy",e),t.search=i.toString(),window.location.href=t.toString()},toggle:function(e){var t=e.hasClass("is-open");Wick.Sort.closeAll(),t||(e.addClass("is-open"),e.find(Wick.Sort.DROPDOWN).removeAttr("hidden"),Wick.Sort.setExpanded(e,!0),window.Wick&&Wick.PLPFilters&&"function"==typeof Wick.PLPFilters.closeAll&&Wick.PLPFilters.closeAll())},close:function(e){e.removeClass("is-open"),e.find(Wick.Sort.DROPDOWN).attr("hidden",!0),Wick.Sort.setExpanded(e,!1)},closeAll:function(){var e=$(Wick.Sort.WRAP);e.removeClass("is-open"),e.find(Wick.Sort.DROPDOWN).attr("hidden",!0),e.each((e,t)=>Wick.Sort.setExpanded($(t),!1))},bootstrap:function(){const i=new URLSearchParams(window.location.search).get("sortBy")||"relevance";var e=Wick.Sort.valueToLabel(i),t=($(Wick.Sort.WRAP).each((e,t)=>{t=$(t);t.find(Wick.Sort.OPTION).first().data("is-plp-srp")||t.find(Wick.Sort.OPTION).removeClass("is-active").filter(`[data-value="${i}"]`).addClass("is-active")}),$(Wick.Sort.OPTION).first().data("is-plp-srp"));t||($(document).trigger("sort:change",{value:i,label:e}),$(Wick.Sort.INFO).text(e))},setExpanded:function(e,t){e=e.is(".sort--mobile")?e:e.find(".sort-button").first();e.length&&e.attr("aria-expanded",t?"true":"false")},valueToLabel:function(e){return Wick.Sort.MAP_VALUE_TO_LABEL[e]||"Relevance"},labelToValue:function(e){var t,i;for([t,i]of Object.entries(Wick.Sort.MAP_VALUE_TO_LABEL))if(i.toLowerCase()===e.toString().toLowerCase())return t;return"relevance"}},$(function(){Wick.Sort.init()}),function(){const i={$filters:$(".plp-filters"),$filterBar:$(".plp-filters__bar-mobile"),$filterModal:$(".filter-modal"),$offerBanner:$(".offer-banner"),offerBannerCloseIcon:".icon.notification__close"},r={plpFiltersStuck:"plp-filters__bar-stuck"};function l(){return"down-sm"===Wick.Responsive.getCurrentBreakpoint()}function o(){return i.$offerBanner.length&&i.$offerBanner.outerHeight(!0)||0}function e(){var e;i.$filters.length&&(l()?(e=o(),i.$filters.css("top",0<e?e+"px":"")):i.$filters.css("top",""))}function t(){var e,t;l()?i.$filters.length&&i.$filterBar.length&&(e=i.$filters.get(0))&&(e=e.getBoundingClientRect(),t=o(),e.top<=t?i.$filterBar.addClass(r.plpFiltersStuck):i.$filterBar.removeClass(r.plpFiltersStuck)):i.$filterBar.removeClass(r.plpFiltersStuck)}function s(){$(document).on("click",i.offerBannerCloseIcon,function(){i.$filters.length&&i.$filters.css("top","0px")})}$(document).ready(function(){e(),t(),$(window).on("scroll",_.debounce(t,50)),$(window).on("resize",_.debounce(function(){"down-sm"!==Wick.Responsive.getCurrentBreakpoint()&&i.$filterModal.modal("hide"),e(),t()},100)),s()})}(),function(){const t={$sidebar:$(".filter-results_desktop"),$heading:$(".filter-results__heading"),$offerBanner:$(".offer-banner"),$offerBannerIndent:40,offerBannerCloseIcon:".icon.notification__close, .icon.notification__close_white, .notification__close"};function e(){var e;t.$sidebar.length&&("down-sm"===Wick.Responsive.getCurrentBreakpoint()?(t.$sidebar.css("top",""),t.$heading.css("top","")):(e=t.$offerBanner.length?t.$offerBanner.outerHeight(!0)+t.$offerBannerIndent||0:t.$offerBannerIndent,t.$sidebar.css("top",e+"px"),t.$heading.length&&t.$heading.css("top",e+"px")))}$(document).ready(function(){formatNumberInElement(".product-count"),e(),$(window).on("resize",_.debounce(e,100)),$(document).on("click",t.offerBannerCloseIcon,function(){setTimeout(e,0)})})}();
9
+ `),r.append(e)))}},bindChipActions(e){e.on("click",".pf-chip",e=>{e.preventDefault();var e=$(e.target).closest(".pf-chip"),t=e.data("group"),e=e.data("value");Wick.PLPFilters.removeFromApplied(t,e),Wick.PLPFilters.writeStateToURL(Wick.PLPFilters.appliedState,!1)}),e.on("click",".plp-selected__clear-all",e=>{e.preventDefault(),Wick.PLPFilters.writeStateToURL({},!1)})}},(Wick=window.Wick||{}).PLPFiltersPanel={ROOT:".plp-filters",BAR:".plp-filters__bar",GROUP:".plp-filters__group",TOGGLE:".plp-filters__toggle",PANEL:".plp-filters__panel",init(){$(document).on("click",Wick.PLPFiltersPanel.TOGGLE,Wick.PLPFiltersPanel.togglePanel),$(document).on("click",e=>{var t=$(Wick.PLPFiltersPanel.ROOT);t.is(e.target)||0!==t.has(e.target).length||Wick.PLPFiltersPanel.closeAll()}),$(document).on("keydown",e=>{"Escape"===e.key&&Wick.PLPFiltersPanel.closeAll()}),$(window).on("resize",_.debounce(()=>{var e=$(Wick.PLPFiltersPanel.GROUP+".is-open").first();e.length&&(e=e.find(Wick.PLPFiltersPanel.TOGGLE).first(),Wick.PLPFiltersPanel.layoutPanel(e))},120))},togglePanel(e){e.preventDefault();const t=$(this);var e=t.closest(Wick.PLPFiltersPanel.GROUP),i=e.children(Wick.PLPFiltersPanel.PANEL).first(),r=!e.hasClass("is-open");Wick.PLPFiltersPanel.closeAll(),r&&(e.addClass("is-open"),t.attr("aria-expanded","true"),i.attr("aria-hidden","false"),requestAnimationFrame(()=>Wick.PLPFiltersPanel.layoutPanel(t)))},closeAll(){$(Wick.PLPFiltersPanel.GROUP).removeClass("is-open"),$(Wick.PLPFiltersPanel.TOGGLE).attr("aria-expanded","false"),$(Wick.PLPFiltersPanel.PANEL).attr("aria-hidden","true").removeClass("plp-filters__panel--wide plp-filters__panel--auto").css({left:"",right:""})},layoutPanel(t){var e=$(Wick.PLPFiltersPanel.ROOT),t=t.closest(Wick.PLPFiltersPanel.GROUP),i=t.children(Wick.PLPFiltersPanel.PANEL).first();let r=t.closest(Wick.PLPFiltersPanel.BAR);if((r=r.length?r:e.find(".plp-filters__bar-desktop:visible").first()||e.find(".plp-filters__bar-desktop").first()||e.find(Wick.PLPFiltersPanel.BAR).filter(":visible").first()||e.find(Wick.PLPFiltersPanel.BAR).first()).length&&i.length){i.removeClass("plp-filters__panel--wide plp-filters__panel--auto").css({left:"",right:"",width:""});var e=r.offset(),t=t.offset(),l=Math.round(r.outerWidth()),t=Math.round(t.left-e.left),e=Wick.PLPUtils.getPanelType(i),o=Math.max(1,Wick.PLPUtils.countItems(i));if("cards"===e){Wick.PLPUtils.setCardsColumns(i,Math.min(o,4));let e=t;o=i.outerWidth();(e=e+o>l?l-o:e)<0&&(e=0),void i.css({left:e-t})}else if("swatches"===e){o=i.outerWidth();let e=t;e+o>l&&(e=l-o)<0&&(e=0),void i.css({left:e-t})}else i.css({right:0})}}},(Wick=window.Wick||{}).PLPFiltersMobile={ROOT_WRAPPER:".page-KitchenPLPPage, .products-list-page:not(.page-responsiveThematicProductListPage)",PRODUCTS_LIST:".products-list-page",INPUTS:".filter-card__checkbox, .swatch__checkbox, .checkbox__input",MODAL_SEL:"#filterModal",MODAL_VIEW_BTN:"#filterModal .btn.btn-primary",MODAL_CLEAR_BTN:"#filterModal .btn.btn-secondary",$ACCORDION:".accordion",$ACCORDION_CONTENT:".accordion__content",ACCORDION_COLLAPSED:"accordion_collapsed",getPlural(e,t,i){return 1===e?t:i},isProductPage(){return 0<$(Wick.PLPFiltersMobile.PRODUCTS_LIST).length},getMobileCounts(){if(Wick.PLPFiltersMobile.isProductPage()){const e=Wick.ProductCounter&&Wick.ProductCounter.count||0;return{mode:"products",total:e}}const e=Wick.PLPFilters.totalApplied();return{mode:"filters",total:e}},updateMobileFilterInfo(){var e,t,i=$('.mobile-nav__item[data-target="#filterModal"] .mobile-nav__info');i.length&&({mode:t,total:e}=Wick.PLPFiltersMobile.getMobileCounts(),"products"!==t)&&(0<e?(t=Wick.PLPFiltersMobile.getPlural(e,"filter","filters"),i.text(e+` ${t} applied`)):i.text("No filters applied"))},updateViewResultsButton(){var e,t=Wick.PLPFiltersMobile.getMobileCounts()["mode"];"products"!==t&&(t=$(Wick.PLPFiltersMobile.MODAL_VIEW_BTN)).length&&(e=Wick.PLPFiltersMobile.getMobileCounts()["total"],t.text(0<e?`View results (${e})`:"View results"))},init(){$(document).off("change.plpFiltersMobile",Wick.PLPFiltersMobile.INPUTS).on("change.plpFiltersMobile",Wick.PLPFiltersMobile.INPUTS,function(){var e=$(this),t=e.attr("name");t&&Wick.PLPUtils.syncTwinInputsByName(t,e.prop("checked"),e)}),$(document).off("shown.bs.modal.plpFiltersMobile",Wick.PLPFiltersMobile.MODAL_SEL).on("shown.bs.modal.plpFiltersMobile",Wick.PLPFiltersMobile.MODAL_SEL,function(){Wick.PLPFilters.setDOMFromState($(this),Wick.PLPFilters.draftState)}),$(document).off("hide.bs.modal.plpFiltersMobile",Wick.PLPFiltersMobile.MODAL_SEL).on("hide.bs.modal.plpFiltersMobile",Wick.PLPFiltersMobile.MODAL_SEL,function(){var e=$(Wick.PLPFiltersMobile.ROOT_WRAPPER).add($(this));Wick.PLPFilters.draftState=Wick.PLPFilters.collectStateFromDOM(e)}),$(document).off("click.plpFiltersMobile",Wick.PLPFiltersMobile.MODAL_VIEW_BTN).on("click.plpFiltersMobile",Wick.PLPFiltersMobile.MODAL_VIEW_BTN,function(e){$(this).data("is-plp-srp")?(e.stopImmediatePropagation(),e.preventDefault()):(e.preventDefault(),e=$(Wick.PLPFiltersMobile.ROOT_WRAPPER).add($(Wick.PLPFiltersMobile.MODAL_SEL)),Wick.PLPFilters.applyFromScopes(e,!0))}),$(document).off("click.plpFiltersMobile",Wick.PLPFiltersMobile.MODAL_CLEAR_BTN).on("click.plpFiltersMobile",Wick.PLPFiltersMobile.MODAL_CLEAR_BTN,function(e){$(this).data("is-plp-srp")?(e.stopImmediatePropagation(),e.preventDefault()):(e.preventDefault(),Wick.PLPFilters.draftState={},Wick.PLPFilters.appliedState={},Wick.PLPFilters.writeStateToURL(Wick.PLPFilters.appliedState,!1),$(document).find(Wick.PLPFiltersMobile.INPUTS+":checked").prop("checked",!1),Wick.PLPFilters.updateSelectedUI($(Wick.PLPFiltersMobile.ROOT_WRAPPER)))}),$(document).off("productCounter:change.plpFiltersMobile").on("productCounter:change.plpFiltersMobile",function(){Wick.PLPFiltersMobile.updateMobileFilterInfo(),Wick.PLPFiltersMobile.updateViewResultsButton()}),Wick.PLPFiltersMobile.updateMobileFilterInfo(),Wick.PLPFiltersMobile.updateViewResultsButton()}},(Wick=window.Wick||{}).PLPFilters={ROOT_WRAPPER:".page-KitchenPLPPage, .products-list-page:not(.page-responsiveThematicProductListPage)",ROOT:".plp-filters",GROUP:".plp-filters__group",APPLY_BTN:".plp-filters__apply",draftState:null,INPUTS:".filter-card__checkbox, .swatch__checkbox, .checkbox__input",appliedState:{},init(){Wick.PLPFiltersPanel.init(),Wick.PLPFiltersMobile.init();var e=$(Wick.PLPFilters.ROOT),t=$(Wick.PLPFilters.ROOT_WRAPPER);e.length&&(Wick.PLPFilters.appliedState=Wick.PLPFilters.readStateFromURL(t),Wick.PLPFilters.draftState=Wick.PLPUtils.cloneState(Wick.PLPFilters.appliedState),Wick.PLPFilters.setDOMFromState(t,Wick.PLPFilters.appliedState),Wick.PLPChips.bindChipActions(t),$(document).on("click",Wick.PLPFilters.APPLY_BTN,Wick.PLPFilters.applyFilters),Wick.PLPFilters.updateSelectedUI(t),Wick.PLPFilters.handlePageShow())},handlePageShow(){window.addEventListener("pageshow",function(){var e=$(Wick.PLPFilters.ROOT_WRAPPER).add($(Wick.PLPFiltersMobile.MODAL_SEL));Wick.PLPFilters.appliedState=Wick.PLPFilters.readStateFromURL(e),Wick.PLPFilters.draftState=Wick.PLPFilters.appliedState,Wick.PLPFilters.setDOMFromState(e,Wick.PLPFilters.appliedState)})},readStateFromURL(e){var t=new URL(window.location.href).searchParams;const i={};e=Wick.PLPUtils.getGroupsMeta(e,Wick.PLPFilters.GROUP);if(e.length){const o={};e.forEach(e=>{o[e.domName]=e});for(var[r,l]of t.entries()){const s=o[r];s&&(r=l.split(",").map(e=>e.trim()).filter(Boolean)).length&&r.forEach(e=>{var t=s.group.find(Wick.PLPFilters.INPUTS).filter(function(){return $(this).val()===e}).first();t.length&&(t=t.val(),i[s.domName]||(i[s.domName]=new Set),i[s.domName].add(t))})}}return i},writeStateToURL(i){var e,t,r=new URL(window.location.href),l=Wick.PLPUtils.getGroupsMeta($(Wick.PLPFilters.ROOT_WRAPPER),Wick.PLPFilters.GROUP),o=new Set(l.map(e=>e.domName));const s=[];for([e,t]of r.searchParams.entries())o.has(e)||s.push(encodeURIComponent(e)+"="+encodeURIComponent(t));l.forEach(e=>{var t=i[e.domName];t&&t.size&&(e=encodeURIComponent(e.domName),t=Array.from(t).map(e=>encodeURIComponent(e)).join(","),s.push(e+"="+t))}),r.search=s.join("&"),window.location.href=r.origin+r.pathname+r.search},setDOMFromState(t,e){t.find(Wick.PLPFilters.INPUTS).prop("checked",!1),Object.keys(e).forEach(r=>{e[r].forEach(e=>{const i=e;e=t.find(Wick.PLPFilters.INPUTS).filter(function(){var e=$(this),t=e.val()===i,e=e.closest(Wick.PLPFilters.GROUP),e=!e.length||e.attr("data-filter")===r;return t&&e}).first();e.length&&e.prop("checked",!0)})})},collectStateFromDOM(e){const r={};return e.find(Wick.PLPFilters.INPUTS).filter(":checked").each((e,t)=>{var t=$(t),i=t.closest(Wick.PLPFilters.GROUP).attr("data-filter")||"";i&&(t=(t.val()||"").trim())&&(r[i]||(r[i]=new Set),r[i].add(t))}),r},applyFromScopes(e,t){e=Wick.PLPFilters.collectStateFromDOM(e);Wick.PLPFilters.draftState=e,Wick.PLPFilters.appliedState=e,Wick.PLPFilters.writeStateToURL(Wick.PLPFilters.appliedState,!!t)},applyFilters(e){e.preventDefault();e=$(Wick.PLPFilters.ROOT_WRAPPER).add($(Wick.PLPFiltersMobile.MODAL_SEL));Wick.PLPFilters.applyFromScopes(e,!0)},updateSelectedUI(e){Wick.PLPChips.renderGroupCounters(e),Wick.PLPChips.renderChips(e),Wick.PLPFiltersMobile.updateMobileFilterInfo()},totalApplied(){return Object.values(Wick.PLPFilters.appliedState).reduce((e,t)=>e+t.size,0)},removeFromApplied(e,t){var i=Wick.PLPFilters.appliedState[e];i&&(i.delete(t),0===i.size)&&delete Wick.PLPFilters.appliedState[e]},exportState(){const t={};return Object.keys(Wick.PLPFilters.appliedState).forEach(e=>{t[e]=Array.from(Wick.PLPFilters.appliedState[e])}),t}},Wick.Overlay=function(){if($("body").hasClass("page-responsiveThematicProductListPage")){const t=$(".filter-results_mobile");$(document).on("click","#open-overlay",function(e){e.preventDefault(),$("body").addClass("is-filters-visible"),t.addClass("show")}),$(document).on("click","#close-overlay, .filter-results__btn-close",function(e){e.preventDefault(),t.hasClass("show")&&($("body").removeClass("is-filters-visible"),t.removeClass("show"))}),$(document).on("click",'.filter-results_desktop .filter__item input[type="checkbox"]',function(){$(this).closest("form").submit()})}}(),$(function(){Wick.PLPFilters.init()}),(Wick=window.Wick||{}).Sort={ROOT:".page-KitchenPLPPage, .products-list-page:not(.page-responsiveThematicProductListPage)",WRAP:".sort",DROPDOWN:".sort-dd",OPTION:".sort-opt",INFO:".js-sort-info",CHEVRON:".sort__chevron",TRIGGER_MOBILE:".sort--mobile",TRIGGER_DESKTOP_BTN:".sort--desktop .sort-button",MAP_VALUE_TO_LABEL:{relevance:"Relevance",priceLow:"Price (lowest first)",priceHigh:"Price (highest first)"},init:function(){var e=$(Wick.Sort.ROOT);e.length&&(e.on("click",Wick.Sort.TRIGGER_MOBILE,e=>{$(e.target).closest(Wick.Sort.DROPDOWN).length||(e.preventDefault(),Wick.Sort.toggle($(e.currentTarget)))}),e.on("click",Wick.Sort.TRIGGER_DESKTOP_BTN,e=>{e.preventDefault(),Wick.Sort.toggle($(e.currentTarget).closest(Wick.Sort.WRAP))}),e.on("keydown",Wick.Sort.TRIGGER_MOBILE+", "+Wick.Sort.TRIGGER_DESKTOP_BTN,e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),Wick.Sort.toggle($(e.currentTarget).closest(Wick.Sort.WRAP)))}),e.on("click",Wick.Sort.OPTION,e=>{e.preventDefault(),e.stopPropagation();var e=$(e.currentTarget),t=e.data("value");e.data("is-plp-srp")||Wick.Sort.updateSortParamInURL(t)}),$(document).on("click",e=>{var t=$(Wick.Sort.WRAP+".is-open");t.length&&!t.is(e.target)&&0===t.has(e.target).length&&Wick.Sort.closeAll()}),$(document).on("keydown",e=>{"Escape"===e.key&&Wick.Sort.closeAll()}),Wick.Sort.bootstrap())},updateSortParamInURL:function(e){var t=new URL(window.location.href),i=t.searchParams;"relevance"===e?i.delete("sortBy"):i.set("sortBy",e),t.search=i.toString(),window.location.href=t.toString()},toggle:function(e){var t=e.hasClass("is-open");Wick.Sort.closeAll(),t||(e.addClass("is-open"),e.find(Wick.Sort.DROPDOWN).removeAttr("hidden"),Wick.Sort.setExpanded(e,!0),window.Wick&&Wick.PLPFilters&&"function"==typeof Wick.PLPFilters.closeAll&&Wick.PLPFilters.closeAll())},close:function(e){e.removeClass("is-open"),e.find(Wick.Sort.DROPDOWN).attr("hidden",!0),Wick.Sort.setExpanded(e,!1)},closeAll:function(){var e=$(Wick.Sort.WRAP);e.removeClass("is-open"),e.find(Wick.Sort.DROPDOWN).attr("hidden",!0),e.each((e,t)=>Wick.Sort.setExpanded($(t),!1))},bootstrap:function(){const i=new URLSearchParams(window.location.search).get("sortBy")||"relevance";var e=Wick.Sort.valueToLabel(i),t=($(Wick.Sort.WRAP).each((e,t)=>{t=$(t);t.find(Wick.Sort.OPTION).first().data("is-plp-srp")||t.find(Wick.Sort.OPTION).removeClass("is-active").filter(`[data-value="${i}"]`).addClass("is-active")}),$(Wick.Sort.OPTION).first().data("is-plp-srp"));t||($(document).trigger("sort:change",{value:i,label:e}),$(Wick.Sort.INFO).text(e))},setExpanded:function(e,t){e=e.is(".sort--mobile")?e:e.find(".sort-button").first();e.length&&e.attr("aria-expanded",t?"true":"false")},valueToLabel:function(e){return Wick.Sort.MAP_VALUE_TO_LABEL[e]||"Relevance"},labelToValue:function(e){var t,i;for([t,i]of Object.entries(Wick.Sort.MAP_VALUE_TO_LABEL))if(i.toLowerCase()===e.toString().toLowerCase())return t;return"relevance"}},$(function(){Wick.Sort.init()}),function(){const i={$filters:$(".plp-filters"),$filterBar:$(".plp-filters__bar-mobile"),$filterModal:$(".filter-modal"),$offerBanner:$(".offer-banner"),offerBannerCloseIcon:".icon.notification__close"},r={plpFiltersStuck:"plp-filters__bar-stuck"};function l(){return"down-sm"===Wick.Responsive.getCurrentBreakpoint()}function o(){return i.$offerBanner.length&&i.$offerBanner.outerHeight(!0)||0}function e(){var e;i.$filters.length&&(l()?(e=o(),i.$filters.css("top",0<e?e+"px":"")):i.$filters.css("top",""))}function t(){var e,t;l()?i.$filters.length&&i.$filterBar.length&&(e=i.$filters.get(0))&&(e=e.getBoundingClientRect(),t=o(),e.top<=t?i.$filterBar.addClass(r.plpFiltersStuck):i.$filterBar.removeClass(r.plpFiltersStuck)):i.$filterBar.removeClass(r.plpFiltersStuck)}function s(){$(document).on("click",i.offerBannerCloseIcon,function(){i.$filters.length&&i.$filters.css("top","0px")})}$(document).ready(function(){e(),t(),$(window).on("scroll",_.debounce(t,50)),$(window).on("resize",_.debounce(function(){"down-sm"!==Wick.Responsive.getCurrentBreakpoint()&&i.$filterModal.modal("hide"),e(),t()},100)),s()})}(),function(){const t={$sidebar:$(".filter-results_desktop"),$heading:$(".filter-results__heading"),$offerBanner:$(".offer-banner"),$offerBannerIndent:40,offerBannerCloseIcon:".icon.notification__close, .icon.notification__close_white, .notification__close"};function e(){var e;t.$sidebar.length&&("down-sm"===Wick.Responsive.getCurrentBreakpoint()?(t.$sidebar.css("top",""),t.$heading.css("top","")):(e=t.$offerBanner.length?t.$offerBanner.outerHeight(!0)+t.$offerBannerIndent||0:t.$offerBannerIndent,t.$sidebar.css("top",e+"px"),t.$heading.length&&t.$heading.css("top",e+"px")))}$(document).ready(function(){formatNumberInElement(".product-count"),e(),$(window).on("resize",_.debounce(e,100)),$(document).on("click",t.offerBannerCloseIcon,function(){setTimeout(e,0)})})}();