@progress/kendo-ui
Version:
This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.
3 lines (2 loc) • 34.3 kB
JavaScript
!function(e){"function"==typeof define&&define.amd?define(["kendo.datepicker.min","kendo.numerictextbox.min","kendo.dropdownlist.min","kendo.buttongroup.min","kendo.binder.min","kendo.html.button.min","kendo.icons.min"],e):e()}((function(){!function(e,t){var i=window.kendo,l=i.ui,a=i.support,s=i.htmlEncode,n=a.browser.chrome?"disabled":"off",r="kendoPopup",o="init",c="open",u="refresh",d="change",p=".kendoFilterMenu",f="[scope='col']",h="Is equal to",m="Is not equal to",k={number:"numerictextbox",date:"datepicker"},g={string:"text",number:"number",date:"date"},v=i.isFunction,b=l.Widget,_=function(e){var t=e.actionsCssClass,l=e.messages;return'<div class="'+(t||"k-actions")+'">'+i.html.renderButton('<button title="'+l.filter+'">'+l.filter+"</button>",{type:"submit",themeColor:"primary",icon:"filter"})+i.html.renderButton('<button title="'+l.clear+'">'+l.clear+"</button>",{type:"reset",icon:"filter-clear"})+"</div>"},y=function(e){e.field,e.format;var t=e.ns,i=e.messages;e.extra,e.operators,e.type,e.role,e.values,e.componentType;return'<div class="k-filter-menu-container"><div class="k-filter-help-text">'+i.info+'</div><label><input type="radio" data-'+t+'bind="checked: filters[0].value" value="true" name="filters[0].value"/>'+i.isTrue+'</label><label><input type="radio" data-'+t+'bind="checked: filters[0].value" value="false" name="filters[0].value"/>'+i.isFalse+"</label>"+_({messages:i})+"</div>"},x=function(e){e.field,e.format;var t=e.ns,l=e.messages,a=(e.extra,e.operators,e.type,e.role,e.values,e.componentType,i.guid()),s=i.guid();return'<div class="k-filter-menu-container"><div><ul class="k-radio-list k-reset"><li><input type="radio" class="k-radio k-radio-md" id="'+a+'" data-'+t+'bind="checked: filters[0].value" value="true" name="filters[0].value" /><label class="k-radio-label" for="'+a+'">'+l.isTrue+'</label></li><li><input type="radio" class="k-radio k-radio-md" id="'+s+'" data-'+t+'bind="checked: filters[0].value" value="false" name="filters[0].value" /><label class="k-radio-label" for="'+s+'">'+l.isFalse+"</label></li></ul>"+_({actionsCssClass:"k-columnmenu-actions",messages:l})+"</div></div>"},w=function(e){e.field,e.format;var t=e.ns,i=e.messages;e.extra,e.operators,e.type,e.role,e.values,e.componentType;return'<div class="k-filter-menu-container"><div class="k-filter-help-text">'+i.info+'</div><label><span class="k-textbox k-input k-input-md k-rounded-md k-input-solid"><input class="k-input-inner" data-'+t+'bind="value: filters[0].value" name="filters[0].value"/></span></label>'+_({messages:i})+"</div>"},S=function(e){e.field,e.format;var t=e.ns,l=e.messages,a=e.extra,s=e.operators,n=(e.type,e.role),r=e.values,o=e.componentType;return'<div class="k-filter-menu-container">'+("classic"===o?'<div class="k-filter-help-text">'+l.info+"</div>":"")+'<select title="'+l.operator+'" data-'+t+'bind="value: filters[0].operator" data-'+t+'role="dropdownlist">'+Object.keys(s).map((function(e){return'<option value="'+e+'">'+s[e]+"</option>"}))+"</select>"+(r?'<select title="'+l.value+'" data-'+t+'bind="value:filters[0].value" data-'+t+'text-field="text" data-'+t+'value-field="value" data-'+t+"source='"+i.stringify(r).replace(/\'/g,"'")+"' data-"+t+'role="dropdownlist" data-'+t+'option-label="'+l.selectValue+'" data-'+t+'value-primitive="true"></select>':'<input title="'+l.value+'" data-'+t+'bind="value:filters[0].value" class="k-input-inner" type="text" '+(n?"data-"+t+'role="'+n+'"':"")+" />")+(a?("modern"===o?"<ul data-"+t+'role="buttongroup" data-bind="events: { select: onLogicChange }"><li data-'+t+'value="and">And</li><li data-'+t+'value="or">Or</li></ul>':'<select title="'+l.logic+'" class="k-filter-and" data-'+t+'bind="value: logic" data-'+t+'role="dropdownlist"><option value="and">'+l.and+'</option><option value="or">'+l.or+"</option></select>")+'<select title="'+l.additionalOperator+'" data-'+t+'bind="value: filters[1].operator" data-'+t+'role="dropdownlist">'+Object.keys(s).map((function(e){return'<option value="'+e+'">'+s[e]+"</option>"}))+"</select>"+(r?'<select title="'+l.additionalValue+'" data-'+t+'bind="value:filters[1].value" data-'+t+'text-field="text" data-'+t+'value-field="value" data-'+t+'source="'+i.stringify(r).replace(/\'/g,"'")+'" data-'+t+'role="dropdownlist" data-'+t+'option-label="'+l.selectValue+'" data-'+t+'value-primitive="true"></select>':'<input title="'+l.additionalValue+'" data-'+t+'bind="value: filters[1].value" class="k-input-inner" type="text" '+(n?"data-"+t+'role="'+n+'"':"")+"/>"):"")+_({messages:l})+"</div>"},T=function(e){e.field;var t=e.title,l=(e.format,e.ns),a=e.messages,s=e.extra,r=e.operators,o=e.filterMenuGuid,c=(e.type,e.role,e.inputType),u=e.values;return"<div data-"+l+'role="view" class="k-grid-filter-menu"><div data-'+l+'role="header" class="k-header"><a href="#" class="k-header-cancel k-link" title="'+a.cancel+'" aria-label="'+a.cancel+'">'+i.ui.icon("chevron-left")+"</a>"+a.filter+" "+a.into+" "+t+'<a href="#" class="k-header-done k-link" title="'+a.done+'" aria-label="'+a.done+'">'+i.ui.icon("check")+'</a></div><form title="'+a.title+'" class="k-filter-menu"><ul class="k-reset"><li><span class="k-list-title k-filter-help-text">'+a.info+'</span><ul class="k-listgroup k-listgroup-flush"><li class="k-item k-listgroup-item"><label class="k-listgroup-form-row k-label"><span class="k-listgroup-form-field-label k-filter-operator-text">'+a.operator+'</span><span class="k-listgroup-form-field-wrapper"><select id="operator_'+o+'" title="'+a.operator+'" class="k-filter-operator" data-'+l+'bind="value: filters[0].operator" autocomplete="'+n+'" >'+Object.keys(r).map((function(e){return'<option value="'+e+'">'+r[e]+"</option>"}))+'</select></span></label></li><li class="k-item k-listgroup-item"><label class="k-listgroup-form-row k-label"><span class="k-listgroup-form-field-label k-filter-input-text">'+a.value+'</span><span class="k-listgroup-form-field-wrapper">'+(u?'<select id="value_'+o+'" title="'+a.value+'" data-'+l+'bind="value:filters[0].value" autocomplete="'+n+'" ><option value="">'+a.selectValue+"</option>"+Object.keys(u).map((function(e){return'<option value="'+u[e].value+'">'+u[e].text+"</option>"}))+"</select>":'<input id="value_'+o+'" title="'+a.value+'" data-'+l+'bind="value:filters[0].value" class="k-value-input" type="'+c+'" autocomplete="'+n+'" />')+"</span></label></li></ul>"+(s?'<ul class="k-listgroup k-listgroup-flush"><li class="k-item k-listgroup-item"><label class="k-listgroup-form-row k-label"><span class="k-listgroup-form-field-label k-filter-logic-and-text">'+a.and+'</span><span class="k-listgroup-form-field-wrapper"><input id="and_'+o+'" title="'+a.and+'" type="radio" name="logic"data-'+l+'bind="checked: logic" value="and" autocomplete="'+n+'" /></span></label></li><li class="k-item k-listgroup-item"><label class="k-listgroup-form-row k-label"><span class="k-listgroup-form-field-label k-filter-logic-or-text">'+a.or+'</span><span class="k-listgroup-form-field-wrapper"><input id="or_'+o+'" title="'+a.or+'" type="radio" name="logic" data-'+l+'bind="checked: logic" value="or" autocomplete="'+n+'" /></span></label></li></ul><ul class="k-listgroup k-listgroup-flush"><li class="k-item k-listgroup-item"><label class="k-listgroup-form-row k-label"><span class="k-listgroup-form-field-label k-filter-operator-text">'+a.additionalOperator+'</span><span class="k-listgroup-form-field-wrapper"><select id="additionalOperator_'+o+'" title="'+a.additionalOperator+'" class="k-filter-operator" data-'+l+'bind="value: filters[1].operator" autocomplete="'+n+'" >'+Object.keys(r).map((function(e){return'<option value="'+e+'">'+r[e]+"</option>"}))+'</select></span></label></li><li class="k-item k-listgroup-item"><label class="k-listgroup-form-row k-label"><span class="k-listgroup-form-field-label k-filter-input-text">'+a.additionalValue+'</span><span class="k-listgroup-form-field-wrapper">'+(u?'<select id="additionalValue_'+o+'" title="'+a.additionalValue+'" data-'+l+'bind="value:filters[1].value" autocomplete="'+n+'" ><option value="">'+a.selectValue+"</option>"+Object.keys(u).map((function(e){return'<option value="'+u[e].value+'">'+u[e].text+"</option>"}))+"</select>":'<input id="additionalValue_'+o+'" title="'+a.additionalValue+'" data-'+l+'bind="value:filters[1].value" class="k-value-input" type="'+c+'" autocomplete="'+n+'" />')+"</span></label></li></ul>":"")+'</li><li class="k-item k-clear-wrap"><span class="k-list-title"> </span><ul class="k-listgroup k-listgroup-flush"><li class="k-listgroup-item"><span class="k-link k-label k-clear" title="'+a.clear+'" aria-label="'+a.clear+'">'+a.clear+"</span></li></ul></li></ul></form></div>"},F=function(e){e.field;var t=e.title,l=(e.format,e.ns),a=e.messages,s=(e.extra,e.operators,e.filterMenuGuid);e.type,e.role,e.inputType,e.values;return"<div data-"+l+'role="view" class="k-grid-filter-menu"><div data-'+l+'role="header" class="k-header"><a href="#" class="k-header-cancel k-link" title="'+a.cancel+'" aria-label="'+a.cancel+'">'+i.ui.icon("chevron-left")+"</a>"+a.filter+" "+a.into+" "+t+'<a href="#" class="k-header-done k-link" title="'+a.done+'" aria-label="'+a.done+'">'+i.ui.icon("check")+'</a></div><form title="'+a.title+'" class="k-filter-menu"><ul class="k-reset"><li><span class="k-list-title k-filter-help-text">'+a.info+'</span><ul class="k-listgroup k-listgroup-flush k-multicheck-bool-wrap"><li class="k-item k-listgroup-item"><label class="k-listgroup-form-row k-label"><span class="k-listgroup-form-field-label k-item-title">'+a.isTrue+'</span><span class="k-listgroup-form-field-wrapper"></span><input id="true_'+s+'" title="'+a.isTrue+'" type="radio" data-'+l+'bind="checked: filters[0].value" value="true" name="filters[0].value" autocomplete="'+n+'" /></span></label></li><li class="k-item k-listgroup-item"><label class="k-listgroup-form-row k-label"><span for="false_'+s+'" class="k-listgroup-form-field-label k-item-title">'+a.isFalse+'</span><span class="k-listgroup-form-field-wrapper"><input id="false_'+s+'" title="'+a.isFalse+'" type="radio" data-'+l+'bind="checked: filters[0].value" value="false" name="filters[0].value" autocomplete="'+n+'" /></span></label></li></ul></li><li class="k-item k-clear-wrap"><span class="k-list-title"> </span><ul class="k-listgroup k-listgroup-flush"><li class="k-listgroup-item"><span class="k-link k-label k-clear" title="'+a.clear+'" aria-label="'+a.clear+'">'+a.clear+"</span></li></ul></li></ul></form></div>"};function C(t,i){t.filters&&(t.filters=e.grep(t.filters,(function(e){return C(e,i),e.filters?e.filters.length:e.field!=i})))}function A(e){var t,i,l,a,s,n;if(e&&e.length)for(n=[],t=0,i=e.length;t<i;t++)s=""!==(l=e[t]).text?l.text||l.value||l:l.text,a=null==l.value?l.text||l:l.value,n[t]={text:s,value:a};return n}var H=b.extend({init:function(t,l){var a,s,n,r,o=this,c="string";for(s in(l=l||{}).componentType=l.componentType||"classic",b.fn.init.call(o,t,l),a=o.operators=l.operators||{},t=o.element,l=o.options,o.dataSource=V.create(l.dataSource),o.field=l.field||t.attr(i.attr("field")),(r=e(t.closest(f))).length?o.appendTo=r.find(l.appendTo):o.appendTo=e(l.appendTo),o.link=o._createLink()||e(),o.model=o.dataSource.reader.model,o._parse=function(e){return null!=e?e+"":e},o.model&&o.model.fields&&(n=o.model.fields[o.field])&&(c=n.type||"string",n.parse&&(o._parse=n.parse.bind(n))),l.values&&(c="enums"),o.type=c,a=a[c]||l.operators[c])break;o._defaultFilter=function(){return{field:o.field,operator:s||"eq",value:""}},o._refreshHandler=o.refresh.bind(o),o.dataSource.bind(d,o._refreshHandler),l.appendToElement?o._init():o.refresh()},_init:function(){var t,l=this,a=l.options.ui,s=v(a),n=i.attr("role");l.pane=l.options.pane,l.pane&&(l._isMobile=!0),s||(t=a||k[l.type]),l._isMobile?l._createMobileForm(t):l._createForm(t),l.form.on("submit"+p,l._submit.bind(l)).on("reset"+p,l._reset.bind(l)),s?l.form.find(".k-input-inner").removeClass("k-input-inner").each((function(){a(e(this))})):(l.form.find(".k-input-inner["+n+"]").removeClass("k-input-inner"),l.form.find(".k-input-inner:not([data-role]):not(.k-numerictextbox>.k-input-inner)").wrap("<span class='k-textbox k-input k-input-md k-rounded-md k-input-solid'></span>")),l.refresh(),l.trigger(o,{field:l.field,container:l.form}),l.options.cycleForm&&i.cycleForm(l.form)},_createForm:function(t){var l=this,a=l.options,s=l.operators||{},n=l.type;s=s[n]||a.operators[n],l.form=e('<form title="'+l.options.messages.title+'" class="k-filter-menu"/>').html(i.template(l._getTemplate())({field:l.field,format:a.format,ns:i.ns,messages:a.messages,extra:a.extra,operators:s,type:n,role:t,values:A(a.values),componentType:l.options.componentType})),a.appendToElement?(l.element.append(l.form),l.popup=l.element.closest(".k-popup").data(r)):l.popup=l.form[r]({anchor:l.link,copyAnchorStyles:!1,open:l._open.bind(l),activate:l._activate.bind(l),close:function(){l.options.closeCallback&&l.options.closeCallback(l.element)}}).data(r),l.form.on("keydown"+p,l._keydown.bind(l))},_getTemplate:function(){var e=this,t=v(e.options.ui);return"boolean"===e.type?t?w:"modern"===e.options.componentType?x:y:S},_createMobileForm:function(t){var l=this,a=l.options,s=l.operators||{},n=i.guid(),r=l.type;s=s[r]||a.operators[r],l.form=e("<div />").html(i.template("boolean"===r?F:T)({field:l.field,title:a.title||l.field,format:a.format,ns:i.ns,messages:a.messages,extra:a.extra,operators:s,filterMenuGuid:n,type:r,role:t,inputType:g[r],values:A(a.values)})),l.view=l.pane.append(l.form.html()),l.form=l.view.element.find("form"),l.view.element.on("click",".k-header-done",(function(e){l.form.submit(),e.preventDefault()})).on("click",".k-header-cancel",(function(e){l._closeForm(),e.preventDefault()})).on("click",".k-clear",(function(e){l._mobileClear(),e.preventDefault()})),l.view.bind("showStart",(function(){l.refresh()}))},_createLink:function(){var e,t=this,l=t.element,a=t.appendTo.length?l.find(t.appendTo):l,s=t.options,n=i.format(s.messages.buttonTitle,t.options.title||t.field);if(!s.appendToElement)return(e=l.addClass("k-filterable").find(".k-grid-filter-menu"))[0]||(e=a.append('<a class="k-grid-filter-menu k-grid-header-menu" href="#" aria-hidden="true" title="'+n+'" >'+i.ui.icon("filter")+"</a>").find(".k-grid-filter-menu")),e.attr("tabindex",-1).on("click"+p,t._click.bind(t)),e},refresh:function(){var e=this,t=e.dataSource.filter()||{filters:[],logic:"and"},l=[e._defaultFilter()],a=e._defaultFilter().operator;(e.options.extra||"isnull"!==a&&"isnullorempty"!==a&&"isnotnullorempty"!==a&&"isnotnull"!==a&&"isempty"!==a&&"isnotempty"!==a)&&l.push(e._defaultFilter()),e.filterModel=i.observable({logic:"and",filters:l}),e.form&&(i.bind(e.form.children().first(),e.filterModel),"modern"===e.options.componentType&&e.options.extra&&"boolean"!==e.type&&!e._isMobile&&(e.filterModel.bind("change",(function(){var t=i.attr("role"),l=e.form.find("["+t+"='buttongroup']").data("kendoButtonGroup"),a="and"===this.logic?0:1;l.select(l.element.children().eq(a))})),e.filterModel.set("onLogicChange",e._logicChangeHandler))),e._bind(t)?e.link.addClass("k-active"):e.link.removeClass("k-active")},_logicChangeHandler:function(e){var t=i.attr("value"),l=e.sender.current().attr(t);this.set("logic",l)},destroy:function(){var e=this;b.fn.destroy.call(e),e.form&&(i.unbind(e.form),i.destroy(e.form),e.form.off(p),e.popup&&(e.popup.destroy(),e.popup=null),e.form=null),e.view&&(e.view.purge(),e.view=null),e.link.off(p),e._refreshHandler&&(e.dataSource.unbind(d,e._refreshHandler),e.dataSource=null),e.element=e.link=e._refreshHandler=e.filterModel=null},_bind:function(e){var t,i,l,a,s=this,n=e.filters,r=!1,o=0,c=s.filterModel;for(t=0,i=n.length;t<i;t++)(a=n[t]).field==s.field?(c.set("logic",e.logic),(l=c.filters[o])||(c.filters.push({field:s.field}),l=c.filters[o]),l.set("value",s._parse(a.value)),l.set("operator",a.operator),o++,r=!0):a.filters&&(r=r||s._bind(a));return r},_stripFilters:function(t){return e.grep(t,(function(e){return""!==e.value&&null!=e.value||"isnull"===e.operator||"isnotnull"===e.operator||"isempty"===e.operator||"isnotempty"===e.operator||"isnullorempty"==e.operator||"isnotnullorempty"==e.operator}))},_merge:function(e){var t,i,l,a=this,s=e.logic||"and",n=this._stripFilters(e.filters),r=a.dataSource.filter()||{filters:[],logic:"and"};for(C(r,a.field),i=0,l=n.length;i<l;i++)(t=n[i]).value=a._parse(t.value);return n.length&&(r.filters.length?(e.filters=n,"and"!==r.logic&&(r.filters=[{logic:r.logic,filters:r.filters}],r.logic="and"),n.length>1?r.filters.push(e):r.filters.push(n[0])):(r.filters=n,r.logic=s)),r},filter:function(e){var t=this._stripFilters(e.filters);t.length&&this.trigger("change",{filter:{logic:e.logic,filters:t},field:this.field})||(e=this._merge(e)).filters.length&&this.dataSource.filter(e)},clear:function(t){var i=this;t=t||e.extend(!0,{},{filters:[]},i.dataSource.filter())||{filters:[]},this.trigger("change",{filter:null,field:i.field})||i._removeFilter(t)},_mobileClear:function(){var t=this,i=t.view.element;if("boolean"===t.type){var l=i.find("[type='radio']:checked"),a=l.val();l.val(""),l.trigger("change"),l.val(a),l.prop("checked",!1)}else{if(i.find("select").each((function(t,i){var l=e(i);l.val(l.find("option").first().val()),l.trigger("change")})),"string"===t.type||"date"===t.type||"number"===t.type)i.find(".k-value-input").each((function(t,i){var l=e(i);l.val(""),l.trigger("change")}));if(t.options.extra){var s=i.find("[name=logic]").first();s.prop("checked",!0),s.trigger("change")}}},_removeFilter:function(t){var i=this;t.filters=e.grep(t.filters,(function(t){return t.filters?(t.filters=(l=t.filters,a=i.field,e.grep(l,(function(t){return t.filters?(t.filters=e.grep(t.filters,(function(e){return e.field!=a})),t.filters.length):t.field!=a}))),t.filters.length):t.field!=i.field;var l,a})),t.filters.length||(t=null),i.dataSource.filter(t)},_submit:function(t){t.preventDefault(),t.stopPropagation();var i=this.filterModel.toJSON(),l=e.grep(i.filters,(function(e){return""!==e.value&&null!==e.value}));if(this._checkForNullOrEmptyFilter(i)||l&&l.length)this.filter(i);else{var a=this.dataSource.filter();a&&(a.filters.push(i),i=a),this.clear(i)}this._closeForm()},_checkForNullOrEmptyFilter:function(e){if(!e||!e.filters||!e.filters.length)return!1;var t,i=!1,l=!1;return e.filters[0]&&(i="isnull"==(t=e.filters[0].operator)||"isnotnull"==t||"isnotempty"==t||"isempty"==t||"isnullorempty"==t||"isnotnullorempty"==t),e.filters[1]&&(l="isnull"==(t=e.filters[1].operator)||"isnotnull"==t||"isnotempty"==t||"isempty"==t||"isnullorempty"==t||"isnotnullorempty"==t),!this.options.extra&&i||this.options.extra&&(i||l)},_reset:function(){this.clear(),this.options.search&&this.container&&this.container.find("label").parent().show(),this._closeForm()},_closeForm:function(){this._isMobile?this.pane.navigate("",this.options.animations.right):this.popup.close()},_click:function(e){e.preventDefault(),e.stopPropagation(),this.popup||this.pane||this._init(),this._isMobile?this.pane.navigate(this.view,this.options.animations.left):this.popup.toggle()},_open:function(){var t;e(".k-filter-menu").not(this.form).each((function(){(t=e(this).data(r))&&t.close()}))},_activate:function(){this.form.find(":kendoFocusable").first().trigger("focus"),this.trigger(c,{field:this.field,container:this.form})},_keydown:function(t){var l,a=e(t.target);if(t.keyCode==i.keys.ESC){if(l=i.widgetInstance(a.find("select")),a.hasClass("k-picker")&&l&&l.popup.visible())return void t.stopPropagation();a.closest(".k-popup").getKendoPopup().close()}},events:[o,"change",c],options:{name:"FilterMenu",extra:!0,appendToElement:!1,type:"string",operators:{string:{eq:h,neq:m,startswith:"Starts with",contains:"Contains",doesnotcontain:"Does not contain",endswith:"Ends with",isnull:"Is null",isnotnull:"Is not null",isempty:"Is empty",isnotempty:"Is not empty",isnullorempty:"Has no value",isnotnullorempty:"Has value"},number:{eq:h,neq:m,gte:"Is greater than or equal to",gt:"Is greater than",lte:"Is less than or equal to",lt:"Is less than",isnull:"Is null",isnotnull:"Is not null"},date:{eq:h,neq:m,gte:"Is after or equal to",gt:"Is after",lte:"Is before or equal to",lt:"Is before",isnull:"Is null",isnotnull:"Is not null"},enums:{eq:h,neq:m,isnull:"Is null",isnotnull:"Is not null"}},messages:{info:"Show items with value that:",title:"Show items with value that:",isTrue:"is true",isFalse:"is false",filter:"Filter",clear:"Clear",and:"And",or:"Or",selectValue:"-Select value-",operator:"Operator",value:"Value",additionalValue:"Additional value",additionalOperator:"Additional operator",logic:"Filters logic",cancel:"Cancel",done:"Done",into:"in",buttonTitle:"{0} filter column settings"},animations:{left:"slide",right:"slide:right"},componentType:"classic",cycleForm:!0,appendTo:null}}),I=".kendoFilterMultiCheck";function M(t,i){t.filters&&(t.filters=e.grep(t.filters,(function(e){return M(e,i),e.filters?e.filters.length:e.field==i&&"eq"==e.operator})))}function q(i){return"and"==i.logic&&i.filters.length>1?[]:i.filters?e.map(i.filters,(function(e){return q(e)})):i.value!==t?[i.value]:[]}function B(e,l){for(var a=i.getter(l,!0),s=[],n=0,r={};n<e.length;){var o=e[n++],c=a(o);c===t||r.hasOwnProperty(c)||(s.push(o),r[c]=!0)}return s}var V=i.data.DataSource,O=function(e){e.field;var t=e.title,l=e.ns,a=e.messages,s=e.search,r=e.checkAll;return"<div data-"+l+'role="view" class="k-grid-filter-menu"><div data-'+l+'role="header" class="k-header"><a href="#" class="k-header-cancel k-link" title="'+a.cancel+'" aria-label="'+a.cancel+'">'+i.ui.icon("chevron-left")+"</a>"+a.filter+" "+a.into+" "+t+'<a href="#" class="k-header-done k-link" title="'+a.done+'" aria-label="'+a.done+'">'+i.ui.icon("check")+'</a></div><form class="k-filter-menu"><ul class="k-reset">'+(s?'<li class="k-space-right"><span class="k-searchbox k-textbox k-input k-input-md k-rounded-md k-input-solid"><input class="k-input-inner" placeholder="'+a.search+'" title="'+a.search+'" autocomplete="'+n+'" /><span class="k-input-suffix">'+i.ui.icon("search")+"</span></li>":"")+'<li class="k-filter-tools"><span style="'+(r?"":"visibility: hidden;")+'" class="k-label k-select-all" title="'+a.checkAll+'" aria-label="'+a.checkAll+'">'+a.checkAll+'</span><span class="k-label k-clear-all" title="'+a.clearAll+'" aria-label="'+a.clearAll+'">'+a.clearAll+"</span></li>"+(a.selectedItemsFormat?'<li><div class="k-filter-selected-items"></div></li>':"")+'<li><ul class="k-multicheck-wrap k-listgroup k-listgroup-flush"></ul></li></ul></form></div>'},D=b.extend({init:function(t,l){var a;b.fn.init.call(this,t,l),l=this.options,this.element=e(t);var s,n,r=this.field=this.options.field||this.element.attr(i.attr("field")),o=l.checkSource;this._foreignKeyValues()?(this.checkSource=V.create(l.values),this.checkSource.fetch()):l.forceUnique?(delete(o=e.extend(!0,{},l.dataSource.options)).pageSize,this.checkSource=V.create(o),this.checkSource.reader.data=(s=this.checkSource.reader.data,n=this.field,function(e){return B(s(e),n)})):this.checkSource=V.create(o),this.dataSource=l.dataSource,this.model=this.dataSource.reader.model,this._parse=function(e){return e+""},this.model&&this.model.fields&&(r=this.model.fields[this.field])&&("number"==r.type?this._parse=function(e){return"string"==typeof e&&("null"===e.toLowerCase()||this._foreignKeyValues()&&""===e)?null:parseFloat(e)}:r.parse&&(this._parse=r.parse.bind(r)),this.type=r.type||"string"),(a=e(t.closest(f))).length?this.appendTo=a.find(l.appendTo):this.appendTo=e(l.appendTo),l.appendToElement?this._init():this._createLink(),this._refreshHandler=this.refresh.bind(this),this.dataSource.bind(d,this._refreshHandler)},_createLink:function(){var e=this.element,t=this.appendTo.length?e.find(this.appendTo):e,l=e.addClass("k-filterable").find(".k-grid-filter-menu"),a=i.format(this.options.messages.buttonTitle,this.options.title||this.field);l[0]||(l=t.append('<a class="k-grid-filter-menu k-grid-header-menu" href="#" title="'+a+'" aria-hidden="true"">'+i.ui.icon("filter")+"</a>").find(".k-grid-filter-menu")),this._link=l.attr("tabindex",-1).on("click"+p,this._click.bind(this))},_init:function(){var e=this,t=this.options.forceUnique,i=this.options;this.pane=i.pane,this.pane&&(this._isMobile=!0),this._createForm(),this._foreignKeyValues()?this.refresh():t&&!this.checkSource.options.serverPaging&&this.dataSource.data().length?(this.checkSource.data(B(this.dataSource.data(),this.field)),this.refresh()):(this._attachProgress(),this.checkSource.fetch((function(){e.refresh.call(e)}))),this.options.forceUnique||(this.checkChangeHandler=function(){e.container.empty(),e.refresh()},this.checkSource.bind(d,this.checkChangeHandler)),this.form.on("keydown"+I,this._keydown.bind(this)).on("submit"+I,this._filter.bind(this)).on("reset"+I,this._reset.bind(this)),this.trigger(o,{field:this.field,container:this.form})},_attachProgress:function(){var e=this;this._progressHandler=function(){l.progress(e.container,!0)},this._progressHideHandler=function(){l.progress(e.container,!1)},this.checkSource.bind("progress",this._progressHandler).bind("change",this._progressHideHandler)},_input:function(){var e=this;e._clearTypingTimeout(),e._typingTimeout=setTimeout((function(){e.search()}),100)},_clearSearch:function(){this.searchTextBox.val(""),this.search()},_clearTypingTimeout:function(){this._typingTimeout&&(clearTimeout(this._typingTimeout),this._typingTimeout=null)},search:function(){var e=this.options.ignoreCase,t=this.searchTextBox[0].value,i=this.container.find("label");e&&(t=t.toLowerCase());var l=0;for(this.options.checkAll&&i.length&&(this._isMobile?this.view.element.find(".k-select-all")[0].style.visibility=t?"hidden":"":(i[0].parentNode.style.display=t?"none":"",l++));l<i.length;){var a=i[l],s=a.textContent||a.innerText;e&&(s=s.toLowerCase()),a.parentNode.style.display=s.indexOf(t)>=0?"":"none",l++}},_activate:function(){this.form.find(":kendoFocusable").first().trigger("focus"),this.trigger(c,{field:this.field,container:this.form})},_createForm:function(){var t=this.options,l="",a=this;if(this._isMobile||(l+="<div class='k-filter-menu-container'>",t.search&&(l+="<span class='k-searchbox k-textbox k-input k-input-md k-rounded-md k-input-solid'>"+i.ui.icon("search")+"<input class='k-input-inner' type='text' placeholder='"+t.messages.search+"' /><span class='k-input-suffix'><span class='k-clear-value'>"+i.ui.icon("x")+"</span></span></span>"),l+="<ul class='k-reset k-multicheck-wrap'></ul>",t.messages.selectedItemsFormat&&(l+="<div class='k-filter-selected-items'>"+i.format(t.messages.selectedItemsFormat,0)+"</div>"),l+="<div class='k-actions'>",l+="<button type='submit' class='k-button k-button-md k-rounded-md k-button-solid k-button-solid-primary'><span class='k-button-text'>"+t.messages.filter+"</span></button>",l+="<button type='reset' class='k-button k-button-md k-rounded-md k-button-solid k-button-solid-base'><span class='k-button-text'>"+t.messages.clear+"</span></button>",l+="</div>",l+="</div>",this.form=e('<form class="k-filter-menu"/>').html(l),this.container=this.form.find(".k-multicheck-wrap")),this._isMobile){a.form=e("<div />").html(i.template(O)({field:a.field,title:t.title||a.field,ns:i.ns,messages:t.messages,search:t.search,checkAll:t.checkAll})),a.view=a.pane.append(a.form.html()),a.form=a.view.element.find("form");var s=this.view.element;this.container=s.find(".k-multicheck-wrap"),s.on("click",".k-header-done",(function(e){a.form.submit(),e.preventDefault()})).on("click",".k-header-cancel",(function(e){a._closeForm(),e.preventDefault()})).on("click",".k-clear-all",(function(e){a._mobileCheckAll(!1),e.preventDefault()})).on("click",".k-select-all",(function(e){a._mobileCheckAll(!0),e.preventDefault()})),a.view.bind("showStart",(function(){a.refresh()}))}else t.appendToElement?(this.popup=this.element.closest(".k-popup").data(r),this.element.append(this.form)):a.popup=a.form.kendoPopup({anchor:a._link,copyAnchorStyles:!1,open:a._open.bind(a),activate:a._activate.bind(a),close:function(){a.options.closeCallback&&a.options.closeCallback(a.element)}}).data(r);t.search&&(this.searchTextBox=this.form.find(".k-searchbox input"),this.searchTextBox.on("input"+I,this._input.bind(this)),this.clearSearchButton=this.form.find(".k-searchbox .k-clear-value"),this.clearSearchButton.on("click"+I,this._clearSearch.bind(this)))},_open:function(){var t;e(".k-filter-menu").not(this.form).each((function(){(t=e(this).data(r))&&t.close()}))},createCheckAllItem:function(){var t=this.options,l=i.template(t.itemTemplate({field:"all",mobile:this._isMobile})),a=e(l({all:t.messages.checkAll}));this.container.prepend(a),a.addClass("k-check-all-wrap"),this.checkBoxAll=a.find(":checkbox").eq(0).addClass("k-check-all"),this.checkAllHandler=this.checkAll.bind(this),this.checkBoxAll.on(d+I,this.checkAllHandler)},updateCheckAllState:function(){if(this.options.messages.selectedItemsFormat&&this.form.find(".k-filter-selected-items").text(i.format(this.options.messages.selectedItemsFormat,this.container.find(":checked:not(.k-check-all)").length)),this.checkBoxAll){var e=this.container.find(":checkbox:not(.k-check-all)").length==this.container.find(":checked:not(.k-check-all)").length;this.checkBoxAll.prop("checked",e)}},createIsNullItem:function(){var t=this.options,l=i.template(t.itemTemplate({field:"isNull",mobile:this._isMobile,valueField:"value"})),a=e(l({isNull:t.messages.isNull,value:null}));this.container.append(a)},refresh:function(e){var t=this.options.forceUnique,i=this.dataSource,l=this.getFilterArray();this._link&&this._link.toggleClass("k-active",0!==l.length),this.form&&(e&&t&&e.sender===i&&!i.options.serverPaging&&("itemchange"==e.action||"add"==e.action||"remove"==e.action||i.options.autoSync&&"sync"===e.action)&&!this._foreignKeyValues()&&(this.checkSource.data(B(this.dataSource.data(),this.field)),this.container.empty()),this.container.is(":empty")&&this.createCheckBoxes(),this.checkValues(l),this.trigger(u))},getFilterArray:function(){var t=e.extend(!0,{},{filters:[],logic:"and"},this.dataSource.filter());return M(t,this.field),q(t)},createCheckBoxes:function(){var e,t=this.options,l={field:this.field,format:t.format,mobile:this._isMobile,type:this.type},a=E.bind(this);this.options.forceUnique?this._foreignKeyValues()?(e=this.checkSource.data(),l.valueField="value",l.field="text"):e=this.checkSource._isServerGrouped()?B(this.checkSource._flatData(this.checkSource.data()),this.field):this.checkSource.data():e=this.checkSource.view(),"boolean"===this.type&&(this.createIsNullItem(),e=e.filter(a));var s=i.template(t.itemTemplate(l)),n=i.render(s,e);this.container.on(d+I,":checkbox",this.updateCheckAllState.bind(this)),this.container.prepend(n),t.checkAll&&!this._isMobile&&this.createCheckAllItem()},checkAll:function(){var e=this.checkBoxAll.is(":checked");this.container.find(":checkbox").prop("checked",e)},checkValues:function(t){var i=this;e(e.grep(this.container.find(":checkbox").prop("checked",!1),(function(l){var a=!1;if(!e(l).is(".k-check-all"))for(var s=i._parse(e(l).val()),n=0;n<t.length;n++)if(a="date"==i.type?t[n]&&s?t[n].getTime()==s.getTime():null===t[n]&&null===s:t[n]==s)return a}))).prop("checked",!0),this.updateCheckAllState()},_mobileCheckAll:function(t){this.container.find(":checkbox").each((function(i,l){var a=e(l);a.prop("checked",t),a.trigger("change")}))},_filter:function(t){t.preventDefault(),t.stopPropagation();var i={logic:"or"},l=this;i.filters=e.map(this.form.find(":checkbox:checked:not(.k-check-all)"),(function(t){return{value:e(t).val(),operator:"eq",field:l.field}})),this.trigger("change",{filter:i,field:l.field})||((i=this._merge(i)).filters.length?this.dataSource.filter(i):l._removeFilter(l.dataSource.filter()||{filters:[]}),this._closeForm())},_stripFilters:function(t){return e.grep(t,(function(e){return null!=e.value}))},_foreignKeyValues:function(){var e=this.options;return e.values&&!e.checkSource},destroy:function(){var e=this;b.fn.destroy.call(e),e.form&&(i.unbind(e.form),i.destroy(e.form),e.form.off(I),e.popup&&(e.popup.destroy(),e.popup=null),e.form=null,e.container&&(e.container.off(I),e.container=null),e.checkBoxAll&&e.checkBoxAll.off(I)),e.view&&(e.view.purge(),e.view=null),e._link&&e._link.off(p),e._refreshHandler&&(e.dataSource.unbind(d,e._refreshHandler),e.dataSource=null),e.checkChangeHandler&&e.checkSource.unbind(d,e.checkChangeHandler),e._progressHandler&&e.checkSource.unbind("progress",e._progressHandler),e._progressHideHandler&&e.checkSource.unbind("change",e._progressHideHandler),this._clearTypingTimeout(),this.searchTextBox&&(this.searchTextBox.off(I),this.searchTextBox=null),this.clearSearchButton&&(this.clearSearchButton.off(I),this.clearSearchButton=null),e.element=e.checkSource=e.container=e.checkBoxAll=e._link=e._refreshHandler=e.checkAllHandler=null},options:{name:"FilterMultiCheck",itemTemplate:function(e){var l=e.field,a=e.mobile,n=e.valueField,r=e.format,o=e.type,c="";return n===t&&(n=l),"date"==o&&(c=":yyyy-MM-ddTHH:mm:sszzz"),a?function(e){return"<li class='k-item k-listgroup-item'><label class='k-label k-listgroup-form-row k-checkbox-label'><span class='k-listgroup-form-field-label k-item-title '>"+s(i.format(r||"{0}",i.getter(l)(e)))+"</span><span class=\"k-listgroup-form-field-wrapper\"><input type='checkbox' class='k-checkbox k-checkbox-md k-rounded-md' value='"+s(i.format("{0"+c+"}",i.getter(n)(e)))+"'/></span></label></li>"}:function(e){return"<li class='k-item'><label class='k-label k-checkbox-label'><input type='checkbox' class='k-checkbox k-checkbox-md k-rounded-md' value='"+s(i.format("{0"+c+"}",i.getter(n)(e)))+"'/><span>"+s(i.format(r||"{0}",i.getter(l)(e)))+"</span></label></li>"}},checkAll:!0,search:!1,ignoreCase:!0,appendToElement:!1,messages:{checkAll:"Select All",isNull:"is empty",clearAll:"Clear All",clear:"Clear",filter:"Filter",search:"Search",cancel:"Cancel",selectedItemsFormat:"{0} items selected",done:"Done",into:"in",buttonTitle:"{0} filter column settings"},forceUnique:!0,animations:{left:"slide",right:"slide:right"},appendTo:null},events:[o,u,"change",c]});function E(e){return null!==e[this.field]}e.extend(D.fn,{_click:H.fn._click,_keydown:H.fn._keydown,_reset:H.fn._reset,_closeForm:H.fn._closeForm,_removeFilter:H.fn._removeFilter,clear:H.fn.clear,_merge:H.fn._merge}),l.plugin(H),l.plugin(D)}(window.kendo.jQuery)}));
//# sourceMappingURL=kendo.filtermenu.min.js.map