@progress/kendo-angular-filter 2.0.1-dev.202205171237 → 2.0.1-dev.202205191247

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.
@@ -5,39 +5,30 @@
5
5
  import { Component, EventEmitter, Input, Output } from '@angular/core';
6
6
  import * as i0 from "@angular/core";
7
7
  import * as i1 from "@progress/kendo-angular-l10n";
8
- import * as i2 from "../filter.service";
9
- import * as i3 from "@progress/kendo-angular-inputs";
10
- import * as i4 from "../aria-label.directive";
8
+ import * as i2 from "@progress/kendo-angular-inputs";
9
+ import * as i3 from "../aria-label.directive";
11
10
  /**
12
11
  * @hidden
13
12
  */
14
13
  export class FilterTextEditorComponent {
15
- constructor(localization, filterService) {
14
+ constructor(localization) {
16
15
  this.localization = localization;
17
- this.filterService = filterService;
18
16
  this.valueChange = new EventEmitter();
19
17
  }
20
- isDisabled() {
21
- const isDisabled = this.filterService.isEditorDisabled;
22
- if (isDisabled) {
23
- this.currentItem.value = null;
24
- }
25
- return isDisabled;
26
- }
27
18
  messageFor(key) {
28
19
  return this.localization.get(key);
29
20
  }
30
21
  }
31
- FilterTextEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FilterTextEditorComponent, deps: [{ token: i1.LocalizationService }, { token: i2.FilterService }], target: i0.ɵɵFactoryTarget.Component });
32
- FilterTextEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FilterTextEditorComponent, selector: "kendo-filter-text-editor", inputs: { currentItem: "currentItem" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: `
22
+ FilterTextEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FilterTextEditorComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
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: `
33
24
  <kendo-textbox
34
25
  [kendoAriaLabelValue]="messageFor('filterValueAriaLabel')"
35
26
  class="k-filter-toolbar-item k-filter-value"
36
27
  [(value)]="currentItem.value"
37
28
  (valueChange)="valueChange.emit()"
38
- [disabled]="isDisabled()">
29
+ [disabled]="isDisabled">
39
30
  </kendo-textbox>
40
- `, isInline: true, components: [{ type: i3.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: i4.AriaLabelValueDirective, selector: "[kendoAriaLabelValue]", inputs: ["kendoAriaLabelValue"] }] });
31
+ `, isInline: true, components: [{ type: i2.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: i3.AriaLabelValueDirective, selector: "[kendoAriaLabelValue]", inputs: ["kendoAriaLabelValue"] }] });
41
32
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FilterTextEditorComponent, decorators: [{
42
33
  type: Component,
43
34
  args: [{
@@ -48,11 +39,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
48
39
  class="k-filter-toolbar-item k-filter-value"
49
40
  [(value)]="currentItem.value"
50
41
  (valueChange)="valueChange.emit()"
51
- [disabled]="isDisabled()">
42
+ [disabled]="isDisabled">
52
43
  </kendo-textbox>
53
44
  `
54
45
  }]
55
- }], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i2.FilterService }]; }, propDecorators: { currentItem: [{
46
+ }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; }, propDecorators: { currentItem: [{
47
+ type: Input
48
+ }], isDisabled: [{
56
49
  type: Input
57
50
  }], valueChange: [{
58
51
  type: Output
@@ -3,18 +3,16 @@
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  import { Component, EventEmitter, Input, Output } from '@angular/core';
6
- import { nullOperators } from './util';
6
+ import { defaultOperators, getKeyByValue } from './util';
7
7
  import * as i0 from "@angular/core";
8
- import * as i1 from "./filter.service";
9
- import * as i2 from "@progress/kendo-angular-l10n";
10
- import * as i3 from "@progress/kendo-angular-dropdowns";
11
- import * as i4 from "./aria-label.directive";
8
+ import * as i1 from "@progress/kendo-angular-l10n";
9
+ import * as i2 from "@progress/kendo-angular-dropdowns";
10
+ import * as i3 from "./aria-label.directive";
12
11
  /**
13
12
  * @hidden
14
13
  */
15
14
  export class FilterExpressionOperatorsComponent {
16
- constructor(filterService, localization) {
17
- this.filterService = filterService;
15
+ constructor(localization) {
18
16
  this.localization = localization;
19
17
  this.valueChange = new EventEmitter();
20
18
  this.operators = [];
@@ -22,13 +20,15 @@ export class FilterExpressionOperatorsComponent {
22
20
  messageFor(key) {
23
21
  return this.localization.get(key);
24
22
  }
23
+ getOperator(operatorValue) {
24
+ return this.messageFor(getKeyByValue(defaultOperators[this.editorType], operatorValue));
25
+ }
25
26
  operatorValueChange(value) {
26
- this.valueChange.emit();
27
- this.filterService.isEditorDisabled = nullOperators.indexOf(value) >= 0;
27
+ this.valueChange.emit(value);
28
28
  }
29
29
  }
30
- FilterExpressionOperatorsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FilterExpressionOperatorsComponent, deps: [{ token: i1.FilterService }, { token: i2.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
31
- FilterExpressionOperatorsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FilterExpressionOperatorsComponent, selector: "kendo-filter-expression-operators", inputs: { currentItem: "currentItem", operators: "operators" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: `
30
+ FilterExpressionOperatorsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FilterExpressionOperatorsComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
31
+ FilterExpressionOperatorsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FilterExpressionOperatorsComponent, selector: "kendo-filter-expression-operators", inputs: { currentItem: "currentItem", editorType: "editorType", operators: "operators" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: `
32
32
  <kendo-dropdownlist
33
33
  [kendoAriaLabelValue]="messageFor('filterOperatorAriaLabel')"
34
34
  [data]="operators"
@@ -38,13 +38,19 @@ FilterExpressionOperatorsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersio
38
38
  [valuePrimitive]="true"
39
39
  textField="text"
40
40
  valueField="value"
41
- >
41
+ >
42
+ <ng-template kendoDropDownListValueTemplate let-dataItem>
43
+ {{ getOperator(dataItem.value) }}
44
+ </ng-template>
45
+ <ng-template kendoDropDownListItemTemplate let-dataItem>
46
+ {{ getOperator(dataItem.value) }}
47
+ </ng-template>
42
48
  </kendo-dropdownlist>
43
- `, 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"] }], directives: [{ type: i4.AriaLabelValueDirective, selector: "[kendoAriaLabelValue]", inputs: ["kendoAriaLabelValue"] }] });
49
+ `, 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"] }], directives: [{ type: i3.AriaLabelValueDirective, selector: "[kendoAriaLabelValue]", inputs: ["kendoAriaLabelValue"] }, { type: i2.ValueTemplateDirective, selector: "[kendoDropDownListValueTemplate],[kendoDropDownTreeValueTemplate]" }, { type: i2.ItemTemplateDirective, selector: "[kendoDropDownListItemTemplate],[kendoComboBoxItemTemplate],[kendoAutoCompleteItemTemplate],[kendoMultiSelectItemTemplate]" }] });
44
50
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FilterExpressionOperatorsComponent, decorators: [{
45
51
  type: Component,
46
52
  args: [{
47
- selector: 'kendo-filter-expression-operators',
53
+ selector: "kendo-filter-expression-operators",
48
54
  template: `
49
55
  <kendo-dropdownlist
50
56
  [kendoAriaLabelValue]="messageFor('filterOperatorAriaLabel')"
@@ -55,11 +61,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
55
61
  [valuePrimitive]="true"
56
62
  textField="text"
57
63
  valueField="value"
58
- >
64
+ >
65
+ <ng-template kendoDropDownListValueTemplate let-dataItem>
66
+ {{ getOperator(dataItem.value) }}
67
+ </ng-template>
68
+ <ng-template kendoDropDownListItemTemplate let-dataItem>
69
+ {{ getOperator(dataItem.value) }}
70
+ </ng-template>
59
71
  </kendo-dropdownlist>
60
- `
72
+ `
61
73
  }]
62
- }], ctorParameters: function () { return [{ type: i1.FilterService }, { type: i2.LocalizationService }]; }, propDecorators: { currentItem: [{
74
+ }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; }, propDecorators: { currentItem: [{
75
+ type: Input
76
+ }], editorType: [{
63
77
  type: Input
64
78
  }], valueChange: [{
65
79
  type: Output
@@ -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 { Component, EventEmitter, Input, Output } from '@angular/core';
6
- import { defaultDateOperators, defaultNumericOperators, defaultOperators, defaultStringOperators, getKeyByValue, isFilterEditor, localizeOperators } from './util';
6
+ import { defaultDateOperators, defaultNumericOperators, defaultOperators, defaultStringOperators, getKeyByValue, isFilterEditor, localizeOperators, nullOperators } from './util';
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "./filter.service";
9
9
  import * as i2 from "@progress/kendo-angular-l10n";
@@ -31,6 +31,7 @@ export class FilterExpressionComponent {
31
31
  this.isEditorDisabled = false;
32
32
  }
33
33
  ngOnInit() {
34
+ this.isEditorDisabled = nullOperators.indexOf(this.currentItem.operator) >= 0;
34
35
  this.filters = this.filterService.filters;
35
36
  const foundFilter = this.getFilterExpressionByField(this.currentItem.field);
36
37
  if (this.currentItem.field) {
@@ -119,6 +120,16 @@ export class FilterExpressionComponent {
119
120
  }
120
121
  }
121
122
  }
123
+ onOperatorChange(value) {
124
+ this.valueChange.emit();
125
+ if (nullOperators.indexOf(value) >= 0) {
126
+ this.currentItem.value = null;
127
+ this.isEditorDisabled = true;
128
+ }
129
+ else {
130
+ this.isEditorDisabled = false;
131
+ }
132
+ }
122
133
  }
123
134
  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 });
124
135
  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: `
@@ -140,15 +151,16 @@ FilterExpressionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.
140
151
  <kendo-filter-expression-operators
141
152
  [currentItem]="currentItem"
142
153
  [operators]="operators"
143
- (valueChange)="valueChange.emit();">
154
+ [editorType]="getEditorType()"
155
+ (valueChange)="onOperatorChange($event);">
144
156
  </kendo-filter-expression-operators>
145
157
  </div>
146
158
 
147
159
  <ng-container [ngSwitch]="getEditorType()">
148
- <kendo-filter-text-editor *ngSwitchCase="'string'" [currentItem]="currentItem" (valueChange)="valueChange.emit()"></kendo-filter-text-editor>
149
- <kendo-filter-numeric-editor *ngSwitchCase="'number'" [currentItem]="currentItem" (valueChange)="valueChange.emit()"></kendo-filter-numeric-editor>
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>
150
162
  <kendo-filter-boolean-editor *ngSwitchCase="'boolean'" [currentItem]="currentItem" (valueChange)="valueChange.emit()"></kendo-filter-boolean-editor>
151
- <kendo-filter-date-editor *ngSwitchCase="'date'" [currentItem]="currentItem" (valueChange)="valueChange.emit()"></kendo-filter-date-editor>
163
+ <kendo-filter-date-editor *ngSwitchCase="'date'" [currentItem]="currentItem" [isDisabled]="isEditorDisabled" (valueChange)="valueChange.emit()"></kendo-filter-date-editor>
152
164
  </ng-container>
153
165
 
154
166
  <div class="k-filter-toolbar-item">
@@ -162,7 +174,7 @@ FilterExpressionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.
162
174
  </div>
163
175
  </div>
164
176
  </div>
165
- `, 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", "operators"], outputs: ["valueChange"] }, { type: i5.FilterTextEditorComponent, selector: "kendo-filter-text-editor", inputs: ["currentItem"], outputs: ["valueChange"] }, { type: i6.FilterNumericEditorComponent, selector: "kendo-filter-numeric-editor", inputs: ["currentItem"], outputs: ["valueChange"] }, { type: i7.FilterBooleanEditorComponent, selector: "kendo-filter-boolean-editor", inputs: ["currentItem"], outputs: ["valueChange"] }, { type: i8.FilterDateEditorComponent, selector: "kendo-filter-date-editor", inputs: ["currentItem"], 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"] }] });
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"] }] });
166
178
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FilterExpressionComponent, decorators: [{
167
179
  type: Component,
168
180
  args: [{
@@ -186,15 +198,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
186
198
  <kendo-filter-expression-operators
187
199
  [currentItem]="currentItem"
188
200
  [operators]="operators"
189
- (valueChange)="valueChange.emit();">
201
+ [editorType]="getEditorType()"
202
+ (valueChange)="onOperatorChange($event);">
190
203
  </kendo-filter-expression-operators>
191
204
  </div>
192
205
 
193
206
  <ng-container [ngSwitch]="getEditorType()">
194
- <kendo-filter-text-editor *ngSwitchCase="'string'" [currentItem]="currentItem" (valueChange)="valueChange.emit()"></kendo-filter-text-editor>
195
- <kendo-filter-numeric-editor *ngSwitchCase="'number'" [currentItem]="currentItem" (valueChange)="valueChange.emit()"></kendo-filter-numeric-editor>
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>
196
209
  <kendo-filter-boolean-editor *ngSwitchCase="'boolean'" [currentItem]="currentItem" (valueChange)="valueChange.emit()"></kendo-filter-boolean-editor>
197
- <kendo-filter-date-editor *ngSwitchCase="'date'" [currentItem]="currentItem" (valueChange)="valueChange.emit()"></kendo-filter-date-editor>
210
+ <kendo-filter-date-editor *ngSwitchCase="'date'" [currentItem]="currentItem" [isDisabled]="isEditorDisabled" (valueChange)="valueChange.emit()"></kendo-filter-date-editor>
198
211
  </ng-container>
199
212
 
200
213
  <div class="k-filter-toolbar-item">
@@ -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 { Component, EventEmitter, Input, Output } from '@angular/core';
6
- import { localizeOperators, logicOperators } from './util';
6
+ import { getKeyByValue, localizeOperators, logicOperators } from './util';
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "./filter.service";
9
9
  import * as i2 from "@progress/kendo-angular-l10n";
@@ -44,6 +44,9 @@ export class FilterGroupComponent {
44
44
  messageFor(key) {
45
45
  return this.localization.get(key);
46
46
  }
47
+ getOperator(operatorValue) {
48
+ return this.messageFor(getKeyByValue(logicOperators, operatorValue));
49
+ }
47
50
  selectedChange(logicOperator) {
48
51
  if (this.currentItem.logic !== logicOperator) {
49
52
  this.currentItem.logic = logicOperator;
@@ -77,7 +80,7 @@ FilterGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
77
80
  [title]="operator.text"
78
81
  (click)="selectedChange(operator.value)"
79
82
  >
80
- {{operator.text}}
83
+ {{getOperator(operator.value)}}
81
84
  </button>
82
85
  </div>
83
86
  </div>
@@ -145,7 +148,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
145
148
  [title]="operator.text"
146
149
  (click)="selectedChange(operator.value)"
147
150
  >
148
- {{operator.text}}
151
+ {{getOperator(operator.value)}}
149
152
  </button>
150
153
  </div>
151
154
  </div>
@@ -5,7 +5,7 @@
5
5
  import { Component, Input, Output, EventEmitter, HostBinding, isDevMode } from '@angular/core';
6
6
  import { L10N_PREFIX, LocalizationService } from '@progress/kendo-angular-l10n';
7
7
  import { FilterService } from './filter.service';
8
- import { isArray, isPresent } from './util';
8
+ import { isArray, nullOperators, isPresent } from './util';
9
9
  import { validatePackage } from '@progress/kendo-licensing';
10
10
  import { packageMetadata } from './package-metadata';
11
11
  import * as i0 from "@angular/core";
@@ -55,6 +55,7 @@ export class FilterComponent {
55
55
  * That is each time a Filter Group or Filter Expression is added, removed, or updated.
56
56
  */
57
57
  this.valueChange = new EventEmitter();
58
+ this._value = { filters: [], logic: 'and' };
58
59
  validatePackage(packageMetadata);
59
60
  this.direction = localization.rtl ? 'rtl' : 'ltr';
60
61
  }
@@ -72,6 +73,7 @@ export class FilterComponent {
72
73
  }
73
74
  return clonedFilter;
74
75
  });
76
+ this.setValue(this.value);
75
77
  }
76
78
  get filters() {
77
79
  return this.filterService.filters;
@@ -81,11 +83,11 @@ export class FilterComponent {
81
83
  */
82
84
  set value(value) {
83
85
  const clonedValue = JSON.parse(JSON.stringify(value));
84
- this.normalizeValue(clonedValue);
85
- this.filterService.value = clonedValue;
86
+ this._value = clonedValue;
87
+ this.setValue(this.value);
86
88
  }
87
89
  get value() {
88
- return this.filterService.value;
90
+ return this._value;
89
91
  }
90
92
  ngOnInit() {
91
93
  if (this.filters.length === 0) {
@@ -105,13 +107,13 @@ export class FilterComponent {
105
107
  * @hidden
106
108
  */
107
109
  getCurrentFilter() {
108
- return this.value;
110
+ return this.filterService.normalizedValue;
109
111
  }
110
112
  /**
111
113
  * @hidden
112
114
  */
113
115
  onValueChange() {
114
- this.valueChange.emit(this.filterService.value);
116
+ this.valueChange.emit(this.filterService.normalizedValue);
115
117
  }
116
118
  normalizeFilter(filterDescriptor) {
117
119
  const foundFilter = this.filterService.filters.find((filter) => filter.field === filterDescriptor.field);
@@ -133,9 +135,19 @@ export class FilterComponent {
133
135
  if (!isPresent(filterDescriptor.value)) {
134
136
  filterDescriptor.value = null;
135
137
  }
138
+ if (nullOperators.indexOf(filterDescriptor.operator) >= 0) {
139
+ filterDescriptor.value = null;
140
+ }
136
141
  }
137
- normalizeValue(item) {
138
- item.filters.forEach((item) => {
142
+ setValue(items) {
143
+ this.normalizeValue(items);
144
+ this.filterService.normalizedValue = items;
145
+ }
146
+ normalizeValue(items) {
147
+ if (!this.filterService.filters.length) {
148
+ return;
149
+ }
150
+ items.filters.forEach((item) => {
139
151
  if (item.filters) {
140
152
  this.normalizeValue(item);
141
153
  }
@@ -278,7 +290,7 @@ FilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", versio
278
290
  </li>
279
291
  </ul>
280
292
  </div>
281
- `, isInline: true, components: [{ type: i3.FilterGroupComponent, selector: "kendo-filter-group", inputs: ["index", "currentItem"], outputs: ["valueChange"] }], directives: [{ type: i4.LocalizedMessagesDirective, selector: "[kendoFilterLocalizedMessages]" }] });
293
+ `, isInline: true, components: [{ type: i3.FilterGroupComponent, selector: "kendo-filter-group", inputs: ["index", "currentItem"], outputs: ["valueChange"] }], directives: [{ type: i4.LocalizedMessagesDirective, selector: "[kendoFilterLocalizedMessages]" }] });
282
294
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FilterComponent, decorators: [{
283
295
  type: Component,
284
296
  args: [{
@@ -416,7 +428,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
416
428
  </li>
417
429
  </ul>
418
430
  </div>
419
- `
431
+ `
420
432
  }]
421
433
  }], ctorParameters: function () { return [{ type: i1.FilterService }, { type: i2.LocalizationService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { direction: [{
422
434
  type: HostBinding,
@@ -9,9 +9,7 @@ import * as i0 from "@angular/core";
9
9
  */
10
10
  export class FilterService {
11
11
  constructor() {
12
- this.value = { filters: [], logic: 'or' };
13
12
  this.filters = [];
14
- this.isEditorDisabled = false;
15
13
  }
16
14
  addFilterGroup(item) {
17
15
  let filterGroup = { logic: 'or', filters: [] };
@@ -23,7 +21,7 @@ export class FilterService {
23
21
  }
24
22
  remove(item, positionIndex, parentItem) {
25
23
  if (!parentItem) {
26
- parentItem = this.value;
24
+ parentItem = this.normalizedValue;
27
25
  }
28
26
  if (item === parentItem) {
29
27
  parentItem.filters = [];
@@ -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: 1652791009,
12
+ publishDate: 1652964392,
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
  };