@progress/kendo-angular-grid 21.1.1-develop.2 → 21.2.0-develop.10

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.
Files changed (58) hide show
  1. package/codemods/utils.js +805 -394
  2. package/codemods/v20/grid-kendogridgroupbinding.js +8 -11
  3. package/esm2022/adaptiveness/adaptive-renderer.component.mjs +850 -756
  4. package/esm2022/aggregates/status-bar.component.mjs +13 -11
  5. package/esm2022/column-menu/column-chooser-content.component.mjs +133 -123
  6. package/esm2022/column-menu/column-list.component.mjs +64 -61
  7. package/esm2022/column-menu/column-menu-autosize-all.component.mjs +12 -11
  8. package/esm2022/column-menu/column-menu-autosize.component.mjs +12 -11
  9. package/esm2022/column-menu/column-menu-item.component.mjs +221 -85
  10. package/esm2022/column-menu/column-menu-position.component.mjs +46 -43
  11. package/esm2022/column-menu/column-menu.component.mjs +401 -315
  12. package/esm2022/databinding.directive.mjs +1 -0
  13. package/esm2022/editing/add-command.directive.mjs +27 -17
  14. package/esm2022/editing/cancel-command.directive.mjs +27 -17
  15. package/esm2022/editing/edit-command.directive.mjs +27 -17
  16. package/esm2022/editing/form/form-formfield.component.mjs +97 -70
  17. package/esm2022/editing/form/form.component.mjs +77 -61
  18. package/esm2022/editing/remove-command.directive.mjs +27 -17
  19. package/esm2022/editing/save-command.directive.mjs +27 -17
  20. package/esm2022/excel/excel-command.directive.mjs +27 -17
  21. package/esm2022/filtering/cell/filter-cell-operators.component.mjs +20 -17
  22. package/esm2022/filtering/cell/filter-cell.component.mjs +35 -33
  23. package/esm2022/filtering/filter-row.component.mjs +37 -29
  24. package/esm2022/filtering/menu/boolean-filter-menu.component.mjs +34 -31
  25. package/esm2022/filtering/menu/date-filter-menu-input.component.mjs +8 -7
  26. package/esm2022/filtering/menu/date-filter-menu.component.mjs +52 -49
  27. package/esm2022/filtering/menu/filter-menu-container.component.mjs +115 -92
  28. package/esm2022/filtering/menu/numeric-filter-menu.component.mjs +50 -47
  29. package/esm2022/filtering/menu/string-filter-menu.component.mjs +36 -33
  30. package/esm2022/filtering/multicheckbox-filter.component.mjs +54 -43
  31. package/esm2022/grid.component.mjs +1579 -1483
  32. package/esm2022/grouping/group-header.component.mjs +113 -89
  33. package/esm2022/grouping/group-panel.component.mjs +84 -77
  34. package/esm2022/index.mjs +1 -0
  35. package/esm2022/navigation/navigation.service.mjs +4 -4
  36. package/esm2022/package-metadata.mjs +2 -2
  37. package/esm2022/pdf/pdf-command.directive.mjs +27 -17
  38. package/esm2022/rendering/cell.component.mjs +411 -365
  39. package/esm2022/rendering/common/col-group.component.mjs +25 -15
  40. package/esm2022/rendering/common/loading.component.mjs +23 -19
  41. package/esm2022/rendering/details/detail-template.directive.mjs +6 -4
  42. package/esm2022/rendering/footer/footer.component.mjs +128 -112
  43. package/esm2022/rendering/header/header.component.mjs +414 -353
  44. package/esm2022/rendering/list.component.mjs +227 -204
  45. package/esm2022/rendering/table-body.component.mjs +553 -493
  46. package/esm2022/rendering/toolbar/toolbar.component.mjs +13 -11
  47. package/esm2022/rendering/toolbar/tools/ai-assistant/ai-assistant.component.mjs +86 -79
  48. package/esm2022/rendering/toolbar/tools/filter-toolbar-tool.component.mjs +54 -51
  49. package/esm2022/rendering/toolbar/tools/group-toolbar-tool.component.mjs +141 -118
  50. package/esm2022/rendering/toolbar/tools/sort-toolbar-tool.component.mjs +72 -65
  51. package/fesm2022/progress-kendo-angular-grid.mjs +6462 -5545
  52. package/filtering/menu/date-filter-menu-input.component.d.ts +1 -2
  53. package/filtering/menu/filter-menu-container.component.d.ts +2 -2
  54. package/index.d.ts +1 -0
  55. package/package.json +25 -26
  56. package/rendering/details/detail-template.directive.d.ts +6 -4
  57. package/schematics/ngAdd/index.js +7 -7
  58. package/codemods/template-transformer/index.js +0 -93
