@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) • 40.4 kB
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("kendo.datepicker.js"),require("kendo.numerictextbox.js"),require("kendo.dropdownlist.js"),require("kendo.buttongroup.js"),require("kendo.binder.js"),require("kendo.html.button.js"),require("kendo.icons.js"),require("kendo.pane.js"),require("kendo.actionsheet.js")):"function"==typeof define&&define.amd?define(["exports","kendo.datepicker.min","kendo.numerictextbox.min","kendo.dropdownlist.min","kendo.buttongroup.min","kendo.binder.min","kendo.html.button.min","kendo.icons.min","kendo.pane.min","kendo.actionsheet.min"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self).kendo=e.kendo||{},e.kendo._globals=e.kendo._globals||{},e.kendo._globals.Filtermenu={}))}(this,(function(e){!function(e,t){var i=window.kendo,l=i.ui,a=i.support,s=i.htmlEncode,n=a.browser.chrome?"disabled":"off",o="kendoPopup",r="kendoActionSheet",c="init",p="open",d="refresh",u="change",f=".kendoFilterMenu",h=".k-table-th",m="Is equal to",k="Is not equal to",v={number:"numerictextbox",date:"datepicker"},g={string:"text",number:"number",date:"date"},b=i.isFunction,$=l.Widget,y=({actionsCssClass:e,messages:t,size:l})=>`<div class="k-actions-stretched ${e||"k-actions"}">`+i.html.renderButton(`<button title="${t.filter}">${s(t.filter)}</button>`,{type:"submit",themeColor:"primary",icon:"filter",size:l})+i.html.renderButton(`<button title="${t.clear}">${s(t.clear)}</button>`,{type:"reset",icon:"filter-clear",size:l})+"</div>",_=({field:e,format:t,ns:i,messages:l,extra:a,operators:n,type:o,role:r,values:c,componentType:p,isAdaptive:d})=>`<div class="k-filter-menu-container"><div class="k-filter-help-text">${s(l.info)}</div><label><input type="radio" class="k-radio ${d?"k-radio-lg":"k-radio-md"}" data-${i}bind="checked: filters[0].value" value="true" name="filters[0].value"/>${s(l.isTrue)}</label><label><input type="radio" class="k-radio ${d?"k-radio-lg":"k-radio-md"}" data-${i}bind="checked: filters[0].value" value="false" name="filters[0].value"/>${s(l.isFalse)}</label>${d?"":y({messages:l})}</div>`,w=({field:e,format:t,ns:l,messages:a,extra:n,operators:o,type:r,role:c,values:p,componentType:d,isAdaptive:u})=>{var f=i.guid(),h=i.guid();return`<div class="k-filter-menu-container"><div><ul class="k-radio-list k-reset"><li><input type="radio" class="k-radio ${u?"k-radio-lg":"k-radio-md"}" id="${f}" ${u?'data-size="large"':""} data-${l}bind="checked: filters[0].value" value="true" name="filters[0].value" /><label class="k-radio-label" for="${f}">${s(a.isTrue)}</label></li><li><input type="radio" class="k-radio ${u?"k-radio-lg":"k-radio-md"}" id="${h}" data-${l}bind="checked: filters[0].value" value="false" name="filters[0].value" /><label class="k-radio-label" for="${h}">${s(a.isFalse)}</label></li></ul>${u?"":y({actionsCssClass:"k-columnmenu-actions",messages:a})}</div></div>`},x=({field:e,format:t,ns:i,messages:l,extra:a,operators:n,type:o,role:r,values:c,componentType:p,isAdaptive:d})=>`<div class="k-filter-menu-container"><div class="k-filter-help-text">${s(l.info)}</div><label><span class="k-textbox k-input ${d?"k-input-lg":"k-input-md"} k-input-md k-rounded-md k-input-solid"><input class="k-input-inner" ${d?'data-size="large"':""} data-${i}bind="value: filters[0].value adaptiveMode: ${d?"auto":"none"}" name="filters[0].value"/></span></label>${d?"":y({messages:l})}</div>`,T=({field:e,format:t,ns:l,messages:a,extra:n,operators:o,type:r,role:c,values:p,componentType:d,isAdaptive:u})=>'<div class="k-filter-menu-container">'+("classic"===d?`<div class="k-filter-help-text">${s(a.info)}</div>`:"")+`<select title="${a.operator}" data-${l}bind="value: filters[0].operator" ${u?'data-size="large"':""} data-${l}adaptive-mode="${u?"auto":"none"}" data-${l}role="dropdownlist">`+`${Object.keys(o||{}).map((e=>`<option value="${e}">${o[e]}</option>`))}</select>`+(p?`<select title="${a.value}" data-${l}bind="value:filters[0].value" data-${l}text-field="text" ${u?'data-size="large"':""} data-${l}adaptive-mode="${u?"auto":"none"}" data-${l}value-field="value" data-${l}source='${i.stringify(p).replace(/\'/g,"'")}' data-${l}role="dropdownlist" data-${l}option-label="${a.selectValue}" data-${l}value-primitive="true"></select>`:`<input title="${a.value}" data-${l}bind="value:filters[0].value" ${u?'data-size="large"':""} class="k-input-inner" type="text" data-${l}adaptive-mode="${u?"auto":"none"}" ${c?`data-${l}role="${c}"`:""} />`)+(n?(({ns:e,messages:t,componentType:i,isAdaptive:l})=>"modern"===i?`<ul data-${e}role="buttongroup" data-bind="events: { select: onLogicChange }"><li data-${e}value="and">${s(t.and)}</li><li data-${e}value="or">${s(t.or)}</li></ul>`:`<select title="${t.logic}" class="k-filter-and" ${l?'data-size="large"':""} data-${e}adaptive-mode="${l?"auto":"none"}" data-${e}bind="value: logic" data-${e}role="dropdownlist"><option value="and">${s(t.and)}</option><option value="or">${s(t.or)}</option></select>`)({ns:l,messages:a,componentType:d,isAdaptive:u})+`<select title="${a.additionalOperator}" ${u?'data-size="large"':""} data-${l}bind="value: filters[1].operator" data-${l}adaptive-mode="${u?"auto":"none"}" data-${l}role="dropdownlist">`+`${Object.keys(o||{}).map((e=>`<option value="${e}">${s(o[e])}</option>`))}</select>`+(p?`<select title="${a.additionalValue}" data-${l}bind="value:filters[1].value" ${u?'data-size="large"':""} data-${l}text-field="text" data-${l}adaptive-mode="${u?"auto":"none"}" data-${l}value-field="value" data-${l}source='${i.stringify(p).replace(/\'/g,"'")}' data-${l}role="dropdownlist" data-${l}option-label="${a.selectValue}" data-${l}value-primitive="true"></select>`:`<input title="${a.additionalValue}" data-${l}bind="value: filters[1].value" ${u?'data-size="large"':""} class="k-input-inner" type="text" data-${l}adaptive-mode="${u?"auto":"none"}" ${c?`data-${l}role="${c}"`:""}/>`):"")+`${u?"":y({messages:a})}</div>`,S=({field:e,title:t,format:l,ns:a,messages:o,extra:r,operators:c,filterMenuGuid:p,type:d,role:u,inputType:f,values:h})=>`<div data-${a}role="view" class="k-grid-filter-menu"><div data-${a}role="header" class="k-appbar k-appbar-primary">`+i.html.renderButton(`<button class="k-header-cancel" title="${o.cancel}" aria-label="${o.cancel}"></button>`,{icon:"chevron-left",fillMode:"flat"})+'<span class="k-spacer"></span>'+`<span>${s(o.filter)} ${s(o.into)} ${s(t)}</span><span class="k-spacer"></span>`+i.html.renderButton(`<button class="k-header-done" title="${o.done}" aria-label="${o.done}"></button>`,{icon:"check",fillMode:"flat"})+"</div>"+`<form title="${o.title}" class="k-filter-menu"><ul class="k-reset"><li>`+`<span class="k-list-title k-filter-help-text">${s(o.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">${o.operator}</span><span class="k-listgroup-form-field-wrapper">`+`<select id="operator_${p}" title="${o.operator}" class="k-filter-operator" data-${a}bind="value: filters[0].operator" autocomplete="${n}" >`+`${Object.keys(c||{}).map((e=>`<option value="${e}">${s(c[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">${o.value}</span><span class="k-listgroup-form-field-wrapper">`+(h?`<select id="value_${p}" title="${o.value}" data-${a}bind="value:filters[0].value" autocomplete="${n}" ><option value="">${o.selectValue}</option>${Object.keys(h||{}).map((e=>`<option value="${h[e].value}">${s(h[e].text)}</option>`))}</select>`:`<input id="value_${p}" title="${o.value}" data-${a}bind="value:filters[0].value" class="k-value-input" type="${f}" autocomplete="${n}" />`)+"</span></label></li></ul>"+(r?`<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">${o.and}</span><span class="k-listgroup-form-field-wrapper"><input id="and_${p}" title="${o.and}" type="radio" name="logic"data-${a}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">${o.or}</span><span class="k-listgroup-form-field-wrapper"><input id="or_${p}" title="${o.or}" type="radio" name="logic" data-${a}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">${o.additionalOperator}</span><span class="k-listgroup-form-field-wrapper"><select id="additionalOperator_${p}" title="${o.additionalOperator}" class="k-filter-operator" data-${a}bind="value: filters[1].operator" autocomplete="${n}" >${Object.keys(c||{}).map((e=>`<option value="${e}">${c[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">${o.additionalValue}</span><span class="k-listgroup-form-field-wrapper">`+(h?`<select id="additionalValue_${p}" title="${o.additionalValue}" data-${a}bind="value:filters[1].value" autocomplete="${n}" ><option value="">${o.selectValue}</option>${Object.keys(h||{}).map((e=>`<option value="${h[e].value}">${s(h[e].text)}</option>`))}</select>`:`<input id="additionalValue_${p}" title="${o.additionalValue}" data-${a}bind="value:filters[1].value" class="k-value-input" type="${f}" 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="${o.clear}" aria-label="${o.clear}">`+`${s(o.clear)}</span></li></ul></li></ul></form></div>`,A=({field:e,title:t,format:l,ns:a,messages:o,extra:r,operators:c,filterMenuGuid:p,type:d,role:u,inputType:f,values:h})=>`<div data-${a}role="view" class="k-grid-filter-menu"><div data-${a}role="header" class="k-appbar k-appbar-primary">`+i.html.renderButton(`<button class="k-header-cancel" title="${o.cancel}" aria-label="${o.cancel}"></button>`,{icon:"chevron-left",fillMode:"flat"})+'<span class="k-spacer"></span>'+`<span>${s(o.filter)} ${s(o.into)} ${s(t)}</span><span class="k-spacer"></span>`+i.html.renderButton(`<button class="k-header-done" title="${o.done}" aria-label="${o.done}"></button>`,{icon:"check",fillMode:"flat"})+"</div>"+`<form title="${o.title}" class="k-filter-menu"><ul class="k-reset"><li>`+`<span class="k-list-title k-filter-help-text">${s(o.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">${s(o.isTrue)}</span><span class="k-listgroup-form-field-wrapper"></span>`+`<input id="true_${p}" title="${o.isTrue}" type="radio" data-${a}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_${p}" class="k-listgroup-form-field-label k-item-title">${s(o.isFalse)}</span><span class="k-listgroup-form-field-wrapper">`+`<input id="false_${p}" title="${o.isFalse}" type="radio" data-${a}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="${o.clear}" aria-label="${o.clear}">`+`${s(o.clear)}</span></li></ul></li></ul></form></div>`;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})))}function F(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 C=$.extend({init:function(t,l){var a,s,n,o,r=this,c="string";for(s in(l=l||{}).componentType=l.componentType||"classic",$.fn.init.call(r,t,l),a=r.operators=l.operators||{},t=r.element,l=r.options,r.dataSource=B.create(l.dataSource),r.field=l.field||t.attr(i.attr("field")),(o=e(t.closest(h))).length?r.appendTo=o.find(l.appendTo):r.appendTo=e(l.appendTo),r.link=r._createLink()||e(),r.model=r.dataSource.reader.model,r._bindMediaQueries(),r._parse=function(e){return null!=e?e+"":e},r.model&&r.model.fields&&(n=r.model.fields[r.field])&&(c=n.type||"string",n.parse&&(r._parse=n.parse.bind(n))),l.values&&(c="enums"),r.type=c,a=a[c]||l.operators[c])break;r._defaultFilter=function(e){const t={field:r.field,operator:s||"eq",value:""};if(!r.form)return t;const l=r.form.find(".k-filter-menu-container").children().find("input"),a=l.first(),n=l.last();if(a.is(n)&&e)return t;const o=e?n:a,c=i.widgetInstance(o);return c?{field:r.field,operator:s||"eq",value:c.value()}:t},r._refreshHandler=r.refresh.bind(r),r.dataSource.bind(u,r._refreshHandler),l.appendToElement?r._init():r.refresh()},_init:function(){var t,l=this,a=l.options.ui,s=b(a),n=i.attr("role");l.pane=l.options.pane,l.pane&&(l._isMobile=!0),s||(t=a||v[l.type]),l._isMobile?l._createMobileForm(t):l._createForm(t),l.form.on("submit"+f,l._submit.bind(l)).on("reset"+f,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 ${l._showAdaptiveView?"k-input-lg":"k-input-md"} k-rounded-md k-input-solid'></span>`)),l.refresh(),l.trigger(c,{field:l.field,container:l.form}),l.options.cycleForm&&i.cycleForm(l.form)},_adaptiveView:function(){const e=this;e.popup&&(e.popup.close(),e.popup.wrapper&&e.popup.wrapper.remove(),e.popup.destroy(),e.popup=null)},_createForm:function(t){var l=this,a=l.options,n=l.operators||{},c=l.type;const p=l._showAdaptiveView;if(n=n[c]||a.operators[c],l.form=e('<form title="'+s(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:n,type:c,role:t,values:F(a.values),componentType:l.options.componentType,isAdaptive:p})),a.appendToElement)l.element.append(l.form),l.popup=l.element.closest(".k-column-menu.k-popup").data(o);else if(p){const t=e("<div></div>").append(l.form).appendTo("body");l.popup=t[r]({anchor:l.link,copyAnchorStyles:!1,open:l._open.bind(l),activate:l._activate.bind(l),adaptive:!0,closeButton:!0,title:a.adaptiveTitle||"Filter by "+l.field,subtitle:a.adaptiveSubtitle,actionButtons:[{text:"Clear",icon:"filter-clear"},{text:"Filter",icon:"filter",themeColor:"primary"}],close:function(){l.options.closeCallback&&l.options.closeCallback(l.element)}}).data(r),l.popup.fullscreen(l.smallMQL.mediaQueryList.matches)}else l.popup=l.form[o]({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(o);l.form.on("keydown"+f,l._keydown.bind(l))},_getTemplate:function(){var e=this,t=b(e.options.ui);return"boolean"===e.type?t?x:"modern"===e.options.componentType?w:_:T},_createMobileForm:function(t){var l=this,a=l.options,s=l.operators||{},n=i.guid(),o=l.type;s=s[o]||a.operators[o],l.form=e("<div />").html(i.template("boolean"===o?A:S)({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:o,role:t,inputType:g[o],values:F(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()})),l.view.bind("transitionEnd",(function(e){"show"===e.type&&l.trigger(p,{field:l.field,container:l.form})}))},_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"+f,t._click.bind(t)),e},_bindMediaQueries:function(){const e=this;"auto"===e.options.adaptiveMode?(e.largeMQL=i.mediaQuery("large"),e.mediumMQL=i.mediaQuery("medium"),e.smallMQL=i.mediaQuery("small"),e.smallMQL.onEnter((()=>{e._showAdaptiveView=!0,e.popup&&e.popup.visible()&&e.popup.fullscreen?e.popup.fullscreen(!0):e._adaptiveView()})),e.mediumMQL.onEnter((()=>{e._showAdaptiveView=!0,e.popup&&e.popup.visible()&&e.popup.fullscreen?e.popup.fullscreen(!1):e._adaptiveView()})),e.largeMQL.onEnter((()=>{e._showAdaptiveView=!1,e._adaptiveView()}))):(e.smallMQL&&e.smallMQL.destroy(),e.mediumMQL&&e.mediumMQL.destroy(),e.largeMQL&&e.largeMQL.destroy(),e._showAdaptiveView=!1)},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(!0)),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;$.fn.destroy.call(e),e.form&&(i.unbind(e.form),i.destroy(e.form),e.form.off(f),e.popup&&(e.popup.destroy(),e.popup=null),e.form=null),e.view&&(e.view.purge(),e.view=null),e.link.off(f),e._refreshHandler&&(e.dataSource.unbind(u,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,o=!1,r=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[r])||(c.filters.push({field:s.field}),l=c.filters[r]),l.set("value",s._parse(a.value)),l.set("operator",a.operator),r++,o=!0):a.filters&&(o=o||s._bind(a));return o},_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),o=a.dataSource.filter()||{filters:[],logic:"and"};for(M(o,a.field),i=0,l=n.length;i<l;i++)(t=n[i]).value=a._parse(t.value);return n.length&&(o.filters.length?(e.filters=n,"and"!==o.logic&&(o.filters=[{logic:o.logic,filters:o.filters}],o.logic="and"),n.length>1?o.filters.push(e):o.filters.push(n[0])):(o.filters=n,o.logic=s)),o},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&&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(o))&&t.close()}))},_activate:function(){const t=this;t.form.find(":kendoFocusable").first().trigger("focus"),t.popup&&t.popup.wrapper.find("[ref-actionsheet-action-button]").bind("click",(function(i){e(i.currentTarget).hasClass("k-button-solid-primary")?t.form.trigger("submit"):t.form.trigger("reset")})),t.trigger(p,{field:t.field,container:t.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:[c,"change",p],options:{name:"FilterMenu",extra:!0,appendToElement:!1,adaptiveMode:"none",adaptiveTitle:null,adaptiveSubtitle:null,type:"string",operators:{string:{eq:m,neq:k,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:m,neq:k,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:m,neq:k,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:m,neq:k,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}}),V=".kendoFilterMultiCheck";function Q(t,i){t.filters&&(t.filters=e.grep(t.filters,(function(e){return Q(e,i),e.filters?e.filters.length:e.field==i&&"eq"==e.operator})))}function L(i){return"and"==i.logic&&i.filters.length>1?[]:i.filters?e.map(i.filters,(function(e){return L(e)})):i.value!==t?[i.value]:[]}function q(e,l){for(var a=i.getter(l,!0),s=[],n=0,o={};n<e.length;){var r=e[n++],c=a(r);c===t||o.hasOwnProperty(c)||(s.push(r),o[c]=!0)}return s}var B=i.data.DataSource,H=({field:e,title:t,ns:l,messages:a,search:o,checkAll:r})=>`<div data-${l}role="view" class="k-grid-filter-menu"><div data-${l}role="header" class="k-appbar k-appbar-primary">`+i.html.renderButton(`<button class="k-header-cancel" title="${a.cancel}" aria-label="${a.cancel}"></button>`,{icon:"chevron-left",fillMode:"flat"})+'<span class="k-spacer"></span>'+`<span>${s(a.filter)} ${s(a.into)} ${s(t)}</span><span class="k-spacer"></span>`+i.html.renderButton(`<button class="k-header-done" title="${a.done}" aria-label="${a.done}"></button>`,{icon:"check",fillMode:"flat"})+'</div><div class="k-stretched-view k-content"><form class="k-filter-menu">'+(o?'<div class="k-list-filter"><span class="k-searchbox k-input k-input-md k-input-solid k-rounded-md"><span class="k-input-icon k-icon k-svg-icon k-svg-i-search">'+i.ui.icon("search")+"</span>"+`<input class="k-input-inner" placeholder="${a.search}" title="${a.search}" autocomplete="${n}" /></span></div>`:"")+'<div class="k-filter-tools">'+(a.selectedItemsFormat?'<div class="k-filter-selected-items"></div>':"")+'<span class="k-spacer"></span>'+`<span ${r?"":`${i.attr("style-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></div><ul class="k-multicheck-wrap k-listgroup k-listgroup-flush"></ul></form></div></div>`,I=$.extend({init:function(t,l){var a;$.fn.init.call(this,t,l),l=this.options,this.element=e(t);var s,n,o=this.field=this.options.field||this.element.attr(i.attr("field")),r=l.checkSource;this._foreignKeyValues()?(this.checkSource=B.create(l.values),this.checkSource.fetch()):l.forceUnique?(delete(r=e.extend(!0,{},l.dataSource.options)).pageSize,this.checkSource=B.create(r),this.checkSource.reader.data=(s=this.checkSource.reader.data,n=this.field,function(e){return q(s(e),n)})):this.checkSource=B.create(r),this.dataSource=l.dataSource,this.model=this.dataSource.reader.model,this._bindMediaQueries(),this._parse=function(e){return e+""},this.model&&this.model.fields&&(o=this.model.fields[this.field])&&("number"==o.type?this._parse=function(e){return"string"==typeof e&&("null"===e.toLowerCase()||this._foreignKeyValues()&&""===e)?null:parseFloat(e)}:o.parse&&(this._parse=o.parse.bind(o)),this.type=o.type||"string"),(a=e(t.closest(h))).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(u,this._refreshHandler)},_bindMediaQueries:function(){const e=this;"auto"===e.options.adaptiveMode?(e.largeMQL=i.mediaQuery("large"),e.mediumMQL=i.mediaQuery("medium"),e.smallMQL=i.mediaQuery("small"),e.smallMQL.onEnter((()=>{e._showAdaptiveView=!0,e.popup&&e.popup.visible()&&e.popup.fullscreen?e.popup.fullscreen(!0):e._adaptiveView()})),e.mediumMQL.onEnter((()=>{e._showAdaptiveView=!0,e.popup&&e.popup.visible()&&e.popup.fullscreen?e.popup.fullscreen(!1):e._adaptiveView()})),e.largeMQL.onEnter((()=>{e._showAdaptiveView=!1,e._adaptiveView()}))):(e.smallMQL&&e.smallMQL.destroy(),e.mediumMQL&&e.mediumMQL.destroy(),e.largeMQL&&e.largeMQL.destroy(),e._showAdaptiveView=!1)},_adaptiveView:function(){const e=this;e.popup&&(e.popup.close(),e.popup.wrapper&&e.popup.wrapper.remove(),e.popup.destroy(),e.popup=null)},_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=s(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"+f,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(q(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(u,this.checkChangeHandler)),this.form.on("keydown"+V,this._keydown.bind(this)).on("submit"+V,this._filter.bind(this)).on("reset"+V,this._reset.bind(this)),this.trigger(c,{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(){const t=this;t.form.find(":kendoFocusable").first().trigger("focus"),t.popup?.position(),t.popup&&t.popup.wrapper.find("[ref-actionsheet-action-button]").bind("click",(function(i){e(i.currentTarget).hasClass("k-button-solid-primary")?t.form.trigger("submit"):t.form.trigger("reset")})),t.trigger(p,{field:t.field,container:t.form})},_createForm:function(){var t=this.options,l="",a=this;const n=a._showAdaptiveView;if(this._isMobile||(l+="<div class='k-filter-menu-container'>",t.search&&(l+=`<span class='k-searchbox k-textbox k-input${n?" k-input-lg":" k-input-md"} k-rounded-md k-input-solid'>`+i.ui.icon(e('<span class="k-input-icon"></span>'),"search")+"<input class='k-input-inner' type='text' placeholder='"+s(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>"),n||(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'>"+s(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'>"+s(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){let l=e(i.template(H)({field:a.field,title:t.title||a.field,ns:i.ns,messages:t.messages,search:t.search,checkAll:t.checkAll}));i.applyStylesFromKendoAttributes(l,["visibility"]),a.form=e("<div />").append(l),a.view=a.pane.append(a.form.html()),a.form=a.view.element.find("form");var c=this.view.element;this.container=c.find(".k-multicheck-wrap"),c.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()})),a.view.bind("transitionEnd",(function(e){"show"===e.type&&a.trigger(p,{field:a.field,container:a.form})}))}else if(t.appendToElement)this.popup=this.element.closest(".k-column-menu.k-popup").data(o),this.element.append(this.form);else if(n){const i=e("<div></div>").append(a.form).appendTo("body");a.popup=i[r]({anchor:a._link,copyAnchorStyles:!1,open:a._open.bind(a),activate:a._activate.bind(a),adaptive:!0,closeButton:!0,title:t.adaptiveTitle||"Filter by "+a.field,subtitle:t.adaptiveSubtitle,actionButtons:[{text:"Clear",icon:"filter-clear"},{text:"Filter",icon:"filter",themeColor:"primary"}],close:function(){a.options.closeCallback&&a.options.closeCallback(a.element)}}).data(r),a.popup.fullscreen(a.smallMQL.mediaQueryList.matches)}else 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(o);t.search&&(this.searchTextBox=this.form.find(".k-searchbox input"),this.searchTextBox.on("input"+V,this._input.bind(this)),this.clearSearchButton=this.form.find(".k-searchbox .k-clear-value"),this.clearSearchButton.on("click"+V,this._clearSearch.bind(this)))},_open:function(){var t;e(".k-filter-menu").not(this.form).each((function(){(t=e(this).data(o))&&t.close()}))},createCheckAllItem:function(){var t=this.options,l=i.template(t.itemTemplate({field:"all",mobile:this._isMobile,isAdaptive:this._showAdaptiveView})),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(u+V,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",isAdaptive:this._showAdaptiveView})),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(q(this.dataSource.data(),this.field)),this.container.empty()),this.container.is(":empty")&&this.createCheckBoxes(),this.checkValues(l),this.trigger(d))},getFilterArray:function(){var t=e.extend(!0,{},{filters:[],logic:"and"},this.dataSource.filter());return Q(t,this.field),L(t)},createCheckBoxes:function(){var e,t=this.options,l={field:this.field,format:t.format,mobile:this._isMobile,type:this.type,isAdaptive:this._showAdaptiveView},a=E.bind(this);this.options.forceUnique?this._foreignKeyValues()?(e=this.checkSource.data(),l.valueField="value",l.field="text"):e=this.checkSource._isServerGrouped()?q(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(u+V,":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;$.fn.destroy.call(e),e.form&&(i.unbind(e.form),i.destroy(e.form),e.form.off(V),e.popup&&(e.popup.destroy(),e.popup=null),e.form=null,e.container&&(e.container.off(V),e.container=null),e.checkBoxAll&&e.checkBoxAll.off(V)),e.view&&(e.view.purge(),e.view=null),e._link&&e._link.off(f),e._refreshHandler&&(e.dataSource.unbind(u,e._refreshHandler),e.dataSource=null),e.checkChangeHandler&&e.checkSource.unbind(u,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(V),this.searchTextBox=null),this.clearSearchButton&&(this.clearSearchButton.off(V),this.clearSearchButton=null),e.element=e.checkSource=e.container=e.checkBoxAll=e._link=e._refreshHandler=e.checkAllHandler=null},options:{name:"FilterMultiCheck",itemTemplate:({field:e,mobile:l,valueField:a,format:n,type:o,isAdaptive:r})=>{var c="";return a===t&&(a=e),"date"==o&&(c=":yyyy-MM-ddTHH:mm:sszzz"),l?t=>`<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(n||"{0}",i.getter(e)(t)))}</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(a)(t)))}'/></span></label></li>`:t=>`<li class='k-item'><label class='k-label k-checkbox-label'><span class="k-checkbox-wrap"><input type='checkbox' class='k-checkbox${r?" k-checkbox-lg":" k-checkbox-md"} k-rounded-md' value='${s(i.format(`{0${c}}`,i.getter(a)(t)))}'/></span><span>${s(i.format(n||"{0}",i.getter(e)(t)))}</span></label></li>`},checkAll:!0,search:!1,adaptiveMode:"none",adaptiveTitle:null,adaptiveSubtitle:null,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:[c,d,"change",p]});function E(e){return null!==e[this.field]}e.extend(I.fn,{_click:C.fn._click,_keydown:C.fn._keydown,_reset:C.fn._reset,_closeForm:C.fn._closeForm,_removeFilter:C.fn._removeFilter,clear:C.fn.clear,_merge:C.fn._merge}),l.plugin(C),l.plugin(I)}(window.kendo.jQuery);var t=kendo;e.__meta__={id:"filtermenu",name:"Filtering Menu",category:"framework",depends:["datepicker","numerictextbox","dropdownlist","buttongroup","binder","html.button","icons","actionsheet"],advanced:!0},e.default=t,Object.defineProperty(e,"__esModule",{value:!0})}));
//# sourceMappingURL=kendo.filtermenu.min.js.map