kendo.filtermenu.min.js
24.9 KB
/**
* Kendo UI v2016.1.112 (http://www.telerik.com/kendo-ui)
* Copyright 2016 Telerik AD. All rights reserved.
*
* Kendo UI commercial licenses may be obtained at
* http://www.telerik.com/purchase/license-agreement/kendo-ui-complete
* If you do not own a commercial license, this file shall be governed by the trial license terms.
*/
!function(e,define){define("kendo.filtermenu.min",["kendo.datepicker.min","kendo.numerictextbox.min","kendo.dropdownlist.min","kendo.binder.min"],e)}(function(){return function(e,t){function i(t,s){t.filters&&(t.filters=e.grep(t.filters,function(e){return i(e,s),e.filters?e.filters.length:e.field!=s}))}function s(e){var t,i,s,l,a,n;if(e&&e.length)for(n=[],t=0,i=e.length;i>t;t++)s=e[t],a=""!==s.text?s.text||s.value||s:s.text,l=null==s.value?s.text||s:s.value,n[t]={text:a,value:l};return n}function l(t,i){return e.grep(t,function(t){return t.filters?(t.filters=e.grep(t.filters,function(e){return e.field!=i}),t.filters.length):t.field!=i})}function a(t,i){t.filters&&(t.filters=e.grep(t.filters,function(e){return a(e,i),e.filters?e.filters.length:e.field==i&&"eq"==e.operator}))}function n(i){return"and"==i.logic&&i.filters.length>1?[]:i.filters?e.map(i.filters,function(e){return n(e)}):null!==i.value&&i.value!==t?[i.value]:[]}function r(e,i){for(var s,l,a=c.getter(i,!0),n=[],r=0,o={};e.length>r;)s=e[r++],l=a(s),l===t||null===l||o.hasOwnProperty(l)||(n.push(s),o[l]=!0);return n}function o(e,t){return function(i){var s=e(i);return r(s,t)}}var c=window.kendo,u=c.ui,d=e.proxy,f="kendoPopup",h="init",p="refresh",m="change",k=".kendoFilterMenu",v="Is equal to",g="Is not equal to",b={number:"numerictextbox",date:"datepicker"},_={string:"text",number:"number",date:"date"},y=c.isFunction,x=u.Widget,S='<div><div class="k-filter-help-text">#=messages.info#</div><label><input type="radio" data-#=ns#bind="checked: filters[0].value" value="true" name="filters[0].value"/>#=messages.isTrue#</label><label><input type="radio" data-#=ns#bind="checked: filters[0].value" value="false" name="filters[0].value"/>#=messages.isFalse#</label><div><button type="submit" class="k-button k-primary">#=messages.filter#</button><button type="reset" class="k-button">#=messages.clear#</button></div></div>',w='<div><div class="k-filter-help-text">#=messages.info#</div><select data-#=ns#bind="value: filters[0].operator" data-#=ns#role="dropdownlist">#for(var op in operators){#<option value="#=op#">#=operators[op]#</option>#}#</select>#if(values){#<select data-#=ns#bind="value:filters[0].value" data-#=ns#text-field="text" data-#=ns#value-field="value" data-#=ns#source=\'#=kendo.stringify(values).replace(/\'/g,"&\\#39;")#\' data-#=ns#role="dropdownlist" data-#=ns#option-label="#=messages.selectValue#" data-#=ns#value-primitive="true"></select>#}else{#<input data-#=ns#bind="value:filters[0].value" class="k-textbox" type="text" #=role ? "data-" + ns + "role=\'" + role + "\'" : ""# />#}##if(extra){#<select class="k-filter-and" data-#=ns#bind="value: logic" data-#=ns#role="dropdownlist"><option value="and">#=messages.and#</option><option value="or">#=messages.or#</option></select><select data-#=ns#bind="value: filters[1].operator" data-#=ns#role="dropdownlist">#for(var op in operators){#<option value="#=op#">#=operators[op]#</option>#}#</select>#if(values){#<select data-#=ns#bind="value:filters[1].value" data-#=ns#text-field="text" data-#=ns#value-field="value" data-#=ns#source=\'#=kendo.stringify(values).replace(/\'/g,"&\\#39;")#\' data-#=ns#role="dropdownlist" data-#=ns#option-label="#=messages.selectValue#" data-#=ns#value-primitive="true"></select>#}else{#<input data-#=ns#bind="value: filters[1].value" class="k-textbox" type="text" #=role ? "data-" + ns + "role=\'" + role + "\'" : ""#/>#}##}#<div><button type="submit" class="k-button k-primary">#=messages.filter#</button><button type="reset" class="k-button">#=messages.clear#</button></div></div>',C='<div data-#=ns#role="view" data-#=ns#init-widgets="false" class="k-grid-filter-menu"><div data-#=ns#role="header" class="k-header"><button class="k-button k-cancel">#=messages.cancel#</button>#=title#<button type="submit" class="k-button k-submit">#=messages.filter#</button></div><form class="k-filter-menu k-mobile-list"><ul class="k-filter-help-text"><li><span class="k-link">#=messages.info#</span><ul><li class="k-item"><label class="k-label">#=messages.operator#<select data-#=ns#bind="value: filters[0].operator">#for(var op in operators){#<option value="#=op#">#=operators[op]#</option>#}#</select></label></li><li class="k-item"><label class="k-label">#=messages.value##if(values){#<select data-#=ns#bind="value:filters[0].value"><option value="">#=messages.selectValue#</option>#for(var val in values){#<option value="#=values[val].value#">#=values[val].text#</option>#}#</select>#}else{#<input data-#=ns#bind="value:filters[0].value" class="k-textbox" type="#=inputType#" #=useRole ? "data-" + ns + "role=\'" + role + "\'" : ""# />#}#</label></li>#if(extra){#</ul><ul class="k-filter-help-text"><li><span class="k-link"></span><li class="k-item"><label class="k-label"><input type="radio" name="logic" class="k-check" data-#=ns#bind="checked: logic" value="and" />#=messages.and#</label></li><li class="k-item"><label class="k-label"><input type="radio" name="logic" class="k-check" data-#=ns#bind="checked: logic" value="or" />#=messages.or#</label></li></ul><ul class="k-filter-help-text"><li><span class="k-link"></span><li class="k-item"><label class="k-label">#=messages.operator#<select data-#=ns#bind="value: filters[1].operator">#for(var op in operators){#<option value="#=op#">#=operators[op]#</option>#}#</select></label></li><li class="k-item"><label class="k-label">#=messages.value##if(values){#<select data-#=ns#bind="value:filters[1].value"><option value="">#=messages.selectValue#</option>#for(var val in values){#<option value="#=values[val].value#">#=values[val].text#</option>#}#</select>#}else{#<input data-#=ns#bind="value:filters[1].value" class="k-textbox" type="#=inputType#" #=useRole ? "data-" + ns + "role=\'" + role + "\'" : ""# />#}#</label></li>#}#</ul></li><li class="k-button-container"><button type="reset" class="k-button">#=messages.clear#</button></li></ul></div></form></div>',T='<div data-#=ns#role="view" data-#=ns#init-widgets="false" class="k-grid-filter-menu"><div data-#=ns#role="header" class="k-header"><button class="k-button k-cancel">#=messages.cancel#</button>#=title#<button type="submit" class="k-button k-submit">#=messages.filter#</button></div><form class="k-filter-menu k-mobile-list"><ul class="k-filter-help-text"><li><span class="k-link">#=messages.info#</span><ul><li class="k-item"><label class="k-label"><input class="k-check" type="radio" data-#=ns#bind="checked: filters[0].value" value="true" name="filters[0].value"/>#=messages.isTrue#</label></li><li class="k-item"><label class="k-label"><input class="k-check" type="radio" data-#=ns#bind="checked: filters[0].value" value="false" name="filters[0].value"/>#=messages.isFalse#</label></li></ul></li><li class="k-button-container"><button type="reset" class="k-button">#=messages.clear#</button></li></ul></form></div>',F=x.extend({init:function(t,i){var s,l,a,n,r=this,o="string";x.fn.init.call(r,t,i),s=r.operators=i.operators||{},t=r.element,i=r.options,i.appendToElement||(a=t.addClass("k-with-icon k-filterable").find(".k-grid-filter"),a[0]||(a=t.prepend('<a class="k-grid-filter" href="#"><span class="k-icon k-filter">'+i.messages.filter+"</span></a>").find(".k-grid-filter")),a.attr("tabindex",-1).on("click"+k,d(r._click,r))),r.link=a||e(),r.dataSource=A.create(i.dataSource),r.field=i.field||t.attr(c.attr("field")),r.model=r.dataSource.reader.model,r._parse=function(e){return e+""},r.model&&r.model.fields&&(n=r.model.fields[r.field],n&&(o=n.type||"string",n.parse&&(r._parse=d(n.parse,n)))),i.values&&(o="enums"),r.type=o,s=s[o]||i.operators[o];for(l in s)break;r._defaultFilter=function(){return{field:r.field,operator:l||"eq",value:""}},r._refreshHandler=d(r.refresh,r),r.dataSource.bind(m,r._refreshHandler),i.appendToElement?r._init():r.refresh()},_init:function(){var t,i=this,s=i.options.ui,l=y(s);i.pane=i.options.pane,i.pane&&(i._isMobile=!0),l||(t=s||b[i.type]),i._isMobile?i._createMobileForm(t):i._createForm(t),i.form.on("submit"+k,d(i._submit,i)).on("reset"+k,d(i._reset,i)),l&&i.form.find(".k-textbox").removeClass("k-textbox").each(function(){s(e(this))}),i.form.find("["+c.attr("role")+"=numerictextbox]").removeClass("k-textbox").end().find("["+c.attr("role")+"=datetimepicker]").removeClass("k-textbox").end().find("["+c.attr("role")+"=timepicker]").removeClass("k-textbox").end().find("["+c.attr("role")+"=datepicker]").removeClass("k-textbox"),i.refresh(),i.trigger(h,{field:i.field,container:i.form}),c.cycleForm(i.form)},_createForm:function(t){var i=this,l=i.options,a=i.operators||{},n=i.type;a=a[n]||l.operators[n],i.form=e('<form class="k-filter-menu"/>').html(c.template("boolean"===n?S:w)({field:i.field,format:l.format,ns:c.ns,messages:l.messages,extra:l.extra,operators:a,type:n,role:t,values:s(l.values)})),l.appendToElement?(i.element.append(i.form),i.popup=i.element.closest(".k-popup").data(f)):i.popup=i.form[f]({anchor:i.link,open:d(i._open,i),activate:d(i._activate,i),close:function(){i.options.closeCallback&&i.options.closeCallback(i.element)}}).data(f),i.form.on("keydown"+k,d(i._keydown,i))},_createMobileForm:function(t){var i=this,l=i.options,a=i.operators||{},n=i.type;a=a[n]||l.operators[n],i.form=e("<div />").html(c.template("boolean"===n?T:C)({field:i.field,title:l.title||i.field,format:l.format,ns:c.ns,messages:l.messages,extra:l.extra,operators:a,type:n,role:t,useRole:!c.support.input.date&&"date"===n||"number"===n,inputType:_[n],values:s(l.values)})),i.view=i.pane.append(i.form.html()),i.form=i.view.element.find("form"),i.view.element.on("click",".k-submit",function(e){i.form.submit(),e.preventDefault()}).on("click",".k-cancel",function(e){i._closeForm(),e.preventDefault()})},refresh:function(){var e=this,t=e.dataSource.filter()||{filters:[],logic:"and"};e.filterModel=c.observable({logic:"and",filters:[e._defaultFilter(),e._defaultFilter()]}),e.form&&c.bind(e.form.children().first(),e.filterModel),e._bind(t)?e.link.addClass("k-state-active"):e.link.removeClass("k-state-active")},destroy:function(){var e=this;x.fn.destroy.call(e),e.form&&(c.unbind(e.form),c.destroy(e.form),e.form.unbind(k),e.popup&&(e.popup.destroy(),e.popup=null),e.form=null),e.view&&(e.view.purge(),e.view=null),e.link.unbind(k),e._refreshHandler&&(e.dataSource.unbind(m,e._refreshHandler),e.dataSource=null),e.element=e.link=e._refreshHandler=e.filterModel=null},_bind:function(e){var t,i,s,l,a=this,n=e.filters,r=!1,o=0,c=a.filterModel;for(t=0,i=n.length;i>t;t++)l=n[t],l.field==a.field?(c.set("logic",e.logic),s=c.filters[o],s||(c.filters.push({field:a.field}),s=c.filters[o]),s.set("value",a._parse(l.value)),s.set("operator",l.operator),o++,r=!0):l.filters&&(r=r||a._bind(l));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})},_merge:function(e){var t,s,l,a=this,n=e.logic||"and",r=this._stripFilters(e.filters),o=a.dataSource.filter()||{filters:[],logic:"and"};for(i(o,a.field),s=0,l=r.length;l>s;s++)t=r[s],t.value=a._parse(t.value);return r.length&&(o.filters.length?(e.filters=r,"and"!==o.logic&&(o.filters=[{logic:o.logic,filters:o.filters}],o.logic="and"),o.filters.push(r.length>1?e:r[0])):(o.filters=r,o.logic=n)),o},filter:function(e){e=this._merge(e),e.filters.length&&this.dataSource.filter(e)},clear:function(){var t=this,i=t.dataSource.filter()||{filters:[]};i.filters=e.grep(i.filters,function(e){return e.filters?(e.filters=l(e.filters,t.field),e.filters.length):e.field!=t.field}),i.filters.length||(i=null),t.dataSource.filter(i)},_submit:function(e){e.preventDefault(),e.stopPropagation(),this.filter(this.filterModel.toJSON()),this._closeForm()},_reset:function(){this.clear(),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(f),t&&t.close()})},_activate:function(){this.form.find(":kendoFocusable:first").focus()},_keydown:function(e){e.keyCode==c.keys.ESC&&this.popup.close()},events:[h],options:{name:"FilterMenu",extra:!0,appendToElement:!1,type:"string",operators:{string:{eq:v,neq:g,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"},number:{eq:v,neq:g,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:v,neq:g,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:v,neq:g,isnull:"Is null",isnotnull:"Is not null"}},messages:{info:"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",cancel:"Cancel"},animations:{left:"slide",right:"slide:right"}}}),H=".kendoFilterMultiCheck",A=c.data.DataSource,q=x.extend({init:function(t,i){var s,l;x.fn.init.call(this,t,i),i=this.options,this.element=e(t),s=this.field=this.options.field||this.element.attr(c.attr("field")),l=i.checkSource,this._foreignKeyValues()?(this.checkSource=A.create(i.values),this.checkSource.fetch()):i.forceUnique?(l=i.dataSource.options,delete l.pageSize,this.checkSource=A.create(l),this.checkSource.reader.data=o(this.checkSource.reader.data,this.field)):this.checkSource=A.create(l),this.dataSource=i.dataSource,this.model=this.dataSource.reader.model,this._parse=function(e){return e+""},this.model&&this.model.fields&&(s=this.model.fields[this.field],s&&(s.parse&&(this._parse=d(s.parse,s)),this.type=s.type||"string")),i.appendToElement?this._init():this._createLink(),this._refreshHandler=d(this.refresh,this),this.dataSource.bind(m,this._refreshHandler)},_createLink:function(){var e=this.element,t=e.addClass("k-with-icon k-filterable").find(".k-grid-filter");t[0]||(t=e.prepend('<a class="k-grid-filter" href="#"><span class="k-icon k-filter"/></a>').find(".k-grid-filter")),this._link=t.attr("tabindex",-1).on("click"+k,d(this._click,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(r(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(m,this.checkChangeHandler)),this.form.on("keydown"+H,d(this._keydown,this)).on("submit"+H,d(this._filter,this)).on("reset"+H,d(this._reset,this)),this.trigger(h,{field:this.field,container:this.form})},_attachProgress:function(){var e=this;this._progressHandler=function(){u.progress(e.container,!0)},this._progressHideHandler=function(){u.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)},_clearTypingTimeout:function(){this._typingTimeout&&(clearTimeout(this._typingTimeout),this._typingTimeout=null)},search:function(){var e,t,i,s=this.options.ignoreCase,l=this.searchTextBox[0].value,a=this.container.find("label");for(s&&(l=l.toLowerCase()),e=this.options.checkAll?1:0;a.length>e;e++)t=a[e],i=t.textContent||t.innerText,s&&(i=i.toLowerCase()),t.style.display=i.indexOf(l)>=0?"":"none"},_createForm:function(){var t,i,s=this.options,l="";!this._isMobile&&s.search&&(l+="<div class='k-textbox k-space-right'><input placeholder='"+s.messages.search+"'/><span class='k-icon k-font-icon k-i-search' /></div>"),l+="<ul class='k-reset k-multicheck-wrap'></ul><button type='submit' class='k-button k-primary'>"+s.messages.filter+"</button>",l+="<button type='reset' class='k-button'>"+s.messages.clear+"</button>",this.form=e('<form class="k-filter-menu"/>').html(l),this.container=this.form.find(".k-multicheck-wrap"),s.search&&(this.searchTextBox=this.form.find(".k-textbox > input"),this.searchTextBox.on("input",d(this._input,this))),this._isMobile?(this.view=this.pane.append(this.form.addClass("k-mobile-list").wrap("<div/>").parent().html()),t=this.view.element,this.form=t.find("form"),this.container=t.find(".k-multicheck-wrap"),i=this,t.on("click",".k-primary",function(e){i.form.submit(),e.preventDefault()}).on("click","[type=reset]",function(e){i._reset(),e.preventDefault()})):s.appendToElement?(this.popup=this.element.closest(".k-popup").data(f),this.element.append(this.form)):this.popup=this.form.kendoPopup({anchor:this._link}).data(f)},createCheckAllItem:function(){var t=this.options,i=c.template(t.itemTemplate({field:"all",mobile:this._isMobile})),s=e(i({all:t.messages.checkAll}));this.container.prepend(s),this.checkBoxAll=s.find(":checkbox").eq(0).addClass("k-check-all"),this.checkAllHandler=d(this.checkAll,this),this.checkBoxAll.on(m+H,this.checkAllHandler)},updateCheckAllState:function(){if(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)}},refresh:function(e){var t=this.options.forceUnique,i=this.dataSource,s=this.getFilterArray();this._link&&this._link.toggleClass("k-state-active",0!==s.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(r(this.dataSource.data(),this.field)),this.container.empty()),this.container.is(":empty")&&this.createCheckBoxes(),this.checkValues(s),this.trigger(p))},getFilterArray:function(){var t,i=e.extend(!0,{},{filters:[],logic:"and"},this.dataSource.filter());return a(i,this.field),t=n(i)},createCheckBoxes:function(){var e,t,i,s=this.options,l={field:this.field,format:s.format,mobile:this._isMobile,type:this.type};this.options.forceUnique?this._foreignKeyValues()?(e=this.checkSource.data(),l.valueField="value",l.field="text"):e=this.checkSource.data():e=this.checkSource.view(),t=c.template(s.itemTemplate(l)),i=c.render(t,e),s.checkAll&&(this.createCheckAllItem(),this.container.on(m+H,":checkbox",d(this.updateCheckAllState,this))),this.container.append(i)},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(s){var l,a,n=!1;if(!e(s).is(".k-check-all"))for(l=i._parse(e(s).val()),a=0;t.length>a;a++)if(n="date"==i.type?t[a].getTime()==l.getTime():t[a]==l)return n})).prop("checked",!0),this.updateCheckAllState()},_filter:function(t){var i,s;t.preventDefault(),t.stopPropagation(),i={logic:"or"},s=this,i.filters=e.map(this.form.find(":checkbox:checked:not(.k-check-all)"),function(t){return{value:e(t).val(),operator:"eq",field:s.field}}),i=this._merge(i),i.filters.length&&this.dataSource.filter(i),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;x.fn.destroy.call(e),e.form&&(c.unbind(e.form),c.destroy(e.form),e.form.unbind(H),e.popup&&(e.popup.destroy(),e.popup=null),e.form=null,e.container&&(e.container.unbind(H),e.container=null),e.checkBoxAll&&e.checkBoxAll.unbind(H)),e.view&&(e.view.purge(),e.view=null),e._link&&e._link.unbind(k),e._refreshHandler&&(e.dataSource.unbind(m,e._refreshHandler),e.dataSource=null),e.checkChangeHandler&&e.checkSource.unbind(m,e.checkChangeHandler),e._progressHandler&&e.checkSource.unbind("progress",e._progressHandler),e._progressHideHandler&&e.checkSource.unbind("change",e._progressHideHandler),this._clearTypingTimeout(),this.searchTextBox=null,e.element=e.checkSource=e.container=e.checkBoxAll=e._link=e._refreshHandler=e.checkAllHandler=null},options:{name:"FilterMultiCheck",itemTemplate:function(e){var i=e.field,s=e.format,l=e.valueField,a=e.mobile,n="";return l===t&&(l=i),"date"==e.type&&(n=":yyyy-MM-ddTHH:mm:sszzz"),"<li class='k-item'><label class='k-label'><input type='checkbox' class='"+(a?"k-check":"")+"' value='#:kendo.format('{0"+n+"}',"+l+")#'/>#:kendo.format('"+(s?s:"{0}")+"', "+i+")#</label></li>"},checkAll:!0,search:!1,ignoreCase:!0,appendToElement:!1,messages:{checkAll:"Select All",clear:"Clear",filter:"Filter",search:"Search"},forceUnique:!0,animations:{left:"slide",right:"slide:right"}},events:[h,p]});e.extend(q.fn,{_click:F.fn._click,_keydown:F.fn._keydown,_reset:F.fn._reset,_closeForm:F.fn._closeForm,clear:F.fn.clear,_merge:F.fn._merge}),u.plugin(F),u.plugin(q)}(window.kendo.jQuery),window.kendo},"function"==typeof define&&define.amd?define:function(e,t,i){(i||t)()});
//# sourceMappingURL=kendo.filtermenu.min.js.map