@progress/kendo-angular-spreadsheet 21.3.1-develop.1 → 21.4.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 (37) hide show
  1. package/common/spreadsheet.service.d.ts +3 -0
  2. package/directives.d.ts +3 -1
  3. package/esm2022/common/error-handling.service.mjs +1 -0
  4. package/esm2022/common/spreadsheet.service.mjs +2 -0
  5. package/esm2022/directives.mjs +5 -1
  6. package/esm2022/filter-menu/filter-menu-item-content-template.directive.mjs +26 -0
  7. package/esm2022/filter-menu/filter-menu-item.component.mjs +271 -0
  8. package/esm2022/localization/messages.mjs +175 -1
  9. package/esm2022/models/filter-menu-item.mjs +5 -0
  10. package/esm2022/models/index.mjs +2 -0
  11. package/esm2022/models/range-filter-value.mjs +5 -0
  12. package/esm2022/package-metadata.mjs +2 -2
  13. package/esm2022/spreadsheet.component.mjs +717 -47
  14. package/esm2022/spreadsheet.module.mjs +3 -1
  15. package/esm2022/tools/filter-sort/filter-tool.directive.mjs +75 -0
  16. package/esm2022/tools/filter-sort/sort-tool.directive.mjs +57 -0
  17. package/esm2022/tools/index.mjs +2 -0
  18. package/esm2022/tools/shared/command-icons.mjs +13 -3
  19. package/esm2022/tools/shared/constants.mjs +7 -0
  20. package/fesm2022/progress-kendo-angular-spreadsheet.mjs +1301 -59
  21. package/filter-menu/filter-menu-item-content-template.directive.d.ts +15 -0
  22. package/filter-menu/filter-menu-item.component.d.ts +83 -0
  23. package/index.d.ts +1 -1
  24. package/localization/messages.d.ts +117 -1
  25. package/models/events.d.ts +49 -0
  26. package/models/filter-menu-item.d.ts +14 -0
  27. package/models/index.d.ts +2 -0
  28. package/models/range-filter-value.d.ts +15 -0
  29. package/package.json +18 -17
  30. package/schematics/ngAdd/index.js +2 -2
  31. package/spreadsheet.component.d.ts +73 -12
  32. package/spreadsheet.module.d.ts +3 -1
  33. package/tools/filter-sort/filter-tool.directive.d.ts +23 -0
  34. package/tools/filter-sort/sort-tool.directive.d.ts +21 -0
  35. package/tools/index.d.ts +2 -0
  36. package/tools/shared/commands.d.ts +1 -1
  37. package/tools/shared/constants.d.ts +12 -0
@@ -7,16 +7,19 @@ import { Range, Sheet, SpreadsheetWidget } from '@progress/kendo-spreadsheet-com
7
7
  import { Subject } from 'rxjs';
8
8
  import { SheetsChanges } from './sheet-changes';
9
9
  import { SheetInfo } from '../models';
10
+ import { SpreadsheetComponent } from '../spreadsheet.component';
10
11
  import * as i0 from "@angular/core";
11
12
  /**
12
13
  * @hidden
13
14
  */
