@progress/kendo-ui
Version:
This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.
1 lines • 16.2 kB
JavaScript
module.exports=function(i){var o={};function r(e){if(o[e])return o[e].exports;var t=o[e]={exports:{},id:e,loaded:!1};return i[e].call(t.exports,t,t.exports,r),t.loaded=!0,t.exports}return r.m=i,r.c=o,r.p="",r(0)}({0:function(e,t,i){e.exports=i(1274)},3:function(e,t){e.exports=function(){throw Error("define cannot be used indirect")}},1051:function(e,t){e.exports=require("./kendo.core")},1274:function(e,t,i){var o;i(3),i=[i(1051),i(1275)],void 0===(t="function"==typeof(o=function(){var l={id:"filter",name:"Filter",category:"web",depends:["core","buttongroup"]},f={number:"<input id='#=id#' type='text' aria-label='#=field#' title='#=field#' data-#=ns#role='numerictextbox' data-#=ns#bind='value: value'/>",string:"<span class='k-textbox k-input k-input-md k-rounded-md k-input-solid'><input id='#=id#' type='text' aria-label='#=field#' title='#=field#' class='k-input-inner' data-#=ns#bind='value: value'/></span>",boolean:"<input id='#=id#' class='k-checkbox k-checkbox-md k-rounded-md' aria-label='#=field#' data-#=ns#role='checkbox' data-#=ns#bind='checked: value' type='checkbox'>",date:"<input id='#=id#' type='text' aria-label='#=field#' title='#=field#' data-#=ns#role='datepicker' data-#=ns#bind='value: value'/>"},u={number:0,boolean:false,string:"",date:""},c="<select data-#=ns#bind='value: operator' title='#=operatorsLabel#' data-#=ns#role='dropdownlist'>"+"#for(var op in operators){#"+"<option value='#=op#'>#=operators[op].text || operators[op]#</option>"+"#}#"+"</select>",e="<div data-#=ns#bind='value: logic' data-#=ns#role='filterbuttongroup'>"+"#for(var op in operators){#"+"<span value='#=op#'>#=operators[op]#</span>"+"#}#"+"</div>",b="<ul class='k-filter-container'>"+"<li class='k-filter-group-main'></li>"+"</ul>",v="<div class='k-filter-toolbar'>"+"<div role='toolbar' aria-label='#=mainFilterLogicLabel#' class='k-toolbar' id='#=uid#'>"+"<div class='k-filter-toolbar-item'>"+e+"</div>"+"<div class='k-filter-toolbar-item'>"+"<button data-role='button' class='k-button k-button-md k-rounded-md k-button-solid k-button-solid-base k-icon-button' role='button' aria-disabled='false' title='#=addExpression#' aria-label='#=addExpression#' tabindex='0'>"+"<span class='k-button-icon k-icon k-i-filter-add-expression'>"+"</span>"+"</button>"+"</div>"+"<div class='k-filter-toolbar-item'>"+"<button data-role='button' class='k-button k-button-md k-rounded-md k-button-solid k-button-solid-base k-icon-button' role='button' aria-disabled='false' title='#=addGroup#' aria-label='#=addGroup#' tabindex='0'>"+"<span class='k-button-icon k-icon k-i-filter-add-group'>"+"</span>"+"</button>"+"</div>"+"<div class='k-filter-toolbar-item'>"+"<button data-role='button' class='k-button k-button-md k-rounded-md k-button-flat k-button-flat-base k-icon-button' role='button' title='#=close#' aria-label='#=close#' aria-disabled='false' tabindex='0'>"+"<span class='k-button-icon k-icon k-i-close'>"+"</span>"+"</button>"+"</div>"+"</div>"+"</div>",m="<li class='k-filter-item'>"+"<div class='k-filter-toolbar'>"+"<div role='toolbar' aria-label='#=filterLogicLabel#' class='k-toolbar'>"+"<div class='k-filter-toolbar-item'>"+e+"</div>"+"<div class='k-filter-toolbar-item'>"+"<button data-role='button' class='k-button k-button-md k-rounded-md k-button-solid k-button-solid-base k-icon-button' role='button' title='#=addExpression#' aria-label='#=addExpression#' aria-disabled='false' tabindex='0'>"+"<span class='k-button-icon k-icon k-i-filter-add-expression'>"+"</span>"+"</button>"+"</div>"+"<div class='k-filter-toolbar-item'>"+"<button data-role='button' class='k-button k-button-md k-rounded-md k-button-solid k-button-solid-base k-icon-button' role='button' title='#=addGroup#' aria-label='#=addGroup#' aria-disabled='false' tabindex='0'>"+"<span class='k-button-icon k-icon k-i-filter-add-group'>"+"</span>"+"</button>"+"</div>"+"<div class='k-filter-toolbar-item'>"+"<button data-role='button' class='k-button k-button-md k-rounded-md k-button-flat k-button-flat-base k-icon-button' role='button' title='#=close#' aria-label='#=close#' aria-disabled='false' tabindex='0'>"+"<span class='k-button-icon k-icon k-i-close'>"+"</span>"+"</button>"+"</div>"+"</div>"+"</div>"+"</li>",k="<li class='k-filter-item'>"+"<div class='k-filter-toolbar'>"+"<div role='group' aria-label='#=filterExpressionLabel#' class='k-toolbar' id='#=uid#'>"+"<div class='k-filter-toolbar-item k-filter-field'>"+"<select data-#=ns#bind='value: field' title='#=fieldsLabel#' class='k-filter-dropdown' data-auto-width='true' data-#=ns#role='dropdownlist'>"+"#for(var current in fields){#"+"<option value='#=fields[current].name#'>#=fields[current].label#</option>"+"#}#"+"</select>"+"</div>"+"<div class='k-filter-toolbar-item k-filter-operator'>"+"</div>"+"<div class='k-filter-toolbar-item k-filter-value'>"+"</div>"+"<div class='k-filter-toolbar-item'>"+"<button data-role='button' class='k-button k-button-md k-rounded-md k-button-flat k-button-flat-base k-icon-button' role='button' title='#=close#' aria-label='#=close#' aria-disabled='false' tabindex='0'>"+"<span class='k-button-icon k-icon k-i-close'>"+"</span>"+"</button>"+"</div>"+"</div>"+"</div>"+"</li>",n=window.kendo.jQuery,d=window.kendo,t=d.ui,r=t.Widget,o=t.ButtonGroup,s="change",h=".kendoFilter",i="Is equal to",a="Is not equal to",g=o.extend({init:function(e,t){var i=this;o.fn.init.call(i,e,t)},options:{name:"FilterButtonGroup"},value:function(e){if(e===undefined)return this._value;this._value=e;o.fn.select.call(this,this.wrapper.find("[value='"+e+"']")[0]);this.trigger(s)},select:function(e){if(e!==-1)this.value(n(e).attr("value"))}}),_=r.extend({init:function(e,t){var i=this;var o;r.fn.init.call(i,e,t);i.element=n(e).addClass("k-widget k-filter");i.dataSource=t.dataSource;i.operators=n.extend(i.options.operators,t.operators);i._getFieldsInfo();i._modelChangeHandler=i._modelChange.bind(i);i._renderMain();if(t.expression)i._addExpressionTree(i.filterModel);i._renderApplyButton();if(i.options.expressionPreview){if(!i._previewContainer)i._previewContainer=n('<div class="k-filter-preview"></div>').insertAfter(i.element.children().eq(0));o=i._createPreview(i.filterModel.toJSON());i._previewContainer.html(o)}i._attachEvents();i.hasCustomOperators()},events:[s],options:{name:"Filter",dataSource:null,expression:null,applyButton:false,fields:[],mainLogic:"and",messages:{and:"And",or:"Or",apply:"Apply",close:"Close",addExpression:"Add Expression",fields:"Fields",filterExpressionLabel:"filter expression",filterLogicLabel:"filter logic",mainFilterLogicLabel:"main filter logic",operators:"Operators",addGroup:"Add Group"},operators:{string:{eq:i,neq:a,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:i,neq:a,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:i,neq:a,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"},boolean:{eq:i,neq:a}}},applyFilter:function(){var e=this.filterModel.toJSON();if(this._hasCustomOperators)this._mapOperators(e);if(this._hasFieldsFilter(e.filters||[])){this._removeEmptyGroups(e.filters);this.dataSource.filter(e)}else this.dataSource.filter({})},destroy:function(){this.element.off(h);d.destroy(this.element.find(".k-filter-group-main"));this._previewContainer=null;this._applyButton=null;this._modelChangeHandler=null;r.fn.destroy.call(this)},setOptions:function(e){d.deepExtend(this.options,e);this.destroy();this.element.empty();this.init(this.element,this.options)},getOptions:function(){var e=n.extend(true,{},this.options);delete e.dataSource;e.expression=this.filterModel.toJSON();return e},_addExpressionTree:function(e){if(e.filters){var t=this.element.find("[id="+e.uid+"]");for(var i=0;i<e.filters.length;i++){if(e.filters[i].logic)this._addGroup(t,e.filters[i]);else this._addExpression(t,e.filters[i]);if(e.filters[i].filters)this._addExpressionTree(e.filters[i])}}},_attachEvents:function(){var r=this;r.element.on("click"+h,"button.k-button",function(e){e.preventDefault();var t=n(e.currentTarget);var i=t.find("span");var o=(i.length?i:t).attr("class").split("-").pop();if(o=="close")r._removeExpression(t.closest(".k-toolbar"));else if(o=="expression")r._addExpression(t.closest(".k-toolbar"));else if(o=="group")r._addGroup(t.closest(".k-toolbar"));else if(o=="apply")r.applyFilter()})},_addExpression:function(e,t){var i=this;var o=e.attr("id");var r=e.closest(".k-filter-toolbar").next("ul.k-filter-lines");var s=t?i._fields[t.field]:i._defaultField;var a;var l="";if(t)a=t;else{a=p(i.filterModel,o);if(!a.filters)a.set("filters",[]);a=i._addNewModel(a.filters,s)}if(!r.length)r=n("<ul class='k-filter-lines'></ul>").appendTo(e.closest("li"));l=n(d.template(k)({fields:i._fields,operators:i.operators[s.type],close:i.options.messages.close,fieldsLabel:i.options.messages.fields,uid:a.uid,ns:d.ns,filterExpressionLabel:i.options.messages.filterExpressionLabel})).appendTo(r);i._addExpressionControls(l.find(".k-toolbar"),s,a);if(!t)i._expressionChange()},_addExpressionControls:function(e,t,i){var o=e.find(".k-filter-toolbar-item");var r=o.eq(1);var s=o.eq(2);d.destroy(r);d.destroy(s);r.empty();s.empty();this._appendOperators(r,t);this._appendEditor(s,t);this._bindModel(e,i);this._showHideEditor(e,i)},_appendOperators:function(e,t){n(d.template(c)({operators:t.operators&&t.operators[t.type]?t.operators[t.type]:this.operators[t.type],operatorsLabel:this.options.messages.operators,ns:d.ns})).appendTo(e)},_appendEditor:function(e,t){if(d.isFunction(t.editor))t.editor(e,n.extend(true,{},{field:t.name}));else n(d.template(t.editor)({ns:d.ns,field:t.name,id:d.guid()})).appendTo(e)},_addNewModel:function(e,t){var i;var o=t.type;var r=t.operators;var s;if(!r)r=this.options.operators;s=Object.keys(r[o])[0];e.push({field:t.name});i=e[e.length-1];i.set("value",t.defaultValue);i.set("operator",s);return i},_addGroup:function(e,t){var i=this;var o=i.filterModel;var r=e.attr("id");var s=e.closest(".k-filter-toolbar").next("ul.k-filter-lines");var a;if(t)o=t;else{o=p(o,r);if(!o.filters)o.set("filters",[]);o.filters.push({logic:i.options.mainLogic});o=o.filters[o.filters.length-1]}if(!s.length)s=n("<ul class='k-filter-lines'></ul>").appendTo(e.closest("li"));a=n(d.template(m)({operators:{and:i.options.messages.and,or:i.options.messages.or},addExpression:i.options.messages.addExpression,addGroup:i.options.messages.addGroup,close:i.options.messages.close,ns:d.ns,filterLogicLabel:i.options.messages.filterLogicLabel})).appendTo(s);i._bindModel(a.find(".k-toolbar"),o);if(!t)i._expressionChange()},_bindModel:function(e,t){e.attr("id",t.uid);t.bind("change",this._modelChangeHandler);d.bind(e,t);e.parent().attr(d.attr("stop"),true)},_createPreview:function(e){var t="";var i=false;var o=this._hasFieldsFilter(e.filters||[]);var r="";var s;var a;if(!e.filters||!e.filters.length||!o)return"";t+='<span class="k-filter-preview-bracket">(</span>';for(var l=0;l<e.filters.length;l++){s=e.filters[l];if(s.filters){r=this._createPreview(s);if(r){if(i)t+='<span class="k-filter-preview-operator"> '+e.logic.toLocaleUpperCase()+" </span>";i=true}t+=r}if(s.field){a=this._fields[s.field];if(i)t+='<span class="k-filter-preview-operator"> '+e.logic.toLocaleUpperCase()+" </span>";i=true;t+='<span class="k-filter-preview-field">'+a.label+"</span>";t+='<span class="k-filter-preview-criteria"> '+this._getOperatorText(s.field,s.operator);if(s.operator.indexOf("is")<0){t+=" </span>";t+="<span class='k-filter-preview-value'>'"+d.htmlEncode(a.previewFormat?d.toString(s.value,a.previewFormat):s.value)+"'</span>"}else t+="</span>"}}t+='<span class="k-filter-preview-bracket">)</span>';return t},_expressionChange:function(){var e=this;var t=e.filterModel.toJSON();var i="";if(e.options.expressionPreview){i=e._createPreview(t);e._previewContainer.html(i)}e.trigger(s,{expression:t})},_getOperatorText:function(e,t){var i=this._fields[e].type;var o=this._fields[e].operators;if(!o)o=this.options.operators;return o[i][t].text||o[i][t]},_addField:function(e,t){var i=this;e=n.extend(true,{},{name:e.name||t,editor:e.editorTemplate||f[e.type||"string"],defaultValue:e.defaultValue||e.defaultValue===false||e.defaultValue===0?e.defaultValue:u[e.type||"string"],type:e.type||"string",label:e.label||e.name||t,operators:e.operators,previewFormat:e.previewFormat});i._fields[e.name]=e;if(!i._defaultField)i._defaultField=e},_getFieldsInfo:function(){var e=this;var t=e.options.fields.length?e.options.fields:(e.options.dataSource.options.schema.model||{}).fields;var i;e._fields={};if(Array.isArray(t))for(var o=0;o<t.length;o++){i=t[o];e._addField(i)}else for(var r in t){i=t[r];e._addField(i,r)}},_hasFieldsFilter:function(e,t){t=!!t;for(var i=0;i<e.length;i++){if(e[i].filters)t=this._hasFieldsFilter(e[i].filters,t);if(e[i].field)return true}return t},_removeEmptyGroups:function(e){if(!e)return;for(var t=e.length-1;t>=0;t--){if(e[t].logic&&!e[t].filters||e[t].filters&&!this._hasFieldsFilter(e[t].filters)){e.splice(t,1);continue}if(e[t].filters)this._removeEmptyGroups(e[t].filters)}},_modelChange:function(e){var t=this;var i=t.element.find("[id="+e.sender.uid+"]");t._showHideEditor(i,e.sender);if(e.field!=="field"){if(e.field!=="filters")t._expressionChange();return}var o=e.sender.field;var r=e.sender.parent();var s=t._fields[o];var a=t._addNewModel(r,s);e.sender.unbind("change",t._modelChangeHandler);r.remove(e.sender);t._addExpressionControls(i,s,a);t._expressionChange()},_renderMain:function(){var e=this;n(b).appendTo(e.element);if(e.options.expression)e.filterModel=d.observable(e.options.expression);else e.filterModel=d.observable({logic:e.options.mainLogic});n(d.template(v)({operators:{and:e.options.messages.and,or:e.options.messages.or},addExpression:e.options.messages.addExpression,addGroup:e.options.messages.addGroup,close:e.options.messages.close,uid:e.filterModel.uid,ns:d.ns,mainFilterLogicLabel:e.options.messages.mainFilterLogicLabel})).appendTo(e.element.find("li").first());e._bindModel(e.element.find(".k-toolbar").first(),e.filterModel)},_removeExpression:function(e){var t=this;var i=e.attr("id");var o=e.closest("li");var r=o.hasClass("k-filter-group-main");var s;var a;if(r){o=o.find(".k-filter-lines");if(t.filterModel.filters){t.filterModel.filters.empty();delete t.filterModel.filters}}else{a=p(t.filterModel,i);s=a.parent();a.unbind("change",t._modelChangeHandler);s.remove(a);if(!s.length)delete s.parent().filters;if(!o.siblings().length)o=o.parent()}d.destroy(o);o.remove();t._expressionChange()},_renderApplyButton:function(){var e=this;if(!e.options.applyButton)return;if(!e._applyButton)e._applyButton=n(d.format('<button type="button" aria-label="{0}" title="{0}" class="k-button k-button-md k-rounded-md k-button-solid k-button-solid-base k-filter-apply">{0}</button>',e.options.messages.apply)).appendTo(e.element)},_showHideEditor:function(e,t){if(t.logic)return;var i=t.operator;var o=e.find(".k-filter-toolbar-item").eq(2);if(i=="isnull"||i=="isnotnull"||i=="isempty"||i=="isnotempty"||i=="isnullorempty"||i=="isnotnullorempty")o.hide();else o.show()},_mapOperators:function(e){var r=this;if(e.filters)e.filters.forEach(function(e){if(e.filters)r._mapOperators(e);else{var t;var i=r._fields[e.field];var o=i.type;if(i.operators&&i.operators[o][e.operator])t=i.operators[o][e.operator];else t=r.operators[o][e.operator];if(t)e.operator=t.handler||e.operator}})},hasCustomOperators:function(){var e=n.extend(true,{},this.operators);for(var t in this._fields)e=n.extend(true,{},e,this._fields[t].operators);this._hasCustomOperators=x(e)}});function x(e){for(var t in e){var i=e[t];if(i.handler&&typeof i.handler==="function"||typeof i==="object"&&i!==null&&x(i))return true}return false}function p(e,t){if(e.uid===t)return e;if(e.filters)for(var i=0;i<e.filters.length;i++){var o=p(e.filters[i],t);if(o)return o}}return t.plugin(_),t.plugin(g),window.kendo})?o.apply(t,i):o)||(e.exports=t)},1275:function(e,t){e.exports=require("./kendo.buttongroup")}});