1
+ < script >
2
+ document.querySelector('#clerk-search').dataset.query = decodeURI(window.location.search.split('?w=')[1].replace(/\+/g, ' '))
3
+
4
+ Clerk('content', '.clerk_m')
5
+
6
+
7
+ document.querySelector('#clerk-show-facets').addEventListener('click', function(){
8
+ target = document . querySelector ( '#clerk-search-filters' ) ;
9
+ if ( target . style . display === 'none' ) {
10
+ target . style . display = 'block' ;
11
+ } else {
12
+ target . style . display = 'none' ;
13
+ }
14
+
15
+ } )
16
+
17
+
18
+ //Sorting For Facets
19
+ var mastSizes = [ "XXS" , "XS" , "S" , "M" , "L" , "XL" , "XXL" , "XXXL" , "XXXXL" , "4XL" , "5XL" , "One size" ] ;
20
+ var reA = / [ ^ a - z A - Z ] / g;
21
+ var reN = / [ ^ 0 - 9 ] / g;
22
+ function localeSort ( s ) {
23
+ Array . prototype . slice . call ( s ) . sort ( function sort ( ea , eb ) {
24
+ var aA = ea . textContent . replace ( reA , "" ) ;
25
+ var bA = eb . textContent . replace ( reA , "" ) ;
26
+ if ( aA === bA ) {
27
+ var aN = parseInt ( ea . textContent . replace ( reN , "" ) , 10 ) ;
28
+ var bN = parseInt ( eb . textContent . replace ( reN , "" ) , 10 ) ;
29
+ return aN === bN ? 0 : aN > bN ? 1 : - 1 ;
30
+ } else {
31
+ return aA > bA ? 1 : - 1 ;
32
+ }
33
+ } ) . forEach ( function ( div ) {
34
+ div . parentElement . appendChild ( div ) ;
35
+ } ) ;
36
+ }
37
+
38
+
39
+
40
+ document . querySelector ( 'select.clerk-result-sort' ) . addEventListener ( 'change' , function ( ) {
41
+ selection = this . value ;
42
+ if ( selection == 'relevance' ) {
43
+ Clerk ( 'content' , '#clerk-search' , 'param' , {
44
+ orderby : null ,
45
+ order : null
46
+ } ) ;
47
+ }
48
+ if ( selection == 'upprice' ) {
49
+ Clerk ( 'content' , '#clerk-search' , 'param' , {
50
+ orderby : 'price' ,
51
+ order : 'asc'
52
+ } ) ;
53
+ }
54
+ if ( selection == 'downprice' ) {
55
+ Clerk ( 'content' , '#clerk-search' , 'param' , {
56
+ orderby : 'price' ,
57
+ order : 'desc'
58
+ } ) ;
59
+ }
60
+ if ( selection == 'upname' ) {
61
+ Clerk ( 'content' , '#clerk-search' , 'param' , {
62
+ orderby : 'name' ,
63
+ order : 'asc'
64
+ } ) ;
65
+ }
66
+ if ( selection == 'downname' ) {
67
+ Clerk ( 'content' , '#clerk-search' , 'param' , {
68
+ orderby : 'name' ,
69
+ order : 'desc'
70
+ } ) ;
71
+ }
72
+ } )
73
+
74
+ if ( ! facetStateObj ) {
75
+ var facetStateObj = { } ;
76
+ }
77
+
78
+ Clerk ( 'on' , 'rendered' , '#clerk-search' , function ( data , content ) {
79
+
80
+
81
+
82
+
83
+ //console.log(content)
84
+ //remove variant duplicates
85
+ var query = document . querySelector ( '#clerk-search' ) . dataset . query . toLowerCase ( ) . split ( ' ' ) ;
86
+ var host = document . querySelector ( '#clerk-search-results' ) ;
87
+ var product_card = host . querySelectorAll ( '.clerk-design-product' ) ;
88
+ var rsp = content . product_data ;
89
+ for ( i = 0 ; i < query . length ; i ++ ) {
90
+ word = query [ i ] ;
91
+ //console.log(word)
92
+ for ( j = 0 ; j < rsp . length ; j ++ ) {
93
+ list = rsp [ j ] . variant_colors_synonyms ;
94
+ alt_imgz = rsp [ j ] . variant_images ;
95
+ //list = product_card[j].dataset.synonyms.toLowerCase().split(',');
96
+ //alt_imgz = product_card[j].dataset.vimages.split('g,');
97
+ for ( jj = 0 ; jj < list . length ; jj ++ ) {
98
+ //console.log(list[jj], ' '+word)
99
+ if ( list [ jj ] . toLowerCase ( ) . indexOf ( word ) > - 1 ) {
100
+ new_image = alt_imgz [ jj ] ;
101
+ //console.log(new_image)
102
+ product_card [ j ] . querySelector ( '.clerk-design-component-JhII4gjU' ) . style . backgroundImage = `url(${ new_image } )`
103
+ }
104
+ }
105
+
106
+ }
107
+ }
108
+
109
+ document . querySelectorAll ( '.clerk-swatch-wrap' ) . forEach ( function ( item , index ) {
110
+ var srcs = [ ] ,
111
+ temp ,
112
+ swatches = item . querySelectorAll ( '.clerk-variant-swatch' ) ;
113
+ for ( i = 0 ; i < swatches . length ; i ++ ) {
114
+ el = swatches [ i ] ;
115
+ temp = el . src ;
116
+ if ( srcs . indexOf ( temp ) < 0 ) {
117
+ srcs . push ( temp ) ;
118
+ } else {
119
+ el . remove ( ) ;
120
+ }
121
+ }
122
+ } )
123
+
124
+ //Code to replace jquery slidetoggle, bound to titles in loop.
125
+
126
+ var title_toggle = document . querySelectorAll ( '.clerk-facet-group-title' ) ;
127
+
128
+ var screenW = Math . max ( document . documentElement . clientWidth || 0 , window . innerWidth || 0 ) ;
129
+
130
+ for ( i = 0 ; i < title_toggle . length ; i ++ ) {
131
+
132
+ if ( screenW > 800 ) {
133
+ desktopTitle = title_toggle [ i ] ;
134
+ var desktopFacetSearch = ( desktopTitle . parentNode . querySelector ( '.clerk-facet-search' ) ) ? desktopTitle . parentNode . querySelector ( '.clerk-facet-search' ) : null ;
135
+ var desktopContainer = desktopTitle . parentNode . querySelector ( '.clerk-facet-group-facets' ) ;
136
+ var desktopObjkey = desktopTitle . parentNode . dataset . facetGroup ;
137
+
138
+ desktopContainer . classList . add ( 'active' ) ;
139
+ desktopContainer . style . height = 'auto' ;
140
+
141
+ if ( desktopFacetSearch ) {
142
+ desktopFacetSearch . style . display = 'inline-block' ;
143
+ }
144
+
145
+ var desktopHeight = desktopContainer . clientHeight + 'px' ;
146
+
147
+ desktopContainer . style . height = desktopHeight ;
148
+
149
+ }
150
+
151
+ title_toggle [ i ] . addEventListener ( 'click' , function ( event ) {
152
+
153
+ objkey = this . parentNode . dataset . facetGroup ;
154
+
155
+ event . preventDefault ( ) ;
156
+
157
+ //var container = document.getElementById(this.dataset.container);
158
+ var facetSearch = ( this . parentNode . querySelector ( '.clerk-facet-search' ) ) ? this . parentNode . querySelector ( '.clerk-facet-search' ) : null ;
159
+ var container = this . parentNode . querySelector ( '.clerk-facet-group-facets' ) ;
160
+
161
+ if ( ! container . classList . contains ( 'active' ) ) {
162
+
163
+ facetStateObj [ objkey ] = true ;
164
+
165
+ container . classList . add ( 'active' ) ;
166
+ container . style . height = 'auto' ;
167
+
168
+ if ( facetSearch ) {
169
+ facetSearch . style . display = 'inline-block' ;
170
+ }
171
+
172
+ var height = container . clientHeight + 'px' ;
173
+
174
+ container . style . height = '0px' ;
175
+
176
+ //document.querySelector('.clerk-facet-product_type .clerk-facet-group-facets.active').removeAttribute('style');
177
+
178
+ setTimeout ( function ( ) {
179
+ container . style . height = height ;
180
+ } , 0 ) ;
181
+
182
+
183
+
184
+ } else {
185
+
186
+ facetStateObj [ objkey ] = false ;
187
+
188
+ if ( facetSearch ) {
189
+ facetSearch . style . display = 'none' ;
190
+ }
191
+
192
+ container . style . height = '0px' ;
193
+
194
+ container . addEventListener ( 'transitionend' , function ( ) {
195
+ container . classList . remove ( 'active' ) ;
196
+ } , {
197
+ once : true
198
+ } ) ;
199
+
200
+ }
201
+
202
+ } ) ;
203
+
204
+ }
205
+
206
+
207
+
208
+ var currentUrl = window . location . href ;
209
+ if ( currentUrl . indexOf ( '!' ) == currentUrl . length - 1 ) {
210
+ document . querySelector ( '.no-stock-clerk' ) . style . display = 'block' ;
211
+ }
212
+ document . querySelectorAll ( '.main-product' ) . forEach ( function ( item , index ) {
213
+ mainProductType = item . dataset . productType ;
214
+ t = document . querySelectorAll ( `.clerk-facet-product_type [data-value="${ mainProductType } "]` ) ;
215
+ for ( j = 0 ; j < t . length ; j ++ ) {
216
+ t [ j ] . classList . remove ( 'type-tag-clerk' ) ;
217
+ t [ j ] . classList . remove ( 'indented' ) ;
218
+ t [ j ] . classList . add ( 'non-indented' ) ;
219
+ }
220
+ } )
221
+ if ( document . querySelector ( '.clerk-facet-selected.non-indented' ) ) {
222
+ document . querySelector ( '.clerk-facet-product_type .clerk-facet-group-facets' ) . prepend ( document . querySelector ( '.clerk-facet-selected.non-indented' ) )
223
+ }
224
+
225
+ if ( document . querySelectorAll ( '.clerk-facet-product_type .clerk-facet-selected' ) . length > 0 ) {
226
+ var second_cat_list = document . querySelectorAll ( '.clerk-facet-product_type .non-indented.clerk-facet-selected' ) ;
227
+ for ( i = 0 ; i < second_cat_list . length ; i ++ ) {
228
+ t = second_cat_list [ i ] ;
229
+ var selectedType = t . dataset . value ;
230
+ document . querySelectorAll ( `[data-product-type="${ selectedType } "]` ) . forEach ( function ( item , index ) {
231
+ var secondType = item . dataset . productTypeSecondary ,
232
+ second_selector = document . querySelectorAll ( `[data-value="${ secondType } "]` ) ;
233
+ for ( u = 0 ; u < second_selector . length ; u ++ ) {
234
+ q = second_selector [ u ] ;
235
+ q . classList . remove ( 'type-tag-clerk' ) ;
236
+ q . style . paddingLeft = '15px' ;
237
+ }
238
+ } ) ;
239
+ }
240
+ if ( document . querySelectorAll ( '.clerk-facet-selected.indented' ) . length > 0 ) {
241
+ indented_facets = document . querySelectorAll ( '.clerk-facet-selected.indented' ) ;
242
+ for ( i = 0 ; i < indented_facets . length ; i ++ ) {
243
+ t = indented_facets [ i ] ;
244
+ myTypeFilter = t . dataset . value ;
245
+ document . querySelectorAll ( `[data-product-type-secondary="${ myTypeFilter } "]` ) . forEach ( function ( item , index ) {
246
+ item . classList . remove ( 'clerk-type' ) ;
247
+ } )
248
+ }
249
+ document . querySelectorAll ( '.clerk-type' ) . forEach ( function ( item , index ) {
250
+ item . remove ( ) ;
251
+ } )
252
+ document . querySelectorAll ( '.non-indented' ) . forEach ( function ( item , index ) {
253
+ item . addEventListener ( 'click' , function ( e ) {
254
+ r = document . querySelectorAll ( '.clerk-facet-selected.indented' ) ;
255
+ for ( o = 0 ; o < r . length ; o ++ ) {
256
+ r [ o ] . click ( ) ;
257
+ }
258
+ } )
259
+ } )
260
+ }
261
+ }
262
+
263
+ //Change Image on hover
264
+ document . querySelectorAll ( '.clerk-variant-swatch' ) . forEach ( function ( item , index ) {
265
+ item . addEventListener ( 'mouseenter' , function ( ) {
266
+ var hoverIdentifier = item . dataset . name ,
267
+ hoverUrl = item . dataset . varImg ;
268
+ target = document . querySelector ( `[data-main-name="${ hoverIdentifier } "] .clerk-design-component-JhII4gjU` ) ;
269
+ target . style . opacity = 0 ;
270
+ target . style . backgroundImage = `url(${ hoverUrl } )` ;
271
+ target . style . transition = 'all 0.5s' ;
272
+ setTimeout ( function ( ) {
273
+ target . style . opacity = 1 ;
274
+ } , 0 ) ;
275
+ } )
276
+ } )
277
+
278
+ if ( document . querySelector ( '.clerk-facet-instock .clerk-facet-selected[data-value="true"]' ) ) {
279
+ document . querySelectorAll ( '.clerk-variant-swatch' ) . forEach ( function ( item , index ) {
280
+ stockVal = item . dataset . varStock ;
281
+ if ( stockVal == 0 ) {
282
+ item . remove ( ) ;
283
+ }
284
+ } )
285
+ document . querySelectorAll ( '.main-product' ) . forEach ( function ( item , index ) {
286
+ selectSwatch = item . querySelector ( '.clerk-variant-swatch' )
287
+ replaceImg = selectSwatch . dataset . varImg ;
288
+ imgLocation = item . querySelector ( '.clerk-design-component-JhII4gjU' )
289
+ imgLocation . style . backgroundImage = `url('${ replaceImg } ')` ;
290
+ } )
291
+ }
292
+
293
+ //If color selected, replace main image with the relevant one and add class class to detect which cards are changed
294
+
295
+
296
+ if ( document . querySelector ( '.clerk-facet-variant_colors .clerk-facet-selected' ) ) {
297
+ colorPick = document . querySelector ( '.clerk-facet-variant_colors .clerk-facet-selected' ) . dataset . value ;
298
+ targets = document . querySelectorAll ( `.clerk-design-product [data-var-color="${ colorPick } "]` ) ;
299
+ v = document . querySelectorAll ( '.clerk-design-product' ) ;
300
+ for ( i = 0 ; i < targets . length ; i ++ ) {
301
+ y = targets [ i ] ;
302
+ findImg = y . dataset . varImg ;
303
+ mainImageDiv = y . parentNode . parentNode . querySelector ( '.clerk-design-component-JhII4gjU' ) ;
304
+ mainImageDiv . style . backgroundImage = `url('${ findImg } ')` ;
305
+ v [ i ] . classList . remove ( 'main-product' ) ;
306
+ v [ i ] . classList . add ( 'markz' ) ;
307
+ }
308
+ }
309
+
310
+ //If size, replace main image with the relevant one and add class class to detect which cards are changed
311
+
312
+
313
+ if ( document . querySelector ( '.clerk-facet-variant_sizes .clerk-facet-selected' ) ) {
314
+ colorPick = document . querySelector ( '.clerk-facet-variant_sizes .clerk-facet-selected' ) . dataset . value ;
315
+ targets = document . querySelectorAll ( `.clerk-design-product [data-var-size="${ sizePick } "]` ) ;
316
+ v = document . querySelectorAll ( '.clerk-design-product' ) ;
317
+ for ( i = 0 ; i < targets . length ; i ++ ) {
318
+ y = targets [ i ] ;
319
+ findImg = y . dataset . varImg ;
320
+ mainImageDiv = y . parentNode . parentNode . querySelector ( '.clerk-design-component-JhII4gjU' ) ;
321
+ mainImageDiv . style . backgroundImage = `url('${ findImg } ')` ;
322
+ v [ i ] . classList . remove ( 'main-product' ) ;
323
+ v [ i ] . classList . add ( 'markz' ) ;
324
+ }
325
+ }
326
+
327
+ if ( document . querySelector ( '.markz' ) ) {
328
+ document . querySelectorAll ( '.main-product' ) . forEach ( function ( item , index ) {
329
+ item . remove ( ) ;
330
+ } )
331
+ }
332
+
333
+ var resultCount = document . querySelectorAll ( '.clerk-design-component-tOCxuayL' ) . length ;
334
+ var resultQuery = document . querySelector ( '#clerk-search' ) . dataset . query ;
335
+ var headerProductCount = document . createElement ( 'div' )
336
+ headerProductCount . className = 'clerk-result-count' ;
337
+ if ( ! document . querySelector ( '.clerk-result-count' ) ) {
338
+ document . querySelector ( '#clerk-show-facets' ) . appendChild ( headerProductCount ) ;
339
+ } else {
340
+ document . querySelector ( '.clerk-result-count' ) . textContent = `Showing ${ resultCount } results for ${ resultQuery } ` ;
341
+ }
342
+
343
+ var facetGroups = document . querySelectorAll ( '.clerk-facet-group:not(.clerk-facet-price)' ) ;
344
+
345
+ var sizeGroup = document . querySelector ( '.clerk-facet-variant_sizes' )
346
+
347
+ for ( i = 0 ; i < facetGroups . length ; i ++ ) {
348
+ sel = facetGroups [ i ] . querySelectorAll ( '.clerk-facet' ) ;
349
+ localeSort ( sel ) ;
350
+ }
351
+
352
+ for ( i = mastSizes . length ; i > - 1 ; i -- ) {
353
+ size = mastSizes [ i ] ;
354
+ selector = sizeGroup . querySelectorAll ( `.clerk-facet[data-value*="${ size } "]` )
355
+ selector . forEach ( function ( item ) {
356
+ if ( item . dataset . value . indexOf ( 'Short' ) == - 1 && item . dataset . value . indexOf ( 'Long' ) == - 1 && item . dataset . value . indexOf ( 'US' ) == - 1 ) {
357
+ sizeGroup . querySelector ( '.clerk-facet-group-facets' ) . prepend ( item ) ;
358
+ }
359
+ } ) ;
360
+
361
+ }
362
+
363
+
364
+ for ( i = 0 ; i < title_toggle . length ; i ++ ) {
365
+ if ( facetStateObj [ title_toggle [ i ] . parentNode . dataset . facetGroup ] == true ) {
366
+ title_toggle [ i ] . click ( )
367
+ }
368
+ }
369
+
370
+ } ) ;
371
+ < / script >
0 commit comments