@@ -4,6 +4,7 @@
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  import { MenuTabbingService } from './menu-tabbing.service';
6
6
  import { Component, Input, SkipSelf, Output, EventEmitter, ChangeDetectorRef, ElementRef, ViewChild } from '@angular/core';
7
+ import { isCompositeFilterDescriptor } from "@progress/kendo-data-query";
7
8
  import { ColumnComponent } from "../../columns/column.component";
8
9
  import { FilterService } from "../filter.service";
9
10
  import { removeFilter, filtersByField } from "../base-filter-cell.component";
@@ -11,7 +12,7 @@ import { isPresent, isNullOrEmptyString } from "../../utils";
11
12
  import { cloneFilters } from '../../common/filter-descriptor-differ';
12
13
  import { ContextService } from '../../common/provider.service';
13
14
  import { FilterMenuHostDirective } from './filter-menu-host.directive';
14
- import { NgSwitch, NgSwitchCase, NgIf, NgTemplateOutlet, NgClass } from '@angular/common';
15
+ import { NgTemplateOutlet, NgClass } from '@angular/common';
15
16
  import { FormsModule } from '@angular/forms';
16
17
  import { AdaptiveGridService } from '../../common/adaptiveness.service';
17
18
  import { MultiCheckboxFilterComponent } from '../multicheckbox-filter.component';