14
15
  export declare class SpreadsheetService {
15
16
  spreadsheet: SpreadsheetWidget;
17
+ spreadsheetComponent: SpreadsheetComponent;
16
18
  sheetsChanged: Subject<SheetsChanges>;
17
19
  onSheetsBarFocus: Subject<any>;
18
20
  activeSheetChanged: Subject<Sheet>;
19
21
  selectionChanged: Subject<Range>;
22
+ componentInitialized: Subject<void>;
20
23
  dialogContainer: ViewContainerRef;
21
24
  constructor();
22
25
  set currentActiveSheet(value: string);
package/directives.d.ts CHANGED
@@ -34,6 +34,8 @@ import { SpreadsheetDecreaseDecimalDirective } from './tools/decrease-decimal-to
34
34
  import { SpreadsheetHorizontalTextAlignDirective } from './tools/align/horizontal-align-tool.directive';
35
35
  import { SpreadsheetVerticalTextAlignDirective } from './tools/align/vertical-align-tool.directive';
36
36
  import { SpreadsheetDataValidationDirective } from './tools/data-validation-tool.directive';
37
+ import { SpreadsheetFilterDirective } from './tools/filter-sort/filter-tool.directive';
38
+ import { SpreadsheetSortDirective } from './tools/filter-sort/sort-tool.directive';
37
39
  /**
38
40
  * Use this utility array to access all `@progress/kendo-angular-spreadsheet`-related components and directives in a standalone Angular component.
39
41
  *
@@ -54,4 +56,4 @@ import { SpreadsheetDataValidationDirective } from './tools/data-validation-tool
54
56
  * }
55
57
  * ```
56
58
  */
57
- export declare const KENDO_SPREADSHEET: readonly [typeof SpreadsheetComponent, typeof CustomMessagesComponent, typeof SpreadsheetBoldDirective, typeof SpreadsheetDataValidationDirective, typeof SpreadsheetItalicDirective, typeof SpreadsheetUnderlineDirective, typeof SpreadsheetLoadFileComponent, typeof SpreadsheetSaveFileDirective, typeof SpreadsheetFormatDirective, typeof SpreadsheetUndoDirective, typeof SpreadsheetRedoDirective, typeof SpreadsheetFontFamilyComponent, typeof SpreadsheetFontSizeComponent, typeof SpreadsheetBackColorComponent, typeof SpreadsheetForeColorComponent, typeof SpreadsheetGridLinesDirective, typeof SpreadsheetAddColumnLeftButtonDirective, typeof SpreadsheetAddColumnRightButtonDirective, typeof SpreadsheetAddRowAboveButtonDirective, typeof SpreadsheetAddRowBelowButtonDirective, typeof SpreadsheetDeleteColumnButtonDirective, typeof SpreadsheetDeleteRowButtonDirective, typeof SpreadsheetTextAlignDirective, typeof SpreadsheetTextWrapDirective, typeof SpreadsheetMergeDirective, typeof SpreadsheetInsertLinkDirective, typeof SpreadsheetIncreaseFontSizeDirective, typeof SpreadsheetDecreaseFontSizeDirective, typeof SpreadsheetIncreaseDecimalDirective, typeof SpreadsheetDecreaseDecimalDirective, typeof SpreadsheetHorizontalTextAlignDirective, typeof SpreadsheetVerticalTextAlignDirective];
59
+ export declare const KENDO_SPREADSHEET: readonly [typeof SpreadsheetComponent, typeof CustomMessagesComponent, typeof SpreadsheetBoldDirective, typeof SpreadsheetDataValidationDirective, typeof SpreadsheetItalicDirective, typeof SpreadsheetUnderlineDirective, typeof SpreadsheetLoadFileComponent, typeof SpreadsheetSaveFileDirective, typeof SpreadsheetFormatDirective, typeof SpreadsheetUndoDirective, typeof SpreadsheetRedoDirective, typeof SpreadsheetFontFamilyComponent, typeof SpreadsheetFontSizeComponent, typeof SpreadsheetBackColorComponent, typeof SpreadsheetForeColorComponent, typeof SpreadsheetGridLinesDirective, typeof SpreadsheetAddColumnLeftButtonDirective, typeof SpreadsheetAddColumnRightButtonDirective, typeof SpreadsheetAddRowAboveButtonDirective, typeof SpreadsheetAddRowBelowButtonDirective, typeof SpreadsheetDeleteColumnButtonDirective, typeof SpreadsheetDeleteRowButtonDirective, typeof SpreadsheetTextAlignDirective, typeof SpreadsheetTextWrapDirective, typeof SpreadsheetMergeDirective, typeof SpreadsheetInsertLinkDirective, typeof SpreadsheetIncreaseFontSizeDirective, typeof SpreadsheetDecreaseFontSizeDirective, typeof SpreadsheetIncreaseDecimalDirective, typeof SpreadsheetDecreaseDecimalDirective, typeof SpreadsheetHorizontalTextAlignDirective, typeof SpreadsheetVerticalTextAlignDirective, typeof SpreadsheetFilterDirective, typeof SpreadsheetSortDirective];
@@ -77,6 +77,7 @@ export class ErrorHandlingService {
77
77
  actionsLayout: 'start'
78
78
  };
79
79
  const dialog = this.dialogService.open(dialogSettings);
80
+ this.spreadsheetService.spreadsheetComponent.closePopup();
80
81
  const dialogInstance = dialog.dialog?.instance;
81
82
  dialogInstance.action.pipe(take(1)).subscribe((event) => {
82
83
  if (event.text === this.messageFor('dialogOk')) {
@@ -11,10 +11,12 @@ let spreadsheetCounter = 0;
11
11
  */
12
12
  export class SpreadsheetService {
13
13
  spreadsheet;
14
+ spreadsheetComponent;
14
15
  sheetsChanged = new Subject();
15
16
  onSheetsBarFocus = new Subject();
16
17
  activeSheetChanged = new Subject();
17
18
  selectionChanged = new Subject();
19
+ componentInitialized = new Subject();
18
20
  dialogContainer;
19
21
  constructor() {
20
22
  spreadsheetCounter++;
@@ -34,6 +34,8 @@ import { SpreadsheetDecreaseDecimalDirective } from './tools/decrease-decimal-to
34
34
  import { SpreadsheetHorizontalTextAlignDirective } from './tools/align/horizontal-align-tool.directive';
35
35
  import { SpreadsheetVerticalTextAlignDirective } from './tools/align/vertical-align-tool.directive';
36
36
  import { SpreadsheetDataValidationDirective } from './tools/data-validation-tool.directive';
37
+ import { SpreadsheetFilterDirective } from './tools/filter-sort/filter-tool.directive';
38
+ import { SpreadsheetSortDirective } from './tools/filter-sort/sort-tool.directive';
37
39
  /**
38
40
  * Use this utility array to access all `@progress/kendo-angular-spreadsheet`-related components and directives in a standalone Angular component.
39
41
  *
@@ -86,5 +88,7 @@ export const KENDO_SPREADSHEET = [
86
88
  SpreadsheetIncreaseDecimalDirective,
87
89
  SpreadsheetDecreaseDecimalDirective,
88
90
  SpreadsheetHorizontalTextAlignDirective,
89
- SpreadsheetVerticalTextAlignDirective
91
+ SpreadsheetVerticalTextAlignDirective,
92
+ SpreadsheetFilterDirective,
93
+ SpreadsheetSortDirective
90
94
  ];
@@ -0,0 +1,26 @@
1
+ /**-----------------------------------------------------------------------------------------
2
+ * Copyright © 2025 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, Optional, TemplateRef } from '@angular/core';
6
+ import * as i0 from "@angular/core";
7
+ /**
8
+ * @hidden
9
+ */
10
+ export class FilterMenuItemContentTemplateDirective {
11
+ templateRef;
12
+ constructor(templateRef) {
13
+ this.templateRef = templateRef;
14
+ }
15
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FilterMenuItemContentTemplateDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
16
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: FilterMenuItemContentTemplateDirective, isStandalone: true, selector: "[kendoSpreadsheetFilterMenuItemContentTemplate]", ngImport: i0 });
17
+ }
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FilterMenuItemContentTemplateDirective, decorators: [{
19
+ type: Directive,
20
+ args: [{
21
+ selector: '[kendoSpreadsheetFilterMenuItemContentTemplate]',
22
+ standalone: true
23
+ }]
24
+ }], ctorParameters: () => [{ type: i0.TemplateRef, decorators: [{
25
+ type: Optional
26
+ }] }] });
@@ -0,0 +1,271 @@
1
+ /**-----------------------------------------------------------------------------------------
2
+ * Copyright © 2025 Progress Software Corporation. All rights reserved.
3
+ * Licensed under commercial license. See LICENSE.md in the project root for more information
4
+ *-------------------------------------------------------------------------------------------*/
5
+ import { Component, ContentChild, Input, Output, EventEmitter, NgZone, ElementRef, HostBinding } from '@angular/core';
6
+ import { trigger, transition, style, animate, state } from '@angular/animations';
7
+ import { chevronDownIcon, chevronUpIcon } from '@progress/kendo-svg-icons';
8
+ import { IconWrapperComponent } from '@progress/kendo-angular-icons';
9
+ import { FilterMenuItemContentTemplateDirective } from './filter-menu-item-content-template.directive';
10
+ import { NgTemplateOutlet, NgClass } from '@angular/common';
11
+ import { guid } from '@progress/kendo-angular-common';
12
+ import { take } from 'rxjs/operators';
13
+ import * as i0 from "@angular/core";
14
+ /**
15
+ * Represents an item that you can place inside the Spreadsheet filter menu.
16
+ *
17
+ * @hidden
18
+ */
19
+ export class SpreadsheetFilterMenuItemComponent {
20
+ ngZone;
21
+ element;
22
+ contentTemplate;
23
+ hostClass = true;
24
+ /**
25
+ * Specifies the item text.
26
+ */
27
+ text;
28
+ /**
29
+ * Specifies the items.
30
+ */
31
+ innerMenuItems;
32
+ /**
33
+ * Specifies the item icon.
34
+ */
35
+ icon;
36
+ /**
37
+ * Specifies the item icon.
38
+ */
39
+ expanderClass;
40
+ /**
41
+ * Specifies the item icon.
42
+ */
43
+ expandable = false;
44
+ /**
45
+ * Specifies the item svgIcon.
46
+ */
47
+ svgIcon;
48
+ /**
49
+ * Specifies if the item is expanded.
50
+ */
51
+ set expanded(value) {
52
+ this._expanded = value;
53
+ this.updateContentState();
54
+ }
55
+ get expanded() {
56
+ return this._expanded;
57
+ }
58
+ /**
59
+ * Fires when the item is clicked.
60
+ */
61
+ itemClick = new EventEmitter();
62
+ /**
63
+ * Fires when the content expands.
64
+ */
65
+ expand = new EventEmitter();
66
+ /**
67
+ * Fires when the content collapses.
68
+ */
69
+ collapse = new EventEmitter();
70
+ constructor(ngZone, element) {
71
+ this.ngZone = ngZone;
72
+ this.element = element;
73
+ }
74
+ ngAfterViewInit() {
75
+ this.ngZone.onStable.pipe(take(1)).subscribe(() => {
76
+ this.contentTemplate && (this.contentId = `k-${guid()}`);
77
+ });
78
+ }
79
+ /**
80
+ * @hidden
81
+ */
82
+ get expandedIcon() {
83
+ return this.expanded ? 'arrow-chevron-up' : 'arrow-chevron-down';
84
+ }
85
+ /**
86
+ * @hidden
87
+ */
88
+ get expandedSvgIcon() {
89
+ return this.expanded ? this.chevronUpIcon : this.chevronDownIcon;
90
+ }
91
+ contentState = 'collapsed';
92
+ contentId;
93
+ chevronUpIcon = chevronUpIcon;
94
+ chevronDownIcon = chevronDownIcon;
95
+ _expanded = false;
96
+ /**
97
+ * @hidden
98
+ */
99
+ onClick(e, item) {
100
+ this.itemClick.emit(item);
101
+ e.preventDefault();
102
+ e.stopImmediatePropagation();
103
+ if (this.contentTemplate) {
104
+ if (this.expanded) {
105
+ this.collapse.emit();
106
+ }
107
+ else {
108
+ this.expand.emit();
109
+ }
110
+ }
111
+ }
112
+ updateContentState() {
113
+ this.contentState = this.expanded ? 'expanded' : 'collapsed';
114
+ }
115
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SpreadsheetFilterMenuItemComponent, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
116
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SpreadsheetFilterMenuItemComponent, isStandalone: true, selector: "kendo-spreadsheet-filtermenu-item", inputs: { text: "text", innerMenuItems: "innerMenuItems", icon: "icon", expanderClass: "expanderClass", expandable: "expandable", svgIcon: "svgIcon", expanded: "expanded" }, outputs: { itemClick: "itemClick", expand: "expand", collapse: "collapse" }, host: { properties: { "class.k-columnmenu-item-wrapper": "this.hostClass" } }, queries: [{ propertyName: "contentTemplate", first: true, predicate: FilterMenuItemContentTemplateDirective, descendants: true }], ngImport: i0, template: `
117
+ @if (expandable) {
118
+ <div class="k-expander" [ngClass]="expanderClass">
119
+ <ng-container [ngTemplateOutlet]="itemsTemplate"></ng-container>
120
+ </div>
121
+ } @else {
122
+ <ng-container [ngTemplateOutlet]="itemsTemplate"></ng-container>
123
+ }
124
+
125
+ <ng-template #itemsTemplate>
126
+ @for (item of innerMenuItems; track item) {
127
+ <div class="k-columnmenu-item" (click)="onClick($event, item)">
128
+ @if (item.icon || item.svgIcon) {
129
+ <kendo-icon-wrapper
130
+ [name]="item.icon"
131
+ [svgIcon]="item.svgIcon">
132
+ </kendo-icon-wrapper>
133
+ }
134
+ {{item.text}}
135
+ @if (expandable) {
136
+ <span class="k-spacer"></span>
137
+ <span class="k-expander-indicator">
138
+ <kendo-icon-wrapper
139
+ [name]="expandedIcon"
140
+ [svgIcon]="expandedSvgIcon">
141
+ </kendo-icon-wrapper>
142
+ </span>
143
+ }
144
+ </div>
145
+ }
146
+ </ng-template>
147
+
148
+ @if (contentTemplate) {
149
+ <div class="k-columnmenu-item-content" [attr.id]="contentId" [@state]="contentState" [style.overflow]="'hidden'">
150
+ <ng-template [ngTemplateOutlet]="contentTemplate.templateRef"></ng-template>
151
+ </div>
152
+ }
153
+ `, isInline: true, dependencies: [{ kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], animations: [
154
+ trigger('state', [
155
+ state('collapsed', style({ display: 'none' })),
156
+ state('expanded', style({ display: 'block' })),
157
+ transition('collapsed => expanded', [
158
+ style({
159
+ height: '0px',
160
+ display: 'block'
161
+ }),
162
+ animate('100ms ease-in', style({
163
+ height: '*'
164
+ }))
165
+ ]),
166
+ transition('expanded => collapsed', [
167
+ style({
168
+ height: '*'
169
+ }),
170
+ animate('100ms ease-in', style({
171
+ height: '0px'
172
+ }))
173
+ ])
174
+ ])
175
+ ] });
176
+ }
177
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SpreadsheetFilterMenuItemComponent, decorators: [{
178
+ type: Component,
179
+ args: [{
180
+ selector: 'kendo-spreadsheet-filtermenu-item',
181
+ template: `
182
+ @if (expandable) {
183
+ <div class="k-expander" [ngClass]="expanderClass">
184
+ <ng-container [ngTemplateOutlet]="itemsTemplate"></ng-container>
185
+ </div>
186
+ } @else {
187
+ <ng-container [ngTemplateOutlet]="itemsTemplate"></ng-container>
188
+ }
189
+
190
+ <ng-template #itemsTemplate>
191
+ @for (item of innerMenuItems; track item) {
192
+ <div class="k-columnmenu-item" (click)="onClick($event, item)">
193
+ @if (item.icon || item.svgIcon) {
194
+ <kendo-icon-wrapper
195
+ [name]="item.icon"
196
+ [svgIcon]="item.svgIcon">
197
+ </kendo-icon-wrapper>
198
+ }
199
+ {{item.text}}
200
+ @if (expandable) {
201
+ <span class="k-spacer"></span>
202
+ <span class="k-expander-indicator">
203
+ <kendo-icon-wrapper
204
+ [name]="expandedIcon"
205
+ [svgIcon]="expandedSvgIcon">
206
+ </kendo-icon-wrapper>
207
+ </span>
208
+ }
209
+ </div>
210
+ }
211
+ </ng-template>
212
+
213
+ @if (contentTemplate) {
214
+ <div class="k-columnmenu-item-content" [attr.id]="contentId" [@state]="contentState" [style.overflow]="'hidden'">
215
+ <ng-template [ngTemplateOutlet]="contentTemplate.templateRef"></ng-template>
216
+ </div>
217
+ }
218
+ `,
219
+ standalone: true,
220
+ imports: [IconWrapperComponent, NgTemplateOutlet, NgClass],
221
+ animations: [
222
+ trigger('state', [
223
+ state('collapsed', style({ display: 'none' })),
224
+ state('expanded', style({ display: 'block' })),
225
+ transition('collapsed => expanded', [
226
+ style({
227
+ height: '0px',
228
+ display: 'block'
229
+ }),
230
+ animate('100ms ease-in', style({
231
+ height: '*'
232
+ }))
233
+ ]),
234
+ transition('expanded => collapsed', [
235
+ style({
236
+ height: '*'
237
+ }),
238
+ animate('100ms ease-in', style({
239
+ height: '0px'
240
+ }))
241
+ ])
242
+ ])
243
+ ]
244
+ }]
245
+ }], ctorParameters: () => [{ type: i0.NgZone }, { type: i0.ElementRef }], propDecorators: { contentTemplate: [{
246
+ type: ContentChild,
247
+ args: [FilterMenuItemContentTemplateDirective]
248
+ }], hostClass: [{
249
+ type: HostBinding,
250
+ args: ['class.k-columnmenu-item-wrapper']
251
+ }], text: [{
252
+ type: Input
253
+ }], innerMenuItems: [{
254
+ type: Input
255
+ }], icon: [{
256
+ type: Input
257
+ }], expanderClass: [{
258
+ type: Input
259
+ }], expandable: [{
260
+ type: Input
261
+ }], svgIcon: [{
262
+ type: Input
263
+ }], expanded: [{
264
+ type: Input
265
+ }], itemClick: [{
266
+ type: Output
267
+ }], expand: [{
268
+ type: Output
269
+ }], collapse: [{
270
+ type: Output
271
+ }] } });
@@ -464,8 +464,124 @@ export class MessagesDirective extends ComponentMessages {
464
464
  * internally with the current value, and the resulting label will be rendered as **A1% is invalid**.
465
465
  */
466
466
  invalidNameError;
467
+ /**
468
+ * The content of the dialog that warns about sorting range containing cells of mixed shapes.
469
+ */
470
+ cantSortMixedCells;
471
+ /**
472
+ * The text of the **Apply** button in the filter menu.
473
+ */
474
+ filterApply;
475
+ /**
476
+ * The text of the **Clear** button in the filter menu.
477
+ */
478
+ filterClear;
479
+ /**
480
+ * The text of the **All** grouping item in the filter menu.
481
+ */
482
+ filterMenuAll;
483
+ /**
484
+ * The text for the blank (empty) values.
485
+ */
486
+ blankValues;
487
+ /**
488
+ * The text of the **contains** filter operator.
489
+ */
490
+ filterContainsOperator;
491
+ /**
492
+ * The text of the **does not contain** filter operator.
493
+ */
494
+ filterNotContainsOperator;
495
+ /**
496
+ * The text of the **starts with** filter operator.
497
+ */
498
+ filterStartsWithOperator;
499
+ /**
500
+ * The text of the **ends with** filter operator.
501
+ */
502
+ filterEndsWithOperator;
503
+ /**
504
+ * The text of the **matches** filter operator.
505
+ */
506
+ filterMatchesOperator;
507
+ /**
508
+ * The text of the **does not match** filter operator.
509
+ */
510
+ filterNotMatchesOperator;
511
+ /**
512
+ * The text of the **Date is** filter operator.
513
+ */
514
+ filterDateEqOperator;
515
+ /**
516
+ * The text of the **Date is not** filter operator.
517
+ */
518
+ filterDateNotEqOperator;
519
+ /**
520
+ * The text of the **Date is before** filter operator.
521
+ */
522
+ filterBeforeOperator;
523
+ /**
524
+ * The text of the **Date is after** filter operator.
525
+ */
526
+ filterAfterOperator;
527
+ /**
528
+ * Sets the text for the **Equal (Is equal to)** filter operator.
529
+ */
530
+ filterEqOperator;
531
+ /**
532
+ * Sets the text for the **Not equal (Is not equal to)** filter operator.
533
+ */
534
+ filterNotEqOperator;
535
+ /**
536
+ * The text of the greater than or equal filter operator.
537
+ */
538
+ filterGteOperator;
539
+ /**
540
+ * The text of the **greater than** filter operator.
541
+ */
542
+ filterGtOperator;
543
+ /**
544
+ * The text of the **less than or equal** filter operator.
545
+ */
546
+ filterLteOperator;
547
+ /**
548
+ * The text of the **less than** filter operator.
549
+ */
550
+ filterLtOperator;
551
+ /**
552
+ * The text of the **none** filter operator.
553
+ */
554
+ filterNoneOperator;
555
+ /**
556
+ * The text of the **Filter by condition** menu item.
557
+ */
558
+ filterMenuConditionItem;
559
+ /**
560
+ * The text of the **Filter by value** menu item.
561
+ */
562
+ filterMenuValueItem;
563
+ /**
564
+ * The title of the Sort ToolBar tool.
565
+ */
566
+ sort;
567
+ /**
568
+ * The text of the **Sort range A to Z** option.
569
+ */
570
+ sortAsc;
571
+ /**
572
+ * The text of the **Sort range Z to A** option.
573
+ */
574
+ sortDesc;
575
+ /**
576
+ * The text of the **Unsort** option.
577
+ */
578
+ unsort;
579
+ /**
580
+ * The content of the dialog that warns about sorting incorrect (empty) range.
581
+ */
582
+ cantSortNullRef;
467
583
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MessagesDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
468
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: MessagesDirective, isStandalone: true, selector: "[kendoSpreadsheetMessages]", inputs: { home: "home", file: "file", insert: "insert", formatTab: "formatTab", dataTab: "dataTab", saveFile: "saveFile", loadFile: "loadFile", bold: "bold", dataValidation: "dataValidation", validationCellRange: "validationCellRange", validationCriteria: "validationCriteria", validationComparer: "validationComparer", validationMinValue: "validationMinValue", validationMaxValue: "validationMaxValue", validationStartValue: "validationStartValue", validationEndValue: "validationEndValue", validationValue: "validationValue", validationShowListButtonCheckbox: "validationShowListButtonCheckbox", validationShowDateButtonCheckbox: "validationShowDateButtonCheckbox", validationIgnoreBlankCheckbox: "validationIgnoreBlankCheckbox", validationOnInvalidData: "validationOnInvalidData", validationRejectInput: "validationRejectInput", validationShowWarning: "validationShowWarning", validationShowHint: "validationShowHint", anyValueValidationCriteria: "anyValueValidationCriteria", numberValidationCriteria: "numberValidationCriteria", textValidationCriteria: "textValidationCriteria", dateValidationCriteria: "dateValidationCriteria", customFormulaValidationCriteria: "customFormulaValidationCriteria", listValidationCriteria: "listValidationCriteria", greaterThanValidationComparer: "greaterThanValidationComparer", lessThanValidationComparer: "lessThanValidationComparer", betweenValidationComparer: "betweenValidationComparer", notBetweenValidationComparer: "notBetweenValidationComparer", equalToValidationComparer: "equalToValidationComparer", notEqualToValidationComparer: "notEqualToValidationComparer", greaterThanOrEqualToValidationComparer: "greaterThanOrEqualToValidationComparer", lessThanOrEqualToValidationComparer: "lessThanOrEqualToValidationComparer", validationHintMessage: "validationHintMessage", validationHintTitle: "validationHintTitle", italic: "italic", underline: "underline", format: "format", fontFamily: "fontFamily", fontSize: "fontSize", undo: "undo", redo: "redo", background: "background", color: "color", gridLines: "gridLines", addColumnLeft: "addColumnLeft", addColumnRight: "addColumnRight", addRowBelow: "addRowBelow", addRowAbove: "addRowAbove", deleteColumn: "deleteColumn", deleteRow: "deleteRow", wrap: "wrap", align: "align", alignHorizontal: "alignHorizontal", alignVertical: "alignVertical", alignLeft: "alignLeft", alignCenter: "alignCenter", alignRight: "alignRight", alignJustify: "alignJustify", alignTop: "alignTop", alignMiddle: "alignMiddle", alignBottom: "alignBottom", dialogApply: "dialogApply", dialogCancel: "dialogCancel", dialogDelete: "dialogDelete", dialogRename: "dialogRename", dialogInsert: "dialogInsert", dialogRemove: "dialogRemove", dialogRemoveLink: "dialogRemoveLink", delete: "delete", rename: "rename", nameBox: "nameBox", formulaInput: "formulaInput", addSheet: "addSheet", sheetsMenu: "sheetsMenu", view: "view", merge: "merge", mergeHorizontally: "mergeHorizontally", mergeVertically: "mergeVertically", mergeAll: "mergeAll", unmerge: "unmerge", insertLink: "insertLink", increaseDecimal: "increaseDecimal", decreaseDecimal: "decreaseDecimal", increaseFontSize: "increaseFontSize", decreaseFontSize: "decreaseFontSize", openUnsupported: "openUnsupported", modifyMerged: "modifyMerged", cannotModifyDisabled: "cannotModifyDisabled", dialogOk: "dialogOk", dialogError: "dialogError", duplicateSheetName: "duplicateSheetName", copy: "copy", cut: "cut", paste: "paste", hideRow: "hideRow", unhideRow: "unhideRow", hideColumn: "hideColumn", unhideColumn: "unhideColumn", sheetDelete: "sheetDelete", sheetRename: "sheetRename", sheetHide: "sheetHide", sheetDuplicate: "sheetDuplicate", sheetMoveLeft: "sheetMoveLeft", sheetMoveRight: "sheetMoveRight", invalidNameError: "invalidNameError" }, usesInheritance: true, ngImport: i0 });
584
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: MessagesDirective, isStandalone: true, selector: "[kendoSpreadsheetMessages]", inputs: { home: "home", file: "file", insert: "insert", formatTab: "formatTab", dataTab: "dataTab", saveFile: "saveFile", loadFile: "loadFile", bold: "bold", dataValidation: "dataValidation", validationCellRange: "validationCellRange", validationCriteria: "validationCriteria", validationComparer: "validationComparer", validationMinValue: "validationMinValue", validationMaxValue: "validationMaxValue", validationStartValue: "validationStartValue", validationEndValue: "validationEndValue", validationValue: "validationValue", validationShowListButtonCheckbox: "validationShowListButtonCheckbox", validationShowDateButtonCheckbox: "validationShowDateButtonCheckbox", validationIgnoreBlankCheckbox: "validationIgnoreBlankCheckbox", validationOnInvalidData: "validationOnInvalidData", validationRejectInput: "validationRejectInput", validationShowWarning: "validationShowWarning", validationShowHint: "validationShowHint", anyValueValidationCriteria: "anyValueValidationCriteria", numberValidationCriteria: "numberValidationCriteria", textValidationCriteria: "textValidationCriteria", dateValidationCriteria: "dateValidationCriteria", customFormulaValidationCriteria: "customFormulaValidationCriteria", listValidationCriteria: "listValidationCriteria", greaterThanValidationComparer: "greaterThanValidationComparer", lessThanValidationComparer: "lessThanValidationComparer", betweenValidationComparer: "betweenValidationComparer", notBetweenValidationComparer: "notBetweenValidationComparer", equalToValidationComparer: "equalToValidationComparer", notEqualToValidationComparer: "notEqualToValidationComparer", greaterThanOrEqualToValidationComparer: "greaterThanOrEqualToValidationComparer", lessThanOrEqualToValidationComparer: "lessThanOrEqualToValidationComparer", validationHintMessage: "validationHintMessage", validationHintTitle: "validationHintTitle", italic: "italic", underline: "underline", format: "format", fontFamily: "fontFamily", fontSize: "fontSize", undo: "undo", redo: "redo", background: "background", color: "color", gridLines: "gridLines", addColumnLeft: "addColumnLeft", addColumnRight: "addColumnRight", addRowBelow: "addRowBelow", addRowAbove: "addRowAbove", deleteColumn: "deleteColumn", deleteRow: "deleteRow", wrap: "wrap", align: "align", alignHorizontal: "alignHorizontal", alignVertical: "alignVertical", alignLeft: "alignLeft", alignCenter: "alignCenter", alignRight: "alignRight", alignJustify: "alignJustify", alignTop: "alignTop", alignMiddle: "alignMiddle", alignBottom: "alignBottom", dialogApply: "dialogApply", dialogCancel: "dialogCancel", dialogDelete: "dialogDelete", dialogRename: "dialogRename", dialogInsert: "dialogInsert", dialogRemove: "dialogRemove", dialogRemoveLink: "dialogRemoveLink", delete: "delete", rename: "rename", nameBox: "nameBox", formulaInput: "formulaInput", addSheet: "addSheet", sheetsMenu: "sheetsMenu", view: "view", merge: "merge", mergeHorizontally: "mergeHorizontally", mergeVertically: "mergeVertically", mergeAll: "mergeAll", unmerge: "unmerge", insertLink: "insertLink", increaseDecimal: "increaseDecimal", decreaseDecimal: "decreaseDecimal", increaseFontSize: "increaseFontSize", decreaseFontSize: "decreaseFontSize", openUnsupported: "openUnsupported", modifyMerged: "modifyMerged", cannotModifyDisabled: "cannotModifyDisabled", dialogOk: "dialogOk", dialogError: "dialogError", duplicateSheetName: "duplicateSheetName", copy: "copy", cut: "cut", paste: "paste", hideRow: "hideRow", unhideRow: "unhideRow", hideColumn: "hideColumn", unhideColumn: "unhideColumn", sheetDelete: "sheetDelete", sheetRename: "sheetRename", sheetHide: "sheetHide", sheetDuplicate: "sheetDuplicate", sheetMoveLeft: "sheetMoveLeft", sheetMoveRight: "sheetMoveRight", invalidNameError: "invalidNameError", cantSortMixedCells: "cantSortMixedCells", filterApply: "filterApply", filterClear: "filterClear", filterMenuAll: "filterMenuAll", blankValues: "blankValues", filterContainsOperator: "filterContainsOperator", filterNotContainsOperator: "filterNotContainsOperator", filterStartsWithOperator: "filterStartsWithOperator", filterEndsWithOperator: "filterEndsWithOperator", filterMatchesOperator: "filterMatchesOperator", filterNotMatchesOperator: "filterNotMatchesOperator", filterDateEqOperator: "filterDateEqOperator", filterDateNotEqOperator: "filterDateNotEqOperator", filterBeforeOperator: "filterBeforeOperator", filterAfterOperator: "filterAfterOperator", filterEqOperator: "filterEqOperator", filterNotEqOperator: "filterNotEqOperator", filterGteOperator: "filterGteOperator", filterGtOperator: "filterGtOperator", filterLteOperator: "filterLteOperator", filterLtOperator: "filterLtOperator", filterNoneOperator: "filterNoneOperator", filterMenuConditionItem: "filterMenuConditionItem", filterMenuValueItem: "filterMenuValueItem", sort: "sort", sortAsc: "sortAsc", sortDesc: "sortDesc", unsort: "unsort", cantSortNullRef: "cantSortNullRef" }, usesInheritance: true, ngImport: i0 });
469
585
  }
