@progress/kendo-angular-filter 2.1.0-dev.202206081432 → 2.1.1-dev.202206220545

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,4 +2,4 @@
2
2
  * Copyright © 2021 Progress Software Corporation. All rights reserved.
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("@progress/kendo-angular-l10n"),require("@progress/kendo-licensing"),require("@progress/kendo-angular-dropdowns"),require("@progress/kendo-angular-inputs"),require("@progress/kendo-angular-dateinputs"),require("@angular/common"),require("@progress/kendo-angular-buttons"),require("@progress/kendo-angular-label")):"function"==typeof define&&define.amd?define("KendoAngularFilter",["exports","@angular/core","@progress/kendo-angular-l10n","@progress/kendo-licensing","@progress/kendo-angular-dropdowns","@progress/kendo-angular-inputs","@progress/kendo-angular-dateinputs","@angular/common","@progress/kendo-angular-buttons","@progress/kendo-angular-label"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).KendoAngularFilter={},e.ng.core,e.KendoAngularL10N,e.KendoLicensing,e.KendoAngularDropdowns,e.KendoAngularInputs,e.KendoAngularDateinputs,e.ng.common,e.KendoAngularButtons,e.KendoAngularLabel)}(this,function(e,n,t,z,r,o,i,a,l,s){"use strict";function p(r){if(r&&r.__esModule)return r;var n=Object.create(null);return r&&Object.keys(r).forEach(function(e){var t;"default"!==e&&(t=Object.getOwnPropertyDescriptor(r,e),Object.defineProperty(n,e,t.get?t:{enumerable:!0,get:function(){return r[e]}}))}),n.default=r,Object.freeze(n)}var u=p(n),d=p(t),f=p(r),c=p(o),m=p(i),g=p(a),h=p(l),v=(I.prototype.addFilterGroup=function(e){e.filters.push({logic:"and",filters:[]})},I.prototype.addFilterExpression=function(e){e.filters.push({operator:"eq",value:null,field:null})},I.prototype.remove=function(t,r,e){var n,o=this;e=e||this.normalizedValue,t===e?e.filters=[]:0<=(n=e.filters.indexOf(t))&&n===r?e.filters=e.filters.filter(function(e){return e!==t}):e.filters.forEach(function(e){return e.filters&&o.remove(t,r,e)})},I);function I(){this.normalizedValue={logic:"and",filters:[]},this.filters=[]}v.ɵfac=u.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:v,deps:[],target:u.ɵɵFactoryTarget.Injectable}),v.ɵprov=u.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:v}),u.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:v,decorators:[{type:n.Injectable}]});function b(t,r){return Object.keys(t).find(function(e){return t[e]===r})}function y(r){return function(t){return Object.keys(r).map(function(e){return{text:t.get(e),value:r[e]}})}}var k=["isnull","isnotnull","isempty","isnotempty"],M={filterEqOperator:"eq",filterNotEqOperator:"neq",filterContainsOperator:"contains",filterNotContainsOperator:"doesnotcontain",filterStartsWithOperator:"startswith",filterEndsWithOperator:"endswith",filterIsNullOperator:"isnull",filterIsNotNullOperator:"isnotnull",filterIsEmptyOperator:"isempty",filterIsNotEmptyOperator:"isnotempty"},B={filterEqOperator:"eq",filterNotEqOperator:"neq",filterGteOperator:"gte",filterGtOperator:"gt",filterLteOperator:"lte",filterLtOperator:"lt",filterIsNullOperator:"isnull",filterIsNotNullOperator:"isnotnull"},G={filterEqOperator:"eq",filterNotEqOperator:"neq",filterAfterOrEqualOperator:"gte",filterAfterOperator:"gt",filterBeforeOrEqualOperator:"lte",filterBeforeOperator:"lt",filterIsNullOperator:"isnull",filterIsNotNullOperator:"isnotnull"},P={string:M,number:B,date:G},j={filterAndLogic:"and",filterOrLogic:"or"},R={name:"@progress/kendo-angular-filter",productName:"Kendo UI for Angular",productCodes:["KENDOUIANGULAR","KENDOUICOMPLETE"],publishDate:1654698725,version:"",licensingDocsUrl:"https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning"},O=(Object.defineProperty(_.prototype,"title",{get:function(){return this._title},set:function(e){this._title=e||this.field},enumerable:!1,configurable:!0}),_);function _(){}O.ɵfac=u.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:O,deps:[],target:u.ɵɵFactoryTarget.Component}),O.ɵcmp=u.ɵɵngDeclareComponent({minVersion:"12.0.0",version:"12.2.16",type:O,selector:"kendo-filter-field",inputs:{field:"field",title:"title",editor:"editor",operators:"operators"},ngImport:u,template:"",isInline:!0}),u.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:O,decorators:[{type:n.Component,args:[{selector:"kendo-filter-field",template:""}]}],propDecorators:{field:[{type:n.Input}],title:[{type:n.Input}],editor:[{type:n.Input}],operators:[{type:n.Input}]}});W.prototype.ngOnChanges=function(){var e=this.hostElement.nativeElement.querySelector("input")||this.hostElement.nativeElement;this.renderer.setAttribute(e,"aria-label",this.ariaLabel)};var x=W;function W(e,t){this.hostElement=e,this.renderer=t}x.ɵfac=u.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:x,deps:[{token:u.ElementRef},{token:u.Renderer2}],target:u.ɵɵFactoryTarget.Directive}),x.ɵdir=u.ɵɵngDeclareDirective({minVersion:"12.0.0",version:"12.2.16",type:x,selector:"[kendoAriaLabelValue]",inputs:{ariaLabel:["kendoAriaLabelValue","ariaLabel"]},usesOnChanges:!0,ngImport:u}),u.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:x,decorators:[{type:n.Directive,args:[{selector:"[kendoAriaLabelValue]"}]}],ctorParameters:function(){return[{type:u.ElementRef},{type:u.Renderer2}]},propDecorators:{ariaLabel:[{type:n.Input,args:["kendoAriaLabelValue"]}]}});D.prototype.messageFor=function(e){return this.localization.get(e)},D.prototype.getOperator=function(e){return this.messageFor(b(P[this.editorType],e))},D.prototype.operatorValueChange=function(e){this.valueChange.emit(e)};var C=D;function D(e){this.localization=e,this.valueChange=new n.EventEmitter,this.operators=[]}C.ɵfac=u.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:C,deps:[{token:d.LocalizationService}],target:u.ɵɵFactoryTarget.Component}),C.ɵcmp=u.ɵɵngDeclareComponent({minVersion:"12.0.0",version:"12.2.16",type:C,selector:"kendo-filter-expression-operators",inputs:{currentItem:"currentItem",editorType:"editorType",operators:"operators"},outputs:{valueChange:"valueChange"},ngImport:u,template:'\n <kendo-dropdownlist\n [kendoAriaLabelValue]="messageFor(\'filterOperatorAriaLabel\')"\n [data]="operators"\n [title]="messageFor(\'filterExpressionOperators\')"\n [(value)]="currentItem.operator"\n (valueChange)="operatorValueChange($event)"\n [valuePrimitive]="true"\n textField="text"\n valueField="value"\n >\n <ng-template kendoDropDownListValueTemplate let-dataItem>\n {{ getOperator(dataItem.value) }}\n </ng-template>\n <ng-template kendoDropDownListItemTemplate let-dataItem>\n {{ getOperator(dataItem.value) }}\n </ng-template>\n </kendo-dropdownlist>\n ',isInline:!0,components:[{type:f.DropDownListComponent,selector:"kendo-dropdownlist",inputs:["iconClass","loading","data","value","textField","valueField","popupSettings","listHeight","defaultItem","disabled","itemDisabled","readonly","filterable","virtual","ignoreCase","delay","valuePrimitive","tabindex","tabIndex","size","rounded","fillMode","id"],outputs:["valueChange","filterChange","selectionChange","open","opened","close","closed","focus","blur"],exportAs:["kendoDropDownList"]}],directives:[{type:x,selector:"[kendoAriaLabelValue]",inputs:["kendoAriaLabelValue"]},{type:f.ValueTemplateDirective,selector:"[kendoDropDownListValueTemplate],[kendoDropDownTreeValueTemplate]"},{type:f.ItemTemplateDirective,selector:"[kendoDropDownListItemTemplate],[kendoComboBoxItemTemplate],[kendoAutoCompleteItemTemplate],[kendoMultiSelectItemTemplate]"}]}),u.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:C,decorators:[{type:n.Component,args:[{selector:"kendo-filter-expression-operators",template:'\n <kendo-dropdownlist\n [kendoAriaLabelValue]="messageFor(\'filterOperatorAriaLabel\')"\n [data]="operators"\n [title]="messageFor(\'filterExpressionOperators\')"\n [(value)]="currentItem.operator"\n (valueChange)="operatorValueChange($event)"\n [valuePrimitive]="true"\n textField="text"\n valueField="value"\n >\n <ng-template kendoDropDownListValueTemplate let-dataItem>\n {{ getOperator(dataItem.value) }}\n </ng-template>\n <ng-template kendoDropDownListItemTemplate let-dataItem>\n {{ getOperator(dataItem.value) }}\n </ng-template>\n </kendo-dropdownlist>\n '}]}],ctorParameters:function(){return[{type:d.LocalizationService}]},propDecorators:{currentItem:[{type:n.Input}],editorType:[{type:n.Input}],valueChange:[{type:n.Output}],operators:[{type:n.Input}]}});K.prototype.messageFor=function(e){return this.localization.get(e)};var F=K;function K(e){this.localization=e,this.valueChange=new n.EventEmitter}F.ɵfac=u.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:F,deps:[{token:d.LocalizationService}],target:u.ɵɵFactoryTarget.Component}),F.ɵcmp=u.ɵɵngDeclareComponent({minVersion:"12.0.0",version:"12.2.16",type:F,selector:"kendo-filter-text-editor",inputs:{currentItem:"currentItem",isDisabled:"isDisabled"},outputs:{valueChange:"valueChange"},ngImport:u,template:'\n <kendo-textbox\n [kendoAriaLabelValue]="messageFor(\'filterValueAriaLabel\')"\n class="k-filter-toolbar-item k-filter-value"\n [(value)]="currentItem.value"\n (valueChange)="valueChange.emit()"\n [disabled]="isDisabled">\n </kendo-textbox>\n ',isInline:!0,components:[{type:c.TextBoxComponent,selector:"kendo-textbox",inputs:["focusableId","title","disabled","readonly","tabindex","value","selectOnFocus","showSuccessIcon","showErrorIcon","clearButton","successIcon","errorIcon","clearButtonIcon","size","rounded","fillMode","tabIndex","placeholder","maxlength"],outputs:["valueChange","inputFocus","inputBlur","focus","blur"],exportAs:["kendoTextBox"]}],directives:[{type:x,selector:"[kendoAriaLabelValue]",inputs:["kendoAriaLabelValue"]}]}),u.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:F,decorators:[{type:n.Component,args:[{selector:"kendo-filter-text-editor",template:'\n <kendo-textbox\n [kendoAriaLabelValue]="messageFor(\'filterValueAriaLabel\')"\n class="k-filter-toolbar-item k-filter-value"\n [(value)]="currentItem.value"\n (valueChange)="valueChange.emit()"\n [disabled]="isDisabled">\n </kendo-textbox>\n '}]}],ctorParameters:function(){return[{type:d.LocalizationService}]},propDecorators:{currentItem:[{type:n.Input}],isDisabled:[{type:n.Input}],valueChange:[{type:n.Output}]}});U.prototype.messageFor=function(e){return this.localization.get(e)};var T=U;function U(e){this.localization=e,this.valueChange=new n.EventEmitter}T.ɵfac=u.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:T,deps:[{token:d.LocalizationService}],target:u.ɵɵFactoryTarget.Component}),T.ɵcmp=u.ɵɵngDeclareComponent({minVersion:"12.0.0",version:"12.2.16",type:T,selector:"kendo-filter-numeric-editor",inputs:{currentItem:"currentItem",isDisabled:"isDisabled"},outputs:{valueChange:"valueChange"},ngImport:u,template:'\n <kendo-numerictextbox\n [kendoAriaLabelValue]="messageFor(\'filterValueAriaLabel\')"\n class="k-filter-toolbar-item k-filter-value"\n [(value)]="currentItem.value"\n (valueChange)="valueChange.emit()"\n [disabled]="isDisabled">\n <kendo-numerictextbox-messages\n [increment]="messageFor(\'editorNumericIncrement\')"\n [decrement]="messageFor(\'editorNumericDecrement\')">\n </kendo-numerictextbox-messages>\n </kendo-numerictextbox>\n ',isInline:!0,components:[{type:c.NumericTextBoxComponent,selector:"kendo-numerictextbox",inputs:["focusableId","disabled","readonly","title","autoCorrect","format","max","min","decimals","placeholder","step","spinners","rangeValidation","tabindex","tabIndex","changeValueOnScroll","selectOnFocus","value","maxlength","size","rounded","fillMode"],outputs:["valueChange","focus","blur"],exportAs:["kendoNumericTextBox"]},{type:c.NumericTextBoxCustomMessagesComponent,selector:"kendo-numerictextbox-messages"}],directives:[{type:x,selector:"[kendoAriaLabelValue]",inputs:["kendoAriaLabelValue"]}]}),u.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:T,decorators:[{type:n.Component,args:[{selector:"kendo-filter-numeric-editor",template:'\n <kendo-numerictextbox\n [kendoAriaLabelValue]="messageFor(\'filterValueAriaLabel\')"\n class="k-filter-toolbar-item k-filter-value"\n [(value)]="currentItem.value"\n (valueChange)="valueChange.emit()"\n [disabled]="isDisabled">\n <kendo-numerictextbox-messages\n [increment]="messageFor(\'editorNumericIncrement\')"\n [decrement]="messageFor(\'editorNumericDecrement\')">\n </kendo-numerictextbox-messages>\n </kendo-numerictextbox>\n '}]}],ctorParameters:function(){return[{type:d.LocalizationService}]},propDecorators:{currentItem:[{type:n.Input}],isDisabled:[{type:n.Input}],valueChange:[{type:n.Output}]}});L.prototype.ngOnInit=function(){var e=this;this.localizationSubscription=this.localization.changes.subscribe(function(){e.defaultItem=e.getDefaultItem(),e.items=e.getValueItems(),e.cdr.detectChanges()})},L.prototype.getDefaultItem=function(){return{text:this.localization.get("filterBooleanAll"),value:null}},L.prototype.getValueItems=function(){return[{text:this.localization.get("filterIsTrue"),value:!0},{text:this.localization.get("filterIsFalse"),value:!1}]},L.prototype.ngOnDestroy=function(){this.localizationSubscription&&this.localizationSubscription.unsubscribe()},L.prototype.messageFor=function(e){return this.localization.get(e)};c=L;function L(e,t){this.localization=e,this.cdr=t,this.valueChange=new n.EventEmitter,this.items=this.getValueItems(),this.defaultItem=this.getDefaultItem()}c.ɵfac=u.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:c,deps:[{token:d.LocalizationService},{token:u.ChangeDetectorRef}],target:u.ɵɵFactoryTarget.Component}),c.ɵcmp=u.ɵɵngDeclareComponent({minVersion:"12.0.0",version:"12.2.16",type:c,selector:"kendo-filter-boolean-editor",inputs:{currentItem:"currentItem"},outputs:{valueChange:"valueChange"},ngImport:u,template:'\n <kendo-dropdownlist\n [kendoAriaLabelValue]="messageFor(\'filterValueAriaLabel\')"\n class="k-filter-toolbar-item k-filter-value"\n [(value)]="currentItem.value"\n (valueChange)="valueChange.emit()"\n [data]="items"\n [defaultItem]="defaultItem"\n [valuePrimitive]="true"\n textField="text"\n valueField="value"\n >\n </kendo-dropdownlist>\n ',isInline:!0,components:[{type:f.DropDownListComponent,selector:"kendo-dropdownlist",inputs:["iconClass","loading","data","value","textField","valueField","popupSettings","listHeight","defaultItem","disabled","itemDisabled","readonly","filterable","virtual","ignoreCase","delay","valuePrimitive","tabindex","tabIndex","size","rounded","fillMode","id"],outputs:["valueChange","filterChange","selectionChange","open","opened","close","closed","focus","blur"],exportAs:["kendoDropDownList"]}],directives:[{type:x,selector:"[kendoAriaLabelValue]",inputs:["kendoAriaLabelValue"]}]}),u.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:c,decorators:[{type:n.Component,args:[{selector:"kendo-filter-boolean-editor",template:'\n <kendo-dropdownlist\n [kendoAriaLabelValue]="messageFor(\'filterValueAriaLabel\')"\n class="k-filter-toolbar-item k-filter-value"\n [(value)]="currentItem.value"\n (valueChange)="valueChange.emit()"\n [data]="items"\n [defaultItem]="defaultItem"\n [valuePrimitive]="true"\n textField="text"\n valueField="value"\n >\n </kendo-dropdownlist>\n '}]}],ctorParameters:function(){return[{type:d.LocalizationService},{type:u.ChangeDetectorRef}]},propDecorators:{currentItem:[{type:n.Input}],valueChange:[{type:n.Output}]}});$.prototype.messageFor=function(e){return this.localization.get(e)};var E=$;function $(e){this.localization=e,this.valueChange=new n.EventEmitter}E.ɵfac=u.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:E,deps:[{token:d.LocalizationService}],target:u.ɵɵFactoryTarget.Component}),E.ɵcmp=u.ɵɵngDeclareComponent({minVersion:"12.0.0",version:"12.2.16",type:E,selector:"kendo-filter-date-editor",inputs:{currentItem:"currentItem",isDisabled:"isDisabled"},outputs:{valueChange:"valueChange"},ngImport:u,template:'\n <kendo-datepicker\n [kendoAriaLabelValue]="messageFor(\'filterValueAriaLabel\')"\n class="k-filter-toolbar-item k-filter-value"\n [(value)]="currentItem.value"\n (valueChange)="valueChange.emit()"\n [disabled]="isDisabled">\n <kendo-datepicker-messages\n [toggle]="messageFor(\'editorDateToggleText\')"\n [today]="messageFor(\'editorDateTodayText\')">\n </kendo-datepicker-messages>\n </kendo-datepicker>\n ',isInline:!0,components:[{type:m.DatePickerComponent,selector:"kendo-datepicker",inputs:["cellTemplate","monthCellTemplate","yearCellTemplate","decadeCellTemplate","centuryCellTemplate","weekNumberTemplate","headerTitleTemplate","navigationItemTemplate","focusableId","activeView","bottomView","topView","calendarType","animateCalendarNavigation","disabled","readonly","readOnlyInput","popupSettings","navigation","min","max","incompleteDateValidation","focusedDate","value","format","twoDigitYearMax","formatPlaceholder","placeholder","tabindex","tabIndex","disabledDates","title","rangeValidation","disabledDatesValidation","weekNumber","size","rounded","fillMode"],outputs:["valueChange","focus","blur","open","close"],exportAs:["kendo-datepicker"]},{type:m.DatePickerCustomMessagesComponent,selector:"kendo-datepicker-messages"}],directives:[{type:x,selector:"[kendoAriaLabelValue]",inputs:["kendoAriaLabelValue"]}]}),u.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:E,decorators:[{type:n.Component,args:[{selector:"kendo-filter-date-editor",template:'\n <kendo-datepicker\n [kendoAriaLabelValue]="messageFor(\'filterValueAriaLabel\')"\n class="k-filter-toolbar-item k-filter-value"\n [(value)]="currentItem.value"\n (valueChange)="valueChange.emit()"\n [disabled]="isDisabled">\n <kendo-datepicker-messages\n [toggle]="messageFor(\'editorDateToggleText\')"\n [today]="messageFor(\'editorDateTodayText\')">\n </kendo-datepicker-messages>\n </kendo-datepicker>\n '}]}],ctorParameters:function(){return[{type:d.LocalizationService}]},propDecorators:{currentItem:[{type:n.Input}],isDisabled:[{type:n.Input}],valueChange:[{type:n.Output}]}});A.prototype.ngOnInit=function(){var e=this,t=(this.isEditorDisabled=0<=k.indexOf(this.currentItem.operator),this.filters=this.filterService.filters,this.getFilterExpressionByField(this.currentItem.field)),r=(this.currentItem.field&&this.setOperators(t),this.getFilterExpressionByField(this.filterService.filters[0].field));this.currentItem.field||(this.currentItem.field=this.filterService.filters[0].field,this.setOperators(r)),this.localizationSubscription=this.localization.changes.subscribe(function(){e.setOperators(t||r),e.cdr.detectChanges()})},A.prototype.ngOnDestroy=function(){this.localizationSubscription&&this.localizationSubscription.unsubscribe()},A.prototype.normalizeOperators=function(e,t){for(var r=[],n=0;n<t.length;n++)0<=["string","number","boolean","date"].indexOf(e)&&r.push({value:t[n],text:this.localization.get(b(P[e],t[n]))});return r},A.prototype.messageFor=function(e){return this.localization.get(e)},A.prototype.getFilterExpressionByField=function(t){var e=this.filterService.filters.find(function(e){return e.field===t});return e||null},A.prototype.filterValueChange=function(e){this.currentItem.value=null,this.currentItem.field=e;e=this.getFilterExpressionByField(this.currentItem.field);this.setOperators(e),this.valueChange.emit()},A.prototype.getDefaultOperators=function(e){switch(e){case"string":return y(M)(this.localization);case"number":return y(B)(this.localization);case"date":return y(G)(this.localization)}},A.prototype.getEditorType=function(){var t=this;return this.filterService.filters.find(function(e){return e.field===t.currentItem.field}).editor},A.prototype.removeFilterExpression=function(){this.filterService.remove(this.currentItem,this.index),this.valueChange.emit()},A.prototype.setOperators=function(e){var t;this.isBoolean="boolean"===e.editor,this.isBoolean||(e.operators?(t=this.normalizeOperators(e.editor,e.operators),this.operators=t,this.currentItem.operator||(this.currentItem.operator=t[0].value)):(this.operators=this.getDefaultOperators(e.editor),this.currentItem.operator||(this.currentItem.operator=this.operators[0].value)))},A.prototype.onOperatorChange=function(e){this.valueChange.emit(),0<=k.indexOf(e)?(this.currentItem.value=null,this.isEditorDisabled=!0):this.isEditorDisabled=!1};m=A;function A(e,t,r){this.filterService=e,this.localization=t,this.cdr=r,this.valueChange=new n.EventEmitter,this.operators=[],this.filters=[],this.isBoolean=!1,this.isEditorDisabled=!1}m.ɵfac=u.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:m,deps:[{token:v},{token:d.LocalizationService},{token:u.ChangeDetectorRef}],target:u.ɵɵFactoryTarget.Component}),m.ɵcmp=u.ɵɵngDeclareComponent({minVersion:"12.0.0",version:"12.2.16",type:m,selector:"kendo-filter-expression",inputs:{index:"index",currentItem:"currentItem"},outputs:{valueChange:"valueChange"},ngImport:u,template:'\n <div class="k-filter-toolbar" role="group" [attr.aria-label]="messageFor(\'filterAriaLabel\')">\n <div class="k-toolbar">\n <div class="k-filter-toolbar-item k-filter-field">\n <kendo-dropdownlist\n [kendoAriaLabelValue]="messageFor(\'filterFieldAriaLabel\')"\n [title]="messageFor(\'filterExpressionFilters\')"\n [data]="filters"\n textField="title"\n valueField="field"\n [value]="currentItem.field"\n [valuePrimitive]="true"\n (valueChange)="filterValueChange($event)">\n </kendo-dropdownlist>\n </div>\n <div *ngIf="!isBoolean" class="k-filter-toolbar-item k-filter-operator">\n <kendo-filter-expression-operators\n [currentItem]="currentItem"\n [operators]="operators"\n [editorType]="getEditorType()"\n (valueChange)="onOperatorChange($event);">\n </kendo-filter-expression-operators>\n </div>\n\n <ng-container [ngSwitch]="getEditorType()">\n <kendo-filter-text-editor *ngSwitchCase="\'string\'" [currentItem]="currentItem" [isDisabled]="isEditorDisabled" (valueChange)="valueChange.emit()"></kendo-filter-text-editor>\n <kendo-filter-numeric-editor *ngSwitchCase="\'number\'" [currentItem]="currentItem" [isDisabled]="isEditorDisabled" (valueChange)="valueChange.emit()"></kendo-filter-numeric-editor>\n <kendo-filter-boolean-editor *ngSwitchCase="\'boolean\'" [currentItem]="currentItem" (valueChange)="valueChange.emit()"></kendo-filter-boolean-editor>\n <kendo-filter-date-editor *ngSwitchCase="\'date\'" [currentItem]="currentItem" [isDisabled]="isEditorDisabled" (valueChange)="valueChange.emit()"></kendo-filter-date-editor>\n </ng-container>\n\n <div class="k-filter-toolbar-item">\n <button\n kendoButton\n icon="close"\n fillMode="flat"\n [title]="messageFor(\'remove\')"\n (click)="removeFilterExpression()">\n </button>\n </div>\n </div>\n </div>\n ',isInline:!0,components:[{type:f.DropDownListComponent,selector:"kendo-dropdownlist",inputs:["iconClass","loading","data","value","textField","valueField","popupSettings","listHeight","defaultItem","disabled","itemDisabled","readonly","filterable","virtual","ignoreCase","delay","valuePrimitive","tabindex","tabIndex","size","rounded","fillMode","id"],outputs:["valueChange","filterChange","selectionChange","open","opened","close","closed","focus","blur"],exportAs:["kendoDropDownList"]},{type:C,selector:"kendo-filter-expression-operators",inputs:["currentItem","editorType","operators"],outputs:["valueChange"]},{type:F,selector:"kendo-filter-text-editor",inputs:["currentItem","isDisabled"],outputs:["valueChange"]},{type:T,selector:"kendo-filter-numeric-editor",inputs:["currentItem","isDisabled"],outputs:["valueChange"]},{type:c,selector:"kendo-filter-boolean-editor",inputs:["currentItem"],outputs:["valueChange"]},{type:E,selector:"kendo-filter-date-editor",inputs:["currentItem","isDisabled"],outputs:["valueChange"]}],directives:[{type:x,selector:"[kendoAriaLabelValue]",inputs:["kendoAriaLabelValue"]},{type:g.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]},{type:g.NgSwitch,selector:"[ngSwitch]",inputs:["ngSwitch"]},{type:g.NgSwitchCase,selector:"[ngSwitchCase]",inputs:["ngSwitchCase"]},{type:h.ButtonDirective,selector:"button[kendoButton], span[kendoButton]",inputs:["toggleable","togglable","selected","tabIndex","icon","iconClass","imageUrl","disabled","size","rounded","fillMode","themeColor","role","primary","look"],outputs:["selectedChange","click"],exportAs:["kendoButton"]}]}),u.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:m,decorators:[{type:n.Component,args:[{selector:"kendo-filter-expression",template:'\n <div class="k-filter-toolbar" role="group" [attr.aria-label]="messageFor(\'filterAriaLabel\')">\n <div class="k-toolbar">\n <div class="k-filter-toolbar-item k-filter-field">\n <kendo-dropdownlist\n [kendoAriaLabelValue]="messageFor(\'filterFieldAriaLabel\')"\n [title]="messageFor(\'filterExpressionFilters\')"\n [data]="filters"\n textField="title"\n valueField="field"\n [value]="currentItem.field"\n [valuePrimitive]="true"\n (valueChange)="filterValueChange($event)">\n </kendo-dropdownlist>\n </div>\n <div *ngIf="!isBoolean" class="k-filter-toolbar-item k-filter-operator">\n <kendo-filter-expression-operators\n [currentItem]="currentItem"\n [operators]="operators"\n [editorType]="getEditorType()"\n (valueChange)="onOperatorChange($event);">\n </kendo-filter-expression-operators>\n </div>\n\n <ng-container [ngSwitch]="getEditorType()">\n <kendo-filter-text-editor *ngSwitchCase="\'string\'" [currentItem]="currentItem" [isDisabled]="isEditorDisabled" (valueChange)="valueChange.emit()"></kendo-filter-text-editor>\n <kendo-filter-numeric-editor *ngSwitchCase="\'number\'" [currentItem]="currentItem" [isDisabled]="isEditorDisabled" (valueChange)="valueChange.emit()"></kendo-filter-numeric-editor>\n <kendo-filter-boolean-editor *ngSwitchCase="\'boolean\'" [currentItem]="currentItem" (valueChange)="valueChange.emit()"></kendo-filter-boolean-editor>\n <kendo-filter-date-editor *ngSwitchCase="\'date\'" [currentItem]="currentItem" [isDisabled]="isEditorDisabled" (valueChange)="valueChange.emit()"></kendo-filter-date-editor>\n </ng-container>\n\n <div class="k-filter-toolbar-item">\n <button\n kendoButton\n icon="close"\n fillMode="flat"\n [title]="messageFor(\'remove\')"\n (click)="removeFilterExpression()">\n </button>\n </div>\n </div>\n </div>\n '}]}],ctorParameters:function(){return[{type:v},{type:d.LocalizationService},{type:u.ChangeDetectorRef}]},propDecorators:{index:[{type:n.Input}],currentItem:[{type:n.Input}],valueChange:[{type:n.Output}]}});V.prototype.ngOnInit=function(){var e=this;this.operators=this.getLogicOperators(),this.localizationSubscription=this.localization.changes.subscribe(function(){e.operators=e.getLogicOperators(),e.cdr.detectChanges()})},V.prototype.ngOnDestroy=function(){this.localizationSubscription&&this.localizationSubscription.unsubscribe()},V.prototype.getLogicOperators=function(){return y(j)(this.localization)},V.prototype.messageFor=function(e){return this.localization.get(e)},V.prototype.getOperator=function(e){return this.messageFor(b(j,e))},V.prototype.selectedChange=function(e){this.currentItem.logic!==e&&(this.currentItem.logic=e,this.valueChange.emit())},V.prototype.addFilterExpression=function(){this.filterService.addFilterExpression(this.currentItem),this.valueChange.emit()},V.prototype.addFilterGroup=function(){this.filterService.addFilterGroup(this.currentItem),this.valueChange.emit()},V.prototype.removeFilterGroup=function(){this.filterService.remove(this.currentItem,this.index),this.valueChange.emit()};f=V;function V(e,t,r){this.filterService=e,this.localization=t,this.cdr=r,this.index=0,this.currentItem={logic:"or",filters:[]},this.valueChange=new n.EventEmitter,this.operators=[]}f.ɵfac=u.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:f,deps:[{token:v},{token:d.LocalizationService},{token:u.ChangeDetectorRef}],target:u.ɵɵFactoryTarget.Component}),f.ɵcmp=u.ɵɵngDeclareComponent({minVersion:"12.0.0",version:"12.2.16",type:f,selector:"kendo-filter-group",inputs:{index:"index",currentItem:"currentItem"},outputs:{valueChange:"valueChange"},ngImport:u,template:'\n <div class="k-filter-toolbar" role="toolbar" [attr.aria-label]="messageFor(\'filterToolbarAriaLabel\')">\n <div class="k-toolbar">\n <div class="k-filter-toolbar-item">\n <div class="k-widget k-button-group" role="group">\n <button\n *ngFor="let operator of operators"\n kendoButton\n [ngClass]="{\'k-group-start\': operator.value === \'and\', \'k-group-end\': operator.value === \'or\'}"\n [selected]="currentItem.logic === operator.value"\n [title]="operator.text"\n (click)="selectedChange(operator.value)"\n >\n {{getOperator(operator.value)}}\n </button>\n </div>\n </div>\n <div class="k-filter-toolbar-item">\n <button\n kendoButton\n [title]="messageFor(\'addFilter\')"\n icon="filter-add-expression"\n (click)="addFilterExpression()">\n {{messageFor(\'addFilter\')}}\n </button>\n </div>\n <div class="k-filter-toolbar-item">\n <button\n kendoButton\n [title]="messageFor(\'addGroup\')"\n icon="filter-add-group"\n (click)="addFilterGroup()">\n {{messageFor(\'addGroup\')}}\n </button>\n </div>\n <div class="k-filter-toolbar-item">\n <button\n kendoButton\n icon="close"\n fillMode="flat"\n [title]="messageFor(\'remove\')"\n (click)="removeFilterGroup()">\n </button>\n </div>\n </div>\n </div>\n\n <ul class="k-filter-lines" *ngIf="currentItem.filters">\n <ng-container *ngFor="let item of currentItem.filters; let i = index;">\n <li class="k-filter-item" *ngIf="!item[\'filters\']">\n <kendo-filter-expression (valueChange)="valueChange.emit()" [currentItem]="item" [index]="i">\n </kendo-filter-expression>\n </li>\n <li class="k-filter-item" *ngIf="item[\'filters\']">\n <kendo-filter-group\n (valueChange)="valueChange.emit()"\n [currentItem]="item"\n [index]="i"\n >\n </kendo-filter-group>\n </li>\n </ng-container>\n </ul>\n ',isInline:!0,components:[{type:m,selector:"kendo-filter-expression",inputs:["index","currentItem"],outputs:["valueChange"]},{type:f,selector:"kendo-filter-group",inputs:["index","currentItem"],outputs:["valueChange"]}],directives:[{type:g.NgForOf,selector:"[ngFor][ngForOf]",inputs:["ngForOf","ngForTrackBy","ngForTemplate"]},{type:h.ButtonDirective,selector:"button[kendoButton], span[kendoButton]",inputs:["toggleable","togglable","selected","tabIndex","icon","iconClass","imageUrl","disabled","size","rounded","fillMode","themeColor","role","primary","look"],outputs:["selectedChange","click"],exportAs:["kendoButton"]},{type:g.NgClass,selector:"[ngClass]",inputs:["class","ngClass"]},{type:g.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]}]}),u.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:f,decorators:[{type:n.Component,args:[{selector:"kendo-filter-group",template:'\n <div class="k-filter-toolbar" role="toolbar" [attr.aria-label]="messageFor(\'filterToolbarAriaLabel\')">\n <div class="k-toolbar">\n <div class="k-filter-toolbar-item">\n <div class="k-widget k-button-group" role="group">\n <button\n *ngFor="let operator of operators"\n kendoButton\n [ngClass]="{\'k-group-start\': operator.value === \'and\', \'k-group-end\': operator.value === \'or\'}"\n [selected]="currentItem.logic === operator.value"\n [title]="operator.text"\n (click)="selectedChange(operator.value)"\n >\n {{getOperator(operator.value)}}\n </button>\n </div>\n </div>\n <div class="k-filter-toolbar-item">\n <button\n kendoButton\n [title]="messageFor(\'addFilter\')"\n icon="filter-add-expression"\n (click)="addFilterExpression()">\n {{messageFor(\'addFilter\')}}\n </button>\n </div>\n <div class="k-filter-toolbar-item">\n <button\n kendoButton\n [title]="messageFor(\'addGroup\')"\n icon="filter-add-group"\n (click)="addFilterGroup()">\n {{messageFor(\'addGroup\')}}\n </button>\n </div>\n <div class="k-filter-toolbar-item">\n <button\n kendoButton\n icon="close"\n fillMode="flat"\n [title]="messageFor(\'remove\')"\n (click)="removeFilterGroup()">\n </button>\n </div>\n </div>\n </div>\n\n <ul class="k-filter-lines" *ngIf="currentItem.filters">\n <ng-container *ngFor="let item of currentItem.filters; let i = index;">\n <li class="k-filter-item" *ngIf="!item[\'filters\']">\n <kendo-filter-expression (valueChange)="valueChange.emit()" [currentItem]="item" [index]="i">\n </kendo-filter-expression>\n </li>\n <li class="k-filter-item" *ngIf="item[\'filters\']">\n <kendo-filter-group\n (valueChange)="valueChange.emit()"\n [currentItem]="item"\n [index]="i"\n >\n </kendo-filter-group>\n </li>\n </ng-container>\n </ul>\n '}]}],ctorParameters:function(){return[{type:v},{type:d.LocalizationService},{type:u.ChangeDetectorRef}]},propDecorators:{index:[{type:n.Input}],currentItem:[{type:n.Input}],valueChange:[{type:n.Output}]}});var H=function(e,t){return(H=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])})(e,t)};function N(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}H(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}Object.create;function J(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,o,i=r.call(e),a=[];try{for(;(void 0===t||0<t--)&&!(n=i.next()).done;)a.push(n.value)}catch(e){o={error:e}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(o)throw o.error}}return a}function X(e,t,r){if(r||2===arguments.length)for(var n,o=0,i=t.length;o<i;o++)!n&&o in t||((n=n||Array.prototype.slice.call(t,0,o))[o]=t[o]);return e.concat(n||Array.prototype.slice.call(t))}Object.create;N(Q,Y=t.ComponentMessages);var Y,h=Q;function Q(){return null!==Y&&Y.apply(this,arguments)||this}h.ɵfac=u.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:h,deps:null,target:u.ɵɵFactoryTarget.Directive}),h.ɵdir=u.ɵɵngDeclareDirective({minVersion:"12.0.0",version:"12.2.16",type:h,selector:"[kendoFilterMessages]",inputs:{filterExpressionOperators:"filterExpressionOperators",filterExpressionFilters:"filterExpressionFilters",remove:"remove",addGroup:"addGroup",addFilter:"addFilter",filterAndLogic:"filterAndLogic",filterOrLogic:"filterOrLogic",filterEqOperator:"filterEqOperator",filterNotEqOperator:"filterNotEqOperator",filterIsNullOperator:"filterIsNullOperator",filterIsNotNullOperator:"filterIsNotNullOperator",filterIsEmptyOperator:"filterIsEmptyOperator",filterIsNotEmptyOperator:"filterIsNotEmptyOperator",filterStartsWithOperator:"filterStartsWithOperator",filterContainsOperator:"filterContainsOperator",filterNotContainsOperator:"filterNotContainsOperator",filterEndsWithOperator:"filterEndsWithOperator",filterGteOperator:"filterGteOperator",filterGtOperator:"filterGtOperator",filterLteOperator:"filterLteOperator",filterLtOperator:"filterLtOperator",filterIsTrue:"filterIsTrue",filterIsFalse:"filterIsFalse",filterBooleanAll:"filterBooleanAll",filterAfterOrEqualOperator:"filterAfterOrEqualOperator",filterAfterOperator:"filterAfterOperator",filterBeforeOperator:"filterBeforeOperator",filterBeforeOrEqualOperator:"filterBeforeOrEqualOperator",editorNumericDecrement:"editorNumericDecrement",editorNumericIncrement:"editorNumericIncrement",editorDateTodayText:"editorDateTodayText",editorDateToggleText:"editorDateToggleText",filterFieldAriaLabel:"filterFieldAriaLabel",filterOperatorAriaLabel:"filterOperatorAriaLabel",filterValueAriaLabel:"filterValueAriaLabel",filterAriaLabel:"filterAriaLabel",filterToolbarAriaLabel:"filterToolbarAriaLabel"},usesInheritance:!0,ngImport:u}),u.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:h,decorators:[{type:n.Directive,args:[{selector:"[kendoFilterMessages]"}]}],propDecorators:{filterExpressionOperators:[{type:n.Input}],filterExpressionFilters:[{type:n.Input}],remove:[{type:n.Input}],addGroup:[{type:n.Input}],addFilter:[{type:n.Input}],filterAndLogic:[{type:n.Input}],filterOrLogic:[{type:n.Input}],filterEqOperator:[{type:n.Input}],filterNotEqOperator:[{type:n.Input}],filterIsNullOperator:[{type:n.Input}],filterIsNotNullOperator:[{type:n.Input}],filterIsEmptyOperator:[{type:n.Input}],filterIsNotEmptyOperator:[{type:n.Input}],filterStartsWithOperator:[{type:n.Input}],filterContainsOperator:[{type:n.Input}],filterNotContainsOperator:[{type:n.Input}],filterEndsWithOperator:[{type:n.Input}],filterGteOperator:[{type:n.Input}],filterGtOperator:[{type:n.Input}],filterLteOperator:[{type:n.Input}],filterLtOperator:[{type:n.Input}],filterIsTrue:[{type:n.Input}],filterIsFalse:[{type:n.Input}],filterBooleanAll:[{type:n.Input}],filterAfterOrEqualOperator:[{type:n.Input}],filterAfterOperator:[{type:n.Input}],filterBeforeOperator:[{type:n.Input}],filterBeforeOrEqualOperator:[{type:n.Input}],editorNumericDecrement:[{type:n.Input}],editorNumericIncrement:[{type:n.Input}],editorDateTodayText:[{type:n.Input}],editorDateToggleText:[{type:n.Input}],filterFieldAriaLabel:[{type:n.Input}],filterOperatorAriaLabel:[{type:n.Input}],filterValueAriaLabel:[{type:n.Input}],filterAriaLabel:[{type:n.Input}],filterToolbarAriaLabel:[{type:n.Input}]}});N(ee,Z=h);var Z,w=ee;function ee(e){var t=Z.call(this)||this;return t.service=e,t}w.ɵfac=u.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:w,deps:[{token:d.LocalizationService}],target:u.ɵɵFactoryTarget.Directive}),w.ɵdir=u.ɵɵngDeclareDirective({minVersion:"12.0.0",version:"12.2.16",type:w,selector:"[kendoFilterLocalizedMessages]",providers:[{provide:h,useExisting:n.forwardRef(function(){return w})}],usesInheritance:!0,ngImport:u}),u.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:w,decorators:[{type:n.Directive,args:[{providers:[{provide:h,useExisting:n.forwardRef(function(){return w})}],selector:"[kendoFilterLocalizedMessages]"}]}],ctorParameters:function(){return[{type:d.LocalizationService}]}});Object.defineProperty(S.prototype,"filters",{get:function(){return this.filterService.filters},set:function(e){0<e.length&&(this.filterService.filters=e.map(function(e){e=Object.assign({},e);return e.title||(e.title=e.field),e}),this.setValue(this.value))},enumerable:!1,configurable:!0}),Object.defineProperty(S.prototype,"value",{get:function(){return this._value},set:function(e){e=JSON.parse(JSON.stringify(e));this._value=e,0<this.filters.length&&this.setValue(this.value)},enumerable:!1,configurable:!0}),S.prototype.ngOnInit=function(){var t=this;this.localizationSubscription=this.localization.changes.subscribe(function(e){e=e.rtl;t.direction=e?"rtl":"ltr",t.cdr.detectChanges()})},S.prototype.ngAfterViewChecked=function(){if(this.filterFields&&0<this.filterFields.length&&(this.filters=this.filterFields.map(function(e){return e})),0===this.filters.length)throw new Error("Pass at least one user-defined filter through the [filters] input property or nest kendo-filter-field components. See http://www.telerik.com/kendo-angular-ui/components/filter/#data-binding")},S.prototype.ngOnDestroy=function(){this.localizationSubscription&&this.localizationSubscription.unsubscribe()},S.prototype.getCurrentFilter=function(){return this.filterService.normalizedValue},S.prototype.onValueChange=function(){this.valueChange.emit(this.filterService.normalizedValue)},S.prototype.normalizeFilter=function(t){var e=this.filterService.filters.find(function(e){return e.field===t.field});if(n.isDevMode()&&!e)throw new Error("There is no user-defined filter with '"+t.field+"' field provided through the [filters] input property.");if(n.isDevMode()&&"boolean"===e.editor&&!t.value&&!1!==t.value&&console.warn("Provide a value for the boolean '"+t.field+"' user-defined filter as the operator is always set to 'eq'."),t.operator&&e.operators&&!e.operators.some(function(e){return e===t.operator}))throw new Error("The user-defined filter with field '"+t.field+"' is missing the '"+t.operator+"' operator.");"boolean"===e.editor&&(t.operator="eq"),"date"===e.editor&&t.value&&(t.value=new Date(t.value)),null==t.value&&(t.value=null),0<=k.indexOf(t.operator)&&(t.value=null)},S.prototype.setValue=function(e){this.normalizeValue(e),this.filterService.normalizedValue=e},S.prototype.normalizeValue=function(e){var t=this;this.filterService.filters.length&&e.filters.forEach(function(e){e.filters?t.normalizeValue(e):t.normalizeFilter(e)})};g=S;function S(e,t,r){this.filterService=e,this.localization=t,this.cdr=r,this.valueChange=new n.EventEmitter,this._value={filters:[],logic:"and"},z.validatePackage(R),this.direction=t.rtl?"rtl":"ltr"}g.ɵfac=u.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:g,deps:[{token:v},{token:d.LocalizationService},{token:u.ChangeDetectorRef}],target:u.ɵɵFactoryTarget.Component}),g.ɵcmp=u.ɵɵngDeclareComponent({minVersion:"12.0.0",version:"12.2.16",type:g,selector:"kendo-filter",inputs:{filters:"filters",value:"value"},outputs:{valueChange:"valueChange"},host:{properties:{"attr.dir":"this.direction"}},providers:[t.LocalizationService,{provide:t.L10N_PREFIX,useValue:"kendo.filter"},v],queries:[{propertyName:"filterFields",predicate:O}],ngImport:u,template:'\n <ng-container kendoFilterLocalizedMessages\n i18n-editorDateTodayText="kendo.filter.editorDateTodayText|The text of the Today button of the Date editor"\n editorDateTodayText="Today"\n\n i18n-editorDateToggleText="kendo.filter.editorDateToggleText|The title of the Toggle button of the Date editor."\n editorDateToggleText="Toggle calendar"\n\n i18n-editorNumericDecrement="kendo.filter.editorNumericDecrement|The title of the Decrement button of the Numeric editor"\n editorNumericDecrement="Decrement"\n\n i18n-editorNumericIncrement="kendo.filter.editorNumericIncrement|The title of the Increment button of the Numeric editor"\n editorNumericIncrement="Increment"\n\n i18n-filterExpressionOperators="kendo.filter.filterExpressionOperators|The text of the Filter Expression Operators drop down"\n filterExpressionOperators="Operators"\n\n i18n-filterExpressionFilters="kendo.filter.filterExpressionFilters|The text of the Filter Expression filters drop down"\n filterExpressionFilters="Fields"\n\n i18n-remove="kendo.filter.remove|The text of the Remove button"\n remove="Remove"\n\n i18n-addFilter="kendo.filter.addFilter|The text of the Add Filter button"\n addFilter="Add Filter"\n\n i18n-addGroup="kendo.filter.addGroup|The text of the Add Group button"\n addGroup="Add Group"\n\n i18n-filterAndLogic="kendo.filter.filterAndLogic|The text of the And filter logic"\n filterAndLogic="And"\n\n i18n-filterOrLogic="kendo.filter.filterOrLogic|The text of the Or filter logic"\n filterOrLogic="Or"\n\n i18n-filterEqOperator="kendo.filter.filterEqOperator|The text of the equal filter operator"\n filterEqOperator="Is equal to"\n\n i18n-filterNotEqOperator="kendo.filter.filterNotEqOperator|The text of the not equal filter operator"\n filterNotEqOperator="Is not equal to"\n\n i18n-filterIsNullOperator="kendo.filter.filterIsNullOperator|The text of the is null filter operator"\n filterIsNullOperator="Is null"\n\n i18n-filterIsNotNullOperator="kendo.filter.filterIsNotNullOperator|The text of the is not null filter operator"\n filterIsNotNullOperator="Is not null"\n\n i18n-filterIsEmptyOperator="kendo.filter.filterIsEmptyOperator|The text of the is empty filter operator"\n filterIsEmptyOperator="Is empty"\n\n i18n-filterIsNotEmptyOperator="kendo.filter.filterIsNotEmptyOperator|The text of the is not empty filter operator"\n filterIsNotEmptyOperator="Is not empty"\n\n i18n-filterStartsWithOperator="kendo.filter.filterStartsWithOperator|The text of the starts with filter operator"\n filterStartsWithOperator="Starts with"\n\n i18n-filterContainsOperator="kendo.filter.filterContainsOperator|The text of the contains filter operator"\n filterContainsOperator="Contains"\n\n i18n-filterNotContainsOperator="kendo.filter.filterNotContainsOperator|The text of the does not contain filter operator"\n filterNotContainsOperator="Does not contain"\n\n i18n-filterEndsWithOperator="kendo.filter.filterEndsWithOperator|The text of the ends with filter operator"\n filterEndsWithOperator="Ends with"\n\n i18n-filterGteOperator="kendo.filter.filterGteOperator|The text of the greater than or equal filter operator"\n filterGteOperator="Is greater than or equal to"\n\n i18n-filterGtOperator="kendo.filter.filterGtOperator|The text of the greater than filter operator"\n filterGtOperator="Is greater than"\n\n i18n-filterLteOperator="kendo.filter.filterLteOperator|The text of the less than or equal filter operator"\n filterLteOperator="Is less than or equal to"\n\n i18n-filterLtOperator="kendo.filter.filterLtOperator|The text of the less than filter operator"\n filterLtOperator="Is less than"\n\n i18n-filterIsTrue="kendo.filter.filterIsTrue|The text of the IsTrue boolean filter option"\n filterIsTrue="Is True"\n\n i18n-filterIsFalse="kendo.filter.filterIsFalse|The text of the IsFalse boolean filter option"\n filterIsFalse="Is False"\n\n i18n-filterBooleanAll="kendo.filter.filterBooleanAll|The text of the (All) boolean filter option"\n filterBooleanAll="(All)"\n\n i18n-filterAfterOrEqualOperator="kendo.filter.filterAfterOrEqualOperator|The text of the after or equal date filter operator"\n filterAfterOrEqualOperator="Is after or equal to"\n\n i18n-filterAfterOperator="kendo.filter.filterAfterOperator|The text of the after date filter operator"\n filterAfterOperator="Is after"\n\n i18n-filterBeforeOperator="kendo.filter.filterBeforeOperator|The text of the before date filter operator"\n filterBeforeOperator="Is before"\n\n i18n-filterBeforeOrEqualOperator="kendo.filter.filterBeforeOrEqualOperator|The text of the before or equal date filter operator"\n filterBeforeOrEqualOperator="Is before or equal to"\n\n i18n-filterFieldAriaLabel="kendo.filter.filterFieldAriaLabel|The text of the filter field aria label"\n filterFieldAriaLabel="field"\n\n i18n-filterOperatorAriaLabel="kendo.filter.filterOperatorAriaLabel|The text of the filter operator aria label"\n filterOperatorAriaLabel="operator"\n\n i18n-filterValueAriaLabel="kendo.filter.filterValueAriaLabel|The text of the filter value aria label"\n filterValueAriaLabel="value"\n\n i18n-filterAriaLabel="kendo.filter.filterAriaLabel|The text of the filter row aria label"\n filterAriaLabel="filter"\n\n i18n-filterToolbarAriaLabel="kendo.filter.filterToolbarAriaLabel|The text of the filter toolbar aria label"\n filterToolbarAriaLabel="filter settings"\n >\n </ng-container>\n <div class="k-widget k-filter" [attr.dir]="direction">\n <ul class=\'k-filter-container\'>\n <li class=\'k-filter-group-main\'>\n <kendo-filter-group\n [currentItem]="getCurrentFilter()"\n (valueChange)="onValueChange()"\n >\n </kendo-filter-group>\n </li>\n </ul>\n </div>\n ',isInline:!0,components:[{type:f,selector:"kendo-filter-group",inputs:["index","currentItem"],outputs:["valueChange"]}],directives:[{type:w,selector:"[kendoFilterLocalizedMessages]"}]}),u.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:g,decorators:[{type:n.Component,args:[{providers:[t.LocalizationService,{provide:t.L10N_PREFIX,useValue:"kendo.filter"},v],selector:"kendo-filter",template:'\n <ng-container kendoFilterLocalizedMessages\n i18n-editorDateTodayText="kendo.filter.editorDateTodayText|The text of the Today button of the Date editor"\n editorDateTodayText="Today"\n\n i18n-editorDateToggleText="kendo.filter.editorDateToggleText|The title of the Toggle button of the Date editor."\n editorDateToggleText="Toggle calendar"\n\n i18n-editorNumericDecrement="kendo.filter.editorNumericDecrement|The title of the Decrement button of the Numeric editor"\n editorNumericDecrement="Decrement"\n\n i18n-editorNumericIncrement="kendo.filter.editorNumericIncrement|The title of the Increment button of the Numeric editor"\n editorNumericIncrement="Increment"\n\n i18n-filterExpressionOperators="kendo.filter.filterExpressionOperators|The text of the Filter Expression Operators drop down"\n filterExpressionOperators="Operators"\n\n i18n-filterExpressionFilters="kendo.filter.filterExpressionFilters|The text of the Filter Expression filters drop down"\n filterExpressionFilters="Fields"\n\n i18n-remove="kendo.filter.remove|The text of the Remove button"\n remove="Remove"\n\n i18n-addFilter="kendo.filter.addFilter|The text of the Add Filter button"\n addFilter="Add Filter"\n\n i18n-addGroup="kendo.filter.addGroup|The text of the Add Group button"\n addGroup="Add Group"\n\n i18n-filterAndLogic="kendo.filter.filterAndLogic|The text of the And filter logic"\n filterAndLogic="And"\n\n i18n-filterOrLogic="kendo.filter.filterOrLogic|The text of the Or filter logic"\n filterOrLogic="Or"\n\n i18n-filterEqOperator="kendo.filter.filterEqOperator|The text of the equal filter operator"\n filterEqOperator="Is equal to"\n\n i18n-filterNotEqOperator="kendo.filter.filterNotEqOperator|The text of the not equal filter operator"\n filterNotEqOperator="Is not equal to"\n\n i18n-filterIsNullOperator="kendo.filter.filterIsNullOperator|The text of the is null filter operator"\n filterIsNullOperator="Is null"\n\n i18n-filterIsNotNullOperator="kendo.filter.filterIsNotNullOperator|The text of the is not null filter operator"\n filterIsNotNullOperator="Is not null"\n\n i18n-filterIsEmptyOperator="kendo.filter.filterIsEmptyOperator|The text of the is empty filter operator"\n filterIsEmptyOperator="Is empty"\n\n i18n-filterIsNotEmptyOperator="kendo.filter.filterIsNotEmptyOperator|The text of the is not empty filter operator"\n filterIsNotEmptyOperator="Is not empty"\n\n i18n-filterStartsWithOperator="kendo.filter.filterStartsWithOperator|The text of the starts with filter operator"\n filterStartsWithOperator="Starts with"\n\n i18n-filterContainsOperator="kendo.filter.filterContainsOperator|The text of the contains filter operator"\n filterContainsOperator="Contains"\n\n i18n-filterNotContainsOperator="kendo.filter.filterNotContainsOperator|The text of the does not contain filter operator"\n filterNotContainsOperator="Does not contain"\n\n i18n-filterEndsWithOperator="kendo.filter.filterEndsWithOperator|The text of the ends with filter operator"\n filterEndsWithOperator="Ends with"\n\n i18n-filterGteOperator="kendo.filter.filterGteOperator|The text of the greater than or equal filter operator"\n filterGteOperator="Is greater than or equal to"\n\n i18n-filterGtOperator="kendo.filter.filterGtOperator|The text of the greater than filter operator"\n filterGtOperator="Is greater than"\n\n i18n-filterLteOperator="kendo.filter.filterLteOperator|The text of the less than or equal filter operator"\n filterLteOperator="Is less than or equal to"\n\n i18n-filterLtOperator="kendo.filter.filterLtOperator|The text of the less than filter operator"\n filterLtOperator="Is less than"\n\n i18n-filterIsTrue="kendo.filter.filterIsTrue|The text of the IsTrue boolean filter option"\n filterIsTrue="Is True"\n\n i18n-filterIsFalse="kendo.filter.filterIsFalse|The text of the IsFalse boolean filter option"\n filterIsFalse="Is False"\n\n i18n-filterBooleanAll="kendo.filter.filterBooleanAll|The text of the (All) boolean filter option"\n filterBooleanAll="(All)"\n\n i18n-filterAfterOrEqualOperator="kendo.filter.filterAfterOrEqualOperator|The text of the after or equal date filter operator"\n filterAfterOrEqualOperator="Is after or equal to"\n\n i18n-filterAfterOperator="kendo.filter.filterAfterOperator|The text of the after date filter operator"\n filterAfterOperator="Is after"\n\n i18n-filterBeforeOperator="kendo.filter.filterBeforeOperator|The text of the before date filter operator"\n filterBeforeOperator="Is before"\n\n i18n-filterBeforeOrEqualOperator="kendo.filter.filterBeforeOrEqualOperator|The text of the before or equal date filter operator"\n filterBeforeOrEqualOperator="Is before or equal to"\n\n i18n-filterFieldAriaLabel="kendo.filter.filterFieldAriaLabel|The text of the filter field aria label"\n filterFieldAriaLabel="field"\n\n i18n-filterOperatorAriaLabel="kendo.filter.filterOperatorAriaLabel|The text of the filter operator aria label"\n filterOperatorAriaLabel="operator"\n\n i18n-filterValueAriaLabel="kendo.filter.filterValueAriaLabel|The text of the filter value aria label"\n filterValueAriaLabel="value"\n\n i18n-filterAriaLabel="kendo.filter.filterAriaLabel|The text of the filter row aria label"\n filterAriaLabel="filter"\n\n i18n-filterToolbarAriaLabel="kendo.filter.filterToolbarAriaLabel|The text of the filter toolbar aria label"\n filterToolbarAriaLabel="filter settings"\n >\n </ng-container>\n <div class="k-widget k-filter" [attr.dir]="direction">\n <ul class=\'k-filter-container\'>\n <li class=\'k-filter-group-main\'>\n <kendo-filter-group\n [currentItem]="getCurrentFilter()"\n (valueChange)="onValueChange()"\n >\n </kendo-filter-group>\n </li>\n </ul>\n </div>\n '}]}],ctorParameters:function(){return[{type:v},{type:d.LocalizationService},{type:u.ChangeDetectorRef}]},propDecorators:{direction:[{type:n.HostBinding,args:["attr.dir"]}],filters:[{type:n.Input}],value:[{type:n.Input}],valueChange:[{type:n.Output}],filterFields:[{type:n.ContentChildren,args:[O]}]}});N(re,te=h),Object.defineProperty(re.prototype,"override",{get:function(){return!0},enumerable:!1,configurable:!0});var te,q=re;function re(e){var t=te.call(this)||this;return t.service=e,t}q.ɵfac=u.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:q,deps:[{token:d.LocalizationService}],target:u.ɵɵFactoryTarget.Component}),q.ɵcmp=u.ɵɵngDeclareComponent({minVersion:"12.0.0",version:"12.2.16",type:q,selector:"kendo-filter-messages",providers:[{provide:h,useExisting:n.forwardRef(function(){return q})}],usesInheritance:!0,ngImport:u,template:"",isInline:!0}),u.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:q,decorators:[{type:n.Component,args:[{providers:[{provide:h,useExisting:n.forwardRef(function(){return q})}],selector:"kendo-filter-messages",template:""}]}],ctorParameters:function(){return[{type:d.LocalizationService}]}});t=[a.CommonModule,o.InputsModule,s.LabelModule,r.DropDownsModule,l.ButtonsModule,i.DateInputsModule],h=function(){},h.ɵfac=u.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:h,deps:[],target:u.ɵɵFactoryTarget.NgModule}),h.ɵmod=u.ɵɵngDeclareNgModule({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:h,imports:[a.CommonModule,o.InputsModule,s.LabelModule,r.DropDownsModule,l.ButtonsModule,i.DateInputsModule],exports:[a.CommonModule,o.InputsModule,s.LabelModule,r.DropDownsModule,l.ButtonsModule,i.DateInputsModule]}),h.ɵinj=u.ɵɵngDeclareInjector({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:h,imports:[X([],J(t)),a.CommonModule,o.InputsModule,s.LabelModule,r.DropDownsModule,l.ButtonsModule,i.DateInputsModule]}),u.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:h,decorators:[{type:n.NgModule,args:[{imports:X([],J(t)),exports:X([],J(t))}]}]}),a=function(){};a.ɵfac=u.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:a,deps:[],target:u.ɵɵFactoryTarget.NgModule}),a.ɵmod=u.ɵɵngDeclareNgModule({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:a,declarations:[g,T,F,m,f,C,c,E,w,q,x,O],imports:[h],exports:[g,T,F,m,f,C,c,E,w,q,x,O]}),a.ɵinj=u.ɵɵngDeclareInjector({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:a,imports:[[h]]}),u.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:a,decorators:[{type:n.NgModule,args:[{imports:[h],declarations:[g,T,F,m,f,C,c,E,w,q,x,O],exports:[g,T,F,m,f,C,c,E,w,q,x,O]}]}]}),e.AriaLabelValueDirective=x,e.CustomMessagesComponent=q,e.FilterBooleanEditorComponent=c,e.FilterComponent=g,e.FilterDateEditorComponent=E,e.FilterExpressionComponent=m,e.FilterExpressionOperatorsComponent=C,e.FilterFieldComponent=O,e.FilterGroupComponent=f,e.FilterModule=a,e.FilterNumericEditorComponent=T,e.FilterTextEditorComponent=F,e.LocalizedMessagesDirective=w,Object.defineProperty(e,"__esModule",{value:!0})});
5
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("@progress/kendo-angular-l10n"),require("@progress/kendo-licensing"),require("@progress/kendo-angular-dropdowns"),require("@progress/kendo-angular-inputs"),require("@progress/kendo-angular-dateinputs"),require("@angular/common"),require("@progress/kendo-angular-buttons"),require("@progress/kendo-angular-label")):"function"==typeof define&&define.amd?define("KendoAngularFilter",["exports","@angular/core","@progress/kendo-angular-l10n","@progress/kendo-licensing","@progress/kendo-angular-dropdowns","@progress/kendo-angular-inputs","@progress/kendo-angular-dateinputs","@angular/common","@progress/kendo-angular-buttons","@progress/kendo-angular-label"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).KendoAngularFilter={},e.ng.core,e.KendoAngularL10N,e.KendoLicensing,e.KendoAngularDropdowns,e.KendoAngularInputs,e.KendoAngularDateinputs,e.ng.common,e.KendoAngularButtons,e.KendoAngularLabel)}(this,function(e,n,t,z,r,o,i,a,l,s){"use strict";function p(r){if(r&&r.__esModule)return r;var n=Object.create(null);return r&&Object.keys(r).forEach(function(e){var t;"default"!==e&&(t=Object.getOwnPropertyDescriptor(r,e),Object.defineProperty(n,e,t.get?t:{enumerable:!0,get:function(){return r[e]}}))}),n.default=r,Object.freeze(n)}var u=p(n),d=p(t),f=p(r),c=p(o),m=p(i),g=p(a),h=p(l),v=(I.prototype.addFilterGroup=function(e){e.filters.push({logic:"and",filters:[]})},I.prototype.addFilterExpression=function(e){e.filters.push({operator:"eq",value:null,field:null})},I.prototype.remove=function(t,r,e){var n,o=this;e=e||this.normalizedValue,t===e?e.filters=[]:0<=(n=e.filters.indexOf(t))&&n===r?e.filters=e.filters.filter(function(e){return e!==t}):e.filters.forEach(function(e){return e.filters&&o.remove(t,r,e)})},I);function I(){this.normalizedValue={logic:"and",filters:[]},this.filters=[]}v.ɵfac=u.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:v,deps:[],target:u.ɵɵFactoryTarget.Injectable}),v.ɵprov=u.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:v}),u.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:v,decorators:[{type:n.Injectable}]});function y(t,r){return Object.keys(t).find(function(e){return t[e]===r})}function b(r){return function(t){return Object.keys(r).map(function(e){return{text:t.get(e),value:r[e]}})}}var k=["isnull","isnotnull","isempty","isnotempty"],M={filterEqOperator:"eq",filterNotEqOperator:"neq",filterContainsOperator:"contains",filterNotContainsOperator:"doesnotcontain",filterStartsWithOperator:"startswith",filterEndsWithOperator:"endswith",filterIsNullOperator:"isnull",filterIsNotNullOperator:"isnotnull",filterIsEmptyOperator:"isempty",filterIsNotEmptyOperator:"isnotempty"},B={filterEqOperator:"eq",filterNotEqOperator:"neq",filterGteOperator:"gte",filterGtOperator:"gt",filterLteOperator:"lte",filterLtOperator:"lt",filterIsNullOperator:"isnull",filterIsNotNullOperator:"isnotnull"},G={filterEqOperator:"eq",filterNotEqOperator:"neq",filterAfterOrEqualOperator:"gte",filterAfterOperator:"gt",filterBeforeOrEqualOperator:"lte",filterBeforeOperator:"lt",filterIsNullOperator:"isnull",filterIsNotNullOperator:"isnotnull"},P={string:M,number:B,date:G},R={filterAndLogic:"and",filterOrLogic:"or"},j={name:"@progress/kendo-angular-filter",productName:"Kendo UI for Angular",productCodes:["KENDOUIANGULAR","KENDOUICOMPLETE"],publishDate:1655876723,version:"",licensingDocsUrl:"https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning"},O=function(e){this.templateRef=e},C=(O.ɵfac=u.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:O,deps:[{token:u.TemplateRef}],target:u.ɵɵFactoryTarget.Directive}),O.ɵdir=u.ɵɵngDeclareDirective({minVersion:"12.0.0",version:"12.2.16",type:O,selector:"[kendoFilterValueEditorTemplate]",ngImport:u}),u.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:O,decorators:[{type:n.Directive,args:[{selector:"[kendoFilterValueEditorTemplate]"}]}],ctorParameters:function(){return[{type:u.TemplateRef}]}}),Object.defineProperty(_.prototype,"title",{get:function(){return this._title},set:function(e){this._title=e||this.field},enumerable:!1,configurable:!0}),_);function _(){}C.ɵfac=u.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:C,deps:[],target:u.ɵɵFactoryTarget.Component}),C.ɵcmp=u.ɵɵngDeclareComponent({minVersion:"12.0.0",version:"12.2.16",type:C,selector:"kendo-filter-field",inputs:{field:"field",title:"title",editor:"editor",operators:"operators"},queries:[{propertyName:"editorTemplate",first:!0,predicate:O,descendants:!0}],ngImport:u,template:"",isInline:!0}),u.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:C,decorators:[{type:n.Component,args:[{selector:"kendo-filter-field",template:""}]}],propDecorators:{field:[{type:n.Input}],title:[{type:n.Input}],editor:[{type:n.Input}],operators:[{type:n.Input}],editorTemplate:[{type:n.ContentChild,args:[O]}]}});W.prototype.ngOnChanges=function(){var e=this.hostElement.nativeElement.querySelector("input")||this.hostElement.nativeElement;this.renderer.setAttribute(e,"aria-label",this.ariaLabel)};var x=W;function W(e,t){this.hostElement=e,this.renderer=t}x.ɵfac=u.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:x,deps:[{token:u.ElementRef},{token:u.Renderer2}],target:u.ɵɵFactoryTarget.Directive}),x.ɵdir=u.ɵɵngDeclareDirective({minVersion:"12.0.0",version:"12.2.16",type:x,selector:"[kendoAriaLabelValue]",inputs:{ariaLabel:["kendoAriaLabelValue","ariaLabel"]},usesOnChanges:!0,ngImport:u}),u.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:x,decorators:[{type:n.Directive,args:[{selector:"[kendoAriaLabelValue]"}]}],ctorParameters:function(){return[{type:u.ElementRef},{type:u.Renderer2}]},propDecorators:{ariaLabel:[{type:n.Input,args:["kendoAriaLabelValue"]}]}});D.prototype.messageFor=function(e){return this.localization.get(e)},D.prototype.getOperator=function(e){return this.messageFor(y(P[this.editorType],e))},D.prototype.operatorValueChange=function(e){this.valueChange.emit(e)};var T=D;function D(e){this.localization=e,this.valueChange=new n.EventEmitter,this.operators=[]}T.ɵfac=u.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:T,deps:[{token:d.LocalizationService}],target:u.ɵɵFactoryTarget.Component}),T.ɵcmp=u.ɵɵngDeclareComponent({minVersion:"12.0.0",version:"12.2.16",type:T,selector:"kendo-filter-expression-operators",inputs:{currentItem:"currentItem",editorType:"editorType",operators:"operators"},outputs:{valueChange:"valueChange"},ngImport:u,template:'\n <kendo-dropdownlist\n [kendoAriaLabelValue]="messageFor(\'filterOperatorAriaLabel\')"\n [data]="operators"\n [title]="messageFor(\'filterExpressionOperators\')"\n [(value)]="currentItem.operator"\n (valueChange)="operatorValueChange($event)"\n [valuePrimitive]="true"\n textField="text"\n valueField="value"\n >\n <ng-template kendoDropDownListValueTemplate let-dataItem>\n {{ getOperator(dataItem.value) }}\n </ng-template>\n <ng-template kendoDropDownListItemTemplate let-dataItem>\n {{ getOperator(dataItem.value) }}\n </ng-template>\n </kendo-dropdownlist>\n ',isInline:!0,components:[{type:f.DropDownListComponent,selector:"kendo-dropdownlist",inputs:["iconClass","loading","data","value","textField","valueField","popupSettings","listHeight","defaultItem","disabled","itemDisabled","readonly","filterable","virtual","ignoreCase","delay","valuePrimitive","tabindex","tabIndex","size","rounded","fillMode","id"],outputs:["valueChange","filterChange","selectionChange","open","opened","close","closed","focus","blur"],exportAs:["kendoDropDownList"]}],directives:[{type:x,selector:"[kendoAriaLabelValue]",inputs:["kendoAriaLabelValue"]},{type:f.ValueTemplateDirective,selector:"[kendoDropDownListValueTemplate],[kendoDropDownTreeValueTemplate]"},{type:f.ItemTemplateDirective,selector:"[kendoDropDownListItemTemplate],[kendoComboBoxItemTemplate],[kendoAutoCompleteItemTemplate],[kendoMultiSelectItemTemplate]"}]}),u.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:T,decorators:[{type:n.Component,args:[{selector:"kendo-filter-expression-operators",template:'\n <kendo-dropdownlist\n [kendoAriaLabelValue]="messageFor(\'filterOperatorAriaLabel\')"\n [data]="operators"\n [title]="messageFor(\'filterExpressionOperators\')"\n [(value)]="currentItem.operator"\n (valueChange)="operatorValueChange($event)"\n [valuePrimitive]="true"\n textField="text"\n valueField="value"\n >\n <ng-template kendoDropDownListValueTemplate let-dataItem>\n {{ getOperator(dataItem.value) }}\n </ng-template>\n <ng-template kendoDropDownListItemTemplate let-dataItem>\n {{ getOperator(dataItem.value) }}\n </ng-template>\n </kendo-dropdownlist>\n '}]}],ctorParameters:function(){return[{type:d.LocalizationService}]},propDecorators:{currentItem:[{type:n.Input}],editorType:[{type:n.Input}],valueChange:[{type:n.Output}],operators:[{type:n.Input}]}});K.prototype.messageFor=function(e){return this.localization.get(e)};var F=K;function K(e){this.localization=e,this.valueChange=new n.EventEmitter}F.ɵfac=u.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:F,deps:[{token:d.LocalizationService}],target:u.ɵɵFactoryTarget.Component}),F.ɵcmp=u.ɵɵngDeclareComponent({minVersion:"12.0.0",version:"12.2.16",type:F,selector:"kendo-filter-text-editor",inputs:{currentItem:"currentItem",isDisabled:"isDisabled"},outputs:{valueChange:"valueChange"},ngImport:u,template:'\n <kendo-textbox\n [kendoAriaLabelValue]="messageFor(\'filterValueAriaLabel\')"\n [(value)]="currentItem.value"\n (valueChange)="valueChange.emit()"\n [disabled]="isDisabled">\n </kendo-textbox>\n ',isInline:!0,components:[{type:c.TextBoxComponent,selector:"kendo-textbox",inputs:["focusableId","title","disabled","readonly","tabindex","value","selectOnFocus","showSuccessIcon","showErrorIcon","clearButton","successIcon","errorIcon","clearButtonIcon","size","rounded","fillMode","tabIndex","placeholder","maxlength"],outputs:["valueChange","inputFocus","inputBlur","focus","blur"],exportAs:["kendoTextBox"]}],directives:[{type:x,selector:"[kendoAriaLabelValue]",inputs:["kendoAriaLabelValue"]}]}),u.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:F,decorators:[{type:n.Component,args:[{selector:"kendo-filter-text-editor",template:'\n <kendo-textbox\n [kendoAriaLabelValue]="messageFor(\'filterValueAriaLabel\')"\n [(value)]="currentItem.value"\n (valueChange)="valueChange.emit()"\n [disabled]="isDisabled">\n </kendo-textbox>\n '}]}],ctorParameters:function(){return[{type:d.LocalizationService}]},propDecorators:{currentItem:[{type:n.Input}],isDisabled:[{type:n.Input}],valueChange:[{type:n.Output}]}});$.prototype.messageFor=function(e){return this.localization.get(e)};var L=$;function $(e){this.localization=e,this.valueChange=new n.EventEmitter}L.ɵfac=u.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:L,deps:[{token:d.LocalizationService}],target:u.ɵɵFactoryTarget.Component}),L.ɵcmp=u.ɵɵngDeclareComponent({minVersion:"12.0.0",version:"12.2.16",type:L,selector:"kendo-filter-numeric-editor",inputs:{currentItem:"currentItem",isDisabled:"isDisabled"},outputs:{valueChange:"valueChange"},ngImport:u,template:'\n <kendo-numerictextbox\n [kendoAriaLabelValue]="messageFor(\'filterValueAriaLabel\')"\n [(value)]="currentItem.value"\n (valueChange)="valueChange.emit()"\n [disabled]="isDisabled">\n <kendo-numerictextbox-messages\n [increment]="messageFor(\'editorNumericIncrement\')"\n [decrement]="messageFor(\'editorNumericDecrement\')">\n </kendo-numerictextbox-messages>\n </kendo-numerictextbox>\n ',isInline:!0,components:[{type:c.NumericTextBoxComponent,selector:"kendo-numerictextbox",inputs:["focusableId","disabled","readonly","title","autoCorrect","format","max","min","decimals","placeholder","step","spinners","rangeValidation","tabindex","tabIndex","changeValueOnScroll","selectOnFocus","value","maxlength","size","rounded","fillMode"],outputs:["valueChange","focus","blur"],exportAs:["kendoNumericTextBox"]},{type:c.NumericTextBoxCustomMessagesComponent,selector:"kendo-numerictextbox-messages"}],directives:[{type:x,selector:"[kendoAriaLabelValue]",inputs:["kendoAriaLabelValue"]}]}),u.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:L,decorators:[{type:n.Component,args:[{selector:"kendo-filter-numeric-editor",template:'\n <kendo-numerictextbox\n [kendoAriaLabelValue]="messageFor(\'filterValueAriaLabel\')"\n [(value)]="currentItem.value"\n (valueChange)="valueChange.emit()"\n [disabled]="isDisabled">\n <kendo-numerictextbox-messages\n [increment]="messageFor(\'editorNumericIncrement\')"\n [decrement]="messageFor(\'editorNumericDecrement\')">\n </kendo-numerictextbox-messages>\n </kendo-numerictextbox>\n '}]}],ctorParameters:function(){return[{type:d.LocalizationService}]},propDecorators:{currentItem:[{type:n.Input}],isDisabled:[{type:n.Input}],valueChange:[{type:n.Output}]}});E.prototype.ngOnInit=function(){var e=this;this.localizationSubscription=this.localization.changes.subscribe(function(){e.defaultItem=e.getDefaultItem(),e.items=e.getValueItems(),e.cdr.detectChanges()})},E.prototype.getDefaultItem=function(){return{text:this.localization.get("filterBooleanAll"),value:null}},E.prototype.getValueItems=function(){return[{text:this.localization.get("filterIsTrue"),value:!0},{text:this.localization.get("filterIsFalse"),value:!1}]},E.prototype.ngOnDestroy=function(){this.localizationSubscription&&this.localizationSubscription.unsubscribe()},E.prototype.messageFor=function(e){return this.localization.get(e)};c=E;function E(e,t){this.localization=e,this.cdr=t,this.valueChange=new n.EventEmitter,this.items=this.getValueItems(),this.defaultItem=this.getDefaultItem()}c.ɵfac=u.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:c,deps:[{token:d.LocalizationService},{token:u.ChangeDetectorRef}],target:u.ɵɵFactoryTarget.Component}),c.ɵcmp=u.ɵɵngDeclareComponent({minVersion:"12.0.0",version:"12.2.16",type:c,selector:"kendo-filter-boolean-editor",inputs:{currentItem:"currentItem"},outputs:{valueChange:"valueChange"},ngImport:u,template:'\n <kendo-dropdownlist\n [kendoAriaLabelValue]="messageFor(\'filterValueAriaLabel\')"\n [(value)]="currentItem.value"\n (valueChange)="valueChange.emit()"\n [data]="items"\n [defaultItem]="defaultItem"\n [valuePrimitive]="true"\n textField="text"\n valueField="value"\n >\n </kendo-dropdownlist>\n ',isInline:!0,components:[{type:f.DropDownListComponent,selector:"kendo-dropdownlist",inputs:["iconClass","loading","data","value","textField","valueField","popupSettings","listHeight","defaultItem","disabled","itemDisabled","readonly","filterable","virtual","ignoreCase","delay","valuePrimitive","tabindex","tabIndex","size","rounded","fillMode","id"],outputs:["valueChange","filterChange","selectionChange","open","opened","close","closed","focus","blur"],exportAs:["kendoDropDownList"]}],directives:[{type:x,selector:"[kendoAriaLabelValue]",inputs:["kendoAriaLabelValue"]}]}),u.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:c,decorators:[{type:n.Component,args:[{selector:"kendo-filter-boolean-editor",template:'\n <kendo-dropdownlist\n [kendoAriaLabelValue]="messageFor(\'filterValueAriaLabel\')"\n [(value)]="currentItem.value"\n (valueChange)="valueChange.emit()"\n [data]="items"\n [defaultItem]="defaultItem"\n [valuePrimitive]="true"\n textField="text"\n valueField="value"\n >\n </kendo-dropdownlist>\n '}]}],ctorParameters:function(){return[{type:d.LocalizationService},{type:u.ChangeDetectorRef}]},propDecorators:{currentItem:[{type:n.Input}],valueChange:[{type:n.Output}]}});U.prototype.messageFor=function(e){return this.localization.get(e)};var A=U;function U(e){this.localization=e,this.valueChange=new n.EventEmitter}A.ɵfac=u.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:A,deps:[{token:d.LocalizationService}],target:u.ɵɵFactoryTarget.Component}),A.ɵcmp=u.ɵɵngDeclareComponent({minVersion:"12.0.0",version:"12.2.16",type:A,selector:"kendo-filter-date-editor",inputs:{currentItem:"currentItem",isDisabled:"isDisabled"},outputs:{valueChange:"valueChange"},ngImport:u,template:'\n <kendo-datepicker\n [kendoAriaLabelValue]="messageFor(\'filterValueAriaLabel\')"\n [(value)]="currentItem.value"\n (valueChange)="valueChange.emit()"\n [disabled]="isDisabled">\n <kendo-datepicker-messages\n [toggle]="messageFor(\'editorDateToggleText\')"\n [today]="messageFor(\'editorDateTodayText\')">\n </kendo-datepicker-messages>\n </kendo-datepicker>\n ',isInline:!0,components:[{type:m.DatePickerComponent,selector:"kendo-datepicker",inputs:["cellTemplate","monthCellTemplate","yearCellTemplate","decadeCellTemplate","centuryCellTemplate","weekNumberTemplate","headerTitleTemplate","navigationItemTemplate","focusableId","activeView","bottomView","topView","calendarType","animateCalendarNavigation","disabled","readonly","readOnlyInput","popupSettings","navigation","min","max","incompleteDateValidation","focusedDate","value","format","twoDigitYearMax","formatPlaceholder","placeholder","tabindex","tabIndex","disabledDates","title","rangeValidation","disabledDatesValidation","weekNumber","size","rounded","fillMode"],outputs:["valueChange","focus","blur","open","close"],exportAs:["kendo-datepicker"]},{type:m.DatePickerCustomMessagesComponent,selector:"kendo-datepicker-messages"}],directives:[{type:x,selector:"[kendoAriaLabelValue]",inputs:["kendoAriaLabelValue"]}]}),u.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:A,decorators:[{type:n.Component,args:[{selector:"kendo-filter-date-editor",template:'\n <kendo-datepicker\n [kendoAriaLabelValue]="messageFor(\'filterValueAriaLabel\')"\n [(value)]="currentItem.value"\n (valueChange)="valueChange.emit()"\n [disabled]="isDisabled">\n <kendo-datepicker-messages\n [toggle]="messageFor(\'editorDateToggleText\')"\n [today]="messageFor(\'editorDateTodayText\')">\n </kendo-datepicker-messages>\n </kendo-datepicker>\n '}]}],ctorParameters:function(){return[{type:d.LocalizationService}]},propDecorators:{currentItem:[{type:n.Input}],isDisabled:[{type:n.Input}],valueChange:[{type:n.Output}]}});V.prototype.ngOnInit=function(){var e=this,t=(this.isEditorDisabled=0<=k.indexOf(this.currentItem.operator),this.filters=this.filterService.filters,this.getFilterExpressionByField(this.currentItem.field)),r=(this.currentItem.field&&this.setOperators(t),this.getFilterExpressionByField(this.filterService.filters[0].field));this.currentItem.field||(this.currentItem.field=this.filterService.filters[0].field,this.setOperators(r)),this.setEditorTemplate(),this.localizationSubscription=this.localization.changes.subscribe(function(){e.setOperators(t||r),e.cdr.detectChanges()})},V.prototype.ngOnDestroy=function(){this.localizationSubscription&&this.localizationSubscription.unsubscribe()},V.prototype.normalizeOperators=function(e,t){for(var r=[],n=0;n<t.length;n++)0<=["string","number","boolean","date"].indexOf(e)&&r.push({value:t[n],text:this.localization.get(y(P[e],t[n]))});return r},V.prototype.messageFor=function(e){return this.localization.get(e)},V.prototype.getFilterExpressionByField=function(t){var e=this.filterService.filters.find(function(e){return e.field===t});return e||null},V.prototype.filterValueChange=function(e){this.currentItem.value=null,this.currentItem.field=e,this.setEditorTemplate();e=this.getFilterExpressionByField(this.currentItem.field);this.setOperators(e),this.valueChange.emit()},V.prototype.getDefaultOperators=function(e){switch(e){case"string":return b(M)(this.localization);case"number":return b(B)(this.localization);case"date":return b(G)(this.localization)}},V.prototype.getEditorType=function(){var t=this;return this.filterService.filters.find(function(e){return e.field===t.currentItem.field}).editor},V.prototype.removeFilterExpression=function(){this.filterService.remove(this.currentItem,this.index),this.valueChange.emit()},V.prototype.setOperators=function(e){var t,r=this;this.isBoolean="boolean"===e.editor,this.isBoolean||(e.operators?(t=this.normalizeOperators(e.editor,e.operators),this.operators=t):this.operators=this.getDefaultOperators(e.editor),this.currentItem.operator||(this.currentItem.operator=this.operators[0].value),t=!this.operators.find(function(e){return e.value===r.currentItem.operator}),this.currentItem.operator&&t&&(this.currentItem.operator=this.operators[0].value))},V.prototype.onOperatorChange=function(e){this.valueChange.emit(),0<=k.indexOf(e)?(this.currentItem.value=null,this.isEditorDisabled=!0):this.isEditorDisabled=!1},V.prototype.setEditorTemplate=function(){var t=this,e=this.filterService.filters.find(function(e){return e.field===t.currentItem.field});e.editorTemplate&&(this.editorTemplate=e.editorTemplate)};m=V;function V(e,t,r){this.filterService=e,this.localization=t,this.cdr=r,this.valueChange=new n.EventEmitter,this.operators=[],this.filters=[],this.isBoolean=!1,this.isEditorDisabled=!1}m.ɵfac=u.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:m,deps:[{token:v},{token:d.LocalizationService},{token:u.ChangeDetectorRef}],target:u.ɵɵFactoryTarget.Component}),m.ɵcmp=u.ɵɵngDeclareComponent({minVersion:"12.0.0",version:"12.2.16",type:m,selector:"kendo-filter-expression",inputs:{index:"index",currentItem:"currentItem"},outputs:{valueChange:"valueChange"},ngImport:u,template:'\n <div class="k-filter-toolbar" role="group" [attr.aria-label]="messageFor(\'filterAriaLabel\')">\n <div class="k-toolbar">\n <div class="k-filter-toolbar-item k-filter-field">\n <kendo-dropdownlist\n [kendoAriaLabelValue]="messageFor(\'filterFieldAriaLabel\')"\n [title]="messageFor(\'filterExpressionFilters\')"\n [data]="filters"\n textField="title"\n valueField="field"\n [value]="currentItem.field"\n [valuePrimitive]="true"\n (valueChange)="filterValueChange($event)">\n </kendo-dropdownlist>\n </div>\n <div *ngIf="!isBoolean" class="k-filter-toolbar-item k-filter-operator">\n <kendo-filter-expression-operators\n [currentItem]="currentItem"\n [operators]="operators"\n [editorType]="getEditorType()"\n (valueChange)="onOperatorChange($event);">\n </kendo-filter-expression-operators>\n </div>\n\n <div class="k-filter-toolbar-item k-filter-value">\n <ng-container *ngIf="!editorTemplate" [ngSwitch]="getEditorType()">\n <kendo-filter-text-editor *ngSwitchCase="\'string\'" [currentItem]="currentItem" [isDisabled]="isEditorDisabled" (valueChange)="valueChange.emit()"></kendo-filter-text-editor>\n <kendo-filter-numeric-editor *ngSwitchCase="\'number\'" [currentItem]="currentItem" [isDisabled]="isEditorDisabled" (valueChange)="valueChange.emit()"></kendo-filter-numeric-editor>\n <kendo-filter-boolean-editor *ngSwitchCase="\'boolean\'" [currentItem]="currentItem" (valueChange)="valueChange.emit()"></kendo-filter-boolean-editor>\n <kendo-filter-date-editor *ngSwitchCase="\'date\'" [currentItem]="currentItem" [isDisabled]="isEditorDisabled" (valueChange)="valueChange.emit()"></kendo-filter-date-editor>\n </ng-container>\n <ng-container *ngIf="editorTemplate">\n <ng-template\n [templateContext]="{templateRef: editorTemplate, $implicit: currentItem}">\n </ng-template>\n </ng-container>\n </div>\n\n <div class="k-filter-toolbar-item">\n <button\n kendoButton\n icon="close"\n fillMode="flat"\n [title]="messageFor(\'remove\')"\n (click)="removeFilterExpression()">\n </button>\n </div>\n </div>\n </div>\n ',isInline:!0,components:[{type:f.DropDownListComponent,selector:"kendo-dropdownlist",inputs:["iconClass","loading","data","value","textField","valueField","popupSettings","listHeight","defaultItem","disabled","itemDisabled","readonly","filterable","virtual","ignoreCase","delay","valuePrimitive","tabindex","tabIndex","size","rounded","fillMode","id"],outputs:["valueChange","filterChange","selectionChange","open","opened","close","closed","focus","blur"],exportAs:["kendoDropDownList"]},{type:T,selector:"kendo-filter-expression-operators",inputs:["currentItem","editorType","operators"],outputs:["valueChange"]},{type:F,selector:"kendo-filter-text-editor",inputs:["currentItem","isDisabled"],outputs:["valueChange"]},{type:L,selector:"kendo-filter-numeric-editor",inputs:["currentItem","isDisabled"],outputs:["valueChange"]},{type:c,selector:"kendo-filter-boolean-editor",inputs:["currentItem"],outputs:["valueChange"]},{type:A,selector:"kendo-filter-date-editor",inputs:["currentItem","isDisabled"],outputs:["valueChange"]}],directives:[{type:x,selector:"[kendoAriaLabelValue]",inputs:["kendoAriaLabelValue"]},{type:g.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]},{type:g.NgSwitch,selector:"[ngSwitch]",inputs:["ngSwitch"]},{type:g.NgSwitchCase,selector:"[ngSwitchCase]",inputs:["ngSwitchCase"]},{type:h.TemplateContextDirective,selector:"[templateContext]",inputs:["templateContext"]},{type:h.ButtonDirective,selector:"button[kendoButton], span[kendoButton]",inputs:["toggleable","togglable","selected","tabIndex","icon","iconClass","imageUrl","disabled","size","rounded","fillMode","themeColor","role","primary","look"],outputs:["selectedChange","click"],exportAs:["kendoButton"]}]}),u.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:m,decorators:[{type:n.Component,args:[{selector:"kendo-filter-expression",template:'\n <div class="k-filter-toolbar" role="group" [attr.aria-label]="messageFor(\'filterAriaLabel\')">\n <div class="k-toolbar">\n <div class="k-filter-toolbar-item k-filter-field">\n <kendo-dropdownlist\n [kendoAriaLabelValue]="messageFor(\'filterFieldAriaLabel\')"\n [title]="messageFor(\'filterExpressionFilters\')"\n [data]="filters"\n textField="title"\n valueField="field"\n [value]="currentItem.field"\n [valuePrimitive]="true"\n (valueChange)="filterValueChange($event)">\n </kendo-dropdownlist>\n </div>\n <div *ngIf="!isBoolean" class="k-filter-toolbar-item k-filter-operator">\n <kendo-filter-expression-operators\n [currentItem]="currentItem"\n [operators]="operators"\n [editorType]="getEditorType()"\n (valueChange)="onOperatorChange($event);">\n </kendo-filter-expression-operators>\n </div>\n\n <div class="k-filter-toolbar-item k-filter-value">\n <ng-container *ngIf="!editorTemplate" [ngSwitch]="getEditorType()">\n <kendo-filter-text-editor *ngSwitchCase="\'string\'" [currentItem]="currentItem" [isDisabled]="isEditorDisabled" (valueChange)="valueChange.emit()"></kendo-filter-text-editor>\n <kendo-filter-numeric-editor *ngSwitchCase="\'number\'" [currentItem]="currentItem" [isDisabled]="isEditorDisabled" (valueChange)="valueChange.emit()"></kendo-filter-numeric-editor>\n <kendo-filter-boolean-editor *ngSwitchCase="\'boolean\'" [currentItem]="currentItem" (valueChange)="valueChange.emit()"></kendo-filter-boolean-editor>\n <kendo-filter-date-editor *ngSwitchCase="\'date\'" [currentItem]="currentItem" [isDisabled]="isEditorDisabled" (valueChange)="valueChange.emit()"></kendo-filter-date-editor>\n </ng-container>\n <ng-container *ngIf="editorTemplate">\n <ng-template\n [templateContext]="{templateRef: editorTemplate, $implicit: currentItem}">\n </ng-template>\n </ng-container>\n </div>\n\n <div class="k-filter-toolbar-item">\n <button\n kendoButton\n icon="close"\n fillMode="flat"\n [title]="messageFor(\'remove\')"\n (click)="removeFilterExpression()">\n </button>\n </div>\n </div>\n </div>\n '}]}],ctorParameters:function(){return[{type:v},{type:d.LocalizationService},{type:u.ChangeDetectorRef}]},propDecorators:{index:[{type:n.Input}],currentItem:[{type:n.Input}],valueChange:[{type:n.Output}]}});N.prototype.ngOnInit=function(){var e=this;this.operators=this.getLogicOperators(),this.localizationSubscription=this.localization.changes.subscribe(function(){e.operators=e.getLogicOperators(),e.cdr.detectChanges()})},N.prototype.ngOnDestroy=function(){this.localizationSubscription&&this.localizationSubscription.unsubscribe()},N.prototype.getLogicOperators=function(){return b(R)(this.localization)},N.prototype.messageFor=function(e){return this.localization.get(e)},N.prototype.getOperator=function(e){return this.messageFor(y(R,e))},N.prototype.selectedChange=function(e){this.currentItem.logic!==e&&(this.currentItem.logic=e,this.valueChange.emit())},N.prototype.addFilterExpression=function(){this.filterService.addFilterExpression(this.currentItem),this.valueChange.emit()},N.prototype.addFilterGroup=function(){this.filterService.addFilterGroup(this.currentItem),this.valueChange.emit()},N.prototype.removeFilterGroup=function(){this.filterService.remove(this.currentItem,this.index),this.valueChange.emit()};f=N;function N(e,t,r){this.filterService=e,this.localization=t,this.cdr=r,this.index=0,this.currentItem={logic:"or",filters:[]},this.valueChange=new n.EventEmitter,this.operators=[]}f.ɵfac=u.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:f,deps:[{token:v},{token:d.LocalizationService},{token:u.ChangeDetectorRef}],target:u.ɵɵFactoryTarget.Component}),f.ɵcmp=u.ɵɵngDeclareComponent({minVersion:"12.0.0",version:"12.2.16",type:f,selector:"kendo-filter-group",inputs:{index:"index",currentItem:"currentItem"},outputs:{valueChange:"valueChange"},ngImport:u,template:'\n <div class="k-filter-toolbar" role="toolbar" [attr.aria-label]="messageFor(\'filterToolbarAriaLabel\')">\n <div class="k-toolbar">\n <div class="k-filter-toolbar-item">\n <div class="k-widget k-button-group" role="group">\n <button\n *ngFor="let operator of operators"\n kendoButton\n [ngClass]="{\'k-group-start\': operator.value === \'and\', \'k-group-end\': operator.value === \'or\'}"\n [selected]="currentItem.logic === operator.value"\n [title]="operator.text"\n (click)="selectedChange(operator.value)"\n >\n {{getOperator(operator.value)}}\n </button>\n </div>\n </div>\n <div class="k-filter-toolbar-item">\n <button\n kendoButton\n [title]="messageFor(\'addFilter\')"\n icon="filter-add-expression"\n (click)="addFilterExpression()">\n {{messageFor(\'addFilter\')}}\n </button>\n </div>\n <div class="k-filter-toolbar-item">\n <button\n kendoButton\n [title]="messageFor(\'addGroup\')"\n icon="filter-add-group"\n (click)="addFilterGroup()">\n {{messageFor(\'addGroup\')}}\n </button>\n </div>\n <div class="k-filter-toolbar-item">\n <button\n kendoButton\n icon="close"\n fillMode="flat"\n [title]="messageFor(\'remove\')"\n (click)="removeFilterGroup()">\n </button>\n </div>\n </div>\n </div>\n\n <ul class="k-filter-lines" *ngIf="currentItem.filters">\n <ng-container *ngFor="let item of currentItem.filters; let i = index;">\n <li class="k-filter-item" *ngIf="!item[\'filters\']">\n <kendo-filter-expression (valueChange)="valueChange.emit()" [currentItem]="item" [index]="i">\n </kendo-filter-expression>\n </li>\n <li class="k-filter-item" *ngIf="item[\'filters\']">\n <kendo-filter-group\n (valueChange)="valueChange.emit()"\n [currentItem]="item"\n [index]="i"\n >\n </kendo-filter-group>\n </li>\n </ng-container>\n </ul>\n ',isInline:!0,components:[{type:m,selector:"kendo-filter-expression",inputs:["index","currentItem"],outputs:["valueChange"]},{type:f,selector:"kendo-filter-group",inputs:["index","currentItem"],outputs:["valueChange"]}],directives:[{type:g.NgForOf,selector:"[ngFor][ngForOf]",inputs:["ngForOf","ngForTrackBy","ngForTemplate"]},{type:h.ButtonDirective,selector:"button[kendoButton], span[kendoButton]",inputs:["toggleable","togglable","selected","tabIndex","icon","iconClass","imageUrl","disabled","size","rounded","fillMode","themeColor","role","primary","look"],outputs:["selectedChange","click"],exportAs:["kendoButton"]},{type:g.NgClass,selector:"[ngClass]",inputs:["class","ngClass"]},{type:g.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]}]}),u.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:f,decorators:[{type:n.Component,args:[{selector:"kendo-filter-group",template:'\n <div class="k-filter-toolbar" role="toolbar" [attr.aria-label]="messageFor(\'filterToolbarAriaLabel\')">\n <div class="k-toolbar">\n <div class="k-filter-toolbar-item">\n <div class="k-widget k-button-group" role="group">\n <button\n *ngFor="let operator of operators"\n kendoButton\n [ngClass]="{\'k-group-start\': operator.value === \'and\', \'k-group-end\': operator.value === \'or\'}"\n [selected]="currentItem.logic === operator.value"\n [title]="operator.text"\n (click)="selectedChange(operator.value)"\n >\n {{getOperator(operator.value)}}\n </button>\n </div>\n </div>\n <div class="k-filter-toolbar-item">\n <button\n kendoButton\n [title]="messageFor(\'addFilter\')"\n icon="filter-add-expression"\n (click)="addFilterExpression()">\n {{messageFor(\'addFilter\')}}\n </button>\n </div>\n <div class="k-filter-toolbar-item">\n <button\n kendoButton\n [title]="messageFor(\'addGroup\')"\n icon="filter-add-group"\n (click)="addFilterGroup()">\n {{messageFor(\'addGroup\')}}\n </button>\n </div>\n <div class="k-filter-toolbar-item">\n <button\n kendoButton\n icon="close"\n fillMode="flat"\n [title]="messageFor(\'remove\')"\n (click)="removeFilterGroup()">\n </button>\n </div>\n </div>\n </div>\n\n <ul class="k-filter-lines" *ngIf="currentItem.filters">\n <ng-container *ngFor="let item of currentItem.filters; let i = index;">\n <li class="k-filter-item" *ngIf="!item[\'filters\']">\n <kendo-filter-expression (valueChange)="valueChange.emit()" [currentItem]="item" [index]="i">\n </kendo-filter-expression>\n </li>\n <li class="k-filter-item" *ngIf="item[\'filters\']">\n <kendo-filter-group\n (valueChange)="valueChange.emit()"\n [currentItem]="item"\n [index]="i"\n >\n </kendo-filter-group>\n </li>\n </ng-container>\n </ul>\n '}]}],ctorParameters:function(){return[{type:v},{type:d.LocalizationService},{type:u.ChangeDetectorRef}]},propDecorators:{index:[{type:n.Input}],currentItem:[{type:n.Input}],valueChange:[{type:n.Output}]}});var H=function(e,t){return(H=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])})(e,t)};function J(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}H(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}Object.create;function X(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,o,i=r.call(e),a=[];try{for(;(void 0===t||0<t--)&&!(n=i.next()).done;)a.push(n.value)}catch(e){o={error:e}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(o)throw o.error}}return a}function Y(e,t,r){if(r||2===arguments.length)for(var n,o=0,i=t.length;o<i;o++)!n&&o in t||((n=n||Array.prototype.slice.call(t,0,o))[o]=t[o]);return e.concat(n||Array.prototype.slice.call(t))}Object.create;J(Z,Q=t.ComponentMessages);var Q,h=Z;function Z(){return null!==Q&&Q.apply(this,arguments)||this}h.ɵfac=u.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:h,deps:null,target:u.ɵɵFactoryTarget.Directive}),h.ɵdir=u.ɵɵngDeclareDirective({minVersion:"12.0.0",version:"12.2.16",type:h,selector:"[kendoFilterMessages]",inputs:{filterExpressionOperators:"filterExpressionOperators",filterExpressionFilters:"filterExpressionFilters",remove:"remove",addGroup:"addGroup",addFilter:"addFilter",filterAndLogic:"filterAndLogic",filterOrLogic:"filterOrLogic",filterEqOperator:"filterEqOperator",filterNotEqOperator:"filterNotEqOperator",filterIsNullOperator:"filterIsNullOperator",filterIsNotNullOperator:"filterIsNotNullOperator",filterIsEmptyOperator:"filterIsEmptyOperator",filterIsNotEmptyOperator:"filterIsNotEmptyOperator",filterStartsWithOperator:"filterStartsWithOperator",filterContainsOperator:"filterContainsOperator",filterNotContainsOperator:"filterNotContainsOperator",filterEndsWithOperator:"filterEndsWithOperator",filterGteOperator:"filterGteOperator",filterGtOperator:"filterGtOperator",filterLteOperator:"filterLteOperator",filterLtOperator:"filterLtOperator",filterIsTrue:"filterIsTrue",filterIsFalse:"filterIsFalse",filterBooleanAll:"filterBooleanAll",filterAfterOrEqualOperator:"filterAfterOrEqualOperator",filterAfterOperator:"filterAfterOperator",filterBeforeOperator:"filterBeforeOperator",filterBeforeOrEqualOperator:"filterBeforeOrEqualOperator",editorNumericDecrement:"editorNumericDecrement",editorNumericIncrement:"editorNumericIncrement",editorDateTodayText:"editorDateTodayText",editorDateToggleText:"editorDateToggleText",filterFieldAriaLabel:"filterFieldAriaLabel",filterOperatorAriaLabel:"filterOperatorAriaLabel",filterValueAriaLabel:"filterValueAriaLabel",filterAriaLabel:"filterAriaLabel",filterToolbarAriaLabel:"filterToolbarAriaLabel"},usesInheritance:!0,ngImport:u}),u.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:h,decorators:[{type:n.Directive,args:[{selector:"[kendoFilterMessages]"}]}],propDecorators:{filterExpressionOperators:[{type:n.Input}],filterExpressionFilters:[{type:n.Input}],remove:[{type:n.Input}],addGroup:[{type:n.Input}],addFilter:[{type:n.Input}],filterAndLogic:[{type:n.Input}],filterOrLogic:[{type:n.Input}],filterEqOperator:[{type:n.Input}],filterNotEqOperator:[{type:n.Input}],filterIsNullOperator:[{type:n.Input}],filterIsNotNullOperator:[{type:n.Input}],filterIsEmptyOperator:[{type:n.Input}],filterIsNotEmptyOperator:[{type:n.Input}],filterStartsWithOperator:[{type:n.Input}],filterContainsOperator:[{type:n.Input}],filterNotContainsOperator:[{type:n.Input}],filterEndsWithOperator:[{type:n.Input}],filterGteOperator:[{type:n.Input}],filterGtOperator:[{type:n.Input}],filterLteOperator:[{type:n.Input}],filterLtOperator:[{type:n.Input}],filterIsTrue:[{type:n.Input}],filterIsFalse:[{type:n.Input}],filterBooleanAll:[{type:n.Input}],filterAfterOrEqualOperator:[{type:n.Input}],filterAfterOperator:[{type:n.Input}],filterBeforeOperator:[{type:n.Input}],filterBeforeOrEqualOperator:[{type:n.Input}],editorNumericDecrement:[{type:n.Input}],editorNumericIncrement:[{type:n.Input}],editorDateTodayText:[{type:n.Input}],editorDateToggleText:[{type:n.Input}],filterFieldAriaLabel:[{type:n.Input}],filterOperatorAriaLabel:[{type:n.Input}],filterValueAriaLabel:[{type:n.Input}],filterAriaLabel:[{type:n.Input}],filterToolbarAriaLabel:[{type:n.Input}]}});J(te,ee=h);var ee,w=te;function te(e){var t=ee.call(this)||this;return t.service=e,t}w.ɵfac=u.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:w,deps:[{token:d.LocalizationService}],target:u.ɵɵFactoryTarget.Directive}),w.ɵdir=u.ɵɵngDeclareDirective({minVersion:"12.0.0",version:"12.2.16",type:w,selector:"[kendoFilterLocalizedMessages]",providers:[{provide:h,useExisting:n.forwardRef(function(){return w})}],usesInheritance:!0,ngImport:u}),u.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:w,decorators:[{type:n.Directive,args:[{providers:[{provide:h,useExisting:n.forwardRef(function(){return w})}],selector:"[kendoFilterLocalizedMessages]"}]}],ctorParameters:function(){return[{type:d.LocalizationService}]}});Object.defineProperty(S.prototype,"filters",{get:function(){return this.filterService.filters},set:function(e){0<e.length&&(this.filterService.filters=e.map(function(e){e=Object.assign({},e);return e.title||(e.title=e.field),e}),this.setValue(this.value))},enumerable:!1,configurable:!0}),Object.defineProperty(S.prototype,"value",{get:function(){return this._value},set:function(e){e=JSON.parse(JSON.stringify(e));this._value=e,0<this.filters.length&&this.setValue(this.value)},enumerable:!1,configurable:!0}),S.prototype.ngOnInit=function(){var t=this;this.localizationSubscription=this.localization.changes.subscribe(function(e){e=e.rtl;t.direction=e?"rtl":"ltr",t.cdr.detectChanges()})},S.prototype.ngAfterViewChecked=function(){if(this.filterFields&&0<this.filterFields.length&&(this.filters=this.filterFields.map(function(e){return Object.assign(Object.assign({},e),{editorTemplate:null==(e=e.editorTemplate)?void 0:e.templateRef})})),0===this.filters.length)throw new Error("Pass at least one user-defined filter through the [filters] input property or nest kendo-filter-field components. See http://www.telerik.com/kendo-angular-ui/components/filter/#data-binding")},S.prototype.ngOnDestroy=function(){this.localizationSubscription&&this.localizationSubscription.unsubscribe()},S.prototype.getCurrentFilter=function(){return this.filterService.normalizedValue},S.prototype.onValueChange=function(){this.valueChange.emit(this.filterService.normalizedValue)},S.prototype.normalizeFilter=function(t){var e=this.filterService.filters.find(function(e){return e.field===t.field});if(n.isDevMode()&&!e)throw new Error("There is no user-defined filter with '"+t.field+"' field provided through the [filters] input property.");if(n.isDevMode()&&"boolean"===e.editor&&!t.value&&!1!==t.value&&console.warn("Provide a value for the boolean '"+t.field+"' user-defined filter as the operator is always set to 'eq'."),n.isDevMode()&&"boolean"===e.editor&&"eq"!==t.operator&&console.warn("The operator of the boolean '"+t.field+"' user-defined filter is always set to 'eq'."),t.operator&&e.operators&&!e.operators.some(function(e){return e===t.operator}))throw new Error("The user-defined filter with field '"+t.field+"' is missing the '"+t.operator+"' operator.");"boolean"===e.editor&&(t.operator="eq"),"date"===e.editor&&t.value&&(t.value=new Date(t.value)),null==t.value&&(t.value=null),0<=k.indexOf(t.operator)&&(t.value=null)},S.prototype.setValue=function(e){this.normalizeValue(e),this.filterService.normalizedValue=e,this.cdr.detectChanges()},S.prototype.normalizeValue=function(e){var t=this;this.filterService.filters.length&&e.filters.forEach(function(e){e.filters?t.normalizeValue(e):t.normalizeFilter(e)})};g=S;function S(e,t,r){this.filterService=e,this.localization=t,this.cdr=r,this.valueChange=new n.EventEmitter,this._value={filters:[],logic:"and"},z.validatePackage(j),this.direction=t.rtl?"rtl":"ltr"}g.ɵfac=u.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:g,deps:[{token:v},{token:d.LocalizationService},{token:u.ChangeDetectorRef}],target:u.ɵɵFactoryTarget.Component}),g.ɵcmp=u.ɵɵngDeclareComponent({minVersion:"12.0.0",version:"12.2.16",type:g,selector:"kendo-filter",inputs:{filters:"filters",value:"value"},outputs:{valueChange:"valueChange"},host:{properties:{"attr.dir":"this.direction"}},providers:[t.LocalizationService,{provide:t.L10N_PREFIX,useValue:"kendo.filter"},v],queries:[{propertyName:"filterFields",predicate:C}],ngImport:u,template:'\n <ng-container kendoFilterLocalizedMessages\n i18n-editorDateTodayText="kendo.filter.editorDateTodayText|The text of the Today button of the Date editor"\n editorDateTodayText="Today"\n\n i18n-editorDateToggleText="kendo.filter.editorDateToggleText|The title of the Toggle button of the Date editor."\n editorDateToggleText="Toggle calendar"\n\n i18n-editorNumericDecrement="kendo.filter.editorNumericDecrement|The title of the Decrement button of the Numeric editor"\n editorNumericDecrement="Decrement"\n\n i18n-editorNumericIncrement="kendo.filter.editorNumericIncrement|The title of the Increment button of the Numeric editor"\n editorNumericIncrement="Increment"\n\n i18n-filterExpressionOperators="kendo.filter.filterExpressionOperators|The text of the Filter Expression Operators drop down"\n filterExpressionOperators="Operators"\n\n i18n-filterExpressionFilters="kendo.filter.filterExpressionFilters|The text of the Filter Expression filters drop down"\n filterExpressionFilters="Fields"\n\n i18n-remove="kendo.filter.remove|The text of the Remove button"\n remove="Remove"\n\n i18n-addFilter="kendo.filter.addFilter|The text of the Add Filter button"\n addFilter="Add Filter"\n\n i18n-addGroup="kendo.filter.addGroup|The text of the Add Group button"\n addGroup="Add Group"\n\n i18n-filterAndLogic="kendo.filter.filterAndLogic|The text of the And filter logic"\n filterAndLogic="And"\n\n i18n-filterOrLogic="kendo.filter.filterOrLogic|The text of the Or filter logic"\n filterOrLogic="Or"\n\n i18n-filterEqOperator="kendo.filter.filterEqOperator|The text of the equal filter operator"\n filterEqOperator="Is equal to"\n\n i18n-filterNotEqOperator="kendo.filter.filterNotEqOperator|The text of the not equal filter operator"\n filterNotEqOperator="Is not equal to"\n\n i18n-filterIsNullOperator="kendo.filter.filterIsNullOperator|The text of the is null filter operator"\n filterIsNullOperator="Is null"\n\n i18n-filterIsNotNullOperator="kendo.filter.filterIsNotNullOperator|The text of the is not null filter operator"\n filterIsNotNullOperator="Is not null"\n\n i18n-filterIsEmptyOperator="kendo.filter.filterIsEmptyOperator|The text of the is empty filter operator"\n filterIsEmptyOperator="Is empty"\n\n i18n-filterIsNotEmptyOperator="kendo.filter.filterIsNotEmptyOperator|The text of the is not empty filter operator"\n filterIsNotEmptyOperator="Is not empty"\n\n i18n-filterStartsWithOperator="kendo.filter.filterStartsWithOperator|The text of the starts with filter operator"\n filterStartsWithOperator="Starts with"\n\n i18n-filterContainsOperator="kendo.filter.filterContainsOperator|The text of the contains filter operator"\n filterContainsOperator="Contains"\n\n i18n-filterNotContainsOperator="kendo.filter.filterNotContainsOperator|The text of the does not contain filter operator"\n filterNotContainsOperator="Does not contain"\n\n i18n-filterEndsWithOperator="kendo.filter.filterEndsWithOperator|The text of the ends with filter operator"\n filterEndsWithOperator="Ends with"\n\n i18n-filterGteOperator="kendo.filter.filterGteOperator|The text of the greater than or equal filter operator"\n filterGteOperator="Is greater than or equal to"\n\n i18n-filterGtOperator="kendo.filter.filterGtOperator|The text of the greater than filter operator"\n filterGtOperator="Is greater than"\n\n i18n-filterLteOperator="kendo.filter.filterLteOperator|The text of the less than or equal filter operator"\n filterLteOperator="Is less than or equal to"\n\n i18n-filterLtOperator="kendo.filter.filterLtOperator|The text of the less than filter operator"\n filterLtOperator="Is less than"\n\n i18n-filterIsTrue="kendo.filter.filterIsTrue|The text of the IsTrue boolean filter option"\n filterIsTrue="Is True"\n\n i18n-filterIsFalse="kendo.filter.filterIsFalse|The text of the IsFalse boolean filter option"\n filterIsFalse="Is False"\n\n i18n-filterBooleanAll="kendo.filter.filterBooleanAll|The text of the (All) boolean filter option"\n filterBooleanAll="(All)"\n\n i18n-filterAfterOrEqualOperator="kendo.filter.filterAfterOrEqualOperator|The text of the after or equal date filter operator"\n filterAfterOrEqualOperator="Is after or equal to"\n\n i18n-filterAfterOperator="kendo.filter.filterAfterOperator|The text of the after date filter operator"\n filterAfterOperator="Is after"\n\n i18n-filterBeforeOperator="kendo.filter.filterBeforeOperator|The text of the before date filter operator"\n filterBeforeOperator="Is before"\n\n i18n-filterBeforeOrEqualOperator="kendo.filter.filterBeforeOrEqualOperator|The text of the before or equal date filter operator"\n filterBeforeOrEqualOperator="Is before or equal to"\n\n i18n-filterFieldAriaLabel="kendo.filter.filterFieldAriaLabel|The text of the filter field aria label"\n filterFieldAriaLabel="field"\n\n i18n-filterOperatorAriaLabel="kendo.filter.filterOperatorAriaLabel|The text of the filter operator aria label"\n filterOperatorAriaLabel="operator"\n\n i18n-filterValueAriaLabel="kendo.filter.filterValueAriaLabel|The text of the filter value aria label"\n filterValueAriaLabel="value"\n\n i18n-filterAriaLabel="kendo.filter.filterAriaLabel|The text of the filter row aria label"\n filterAriaLabel="filter"\n\n i18n-filterToolbarAriaLabel="kendo.filter.filterToolbarAriaLabel|The text of the filter toolbar aria label"\n filterToolbarAriaLabel="filter settings"\n >\n </ng-container>\n <div class="k-widget k-filter" [attr.dir]="direction">\n <ul class=\'k-filter-container\'>\n <li class=\'k-filter-group-main\'>\n <kendo-filter-group\n [currentItem]="getCurrentFilter()"\n (valueChange)="onValueChange()"\n >\n </kendo-filter-group>\n </li>\n </ul>\n </div>\n ',isInline:!0,components:[{type:f,selector:"kendo-filter-group",inputs:["index","currentItem"],outputs:["valueChange"]}],directives:[{type:w,selector:"[kendoFilterLocalizedMessages]"}]}),u.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:g,decorators:[{type:n.Component,args:[{providers:[t.LocalizationService,{provide:t.L10N_PREFIX,useValue:"kendo.filter"},v],selector:"kendo-filter",template:'\n <ng-container kendoFilterLocalizedMessages\n i18n-editorDateTodayText="kendo.filter.editorDateTodayText|The text of the Today button of the Date editor"\n editorDateTodayText="Today"\n\n i18n-editorDateToggleText="kendo.filter.editorDateToggleText|The title of the Toggle button of the Date editor."\n editorDateToggleText="Toggle calendar"\n\n i18n-editorNumericDecrement="kendo.filter.editorNumericDecrement|The title of the Decrement button of the Numeric editor"\n editorNumericDecrement="Decrement"\n\n i18n-editorNumericIncrement="kendo.filter.editorNumericIncrement|The title of the Increment button of the Numeric editor"\n editorNumericIncrement="Increment"\n\n i18n-filterExpressionOperators="kendo.filter.filterExpressionOperators|The text of the Filter Expression Operators drop down"\n filterExpressionOperators="Operators"\n\n i18n-filterExpressionFilters="kendo.filter.filterExpressionFilters|The text of the Filter Expression filters drop down"\n filterExpressionFilters="Fields"\n\n i18n-remove="kendo.filter.remove|The text of the Remove button"\n remove="Remove"\n\n i18n-addFilter="kendo.filter.addFilter|The text of the Add Filter button"\n addFilter="Add Filter"\n\n i18n-addGroup="kendo.filter.addGroup|The text of the Add Group button"\n addGroup="Add Group"\n\n i18n-filterAndLogic="kendo.filter.filterAndLogic|The text of the And filter logic"\n filterAndLogic="And"\n\n i18n-filterOrLogic="kendo.filter.filterOrLogic|The text of the Or filter logic"\n filterOrLogic="Or"\n\n i18n-filterEqOperator="kendo.filter.filterEqOperator|The text of the equal filter operator"\n filterEqOperator="Is equal to"\n\n i18n-filterNotEqOperator="kendo.filter.filterNotEqOperator|The text of the not equal filter operator"\n filterNotEqOperator="Is not equal to"\n\n i18n-filterIsNullOperator="kendo.filter.filterIsNullOperator|The text of the is null filter operator"\n filterIsNullOperator="Is null"\n\n i18n-filterIsNotNullOperator="kendo.filter.filterIsNotNullOperator|The text of the is not null filter operator"\n filterIsNotNullOperator="Is not null"\n\n i18n-filterIsEmptyOperator="kendo.filter.filterIsEmptyOperator|The text of the is empty filter operator"\n filterIsEmptyOperator="Is empty"\n\n i18n-filterIsNotEmptyOperator="kendo.filter.filterIsNotEmptyOperator|The text of the is not empty filter operator"\n filterIsNotEmptyOperator="Is not empty"\n\n i18n-filterStartsWithOperator="kendo.filter.filterStartsWithOperator|The text of the starts with filter operator"\n filterStartsWithOperator="Starts with"\n\n i18n-filterContainsOperator="kendo.filter.filterContainsOperator|The text of the contains filter operator"\n filterContainsOperator="Contains"\n\n i18n-filterNotContainsOperator="kendo.filter.filterNotContainsOperator|The text of the does not contain filter operator"\n filterNotContainsOperator="Does not contain"\n\n i18n-filterEndsWithOperator="kendo.filter.filterEndsWithOperator|The text of the ends with filter operator"\n filterEndsWithOperator="Ends with"\n\n i18n-filterGteOperator="kendo.filter.filterGteOperator|The text of the greater than or equal filter operator"\n filterGteOperator="Is greater than or equal to"\n\n i18n-filterGtOperator="kendo.filter.filterGtOperator|The text of the greater than filter operator"\n filterGtOperator="Is greater than"\n\n i18n-filterLteOperator="kendo.filter.filterLteOperator|The text of the less than or equal filter operator"\n filterLteOperator="Is less than or equal to"\n\n i18n-filterLtOperator="kendo.filter.filterLtOperator|The text of the less than filter operator"\n filterLtOperator="Is less than"\n\n i18n-filterIsTrue="kendo.filter.filterIsTrue|The text of the IsTrue boolean filter option"\n filterIsTrue="Is True"\n\n i18n-filterIsFalse="kendo.filter.filterIsFalse|The text of the IsFalse boolean filter option"\n filterIsFalse="Is False"\n\n i18n-filterBooleanAll="kendo.filter.filterBooleanAll|The text of the (All) boolean filter option"\n filterBooleanAll="(All)"\n\n i18n-filterAfterOrEqualOperator="kendo.filter.filterAfterOrEqualOperator|The text of the after or equal date filter operator"\n filterAfterOrEqualOperator="Is after or equal to"\n\n i18n-filterAfterOperator="kendo.filter.filterAfterOperator|The text of the after date filter operator"\n filterAfterOperator="Is after"\n\n i18n-filterBeforeOperator="kendo.filter.filterBeforeOperator|The text of the before date filter operator"\n filterBeforeOperator="Is before"\n\n i18n-filterBeforeOrEqualOperator="kendo.filter.filterBeforeOrEqualOperator|The text of the before or equal date filter operator"\n filterBeforeOrEqualOperator="Is before or equal to"\n\n i18n-filterFieldAriaLabel="kendo.filter.filterFieldAriaLabel|The text of the filter field aria label"\n filterFieldAriaLabel="field"\n\n i18n-filterOperatorAriaLabel="kendo.filter.filterOperatorAriaLabel|The text of the filter operator aria label"\n filterOperatorAriaLabel="operator"\n\n i18n-filterValueAriaLabel="kendo.filter.filterValueAriaLabel|The text of the filter value aria label"\n filterValueAriaLabel="value"\n\n i18n-filterAriaLabel="kendo.filter.filterAriaLabel|The text of the filter row aria label"\n filterAriaLabel="filter"\n\n i18n-filterToolbarAriaLabel="kendo.filter.filterToolbarAriaLabel|The text of the filter toolbar aria label"\n filterToolbarAriaLabel="filter settings"\n >\n </ng-container>\n <div class="k-widget k-filter" [attr.dir]="direction">\n <ul class=\'k-filter-container\'>\n <li class=\'k-filter-group-main\'>\n <kendo-filter-group\n [currentItem]="getCurrentFilter()"\n (valueChange)="onValueChange()"\n >\n </kendo-filter-group>\n </li>\n </ul>\n </div>\n '}]}],ctorParameters:function(){return[{type:v},{type:d.LocalizationService},{type:u.ChangeDetectorRef}]},propDecorators:{direction:[{type:n.HostBinding,args:["attr.dir"]}],filters:[{type:n.Input}],value:[{type:n.Input}],valueChange:[{type:n.Output}],filterFields:[{type:n.ContentChildren,args:[C]}]}});J(ne,re=h),Object.defineProperty(ne.prototype,"override",{get:function(){return!0},enumerable:!1,configurable:!0});var re,q=ne;function ne(e){var t=re.call(this)||this;return t.service=e,t}q.ɵfac=u.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:q,deps:[{token:d.LocalizationService}],target:u.ɵɵFactoryTarget.Component}),q.ɵcmp=u.ɵɵngDeclareComponent({minVersion:"12.0.0",version:"12.2.16",type:q,selector:"kendo-filter-messages",providers:[{provide:h,useExisting:n.forwardRef(function(){return q})}],usesInheritance:!0,ngImport:u,template:"",isInline:!0}),u.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:q,decorators:[{type:n.Component,args:[{providers:[{provide:h,useExisting:n.forwardRef(function(){return q})}],selector:"kendo-filter-messages",template:""}]}],ctorParameters:function(){return[{type:d.LocalizationService}]}});t=[a.CommonModule,o.InputsModule,s.LabelModule,r.DropDownsModule,l.ButtonsModule,i.DateInputsModule],h=function(){},h.ɵfac=u.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:h,deps:[],target:u.ɵɵFactoryTarget.NgModule}),h.ɵmod=u.ɵɵngDeclareNgModule({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:h,imports:[a.CommonModule,o.InputsModule,s.LabelModule,r.DropDownsModule,l.ButtonsModule,i.DateInputsModule],exports:[a.CommonModule,o.InputsModule,s.LabelModule,r.DropDownsModule,l.ButtonsModule,i.DateInputsModule]}),h.ɵinj=u.ɵɵngDeclareInjector({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:h,imports:[Y([],X(t)),a.CommonModule,o.InputsModule,s.LabelModule,r.DropDownsModule,l.ButtonsModule,i.DateInputsModule]}),u.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:h,decorators:[{type:n.NgModule,args:[{imports:Y([],X(t)),exports:Y([],X(t))}]}]}),a=function(){};a.ɵfac=u.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:a,deps:[],target:u.ɵɵFactoryTarget.NgModule}),a.ɵmod=u.ɵɵngDeclareNgModule({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:a,declarations:[g,L,F,m,f,T,c,A,w,q,x,C,O],imports:[h],exports:[g,L,F,m,f,T,c,A,w,q,x,C,O]}),a.ɵinj=u.ɵɵngDeclareInjector({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:a,imports:[[h]]}),u.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:u,type:a,decorators:[{type:n.NgModule,args:[{imports:[h],declarations:[g,L,F,m,f,T,c,A,w,q,x,C,O],exports:[g,L,F,m,f,T,c,A,w,q,x,C,O]}]}]}),e.AriaLabelValueDirective=x,e.CustomMessagesComponent=q,e.FilterBooleanEditorComponent=c,e.FilterComponent=g,e.FilterDateEditorComponent=A,e.FilterExpressionComponent=m,e.FilterExpressionOperatorsComponent=T,e.FilterFieldComponent=C,e.FilterGroupComponent=f,e.FilterModule=a,e.FilterNumericEditorComponent=L,e.FilterTextEditorComponent=F,e.FilterValueEditorTemplateDirective=O,e.LocalizedMessagesDirective=w,Object.defineProperty(e,"__esModule",{value:!0})});
@@ -47,7 +47,6 @@ FilterBooleanEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0
47
47
  FilterBooleanEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FilterBooleanEditorComponent, selector: "kendo-filter-boolean-editor", inputs: { currentItem: "currentItem" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: `
48
48
  <kendo-dropdownlist
49
49
  [kendoAriaLabelValue]="messageFor('filterValueAriaLabel')"
50
- class="k-filter-toolbar-item k-filter-value"
51
50
  [(value)]="currentItem.value"
52
51
  (valueChange)="valueChange.emit()"
53
52
  [data]="items"
@@ -65,7 +64,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
65
64
  template: `
66
65
  <kendo-dropdownlist
67
66
  [kendoAriaLabelValue]="messageFor('filterValueAriaLabel')"
68
- class="k-filter-toolbar-item k-filter-value"
69
67
  [(value)]="currentItem.value"
70
68
  (valueChange)="valueChange.emit()"
71
69
  [data]="items"
@@ -23,7 +23,6 @@ FilterDateEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0"
23
23
  FilterDateEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FilterDateEditorComponent, selector: "kendo-filter-date-editor", inputs: { currentItem: "currentItem", isDisabled: "isDisabled" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: `
24
24
  <kendo-datepicker
25
25
  [kendoAriaLabelValue]="messageFor('filterValueAriaLabel')"
26
- class="k-filter-toolbar-item k-filter-value"
27
26
  [(value)]="currentItem.value"
28
27
  (valueChange)="valueChange.emit()"
29
28
  [disabled]="isDisabled">
@@ -40,7 +39,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
40
39
  template: `
41
40
  <kendo-datepicker
42
41
  [kendoAriaLabelValue]="messageFor('filterValueAriaLabel')"
43
- class="k-filter-toolbar-item k-filter-value"
44
42
  [(value)]="currentItem.value"
45
43
  (valueChange)="valueChange.emit()"
46
44
  [disabled]="isDisabled">
@@ -23,7 +23,6 @@ FilterNumericEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0
23
23
  FilterNumericEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FilterNumericEditorComponent, selector: "kendo-filter-numeric-editor", inputs: { currentItem: "currentItem", isDisabled: "isDisabled" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: `
24
24
  <kendo-numerictextbox
25
25
  [kendoAriaLabelValue]="messageFor('filterValueAriaLabel')"
26
- class="k-filter-toolbar-item k-filter-value"
27
26
  [(value)]="currentItem.value"
28
27
  (valueChange)="valueChange.emit()"
29
28
  [disabled]="isDisabled">
@@ -40,7 +39,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
40
39
  template: `
41
40
  <kendo-numerictextbox
42
41
  [kendoAriaLabelValue]="messageFor('filterValueAriaLabel')"
43
- class="k-filter-toolbar-item k-filter-value"
44
42
  [(value)]="currentItem.value"
45
43
  (valueChange)="valueChange.emit()"
46
44
  [disabled]="isDisabled">
@@ -23,7 +23,6 @@ FilterTextEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0"
23
23
  FilterTextEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FilterTextEditorComponent, selector: "kendo-filter-text-editor", inputs: { currentItem: "currentItem", isDisabled: "isDisabled" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: `
24
24
  <kendo-textbox
25
25
  [kendoAriaLabelValue]="messageFor('filterValueAriaLabel')"
26
- class="k-filter-toolbar-item k-filter-value"
27
26
  [(value)]="currentItem.value"
28
27
  (valueChange)="valueChange.emit()"
29
28
  [disabled]="isDisabled">
@@ -36,7 +35,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
36
35
  template: `
37
36
  <kendo-textbox
38
37
  [kendoAriaLabelValue]="messageFor('filterValueAriaLabel')"
39
- class="k-filter-toolbar-item k-filter-value"
40
38
  [(value)]="currentItem.value"
41
39
  (valueChange)="valueChange.emit()"
42
40
  [disabled]="isDisabled">
@@ -42,6 +42,7 @@ export class FilterExpressionComponent {
42
42
  this.currentItem.field = this.filterService.filters[0].field;
43
43
  this.setOperators(defaultFilter);
44
44
  }
45
+ this.setEditorTemplate();
45
46
  this.localizationSubscription = this.localization.changes.subscribe(() => {
46
47
  this.setOperators(foundFilter || defaultFilter);
47
48
  this.cdr.detectChanges();
@@ -77,6 +78,7 @@ export class FilterExpressionComponent {
77
78
  filterValueChange(value) {
78
79
  this.currentItem.value = null;
79
80
  this.currentItem.field = value;
81
+ this.setEditorTemplate();
80
82
  const foundFilter = this.getFilterExpressionByField(this.currentItem.field);
81
83
  this.setOperators(foundFilter);
82
84
  this.valueChange.emit();
@@ -109,15 +111,16 @@ export class FilterExpressionComponent {
109
111
  if (filter.operators) {
110
112
  const localizedOperators = this.normalizeOperators(filter.editor, filter.operators);
111
113
  this.operators = localizedOperators;
112
- if (!this.currentItem.operator) {
113
- this.currentItem.operator = localizedOperators[0].value;
114
- }
115
114
  }
116
115
  else {
117
116
  this.operators = this.getDefaultOperators(filter.editor);
118
- if (!this.currentItem.operator) {
119
- this.currentItem.operator = this.operators[0].value;
120
- }
117
+ }
118
+ if (!this.currentItem.operator) {
119
+ this.currentItem.operator = this.operators[0].value;
120
+ }
121
+ const operatorDoesNotExist = !this.operators.find(operator => operator.value === this.currentItem.operator);
122
+ if (this.currentItem.operator && operatorDoesNotExist) {
123
+ this.currentItem.operator = this.operators[0].value;
121
124
  }
122
125
  }
123
126
  onOperatorChange(value) {
@@ -130,6 +133,12 @@ export class FilterExpressionComponent {
130
133
  this.isEditorDisabled = false;
131
134
  }
132
135
  }
136
+ setEditorTemplate() {
137
+ let filterExpression = this.filterService.filters.find((filter) => filter.field === this.currentItem.field);
138
+ if (filterExpression.editorTemplate) {
139
+ this.editorTemplate = filterExpression.editorTemplate;
140
+ }
141
+ }
133
142
  }
134
143
  FilterExpressionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FilterExpressionComponent, deps: [{ token: i1.FilterService }, { token: i2.LocalizationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
135
144
  FilterExpressionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FilterExpressionComponent, selector: "kendo-filter-expression", inputs: { index: "index", currentItem: "currentItem" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: `
@@ -156,12 +165,19 @@ FilterExpressionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.
156
165
  </kendo-filter-expression-operators>
157
166
  </div>
158
167
 
159
- <ng-container [ngSwitch]="getEditorType()">
160
- <kendo-filter-text-editor *ngSwitchCase="'string'" [currentItem]="currentItem" [isDisabled]="isEditorDisabled" (valueChange)="valueChange.emit()"></kendo-filter-text-editor>
161
- <kendo-filter-numeric-editor *ngSwitchCase="'number'" [currentItem]="currentItem" [isDisabled]="isEditorDisabled" (valueChange)="valueChange.emit()"></kendo-filter-numeric-editor>
162
- <kendo-filter-boolean-editor *ngSwitchCase="'boolean'" [currentItem]="currentItem" (valueChange)="valueChange.emit()"></kendo-filter-boolean-editor>
163
- <kendo-filter-date-editor *ngSwitchCase="'date'" [currentItem]="currentItem" [isDisabled]="isEditorDisabled" (valueChange)="valueChange.emit()"></kendo-filter-date-editor>
164
- </ng-container>
168
+ <div class="k-filter-toolbar-item k-filter-value">
169
+ <ng-container *ngIf="!editorTemplate" [ngSwitch]="getEditorType()">
170
+ <kendo-filter-text-editor *ngSwitchCase="'string'" [currentItem]="currentItem" [isDisabled]="isEditorDisabled" (valueChange)="valueChange.emit()"></kendo-filter-text-editor>
171
+ <kendo-filter-numeric-editor *ngSwitchCase="'number'" [currentItem]="currentItem" [isDisabled]="isEditorDisabled" (valueChange)="valueChange.emit()"></kendo-filter-numeric-editor>
172
+ <kendo-filter-boolean-editor *ngSwitchCase="'boolean'" [currentItem]="currentItem" (valueChange)="valueChange.emit()"></kendo-filter-boolean-editor>
173
+ <kendo-filter-date-editor *ngSwitchCase="'date'" [currentItem]="currentItem" [isDisabled]="isEditorDisabled" (valueChange)="valueChange.emit()"></kendo-filter-date-editor>
174
+ </ng-container>
175
+ <ng-container *ngIf="editorTemplate">
176
+ <ng-template
177
+ [templateContext]="{templateRef: editorTemplate, $implicit: currentItem}">
178
+ </ng-template>
179
+ </ng-container>
180
+ </div>
165
181
 
166
182
  <div class="k-filter-toolbar-item">
167
183
  <button
@@ -174,7 +190,7 @@ FilterExpressionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.
174
190
  </div>
175
191
  </div>
176
192
  </div>
177
- `, isInline: true, components: [{ type: i3.DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["iconClass", "loading", "data", "value", "textField", "valueField", "popupSettings", "listHeight", "defaultItem", "disabled", "itemDisabled", "readonly", "filterable", "virtual", "ignoreCase", "delay", "valuePrimitive", "tabindex", "tabIndex", "size", "rounded", "fillMode", "id"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }, { type: i4.FilterExpressionOperatorsComponent, selector: "kendo-filter-expression-operators", inputs: ["currentItem", "editorType", "operators"], outputs: ["valueChange"] }, { type: i5.FilterTextEditorComponent, selector: "kendo-filter-text-editor", inputs: ["currentItem", "isDisabled"], outputs: ["valueChange"] }, { type: i6.FilterNumericEditorComponent, selector: "kendo-filter-numeric-editor", inputs: ["currentItem", "isDisabled"], outputs: ["valueChange"] }, { type: i7.FilterBooleanEditorComponent, selector: "kendo-filter-boolean-editor", inputs: ["currentItem"], outputs: ["valueChange"] }, { type: i8.FilterDateEditorComponent, selector: "kendo-filter-date-editor", inputs: ["currentItem", "isDisabled"], outputs: ["valueChange"] }], directives: [{ type: i9.AriaLabelValueDirective, selector: "[kendoAriaLabelValue]", inputs: ["kendoAriaLabelValue"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i10.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i11.ButtonDirective, selector: "button[kendoButton], span[kendoButton]", inputs: ["toggleable", "togglable", "selected", "tabIndex", "icon", "iconClass", "imageUrl", "disabled", "size", "rounded", "fillMode", "themeColor", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }] });
193
+ `, isInline: true, components: [{ type: i3.DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["iconClass", "loading", "data", "value", "textField", "valueField", "popupSettings", "listHeight", "defaultItem", "disabled", "itemDisabled", "readonly", "filterable", "virtual", "ignoreCase", "delay", "valuePrimitive", "tabindex", "tabIndex", "size", "rounded", "fillMode", "id"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }, { type: i4.FilterExpressionOperatorsComponent, selector: "kendo-filter-expression-operators", inputs: ["currentItem", "editorType", "operators"], outputs: ["valueChange"] }, { type: i5.FilterTextEditorComponent, selector: "kendo-filter-text-editor", inputs: ["currentItem", "isDisabled"], outputs: ["valueChange"] }, { type: i6.FilterNumericEditorComponent, selector: "kendo-filter-numeric-editor", inputs: ["currentItem", "isDisabled"], outputs: ["valueChange"] }, { type: i7.FilterBooleanEditorComponent, selector: "kendo-filter-boolean-editor", inputs: ["currentItem"], outputs: ["valueChange"] }, { type: i8.FilterDateEditorComponent, selector: "kendo-filter-date-editor", inputs: ["currentItem", "isDisabled"], outputs: ["valueChange"] }], directives: [{ type: i9.AriaLabelValueDirective, selector: "[kendoAriaLabelValue]", inputs: ["kendoAriaLabelValue"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i10.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i11.TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { type: i11.ButtonDirective, selector: "button[kendoButton], span[kendoButton]", inputs: ["toggleable", "togglable", "selected", "tabIndex", "icon", "iconClass", "imageUrl", "disabled", "size", "rounded", "fillMode", "themeColor", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }] });
178
194
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FilterExpressionComponent, decorators: [{
179
195
  type: Component,
180
196
  args: [{
@@ -203,12 +219,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
203
219
  </kendo-filter-expression-operators>
204
220
  </div>
205
221
 
206
- <ng-container [ngSwitch]="getEditorType()">
207
- <kendo-filter-text-editor *ngSwitchCase="'string'" [currentItem]="currentItem" [isDisabled]="isEditorDisabled" (valueChange)="valueChange.emit()"></kendo-filter-text-editor>
208
- <kendo-filter-numeric-editor *ngSwitchCase="'number'" [currentItem]="currentItem" [isDisabled]="isEditorDisabled" (valueChange)="valueChange.emit()"></kendo-filter-numeric-editor>
209
- <kendo-filter-boolean-editor *ngSwitchCase="'boolean'" [currentItem]="currentItem" (valueChange)="valueChange.emit()"></kendo-filter-boolean-editor>
210
- <kendo-filter-date-editor *ngSwitchCase="'date'" [currentItem]="currentItem" [isDisabled]="isEditorDisabled" (valueChange)="valueChange.emit()"></kendo-filter-date-editor>
211
- </ng-container>
222
+ <div class="k-filter-toolbar-item k-filter-value">
223
+ <ng-container *ngIf="!editorTemplate" [ngSwitch]="getEditorType()">
224
+ <kendo-filter-text-editor *ngSwitchCase="'string'" [currentItem]="currentItem" [isDisabled]="isEditorDisabled" (valueChange)="valueChange.emit()"></kendo-filter-text-editor>
225
+ <kendo-filter-numeric-editor *ngSwitchCase="'number'" [currentItem]="currentItem" [isDisabled]="isEditorDisabled" (valueChange)="valueChange.emit()"></kendo-filter-numeric-editor>
226
+ <kendo-filter-boolean-editor *ngSwitchCase="'boolean'" [currentItem]="currentItem" (valueChange)="valueChange.emit()"></kendo-filter-boolean-editor>
227
+ <kendo-filter-date-editor *ngSwitchCase="'date'" [currentItem]="currentItem" [isDisabled]="isEditorDisabled" (valueChange)="valueChange.emit()"></kendo-filter-date-editor>
228
+ </ng-container>
229
+ <ng-container *ngIf="editorTemplate">
230
+ <ng-template
231
+ [templateContext]="{templateRef: editorTemplate, $implicit: currentItem}">
232
+ </ng-template>
233
+ </ng-container>
234
+ </div>
212
235
 
213
236
  <div class="k-filter-toolbar-item">
214
237
  <button
@@ -2,7 +2,9 @@
2
2
  * Copyright © 2021 Progress Software Corporation. All rights reserved.
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
+ import { ContentChild } from '@angular/core';
5
6
  import { Component, Input } from '@angular/core';
7
+ import { FilterValueEditorTemplateDirective } from './templates/value-editor.template';
6
8
  import * as i0 from "@angular/core";
7
9
  /**
8
10
  * Represents the [Kendo UI Filter Field component for Angular]({% slug api_filter_filterfieldcomponent %}).
@@ -45,7 +47,7 @@ export class FilterFieldComponent {
45
47
  }
46
48
  }
47
49
  FilterFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FilterFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
48
- FilterFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FilterFieldComponent, selector: "kendo-filter-field", inputs: { field: "field", title: "title", editor: "editor", operators: "operators" }, ngImport: i0, template: ``, isInline: true });
50
+ FilterFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FilterFieldComponent, selector: "kendo-filter-field", inputs: { field: "field", title: "title", editor: "editor", operators: "operators" }, queries: [{ propertyName: "editorTemplate", first: true, predicate: FilterValueEditorTemplateDirective, descendants: true }], ngImport: i0, template: ``, isInline: true });
49
51
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FilterFieldComponent, decorators: [{
50
52
  type: Component,
51
53
  args: [{
@@ -60,4 +62,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
60
62
  type: Input
61
63
  }], operators: [{
62
64
  type: Input
65
+ }], editorTemplate: [{
66
+ type: ContentChild,
67
+ args: [FilterValueEditorTemplateDirective]
63
68
  }] } });
@@ -99,7 +99,10 @@ export class FilterComponent {
99
99
  }
100
100
  ngAfterViewChecked() {
101
101
  if (this.filterFields && this.filterFields.length > 0) {
102
- this.filters = this.filterFields.map((filterField) => filterField);
102
+ this.filters = this.filterFields.map((filterField) => {
103
+ var _a;
104
+ return (Object.assign(Object.assign({}, filterField), { editorTemplate: (_a = filterField.editorTemplate) === null || _a === void 0 ? void 0 : _a.templateRef }));
105
+ });
103
106
  }
104
107
  if (this.filters.length === 0) {
105
108
  throw new Error(`Pass at least one user-defined filter through the [filters] input property or nest kendo-filter-field components. See http://www.telerik.com/kendo-angular-ui/components/filter/#data-binding`);
@@ -130,6 +133,9 @@ export class FilterComponent {
130
133
  if (isDevMode() && foundFilter.editor === 'boolean' && (!filterDescriptor.value && filterDescriptor.value !== false)) {
131
134
  console.warn(`Provide a value for the boolean '${filterDescriptor.field}' user-defined filter as the operator is always set to 'eq'.`);
132
135
  }
136
+ if (isDevMode() && foundFilter.editor === 'boolean' && filterDescriptor.operator !== 'eq') {
137
+ console.warn(`The operator of the boolean '${filterDescriptor.field}' user-defined filter is always set to 'eq'.`);
138
+ }
133
139
  if (filterDescriptor.operator && foundFilter.operators && !foundFilter.operators.some(operator => operator === filterDescriptor.operator)) {
134
140
  throw new Error(`The user-defined filter with field '${filterDescriptor.field}' is missing the '${filterDescriptor.operator}' operator.`);
135
141
  }
@@ -149,6 +155,7 @@ export class FilterComponent {
149
155
  setValue(items) {
150
156
  this.normalizeValue(items);
151
157
  this.filterService.normalizedValue = items;
158
+ this.cdr.detectChanges();
152
159
  }
153
160
  normalizeValue(items) {
154
161
  if (!this.filterService.filters.length) {
@@ -16,6 +16,7 @@ import { FilterComponent } from './filter.component';
16
16
  import { CustomMessagesComponent } from './localization/custom-messages.component';
17
17
  import { LocalizedMessagesDirective } from './localization/localized-messages.directive';
18
18
  import { SharedModule } from './shared.module';
19
+ import { FilterValueEditorTemplateDirective } from './templates/value-editor.template';
19
20
  import * as i0 from "@angular/core";
20
21
  /**
21
22
  * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})
@@ -62,7 +63,8 @@ FilterModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "
62
63
  LocalizedMessagesDirective,
63
64
  CustomMessagesComponent,
64
65
  AriaLabelValueDirective,
65
- FilterFieldComponent], imports: [SharedModule], exports: [FilterComponent,
66
+ FilterFieldComponent,
67
+ FilterValueEditorTemplateDirective], imports: [SharedModule], exports: [FilterComponent,
66
68
  FilterNumericEditorComponent,
67
69
  FilterTextEditorComponent,
68
70
  FilterExpressionComponent,
@@ -73,7 +75,8 @@ FilterModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "
73
75
  LocalizedMessagesDirective,
74
76
  CustomMessagesComponent,
75
77
  AriaLabelValueDirective,
76
- FilterFieldComponent] });
78
+ FilterFieldComponent,
79
+ FilterValueEditorTemplateDirective] });
77
80
  FilterModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FilterModule, imports: [[SharedModule]] });
78
81
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FilterModule, decorators: [{
79
82
  type: NgModule,
@@ -90,7 +93,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
90
93
  LocalizedMessagesDirective,
91
94
  CustomMessagesComponent,
92
95
  AriaLabelValueDirective,
93
- FilterFieldComponent
96
+ FilterFieldComponent,
97
+ FilterValueEditorTemplateDirective
94
98
  ],
95
99
  exports: [FilterComponent,
96
100
  FilterNumericEditorComponent,
@@ -103,6 +107,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
103
107
  LocalizedMessagesDirective,
104
108
  CustomMessagesComponent,
105
109
  AriaLabelValueDirective,
106
- FilterFieldComponent]
110
+ FilterFieldComponent,
111
+ FilterValueEditorTemplateDirective]
107
112
  }]
108
113
  }] });
package/esm2015/main.js CHANGED
@@ -15,3 +15,4 @@ export { FilterExpressionComponent } from './filter-expression.component';
15
15
  export { CustomMessagesComponent } from './localization/custom-messages.component';
16
16
  export { LocalizedMessagesDirective } from './localization/localized-messages.directive';
17
17
  export { FilterFieldComponent } from './filter-field.component';
18
+ export { FilterValueEditorTemplateDirective } from './templates/value-editor.template';
@@ -9,7 +9,7 @@ export const packageMetadata = {
9
9
  name: '@progress/kendo-angular-filter',
10
10
  productName: 'Kendo UI for Angular',
11
11
  productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
12
- publishDate: 1654698725,
12
+ publishDate: 1655876723,
13
13
  version: '',
14
14
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'
15
15
  };
@@ -0,0 +1,19 @@
1
+ /**-----------------------------------------------------------------------------------------
2
+ * Copyright © 2021 Progress Software Corporation. All rights reserved.
3
+ * Licensed under commercial license. See LICENSE.md in the project root for more information
4
+ *-------------------------------------------------------------------------------------------*/
5
+ import { Directive } from '@angular/core';
6
+ import * as i0 from "@angular/core";
7
+ export class FilterValueEditorTemplateDirective {
8
+ constructor(templateRef) {
9
+ this.templateRef = templateRef;
10
+ }
11
+ }
12
+ FilterValueEditorTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FilterValueEditorTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
13
+ FilterValueEditorTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: FilterValueEditorTemplateDirective, selector: "[kendoFilterValueEditorTemplate]", ngImport: i0 });
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FilterValueEditorTemplateDirective, decorators: [{
15
+ type: Directive,
16
+ args: [{
17
+ selector: '[kendoFilterValueEditorTemplate]'
18
+ }]
19
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });
@@ -3,7 +3,7 @@
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  import * as i0 from '@angular/core';
6
- import { Injectable, Component, Input, Directive, EventEmitter, Output, forwardRef, isDevMode, HostBinding, ContentChildren, NgModule } from '@angular/core';
6
+ import { Injectable, Directive, Component, Input, ContentChild, EventEmitter, Output, forwardRef, isDevMode, HostBinding, ContentChildren, NgModule } from '@angular/core';
7
7
  import * as i1 from '@progress/kendo-angular-l10n';
8
8
  import { ComponentMessages, LocalizationService, L10N_PREFIX } from '@progress/kendo-angular-l10n';
9
9
  import { validatePackage } from '@progress/kendo-licensing';
@@ -201,11 +201,25 @@ const packageMetadata = {
201
201
  name: '@progress/kendo-angular-filter',
202
202
  productName: 'Kendo UI for Angular',
203
203
  productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
204
- publishDate: 1654698725,
204
+ publishDate: 1655876723,
205
205
  version: '',
206
206
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'
207
207
  };
208
208
 
209
+ class FilterValueEditorTemplateDirective {
210
+ constructor(templateRef) {
211
+ this.templateRef = templateRef;
212
+ }
213
+ }
214
+ FilterValueEditorTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FilterValueEditorTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
215
+ FilterValueEditorTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: FilterValueEditorTemplateDirective, selector: "[kendoFilterValueEditorTemplate]", ngImport: i0 });
216
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FilterValueEditorTemplateDirective, decorators: [{
217
+ type: Directive,
218
+ args: [{
219
+ selector: '[kendoFilterValueEditorTemplate]'
220
+ }]
221
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });
222
+
209
223
  /**
210
224
  * Represents the [Kendo UI Filter Field component for Angular]({% slug api_filter_filterfieldcomponent %}).
211
225
  * The Filter Field component can be used to add Filter Expressions declaratively.
@@ -247,7 +261,7 @@ class FilterFieldComponent {
247
261
  }
248
262
  }
249
263
  FilterFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FilterFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
250
- FilterFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FilterFieldComponent, selector: "kendo-filter-field", inputs: { field: "field", title: "title", editor: "editor", operators: "operators" }, ngImport: i0, template: ``, isInline: true });
264
+ FilterFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FilterFieldComponent, selector: "kendo-filter-field", inputs: { field: "field", title: "title", editor: "editor", operators: "operators" }, queries: [{ propertyName: "editorTemplate", first: true, predicate: FilterValueEditorTemplateDirective, descendants: true }], ngImport: i0, template: ``, isInline: true });
251
265
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FilterFieldComponent, decorators: [{
252
266
  type: Component,
253
267
  args: [{
@@ -262,6 +276,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
262
276
  type: Input
263
277
  }], operators: [{
264
278
  type: Input
279
+ }], editorTemplate: [{
280
+ type: ContentChild,
281
+ args: [FilterValueEditorTemplateDirective]
265
282
  }] } });
266
283
 
267
284
  /**
@@ -376,7 +393,6 @@ FilterTextEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0"
376
393
  FilterTextEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FilterTextEditorComponent, selector: "kendo-filter-text-editor", inputs: { currentItem: "currentItem", isDisabled: "isDisabled" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: `
377
394
  <kendo-textbox
378
395
  [kendoAriaLabelValue]="messageFor('filterValueAriaLabel')"
379
- class="k-filter-toolbar-item k-filter-value"
380
396
  [(value)]="currentItem.value"
381
397
  (valueChange)="valueChange.emit()"
382
398
  [disabled]="isDisabled">
@@ -389,7 +405,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
389
405
  template: `
390
406
  <kendo-textbox
391
407
  [kendoAriaLabelValue]="messageFor('filterValueAriaLabel')"
392
- class="k-filter-toolbar-item k-filter-value"
393
408
  [(value)]="currentItem.value"
394
409
  (valueChange)="valueChange.emit()"
395
410
  [disabled]="isDisabled">
@@ -420,7 +435,6 @@ FilterNumericEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0
420
435
  FilterNumericEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FilterNumericEditorComponent, selector: "kendo-filter-numeric-editor", inputs: { currentItem: "currentItem", isDisabled: "isDisabled" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: `
421
436
  <kendo-numerictextbox
422
437
  [kendoAriaLabelValue]="messageFor('filterValueAriaLabel')"
423
- class="k-filter-toolbar-item k-filter-value"
424
438
  [(value)]="currentItem.value"
425
439
  (valueChange)="valueChange.emit()"
426
440
  [disabled]="isDisabled">
@@ -437,7 +451,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
437
451
  template: `
438
452
  <kendo-numerictextbox
439
453
  [kendoAriaLabelValue]="messageFor('filterValueAriaLabel')"
440
- class="k-filter-toolbar-item k-filter-value"
441
454
  [(value)]="currentItem.value"
442
455
  (valueChange)="valueChange.emit()"
443
456
  [disabled]="isDisabled">
@@ -496,7 +509,6 @@ FilterBooleanEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0
496
509
  FilterBooleanEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FilterBooleanEditorComponent, selector: "kendo-filter-boolean-editor", inputs: { currentItem: "currentItem" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: `
497
510
  <kendo-dropdownlist
498
511
  [kendoAriaLabelValue]="messageFor('filterValueAriaLabel')"
499
- class="k-filter-toolbar-item k-filter-value"
500
512
  [(value)]="currentItem.value"
501
513
  (valueChange)="valueChange.emit()"
502
514
  [data]="items"
@@ -514,7 +526,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
514
526
  template: `
515
527
  <kendo-dropdownlist
516
528
  [kendoAriaLabelValue]="messageFor('filterValueAriaLabel')"
517
- class="k-filter-toolbar-item k-filter-value"
518
529
  [(value)]="currentItem.value"
519
530
  (valueChange)="valueChange.emit()"
520
531
  [data]="items"
@@ -548,7 +559,6 @@ FilterDateEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0"
548
559
  FilterDateEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FilterDateEditorComponent, selector: "kendo-filter-date-editor", inputs: { currentItem: "currentItem", isDisabled: "isDisabled" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: `
549
560
  <kendo-datepicker
550
561
  [kendoAriaLabelValue]="messageFor('filterValueAriaLabel')"
551
- class="k-filter-toolbar-item k-filter-value"
552
562
  [(value)]="currentItem.value"
553
563
  (valueChange)="valueChange.emit()"
554
564
  [disabled]="isDisabled">
@@ -565,7 +575,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
565
575
  template: `
566
576
  <kendo-datepicker
567
577
  [kendoAriaLabelValue]="messageFor('filterValueAriaLabel')"
568
- class="k-filter-toolbar-item k-filter-value"
569
578
  [(value)]="currentItem.value"
570
579
  (valueChange)="valueChange.emit()"
571
580
  [disabled]="isDisabled">
@@ -610,6 +619,7 @@ class FilterExpressionComponent {
610
619
  this.currentItem.field = this.filterService.filters[0].field;
611
620
  this.setOperators(defaultFilter);
612
621
  }
622
+ this.setEditorTemplate();
613
623
  this.localizationSubscription = this.localization.changes.subscribe(() => {
614
624
  this.setOperators(foundFilter || defaultFilter);
615
625
  this.cdr.detectChanges();
@@ -645,6 +655,7 @@ class FilterExpressionComponent {
645
655
  filterValueChange(value) {
646
656
  this.currentItem.value = null;
647
657
  this.currentItem.field = value;
658
+ this.setEditorTemplate();
648
659
  const foundFilter = this.getFilterExpressionByField(this.currentItem.field);
649
660
  this.setOperators(foundFilter);
650
661
  this.valueChange.emit();
@@ -677,15 +688,16 @@ class FilterExpressionComponent {
677
688
  if (filter.operators) {
678
689
  const localizedOperators = this.normalizeOperators(filter.editor, filter.operators);
679
690
  this.operators = localizedOperators;
680
- if (!this.currentItem.operator) {
681
- this.currentItem.operator = localizedOperators[0].value;
682
- }
683
691
  }
684
692
  else {
685
693
  this.operators = this.getDefaultOperators(filter.editor);
686
- if (!this.currentItem.operator) {
687
- this.currentItem.operator = this.operators[0].value;
688
- }
694
+ }
695
+ if (!this.currentItem.operator) {
696
+ this.currentItem.operator = this.operators[0].value;
697
+ }
698
+ const operatorDoesNotExist = !this.operators.find(operator => operator.value === this.currentItem.operator);
699
+ if (this.currentItem.operator && operatorDoesNotExist) {
700
+ this.currentItem.operator = this.operators[0].value;
689
701
  }
690
702
  }
691
703
  onOperatorChange(value) {
@@ -698,6 +710,12 @@ class FilterExpressionComponent {
698
710
  this.isEditorDisabled = false;
699
711
  }
700
712
  }
713
+ setEditorTemplate() {
714
+ let filterExpression = this.filterService.filters.find((filter) => filter.field === this.currentItem.field);
715
+ if (filterExpression.editorTemplate) {
716
+ this.editorTemplate = filterExpression.editorTemplate;
717
+ }
718
+ }
701
719
  }
702
720
  FilterExpressionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FilterExpressionComponent, deps: [{ token: FilterService }, { token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
703
721
  FilterExpressionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FilterExpressionComponent, selector: "kendo-filter-expression", inputs: { index: "index", currentItem: "currentItem" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: `
@@ -724,12 +742,19 @@ FilterExpressionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.
724
742
  </kendo-filter-expression-operators>
725
743
  </div>
726
744
 
727
- <ng-container [ngSwitch]="getEditorType()">
728
- <kendo-filter-text-editor *ngSwitchCase="'string'" [currentItem]="currentItem" [isDisabled]="isEditorDisabled" (valueChange)="valueChange.emit()"></kendo-filter-text-editor>
729
- <kendo-filter-numeric-editor *ngSwitchCase="'number'" [currentItem]="currentItem" [isDisabled]="isEditorDisabled" (valueChange)="valueChange.emit()"></kendo-filter-numeric-editor>
730
- <kendo-filter-boolean-editor *ngSwitchCase="'boolean'" [currentItem]="currentItem" (valueChange)="valueChange.emit()"></kendo-filter-boolean-editor>
731
- <kendo-filter-date-editor *ngSwitchCase="'date'" [currentItem]="currentItem" [isDisabled]="isEditorDisabled" (valueChange)="valueChange.emit()"></kendo-filter-date-editor>
732
- </ng-container>
745
+ <div class="k-filter-toolbar-item k-filter-value">
746
+ <ng-container *ngIf="!editorTemplate" [ngSwitch]="getEditorType()">
747
+ <kendo-filter-text-editor *ngSwitchCase="'string'" [currentItem]="currentItem" [isDisabled]="isEditorDisabled" (valueChange)="valueChange.emit()"></kendo-filter-text-editor>
748
+ <kendo-filter-numeric-editor *ngSwitchCase="'number'" [currentItem]="currentItem" [isDisabled]="isEditorDisabled" (valueChange)="valueChange.emit()"></kendo-filter-numeric-editor>
749
+ <kendo-filter-boolean-editor *ngSwitchCase="'boolean'" [currentItem]="currentItem" (valueChange)="valueChange.emit()"></kendo-filter-boolean-editor>
750
+ <kendo-filter-date-editor *ngSwitchCase="'date'" [currentItem]="currentItem" [isDisabled]="isEditorDisabled" (valueChange)="valueChange.emit()"></kendo-filter-date-editor>
751
+ </ng-container>
752
+ <ng-container *ngIf="editorTemplate">
753
+ <ng-template
754
+ [templateContext]="{templateRef: editorTemplate, $implicit: currentItem}">
755
+ </ng-template>
756
+ </ng-container>
757
+ </div>
733
758
 
734
759
  <div class="k-filter-toolbar-item">
735
760
  <button
@@ -742,7 +767,7 @@ FilterExpressionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.
742
767
  </div>
743
768
  </div>
744
769
  </div>
745
- `, isInline: true, components: [{ type: i2.DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["iconClass", "loading", "data", "value", "textField", "valueField", "popupSettings", "listHeight", "defaultItem", "disabled", "itemDisabled", "readonly", "filterable", "virtual", "ignoreCase", "delay", "valuePrimitive", "tabindex", "tabIndex", "size", "rounded", "fillMode", "id"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }, { type: FilterExpressionOperatorsComponent, selector: "kendo-filter-expression-operators", inputs: ["currentItem", "editorType", "operators"], outputs: ["valueChange"] }, { type: FilterTextEditorComponent, selector: "kendo-filter-text-editor", inputs: ["currentItem", "isDisabled"], outputs: ["valueChange"] }, { type: FilterNumericEditorComponent, selector: "kendo-filter-numeric-editor", inputs: ["currentItem", "isDisabled"], outputs: ["valueChange"] }, { type: FilterBooleanEditorComponent, selector: "kendo-filter-boolean-editor", inputs: ["currentItem"], outputs: ["valueChange"] }, { type: FilterDateEditorComponent, selector: "kendo-filter-date-editor", inputs: ["currentItem", "isDisabled"], outputs: ["valueChange"] }], directives: [{ type: AriaLabelValueDirective, selector: "[kendoAriaLabelValue]", inputs: ["kendoAriaLabelValue"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i10.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i11.ButtonDirective, selector: "button[kendoButton], span[kendoButton]", inputs: ["toggleable", "togglable", "selected", "tabIndex", "icon", "iconClass", "imageUrl", "disabled", "size", "rounded", "fillMode", "themeColor", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }] });
770
+ `, isInline: true, components: [{ type: i2.DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["iconClass", "loading", "data", "value", "textField", "valueField", "popupSettings", "listHeight", "defaultItem", "disabled", "itemDisabled", "readonly", "filterable", "virtual", "ignoreCase", "delay", "valuePrimitive", "tabindex", "tabIndex", "size", "rounded", "fillMode", "id"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }, { type: FilterExpressionOperatorsComponent, selector: "kendo-filter-expression-operators", inputs: ["currentItem", "editorType", "operators"], outputs: ["valueChange"] }, { type: FilterTextEditorComponent, selector: "kendo-filter-text-editor", inputs: ["currentItem", "isDisabled"], outputs: ["valueChange"] }, { type: FilterNumericEditorComponent, selector: "kendo-filter-numeric-editor", inputs: ["currentItem", "isDisabled"], outputs: ["valueChange"] }, { type: FilterBooleanEditorComponent, selector: "kendo-filter-boolean-editor", inputs: ["currentItem"], outputs: ["valueChange"] }, { type: FilterDateEditorComponent, selector: "kendo-filter-date-editor", inputs: ["currentItem", "isDisabled"], outputs: ["valueChange"] }], directives: [{ type: AriaLabelValueDirective, selector: "[kendoAriaLabelValue]", inputs: ["kendoAriaLabelValue"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i10.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i11.TemplateContextDirective, selector: "[templateContext]", inputs: ["templateContext"] }, { type: i11.ButtonDirective, selector: "button[kendoButton], span[kendoButton]", inputs: ["toggleable", "togglable", "selected", "tabIndex", "icon", "iconClass", "imageUrl", "disabled", "size", "rounded", "fillMode", "themeColor", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }] });
746
771
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FilterExpressionComponent, decorators: [{
747
772
  type: Component,
748
773
  args: [{
@@ -771,12 +796,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
771
796
  </kendo-filter-expression-operators>
772
797
  </div>
773
798
 
774
- <ng-container [ngSwitch]="getEditorType()">
775
- <kendo-filter-text-editor *ngSwitchCase="'string'" [currentItem]="currentItem" [isDisabled]="isEditorDisabled" (valueChange)="valueChange.emit()"></kendo-filter-text-editor>
776
- <kendo-filter-numeric-editor *ngSwitchCase="'number'" [currentItem]="currentItem" [isDisabled]="isEditorDisabled" (valueChange)="valueChange.emit()"></kendo-filter-numeric-editor>
777
- <kendo-filter-boolean-editor *ngSwitchCase="'boolean'" [currentItem]="currentItem" (valueChange)="valueChange.emit()"></kendo-filter-boolean-editor>
778
- <kendo-filter-date-editor *ngSwitchCase="'date'" [currentItem]="currentItem" [isDisabled]="isEditorDisabled" (valueChange)="valueChange.emit()"></kendo-filter-date-editor>
779
- </ng-container>
799
+ <div class="k-filter-toolbar-item k-filter-value">
800
+ <ng-container *ngIf="!editorTemplate" [ngSwitch]="getEditorType()">
801
+ <kendo-filter-text-editor *ngSwitchCase="'string'" [currentItem]="currentItem" [isDisabled]="isEditorDisabled" (valueChange)="valueChange.emit()"></kendo-filter-text-editor>
802
+ <kendo-filter-numeric-editor *ngSwitchCase="'number'" [currentItem]="currentItem" [isDisabled]="isEditorDisabled" (valueChange)="valueChange.emit()"></kendo-filter-numeric-editor>
803
+ <kendo-filter-boolean-editor *ngSwitchCase="'boolean'" [currentItem]="currentItem" (valueChange)="valueChange.emit()"></kendo-filter-boolean-editor>
804
+ <kendo-filter-date-editor *ngSwitchCase="'date'" [currentItem]="currentItem" [isDisabled]="isEditorDisabled" (valueChange)="valueChange.emit()"></kendo-filter-date-editor>
805
+ </ng-container>
806
+ <ng-container *ngIf="editorTemplate">
807
+ <ng-template
808
+ [templateContext]="{templateRef: editorTemplate, $implicit: currentItem}">
809
+ </ng-template>
810
+ </ng-container>
811
+ </div>
780
812
 
781
813
  <div class="k-filter-toolbar-item">
782
814
  <button
@@ -1199,7 +1231,10 @@ class FilterComponent {
1199
1231
  }
1200
1232
  ngAfterViewChecked() {
1201
1233
  if (this.filterFields && this.filterFields.length > 0) {
1202
- this.filters = this.filterFields.map((filterField) => filterField);
1234
+ this.filters = this.filterFields.map((filterField) => {
1235
+ var _a;
1236
+ return (Object.assign(Object.assign({}, filterField), { editorTemplate: (_a = filterField.editorTemplate) === null || _a === void 0 ? void 0 : _a.templateRef }));
1237
+ });
1203
1238
  }
1204
1239
  if (this.filters.length === 0) {
1205
1240
  throw new Error(`Pass at least one user-defined filter through the [filters] input property or nest kendo-filter-field components. See http://www.telerik.com/kendo-angular-ui/components/filter/#data-binding`);
@@ -1230,6 +1265,9 @@ class FilterComponent {
1230
1265
  if (isDevMode() && foundFilter.editor === 'boolean' && (!filterDescriptor.value && filterDescriptor.value !== false)) {
1231
1266
  console.warn(`Provide a value for the boolean '${filterDescriptor.field}' user-defined filter as the operator is always set to 'eq'.`);
1232
1267
  }
1268
+ if (isDevMode() && foundFilter.editor === 'boolean' && filterDescriptor.operator !== 'eq') {
1269
+ console.warn(`The operator of the boolean '${filterDescriptor.field}' user-defined filter is always set to 'eq'.`);
1270
+ }
1233
1271
  if (filterDescriptor.operator && foundFilter.operators && !foundFilter.operators.some(operator => operator === filterDescriptor.operator)) {
1234
1272
  throw new Error(`The user-defined filter with field '${filterDescriptor.field}' is missing the '${filterDescriptor.operator}' operator.`);
1235
1273
  }
@@ -1249,6 +1287,7 @@ class FilterComponent {
1249
1287
  setValue(items) {
1250
1288
  this.normalizeValue(items);
1251
1289
  this.filterService.normalizedValue = items;
1290
+ this.cdr.detectChanges();
1252
1291
  }
1253
1292
  normalizeValue(items) {
1254
1293
  if (!this.filterService.filters.length) {
@@ -1669,7 +1708,8 @@ FilterModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "
1669
1708
  LocalizedMessagesDirective,
1670
1709
  CustomMessagesComponent,
1671
1710
  AriaLabelValueDirective,
1672
- FilterFieldComponent], imports: [SharedModule], exports: [FilterComponent,
1711
+ FilterFieldComponent,
1712
+ FilterValueEditorTemplateDirective], imports: [SharedModule], exports: [FilterComponent,
1673
1713
  FilterNumericEditorComponent,
1674
1714
  FilterTextEditorComponent,
1675
1715
  FilterExpressionComponent,
@@ -1680,7 +1720,8 @@ FilterModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "
1680
1720
  LocalizedMessagesDirective,
1681
1721
  CustomMessagesComponent,
1682
1722
  AriaLabelValueDirective,
1683
- FilterFieldComponent] });
1723
+ FilterFieldComponent,
1724
+ FilterValueEditorTemplateDirective] });
1684
1725
  FilterModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FilterModule, imports: [[SharedModule]] });
1685
1726
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FilterModule, decorators: [{
1686
1727
  type: NgModule,
@@ -1697,7 +1738,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
1697
1738
  LocalizedMessagesDirective,
1698
1739
  CustomMessagesComponent,
1699
1740
  AriaLabelValueDirective,
1700
- FilterFieldComponent
1741
+ FilterFieldComponent,
1742
+ FilterValueEditorTemplateDirective
1701
1743
  ],
1702
1744
  exports: [FilterComponent,
1703
1745
  FilterNumericEditorComponent,
@@ -1710,7 +1752,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
1710
1752
  LocalizedMessagesDirective,
1711
1753
  CustomMessagesComponent,
1712
1754
  AriaLabelValueDirective,
1713
- FilterFieldComponent]
1755
+ FilterFieldComponent,
1756
+ FilterValueEditorTemplateDirective]
1714
1757
  }]
1715
1758
  }] });
1716
1759
 
@@ -1718,5 +1761,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
1718
1761
  * Generated bundle index. Do not edit.
1719
1762
  */
1720
1763
 
1721
- export { AriaLabelValueDirective, CustomMessagesComponent, FilterBooleanEditorComponent, FilterComponent, FilterDateEditorComponent, FilterExpressionComponent, FilterExpressionOperatorsComponent, FilterFieldComponent, FilterGroupComponent, FilterModule, FilterNumericEditorComponent, FilterTextEditorComponent, LocalizedMessagesDirective };
1764
+ export { AriaLabelValueDirective, CustomMessagesComponent, FilterBooleanEditorComponent, FilterComponent, FilterDateEditorComponent, FilterExpressionComponent, FilterExpressionOperatorsComponent, FilterFieldComponent, FilterGroupComponent, FilterModule, FilterNumericEditorComponent, FilterTextEditorComponent, FilterValueEditorTemplateDirective, LocalizedMessagesDirective };
1722
1765
 
@@ -2,7 +2,7 @@
2
2
  * Copyright © 2021 Progress Software Corporation. All rights reserved.
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
- import { ChangeDetectorRef, EventEmitter, OnDestroy, OnInit } from '@angular/core';
5
+ import { ChangeDetectorRef, EventEmitter, OnDestroy, OnInit, TemplateRef } from '@angular/core';
6
6
  import { LocalizationService } from '@progress/kendo-angular-l10n';
7
7
  import { CompositeFilterDescriptor } from '@progress/kendo-data-query';
8
8
  import { FilterDescriptor } from '@progress/kendo-data-query';
@@ -25,6 +25,7 @@ export declare class FilterExpressionComponent implements OnInit, OnDestroy {
25
25
  isBoolean: boolean;
26
26
  editorType: FilterEditor;
27
27
  isEditorDisabled: boolean;
28
+ editorTemplate: TemplateRef<any>;
28
29
  private localizationSubscription;
29
30
  constructor(filterService: FilterService, localization: LocalizationService, cdr: ChangeDetectorRef);
30
31
  ngOnInit(): void;
@@ -44,6 +45,7 @@ export declare class FilterExpressionComponent implements OnInit, OnDestroy {
44
45
  removeFilterExpression(): void;
45
46
  private setOperators;
46
47
  onOperatorChange(value: string): void;
48
+ setEditorTemplate(): void;
47
49
  static ɵfac: i0.ɵɵFactoryDeclaration<FilterExpressionComponent, never>;
48
50
  static ɵcmp: i0.ɵɵComponentDeclaration<FilterExpressionComponent, "kendo-filter-expression", never, { "index": "index"; "currentItem": "currentItem"; }, { "valueChange": "valueChange"; }, never, never>;
49
51
  }
@@ -3,6 +3,7 @@
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  import { FilterEditor, FilterOperator } from './model/filter-expression';
6
+ import { FilterValueEditorTemplateDirective } from './templates/value-editor.template';
6
7
  import * as i0 from "@angular/core";
7
8
  /**
8
9
  * Represents the [Kendo UI Filter Field component for Angular]({% slug api_filter_filterfieldcomponent %}).
@@ -72,7 +73,11 @@ export declare class FilterFieldComponent {
72
73
  *
73
74
  * The boolean operator is always set to `eq`
74
75
  */
75
- operators?: FilterOperator[];
76
+ operators: FilterOperator[];
77
+ /**
78
+ * @hidden
79
+ */
80
+ editorTemplate: FilterValueEditorTemplateDirective;
76
81
  static ɵfac: i0.ɵɵFactoryDeclaration<FilterFieldComponent, never>;
77
- static ɵcmp: i0.ɵɵComponentDeclaration<FilterFieldComponent, "kendo-filter-field", never, { "field": "field"; "title": "title"; "editor": "editor"; "operators": "operators"; }, {}, never, never>;
82
+ static ɵcmp: i0.ɵɵComponentDeclaration<FilterFieldComponent, "kendo-filter-field", never, { "field": "field"; "title": "title"; "editor": "editor"; "operators": "operators"; }, {}, ["editorTemplate"], never>;
78
83
  }
@@ -15,7 +15,8 @@ import * as i9 from "./localization/localized-messages.directive";
15
15
  import * as i10 from "./localization/custom-messages.component";
16
16
  import * as i11 from "./aria-label.directive";
17
17
  import * as i12 from "./filter-field.component";
18
- import * as i13 from "./shared.module";
18
+ import * as i13 from "./templates/value-editor.template";
19
+ import * as i14 from "./shared.module";
19
20
  /**
20
21
  * Represents the [NgModule]({{ site.data.urls.angular['ngmoduleapi'] }})
21
22
  * definition for the Filter component.
@@ -49,6 +50,6 @@ import * as i13 from "./shared.module";
49
50
  */
50
51
  export declare class FilterModule {
51
52
  static ɵfac: i0.ɵɵFactoryDeclaration<FilterModule, never>;
52
- static ɵmod: i0.ɵɵNgModuleDeclaration<FilterModule, [typeof i1.FilterComponent, typeof i2.FilterNumericEditorComponent, typeof i3.FilterTextEditorComponent, typeof i4.FilterExpressionComponent, typeof i5.FilterGroupComponent, typeof i6.FilterExpressionOperatorsComponent, typeof i7.FilterBooleanEditorComponent, typeof i8.FilterDateEditorComponent, typeof i9.LocalizedMessagesDirective, typeof i10.CustomMessagesComponent, typeof i11.AriaLabelValueDirective, typeof i12.FilterFieldComponent], [typeof i13.SharedModule], [typeof i1.FilterComponent, typeof i2.FilterNumericEditorComponent, typeof i3.FilterTextEditorComponent, typeof i4.FilterExpressionComponent, typeof i5.FilterGroupComponent, typeof i6.FilterExpressionOperatorsComponent, typeof i7.FilterBooleanEditorComponent, typeof i8.FilterDateEditorComponent, typeof i9.LocalizedMessagesDirective, typeof i10.CustomMessagesComponent, typeof i11.AriaLabelValueDirective, typeof i12.FilterFieldComponent]>;
53
+ static ɵmod: i0.ɵɵNgModuleDeclaration<FilterModule, [typeof i1.FilterComponent, typeof i2.FilterNumericEditorComponent, typeof i3.FilterTextEditorComponent, typeof i4.FilterExpressionComponent, typeof i5.FilterGroupComponent, typeof i6.FilterExpressionOperatorsComponent, typeof i7.FilterBooleanEditorComponent, typeof i8.FilterDateEditorComponent, typeof i9.LocalizedMessagesDirective, typeof i10.CustomMessagesComponent, typeof i11.AriaLabelValueDirective, typeof i12.FilterFieldComponent, typeof i13.FilterValueEditorTemplateDirective], [typeof i14.SharedModule], [typeof i1.FilterComponent, typeof i2.FilterNumericEditorComponent, typeof i3.FilterTextEditorComponent, typeof i4.FilterExpressionComponent, typeof i5.FilterGroupComponent, typeof i6.FilterExpressionOperatorsComponent, typeof i7.FilterBooleanEditorComponent, typeof i8.FilterDateEditorComponent, typeof i9.LocalizedMessagesDirective, typeof i10.CustomMessagesComponent, typeof i11.AriaLabelValueDirective, typeof i12.FilterFieldComponent, typeof i13.FilterValueEditorTemplateDirective]>;
53
54
  static ɵinj: i0.ɵɵInjectorDeclaration<FilterModule>;
54
55
  }
package/main.d.ts CHANGED
@@ -16,3 +16,4 @@ export { FilterExpressionComponent } from './filter-expression.component';
16
16
  export { CustomMessagesComponent } from './localization/custom-messages.component';
17
17
  export { LocalizedMessagesDirective } from './localization/localized-messages.directive';
18
18
  export { FilterFieldComponent } from './filter-field.component';
19
+ export { FilterValueEditorTemplateDirective } from './templates/value-editor.template';
@@ -5,6 +5,7 @@
5
5
  /**
6
6
  * Represents the FilterOperator type.
7
7
  */
8
+ import { TemplateRef } from '@angular/core';
8
9
  export declare type FilterOperator = 'eq' | 'neq' | 'gt' | 'gte' | 'lt' | 'lte' | 'isnull' | 'isnotnull' | 'contains' | 'doesnotcontain' | 'startswith' | 'endswidth' | 'isempty' | 'isnotempty';
9
10
  /**
10
11
  * Represents the FilterEditor type.
@@ -57,4 +58,8 @@ export interface FilterExpression {
57
58
  * The boolean operator is always set to `eq`
58
59
  */
59
60
  operators?: FilterOperator[];
61
+ /**
62
+ * Specifies a template for the expression value editor input.
63
+ */
64
+ editorTemplate?: TemplateRef<any>;
60
65
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@progress/kendo-angular-filter",
3
- "version": "2.1.0-dev.202206081432",
3
+ "version": "2.1.1-dev.202206220545",
4
4
  "description": "Kendo UI Angular Filter",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "author": "Progress",
@@ -0,0 +1,12 @@
1
+ /**-----------------------------------------------------------------------------------------
2
+ * Copyright © 2021 Progress Software Corporation. All rights reserved.
3
+ * Licensed under commercial license. See LICENSE.md in the project root for more information
4
+ *-------------------------------------------------------------------------------------------*/
5
+ import { TemplateRef } from '@angular/core';
6
+ import * as i0 from "@angular/core";
7
+ export declare class FilterValueEditorTemplateDirective {
8
+ templateRef: TemplateRef<any>;
9
+ constructor(templateRef: TemplateRef<any>);
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<FilterValueEditorTemplateDirective, never>;
11
+ static ɵdir: i0.ɵɵDirectiveDeclaration<FilterValueEditorTemplateDirective, "[kendoFilterValueEditorTemplate]", never, {}, {}, never>;
12
+ }