@@ -32,9 +33,23 @@ const isNoValueOperator = operator => (operator === "isnull"
32
33
  * @hidden
33
34
  */
34
35
  export const validFilters = ({ value, operator }) => !isNullOrEmptyString(value) || isNoValueOperator(operator);
35
- const trimFilters = filter => {
36
- filter.filters = filter.filters.filter(validFilters);
37
- return filter;
36
+ const trimFilters = (filter) => {
37
+ const trimComposite = (node) => {
38
+ const trimmed = [];
39
+ for (const f of node.filters || []) {
40
+ if (isCompositeFilterDescriptor(f)) {
41
+ const child = trimComposite(f);
42
+ if (child.filters.length) {
43
+ trimmed.push(child);
44
+ }
45
+ }
46
+ else if (validFilters(f)) {
47
+ trimmed.push(f);
48
+ }
49
+ }
50
+ return { logic: node.logic || 'and', filters: trimmed };
51
+ };
52
+ return trimComposite(filter);
38
53
  };
39
54
  const findParent = (filters, field, parent) => {
40
55
  return filters.reduce((acc, filter) => {
@@ -266,55 +281,59 @@ export class FilterMenuContainerComponent {
266
281
  return eq(checkboxFilter, gridFilter);
267
282
  }
268
283
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FilterMenuContainerComponent, deps: [{ token: i1.FilterService, skipSelf: true }, { token: i1.FilterService }, { token: i2.ContextService }, { token: i0.ChangeDetectorRef }, { token: i3.MenuTabbingService }, { token: i4.AdaptiveGridService }], target: i0.ɵɵFactoryTarget.Component });
269
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: FilterMenuContainerComponent, isStandalone: true, selector: "kendo-grid-filter-menu-container", inputs: { column: "column", isLast: "isLast", isExpanded: "isExpanded", menuTabbingService: "menuTabbingService", filter: "filter", actionsClass: "actionsClass" }, outputs: { close: "close" }, providers: [
284
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: FilterMenuContainerComponent, isStandalone: true, selector: "kendo-grid-filter-menu-container", inputs: { column: "column", isLast: "isLast", isExpanded: "isExpanded", menuTabbingService: "menuTabbingService", filter: "filter", actionsClass: "actionsClass" }, outputs: { close: "close" }, providers: [
270
285
  FilterService,
271
286
  MenuTabbingService
272
287
  ], viewQueries: [{ propertyName: "resetButton", first: true, predicate: ["resetButton"], descendants: true }], ngImport: i0, template: `
273
288
  <form (submit)="submit()" (reset)="reset()"
274
- class="k-filter-menu"
275
- [ngClass]="{'k-popup k-group k-reset': isMultiFilter && !ctx.grid?.isActionSheetExpanded}">
276
- <div class="k-filter-menu-container">
277
- <ng-container [ngSwitch]="hasTemplate">
278
- <ng-container *ngSwitchCase="false">
279
- <ng-container *ngIf="!isMultiFilter; else multiFilter"
280
- kendoFilterMenuHost
281
- [filterService]="childService"
282
- [column]="column"
283
- [filter]="childFilter"
284
- [menuTabbingService]="menuTabbingService">
285
- </ng-container>
286
- <ng-template #multiFilter>
287
- <kendo-grid-multicheckbox-filter style="display: contents;" [column]="column" (filterChange)="onCheckboxFilterChange($event)"></kendo-grid-multicheckbox-filter>
288
- </ng-template>
289
- </ng-container>
290
- <ng-container *ngSwitchCase="true">
291
- <ng-template
292
- *ngIf="column.filterMenuTemplateRef"
293
- [ngTemplateOutlet]="column.filterMenuTemplateRef"
294
- [ngTemplateOutletContext]="templateContext"
295
- >
296
- </ng-template>
297
- </ng-container>
298
- </ng-container>
299
- <div *ngIf="!ctx.grid?.isActionSheetExpanded" [ngClass]="actionsClass">
300
- <button #filterButton kendoButton
301
- themeColor="primary"
302
- type="submit"
303
- [ngClass]="{'k-button-rectangle': !isMultiFilter}"
304
- [disabled]="disabled"
305
- [icon]="getButtonIcon('filter', 'icon')"
306
- [svgIcon]="getButtonIcon('filter', 'svgIcon')"
307
- (keydown.tab)="onTab($event, 'filter')">{{filterText}}</button>
308
- <button #resetButton kendoButton
309
- type="reset"
310
- [ngClass]="{'k-button-rectangle': !isMultiFilter}"
311
- [icon]="getButtonIcon('reset', 'icon')"
312
- [svgIcon]="getButtonIcon('reset', 'svgIcon')"
313
- (keydown.tab)="onTab($event, 'reset')">{{clearText}}</button>
314
- </div>
315
- </div>
289
+ class="k-filter-menu"
290
+ [ngClass]="{'k-popup k-group k-reset': isMultiFilter && !ctx.grid?.isActionSheetExpanded}">
291
+ <div class="k-filter-menu-container">
292
+ @switch (hasTemplate) {
293
+ @case (false) {
294
+ @if (!isMultiFilter) {
295
+ <ng-container
296
+ kendoFilterMenuHost
297
+ [filterService]="childService"
298
+ [column]="column"
299
+ [filter]="childFilter"
300
+ [menuTabbingService]="menuTabbingService">
301
+ </ng-container>
302
+ } @else {
303
+ <kendo-grid-multicheckbox-filter style="display: contents;" [column]="column" (filterChange)="onCheckboxFilterChange($event)"></kendo-grid-multicheckbox-filter>
304
+ }
305
+ }
306
+ @case (true) {
307
+ @if (column.filterMenuTemplateRef) {
308
+ <ng-template
309
+ [ngTemplateOutlet]="column.filterMenuTemplateRef"
310
+ [ngTemplateOutletContext]="templateContext"
311
+ >
312
+ </ng-template>
313
+ }
314
+ }
315
+ }
316
+ @if (!ctx.grid?.isActionSheetExpanded) {
317
+ <div [ngClass]="actionsClass">
318
+ <button #filterButton kendoButton
319
+ themeColor="primary"
320
+ type="submit"
321
+ [ngClass]="{'k-button-rectangle': !isMultiFilter}"
322
+ [disabled]="disabled"
323
+ [icon]="getButtonIcon('filter', 'icon')"
324
+ [svgIcon]="getButtonIcon('filter', 'svgIcon')"
325
+ (keydown.tab)="onTab($event, 'filter')">{{filterText}}</button>
326
+ <button #resetButton kendoButton
327
+ type="reset"
328
+ [ngClass]="{'k-button-rectangle': !isMultiFilter}"
329
+ [icon]="getButtonIcon('reset', 'icon')"
330
+ [svgIcon]="getButtonIcon('reset', 'svgIcon')"
331
+ (keydown.tab)="onTab($event, 'reset')">{{clearText}}</button>
332
+ </div>
333
+ }
334
+ </div>
316
335
  </form>
317
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: FilterMenuHostDirective, selector: "[kendoFilterMenuHost]", inputs: ["filterService", "menuTabbingService"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: MultiCheckboxFilterComponent, selector: "kendo-grid-multicheckbox-filter", inputs: ["column"], outputs: ["filterChange"] }, { kind: "component", type: ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }] });
336
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: FilterMenuHostDirective, selector: "[kendoFilterMenuHost]", inputs: ["filterService", "menuTabbingService"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: MultiCheckboxFilterComponent, selector: "kendo-grid-multicheckbox-filter", inputs: ["column"], outputs: ["filterChange"] }, { kind: "component", type: ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }] });
318
337
  }
319
338
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FilterMenuContainerComponent, decorators: [{
320
339
  type: Component,
@@ -326,52 +345,56 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
326
345
  selector: 'kendo-grid-filter-menu-container',
327
346
  template: `
328
347
  <form (submit)="submit()" (reset)="reset()"
329
- class="k-filter-menu"
330
- [ngClass]="{'k-popup k-group k-reset': isMultiFilter && !ctx.grid?.isActionSheetExpanded}">
331
- <div class="k-filter-menu-container">
332
- <ng-container [ngSwitch]="hasTemplate">
333
- <ng-container *ngSwitchCase="false">
334
- <ng-container *ngIf="!isMultiFilter; else multiFilter"
335
- kendoFilterMenuHost
336
- [filterService]="childService"
337
- [column]="column"
338
- [filter]="childFilter"
339
- [menuTabbingService]="menuTabbingService">
340
- </ng-container>
341
- <ng-template #multiFilter>
342
- <kendo-grid-multicheckbox-filter style="display: contents;" [column]="column" (filterChange)="onCheckboxFilterChange($event)"></kendo-grid-multicheckbox-filter>
343
- </ng-template>
344
- </ng-container>
345
- <ng-container *ngSwitchCase="true">
346
- <ng-template
347
- *ngIf="column.filterMenuTemplateRef"
348
- [ngTemplateOutlet]="column.filterMenuTemplateRef"
349
- [ngTemplateOutletContext]="templateContext"
350
- >
351
- </ng-template>
352
- </ng-container>
353
- </ng-container>
354
- <div *ngIf="!ctx.grid?.isActionSheetExpanded" [ngClass]="actionsClass">
355
- <button #filterButton kendoButton
356
- themeColor="primary"
357
- type="submit"
358
- [ngClass]="{'k-button-rectangle': !isMultiFilter}"
359
- [disabled]="disabled"
360
- [icon]="getButtonIcon('filter', 'icon')"
361
- [svgIcon]="getButtonIcon('filter', 'svgIcon')"
362
- (keydown.tab)="onTab($event, 'filter')">{{filterText}}</button>
363
- <button #resetButton kendoButton
364
- type="reset"
365
- [ngClass]="{'k-button-rectangle': !isMultiFilter}"
366
- [icon]="getButtonIcon('reset', 'icon')"
367
- [svgIcon]="getButtonIcon('reset', 'svgIcon')"
368
- (keydown.tab)="onTab($event, 'reset')">{{clearText}}</button>
369
- </div>
370
- </div>
348
+ class="k-filter-menu"
349
+ [ngClass]="{'k-popup k-group k-reset': isMultiFilter && !ctx.grid?.isActionSheetExpanded}">
350
+ <div class="k-filter-menu-container">
351
+ @switch (hasTemplate) {
352
+ @case (false) {
353
+ @if (!isMultiFilter) {
354
+ <ng-container
355
+ kendoFilterMenuHost
356
+ [filterService]="childService"
357
+ [column]="column"
358
+ [filter]="childFilter"
359
+ [menuTabbingService]="menuTabbingService">
360
+ </ng-container>
361
+ } @else {
362
+ <kendo-grid-multicheckbox-filter style="display: contents;" [column]="column" (filterChange)="onCheckboxFilterChange($event)"></kendo-grid-multicheckbox-filter>
363
+ }
364
+ }
365
+ @case (true) {
366
+ @if (column.filterMenuTemplateRef) {
367
+ <ng-template
368
+ [ngTemplateOutlet]="column.filterMenuTemplateRef"
369
+ [ngTemplateOutletContext]="templateContext"
370
+ >
371
+ </ng-template>
372
+ }
373
+ }
374
+ }
375
+ @if (!ctx.grid?.isActionSheetExpanded) {
376
+ <div [ngClass]="actionsClass">
377
+ <button #filterButton kendoButton
378
+ themeColor="primary"
379
+ type="submit"
380
+ [ngClass]="{'k-button-rectangle': !isMultiFilter}"
381
+ [disabled]="disabled"
382
+ [icon]="getButtonIcon('filter', 'icon')"
383
+ [svgIcon]="getButtonIcon('filter', 'svgIcon')"
384
+ (keydown.tab)="onTab($event, 'filter')">{{filterText}}</button>
385
+ <button #resetButton kendoButton
386
+ type="reset"
387
+ [ngClass]="{'k-button-rectangle': !isMultiFilter}"
388
+ [icon]="getButtonIcon('reset', 'icon')"
389
+ [svgIcon]="getButtonIcon('reset', 'svgIcon')"
390
+ (keydown.tab)="onTab($event, 'reset')">{{clearText}}</button>
391
+ </div>
392
+ }
393
+ </div>
371
394
  </form>
372
- `,
395
+ `,
373
396
  standalone: true,
374
- imports: [FormsModule, NgSwitch, NgSwitchCase, FilterMenuHostDirective, NgIf, NgTemplateOutlet, NgClass, MultiCheckboxFilterComponent, ButtonComponent]
397
+ imports: [FormsModule, FilterMenuHostDirective, NgTemplateOutlet, NgClass, MultiCheckboxFilterComponent, ButtonComponent]
375
398
  }]
376
399
  }], ctorParameters: () => [{ type: i1.FilterService, decorators: [{
377
400
  type: SkipSelf
@@ -9,7 +9,6 @@ import { setFilter, logicOperators } from '../base-filter-cell.component';
9
9
  import { MenuTabbingService } from './menu-tabbing.service';
10
10
  import { ContextService } from '../../common/provider.service';
11
11
  import { FilterMenuDropDownListDirective } from './filter-menu-dropdownlist.directive';
12
- import { NgIf } from '@angular/common';
13
12
  import { NumericFilterMenuInputComponent } from './numeric-filter-menu-input.component';
14
13
  import { DropDownListComponent } from '@progress/kendo-angular-dropdowns';
15
14
  import { replaceMessagePlaceholder } from '@progress/kendo-angular-common';
@@ -99,26 +98,26 @@ export class NumericFilterMenuComponent extends NumericFilterComponent {
99
98
  super.localizationChange();
100
99
  }
101
100
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NumericFilterMenuComponent, deps: [{ token: i1.ContextService }], target: i0.ɵɵFactoryTarget.Component });
102
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: NumericFilterMenuComponent, isStandalone: true, selector: "kendo-grid-numeric-filter-menu", inputs: { filter: "filter", extra: "extra", filterService: "filterService", filterDelay: "filterDelay", placeholder: "placeholder", extraPlaceholder: "extraPlaceholder", menuTabbingService: "menuTabbingService" }, host: { properties: { "class.k-filtercell": "this.hostClasses" } }, usesInheritance: true, ngImport: i0, template: `
101
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: NumericFilterMenuComponent, isStandalone: true, selector: "kendo-grid-numeric-filter-menu", inputs: { filter: "filter", extra: "extra", filterService: "filterService", filterDelay: "filterDelay", placeholder: "placeholder", extraPlaceholder: "extraPlaceholder", menuTabbingService: "menuTabbingService" }, host: { properties: { "class.k-filtercell": "this.hostClasses" } }, usesInheritance: true, ngImport: i0, template: `
103
102
  <kendo-grid-numeric-filter-menu-input
104
- [currentFilter]="firstFilter"
105
- [operators]="operators"
106
- [filterService]="filterService"
107
- [column]="column"
108
- [filter]="filter"
109
- [filterDelay]="filterDelay"
110
- [format]="format"
111
- [decimals]="decimals"
112
- [spinners]="spinners"
113
- [min]="min"
114
- [max]="max"
115
- [step]="step"
116
- [menuTabbingService]="menuTabbingService"
117
- [isFirstDropDown]="true"
118
- [placeholder]="placeholder">
103
+ [currentFilter]="firstFilter"
104
+ [operators]="operators"
105
+ [filterService]="filterService"
106
+ [column]="column"
107
+ [filter]="filter"
108
+ [filterDelay]="filterDelay"
109
+ [format]="format"
110
+ [decimals]="decimals"
111
+ [spinners]="spinners"
112
+ [min]="min"
113
+ [max]="max"
114
+ [step]="step"
115
+ [menuTabbingService]="menuTabbingService"
116
+ [isFirstDropDown]="true"
117
+ [placeholder]="placeholder">
119
118
  </kendo-grid-numeric-filter-menu-input>
120
- <kendo-dropdownlist
121
- *ngIf="extra"
119
+ @if (extra) {
120
+ <kendo-dropdownlist
122
121
  kendoFilterMenuDropDown
123
122
  [adaptiveTitle]="ctx.localization.get('adaptiveFilterOperatorsTitle')"
124
123
  [adaptiveMode]="ctx.grid?.adaptiveMode"
@@ -131,9 +130,10 @@ export class NumericFilterMenuComponent extends NumericFilterComponent {
131
130
  [value]="filter?.logic"
132
131
  textField="text"
133
132
  valueField="value">
134
- </kendo-dropdownlist>
135
- <kendo-grid-numeric-filter-menu-input
136
- *ngIf="extra"
133
+ </kendo-dropdownlist>
134
+ }
135
+ @if (extra) {
136
+ <kendo-grid-numeric-filter-menu-input
137
137
  [operators]="operators"
138
138
  [currentFilter]="secondFilter"
139
139
  [filterService]="filterService"
@@ -147,8 +147,9 @@ export class NumericFilterMenuComponent extends NumericFilterComponent {
147
147
  [step]="step"
148
148
  [menuTabbingService]="menuTabbingService"
149
149
  [placeholder]="extraPlaceholder">
150
- </kendo-grid-numeric-filter-menu-input>
151
- `, isInline: true, dependencies: [{ kind: "component", type: NumericFilterMenuInputComponent, selector: "kendo-grid-numeric-filter-menu-input", inputs: ["operators", "column", "filter", "operator", "currentFilter", "filterService", "filterDelay", "isFirstDropDown", "menuTabbingService", "step", "min", "max", "spinners", "decimals", "format", "placeholder"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["customIconClass", "showStickyHeader", "icon", "svgIcon", "loading", "data", "value", "textField", "valueField", "adaptiveMode", "adaptiveTitle", "adaptiveSubtitle", "popupSettings", "listHeight", "defaultItem", "disabled", "itemDisabled", "readonly", "filterable", "virtual", "ignoreCase", "delay", "valuePrimitive", "tabindex", "tabIndex", "size", "rounded", "fillMode", "leftRightArrowsNavigation", "id"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }, { kind: "directive", type: FilterMenuDropDownListDirective, selector: "[kendoFilterMenuDropDown]", inputs: ["filterMenuDropDownLabel"] }] });
150
+ </kendo-grid-numeric-filter-menu-input>
151
+ }
152
+ `, isInline: true, dependencies: [{ kind: "component", type: NumericFilterMenuInputComponent, selector: "kendo-grid-numeric-filter-menu-input", inputs: ["operators", "column", "filter", "operator", "currentFilter", "filterService", "filterDelay", "isFirstDropDown", "menuTabbingService", "step", "min", "max", "spinners", "decimals", "format", "placeholder"] }, { kind: "component", type: DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["customIconClass", "showStickyHeader", "icon", "svgIcon", "loading", "data", "value", "textField", "valueField", "adaptiveMode", "adaptiveTitle", "adaptiveSubtitle", "popupSettings", "listHeight", "defaultItem", "disabled", "itemDisabled", "readonly", "filterable", "virtual", "ignoreCase", "delay", "valuePrimitive", "tabindex", "tabIndex", "size", "rounded", "fillMode", "leftRightArrowsNavigation", "id"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }, { kind: "directive", type: FilterMenuDropDownListDirective, selector: "[kendoFilterMenuDropDown]", inputs: ["filterMenuDropDownLabel"] }] });
152
153
  }
153
154
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NumericFilterMenuComponent, decorators: [{
154
155
  type: Component,
@@ -156,24 +157,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
156
157
  selector: 'kendo-grid-numeric-filter-menu',
157
158
  template: `
158
159
  <kendo-grid-numeric-filter-menu-input
159
- [currentFilter]="firstFilter"
160
- [operators]="operators"
161
- [filterService]="filterService"
162
- [column]="column"
163
- [filter]="filter"
164
- [filterDelay]="filterDelay"
165
- [format]="format"
166
- [decimals]="decimals"
167
- [spinners]="spinners"
168
- [min]="min"
169
- [max]="max"
170
- [step]="step"
171
- [menuTabbingService]="menuTabbingService"
172
- [isFirstDropDown]="true"
173
- [placeholder]="placeholder">
160
+ [currentFilter]="firstFilter"
161
+ [operators]="operators"
162
+ [filterService]="filterService"
163
+ [column]="column"
164
+ [filter]="filter"
165
+ [filterDelay]="filterDelay"
166
+ [format]="format"
167
+ [decimals]="decimals"
168
+ [spinners]="spinners"
169
+ [min]="min"
170
+ [max]="max"
171
+ [step]="step"
172
+ [menuTabbingService]="menuTabbingService"
173
+ [isFirstDropDown]="true"
174
+ [placeholder]="placeholder">
174
175
  </kendo-grid-numeric-filter-menu-input>
175
- <kendo-dropdownlist
176
- *ngIf="extra"
176
+ @if (extra) {
177
+ <kendo-dropdownlist
177
178
  kendoFilterMenuDropDown
178
179
  [adaptiveTitle]="ctx.localization.get('adaptiveFilterOperatorsTitle')"
179
180
  [adaptiveMode]="ctx.grid?.adaptiveMode"
@@ -186,9 +187,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
186
187
  [value]="filter?.logic"
187
188
  textField="text"
188
189
  valueField="value">
189
- </kendo-dropdownlist>
190
- <kendo-grid-numeric-filter-menu-input
191
- *ngIf="extra"
190
+ </kendo-dropdownlist>
191
+ }
192
+ @if (extra) {
193
+ <kendo-grid-numeric-filter-menu-input
192
194
  [operators]="operators"
193
195
  [currentFilter]="secondFilter"
194
196
  [filterService]="filterService"
@@ -202,10 +204,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
202
204
  [step]="step"
203
205
  [menuTabbingService]="menuTabbingService"
204
206
  [placeholder]="extraPlaceholder">
205
- </kendo-grid-numeric-filter-menu-input>
206
- `,
207
+ </kendo-grid-numeric-filter-menu-input>
208
+ }
209
+ `,
207
210
  standalone: true,
208
- imports: [NumericFilterMenuInputComponent, NgIf, DropDownListComponent, FilterMenuDropDownListDirective]
211
+ imports: [NumericFilterMenuInputComponent, DropDownListComponent, FilterMenuDropDownListDirective]
209
212
  }]
210
213
  }], ctorParameters: () => [{ type: i1.ContextService }], propDecorators: { hostClasses: [{
211
214
  type: HostBinding,
@@ -9,7 +9,6 @@ import { FilterService } from '../filter.service';
9
9
  import { setFilter, logicOperators } from '../base-filter-cell.component';
10
10
  import { ContextService } from '../../common/provider.service';
11
11
  import { FilterMenuDropDownListDirective } from './filter-menu-dropdownlist.directive';
12
- import { NgIf } from '@angular/common';
13
12
  import { StringFilterMenuInputComponent } from './string-filter-menu-input.component';
14
13
  import { DropDownListComponent } from '@progress/kendo-angular-dropdowns';
15
14
  import { replaceMessagePlaceholder } from '@progress/kendo-angular-common';
@@ -97,19 +96,19 @@ export class StringFilterMenuComponent extends StringFilterComponent {
97
96
  super.localizationChange();
98
97
  }
99
98
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: StringFilterMenuComponent, deps: [{ token: i1.ContextService }], target: i0.ɵɵFactoryTarget.Component });
100
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: StringFilterMenuComponent, isStandalone: true, selector: "kendo-grid-string-filter-menu", inputs: { filter: "filter", extra: "extra", filterService: "filterService", placeholder: "placeholder", extraPlaceholder: "extraPlaceholder", menuTabbingService: "menuTabbingService" }, host: { properties: { "class.k-filtercell": "this.hostClasses" } }, usesInheritance: true, ngImport: i0, template: `
99
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: StringFilterMenuComponent, isStandalone: true, selector: "kendo-grid-string-filter-menu", inputs: { filter: "filter", extra: "extra", filterService: "filterService", placeholder: "placeholder", extraPlaceholder: "extraPlaceholder", menuTabbingService: "menuTabbingService" }, host: { properties: { "class.k-filtercell": "this.hostClasses" } }, usesInheritance: true, ngImport: i0, template: `
101
100
  <kendo-grid-string-filter-menu-input
102
- [currentFilter]="firstFilter"
103
- [operators]="operators"
104
- [filterService]="filterService"
105
- [column]="column"
106
- [filter]="filter"
107
- [isFirstDropDown]="true"
108
- [placeholder]="placeholder"
109
- [menuTabbingService]="menuTabbingService">
101
+ [currentFilter]="firstFilter"
102
+ [operators]="operators"
103
+ [filterService]="filterService"
104
+ [column]="column"
105
+ [filter]="filter"
106
+ [isFirstDropDown]="true"
107
+ [placeholder]="placeholder"
108
+ [menuTabbingService]="menuTabbingService">
110
109
  </kendo-grid-string-filter-menu-input>
111
- <kendo-dropdownlist
112
- *ngIf="extra"
110
+ @if (extra) {
111
+ <kendo-dropdownlist
113
112
  kendoFilterMenuDropDown
114
113
  [adaptiveTitle]="ctx.localization.get('adaptiveFilterOperatorsTitle')"
115
114
  [adaptiveMode]="ctx.grid?.adaptiveMode"
@@ -121,9 +120,10 @@ export class StringFilterMenuComponent extends StringFilterComponent {
121
120
  [value]="filter?.logic"
122
121
  textField="text"
123
122
  valueField="value">
124
- </kendo-dropdownlist>
125
- <kendo-grid-string-filter-menu-input
126
- *ngIf="extra"
123
+ </kendo-dropdownlist>
124
+ }
125
+ @if (extra) {
126
+ <kendo-grid-string-filter-menu-input
127
127
  [operators]="operators"
128
128
  [currentFilter]="secondFilter"
129
129
  [filterService]="filterService"
@@ -131,8 +131,9 @@ export class StringFilterMenuComponent extends StringFilterComponent {
131
131
  [filter]="filter"
132
132
  [placeholder]="extraPlaceholder"
133
133
  [menuTabbingService]="menuTabbingService">
134
- </kendo-grid-string-filter-menu-input>
135
- `, isInline: true, dependencies: [{ kind: "component", type: StringFilterMenuInputComponent, selector: "kendo-grid-string-filter-menu-input", inputs: ["operators", "column", "filter", "operator", "currentFilter", "filterService", "isFirstDropDown", "menuTabbingService", "placeholder"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["customIconClass", "showStickyHeader", "icon", "svgIcon", "loading", "data", "value", "textField", "valueField", "adaptiveMode", "adaptiveTitle", "adaptiveSubtitle", "popupSettings", "listHeight", "defaultItem", "disabled", "itemDisabled", "readonly", "filterable", "virtual", "ignoreCase", "delay", "valuePrimitive", "tabindex", "tabIndex", "size", "rounded", "fillMode", "leftRightArrowsNavigation", "id"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }, { kind: "directive", type: FilterMenuDropDownListDirective, selector: "[kendoFilterMenuDropDown]", inputs: ["filterMenuDropDownLabel"] }] });
134
+ </kendo-grid-string-filter-menu-input>
135
+ }
136
+ `, isInline: true, dependencies: [{ kind: "component", type: StringFilterMenuInputComponent, selector: "kendo-grid-string-filter-menu-input", inputs: ["operators", "column", "filter", "operator", "currentFilter", "filterService", "isFirstDropDown", "menuTabbingService", "placeholder"] }, { kind: "component", type: DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["customIconClass", "showStickyHeader", "icon", "svgIcon", "loading", "data", "value", "textField", "valueField", "adaptiveMode", "adaptiveTitle", "adaptiveSubtitle", "popupSettings", "listHeight", "defaultItem", "disabled", "itemDisabled", "readonly", "filterable", "virtual", "ignoreCase", "delay", "valuePrimitive", "tabindex", "tabIndex", "size", "rounded", "fillMode", "leftRightArrowsNavigation", "id"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }, { kind: "directive", type: FilterMenuDropDownListDirective, selector: "[kendoFilterMenuDropDown]", inputs: ["filterMenuDropDownLabel"] }] });
136
137
  }
137
138
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: StringFilterMenuComponent, decorators: [{
138
139
  type: Component,
@@ -140,17 +141,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
140
141
  selector: 'kendo-grid-string-filter-menu',
141
142
  template: `
142
143
  <kendo-grid-string-filter-menu-input
143
- [currentFilter]="firstFilter"
144
- [operators]="operators"
145
- [filterService]="filterService"
146
- [column]="column"
147
- [filter]="filter"
148
- [isFirstDropDown]="true"
149
- [placeholder]="placeholder"
150
- [menuTabbingService]="menuTabbingService">
144
+ [currentFilter]="firstFilter"
145
+ [operators]="operators"
146
+ [filterService]="filterService"
147
+ [column]="column"
148
+ [filter]="filter"
149
+ [isFirstDropDown]="true"
150
+ [placeholder]="placeholder"
151
+ [menuTabbingService]="menuTabbingService">
151
152
  </kendo-grid-string-filter-menu-input>
152
- <kendo-dropdownlist
153
- *ngIf="extra"
153
+ @if (extra) {
154
+ <kendo-dropdownlist
154
155
  kendoFilterMenuDropDown
155
156
  [adaptiveTitle]="ctx.localization.get('adaptiveFilterOperatorsTitle')"
156
157
  [adaptiveMode]="ctx.grid?.adaptiveMode"
@@ -162,9 +163,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
162
163
  [value]="filter?.logic"
163
164
  textField="text"
164
165
  valueField="value">
165
- </kendo-dropdownlist>
166
- <kendo-grid-string-filter-menu-input
167
- *ngIf="extra"
166
+ </kendo-dropdownlist>
167
+ }
168
+ @if (extra) {
169
+ <kendo-grid-string-filter-menu-input
168
170
  [operators]="operators"
169
171
  [currentFilter]="secondFilter"
170
172
  [filterService]="filterService"
@@ -172,10 +174,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
172
174
  [filter]="filter"
173
175
  [placeholder]="extraPlaceholder"
174
176
  [menuTabbingService]="menuTabbingService">
175
- </kendo-grid-string-filter-menu-input>
176
- `,
177
+ </kendo-grid-string-filter-menu-input>
178
+ }
179
+ `,
177
180
  standalone: true,
178
- imports: [StringFilterMenuInputComponent, NgIf, DropDownListComponent, FilterMenuDropDownListDirective]
181
+ imports: [StringFilterMenuInputComponent, DropDownListComponent, FilterMenuDropDownListDirective]
179
182
  }]
180
183
  }], ctorParameters: () => [{ type: i1.ContextService }], propDecorators: { hostClasses: [{
181
184
  type: HostBinding,