470
586
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MessagesDirective, decorators: [{
471
587
  type: Directive,
@@ -695,4 +811,62 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
695
811
  type: Input
696
812
  }], invalidNameError: [{
697
813
  type: Input
814
+ }], cantSortMixedCells: [{
815
+ type: Input
816
+ }], filterApply: [{
817
+ type: Input
818
+ }], filterClear: [{
819
+ type: Input
820
+ }], filterMenuAll: [{
821
+ type: Input
822
+ }], blankValues: [{
823
+ type: Input
824
+ }], filterContainsOperator: [{
825
+ type: Input
826
+ }], filterNotContainsOperator: [{
827
+ type: Input
828
+ }], filterStartsWithOperator: [{
829
+ type: Input
830
+ }], filterEndsWithOperator: [{
831
+ type: Input
832
+ }], filterMatchesOperator: [{
833
+ type: Input
834
+ }], filterNotMatchesOperator: [{
835
+ type: Input
836
+ }], filterDateEqOperator: [{
837
+ type: Input
838
+ }], filterDateNotEqOperator: [{
839
+ type: Input
840
+ }], filterBeforeOperator: [{
841
+ type: Input
842
+ }], filterAfterOperator: [{
843
+ type: Input
844
+ }], filterEqOperator: [{
845
+ type: Input
846
+ }], filterNotEqOperator: [{
847
+ type: Input
848
+ }], filterGteOperator: [{
849
+ type: Input
850
+ }], filterGtOperator: [{
851
+ type: Input
852
+ }], filterLteOperator: [{
853
+ type: Input
854
+ }], filterLtOperator: [{
855
+ type: Input
856
+ }], filterNoneOperator: [{
857
+ type: Input
858
+ }], filterMenuConditionItem: [{
859
+ type: Input
860
+ }], filterMenuValueItem: [{
861
+ type: Input
862
+ }], sort: [{
863
+ type: Input
864
+ }], sortAsc: [{
865
+ type: Input
866
+ }], sortDesc: [{
867
+ type: Input
868
+ }], unsort: [{
869
+ type: Input
870
+ }], cantSortNullRef: [{
871
+ type: Input
698
872
  }] } });
