1/* annasta Filters for WooCommerce */ 2 3var a_w_f = typeof( a_w_f ) === 'undefined' ? {} : a_w_f; 4a_w_f.pretty_scrollbars = []; 5a_w_f.daterangepickers = {}; 6 7var awf_data = typeof( awf_data ) === 'undefined' ? { query: {} } : awf_data; 8 9jQuery( document ).ready( function( $ ){ 10 'use strict'; 11 12 if( ! ( 'preset_wrappers' in a_w_f ) ) { 13 a_w_f.preset_wrappers = $( '.awf-preset-wrapper' ); 14 } 15 16 a_w_f.awf_nonce_refresh_queue = []; 17 a_w_f.awf_nonce_refresh_in_progress = false; 18 19 a_w_f.refresh_nonce = function( callback ) { 20 a_w_f.awf_nonce_refresh_queue.push( callback ); 21 if( a_w_f.awf_nonce_refresh_in_progress ) { return; } 22 23 a_w_f.awf_nonce_refresh_in_progress = true; 24 25 $.get( awf_data.ajax_url, { action: 'awf_get_nonce', awf_front: 1 }, function( nonce ) { 26 awf_data.nonce = $.trim( nonce ); 27 a_w_f.awf_nonce_refresh_in_progress = false; 28 var pending = a_w_f.awf_nonce_refresh_queue.splice( 0 ); 29 $.each( pending, function( i, fn ) { fn(); } ); 30 } ); 31 }; 32 33 a_w_f.set_filter_events = function( $filter ) { 34 35 var $preset_wrapper = $filter.closest( '.awf-preset-wrapper' ); 36 var $filter_container = $filter.closest( '.awf-filter-container' ); 37 38 if( 'premium' in a_w_f ) { a_w_f.set_premium_filter_events( $filter_container, $filter ); } 39 40 if( $preset_wrapper.hasClass( 'awf-url' ) && ( $filter.is(':checkbox') || $filter.is(':radio') ) ) { 41 if( $filter.hasClass( 'awf-button-filter' ) ) { 42 $filter.on( 'click', function( e ) { 43 e.stopPropagation(); 44 }); 45 46 $filter.closest( 'a' ).on( 'click', function( e ) { 47 e.preventDefault(); 48 $filter.trigger( 'click' ); 49 }); 50 51 } else { 52 $filter.on( 'click', function() { 53 54 if( $preset_wrapper.hasClass( 'awf-left-popup-sidebar-mode' ) ) { 55 a_w_f.close_togglable_preset(); 56 } 57 $( 'body' ).block( { message: $( '<div class="awf-loader"></div>' ), blockMsgClass: 'blockMsg awf-blockMsg' } ); 58 59 if( 'pre_button_query' in awf_data ) { 60 awf_data.page_reload = true; 61 } else { 62 window.location.href = $( this ).closest( 'a' ).attr( 'href' ); 63 } 64 65 }); 66 } 67 } 68 69 if( $filter_container.hasClass( 'awf-active' ) ) { 70 if( $filter_container.closest( 'ul.awf-children-container' ).first().hasClass( 'awf-collapsed' ) ) { 71 $filter_container.parents( 'ul.awf-children-container' ).removeClass( 'awf-collapsed' ).prev( 'li.awf-parent-container' ).removeClass( 'awf-collapsed-on' ); 72 } 73 $filter_container.removeClass( 'awf-collapsed-on' ).next( 'ul.awf-children-container' ).removeClass( 'awf-collapsed' ); 74 } 75 76 if( $filter_container.hasClass( 'awf-product-search-container' ) ) { 77 var $clear_btn = $filter.siblings( '.awf-clear-search-btn' ).first(); 78 79 $filter.on( 'keydown', function( e ) { 80 if( e.keyCode === 13 ) { 81 e.preventDefault(); 82 83 if( $filter.hasClass( 'awf-submit-on-change') ) { 84 $filter.removeClass( 'awf-cancel-product-search-update' ).trigger( 'change' ); 85 $clear_btn.trigger( 'focus' ); 86 $( '#' + $filter.attr( 'id' ) + '-autocomplete-container' ).first().addClass( 'awf-collapsed' ); 87 88 } else if( $filter.hasClass( 'awf-button-filter' ) ) { 89 $filter.closest( '.awf-filter-wrapper' ).find( '.awf-apply-filter-btn, .awf-submit-btn' ).first().trigger( 'focus' ); 90 91 } else { 92 $filter.addClass( 'awf-cancel-product-search-update' ); 93 $clear_btn.trigger( 'focus' ); 94 } 95 96 } else if( e.keyCode === 9 ) { 97 98 $filter.addClass( 'awf-cancel-product-search-update' ); 99 100 if( ! e.shiftKey ) { 101 e.preventDefault(); 102 $clear_btn.trigger( 'focus' ); 103 } 104 } 105 } ) 106 .on( 'blur', function( e ) { 107 if( ! $( e.relatedTarget ).is( $clear_btn ) ) { 108 $filter.removeClass( 'awf-cancel-product-search-update' ).trigger( 'change' ); 109 } 110 }) 111 ; 112 113 $clear_btn 114 .on( 'click', function() { 115 $( '.awf-product-search-autocomplete-container' ).empty(); 116 $filter.removeClass( 'awf-cancel-product-search-update' ).val( '' ).trigger( 'change' ).trigger( 'focus' ); 117 }) 118 .on( 'keydown', function( e ) { 119 if( e.keyCode === 13 || e.keyCode === 32 ) { 120 e.preventDefault(); 121 122 $( '.awf-product-search-autocomplete-container' ).empty(); 123 $filter.addClass( 'awf-cancel-product-search-update' ).val( '' ).trigger( 'focus' ); 124 } 125 }) 126 .on( 'blur', function( e ) { 127 if( ! $( e.relatedTarget ).is( $filter ) ) { 128 $filter.removeClass( 'awf-cancel-product-search-update' ).trigger( 'change' ); 129 } 130 }); 131 ; 132 133 if( $filter_container.hasClass( 'awf-search-autocomplete' ) ) { 134 var $autocomplete = $( '#' + $filter.attr( 'id' ) + '-autocomplete-container' ).first(); 135 136 $filter.on( 'focusin', function() { 137 $autocomplete.removeClass( 'awf-collapsed' ); 138 }); 139 140 $filter.on( 'focusout', function( e ) { 141 if( 0 === $autocomplete.has( $( e.relatedTarget ) ).length && ! $( e.relatedTarget ).is( $clear_btn ) ) { 142 $autocomplete.addClass( 'awf-collapsed' ); 143 } 144 }); 145 146 $autocomplete.on( 'focusout', function( e ) { 147 if( 0 === $autocomplete.has( $( e.relatedTarget ) ).length && ! $( e.relatedTarget ).is( $filter ) && ! $( e.relatedTarget ).is( $clear_btn ) ) { 148 $autocomplete.addClass( 'awf-collapsed' ); 149 $filter.removeClass( 'awf-cancel-product-search-update' ).trigger( 'change' ); 150 } 151 }); 152 153 $clear_btn.on( 'focusout', function( e ) { 154 if( 0 === $autocomplete.has( $( e.relatedTarget ) ).length && ! $( e.relatedTarget ).is( $filter ) ) { 155 $autocomplete.addClass( 'awf-collapsed' ); 156 } 157 }); 158 159 a_w_f.autocomplete_cid = 0; 160 var debounce_autocomplete = null; 161 162 $filter.on( 'input', function() { 163 var cid = a_w_f.autocomplete_cid = ++a_w_f.autocomplete_cid; 164 clearTimeout( debounce_autocomplete ); 165 166 debounce_autocomplete = setTimeout( function() { 167 if( cid === a_w_f.autocomplete_cid ) { 168 a_w_f.get_search_autocomplete_products( $filter_container, $filter, $autocomplete ); 169 } 170 }, 400); 171 } ); 172 173 $filter.on( 'change', function() { 174 175 setTimeout( function() { 176 if( $autocomplete.has( document.activeElement ).length === 0 ) { 177 178 var old_value = ( $filter.attr( 'data-taxonomy' ) in awf_data.query ) ? awf_data.query[$filter.attr( 'data-taxonomy' )] : ''; 179 180 if( $filter.val() !== old_value ) { 181 182 if( ! $filter.hasClass( 'awf-cancel-product-search-update' ) ) { 183 a_w_f.product_search_onchange( $filter ); 184 if( ( ! $preset_wrapper.hasClass( 'awf-button' ) && ! $filter.hasClass( 'awf-button-filter' ) ) || $filter.hasClass( 'awf-submit-on-change') ) { 185 a_w_f.apply_filter( true, $preset_wrapper ); 186 } 187 } 188 189 $filter.removeClass( 'awf-cancel-product-search-update' ); 190 } 191 } 192 }, 100 ); 193 }); 194 195 } else { 196 197 $filter.on( 'change', function( e ) { 198 var old_value = ( $filter.attr( 'data-taxonomy' ) in awf_data.query ) ? awf_data.query[$filter.attr( 'data-taxonomy' )] : ''; 199 200 if( $filter.val() !== old_value ) { 201 setTimeout( function() { 202 if( ! $filter.hasClass( 'awf-cancel-product-search-update' ) ) { 203 a_w_f.product_search_onchange( $filter ); 204 if( ( ! $preset_wrapper.hasClass( 'awf-button' ) && ! $filter.hasClass( 'awf-button-filter' ) ) || $filter.hasClass( 'awf-submit-on-change') ) { 205 a_w_f.apply_filter( true, $preset_wrapper ); 206 } 207 } 208 209 $filter.removeClass( 'awf-cancel-product-search-update' ); 210 }, 100 ); 211 } 212 }); 213 } 214 215 } else if( $filter_container.hasClass( 'awf-daterangepicker-container' ) ) { 216 217 a_w_f.setup_daterangepicker( $filter, $filter_container, $preset_wrapper ); 218 219 } else { 220 221 /* No jQuery solution https://github.com/jquery/jquery/issues/2871*/ 222 $filter.siblings('label').each( function() { 223 this.addEventListener( 'touchstart', function() { $filter_container.addClass( 'awf-hover-off' ); }, { passive: true } ); 224 } ); 225 226 $filter.on( 'click', function() { 227 a_w_f.filter_onclick( $filter ); 228 229 if( $filter.is( '[data-archive-permalink]' ) ) { 230 awf_data.filters_url = $filter.attr( 'data-archive-permalink' ); 231 awf_data.archive_page_switch = 'archive switch unavailable'; 232 } 233 }); 234 235 if( ! $preset_wrapper.hasClass( 'awf-button' ) && ! $filter.hasClass( 'awf-button-filter' ) ) { 236 $filter.on( 'click', function() { a_w_f.apply_filter( $filter, $preset_wrapper ); }); 237 } 238 } 239 }; 240 241 a_w_f.product_search_onchange = function( $searchbox ) { 242 243 if( $searchbox.hasClass( 'awf-button-filter' ) && ! ( 'pre_button_query' in awf_data ) ) { 244 awf_data.pre_button_query = $.extend( true, {}, awf_data.query ); 245 } 246 247 $( '.awf-product-search-container .awf-filter' ).each( function( i, el ) { 248 249 var $container = $( el ).closest( '.awf-filter-container' ); 250 251 if( 0 === $( $searchbox ).val().length ) { $container.removeClass( 'awf-active' ); } 252 else { $container.addClass( 'awf-active' ); } 253 254 if( el === $searchbox[0] ) { a_w_f.update_query( $searchbox, $container, true ); } 255 else { $( el ).val( $( $searchbox ).val() ); } 256 257 });
258 }; 259 260 a_w_f.get_search_autocomplete_products = function( $filter_container, $filter, $autocomplete, retried ) { 261 262 var $autocompletes = $( '.awf-product-search-autocomplete-container' ); 263 264 if( $autocomplete.attr( 'data-after' ) < $filter.val().length ) { 265 $filter_container.addClass( 'awf-autocomplete-searching' ); 266 267 var data = { 268 action: 'awf', 269 awf_action: 'get_search_autocomplete', 270 awf_front: 1, 271 awf_nonce: awf_data.nonce, 272 awf_filter: $filter.closest( '.awf-filter-wrapper' ).first().attr( 'id' ), 273 awf_ajax_extras: ( 'ajax_extras' in awf_data ) ? awf_data.ajax_extras : '' 274 }; 275 276 if( 'sc_page' in awf_data ) { data.awf_sc_page = awf_data.sc_page; } 277 else if( 'archive_page' in awf_data ) { data.awf_archive_page = awf_data.archive_page; } 278 279 data.awf_query = $.extend( true, {}, awf_data.query ); 280 data.awf_query[$filter.attr('data-taxonomy')] = $filter.val(); 281 282 $.ajax({ 283 type: "get", 284 url: awf_data.ajax_url, 285 dataType: "html", 286 data: data, 287 success: function( response ) { 288 289 if( '-1' === response ) { 290 if( ! retried ) { 291 a_w_f.refresh_nonce( function() { 292 a_w_f.get_search_autocomplete_products( $filter_container, $filter, $autocomplete, true ); 293 }); 294 } 295 $filter_container.removeClass( 'awf-autocomplete-searching' ); 296 return; 297 } 298 299 if( response ) { 300 var $response = $( response ); 301 if( $response.hasClass( 'woocommerce' ) ) { 302 $response.removeClass().addClass( 'awf-ac-container' ).find( awf_data.products_container ).removeClass().addClass( 'awf-ac-products-container' ); 303 $response.find( 'a' ).attr( 'tabindex', '-1' ); 304 $autocompletes.empty().append( $response ); 305 } 306 307 $filter_container.removeClass( 'awf-autocomplete-searching' ); 308 309 if( $autocompletes.hasClass( 'awf-pretty-scrollbars' ) ) { 310 $.each( a_w_f.pretty_scrollbars, function( i, ps ) { 311 $autocompletes.each( function() { 312 if( ps.element === this ) { 313 ps.update(); 314 return false; 315 } 316 }); 317 }); 318 } 319 } 320 }, 321 error: function( response ) { console.log( response ); } 322 }); 323 324 } else { 325 $autocompletes.empty(); 326 } 327 }; 328 329 a_w_f.setup_daterangepicker = function( $filter, $filter_container, $preset_wrapper ) { 330 331 if( 'undefined' !== typeof daterangepicker && 'undefined' !== typeof moment ) { 332 var $daterangepicker = $filter_container.find( '.awf-daterangepicker' ); 333 var daterangepicker_options = { 334 'showDropdowns': true, 335 'isUTC': true, 336 locale: { cancelLabel: $daterangepicker.attr( 'data-clear-btn-label' ) } 337 }; 338 339 if( $daterangepicker.hasClass( 'awf-single-daterangepicker' ) ) { 340 daterangepicker_options.singleDatePicker = true; 341 } 342 343 if( $daterangepicker.hasClass( 'awf-timepicker' ) ) { 344 daterangepicker_options.timePicker = true; 345 daterangepicker_options.timePicker24Hour = true; 346 daterangepicker_options.locale.format = 'DD/MM/YY HH:mm'; 347 $daterangepicker.addClass( '' ); 348 349 } else { 350 daterangepicker_options.locale.format = 'DD/MM/YYYY'; 351 } 352 353 if( 0 < $filter.val().length ) { 354 var values = $filter.val().split( ',' ); 355 $.each( values, function( i, el ) { 356 if( 0 === i ) { 357 daterangepicker_options.startDate = moment.unix( el ).utc().format( daterangepicker_options.locale.format ); 358 } else if( 1 === i ) { 359 daterangepicker_options.endDate = moment.unix( el ).utc().format( daterangepicker_options.locale.format ); 360 } 361 }); 362 } 363 364 if( 'filter_daterangepicker_options' in a_w_f ) {
365 daterangepicker_options = a_w_f.filter_daterangepicker_options( $daterangepicker, daterangepicker_options ); 366 } 367 368 $daterangepicker.daterangepicker( daterangepicker_options, function( start, end ) { 369 370 if( $daterangepicker.hasClass( 'awf-single-daterangepicker' ) ) { 371 if( 'timePicker' in daterangepicker_options ) { 372 $filter.val( start.utc( true ).unix() ); 373 } else { $filter.val( start.utc( true ).startOf( 'date' ).unix() ); } 374 375 } else { 376 if( 'timePicker' in daterangepicker_options ) { 377 $filter.val( start.utc( true ).unix() + ',' + end.utc( true ).unix() ); 378 } else { $filter.val( start.utc( true ).startOf( 'date' ).unix() + ',' + end.utc( true ).startOf( 'date' ).unix() ); } 379 } 380 }); 381 382 a_w_f.daterangepickers[$daterangepicker.attr( 'id' )] = $daterangepicker; 383 384 $daterangepicker.on( 'apply.daterangepicker', function( event, picker ) { 385 a_w_f.daterangepicker_update_values( $daterangepicker, $filter, $filter_container ); 386 if( ! $preset_wrapper.hasClass( 'awf-button' ) ) { a_w_f.apply_filter( true, $preset_wrapper ); } 387 }); 388 $daterangepicker.on( 'cancel.daterangepicker', function() { 389 $filter.val( '' ); 390 a_w_f.daterangepicker_update_values( $daterangepicker, $filter, $filter_container ); 391 if( ! $preset_wrapper.hasClass( 'awf-button' ) ) { a_w_f.apply_filter( true, $preset_wrapper ); } 392 }); 393 $daterangepicker.on( 'hide.daterangepicker', function() { 394 if( 0 === $filter.val().length ) { $daterangepicker.val( '' ); } 395 }); 396 397 if( 0 === $filter.val().length ) { $daterangepicker.val( '' ); } 398 } 399 }; 400 401 a_w_f.filter_onclick = function( $filter ) { 402 var $container = $filter.closest( '.awf-filter-container' ); 403 var taxonomy = $filter.attr( 'data-taxonomy' ); 404 var $filter_wrappers = $( '.awf-filter-wrapper[data-taxonomy="' + taxonomy + '"]' ); 405 406 if( $filter.hasClass( 'awf-button-filter' ) && ! ( 'pre_button_query' in awf_data ) ) { 407 awf_data.pre_button_query = $.extend( true, {}, awf_data.query ); 408 } 409 410 if( $container.hasClass( 'awf-active' ) ) { 411 412 if( $container.hasClass( 'awf-block-deselection' ) && -1 === awf_data.query[taxonomy].toString().indexOf( ',' ) ) { 413 $filter.prop( 'checked', true ); 414 return; 415 } 416 417 if( $filter.is( ':radio' ) ) { 418 419 if( $container.hasClass( 'awf-range-filter-container' ) ) { 420 var $slider = $filter_wrappers.find( '.awf-style-range-slider .awf-filter-container' ).first(); 421 if( $slider.length > 0 ) { 422 a_w_f.reset_filter_value( $filter, $slider ); 423 return; 424 } 425 426 $filter_wrappers.filter( '.awf-range' ).find( 'input.awf-filter[value="' + $filter.val() + '"][data-next-value="' + $filter.attr( 'data-next-value' ) + '"]' ).prop( 'checked', false ).siblings( 'label' ).attr( 'aria-selected', 'false' ).closest( '.awf-filter-container' ).removeClass( 'awf-active' ); 427 428 } else { 429 $filter_wrappers.filter( '.awf-single' ).find( '.awf-filter-container.awf-active' ).removeClass( 'awf-active' ).find( 'input' ).prop( 'checked', false ); 430 $filter_wrappers.filter( '.awf-multi' ).find( 'input.awf-filter[value="' + $filter.val() + '"]' ).prop( 'checked', false ).siblings( 'label' ).attr( 'aria-selected', 'false' ).closest( '.awf-filter-container' ).removeClass( 'awf-active' ); 431 432 var $defaults = $filter_wrappers.find( '.awf-default' ); 433 if( 0 < $defaults.length ) { 434 $filter = $defaults.first(); 435 $container = $filter.closest( '.awf-filter-container' ); 436 $defaults.prop( 'checked', true ).siblings( 'label' ).attr( 'aria-selected', 'true' ).closest( '.awf-filter-container' ).addClass( 'awf-active' ); 437 } 438 } 439 440 } else { 441 $filter_wrappers.find( 'input.awf-filter[value="' + $filter.val() + '"]' ).prop( 'checked', false ).siblings( 'label' ).attr( 'aria-selected', 'false' ).closest( '.awf-filter-container' ).removeClass( 'awf-active' ); 442 } 443 444 } else { 445 446 if( $filter.is( ':radio' ) ) { 447 448 var $filter_containers = $filter_wrappers.find( '.awf-filter-container' ); 449 $filter_containers.removeClass( 'awf-active' ).find( 'input' ).prop( 'checked', false ).siblings( 'label' ).attr( 'aria-selected', 'false' ); 450 451 if( $container.hasClass( 'awf-range-filter-container' ) ) { 452 var $slider = $filter_wrappers.find( '.awf-style-range-slider .awf-filter-container' ).first(); 453 if( $slider.length > 0 ) { 454 var min = parseFloat( $filter.val() ); 455 var max = parseFloat( $filter.attr( 'data-next-value' ) ); 456 $slider[0].noUiSlider.set( [min, max] ); 457 a_w_f.range_slider_update_values( $slider[0], [min, max], $slider[0].noUiSlider.options.range.min[0], $slider[0].noUiSlider.options.range.max[0] ); 458 459 return; 460 } 461 462 $filter_containers.find( 'input.awf-filter[value="' + $filter.val() + '"][data-next-value="' + $filter.attr( 'data-next-value' ) + '"]' ).prop( 'checked', true ).siblings( 'label' ).attr( 'aria-selected', 'true' ).closest( '.awf-filter-container' ).addClass( 'awf-active' ); 463 464 } else { 465 $filter_containers.find( 'input.awf-filter[value="' + $filter.val() + '"]' ).prop( 'checked', true ).siblings( 'label' ).attr( 'aria-selected', 'true' ).closest( '.awf-filter-container' ).addClass( 'awf-active' ); 466 } 467 468 } else { 469 $filter_wrappers.filter( '.awf-single' ).find( '.awf-filter-container.awf-active' ).removeClass( 'awf-active' ).find( 'input' ).prop( 'checked', false ).siblings( 'label' ).attr( 'aria-selected', 'false' ); 470 $filter_wrappers.find( 'input.awf-filter[value="' + $filter.val() + '"]' ).prop( 'checked', true ).siblings( 'label' ).attr( 'aria-selected', 'true' ).closest( '.awf-filter-container' ).addClass( 'awf-active' ); 471 $filter_wrappers.filter( '.awf-multi' ).find( 'input.awf-filter[value="' + $filter.val() + '"]' ).each( function() { 472 a_w_f.uncheck_parents_and_children( this ); 473 }); 474 } 475 } 476 477 if( $filter.hasClass( 'awf-hierarchical-sbs-taxonomy' ) ) { a_w_f.hierarchical_sbs_oncl
477ick( $filter, $container, taxonomy ); } 478 479 if( $filter_wrappers.hasClass( 'awf-active-dropdown-title' ) ) { 480 a_w_f.set_active_dropdown_title( $filter_wrappers ); 481 } 482 483 a_w_f.update_query( $filter, $container, true ); 484 }; 485 486 a_w_f.uncheck_parents_and_children = function( checkbox ) { 487 $( checkbox ).parents( 'ul' ).prev( 'li.awf-filter-container.awf-active' ).each( function( i, container ) { 488 $( container ).removeClass( 'awf-active' ).find( '.awf-filter' ).each( function( ii, filter ) { 489 $( filter ).prop( 'checked', false ).siblings( 'label' ).attr( 'aria-selected', 'false' ); 490 a_w_f.update_query( $( filter ), $( container ), false ); 491 }); 492 }); 493 494 $( checkbox ).parents( 'li.awf-filter-container' ).next( 'ul' ).find( '.awf-filter-container.awf-active' ).each( function( i, container ) { 495 $( container ).removeClass( 'awf-active' ).find( '.awf-filter' ).each( function( ii, filter ) { 496 $( filter ).prop( 'checked', false ).siblings( 'label' ).attr( 'aria-selected', 'false' ); 497 a_w_f.update_query( $( filter ), $( container ), false ); 498 }); 499 }); 500 }; 501 502 a_w_f.reset_filter_value = function( $filter, $container ) { 503 504 if( $container.hasClass( 'awf-product-search-container' ) ) { 505 $filter.val( '' ); 506 a_w_f.product_search_onchange( $filter ); 507 508 } else if( $container.hasClass( 'awf-daterangepicker-container' ) ) { 509 $filter.val( '' ); 510 a_w_f.daterangepicker_update_values( $container.find( '.awf-daterangepicker' ), $filter, $container ); 511 512 } else if( $container.hasClass( 'awf-range-slider-container' ) ) { 513 var range_slider = $container[0]; 514 var min = range_slider.noUiSlider.options.range.min[0]; 515 var max = range_slider.noUiSlider.options.range.max[0]; 516 range_slider.noUiSlider.set( [min, max] ); 517 a_w_f.range_slider_update_values( range_slider, [min, max], min, max ); 518 519 } else if( $filter.hasClass( 'awf-taxonomy-range-value' ) ) { 520 if( 'premium' in a_w_f ) { a_w_f.reset_taxonomy_range( $container ); } 521 522 } else { 523 a_w_f.filter_onclick( $filter ); 524 } 525 }; 526 527 a_w_f.update_query = function( $filter, $container, build_badges ) { 528 var taxonomy = $filter.attr( 'data-taxonomy' ); 529 var values = []; 530 var i = -1; 531 532 if( taxonomy in awf_data.query ) { 533 if( $filter.is( ':checkbox' ) ) { 534 values = awf_data.query[taxonomy].split( ',' ); 535 i = values.indexOf( $filter.val() ); 536 } 537 } 538 539 if( $container.hasClass( 'awf-active' ) ) { 540 if( $filter.hasClass( 'awf-default' ) && ! ( $container.hasClass( 'awf-range-slider-container' ) && 1 === $container.find( '.awf-default' ).length ) ) { 541 values = []; 542 543 } else { 544 if( i === -1 ) { 545 values.push( $filter.val() ); 546 } 547 } 548 549 } else { 550 if( values.length > 0 ) { 551 if( i > -1 ) { values.splice( i, 1 ); } 552 } 553 } 554 555 if( values.length > 0 ) { 556 values.sort(); 557 awf_data.query[taxonomy] = values.join( ',' ); 558 559 if( $container.hasClass( 'awf-range-filter-container' ) ) { 560 awf_data.query[$filter.attr( 'data-max-name' )] = $filter.attr( 'data-next-value' ); 561 } 562 563 } else { 564 if( ( 'archive_page' in awf_data ) && taxonomy === awf_data.archive_page && build_badges ) { 565 a_w_f.filter_onclick( $filter ); 566 return; 567 } 568 569 delete awf_data.query[taxonomy]; 570 571 if( $container.hasClass( 'awf-range-filter-container' ) ) { 572 delete awf_data.query[$filter.attr( 'data-max-name' )]; 573 } 574 } 575 576 if( 'sc_page' in awf_data ) { delete awf_data.query['product-page']; } 577 578 if( build_badges ) { 579 if( ( 'premium' in a_w_f ) && ( a_w_f.filter_reset_taxonomies.indexOf( taxonomy ) >= 0 ) ) { a_w_f.adjust_reset_active( taxonomy, $filter ); } 580 } 581 }; 582 583 a_w_f.build_active_badges = function() { 584 $( '.awf-active-badge' ).remove(); 585 586 $.each( awf_data.query, function( key, values ) { 587 588 var $active_filter_containers = $( '.awf-filter-wrapper[data-taxonomy="' + key + '"] .awf-filter-container.awf-active' ); 589 if( 0 === $active_filter_containers.length ) { return true; } 590 591 var $filter; 592 var $filter_container; 593 594 if( $active_filter_containers.hasClass( 'awf-range-slider-container' ) ) { 595 $filter_container = $active_filter_containers.filter( '.awf-range-slider-container' ).first(); 596 $filter = $filter_container.find( '.awf-filter' ).first(); 597 598 if( 0 === $( '.awf-active-badge[data-taxonomy="' + $filter.attr( 'data-taxonomy' ) + '"]' ).first().length ) { 599 a_w_f.create_active_badge( $filter_container.find( '.awf-filter[name="' + key + '"]' ).first(), $filter_container ); 600 } 601 602 } else if( $active_filter_containers.hasClass( 'awf-taxonomy-range-container' ) ) { 603 $filter = $active_filter_containers.find( '.awf-filter.awf-taxonomy-range-value' ).first(); 604 605 if( 0 === $( '.awf-active-badge[data-taxonomy="' + $filter.attr( 'data-taxonomy' ) + '"]' ).first().length ) { 606 a_w_f.create_active_badge( $filter, $filter.closest( '.awf-filter-container' ) ); 607 } 608 609 } else { 610 611 if( $active_filter_containers.hasClass( 'awf-range-filter-container' ) ) { 612 $filter_container = $active_filter_containers.filter( '.awf-range-filter-container' ).first(); 613 $filter = $filter_container.find( '.awf-filter' ).first(); 614 615 if( 0 === $( '.awf-active-badge[data-taxonomy="' + $filter.attr( 'data-taxonomy' ) + '"]' ).length ) { 616 a_w_f.create_active_badge( $filter, $filter_container ); 617 } 618 619 } else if( $active_filter_containers.hasClass( 'awf-product-search-container' ) ) { 620 $filter_container = $active_filter_containers.filter( '.awf-product-search-container' ).first(); 621 a_w_f.create_active_badge( $filter_container.find( '.awf-filter' ).first(), $filter_container ); 622 623 } else if( $active_filter_containers.hasClass( 'awf-daterangepicker-container' ) ) { 624 $filter_container = $active_filter_containers.filter( '.awf-daterangepicker-container' ).first(); 625 a_w_f.create_active_badge( $filter_container.find( '.awf-filter' ).first(), $filter_container ); 626 627 } else { 628 var slugs = values.split( ',' ); 629 630 if( ( 'archive_page' in awf_data ) && key === awf_data.archive_page && 1 === slugs.length ) { 631 return; 632 } 633 634 $.each( slugs, function( i, slug ) { 635 $filter = $active_filter_containers.find( '.awf-filter[value="' + slug + '"]' ).first(); 636 637 if( 0 < $filter.length ) { 638 a_w_f.create_active_badge( $filter, $filter.closest( '.awf-filter-container' ) ); 639 } 640 }); 641 } 642 } 643 });
644 645 if( 0 < $( '.awf-active-badge' ).first().length ) { 646 $( '.awf-reset-btn-container' ).show(); 647 } else { 648 $( '.awf-reset-btn-container' ).hide(); 649 } 650 651 if( 'premium' in a_w_f ) { a_w_f.adjust_dropdown_options(); } 652 653 }; 654 655 a_w_f.create_active_badge = function( $filter, $container ) { 656 657 if( $filter.hasClass( 'awf-default' ) && ! $filter.hasClass( 'awf-range-slider-value' ) ) { return; } 658 659 var label; 660 var classes = ['awf-active-badge']; 661 var badge_taxonomy = $filter.attr( 'data-taxonomy'); 662 var preset_wrapper_id = '#' + $filter.closest( '.awf-preset-wrapper' ).attr( 'id' ); 663 664 if( $filter.hasClass( 'awf-range-slider-value' ) ) { 665 666 if( 2 === $container.find( '.awf-default').length ) { return; } 667 badge_taxonomy = $filter.attr( 'data-taxonomy' ); 668 669 var format = wNumb( { 670 decimals: $container.attr( 'data-decimals' ), 671 mark: $container.attr( 'data-decimals-separator' ), 672 thousand: $container.attr( 'data-thousand-separator' ), 673 prefix: $container.attr( 'data-prefix' ), 674 suffix: $container.attr( 'data-postfix' ) 675 } ); 676 677 label = $container.attr( 'data-label' ) + ' ' + format.to( parseFloat( $container.attr( 'data-min' ) ) ) + ' - ' + format.to( parseFloat( $container.attr( 'data-max' ) ) ); 678 679 } else if( $filter.hasClass( 'awf-taxonomy-range-value' ) ) { 680 if( 'premium' in a_w_f ) { 681 label = a_w_f.create_taxonomy_range_badge( $container ); 682 } 683 684 } else if( $container.hasClass( 'awf-range-filter-container' ) ) { 685 badge_taxonomy = $filter.attr( 'data-taxonomy' ); 686 label = $filter.siblings( 'label' ).attr( 'data-badge-label' ); 687 688 } else if( $container.hasClass( 'awf-product-search-container' ) ) { 689 label = $filter.siblings( 'label' ).attr( 'data-badge-label' ) + ' ' + $filter.val(); 690 691 } else if( $container.hasClass( 'awf-daterangepicker-container' ) ) { 692 label = $filter.attr( 'data-label' ) + ' ' + $filter.siblings( '.awf-daterangepicker' ).first().val(); 693 694 } else { 695 label = $filter.siblings( 'label' ).attr( 'data-badge-label' ); 696 697 if( $container.hasClass( 'awf-block-deselection' ) && ( badge_taxonomy in awf_data.query ) && -1 === awf_data.query[badge_taxonomy].toString().indexOf( ',' ) ) { 698 classes.push( 'awf-is-last-active' ); 699 } 700 } 701 702 if( typeof( label ) === 'undefined' ) { label = ''; } 703 704 var $badge = $( '<div>', { 705 class: classes.join( ' ' ), 706 title: awf_data.i18n.badge_reset_label, 707 'data-taxonomy': badge_taxonomy, 708 'tabindex': '0', 709 'role': 'button', 710 'aria-label': label 711 }).append( 712 $( '<i class="fas fa-times"></i>' ), 713 '<span>' + label + '</span>' 714 ); 715 716 $badge.on( 'click', function() { 717 var $badge_filter = $filter; 718 719 a_w_f.reset_filter_value( $badge_filter, $container ); 720 721 if( ( 'sbs' in a_w_f ) && ( 0 < $( '.awf-sbs .awf-filter-wrapper[data-taxonomy="' + badge_taxonomy + '"], .awf-sbs .awf-filter-wrapper[data-taxonomy-max="' + badge_taxonomy + '"]' ).first().length ) ) { 722 723 $( '.awf-sbs' ).each( function( i, preset_wrapper ) { 724 var $preset_wrapper = $( preset_wrapper ); 725 var $filter_wrapper = $preset_wrapper.find( '.awf-filter-wrapper[data-taxonomy="' + badge_taxonomy + '"], .awf-sbs .awf-filter-wrapper[data-taxonomy-max="' + badge_taxonomy + '"]' ).first(); 726 727 if( 0 < $filter_wrapper.length ) { 728 var ii = parseInt( $filter_wrapper.attr( 'data-sbs-i' ) ); 729 var $reset_next = $preset_wrapper.find( '.awf-sbs-' + (ii + 1) ); 730 if ( 0 < $reset_next.length ) { a_w_f.reset_filter( $reset_next.attr( 'data-taxonomy' ) ); } 731 732 if( 'redirect_ajax' in awf_data ) { 733 a_w_f.update_sbs( $preset_wrapper, ii, false ); 734 } else { 735 if( $preset_wrapper.hasClass( 'awf-sbs-next-btn-on' ) ) { 736 if( ! preset_wrapper.hasAttribute( 'data-sbs-redirect' ) ) { $preset_wrapper.addClass( 'awf-sbs-redirect' ); } 737 a_w_f.update_sbs( $preset_wrapper, ii, ( 0 < $reset_next.length ? false : true ) ); 738 739 } else { 740 a_w_f.update_sbs( $preset_wrapper, ii, true ); 741 } 742 } 743 } 744 }); 745 746 } else { 747 748 if( a_w_f.force_reload && ( a_w_f.force_reload.indexOf( badge_taxonomy ) >= 0 ) ) { a_w_f.page_reload = true; } 749 a_w_f.apply_filter( true, $( preset_wrapper_id ) ); 750 } 751 } ); 752 753 $badge.clone( true ).appendTo( $( '.awf-filter-wrapper[data-taxonomy="' + badge_taxonomy + '"] .awf-filters-container' ).siblings( '.awf-active-badges-container' ) ); 754 755 if( ! $filter.hasClass( 'awf-no-active-badge' ) ) { 756 $badge.clone( true ).appendTo( $( '.awf-preset-wrapper > .awf-active-badges-container' ) ); 757 $badge.clone( true ).appendTo( $( '.awf-active-badges-container.awf-extra-badges' ) );
758 $badge.appendTo( $( '#awf-title-badges-storage' ) ); 759 } 760 }; 761 762 a_w_f.apply_filter = function( $filter, $preset_wrapper ) { 763 764 if( $preset_wrapper.hasClass( 'awf-url' ) ) { 765 766 if( ( $filter instanceof jQuery ) && ! awf_data.page_reload ) { 767 a_w_f.update_url(); 768 769 } else { 770 if( $preset_wrapper.hasClass( 'awf-left-popup-sidebar-mode' ) ) { 771 a_w_f.close_togglable_preset(); 772 } 773 774 $( 'body' ).block( { message: $( '<div class="awf-loader"></div>' ), blockMsgClass: 'blockMsg awf-blockMsg' } ); 775 776 if( 'rewrite_page' in awf_data ) { 777 a_w_f.request_url().then( function( response ) { 778 if( 'url' in response ) { window.location.href = response.url; } else { window.location.href = a_w_f.build_url(); } 779 } ); 780 781 } else { 782 window.location.href = a_w_f.build_url(); 783 } 784 } 785 786 } else if( $preset_wrapper.hasClass( 'awf-ajax' ) ) { 787 788 if( 'redirect_ajax' in awf_data ) { 789 a_w_f.load_new_history_state(); 790 791 } else { 792 if( a_w_f.page_reload ) { 793 a_w_f.load_new_history_state(); 794 795 } else { 796 delete awf_data.pre_button_query; 797 a_w_f.build_active_badges(); 798 a_w_f.update_url(); 799 a_w_f.ajax_filter( $filter ); 800 } 801 } 802 803 } else if( $preset_wrapper.hasClass( 'awf-sbs' ) ) { 804 if( 'sbs' === $filter ) { 805 806 if( ( 'redirect_ajax' in awf_data ) || $preset_wrapper[0].hasAttribute( 'data-sbs-redirect' ) ) { 807 if( $preset_wrapper.hasClass( 'awf-sbs-redirect' ) ) { 808 if( $preset_wrapper[0].hasAttribute( 'data-sbs-redirect' ) ) { 809 var url = $preset_wrapper.attr( 'data-sbs-redirect' ); 810 var q = $.extend( true, {}, awf_data.query ); 811 812 delete q.post_type; 813 814 if( ! ( 'permalinks_on' in awf_data ) ) { delete q.page_id; } 815 816 if( ( 'archive_page' in awf_data ) ) { 817 delete q[awf_data.archive_identifier]; 818 if( 0 === $preset_wrapper.find( '.awf-filter-wrapper[data-taxonomy="' + awf_data.archive_page + '"]' ).length ) { 819 delete q[awf_data.archive_page]; 820 } 821 } 822 823 url = url.split('?'); 824 825 if( 2 === url.length ) { 826 var params = url[1].split('&'); 827 $.each( params, function( i, p ){ 828 var param_data = p.split( '=' ); 829 if( 2 === param_data.length ) { q[param_data[0]] = param_data[1]; } 830 } ); 831 } 832 833 if( ! $.isEmptyObject( q ) ) { url[0] += '?' + $.param( q ).replace( /%2C/g, ',' ); } 834 a_w_f.load_new_history_state( url[0] ); // redirect to the requested page 835 836 } else { 837 a_w_f.load_new_history_state(); // to shop / archive / sc page 838 } 839 } else { 840 if( $preset_wrapper[0].hasAttribute( 'data-sbs-redirect' ) ) { 841 delete awf_data.pre_button_query; 842 843 a_w_f.update_url(); 844 a_w_f.ajax_filter( true ); 845 } else { 846 a_w_f.update_counts(); 847 } 848 } 849 850 } else { 851 delete awf_data.pre_button_query; 852 853 a_w_f.update_url(); 854 a_w_f.ajax_filter( true ); 855 } 856 857 $preset_wrapper.removeClass( 'awf-sbs-redirect' ); 858 } 859 } 860 }; 861 862 a_w_f.ajax_filter = function( $filter ) { 863 $( document ).trigger( 'awf_ajax_filter' ); 864 865 $( 'body' ).addClass( 'awf-loading-ajax' ); 866 867 var ajax_data = { 868 action: 'awf', 869 awf_front: 1, 870 awf_action: 'filter', 871 awf_query: awf_data.query, 872 awf_ajax_extras: ( 'ajax_extras' in awf_data ) ? awf_data.ajax_extras : '' 873 }; 874 875 if( 'archive_page' in awf_data ) { ajax_data.awf_archive_page = awf_data.archive_page; } 876 877 if( 'ajax_pagination' in awf_data ) { 878 879 if( 'pre_button_query' in awf_data ) { ajax_data.awf_query = awf_data.pre_button_query; } 880 881 if( awf_data.ajax_pagination_loading ) { 882 ajax_data.page_number = awf_data.ajax_pagination_number; 883 884 if( 'page_numbers' === awf_data.ajax_pagination.type ) { awf_data.ajax_pagination_loading = false; } 885 } 886 887 if( 'infinite_scroll' === awf_data.ajax_pagination.type ) { 888 var ajax_pagination_loading_query = JSON.stringify( ajax_data.awf_query ); 889 890 if( awf_data.ajax_pagination_loading && awf_data.ajax_pagination_loading_query !== ajax_pagination_loading_query ) { 891 delete ajax_data.page_number; 892 awf_data.ajax_pagination_number = 0; 893 awf_data.ajax_pagination_end_reached = false; 894 } 895 896 awf_data.ajax_pagination_loading_query = ajax_pagination_loading_query; 897 } 898 } 899 900 if( 'sc_page' in awf_data ) { 901 ajax_data.awf_sc_page = awf_data.sc_page; 902 903 var sc_data; 904 var $awf_sc = $( '.woocommerce.awf-sc' ); 905 906 if( 1 < $awf_sc.length ) { 907 awf_data.ajax_mode = 'dedicated_ajax'; 908 } 909 910 $awf_sc.each( function( i, sc_wrapper ) { 911 sc_data = $.extend( true, {}, ajax_data ); 912 sc_data.awf_sc = {}; 913 var $sc_wrapper = $( sc_wrapper ); 914 915 $sc_wrapper.find( '.awf-sc-var' ).each( function( ii, input ) { 916 sc_data.awf_sc[$( input ).attr( 'name' )] = $( input ).val(); 917 } ); 918 919 a_w_f.update_products( sc_data, $sc_wrapper ); 920 }); 921 922 if( ! ( 'page_number' in ajax_data ) ) { 923 if( 1 === $awf_sc.length ) { 924 a_w_f.update_counts( { 'sc_attrs': sc_data.awf_sc } ); 925 } else { 926 a_w_f.update_counts(); 927 } 928 } 929 930 } else { 931 a_w_f.update_products( $.extend( true, {}, ajax_data ), false ); 932 if( ! ( 'page_number' in ajax_data ) ) { a_w_f.update_counts(); } 933 } 934 }; 935 936 a_w_f.update_products = function( ajax_data, is_sc ) { 937 938 var $wrapper; 939 var $loader = $( '<div class="awf-loader"></div>' ); 940 var is_cm_v2 = false; 941 942 if( false === is_sc ) { 943 $wrapper = a_w_f.products_wrappers; 944 945 } else { 946 $wrapper = is_sc; 947 is_sc = true; 948 } 949 950 if( 0 === $wrapper.length ) { return; } 951 952 if( 'ajax_pagination' in awf_data ) { 953 954 if( awf_data.ajax_pagination_loading ) { 955 if( 'infinite_scroll' === awf_data.ajax_pagination.type || 'more_button' === awf_data.ajax_pagination.type ) { 956 $( '<div class="awf-infinite-scroll-loader" style="position: relative; display: block; width: 100%; height: 100px;"></div>' ).block({ message: $loader }).insertAfter( $wrapper.find( awf_data.products_container ) ); 957 } 958 959 } else { $wrapper.block({ message: $loader }); } 960 961 } else { 962 $wrapper.block({ message: $loader }); 963 } 964 965 if( ! ( 'skip_loader_adjustment' in awf_data ) ) { 966 if( 'fixed' !== $loader.css( 'position' ) ) { 967 if( ! ( 'max_padding' in a_w_f ) ) { 968 var wrapper_top = parseInt( $wrapper.offset().top ); 969 var loader_height = parseInt( window.getComputedStyle( $loader.get(0), ':before').height ); 970 971 a_w_f.max_padding = parseInt( wrapper_top + $wrapper.innerHe
971ight() - loader_height*1.5 - 10 ); 972 a_w_f.base_padding = ( document.documentElement.clientHeight / 2 ) - ( loader_height / 2 ) - wrapper_top; 973 } 974 975 var padding_top = parseInt( document.documentElement.scrollTop + a_w_f.base_padding ); 976 if( padding_top > a_w_f.max_padding ) { padding_top = a_w_f.max_padding; } 977 978 $loader.css( 'padding-top', padding_top ); 979 } 980 } 981 982 var url; 983 var $response; 984 985 if( 'rewrite_page' in awf_data ) { 986 ajax_data.awf_rewrite = a_w_f.get_rewrites_ajax_data(); 987 } 988 989 if( 'dedicated_ajax' === awf_data.ajax_mode ) { 990 url = awf_data.ajax_url; 991 ajax_data.awf_nonce = awf_data.nonce; 992 993 } else { 994 995 if( 'rewrite_page' in awf_data ) { 996 url = a_w_f.build_url(); 997 } else { 998 url = window.location.href; 999 } 1000 1001 delete ajax_data.action; 1002 1003 if( 'yes' === awf_data.cm_v2 ) { 1004 is_cm_v2 = true; 1005 } 1006 } 1007 1008 if( is_cm_v2 ) { 1009 a_w_f.get_products_cm_v2( url, ajax_data, $wrapper, is_sc ); 1010 1011 } else { 1012 1013 $.ajax({
1014 type: 'get', 1015 url: url, 1016 dataType: 'html', 1017 data: ajax_data, 1018 success: function( response ) { 1019 1020 if( '-1' === response ) { 1021 1022 a_w_f.refresh_nonce( function() { 1023 ajax_data.awf_nonce = awf_data.nonce; 1024 a_w_f.update_products( ajax_data, is_sc ? $wrapper : false ); 1025 }); 1026 1027 $wrapper.unblock(); 1028 $( 'body' ).removeClass( 'awf-loading-ajax' ); 1029 return; 1030 } 1031 1032 if( response ) { 1033 1034 if( 'ajax_pagination' in awf_data 1035 && 'infinite_scroll' === awf_data.ajax_pagination.type 1036 && JSON.stringify( ajax_data.awf_query ) !== awf_data.ajax_pagination_loading_query 1037 ) 1038 { 1039 $( document ).trigger( 'awf_ajax_products_update_cancellation' ); 1040 return; 1041 } 1042 1043 $response = $( response ); 1044 1045 if( $response instanceof jQuery && 0 < $response.length ) { 1046 a_w_f.parse_ajax_response( $response, ajax_data, $wrapper, is_sc ); 1047 } else { 1048 a_w_f.get_products_cm_v2( url, ajax_data, $wrapper, is_sc ); 1049 } 1050 1051 } 1052 }, 1053 error: function( error_msg ) { 1054 if( 'debug' in awf_data ) { 1055 console.log( error_msg ); 1056 } else { 1057 a_w_f.get_products_cm_v2( url, ajax_data, $wrapper, is_sc ); 1058 } 1059 } 1060 }); 1061 1062 } 1063 1064 }; 1065 1066 a_w_f.get_products_cm_v2 = function( url, ajax_data, $wrapper, is_sc ) { 1067 1068 var url_parts = url.split('?'); 1069 var params = 'awf_cm_v2=1'; 1070 1071 if( ( 'ajax_pagination' in awf_data ) && awf_data.ajax_pagination_loading && 'page_number' in ajax_data ) { 1072 if( is_sc ) { 1073 params += '&product-page=' + ajax_data.page_number; 1074 } else { 1075 params += '&paged=' + ajax_data.page_number; 1076 } 1077 } 1078 1079 if( 'awf_rewrite' in ajax_data && 0 < Object.keys( ajax_data.awf_rewrite ).length ) { 1080 params += '&' + Object.keys( ajax_data.awf_rewrite ).map( function( k ) { 1081 return 'awf_rewrite[' + k + ']=' + ajax_data.awf_rewrite[k]; 1082 } ).join( '&' ); 1083 } 1084 1085 if( 2 === url_parts.length ) { 1086 url = url + '&' + params; 1087 } else if( 1 === url_parts.length ) { 1088 url = url + '?' + params; 1089 } 1090 1091 $.ajax({
1092 type: 'get', 1093 url: url, 1094 dataType: 'html', 1095 success: function( response ) { 1096 1097 if( response ) { 1098 if( 'ajax_pagination' in awf_data 1099 && 'infinite_scroll' === awf_data.ajax_pagination.type 1100 && JSON.stringify( ajax_data.awf_query ) !== awf_data.ajax_pagination_loading_query 1101 ) 1102 { 1103 $( document ).trigger( 'awf_ajax_products_update_cancellation' ); 1104 return; 1105 } 1106 1107 var $response = $( response ); 1108 1109 if( $response instanceof jQuery && 0 < $response.length ) { 1110 a_w_f.parse_ajax_response( $response, ajax_data, $wrapper, is_sc ); 1111 1112 } else { 1113 if( 'debug' in awf_data ) { 1114 console.log( 'Filters AJAX call has returned invalid response.' ); 1115 } else { 1116 window.location.reload(); 1117 } 1118 1119 } 1120 } 1121 }, 1122 error: function( error_msg ) { 1123 if( 'debug' in awf_data ) { 1124 console.log( error_msg ); 1125 } else { 1126 window.location.reload(); 1127 } 1128 } 1129 }); 1130 1131 }; 1132 1133 a_w_f.parse_ajax_response = function( $response, ajax_data, $wrapper, is_sc ) { 1134 1135 if( ( 'ajax_pagination' in awf_data ) && awf_data.ajax_pagination_loading && 'page_number' in ajax_data ) { 1136 1137 if( ( 'ajax_scroll' in awf_data ) && 'more_button' === awf_data.ajax_pagination.type ) { 1138 $( [document.documentElement, document.body] ).animate( { scrollTop: awf_data.ajax_pagination.last_product.offset().top + awf_data.ajax_pagination.last_product.height() - parseInt( awf_data.ajax_scroll, 10 ) }, 500, 'swing' ); 1139 } 1140 1141 $wrapper.find( awf_data.ajax_pagination.product_container ).last().after( $response.find( awf_data.ajax_pagination.product_container ) ); 1142 a_w_f.setup_ajax_pagination( $wrapper ); 1143 1144 var $awf_result_count = $response.find( '.awf-ajax-pagination-result-count' ).first(); 1145 if( 0 < $awf_result_count.length ) { 1146 $wrapper.find( awf_data.result_count_container ).text( $awf_result_count.text() ); 1147 } else { 1148 $wrapper.find( awf_data.result_count_container ).text( '' ); 1149 } 1150 1151 $( '.awf-infinite-scroll-loader' ).remove(); 1152 1153 } else { 1154 1155 if( 'yes' === awf_data.wrapper_reload ) { 1156 if( 'dedicated_ajax' === awf_data.ajax_mode ) { 1157 $wrapper.html( $response.html() ); 1158 } else { 1159 $wrapper.html( a_w_f.extract_products_wrappers( $response ).html() ); 1160 a_w_f.update_breadcrumbs( $response ); 1161 } 1162 1163 } else { 1164 1165 var $pagination_containers = $wrapper.find( awf_data.pagination_container ); 1166 var $new_pagination = $response.find( awf_data.pagination_container ).first(); 1167 1168 if( 0 === $new_pagination.length ) { 1169 $pagination_containers.html( '' ); 1170 1171 } else { 1172 if( 0 === $pagination_containers.length ) { 1173 if( ! ( 'pagination_after' in awf_data ) ) { 1174 a_w_f.setup_pagination_after( $response ); 1175 } 1176 1177 var $pagination_after = ''; 1178 1179 if( 'pagination_after' in awf_data ) { 1180 $pagination_after = $wrapper.find( awf_data.pagination_after ); 1181 } 1182 1183 if( 0 < $pagination_after.length ) { 1184 $pagination_after.after( $new_pagination ); 1185 } else { 1186 $wrapper.find( awf_data.products_container ).after( $new_pagination ); 1187 } 1188 1189 } else { 1190 $pagination_containers.replaceWith( $new_pagination ); 1191 } 1192 } 1193 1194 $( '.awf-pagination-more-btn-container' ).remove(); 1195 1196 var $result_count = $response.find( awf_data.result_count_container ).first(); 1197 if( 0 === $result_count.length ) { 1198 $wrapper.find( awf_data.result_count_container ).html( '' ); 1199 } else { 1200 $wrapper.find( awf_data.result_count_container ).replaceWith( $result_count ); 1201 } 1202 1203 var $new_products = $response.find( awf_data.products_container ).first(); 1204 var $no_result_container = $wrapper.find( awf_data.no_result_container ).first(); 1205 1206 $no_result_container.html( '' ).hide(); 1207 1208 if( 0 === $new_products.length ) { 1209 if( 0 === $no_result_container.length ) { 1210 a_w_f.products_wrappers.find( awf_data.products_container ).before( $response.find( awf_data.no_result_container ).first() ); 1211 } else { 1212 $no_result_container.replaceWith( $response.find( awf_data.no_result_container ).first() ); 1213 } 1214 1215 $no_result_container.show(); 1216 $wrapper.find( awf_data.products_container ).html( '' ); 1217 1218 } else { 1219 $wrapper.find( awf_data.products_container ).html( $new_products.html() ); 1220 } 1221 1222 $wrapper.unblock(); 1223 } 1224 1225 if( 'ajax_scroll' in awf_data ) { 1226 $( [document.documentElement, document.body] ).animate( { scrollTop: a_w_f.products_wrappers.offset().top - parseInt( awf_data.ajax_scroll, 10 ) }, 500, 'swing' ); 1227 } 1228 1229 if( 'ajax_pagination' in awf_data ) { 1230 if( 'infinite_scroll' === awf_data.ajax_pagination.type || 'more_button' === awf_data.ajax_pagination.type ) { 1231 awf_data.ajax_pagination_number = 1; 1232 } 1233 1234 a_w_f.setup_ajax_pagination( $wrapper ); 1235 } 1236 1237 a_w_f.update_orderby( $wrapper ); 1238 } 1239 1240 if( ! is_sc ) { 1241 a_w_f.update_breadcrumbs( $response ); 1242 1243 var $document_title = $response.find( '.awf-document-title' ).first(); 1244 if( 0 < $document_title.length ) { document.title = $("<div/>").html( $document_title.first().html() ).text(); } 1245 1246 var $shop_title = $response.find( '.awf-wc-shop-title' ).first(); 1247 1248 if( 'archive_page' in awf_data ) { 1249 if( 'archive_components_support' in awf_data ) {
1250 if( 0 < $shop_title.length ) { $( 'h1.woocommerce-products-header__title' ).html( $shop_title.html() ); } 1251 1252 var $archive_description = $response.find( '.term-description' ).first(); 1253 if( 0 < $archive_description.length ) { $( '.term-description' ).html( $archive_description.html() ); } 1254 } 1255 1256 } else { 1257 if( 0 < $shop_title.length ) { $( 'h1.woocommerce-products-header__title' ).html( $shop_title.html() ); } 1258 } 1259 1260 var $meta_description = $response.find( '.awf-meta-description' ).first(); 1261 if( 0 < $meta_description.length && 0 < document.querySelectorAll( 'meta[name="description"]' ).length ) { 1262 document.querySelector( 'meta[name="description"]' ).setAttribute( 'content', $meta_description.text() ); 1263 } 1264 } 1265 1266 a_w_f.build_products_wrappers(); 1267 $( 'body' ).removeClass( 'awf-loading-ajax' ); 1268 1269 $( document ).trigger( 'awf_after_ajax_products_update', [ $response ] ); 1270 }; 1271 1272 a_w_f.update_counts = function( data ) { 1273 1274 if( ( 'undefined' === typeof data ) || ( 'string' === typeof data ) ) { 1275 data = {}; 1276 } 1277 1278 var callers = []; 1279 1280 a_w_f.preset_wrappers.each( function( i, el ) { 1281 callers.push( $( el ).attr( 'id' ) ); 1282 }); 1283 1284 $.ajax({
1285 type: "get", 1286 url: awf_data.ajax_url, 1287 dataType: "json", 1288 data: { 1289 action: 'awf', 1290 awf_action: 'update_filters', 1291 awf_front: 1, 1292 awf_nonce: awf_data.nonce, 1293 awf_query: awf_data.query, 1294 awf_ajax_extras: ( 'ajax_extras' in awf_data ) ? awf_data.ajax_extras : '', 1295 awf_archive_page: ( 'archive_page' in awf_data ) ? awf_data.archive_page : '', 1296 awf_sc_attrs: ( 'sc_attrs' in data ) ? data.sc_attrs : {}, 1297 awf_rewrite: a_w_f.get_rewrites_ajax_data(), 1298 awf_callers: callers, 1299 }, 1300 success: function( response ) { 1301 1302 if( -1 === response ) { 1303 a_w_f.refresh_nonce( function() { a_w_f.update_counts( data ); }); 1304 return; 1305 } 1306 1307 if( response ) { 1308 1309 $.each( response.counts, function( taxonomy, slugs ) { 1310 $.each( slugs, function( slug, count ) { 1311 var $filters = $( 'input.awf-filter[data-taxonomy="' + taxonomy + '"][value="' + slug + '"]' ); 1312 1313 $filters.each( function( i, el ) { 1314 var $filter = $( el ); 1315 var $container = $filter.closest( '.awf-filter-container' ); 1316 $container.find( '.awf-filter-count' ).text(count); 1317 1318 if( count > 0 ) { 1319 $container.removeClass( 'awf-empty' ); 1320 if( $container.hasClass( 'awf-empty-disabled' ) ) { $filter.prop( 'disabled', false ); } 1321 } else { 1322 $container.addClass( 'awf-empty' ); 1323 if( $container.hasClass( 'awf-empty-disabled' ) ) { $filter.prop( 'disabled', true ); } 1324 } 1325 }); 1326 1327 }); 1328 }); 1329 1330 if( 'price_filter_min_max' in response ) { 1331 if( 'min_price' in response.price_filter_min_max && 'max_price' in response.price_filter_min_max ) { 1332 var min_price = parseFloat( response.price_filter_min_max.min_price ); 1333 var max_price = parseFloat( response.price_filter_min_max.max_price ); 1334 1335 $( '.awf-style-range-slider.awf-filters-price-min .awf-range-slider-container' ).each( function( i, slider) { 1336 var $slider = $( slider ); 1337 1338 var slider_min = Math.floor( min_price ); 1339 var slider_max = Math.ceil( max_price ); 1340 var step = Math.ceil( parseFloat( $slider.attr( 'data-step' ) ) ); 1341 1342 if( (slider_max - slider_min) < step || (slider_min % step) !== 0 || (slider_max % step) !== 0 ) { 1343 slider_min = slider_min - (slider_min % step); 1344 slider_max = slider_max + (step - (slider_max % step)); 1345 } 1346 1347 $slider.attr( 'data-min-limit', slider_min ).attr( 'data-max-limit', slider_max ); 1348 1349 var $min_control = $slider.find( '.awf-range-slider-min' ).clone( true ); 1350 var $max_control = $slider.find( '.awf-range-slider-max' ).clone( true ); 1351 1352 if( $min_control.hasClass( 'awf-default' ) && $max_control.hasClass( 'awf-default' ) ) { 1353 $min_control.val( slider_min ); 1354 $max_control.val( slider_max ); 1355 $slider.attr( 'data-min', slider_min ).attr( 'data-max', slider_max ); 1356 } 1357 1358 if( 'undefined' !== typeof( slider.noUiSlider ) ) { 1359 slider.noUiSlider.destroy(); 1360 } 1361 1362 $slider.prepend( $max_control ).prepend( $min_control ); 1363 a_w_f.build_range_slider( slider, slider_min, slider_max ); 1364 } ); 1365 } 1366 1367 } 1368 1369 a_w_f.update_hrefs( response ); 1370 1371 $( document ).trigger( 'awf_after_counts_update' ); 1372 1373 $.each( a_w_f.pretty_scrollbars, function( i, ps ) { ps.update(); }); 1374 } 1375 }, 1376 error: function( response ) { console.log( response ); } 1377 }); 1378 }; 1379 1380 a_w_f.update_orderby = function( $wrappers ) { 1381 1382 var $containers = $( awf_data.orderby_container ); 1383 1384 if( false === $wrappers ) { 1385 $wrappers = a_w_f.products_wrappers; 1386 1387 } else { 1388 if( 'yes' === awf_data.wrapper_reload ) { 1389 $wrappers.find( '.woocommerce-ordering select.orderby' ).on( 'change', function() { $( this ).closest( 'form' ).submit(); }); 1390 1391 } else { 1392 var $selects = $containers.find( 'select' ); 1393 1394 $containers.find( 'input:hidden' ).remove(); 1395 1396 if( 'orderby' in awf_data.query ) { 1397 if( $selects.first().val() !== awf_data.query['orderby'] ) { 1398 $selects.val( awf_data.query['orderby'] ); 1399 } 1400 1401 } else { 1402 if( 'menu_order' !== $selects.first().val() && $selects.first().find( 'option[value="menu_order"]' ).length > 0 ) { 1403 $selects.val( 'menu_order' ); 1404 } 1405 } 1406 1407 $.each( awf_data.query, function( k, v ) { 1408 if( 'orderby' === k ) { return true; } 1409 if( ( 'current_rewrites' in awf_data ) && ( 0 <= awf_data.current_rewrites.indexOf( k ) ) ) { return true; } 1410 1411 $containers.append( '<input type="hidden" name="' + k + '" value="' + v + '">' ); 1412 }); 1413 } 1414 } 1415 1416 if( 'permalinks_on' in awf_data ) { 1417 if( 'archive_page' in awf_data ) { 1418 $containers.find( 'input:hidden[name="' + awf_data.archive_page + '"]' ).remove(); 1419 } 1420 1421 } else { 1422 if( 'yes' === awf_data.wrapper_reload ) { 1423 if( ( 'post_type' in awf_data.query ) ) {
1424 $wrappers.find( 'form.woocommerce-ordering' ).append( $( '<input type="hidden" name="post_type" value="product" />' ) ); 1425 } else if( 'sc_page' in awf_data ) { 1426 $wrappers.find( 'form.woocommerce-ordering' ).append( $( '<input type="hidden" name="page_id" value="' + awf_data.sc_page + '" />' ) ); 1427 } 1428 } 1429 1430 if( 'archive_page' in awf_data ) { 1431 $containers.find( 'input:hidden[name="' + awf_data.archive_page + '"],input:hidden[name="' + awf_data.archive_page_tax + '"]' ).remove(); 1432 $containers.append( '<input type="hidden" name="' + awf_data.archive_page_tax + '" value="' + awf_data.query[awf_data.archive_page] + '">' ); 1433 } 1434 } 1435 }; 1436 1437 a_w_f.update_breadcrumbs = function( $ajax_response ) { 1438 1439 if( 0 === a_w_f.woocommerce_breadcrumbs.length ) { return; } 1440 1441 if( 'archive_page' in awf_data ) { 1442 var $replace_breadcrumb = $ajax_response.find( '#awf-breadcrumbs-support' ); 1443 if( 0 < $replace_breadcrumb.length ) { 1444 a_w_f.woocommerce_breadcrumbs.contents().last()[0].textContent = $replace_breadcrumb.text(); 1445 } 1446 } 1447 }; 1448 1449 a_w_f.reset_all_filters = function( excluded_taxonomies ) { 1450 excluded_taxonomies = $.merge( excluded_taxonomies, awf_data.reset_all_exceptions ); 1451 1452 $.each( awf_data.query, function( taxonomy ) { 1453 if( $.inArray( taxonomy, excluded_taxonomies) !== -1 ) { return; } 1454 a_w_f.reset_filter( taxonomy ); 1455 }); 1456 }; 1457 1458 a_w_f.reset_filter = function( taxonomy ) { 1459 var $wrappers = $( '.awf-filter-wrapper[data-taxonomy="' + taxonomy + '"] .awf-filters-container' ); 1460 1461 if( 0 >= $wrappers.length ) { 1462 delete awf_data.query[taxonomy]; 1463 return; 1464 1465 } else if( ! ( taxonomy in awf_data.query ) ) { 1466 if( $wrappers.hasClass( 'awf-style-range-slider' ) ) { 1467 $wrappers.filter( '.awf-style-range-slider' ).find( '.awf-filter' ).each( function( i, filter ) { 1468 if( $( filter ).attr( 'data-taxonomy' ) in awf_data.query ) { 1469 taxonomy = $( filter ).attr( 'data-taxonomy' ); 1470 return true; 1471 } 1472 } ); 1473 } 1474 1475 if( ! ( taxonomy in awf_data.query ) ) { return; } 1476 } 1477 1478 if( a_w_f.force_reload && ( a_w_f.force_reload.indexOf( taxonomy ) >= 0 ) ) { a_w_f.page_reload = true; } 1479 1480 var values; 1481 1482 if( $wrappers.hasClass( 'awf-product-search' ) || $wrappers.hasClass( 'awf-style-daterangepicker' ) ) { 1483 values = [awf_data.query[taxonomy]]; 1484 } else { 1485 values = awf_data.query[taxonomy].toString().split( ',' ); 1486 } 1487 1488 $.each( values, function( i, v ) { 1489 1490 if( $wrappers.hasClass( 'awf-style-range-slider' ) ) { 1491 var $wrapper = $wrappers.filter( '.awf-style-range-slider' ).first(); 1492 if( taxonomy in awf_data.query ) { 1493 a_w_f.reset_filter_value( $wrapper.find( '.awf-filter' ).first(), $wrapper.find( '.awf-filter-container' ).first() ); 1494 } 1495 1496 } else if( $( $wrappers[0] ).hasClass( 'awf-product-search' ) || $( $wrappers[0] ).hasClass( 'awf-style-daterangepicker' ) ) { 1497 a_w_f.reset_filter_value( $( $wrappers[0] ).find( '.awf-filter' ).first(), $( $wrappers[0] ).find( '.awf-filter-container' ).first() ); 1498 1499 } else { 1500 1501 var $filter = $wrappers.find( '.awf-filter[value="' + v + '"]' ).first(); 1502 1503 if( 0 === $filter.length ) { return true; } 1504 1505 if( $filter[0].hasAttribute( 'data-max-name' ) && ( $filter.attr( 'data-max-name' ) in awf_data.query ) ) { 1506 var $range_filter = $wrappers.find( '.awf-filter[value="' + v + '"][data-next-value="' + awf_data.query[$filter.attr( 'data-max-name' )] + '"]' ).first(); 1507 if( 0 !== $range_filter.length ) { 1508 a_w_f.reset_filter_value( $range_filter, $range_filter.closest( '.awf-filter-container' ) ); 1509 } 1510 1511 } else { 1512 a_w_f.reset_filter_value( $filter, $filter.closest( '.awf-filter-container' ) ); 1513 } 1514 } 1515 1516 }); 1517 }; 1518 1519 a_w_f.apply_filters_reset = function( $preset_wrapper ) { 1520 if( 0 < $preset_wrapper.length ) { 1521 1522 if( ! $preset_wrapper.hasClass( 'awf-ajax' ) && ! $preset_wrapper.hasClass( 'awf-url' ) && ! $preset_wrapper.hasClass( 'awf-sbs' ) ) { 1523 a_w_f.update_url(); 1524 $preset_wrapper.find( '.awf-form-submit-btn' ).first().trigger( 'click' ); 1525 1526 } else { 1527 if( 'sbs' in a_w_f ) { 1528 $( '.awf-sbs' ).each( function( i, wrapper ) { 1529 if( 'redirect_ajax' in awf_data ) { 1530 a_w_f.update_sbs( $( wrapper ), 0, false ); 1531 1532 } else { 1533 if( ( $( wrapper ).hasClass( 'awf-sbs-next-btn-on' ) || $( wrapper ).hasClass( 'awf-button' ) ) && ! wrapper.hasAttribute( 'data-sbs-redirect' ) ) { 1534 $( wrapper ).addClass( 'awf-sbs-redirect' ); 1535 } 1536 1537 a_w_f.update_sbs( $( wrapper ), 0, true ); 1538 } 1539 } ); 1540 1541 } else { 1542 a_w_f.apply_filter( true, $preset_wrapper ); 1543 } 1544 } 1545 1546 } else { 1547 a_w_f.load_new_history_state(); 1548 } 1549 }; 1550 1551 a_w_f.get_rewrites_ajax_data = function() { 1552 var data = {}; 1553 1554 if( 'rewrite_page' in awf_data ) { 1555 data.rewrite = 1; 1556 1557 if( 'archive_page' in awf_data ) { 1558 data.archive_page = awf_data.archive_page; 1559 1560 } else if( 'sc_page' in awf_data ) { 1561 data.sc_page = awf_data.sc_page; 1562 } 1563 } 1564 1565 return data; 1566 } 1567 1568 a_w_f.request_url = function( query, retried ) { 1569 1570 if( 'undefined' === typeof( query ) ) { 1571 query = $.extend( true, {}, awf_data.query ); 1572 } 1573 1574 var data = { 1575 action: 'awf', 1576 awf_front: 1, 1577 awf_action: 'request_url', 1578 awf_nonce: awf_data.nonce, 1579 awf_query: query, 1580 awf_rewrite: a_w_f.get_rewrites_ajax_data() 1581 } 1582 1583 var deferred = $.Deferred(); 1584 1585 $.ajax({
1586 type: "get", 1587 url: awf_data.ajax_url, 1588 dataType: "json", 1589 data: data 1590 }).then( function( response ) { 1591 if( -1 === response && ! retried ) { 1592 a_w_f.refresh_nonce( function() { 1593 a_w_f.request_url( query, true ).then( function( r ) { 1594 deferred.resolve( r ); 1595 }); 1596 }); 1597 } else { 1598 deferred.resolve( -1 === response ? {} : response ); 1599 } 1600 }); 1601 1602 return deferred.promise(); 1603 } 1604 1605 a_w_f.build_url = function( query, archive_url ) { 1606 1607 if( 'undefined' === typeof( query ) ) { 1608 query = $.extend( true, {}, awf_data.query ); 1609 } 1610 1611 var url = awf_data.filters_url; 1612 1613 if( ( 'archive_page' in awf_data ) ) { 1614 query[awf_data.archive_identifier] = 1; 1615 1616 if( 'permalinks_on' in awf_data ) { 1617 if( 'undefined' === typeof archive_url ) { 1618 if( awf_data.archive_page in query ) { 1619 url = url.replace( awf_data.archive_page_switch, '/' + query[awf_data.archive_page] + awf_data.archive_page_trailingslash ); 1620 } 1621 1622 } else { 1623 url = archive_url; 1624 } 1625 1626 } else { 1627 query[awf_data.archive_page_tax] = query[awf_data.archive_page]; 1628 } 1629 1630 delete query[awf_data.archive_page]; 1631 } 1632 1633 if( 'ajax_pagination_url' in awf_data ) { 1634 if( 'sc_page' in awf_data ) { 1635 if( 1 < awf_data.ajax_pagination_number ) { query['product-page'] = awf_data.ajax_pagination_number; } 1636 1637 } else { 1638 if( 'permalinks_on' in awf_data ) { 1639 var url_parts = awf_data.ajax_pagination_url.split('?'); 1640 if( 1 < url_parts.length ) { url = url_parts[0]; } else { url = awf_data.ajax_pagination_url; } 1641 1642 } else { 1643 if( 1 < awf_data.ajax_pagination_number ) { query.paged = awf_data.ajax_pagination_number; } 1644 } 1645 } 1646 1647 delete awf_data.ajax_pagination_url; 1648 1649 } 1650 1651 if( ! $.isEmptyObject( query ) ) { url += '?' + $.param( query ).replace( /%2C/g, ',' ); } 1652 1653 return url; 1654 }; 1655 1656 a_w_f.update_hrefs = function( ajax_data ) { 1657 1658 if( 'links' in ajax_data ) { 1659 a_w_f.preset_wrappers.filter( '.awf-url' ).each( function( i, preset_wrapper ) { 1660 var $preset_wrapper = $( preset_wrapper ); 1661 var preset_id = $preset_wrapper.attr( 'data-preset-id' ); 1662 1663 if( preset_id in ajax_data.links ) { 1664 $.each( ajax_data.links[preset_id], function( filter_id, filters ) { 1665 var $links = $preset_wrapper.find( '.awf-filters-' + preset_id + '-' + filter_id + '-container a' ); 1666 $.each( filters, function( slug, href ) { 1667 var nofollow = ''; 1668 if( 'nofollow' in ajax_data && href in ajax_data.nofollow && 1 == ajax_data.nofollow[href] ) { 1669 nofollow = 'nofollow'; 1670 } 1671 $links.filter( '.awf-' + slug + '-href' ).attr( 'href', href ).attr( 'rel', nofollow ); 1672 }); 1673 }); 1674 } 1675 }); 1676 1677 } else { 1678 $( '.awf-url .awf-filter-wrapper' ).each( function( i, wrapper ) { 1679 1680 if( $( wrapper ).hasClass( 'awf-reset-all' ) ) { 1681 if( 'premium' in a_w_f ) { a_w_f.update_reset_all_hrefs( $( wrapper ) ); } 1682 1683 } else if( $( wrapper ).hasClass( 'awf-single' ) || $( wrapper ).hasClass( 'awf-range' ) ) { 1684 $( wrapper ).find( '.awf-filter' ).each( function( ii, filter ) { 1685 1686 var $filter = $( filter ); 1687 var query = $.extend( true, {}, awf_data.query ); 1688 var taxonomy = $filter.attr( 'data-taxonomy' ); 1689 1690 if( ! ( taxonomy in query ) ) { 1691 query[taxonomy] = ''; 1692 } 1693 1694 if( $filter.hasClass( 'awf-default' ) || $filter.val() === query[taxonomy] ) { 1695 if( ! ( ( 'archive_page' in awf_data ) && taxonomy === awf_data.archive_page ) ) { 1696 delete query[taxonomy]; 1697 1698 if( $filter.is( '[data-max-name]' ) ) { delete query[$filter.attr( 'data-max-name' )]; } 1699 } 1700 1701 } else { 1702 query[taxonomy] = $filter.val(); 1703 if( $filter.is( '[data-max-name]' ) ) { query[$filter.attr( 'data-max-name' )] = $filter.attr( 'data-next-value' ); } 1704 } 1705 1706 if( $filter.is( '[data-archive-permalink]' ) ) { 1707 $filter.closest( 'a' ).attr( 'href', a_w_f.build_url( query, $filter.attr( 'data-archive-permalink' ) ) ); 1708 } else { 1709 $filter.closest( 'a' ).attr( 'href', a_w_f.build_url( query ) ); 1710 } 1711 1712 }); 1713 1714 } else if( $( wrapper ).hasClass( 'awf-multi' ) ) { 1715 1716 $( wrapper ).find( '.awf-filter' ).each( function( ii, filter ) { 1717 1718 var $filter = $( filter ); 1719 var query = $.extend( true, {}, awf_data.query ); 1720 var taxonomy = $filter.attr( 'data-taxonomy' ); 1721 var values; 1722 if( taxonomy in query ) { values = query[taxonomy].split( ',' ); } else { values = []; } 1723 1724 if( $filter.is( ':checked' ) ) { 1725 values = $.grep( values, function( v ) { return v !== $filter.val(); } ); 1726 1727 } else { 1728 $filter.parents( 'ul' ).prev( 'li.awf-filter-container' ).find( '.awf-filter' ).each( function( i, f ) { 1729 values = $.grep( values, function( v ) { return v !== $( f ).val(); } ); 1730 }); 1731 1732 $filter.parents( 'li.awf-filter-container' ).next( 'ul' ).find( '.awf-filter' ).each( function( i, f ) { 1733 values = $.grep( values, function( v ) { return v !== $( f ).val(); } ); 1734 }); 1735 1736 values.push( $filter.val() ); 1737 } 1738 1739 if( values.length > 0 ) { 1740 values.sort(); 1741 query[taxonomy] = values.join( ',' ); 1742 1743 } else { 1744 if( ( 'archive_page' in awf_data ) && taxonomy === awf_data.archive_page ) { 1745 query[taxonomy] = $filter.val(); 1746 } else { 1747 delete query[taxonomy]; 1748 } 1749 } 1750 1751 $filter.closest( 'a' ).attr( 'href', a_w_f.build_url( query ) ); 1752 }); 1753 } 1754 }); 1755 } 1756 }; 1757 1758 a_w_f.range_slider_onchange = function( range_container, values, min, max ) { 1759 var $range_container = $( range_container ); 1760 1761 if( ( $range_container.hasClass( 'awf-button-filter' ) || $range_container.hasClass( 'awf-range-btn' ) ) && ! ( 'pre_button_query' in awf_data ) ) { 1762 awf_data.pre_button_query = $.extend( true, {}, awf_data.query ); 1763 } 1764 1765 if( $range_container.hasClass( 'awf-reset-all' ) && typeof a_
1765w_f.range_slider_reset_all === 'function' ) { 1766 a_w_f.range_slider_reset_all( $range_container ); 1767 } 1768 1769 a_w_f.range_slider_update_values( range_container, values, min, max ); 1770 1771 var $preset_wrapper = $range_container.closest( '.awf-preset-wrapper' ); 1772 1773 if( $preset_wrapper.hasClass( 'awf-sbs' ) ) { 1774 1775 if( '1' === $range_container.attr( 'data-force-sbs-redirect' ) ) { 1776 $preset_wrapper.addClass( 'awf-sbs-redirect' ); 1777 } 1778 1779 a_w_f.update_sbs( $preset_wrapper, $range_container.closest( '.awf-filter-wrapper' ).first().attr( 'data-sbs-i' ), ( '1' === $range_container.attr( 'data-apply-sbs' ) ) ); 1780 } 1781 1782 if( ! ( $range_container.hasClass( 'awf-range-btn' ) || $preset_wrapper.hasClass( 'awf-button' ) ) ) { 1783 a_w_f.apply_filter( true, $preset_wrapper ); 1784 } 1785 }; 1786 1787 a_w_f.range_slider_update_values = function( range_container, values, min, max ) { 1788 var $range_container = $( range_container ); 1789 var taxonomy = $range_container.find( '.awf-filter.awf-range-slider-min').first().attr( 'data-taxonomy' ); 1790 1791 values[0] = parseFloat( values[0] ); 1792 values[1] = parseFloat( values[1] ); 1793 1794 $( '.awf-filter-wrapper[data-taxonomy="' + taxonomy + '"] .awf-range-slider-container' ).each( function( i, filter_container ) { 1795 1796 var $min_filter = $( filter_container ).find( '.awf-range-slider-min' ); 1797 var $max_filter = $( filter_container ).find( '.awf-range-slider-max' ); 1798 1799 $min_filter.val( values[0] ); 1800 $max_filter.val( values[1] ); 1801 1802 $( filter_container ).attr( 'data-min', values[0] ).attr( 'data-max', values[1] ); 1803 1804 if( values[0] === parseFloat( min ) ) { $min_filter.addClass( 'awf-default' ); } else { $min_filter.removeClass( 'awf-default' ); } 1805 if( values[1] === parseFloat( max ) ) { $max_filter.addClass( 'awf-default' ); } else { $max_filter.removeClass( 'awf-default' ); } 1806 1807 if( filter_container === range_container ) { 1808 1809 $( filter_container ).addClass( 'awf-active' ); 1810 1811 a_w_f.update_query( $min_filter, $range_container, false ); 1812 a_w_f.update_query( $max_filter, $( range_container ), true ); 1813 1814 $( '.awf-filter-wrapper[data-taxonomy="' + taxonomy + '"] .awf-range-filter-container.awf-active' ).removeClass( 'awf-active' ).find( 'input.awf-filter' ).prop( 'checked', false ); 1815 $( '.awf-filter-wrapper[data-taxonomy="' + taxonomy + '"] .awf-range-filter-container input[value="' + values[0] + '"][data-next-value="' + values[1] + '"]' ).prop( 'checked', true ).closest( '.awf-filter-container' ).addClass( 'awf-active' ); 1816 1817 } else { 1818 filter_container.noUiSlider.set( [values[0], values[1]] ); 1819 $( filter_container ).removeClass( 'awf-active' ); 1820 } 1821 }); 1822 }; 1823 1824 a_w_f.daterangepicker_update_values = function( $daterangepicker, $filter, $filter_container ) { 1825 1826 if( $filter.hasClass( 'awf-button-filter' ) && ! ( 'pre_button_query' in awf_data ) ) { 1827 awf_data.pre_button_query = $.extend( true, {}, awf_data.query ); 1828 } 1829 1830 $( '.awf-style-daterangepicker .awf-filter[data-taxonomy="' + $filter.attr( 'data-taxonomy' ) + '"]' ).each( function( i, el ) { 1831 1832 var $el = $( el ); 1833 var is_caller = ( $el.attr( 'id' ) === $filter.attr( 'id' ) ); 1834 var $el_daterangepicker = $el.siblings( '.awf-daterangepicker' ); 1835 var $el_filter_container = $el.closest( '.awf-filter-container' ); 1836 1837 if( 0 === $filter.val().length ) { 1838 1839 $el_daterangepicker.data( 'daterangepicker' ).setStartDate( moment().utc().format( $el_daterangepicker.data( 'daterangepicker' ).locale.format ) ); 1840 1841 if( $el_daterangepicker.data( 'daterangepicker' ).singleDatePicker ) { 1842 $el_daterangepicker.data( 'daterangepicker' ).setEndDate( moment().utc().format( $el_daterangepicker.data( 'daterangepicker' ).locale.format ) ); 1843 } else { 1844 $el_daterangepicker.data( 'daterangepicker' ).setEndDate( moment().utc().add( 2, 'd' ).format( $el_daterangepicker.data( 'daterangepicker' ).locale.format ) ); 1845 } 1846 1847 $el.val( '' ); 1848 $el_daterangepicker.val( '' ); 1849 $el_filter_container.removeClass( 'awf-active' ); 1850 1851 } else { 1852 if( ! is_caller ) { 1853 $el.val( $filter.val() ); 1854 $el_daterangepicker.val( $daterangepicker.val() ); 1855 1856 $el_daterangepicker.data( 'daterangepicker' ).setStartDate( $daterangepicker.data( 'daterangepicker' ).startDate.format( $el_daterangepicker.data( 'daterangepicker' ).locale.format ) ); 1857 $el_daterangepicker.data( 'daterangepicker' ).setEndDate( $daterangepicker.data( 'daterangepicker' ).endDate.format( $el_daterangepicker.data( 'daterangepicker' ).locale.format ) ); 1858 } 1859 1860 $el_filter_container.addClass( 'awf-active' ); 1861 } 1862 });
1863 1864 a_w_f.update_query( $filter, $filter_container, true ); 1865 }; 1866 1867 a_w_f.update_sbs = function( $preset_wrapper, i, apply_filters ) { 1868 if( $preset_wrapper.hasClass( 'awf-sbs-redirect' ) 1869 && ( ( 'redirect_ajax' in awf_data ) || $preset_wrapper[0].hasAttribute( 'data-sbs-redirect' ) ) 1870 ) { 1871 a_w_f.apply_filter( 'sbs', $preset_wrapper ); 1872 return; 1873 } 1874 1875 var current_i = i = parseInt( i ); 1876 var next_i = i + 1; 1877 var total = parseInt( $preset_wrapper.attr( 'data-sbs-total' ) ); 1878 var gap = false; 1879 var filter_wrappers = {}; 1880 1881 for( var fi = i; fi <= total; fi++ ) { 1882 if( fi === 0 ) { continue; } 1883 1884 var $filter_wrapper = $( $preset_wrapper ).find( '.awf-sbs-' + fi ); 1885 if( 0 === $filter_wrapper.length ) { continue; } 1886 1887 var has_active_filters = a_w_f.filter_wrapper_has_active( $filter_wrapper ); 1888 1889 if( 0 === i ) { 1890 if( has_active_filters ) { 1891 if( gap ) { 1892 a_w_f.reset_filter( $filter_wrapper.attr( 'data-taxonomy' ) ); 1893 } else { 1894 current_i++; next_i++; 1895 } 1896 1897 } else { 1898 gap = true; 1899 } 1900 1901 } else { 1902 if( has_active_filters ) { 1903 if( gap ) { 1904 a_w_f.reset_filter( $filter_wrapper.attr( 'data-taxonomy' ) ); 1905 } else { 1906 if( fi === next_i && ( $preset_wrapper.hasClass( 'awf-button' ) || fi < total ) ) { 1907 current_i = fi; next_i = current_i + 1; 1908 } 1909 } 1910 1911 } else { 1912 if( current_i >= 1 && fi === current_i ) { next_i = current_i; current_i--; } 1913 gap = true; 1914 } 1915 } 1916 1917 if( $preset_wrapper.hasClass( 'awf-sbs-unhide' ) && fi < next_i ) { 1918 $filter_wrapper.removeClass( 'awf-hidden' ); 1919 } else { 1920 $filter_wrapper.addClass( 'awf-hidden' ); 1921 } 1922 1923 filter_wrappers[fi] = $filter_wrapper; 1924 } 1925 1926 if( next_i < 2 ) { $preset_wrapper.addClass( 'awf-sbs-first' ); } else { $preset_wrapper.removeClass( 'awf-sbs-first' ); } 1927 $preset_wrapper.removeClass( 'awf-sbs-next-btn-hidden' ).removeClass( 'awf-sbs-last' ); 1928 1929 var show = next_i; 1930 var update_counts = true; 1931 1932 if( $preset_wrapper.hasClass( 'awf-sbs-next-btn-on' ) ) { 1933 1934 if( current_i < 1 || next_i > total || ( next_i === total && apply_filters ) ) { 1935 $preset_wrapper.addClass( 'awf-sbs-next-btn-hidden' ); 1936 } 1937 1938 if( current_i === i ) { update_counts = false; } 1939 if( next_i === 2 && i > 0 && i !== next_i ) { $preset_wrapper.addClass( 'awf-sbs-first' ); } 1940 1941 if( i > 0 && i === current_i ) { show = current_i; } 1942 } 1943 1944 if( show > total ) { show = total; } else { 1945 if( ! ( show in filter_wrappers ) ) { 1946 var $fw = $( $preset_wrapper ).find( '.awf-sbs-' + show ); 1947 if( 0 < $fw.length ) { filter_wrappers[show] = $fw; } 1948 } 1949 } 1950 1951 if( show in filter_wrappers ) { 1952 var $loading = filter_wrappers[show].has( '.awf-filters-container:not(.awf-style-range-slider):not(.awf-product-search):not(.awf-style-daterangepicker)' ); 1953 1954 if( 0 < $loading.length ) { 1955 filter_wrappers[show].addClass( 'awf-sbs-loading' ); 1956 1957 $( document ).one( 'awf_after_counts_update', function() { 1958 filter_wrappers[show].removeClass( 'awf-sbs-loading' ); 1959 }); 1960 } 1961 1962 filter_wrappers[show].removeClass( 'awf-hidden' ); 1963 } 1964 1965 if( $preset_wrapper.hasClass( 'awf-sbs-submit-last' ) && next_i > total ) { 1966 1967 if( ! gap ) { 1968 1969 $preset_wrapper.addClass( 'awf-sbs-last' ); 1970 1971 if( apply_filters ) { 1972 if( $preset_wrapper.hasClass( 'awf-sbs-next-btn-on' ) ) { 1973 apply_filters = false; 1974 } else { 1975 if( ! $preset_wrapper.hasClass( 'awf-button' ) ) { $preset_wrapper.addClass( 'awf-sbs-redirect' ); } 1976 } 1977 1978 } else { 1979 1980 if( ! $preset_wrapper.hasClass( 'awf-button' ) ) { 1981 if( current_i === total && i !== 0 ) { $preset_wrapper.addClass( 'awf-sbs-redirect' ); } 1982 } 1983 1984 } 1985 } 1986 1987 } else { 1988 1989 if( apply_filters ) { 1990 if( $preset_wrapper.hasClass( 'awf-sbs-submit-last' ) ) { 1991 apply_filters = false; 1992 if( $preset_wrapper.hasClass( 'awf-sbs-next-btn-on' ) ) { 1993 update_counts = true; 1994 } 1995 1996 } else { 1997 if( $preset_wrapper.hasClass( 'awf-button' ) ) { apply_filters = false; } else { $preset_wrapper.addClass( 'awf-sbs-redirect' ); } 1998 } 1999 } 2000 } 2001 2002 if( next_i > total && ( i === (next_i - 1) ) ) { 2003 update_counts = false; 2004 2005 if( $preset_wrapper.hasClass( 'awf-sbs-next-btn-on' ) && ! $preset_wrapper.hasClass( 'awf-button' ) ) { 2006 $preset_wrapper.addClass( 'awf-sbs-redirect' ); 2007 } 2008 } 2009 2010 if( apply_filters || $preset_wrapper.hasClass( 'awf-sbs-redirect' ) ) { 2011 a_w_f.apply_filter( 'sbs', $preset_wrapper ); 2012 2013 } else { 2014 if( update_counts ) { 2015 a_w_f.update_counts(); 2016 2017 } else { 2018 if( show in filter_wrappers ) { 2019 filter_wrappers[show].removeClass( 'awf-sbs-loading' ); 2020 2021 var $has_ps = filter_wrappers[show].find( '.awf-pretty-scrollbars' ); 2022 2023 if( 0 < $has_ps.length ) { 2024 $.each( a_w_f.pretty_scrollbars, function( i, ps ) { if( ps.element === $has_ps[0] ) { ps.update(); return false; } }); 2025 } 2026 } 2027 } 2028 } 2029 }; 2030 2031 a_w_f.filter_wrapper_has_active = function( $filter_wrapper ) { 2032 if( $filter_wrapper.attr( 'data-taxonomy' ) in awf_data.query ) { 2033 return true; 2034 } else { 2035 if( $filter_wrapper[0].hasAttribute( 'data-taxonomy-max' ) && ( $filter_wrapper.attr( 'data-taxonomy-max' ) in awf_data.query ) ) { 2036 return true; 2037 } 2038 } 2039 2040 return false; 2041 }; 2042 2043 a_w_f.update_url = function() { 2044 2045 if( 'rewrite_page' in awf_data ) { 2046 2047 a_w_f.request_url().then( function( response ) { 2048 if( 'url' in response ) { 2049 window.history.pushState( { awf_ajax_call: true }, '', response.url ); 2050 } else { 2051 window.history.pushState( { awf_ajax_call: true }, '', a_w_f.build_url() ); 2052 } 2053 } ); 2054 2055 } else { 2056 var url = a_w_f.build_url(); 2057 window.history.pushState( { awf_ajax_call: true }, '', url ); 2058 } 2059 }; 2060 2061 a_w_f.build_products_wrappers = function() { 2062 if( 'products_wrapper' in awf_data ) { 2063 a_w_f.products_wrappers = $( awf_data.products_wrapper ); 2064 2065 } else if( 'products_container' in awf_data ) { 2066 a_w_f.products_wrappers = $( awf_data.products_container ).parent(); 2067 2068 if( 0 === a_w_f.products_wrappers.length ) { 2069 a_w_f.products_wrappers = $( awf_data.no_result_container ).first().parent(); 2070 } 2071 2072 } else { 2073 a_w_f.products_wrappers = $([]); 2074 } 2075 }; 2076 2077 a_w_f.extract_products_wrappers = function( $html ) { 2078 var $wrappers; 2079 2080 if( 'products_wrapper' in awf_data ) { 2081 $wrappers = $html.find( awf_data.products_wrapper ); 2082 2083 } else if( 'products_container' in awf_data ) { 2084 $wrappers = $html.find( awf_data.products_container ).parent(); 2085 2086 if( 0 === $wrappers.length ) { 2087 $wrappers = $html.find( awf_data.no_result_container ).first().parent(); 2088 } 2089 } 2090 2091 if( 'undefined' === typeof( $wrappers ) ) { 2092 $wrappers = $([]); 2093 } 2094 2095 return $wrappers; 2096 }; 2097 2098 a_w_f.setup_pagination_after = function( $container ) { 2099 var classes_array = []; 2100 2101 $container.find( awf_data.pagination_container ).each( function() { 2102 var classes = $( this ).prev().attr( 'class' ); 2103 2104 if( 'undefined' === typeof( classes ) ) { 2105 classes = ''; 2106 } else { 2107 classes = classes.split( /\s+/ ).join( '.' ); 2108 } 2109 2110 if( 0 < classes.length ) { 2111 classes_array.push( '.' + classes ); 2112 } 2113 } ); 2114 2115 if( 0 < classes_array.length ) { 2116 awf_data.pagination_after = classes_array.join( ',' ); 2117 } 2118 } 2119 2120 a_w_f.setup_ajax_pagination = function( $wrappers ) { 2121 2122 var $pagination_containers = $wrappers.find( awf_data.pagination_container ); 2123 2124 awf_data.ajax_pagination_loading = false; 2125 2126 if( 'page_numbers' === awf_data.ajax_pagination.type ) { 2127 if( 0 === $pagination_containers.length ) { return; } 2128 2129 var $page_numbers = $pagination_containers.find( awf_data.ajax_pagination.page_number ); 2130 2131 if( 'block_pagination' in awf_data.ajax_pagination ) { 2132 $page_numbers = $page_numbers.add( $pagination_containers.find( awf_data.ajax_pagination.next ) ).add( $pagination_containers.find( awf_data.ajax_pagination.prev ) ); 2133 } 2134 2135 $page_numbers 2136 .off( 'click' ) 2137 .on( 'click', function( event ) { 2138 event.preventDefault(); 2139 2140 var $page_number = $( this ); 2141 var number = ''; 2142 2143 if( $page_number.is( awf_data.ajax_pagination.next ) ) { 2144 if( 'block_pagination' in awf_data.ajax_pagination ) { 2145 $page_number = $pagination_containers.find( '.current' ).next( awf_data.ajax_pagination.page_number ); 2146 } else { 2147 $page_number = $pagination_containers.find( '.current' ).first().parent().next().find( awf_data.ajax_pagination.page_number ); 2148 } 2149 2150 } else if( $page_number.is( awf_data.ajax_pagination.prev ) ) { 2151 if( 'block_pagination' in awf_data.ajax_pagination ) { 2152 $page_number = $pagination_containers.find( '.current' ).prev( awf_data.ajax_pagination.page_number ); 2153 } else { 2154 $page_number = $pagination_containers.find( '.current' ).first().parent().prev().find( awf_data.ajax_pagination.page_number ); 2155 } 2156 } 2157 2158 number = $page_number.text().replace( /[^0-9]/gi, '' ); 2159 if( 0 === number.length ) { return; } 2160 2161 awf_data.ajax_pagination_number = parseInt( number, 10 ); 2162 awf_data.ajax_pagination_url = $page_number.attr( 'href' ); 2163 awf_data.ajax_pagination_loading = true; 2164 2165 if( 'rewrite_page' in awf_data ) { 2166 window.history.pushState( { awf_ajax_call: true }, '', awf_data.ajax_pagination_url ); 2167 } else { 2168 a_w_f.update_url(); 2169 } 2170 2171 a_w_f.ajax_filter( true ); 2172 }); 2173 2174 } else if( 'infinite_scroll' === awf_data.ajax_pagination.type ) { 2175 if( ( 'sc_page' in awf_data ) && 1 < a_w_f.products_wrappers.length ) { return; } 2176 2177 $pagination_containers.hide(); 2178 2179 a_w_f.setup_ajax_pagination_next( $pagination_containers.first() ); 2180 2181 awf_data.ajax_pagination.last_product = $wrappers.find( awf_data.ajax_pagination.product_container ).last(); 2182 if( 0 === awf_data.ajax_pagination.last_product.length ) { return; } 2183 awf_data.ajax_pagination.is_top = ( 'is_adjustment' in awf_data ) ? awf_data.ajax_pagination.last_product.offset().top + parseInt( awf_data.is_adjustment, 10 ) : awf_data.ajax_pagination.last_product.offset().top - ( 2 * awf_data.ajax_pagination.last_product.height() ); 2184 2185 if( ! ( 'initiated' in awf_data.ajax_pagination ) && ! awf_data.ajax_pagination_end_reached ) { 2186 var $window = $( window ); 2187 awf_data.ajax_pagination.body = $( 'body' ); 2188 awf_data.ajax_pagination_loading_query = JSON.stringify( awf_data.query ); 2189 2190 $( document ).on( 'awf_after_ajax_products_update awf_ajax_products_update_cancellation', function() { 2191 var $w = $( window ); 2192 if( $w.height() >= $( document ).height() ) { $w.trigger( 'scroll' ); } 2193 } ); 2194 2195 $window.on( 'scroll touchstart', function() { 2196 var $w = $( this ); 2197 2198 if( 0 === awf_data.ajax_pagination.last_product.length ) { return; } 2199 2200 if ( ! awf_data.ajax_pagination_end_reached 2201 && ! awf_data.ajax_pagination_loading 2202 && ! awf_data.ajax_pagination.body.hasClass( 'awf-loading-ajax' ) 2203 && ! ( awf_data.ajax_pagination.body.hasClass( 'awf-togglable-preset-on' ) && a_w_f.togglable_preset.hasClass( 'awf-left-popup-sidebar-mode' ) ) 2204 && ( $w.scrollTop() + $w.height() ) >= awf_data.ajax_pagination.is_top 2205 ) { 2206 awf_data.ajax_pagination_loading = true; 2207 a_w_f.ajax_filter( true ); 2208 } 2209 }); 2210 2211 if( $window.height() >= $( document ).height() ) { $window.trigger( 'scroll' ); } 2212 2213 awf_data.ajax_pagination.initiated = true; 2214 } 2215 2216 } else if( 'more_button' === awf_data.ajax_pagination.type ) { 2217 2218 if( 0 === $pagination_containers.length ) { return; } 2219 2220 if( ( 'sc_page' in awf_data ) && 1 < a_w_f.products_wrappers.length ) { return; } 2221 2222 awf_data.ajax_pagination.last_product = $wrappers.find( awf_data.ajax_pagination.product_container ).last(); 2223 if( 0 === awf_data.ajax_pagination.last_product.length ) { return; } 2224 2225 $pagination_containers.hide(); 2226 2227 a_w_f.setup_ajax_pagination_next( $pagination_containers.first() ); 2228 2229 if ( ! awf_data.ajax_pagination_end_reached ) { 2230 $( '<div class="awf-pagination-more-btn-container"><button type="button" title="' + awf_data.i18n.ajax_pagination_more_button + '" class="awf-pagination-more-btn">' + awf_data.i18n.ajax_pagination_more_button + '</button></div>' ) 2231 .on( 'click', function() { 2232 var $button = $( this ); 2233 2234 awf_data.ajax_pagination_loading = true; 2235 a_w_f.ajax_filter( true ); 2236 2237 $button.remove(); 2238 }) 2239 .insertAfter( $wrappers.find( awf_data.products_container ) ); 2240 } 2241 } 2242 }; 2243 2244 a_w_f.setup_ajax_pagination_next = function( $container ) { 2245 if( ! ( 'ajax_pagination_number' in awf_data ) ) { awf_data.ajax_pagination_number = 1; } 2246 2247 if( 1 === awf_data.ajax_pagination_number ) { 2248 awf_data.ajax_pagination_last = 0; 2249 2250 var $last_container = $container.find( awf_data.ajax_pagination.page_number + ':not(.next)' ).last(); 2251 if( 0 < $last_container.length ) { 2252 var text = $last_container.text().replace( /[^0-9]/gi, '' ); 2253 if( 0 < text.length ) { awf_data.ajax_pagination_last = parseInt( text, 10 ); } 2254 } 2255 } 2256 2257 var next_number = parseInt( ( awf_data.ajax_pagination_number + 1 ), 10 ); 2258 2259 if( next_number > awf_data.ajax_pagination_last ) { 2260 awf_data.ajax_pagination_end_reached = true; 2261 2262 } else { 2263 awf_data.ajax_pagination_number = next_number; 2264 awf_data.ajax_pagination_end_reached = false; 2265 } 2266 }; 2267 2268 a_w_f.setup_togglable_preset = function() { 2269 2270 a_w_f.togglable_preset = $( '.awf-togglable-preset' ); 2271 2272 if( 0 < a_w_f.togglable_preset.length ) { 2273 if( 1 < a_w_f.togglable_preset.length ) { 2274 a_w_f.togglable_preset.each( function( i, el ) { 2275 if( 0 < i ) { $( el ).remove(); } 2276 }); 2277 2278 a_w_f.togglable_preset = $( '.awf-togglable-preset' ); 2279 } 2280 2281 } else { 2282 a_w_f.togglable_preset = $( '.awf-togglable-on-s-preset' ); 2283 2284 if( 1 < a_w_f.togglable_preset.length ) { 2285 a_w_f.togglable_preset.each( function( i, el ) { 2286 if( 0 < i ) { $( el ).removeClass( 'awf-togglable-on-s-preset' ); } 2287 }); 2288 2289 a_w_f.togglable_preset = $( '.awf-togglable-on-s-preset' ); 2290 } 2291 } 2292 2293 if( 0 < a_w_f.togglable_preset.length ) { 2294 2295 a_w_f.togglable_preset.css( 'opacity', '1' ); 2296 a_w_f.insert_togglable_preset_btn(); 2297 2298 $( document ).on( 'awf_ajax_filter', function() { 2299 if( a_w_f.togglable_preset.hasClass( 'awf-above-products-mode' ) ) { 2300 if( a_w_f.togglable_preset.hasClass( 'awf-togglable-preset' ) 2301 || ( a_w_f.togglable_preset.hasClass( 'awf-togglable-on-s-preset' ) && $( 'body' ).hasClass( 'awf-togglable-preset-mode-on' ) ) 2302 ) { 2303 a_w_f.move_togglable_preset_to_placeholder(); 2304
2304 } 2305 } 2306 2307 if( awf_data.togglable_preset.close_preset_on_ajax_update ) { 2308 a_w_f.close_togglable_preset(); 2309 } 2310 } ); 2311 2312 $( document ).on( 'awf_after_ajax_products_update', function() { 2313 if( 0 === $( '.awf-togglable-preset-btn' ).length ) { a_w_f.insert_togglable_preset_btn(); } 2314 2315 if( a_w_f.togglable_preset.hasClass( 'awf-above-products-mode' ) ) { 2316 if( a_w_f.togglable_preset.hasClass( 'awf-togglable-preset' ) 2317 || ( a_w_f.togglable_preset.hasClass( 'awf-togglable-on-s-preset' ) && $( 'body' ).hasClass( 'awf-togglable-preset-mode-on' ) ) 2318 ) { 2319 a_w_f.move_togglable_preset_above_products(); 2320 } 2321 2322 } 2323 } ); 2324 2325 if( a_w_f.togglable_preset.hasClass( 'awf-togglable-on-s-preset' ) ) { 2326 2327 if( a_w_f.togglable_preset.attr( 'data-responsive-width' ) >= window.innerWidth ) { 2328 2329 if( a_w_f.togglable_preset.hasClass( 'awf-left-popup-sidebar-mode' ) ) { 2330 a_w_f.togglable_preset.hide(); 2331 setTimeout( function() { 2332 a_w_f.togglable_preset.show(); 2333 2334 var $thl = a_w_f.togglable_preset.find( '.awf-filter-wrapper.awf-thl' ); 2335 if( 0 < $thl.length && ( 'update_thl' in a_w_f ) ) { 2336 a_w_f.update_thl( $thl ); 2337 } 2338 }, 1000); 2339 } 2340 2341 $( 'body' ).addClass( 'awf-togglable-preset-mode-on' ); 2342 2343 if( a_w_f.togglable_preset.hasClass( 'awf-above-products-mode' ) ) { 2344 a_w_f.move_togglable_preset_above_products(); 2345 } 2346 } 2347 2348 $( window ).resize( function() { 2349 if( a_w_f.togglable_preset.attr( 'data-responsive-width' ) >= window.innerWidth ) { 2350 if( ! $( 'body' ).hasClass( 'awf-togglable-preset-mode-on' ) ) { 2351 $( 'body' ).addClass( 'awf-togglable-preset-mode-on' ); 2352 if( a_w_f.togglable_preset.hasClass( 'awf-above-products-mode' ) ) { 2353 a_w_f.move_togglable_preset_above_products(); 2354 } 2355 } 2356 2357 } else { 2358 if( $( 'body' ).hasClass( 'awf-togglable-preset-mode-on' ) ) { 2359 $( 'body' ).removeClass( 'awf-togglable-preset-mode-on' ); 2360 if( a_w_f.togglable_preset.hasClass( 'awf-above-products-mode' ) ) { 2361 a_w_f.move_togglable_preset_to_placeholder(); 2362 } 2363 } 2364 } 2365 }); 2366 2367 } else { 2368 if( a_w_f.togglable_preset.hasClass( 'awf-above-products-mode' ) ) { 2369 a_w_f.move_togglable_preset_above_products(); 2370 } 2371 } 2372 2373 if( a_w_f.togglable_preset.hasClass( 'awf-fix-popup-close-btn' ) && ! a_w_f.togglable_preset.hasClass( 'awf-above-products-mode' ) && 0 === $( '#awf-fixed-popup-close-btn' ).length ) { 2374 a_w_f.togglable_preset.find( '.awf-togglable-preset-close-btn' ).first().appendTo( 'body' ).attr( 'id', 'awf-fixed-popup-close-btn'); 2375 } 2376 2377 $( '.awf-togglable-preset-close-btn' ).on( 'click', a_w_f.close_togglable_preset ); 2378 } 2379 }; 2380 2381 a_w_f.move_togglable_preset_above_products = function() { 2382 a_w_f.togglable_preset.after( '<div id="awf-togglable-preset-placeholder"></div>' ); 2383 a_w_f.togglable_preset.insertAfter( $( '.awf-togglable-preset-btn' ) ); 2384 }; 2385 2386 a_w_f.move_togglable_preset_to_placeholder = function() { 2387 a_w_f.togglable_preset.insertBefore( $( '#awf-togglable-preset-placeholder' ) ); 2388 $( '#awf-togglable-preset-placeholder' ).remove(); 2389 }; 2390 2391 a_w_f.insert_togglable_preset_btn = function() { 2392 2393 var $togglable_preset_btn = $( '<div class="awf-togglable-preset-btn" role="button" aria-label="' + awf_data.i18n.togglable_preset_btn_label + '" tabindex="0"><i class="fas fa-bars awf-togglable-preset-btn-icon"></i><span>' + awf_data.i18n.togglable_preset_btn_label + '</span></div>' ); 2394 2395 var $position = $( '.annasta-toggle-filters-button' ).first(); 2396 2397 if( 0 < $position.length ) { 2398 $togglable_preset_btn.insertBefore( $position ); 2399 2400 } else { 2401 2402 if( 0 < awf_data.togglable_preset.insert_btn_before_container.length ) { 2403 $position = $( awf_data.togglable_preset.insert_btn_before_container ).first(); 2404 } 2405 2406 if( 0 < $position.length ) { 2407 $togglable_preset_btn.insertBefore( $position ); 2408 2409 } else if( 0 < a_w_f.products_wrappers.length ) { 2410 $togglable_preset_btn.prependTo( a_w_f.products_wrappers.first() ); 2411 2412 if( 'fixed' === $togglable_preset_btn.css( 'position' ) ) { 2413 $togglable_preset_btn.appendTo( $( 'body' ) ); 2414 2415 } else { 2416 if( 'body' === awf_data.products_wrapper ) { 2417 $togglable_preset_btn.insertBefore( $( [awf_data.products_container, awf_data.no_result_container].join( ',' ) ).first() ); 2418 } 2419 } 2420 } else { 2421 return; 2422 } 2423 } 2424 2425 if( 'fixed' === $togglable_preset_btn.css( 'position' ) ) { 2426 a_w_f.togglable_preset.removeClass( 'awf-above-products-mode' ).addClass( 'awf-left-popup-sidebar-mode' ); 2427 } 2428 2429 if( a_w_f.togglable_preset.hasClass( 'awf-togglable-preset' ) ) { 2430 $togglable_preset_btn.addClass( 'awf-show-togglable-preset-btn' ); 2431 } 2432 2433 $togglable_preset_btn 2434 .off( 'click' ) 2435 .on( 'click', function() { 2436 2437 if( a_w_f.togglable_preset.hasClass( 'awf-left-popup-sidebar-mode' ) ) { 2438 $( 'body' ).addClass( 'awf-togglable-preset-on' ); 2439 2440 a_w_f.togglable_preset.before( '<div class="awf-togglable-preset-overlay"></div>' ); 2441 $( '.awf-togglable-preset-overlay' ).on( 'click', a_w_f.close_togglable_preset ); 2442 2443 $( '.awf-togglable-preset-close-btn' ).trigger( 'focus' ); 2444 2445 } else if( a_w_f.togglable_preset.hasClass( 'awf-above-products-mode' ) ) { 2446 $( 'body' ).toggleClass( 'awf-togglable-preset-on' ); 2447 } 2448 2449 if( ! a_w_f.togglable_preset.find( '.awf-pretty-scrollbars' ).first().hasClass( 'ps--active-y' ) ) { 2450 $.each( a_w_f.pretty_scrollbars, function( i, ps ) { 2451 if( a_w_f.togglable_preset.has( $( ps.element ) ) ) { ps.update(); } 2452 }); 2453 } 2454 2455 }) 2456 .off( 'keydown' ) 2457 .on( 'keydown', function( event ) { 2458 if( event.keyCode === 13 || event.keyCode === 32 ) { 2459 event.preventDefault(); 2460 2461 $( this ).trigger( 'click' ); 2462 } 2463 }) 2464 }; 2465 2466 a_w_f.close_togglable_preset = function() { 2467 2468 var $b = $( 'body' ); 2469 2470 if( $b.hasClass( 'awf-togglable-preset-on' ) ) { 2471 $b.removeClass( 'awf-togglable-preset-on' ); 2472 $( '.awf-togglable-preset-overlay' ).remove(); 2473 2474 if( ! ( 'disable_accessibility_support' in awf_data ) ) { 2475 $( '.awf-togglable-preset-btn' ).trigger( 'focus' ); 2476 } 2477 } 2478 }; 2479 2480 a_w_f.toggle_collapsible = function( $filter_title_container ) { 2481 2482 if( 0 === $filter_title_container.length ) { return; } 2483 2484 var $fw = $filter_title_container.closest( '.awf-filter-wrapper' ); 2485 $fw.toggleClass( 'awf-collapsed' ); 2486 2487 if( $fw.hasClass( 'awf-collapsed' ) ) { 2488 $filter_title_container.attr( 'aria-expanded', 'false' ); 2489 2490 } else { 2491 $filter_title_container.attr( 'aria-expanded', 'true' ); 2492 $fw.find( '.awf-filters-container :focusable' ).first().trigger( 'focus' ); 2493 2494 var $has_ps = $fw.find( '.awf-pretty-scrollbars' ).first(); 2495 2496 if( 0 < $has_ps.length ) { 2497 $.each( a_w_f.pretty_scrollbars, function( i, ps ) { 2498 if( ps.element === $has_ps[0] ) { 2499 ps.update(); 2500 return false; 2501 } 2502 }); 2503 } 2504 2505 if( $fw.hasClass( 'awf-thl' ) ) { 2506 a_w_f.update_thl( $fw ); 2507 } 2508 } 2509 }; 2510 2511 a_w_f.build_range_slider = function ( range_container ) { 2512 var $range_container = $( range_container ); 2513 2514 var range_values = $range_container.attr( 'data-values' ).split( '--' ); 2515 $( range_values ).each( function( i, v ) { 2516 range_values[i] = parseFloat( v ); 2517 });
2518 2519 var min = parseFloat( range_values[0] ); 2520 var max = parseFloat( range_values[range_values.length-1] ); 2521 2522 if( $range_container.hasClass( 'awf-price-range-slider-container' ) ) { 2523 2524 var min_limit = parseFloat( $range_container.attr( 'data-min-limit' ) ); 2525 var max_limit = parseFloat( $range_container.attr( 'data-max-limit' ) ); 2526 2527 if( ( min !== min_limit) || ( max !== max_limit) ) { 2528 range_values = range_values.filter( function( value ) { 2529 if( value <= min_limit || value >= max_limit ) { return false; } 2530 2531 return true; 2532 }); 2533 2534 range_values.unshift( min_limit ); 2535 range_values.push( max_limit ); 2536 2537 min = min_limit; 2538 max = max_limit; 2539 } 2540 } 2541 2542 var format = { 2543 decimals: $range_container.attr( 'data-decimals' ), 2544 mark: $range_container.attr( 'data-decimals-separator' ), 2545 thousand: $range_container.attr( 'data-thousand-separator' ), 2546 prefix: $range_container.attr( 'data-prefix' ), 2547 suffix: $range_container.attr( 'data-postfix' ) 2548 } 2549 2550 var display_tooltips = false; 2551 2552 if( ( format.mark === format.thousand ) || 'disable_thousand_separator' in awf_data ) { 2553 $range_container.attr( 'data-thousand-separator', '' ); 2554 format.thousand = ''; 2555 } 2556 2557 if( 'above_handles' === $range_container.attr( 'data-tooltips' ) ) { 2558 display_tooltips = [ wNumb( format ), wNumb( format ) ]; 2559 } 2560 2561 noUiSlider.create( range_container, { 2562 range: { 2563 'min': [min], 2564 'max': [max] 2565 }, 2566 start: [parseFloat( $range_container.find( '.awf-range-slider-min' ).val() ), parseFloat( $range_container.find( '.awf-range-slider-max' ).val() )], 2567 step: parseFloat( $range_container.attr( 'data-step' ) ), 2568 pips: { 2569 mode: 'values', 2570 values: range_values, 2571 density: 5, 2572 format: wNumb( format ) 2573 }, 2574 connect: true, 2575 tooltips: display_tooltips, 2576 behaviour: 'drag' 2577 }); 2578 2579 range_container.noUiSlider.on( 'change', function( values, handle ) { 2580 a_w_f.range_slider_onchange( range_container, values, min, max ); 2581 }); 2582 2583 if( 'premium' in a_w_f ) { a_w_f.set_interactive_slider_tooltips( range_container ); } 2584 }; 2585 2586 a_w_f.get_ajax_history_state = function () { 2587 var history_state = window.history.state; 2588 2589 if( 'object' === typeof( history_state ) && null !== history_state ) { 2590 history_state.awf_ajax_call = true; 2591 } else { 2592 history_state = { awf_ajax_call: true }; 2593 } 2594 2595 return history_state; 2596 }; 2597 2598 a_w_f.load_new_history_state = function( url ) { 2599 2600 if( 'undefined' === typeof( url ) ) { 2601 2602 if( 'rewrite_page' in awf_data ) { 2603 $( 'body' ).block( { message: $( '<div class="awf-loader"></div>' ), blockMsgClass: 'blockMsg awf-blockMsg' } ); 2604 2605 a_w_f.request_url().then( function( response ) { 2606 2607 if( 'url' in response ) { 2608 a_w_f.load_new_history_state( response.url ); 2609 2610 } else { 2611 url = a_w_f.build_url(); 2612 a_w_f.load_new_history_state( url ); 2613 } 2614 } ); 2615 2616 } else { 2617 url = a_w_f.build_url(); 2618 a_w_f.load_new_history_state( url ); 2619 } 2620 2621 } else { 2622 2623 var history_state = a_w_f.get_ajax_history_state(); 2624 2625 window.history.replaceState( history_state, document.title, window.location.href ); 2626 window.history.pushState( history_state, '', url ); 2627 window.location.reload(); 2628 } 2629 }; 2630 2631 $( window ).on( 'popstate', function( event ) { 2632 if( ( 'undefined' !== typeof( event.originalEvent.state ) && null !== event.originalEvent.state ) && ( 'awf_ajax_call' in event.originalEvent.state ) ) { 2633 window.location.reload(); 2634 } 2635 }); 2636 2637 if( ! ( 'redirect_ajax' in awf_data ) ) { 2638 2639 window.history.replaceState( a_w_f.get_ajax_history_state(), document.title, window.location.href ); 2640 2641 $( window ).on( 'beforeunload', function() { 2642 var state = window.history.state; 2643 2644 if( 'object' === typeof( state ) && null !== state ) { 2645 delete state.awf_ajax_call; 2646 } 2647 2648 window.history.replaceState( state, document.title, window.location.href ); 2649 });
2650 2651 $( 'body' ).addClass( 'awf-filterable' ); 2652 2653 a_w_f.build_products_wrappers(); 2654 2655 a_w_f.page_reload = false; 2656 if( 'no' === awf_data.wrapper_reload ) { 2657 if( a_w_f.products_wrappers.find( awf_data.products_container ).length < a_w_f.products_wrappers.length && 0 < a_w_f.products_wrappers.find( awf_data.no_result_container ).first().length ) { 2658 a_w_f.page_reload = true; 2659 } 2660 } 2661 2662 a_w_f.update_orderby( false ); 2663 a_w_f.setup_togglable_preset(); 2664 2665 if( ( 'title_badges' in awf_data ) || 'yes' === awf_data.wrapper_reload ) { 2666 $( '<div id="awf-title-badges-storage" style="display: none;" class="awf-active-badges-container"></div>' ).insertAfter( a_w_f.products_wrappers ); 2667 } 2668 2669 if( 'ajax_pagination' in awf_data ) { 2670 $( '.awf-preset-wrapper.awf-ajax.awf-button' ).find( '.awf-filter, .awf-range-slider-container, .awf-taxonomy-range-slider-container' ).addClass( 'awf-button-filter' ); 2671 a_w_f.setup_ajax_pagination( a_w_f.products_wrappers ); 2672 } 2673 2674 $( '.awf-force-reload .awf-filter' ).each( function( i, filter ) { 2675 var $filter = $( filter ); 2676 if( 0 === i ) { 2677 if( a_w_f.force_reload ) { 2678 if( ! ( $filter.attr( 'data-taxonomy' ) in a_w_f.force_reload ) ) { 2679 a_w_f.force_reload.push( $filter.attr( 'data-taxonomy' ) ); 2680 } 2681 } else { 2682 a_w_f.force_reload = [$filter.attr( 'data-taxonomy' )]; 2683 } 2684 } 2685 $filter.on( 'click', function() { a_w_f.page_reload = true; }); 2686 }); 2687 2688 a_w_f.woocommerce_breadcrumbs = $( '.woocommerce-breadcrumb' ); 2689 2690 if( 'undefined' !== typeof $.blockUI ) { 2691 $.blockUI.defaults.message = '<div class="awf-loader"></div>'; 2692 $.blockUI.defaults.overlayCSS = { backgroundColor: '#fff', opacity: 0.5, cursor: 'none' }; 2693 $.blockUI.defaults.css = { border: 'none' }; 2694 } 2695 } 2696 2697 $( '.awf-filter' ).each( function( i, filter ) { 2698 a_w_f.set_filter_events( $( filter ) ); 2699 }); 2700 2701 $( '.awf-range-slider-container' ).each( function( i, el ) { 2702 var $el = $( el ); 2703 2704 if( i === 0 ) { $el.addClass( 'awf-active' ); } 2705 a_w_f.build_range_slider( el ); 2706 2707 if( $el.hasClass( 'awf-range-btn' ) ) { 2708 $el.parent().find( '.awf-apply-filter-btn' ).on( 'click', function() { 2709 a_w_f.build_active_badges(); 2710 } ); 2711 } 2712 }); 2713 2714 $( '.awf-sbs' ).each( function( nn, wrapper ) { 2715 a_w_f.sbs = 'yes'; 2716 var $wrapper = $( wrapper ); 2717 var apply = true; 2718 var force_redirect = false; 2719 2720 if( $wrapper.hasClass( 'awf-sbs-submit-last' ) ) { apply = false; } 2721 2722 if( $wrapper.hasClass( 'awf-button' ) ) { 2723 apply = false; 2724 $wrapper.find( '.awf-apply-filter-btn' ).on( 'click', function() { 2725 if( ( 'redirect_ajax' in awf_data ) || wrapper.hasAttribute( 'data-sbs-redirect' ) ) { $wrapper.addClass( 'awf-sbs-redirect' ); } 2726 a_w_f.apply_filter( 'sbs', $wrapper ); 2727 }); 2728 } else { 2729 if( ! $wrapper.hasClass( 'awf-sbs-submit-last' ) ) { force_redirect = true; } 2730 } 2731 2732 if( $wrapper.hasClass( 'awf-sbs-next-btn-on' ) ) { 2733 apply = false; 2734 var redirect_next = force_redirect; 2735 force_redirect = false; 2736 2737 $wrapper.find( '.awf-sbs-next-btn' ).on( 'click', function() { 2738 if( redirect_next ) { $wrapper.addClass( 'awf-sbs-redirect' ); } 2739 a_w_f.update_sbs( $wrapper, 0, true ); 2740 }); 2741 2742 } 2743 2744 if( $wrapper.hasClass( 'awf-sbs-back-btn-on' ) ) { 2745 $wrapper.find( '.awf-sbs-back-btn' ).on( 'click', function() { 2746 var i = parseInt( $wrapper.find( '.awf-filter-wrapper:not(.awf-hidden)' ).last().attr( 'data-sbs-i' ) ) - 1; 2747 2748 if( $wrapper.hasClass( 'awf-sbs-next-btn-on' ) ) { 2749 a_w_f.reset_filter( $wrapper.find( '.awf-filter-wrapper.awf-sbs-' + (i + 1) ).attr( 'data-taxonomy' ) ); 2750 } else { 2751 a_w_f.reset_filter( $wrapper.find( '.awf-filter-wrapper.awf-sbs-' + i ).attr( 'data-taxonomy' ) ); 2752 if( i < 2 ) { i = 0; } 2753 } 2754 2755 a_w_f.update_sbs( $wrapper, i, apply ); 2756 }); 2757 } 2758 2759 $wrapper.find( '.awf-filter[type="checkbox"], .awf-filter[type="radio"]' ).on( 'click', function() { 2760 if( force_redirect ) { $wrapper.addClass( 'awf-sbs-redirect' ); } 2761 a_w_f.update_sbs( $wrapper, $( this ).closest( '.awf-filter-wrapper' ).first().attr( 'data-sbs-i' ), apply ); 2762 });
2763 $wrapper.find( '.awf-filter[type="search"]' ).on( 'change', function() { 2764 if( force_redirect ) { $wrapper.addClass( 'awf-sbs-redirect' ); } 2765 a_w_f.update_sbs( $wrapper, $( this ).closest( '.awf-filter-wrapper' ).first().attr( 'data-sbs-i' ), apply ); 2766 }); 2767 $wrapper.find( '.awf-range-slider-container' ).each( function( i, range ) { 2768 $( range ).attr( 'data-force-sbs-redirect', ( force_redirect ? '1' : '0' ) ).attr( 'data-apply-sbs', ( apply ? '1' : '0' ) ).closest( '.awf-filter-wrapper' ).first().addClass( 'awf-sbs-range-slider' ); 2769 }); 2770 $wrapper.find( '.awf-taxonomy-range-slider-container' ).each( function( i, slider ) { 2771 $( slider ).attr( 'data-force-sbs-redirect', ( force_redirect ? '1' : '0' ) ).attr( 'data-apply-sbs', ( apply ? '1' : '0' ) ); 2772 }); 2773 $wrapper.find( '.awf-daterangepicker' ).each( function( i, daterangepicker ) { 2774 $( daterangepicker ).on( 'apply.daterangepicker cancel.daterangepicker', function() { 2775 if( force_redirect ) { $wrapper.addClass( 'awf-sbs-redirect' ); } 2776 a_w_f.update_sbs( $wrapper, $( daterangepicker ).closest( '.awf-filter-wrapper' ).first().attr( 'data-sbs-i' ), apply ); 2777 }); 2778 }); 2779 2780 a_w_f.update_sbs( $wrapper, 0, false ); 2781 }); 2782 2783 $( document ).on( 'click', '.awf-url label', function() { 2784 if( $( this ).siblings( 'input' ).first().is( ':disabled' ) ) { return; } 2785 2786 $( this ).siblings( 'input' ).prop( 'checked', true ); 2787 }); 2788 2789 $( document ).on( 'click', '.awf-apply-filter-btn', function() { 2790 a_w_f.apply_filter( true, $( this ).closest( '.awf-preset-wrapper' ) ); 2791 }); 2792 2793 $( document ).on( 'submit', '.awf-filters-form', function() { 2794 a_w_f.update_url(); 2795 2796 $( this ).find( '.awf-filter' ).each( function( i, filter ) { 2797 var name = $( filter ).attr( 'name' ); 2798 2799 var brackets_pos = name.lastIndexOf( '[]' ); 2800 if( -1 < brackets_pos ) { name = name.substr( 0, brackets_pos ); } 2801 2802 if( ! ( name in awf_data.query ) ) { 2803 $( filter ).attr( 'disabled', 'disabled' ); } 2804 }); 2805 }); 2806 2807 $( document ).on( 'click', '.awf-collapsible .awf-filter-title-container', function() { a_w_f.toggle_collapsible( $( this ) ); }); 2808 2809 a_w_f.cc_filters = $( '.awf-collapsible-children' ); 2810 2811 if( 0 < a_w_f.cc_filters.length ) { 2812 2813 a_w_f.cc_filters.each( function( i, filter ) { 2814 var $fsc = $( filter ); 2815 2816 $fsc.children( 'ul').first().on( 'click', '.awf-parent-container:not(.awf-hide-collapse-button)', function( event ) { 2817 2818 if( ( 'target' in event ) && ! $( event.target ).hasClass( 'awf-filter-container' ) ) { return; } 2819 2820 var $filter_container = $( this ); 2821 var $filter_wrapper = $filter_container.closest( '.awf-filter-wrapper' ); 2822 $filter_container.toggleClass( 'awf-collapsed-on' ); 2823 $filter_container.next( '.awf-children-container' ).toggleClass( 'awf-collapsed' ); 2824 2825 if( $filter_container.hasClass( 'awf-collapsed-on' ) ) { 2826 $filter_container.attr( 'aria-expanded', 'false' ); 2827 } else { 2828 $filter_container.attr( 'aria-expanded', 'true' ); 2829 } 2830 2831 $filter_container.find( 'label' ).first().trigger( 'focus' ); // Talkback fix 2832 2833 var $a_filter = $filter_container.find( '.awf-filter' ).first(); 2834 if( $a_filter.length > 0 ) { 2835 $.each( a_w_f.pretty_scrollbars, function( i, ps ) { 2836 if( 0 < $( ps.element ).closest( '.awf-filter-wrapper' ).is( '[data-taxonomy="' + $a_filter.attr( 'data-taxonomy' ) + '"]' ) ) { 2837 ps.update(); 2838 } 2839 }); 2840 2841 if( $filter_wrapper.hasClass( 'awf-thl' ) ) { 2842 a_w_f.update_thl( $filter_wrapper ); 2843 } 2844 } 2845 }); 2846 2847 if( ( 'premium' in a_w_f ) && 0 < $fsc.find( '.awf-empty-hidden').first().length ) { 2848 a_w_f.adjust_cc_filters( $fsc ); 2849 2850 $( document ).on( 'awf_after_counts_update', function() { 2851 a_w_f.adjust_cc_filters( $fsc ); 2852 } ); 2853 } 2854 } ); 2855 } 2856 2857 a_w_f.preset_wrappers.find( '.awf-terms-search' ).each( function() { 2858 var $ts = $( this ); 2859 2860 $ts.on( 'input', function() { 2861 awf_search_filter_terms( $( this ) ); 2862 });
2863 2864 $ts.siblings( '.awf-clear-terms-search-btn' ).on( 'click', function() { 2865 awf_search_filter_terms( $( this ).siblings( '.awf-terms-search' ).val( '' ).trigger( 'focus' ) ); 2866 }); 2867 }); 2868 2869 awf_register_reset_btns(); 2870 a_w_f.build_active_badges(); 2871 2872 $( '.awf-block-deselection-container .awf-filter-container' ).addClass( 'awf-block-deselection' ).each( function() { 2873 var taxonomy = ''; 2874 2875 $( this ).find( '.awf-filter' ).each( function() { 2876 taxonomy = $( this ).attr( 'data-taxonomy' ); 2877 2878 $( this ).on( 'click', function() { 2879 if( taxonomy in awf_data.query && -1 === awf_data.query[taxonomy].toString().indexOf( ',' ) ) { 2880 $( '.awf-filter[data-taxonomy="' + taxonomy + '"][value="' + awf_data.query[taxonomy] + '"]' ).closest( '.awf-filter-container' ).addClass( 'awf-is-last-active' ); 2881 $( '.awf-active-badge[data-taxonomy="' + taxonomy + '"]' ).addClass( 'awf-is-last-active' ); 2882 } else { 2883 $( '.awf-filter-wrapper[data-taxonomy="' + taxonomy + '"] .awf-filter-container' ).removeClass( 'awf-is-last-active' ); 2884 $( '.awf-active-badge[data-taxonomy="' + taxonomy + '"]' ).removeClass( 'awf-is-last-active' ); 2885 } 2886 } ); 2887 }); 2888 2889 if( taxonomy in awf_data.query && -1 === awf_data.query[taxonomy].toString().indexOf( ',' ) ) { 2890 $( '.awf-filter[data-taxonomy="' + taxonomy + '"][value="' + awf_data.query[taxonomy] + '"]' ).closest( '.awf-filter-container' ).addClass( 'awf-is-last-active' ); 2891 $( '.awf-active-badge[data-taxonomy="' + taxonomy + '"]' ).addClass( 'awf-is-last-active' ); 2892 } 2893 2894 } ); 2895 2896 if( 0 < $( '.awf-product-categories' ).length ) { 2897 $( document ).on( 'awf_after_ajax_products_update', function( event, $response ) { 2898 var $categories_list = $response.find( '.awf-product-categories' ).first(); 2899 if( 0 < $categories_list.length ) { 2900 $( '.awf-product-categories' ).replaceWith( $categories_list ); 2901 } else { 2902 $( '.awf-product-categories' ).html( '' ); 2903 } 2904 } ); 2905 } 2906 2907 a_w_f.accessibility_alert = function( text ) { 2908 2909 if( 'disable_accessibility_support' in awf_data ) { return; } 2910 2911 setTimeout( function() { 2912 $( '#awf-accessibility-alert' ).css( 'display', 'block' ).attr( 'role', 'alert' ).attr( 'aria-live', 'assertive' ).text( text ); 2913 setTimeout( function() { 2914 $( '#awf-accessibility-alert' ).css( 'display', 'none' ).attr( 'role', '' ).attr( 'aria-live', '' ); 2915 }, 2000); 2916 }, 500); 2917 2918 } 2919 2920 if( ! ( 'disable_accessibility_support' in awf_data ) ) { 2921 2922 $( document ).on( 'keydown', '.awf-active-badge', function( event ) { 2923 if( event.keyCode === 13 || event.keyCode === 32 ) { 2924 event.preventDefault(); 2925 this.click(); 2926 } 2927 }); 2928 2929 $( document ).on( 'focusout', '.awf-extra-badges, .awf-extra-reset-btn-container', function( e ) { 2930 delete a_w_f.blockui_focus_backup; 2931 } ); 2932 2933 $( document ).on( 'awf_after_ajax_products_update', function( event, $response ) { 2934 2935 if( 'ajax_pagination_end_reached' in awf_data ) { return; } 2936 2937 if( 'blockui_focus_backup' in a_w_f ) { 2938 if( a_w_f.blockui_focus_backup.is( ':focusable' ) ) { 2939 a_w_f.blockui_focus_backup.trigger( 'focus' ); 2940 2941 } else { 2942 var $bfb = a_w_f.blockui_focus_backup.find( ':focusable' ).first(); 2943 2944 if( 1 === $bfb.length ) { 2945 $bfb.trigger( 'focus' ); 2946 } else { 2947 $bfb = a_w_f.blockui_focus_backup.closest( '.awf-filter-wrapper' ).find( ':focusable' ).first(); 2948 if( 1 === $bfb.length ) { 2949 $bfb.trigger( 'focus' ); 2950 } else { 2951 $( awf_data.products_container ).find( ':focusable' ).first().trigger( 'focus' ).trigger( 'blur' ); 2952 } 2953 } 2954 } 2955 2956 delete a_w_f.blockui_focus_backup; 2957 2958 } else { 2959 $( awf_data.products_container ).find( ':focusable' ).first().trigger( 'focus' ).trigger( 'blur' ); 2960 } 2961 2962 var alert = $( '.woocommerce-result-count' ).first().text(); 2963 2964 if( 0 < alert.length ) { 2965 a_w_f.accessibility_alert( alert ); 2966 } else { 2967 alert = $( awf_data.no_result_container ).first().text(); 2968 if( 0 < alert.length ) { 2969 a_w_f.accessibility_alert( alert ); 2970 } 2971 } 2972 2973 } ); 2974 2975 a_w_f.preset_wrappers.each( function() { 2976 var $pw = $( this ); 2977 2978 $pw.on( 'focusout', function( e ) { 2979 if( 0 === $pw.has( $( e.relatedTarget ) ).length ) { 2980 if( $pw.hasClass( 'awf-togglable-preset' ) && awf_data.togglable_preset.close_preset_on_ajax_update ) { 2981 a_w_f.blockui_focus_backup = $( '.awf-togglable-preset-btn' ); 2982 2983 } else { 2984 a_w_f.blockui_focus_backup = $( e.target ); 2985 2986 if( a_w_f.blockui_focus_backup.hasClass( 'awf-reset-active-container' ) ) { 2987 a_w_f.blockui_focus_backup = a_w_f.blockui_focus_backup.closest( '.awf-filter-wrapper' ).first(); 2988 } else if( a_w_f.blockui_focus_backup.hasClass( 'awf-reset-btn' ) ) { 2989 a_w_f.blockui_focus_backup = a_w_f.blockui_focus_backup.closest( '.awf-preset-wrapper' ).first() 2990 } else if( a_w_f.blockui_focus_backup.hasClass( 'awf-active-badge' ) ) { 2991 a_w_f.blockui_focus_backup = a_w_f.blockui_focus_backup.closest( '.awf-filter-wrapper, .awf-preset-wrapper' ).first(); 2992 } 2993 } 2994 } 2995 } ); 2996 2997 $pw.find( '.awf-filter-wrapper' ).each( function() { 2998 var $fw = $( this ); 2999 var fw_is; 3000 var $cont; 3001 3002 if( $fw.hasClass( 'awf-date' ) ) { 3003 fw_is = 'date'; 3004 } else if( 0 < $fw.find( '.awf-product-search' ).first().length ) { 3005 $cont = $fw.find( '.awf-search-autocomplete' ).first(); 3006 if( 0 < $cont.length ) { 3007 fw_is = 'search_ac'; 3008 } else { 3009 fw_is = 'search'; 3010 } 3011 } else if( $fw.hasClass( 'awf-range' ) && 0 < $fw.find( '.awf-style-range-slider' ).first().length ) { 3012 fw_is = 'slider'; 3013 } else { 3014 fw_is = 'list'; 3015 $cont = $fw.find( '.awf-filters-container' ).first(); 3016 3017 $( document ).on( 'awf_after_setup', function() { 3018 $fw.children( '.awf-pretty-scrollbars' ).find( '.ps__thumb-y' ).attr( 'tabindex', '' ); 3019 } ); 3020 } 3021 3022 $fw.on( 'keydown', function( e ) { 3023 3024 switch( e.keyCode ) { 3025 case 40: 3026 e.preventDefault(); 3027 3028 var $active = $( e.target ); 3029 3030 if( 'search_ac' === fw_is && $cont.has( $active ) ) { 3031 if( $active.is( 'a' ) ) { 3032 var f = false; 3033 3034 $cont.find( 'a' ).each( function( i, a ) { 3035 if( f ) { 3036 $( a ).trigger( 'focus' ); 3037 return false; 3038 } else { 3039 if( $active.is( $( a ) ) ) { f = true; } 3040 } 3041 }); 3042 } else { 3043 $cont.find( 'a' ).first().trigger( 'focus' ); 3044 } 3045 3046 } else if( 'list' === fw_is ) { 3047 if( ! $active.is( 'label' ) ) { 3048 $active = $active.find( 'label:focusable' ).first(); 3049 } 3050 3051 if( 0 === $active.length ) { 3052 $active = $fw.find( 'label:focusable' ).first(); 3053 3054 } else { 3055 var f = false; 3056 3057 $fw.find( 'label:focusable' ).each( function( i, label ) { 3058 if( f ) { 3059 $active = $( label ); 3060 return false; 3061 } else { 3062 if( $active.is( $( label ) ) ) { f = true; } 3063 } 3064 }); 3065 } 3066 3067 $active.trigger( 'focus' ); 3068 } 3069 3070 break; 3071 case 38: 3072 e.preventDefault(); 3073 var $active = $( e.target ); 3074 3075 if( 'search_ac' === fw_is && $cont.has( $active ) ) { 3076 if( $active.is( 'a' ) ) { 3077 var all = $cont.find( 'a' ).get().reverse(); 3078 var f = false; 3079 3080 $( all ).each( function( i, a ) { 3081 if( f ) { 3082 $( a ).trigger( 'focus' ); 3083 return false; 3084 } else { 3085 if( $active.is( $( a ) ) ) { f = true; } 3086 } 3087 }); 3088 } else { 3089 $cont.find( 'a' ).last().trigger( 'focus' ); 3090 } 3091 3092 } else if( 'list' === fw_is ) { 3093 3094 if( ! $active.is( 'label' ) ) { 3095 $active = $active.find( 'label:focusable' ).first(); 3096 } 3097 3098 if( 0 === $active.length ) { 3099 $active = $fw.find( 'label:focusable' ).last(); 3100 3101 } else { 3102 var $all = $fw.find( 'label:focusable' ).get().reverse(); 3103 var f = false; 3104 3105 $( $all ).each( function( i, label ) { 3106 if( f ) { 3107 $active = $( label ); 3108 return false; 3109 } else { 3110 if( $active.is( $( label ) ) ) { f = true; } 3111 } 3112 }); 3113 } 3114 3115 $active.trigger( 'focus' ); 3116 } 3117 3118 break; 3119 case 39: 3120 e.preventDefault(); 3121 var $active = $( e.target ).closest( '.awf-parent-container.awf-collapsed-on' ); 3122 3123 if( 1 === $active.length ) { 3124 $active.trigger( 'click' ); 3125 } 3126 3127 break; 3128 case 37: 3129 e.preventDefault(); 3130 var $active = $( e.target ).closest( '.awf-filter-container:not(.awf-collapsed-on)' ); 3131 3132 if( 1 === $active.length ) { 3133 $active.trigger( 'click' ); 3134 } 3135 3136 break; 3137 case 27: 3138 var $active = $( e.target ); 3139 3140 if( ! $active.hasClass( 'awf-dropdown' ) ) { 3141 $active = $active.closest( '.awf-dropdown' ); 3142 } 3143 3144 if( 0 < $active.length && ! $active.hasClass( 'awf-collapsed' ) ) { 3145 $active.find( '.awf-filter-title-container').trigger( 'focus' ).trigger( 'click' ); 3146 } 3147 3148 break; 3149 3150 case 9: 3151 if( 'list' === fw_is ) { 3152 3153 if( ! e.shiftKey ) { 3154 var $active = $( e.target ); 3155 3156 if( $active.hasClass( 'awf-terms-search' ) ) { 3157 e.preventDefault(); 3158 $( e.target ).siblings( '.awf-clear-terms-search-btn' ).trigger( 'focus' ); 3159 3160 } else if( $active.hasClass( 'awf-clear-terms-search-btn' ) ) { 3161 e.preventDefault(); 3162 $active.closest( '.awf-filters-container' ).find( 'label:focusable' ).first().trigger( 'focus' ); 3163 } 3164 } 3165 } 3166 3167 break; 3168 3169 defaut: break; 3170 } 3171 } ); 3172 3173 $fw.find( '.awf-filters-container > ul' ).first() 3174 .on( 'focusin', function( e ) { 3175 if( 0 === $( this ).has( $( e.relatedTarget ) ).length ) { 3176 var $ul = $( this ); 3177 3178 if( 'list' === fw_is ) { 3179 $ul.find( 'label' ).attr( 'tabindex', '-1'); 3180 3181 if( ! $( e.target ).is( 'label:focusable' ) && ! $( e.target ).is( '.awf-terms-search' ) ) { 3182 $ul.find( 'label:focusable' ).first().trigger( 'focus' ); 3183 } 3184 } 3185 } 3186 } ) 3187 .on( 'focusout', function( e ) { 3188 if( 0 === $( this ).has( $( e.relatedTarget ) ).length ) { 3189 var $fsc = $( this ); 3190 3191 if( 'list' === fw_is ) { 3192 $fsc.find( 'label[tabindex="-1"]' ).attr( 'tabindex', '0' ); 3193 } 3194 } 3195 } ) 3196 ; 3197 3198 if( $pw.hasClass( 'awf-url' ) ) { 3199 $fw.on( 'keydown', 'label', function( event ) { 3200 if( event.keyCode === 13 || event.keyCode === 32 ) { 3201 event.preventDefault(); 3202 event.stopPropagation(); 3203 3204 $( this ).siblings( '.awf-filter' ).first().trigger( 'click' ); 3205 } 3206 }); 3207 3208 } else { 3209 $fw.on( 'keydown', 'label', function( event ) { 3210 if( event.keyCode === 13 || event.keyCode === 32 ) { 3211 event.preventDefault(); 3212 event.stopPropagation(); 3213 3214 $( this ).siblings( '.awf-filter' ).first().trigger( 'click' ); 3215 } 3216 }); 3217 } 3218 3219 }); 3220 3221 var $parent_cs = $pw.find( '.awf-collapsible-children .awf-filter-container.awf-parent-container:not(.awf-hide-collapse-button)' ).attr( 'role', 'button' ).attr( 'aria-label', awf_data.i18n.cc_button_label ).attr( 'tabindex', '-1' ).attr( 'aria-expanded', 'false' ); 3222 $parent_cs.not( '.awf-collapsed' ).attr( 'aria-expanded', 'true' ); 3223 3224 $pw.on( 'keydown', '.awf-filter-title-container, .awf-reset-btn, .awf-reset-active-container, .awf-togglable-preset-close-btn, .awf-thl-more-btn, .awf-thl-less-btn, .awf-apply-filter-btn, .awf-submit-btn', function( event ) { 3225 if( event.keyCode === 13 || event.keyCode === 32 ) { 3226 event.preventDefault(); 3227 this.click(); 3228 } 3229 }); 3230 });
3231 3232 $( '.awf-product-search-autocomplete-container' ).on( 'keydown', 'a', function( e ) { 3233 if( e.keyCode === 13 || e.keyCode === 32 ) { 3234 e.preventDefault(); 3235 this.click(); 3236 } 3237 }); 3238 } 3239 3240 if( 'undefined' !== typeof PerfectScrollbar ) { 3241 $( '.awf-pretty-scrollbars' ).each( function( i, container ) { 3242 var ps = new PerfectScrollbar( container, { suppressScrollX: true, suppressScrollY: false, wheelPropagation: true } ); 3243 a_w_f.pretty_scrollbars.push( ps ); 3244 }); 3245 } 3246 3247 a_w_f.resize_cid = 0; 3248 3249 a_w_f.preset_wrappers.each( function() { 3250 var $ss_layouts = $( this ).find( '.awf-ss-layout' ); 3251 3252 if( 0 < $ss_layouts.length ) { 3253 3254 var rw = this.getAttribute( 'data-responsive-width' ); 3255 3256 $ss_layouts.each( function() { 3257 var $ssl = $( this ); 3258 3259 if( window.innerWidth <= rw ) { 3260 $ssl.removeClass( $ssl.attr( 'data-layout' ) ).addClass( $ssl.attr( 'data-ss-layout' ) ); 3261 } else { 3262 $ssl.removeClass( $ssl.attr( 'data-ss-layout' ) ).addClass( $ssl.attr( 'data-layout' ) ); 3263 } 3264 }); 3265 3266 var debounce_resize = null; 3267 3268 $( window ).resize( function() { 3269 var cid = a_w_f.resize_cid = ++a_w_f.resize_cid; 3270 clearTimeout( debounce_resize ); 3271 3272 debounce_resize = setTimeout( function() { 3273 if( cid === a_w_f.resize_cid ) { 3274 $ss_layouts.each( function() { 3275 var $ssl = $( this ); 3276 if( window.innerWidth <= rw ) { 3277 $ssl.removeClass( $ssl.attr( 'data-layout' ) ).addClass( $ssl.attr( 'data-ss-layout' ) ); 3278 } else { 3279 $ssl.removeClass( $ssl.attr( 'data-ss-layout' ) ).addClass( $ssl.attr( 'data-layout' ) ); 3280 } 3281 }); 3282 } 3283 }, 200); 3284 } ); 3285 } 3286 }); 3287 3288 $( document ).trigger( 'awf_after_setup' ); 3289 3290 function awf_search_filter_terms( $input ) { 3291 3292 var $filter_containers = $input.closest( '.awf-filters-container' ).find( '.awf-filter-container' ).removeClass( 'awf-hidden' ).filter( ':visible' ); 3293 var search = $input.val().toLowerCase(); 3294 3295 if ( 0 < search.length ) { 3296 for( var i = ( $filter_containers.length - 1 ); i >= 0; i-- ) { 3297 var $row = $( $filter_containers[i] ); 3298 var $label = $row.find( ' > label, > a > label' ).first(); 3299 var label = $label.clone().children().remove().end().text(); 3300 3301 if( 0 >= label.length ) { 3302 label = $label.attr( 'data-badge-label' ); 3303 if( typeof( label ) === 'undefined' ) { label = ''; } 3304 } 3305 3306 if( label.toLowerCase().indexOf( search ) === -1 ) { $row.addClass( 'awf-hidden' ); } 3307 } 3308 } 3309 } 3310 3311 function awf_register_reset_btns() { 3312 $( document ).on( 'click', '.awf-reset-btn', function() { 3313 var $reset_btn = $( this ); 3314 var $preset_wrapper; 3315 3316 if( $reset_btn.hasClass( 'awf-extra-reset-btn' ) ) { 3317 $preset_wrapper = a_w_f.preset_wrappers.filter( '.awf-ajax' ).first(); 3318 if( 0 === $preset_wrapper.length ) { $preset_wrapper = a_w_f.preset_wrappers.first(); } 3319 3320 } else { 3321 $preset_wrapper = $reset_btn.closest( '.awf-preset-wrapper' ); 3322 } 3323 3324 a_w_f.reset_all_filters( [] ); 3325 a_w_f.apply_filters_reset( $preset_wrapper ); 3326 }); 3327 } 3328});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.