­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ (function($,undefined){"use strict";$us.WGridFilter=function(container,options){this.init(container,options)};$.extend($us.WGridFilter.prototype,$us.mixins.Events,{init:function(container,options){this.defaultOptions={filterPrefix:'filter',gridNotFoundMessage:!1,gridPaginationSelector:'.w-grid-pagination',gridSelector:'.w-grid[data-filterable="true"]:first',layout:'hor',mobileWidth:600};this.options=$.extend(this.defaultOptions,options);this.filtersArgs={};this.$container=$(container);this.$filtersItem=$('.w-filter-item',this.$container);this.$grid=$(this.options.gridSelector,$us.$canvas.find('.l-main'));if(this.$container.is('[onclick]')){$.extend(this.options,this.$container[0].onclick()||{});this.$container.removeAttr('onclick')} var $filtersArgs=this.$container.find('.w-filter-json-filters-args:first');if($filtersArgs.length){this.filtersArgs=$filtersArgs[0].onclick()||{};$filtersArgs.remove()} if(!this.$grid.length&&this.options.gridNotFoundMessage){this.$container.prepend('
'+this.options.gridNotFoundMessage+'
')} this.$grid.addClass('used_by_grid_filter');this.$container.on('click','.w-filter-opener',this._events.filterOpener.bind(this)).on('click','.w-filter-list-closer, .w-filter-list-panel > a',this._events.filterListCloser.bind(this));this.$filtersItem.on('change','input, select',this._events.changeFilter.bind(this)).on('click','.w-filter-item-reset',this._events.resetItem.bind(this));$(this.options.gridPaginationSelector,this.$grid).on('click','.page-numbers',this._events.loadPageNumber.bind(this));$us.$window.on('resize load',$us.debounce(this._events.resize.bind(this),100));this.on('changeItemValue',this._events.toggleItemValue.bind(this));if(this.$container.hasClass('show_on_click')){this.$filtersItem.on('click','.w-filter-item-title',this._events.showItem.bind(this));$(document).mouseup(this._events.hideItem.bind(this))} $('form.woocommerce-ordering',$us.$canvas).off('change','select.orderby').on('change','select.orderby',this._events.woocommerceOrdering.bind(this));this.checkItemValues.call(this);this.$container.toggleClass('active',this.$filtersItem.is('.has_value'));this.on('us_grid_filter.update-items-amount',this._events.updateItemsAmount.bind(this));this._events.resize.call(this)},isMobile:function(){return parseInt($us.$window.width())1){title+=': '+$selected.length}}} if(uiType==='dropdown'){var value=$('select:first',$item).val();hasValue=(value!=='*')?!!value:''} if(uiType==='range'){var value=$('input[type="hidden"]:first',$item).val();hasValue=!!value;if(this.options.layout=='hor'&&value){title+=': '+value}} $item.toggleClass('has_value',!!hasValue);$('> .w-filter-item-title:first > span',item).html(title)},resize:function(){this.$container.usMod('state',this.isMobile()?'mobile':'desktop');if(!this.isMobile()){$us.$body.removeClass('us_filter_open');this.$container.removeClass('open')}},filterOpener:function(){$us.$body.addClass('us_filter_open');this.$container.addClass('open')},filterListCloser:function(){$us.$body.removeClass('us_filter_open');this.$container.removeClass('open')},showItem:function(e){var $target=$(e.currentTarget),$item=$target.closest('.w-filter-item');$item.addClass('show')},hideItem:function(e){if(!this.$filtersItem.hasClass('show')){return} this.$filtersItem.filter('.show').each(function(_,item){var $item=$(item);if(!$item.is(e.target)&&$item.has(e.target).length===0){$item.removeClass('show')}})},woocommerceOrdering:function(e){e.stopPropagation();var $form=$(e.currentTarget).closest('form');$('input[name^="'+this.options.filterPrefix+'"]',$form).remove();$.each(this.getValue().split('&'),function(_,item){var value=item.split('=');if(value.length===2){$form.append('')}});$form.trigger('submit')},updateItemsAmount:function(_,data){this.$filtersItem.removeClass('disabled');$.each((data.taxonomies_query_args||{}),function(key,items){var $item=this.$filtersItem.filter('[data-source="'+key+'"]'),uiType=$item.data('ui_type'),showCount=0;$.each(items,function(value,amount){var disabled=!amount;if(!disabled){showCount++} if(uiType==='dropdown'){var $option=$('select:first option[value="'+value+'"]',$item),template=$option.data('template')||'';if(template){template=template.replace('%s',(amount?amount:'')).trim() $option.text(template)} $option.prop('disabled',disabled).toggleClass('disabled',disabled)}else{var $input=$('input[value="'+value+'"]',$item);$input.prop('disabled',disabled).nextAll('.w-filter-item-value-amount').text(amount);$input.closest('.w-filter-item-value').toggleClass('disabled',disabled);if(disabled&&$input.is(':checked')){$input.prop('checked',!1)}}}.bind(this));if(!showCount&&this.options.hideDisabledValues){$item.addClass('disabled')}}.bind(this));if(data.hasOwnProperty('wc_min_max_price')&&data.wc_min_max_price instanceof Object){var $price=this.$filtersItem.filter('[data-source$="|_price"]');$.each((data.wc_min_max_price||{}),function(name,value){var $input=$('input.type_'+name,$price);$input.attr('placeholder',value?value:$input.attr('aria-label'))})} if(!$.isEmptyObject(data)){if(this.handle){$us.clearTimeout(this.handle)} this.handle=$us.timeout(function(){$us.debounce(this.URLSearchParams.bind(this,this.getValue()),1)();this.checkItemValues.call(this)}.bind(this),100)}}},triggerGrid:function(eventType,extraParameters){$us.debounce(function(){$us.$body.trigger(eventType,extraParameters)},10)()},checkItemValues:function(){this.$filtersItem.each(function(_,item){this.trigger('changeItemValue',item)}.bind(this))},getValue:function(){var value='',filters={};$.each(this.$container.serializeArray(),function(_,filter){if(filter.value==='*'||!filter.value){return} if(!filters.hasOwnProperty(filter.name)){filters[filter.name]=[]} filters[filter.name].push(filter.value)});for(var k in filters){if(value){value+='&'} if($.isArray(filters[k])){value+=k+'='+filters[k].join(',')}} return encodeURI(value);},URLSearchParams:function(params){var url=location.origin+location.pathname+(location.pathname.slice(-1)!='/'?'/':''),search=location.search.replace(new RegExp(this.options.filterPrefix+"(.+?)(&|$)","g"),'');if(!search||search.substr(0,1)!=='?'){search+='?'}else if('?&'.indexOf(search.slice(-1))===-1){search+='&'} if(!params&&'?&'.indexOf(search.slice(-1))!==-1){search=search.slice(0,-1)} history.replaceState(document.title,document.title,url+search+params)}});$.fn.wGridFilter=function(options){return this.each(function(){$(this).data('wGridFilter',new $us.WGridFilter(this,options))})};$(function(){$('.w-filter',$us.$canvas).wGridFilter()})})(jQuery)