@@ -0,0 +1,5 @@
1
+ /**-----------------------------------------------------------------------------------------
2
+ * Copyright © 2025 Progress Software Corporation. All rights reserved.
3
+ * Licensed under commercial license. See LICENSE.md in the project root for more information
4
+ *-------------------------------------------------------------------------------------------*/
5
+ export {};
@@ -7,3 +7,5 @@ export * from './main-menu-item';
7
7
  export * from './events';
8
8
  export * from './cell-editor-options';
9
9
  export * from './cell-editor-action-args';
10
+ export * from './filter-menu-item';
11
+ export * from './range-filter-value';
@@ -0,0 +1,5 @@
1
+ /**-----------------------------------------------------------------------------------------
2
+ * Copyright © 2025 Progress Software Corporation. All rights reserved.
3
+ * Licensed under commercial license. See LICENSE.md in the project root for more information
4
+ *-------------------------------------------------------------------------------------------*/
5
+ export {};
@@ -10,7 +10,7 @@ export const packageMetadata = {
10
10
  productName: 'Kendo UI for Angular',
11
11
  productCode: 'KENDOUIANGULAR',
12
12
  productCodes: ['KENDOUIANGULAR'],
13
- publishDate: 1765533088,
14
- version: '21.3.1-develop.1',
13
+ publishDate: 1766140362,
14
+ version: '21.4.0-develop.10',
15
15
  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',
16
16
  };