@progress/kendo-ui
Version:
This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.
1 lines • 9.65 kB
JavaScript
module.exports=function(r){var a={};function o(e){if(a[e])return a[e].exports;var t=a[e]={exports:{},id:e,loaded:!1};return r[e].call(t.exports,t,t.exports,o),t.loaded=!0,t.exports}return o.m=r,o.c=a,o.p="",o(0)}({0:function(e,t,r){e.exports=r(1276)},3:function(e,t){e.exports=function(){throw Error("define cannot be used indirect")}},1064:function(e,t){e.exports=require("./kendo.combobox")},1065:function(e,t){e.exports=require("./kendo.dropdownlist")},1116:function(e,t){e.exports=require("./kendo.numerictextbox")},1198:function(e,t){e.exports=require("./kendo.datepicker")},1276:function(e,t,r){var a;r(3),r=[r(1277),r(1198),r(1116),r(1064),r(1065)],void 0===(t="function"==typeof(a=function(){var r={id:"filtercell",name:"Row filter",category:"framework",depends:["autocomplete"],advanced:true},v=window.kendo.jQuery,h=void 0,m=window.kendo,o=m.ui,a=m.data.DataSource,b=o.Widget,w="change",x="boolean",S="enums",y="string",e="Is equal to",t="Is not equal to",i=["isnull","isnotnull","isempty","isnotempty","isnullorempty","isnotnullorempty"];function _(e){var t=typeof e==="string"?e:e.operator;return v.inArray(t,i)>-1}function l(e,t){var r=[];if(v.isPlainObject(e))if(e.hasOwnProperty("filters"))r=e.filters;else if(e.field==t)return e;if(Array.isArray(e))r=e;for(var a=0;a<r.length;a++){var o=l(r[a],t);if(o)return o}}function s(e,t){if(e.filters)e.filters=v.grep(e.filters,function(e){s(e,t);if(e.filters)return e.filters.length;else return e.field!=t})}function n(n,e){var s=m.getter(e,true);return function(e){var t=n(e),r=[],a=0,o={};while(a<t.length){var i=t[a++],l=s(i);if(!o.hasOwnProperty(l)){r.push(i);o[l]=true}}return r}}var u=b.extend({init:function(e,t){e=v(e).addClass("k-filtercell");var r=this.wrapper=v("<span/>").appendTo(e);var a=this,o,i,p=t,d,l,n=a.operators=t.operators||{},s=a.input=v("<input/>").attr(m.attr("bind"),"value: value").appendTo(r);var f=t?t.suggestDataSource:null;if(f)t=v.extend({},t,{suggestDataSource:{}});b.fn.init.call(a,e[0],t);if(f)a.options.suggestDataSource=f;t=a.options;o=a.dataSource=t.dataSource;a.model=o.reader.model;l=t.type=y;var c=m.getter("reader.model.fields",true)(o)||{};var g=c[t.field];if(g&&g.type)l=t.type=g.type;if(t.values)t.type=l=S;n=n[l]||t.operators[l];if(!p.operator)for(d in n){t.operator=d;break}a._parse=function(e){return e!=null?e+"":e};if(a.model&&a.model.fields){var u=a.model.fields[t.field];if(u)if(u.parse)a._parse=u.parse.bind(u)}a.defaultOperator=t.operator;a.viewModel=i=m.observable({operator:t.operator,value:null,operatorVisible:function(){var e=this.get("value");return e!==null&&e!==h&&e!="undefined"||_(this.get("operator"))&&a.dataSource.filter()&&!a._clearInProgress}});a._prevOperator=t.operator;i.bind(w,a.updateDsFilter.bind(a));if(l==y)a.initSuggestDataSource(t);if(t.inputWidth!==null){s.addClass("k-sized-input");s.width(t.inputWidth)}s.attr("aria-label",a._getColumnTitle());s.attr("title",a._getColumnTitle());a._setInputType(t,l);if(l!=x&&t.showOperators!==false)a._createOperatorDropDown(n);else{v('<div unselectable="on" />').css("display","none").text("eq").appendTo(r);r.addClass("k-operator-hidden")}a._createClearIcon();m.bind(this.wrapper,i);if(l==y)if(!t.template)a.setAutoCompleteSource();if(l==S)a.setComboBoxSource(a.options.values);a._refreshUI();a._refreshHandler=a._refreshUI.bind(a);a.dataSource.bind(w,a._refreshHandler)},_setInputType:function(e,t){var r=this,a=r.input;if(typeof e.template=="function"){e.template.call(r.viewModel,{element:r.input,dataSource:r.suggestDataSource});r._angularItems("compile")}else if(t==y)a.attr(m.attr("role"),"autocomplete").attr(m.attr("text-field"),e.dataTextField||e.field).attr(m.attr("filter"),e.suggestionOperator).attr(m.attr("delay"),e.delay).attr(m.attr("min-length"),e.minLength).attr(m.attr("value-primitive"),true);else if(t=="date")a.attr(m.attr("role"),"datepicker").attr("id",m.guid());else if(t==x){a.remove();var o=v("<input type='radio'/>");var i=r.wrapper;var l=m.guid();var n=v("<label/>").text(e.messages.isTrue).append(o);o.attr(m.attr("bind"),"checked:value").attr("name",l).val("true");var s=n.clone().text(e.messages.isFalse);o.clone().val("false").appendTo(s);i.append([n,s])}else if(t=="number")a.attr(m.attr("role"),"numerictextbox").attr("title",r._getColumnTitle());else if(t==S)a.attr(m.attr("role"),"combobox").attr(m.attr("text-field"),"text").attr(m.attr("suggest"),true).attr(m.attr("filter"),"contains").attr(m.attr("value-field"),"value").attr(m.attr("value-primitive"),true)},_getColumnTitle:function(){var e=this.options.column;return e?e.title||e.field:""},_createOperatorDropDown:function(t){var e=[],r=this.viewModel;for(var a in t)e.push({text:t[a],value:a});var o=v('<input class="k-dropdown-operator" '+m.attr("bind")+'="value: operator"/>').appendTo(this.wrapper);o.attr("aria-label",this._getColumnTitle());this.operatorDropDown=o.kendoDropDownList({dataSource:e,dataTextField:"text",dataValueField:"value",open:function(){this.popup.element.width(150)},valuePrimitive:true}).data("kendoDropDownList");r.bind("change",function(){var e=t[r.operator];o.attr("aria-label",e)});this.operatorDropDown.wrapper.attr("aria-label",this._getColumnTitle()).find(".k-i-arrow-s").removeClass("k-i-arrow-s").addClass("k-i-filter")},initSuggestDataSource:function(e){var t=e.suggestDataSource;if(!(t instanceof a)){if(!e.customDataSource&&t){t.group=h;t.filter=h}t=this.suggestDataSource=a.create(t)}if(!e.customDataSource){t._pageSize=h;t.reader.data=n(t.reader.data,this.options.field)}this.suggestDataSource=t},setAutoCompleteSource:function(){var e=this.input.data("kendoAutoComplete");if(e)e.setDataSource(this.suggestDataSource)},setComboBoxSource:function(e){var t=a.create({data:e});var r=this.input.data("kendoComboBox");if(r&&!this.options.template)r.setDataSource(t)},_refreshUI:function(){var e=this,t=l(e.dataSource.filter(),this.options.field)||{},r=e.viewModel;e.manuallyUpdatingVM=true;t=v.extend(true,{},t);if(e.options.type==x)if(r.value!==t.value)e.wrapper.find(":radio").prop("checked",false);if(t.operator)r.set("operator",t.operator);r.set("value",t.value);if(v.isEmptyObject(t))r.trigger(w,{field:"operatorVisible"});e.manuallyUpdatingVM=false},_applyFilter:function(e){if(e.filters.length)this.dataSource.filter(e);else this.dataSource.filter({})},updateDsFilter:function(e){var t=this,r=t.viewModel,a;if(e.field=="operator"&&r.value===h&&!_(r)&&_(t._prevOperator)){a=t.dataSource.filter()||{filters:[],logic:"and"};s(a,t.options.field);t._prevOperator=r.operator;t._applyFilter(a);return}if(t.manuallyUpdatingVM||e.field=="operator"&&r.value===h&&!_(r)||e.field=="operator"&&t._clearInProgress&&r.value!==null)return;var o=v.extend({},t.viewModel.toJSON(),{field:t.options.field});t._prevOperator=o.operator;var i={logic:"and",filters:[]};var l=false;if(o.value!==h&&o.value!==null||_(o)&&!this._clearInProgress){i.filters.push(o);l=t.trigger(w,{filter:i,field:t.options.field})}if(t._clearInProgress||o.value===null)l=t.trigger(w,{filter:null,field:t.options.field});if(l)return;var n=t._merge(i);t._applyFilter(n)},_merge:function(e){var t=this,r=e.logic||"and",a=e.filters,o,i=t.dataSource.filter()||{filters:[],logic:"and"},l,n;s(i,t.options.field);for(l=0,n=a.length;l<n;l++){o=a[l];o.value=t._parse(o.value)}a=v.grep(a,function(e){return e.value!==""&&e.value!==null||_(e)});if(a.length)if(i.filters.length){e.filters=a;if(i.logic!=="and"){i.filters=[{logic:i.logic,filters:i.filters}];i.logic="and"}if(a.length>1)i.filters.push(e);else i.filters.push(a[0])}else{i.filters=a;i.logic=r}return i},_createClearIcon:function(){var e=this;v("<button type='button' class='k-button k-button-md k-rounded-md k-button-solid k-button-solid-base k-icon-button' title = '"+e.options.messages.clear+"'/>").attr("aria-label",e.options.messages.clear).attr(m.attr("bind"),"visible:operatorVisible").html("<span class='k-button-icon k-icon k-i-filter-clear'></span>").on("click",e.clearFilter.bind(e)).appendTo(e.wrapper)},clearFilter:function(){this._clearInProgress=true;if(_(this.viewModel.operator))this.viewModel.set("operator",this.defaultOperator);this.viewModel.set("value",null);this._clearInProgress=false},_angularItems:function(e){var t=this.wrapper.closest("th").get();var r=this.options.column;this.angular(e,function(){return{elements:t,data:[{column:r}]}})},destroy:function(){var e=this;e.filterModel=null;e.operatorDropDown=null;e._angularItems("cleanup");if(e._refreshHandler){e.dataSource.bind(w,e._refreshHandler);e._refreshHandler=null}m.unbind(e.element);b.fn.destroy.call(e);m.destroy(e.element)},events:[w],options:{name:"FilterCell",delay:200,minLength:1,inputWidth:null,values:h,customDataSource:false,field:"",dataTextField:"",type:"string",suggestDataSource:null,suggestionOperator:"startswith",operator:"eq",showOperators:true,template:null,messages:{isTrue:"is true",isFalse:"is false",filter:"Filter",clear:"Clear",operator:"Operator"},operators:{string:{eq:e,neq:t,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:e,neq:t,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:e,neq:t,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:e,neq:t,isnull:"Is null",isnotnull:"Is not null"}}}});return o.plugin(u),window.kendo})?a.apply(t,r):a)||(e.exports=t)},1277:function(e,t){e.exports=require("./kendo.autocomplete")}});