@progress/kendo-angular-spreadsheet 21.4.0-develop.14 → 21.4.0-develop.16

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.
@@ -47,6 +47,10 @@ export class MessagesDirective extends ComponentMessages {
47
47
  * Sets the title for the **Data Validation** tool.
48
48
  */
49
49
  dataValidation;
50
+ /**
51
+ * Sets the title for the **Filter** tool.
52
+ */
53
+ filter;
50
54
  /**
51
55
  * Sets the label text for the Cell Range input in the data validation dialog.
52
56
  */
@@ -580,8 +584,12 @@ export class MessagesDirective extends ComponentMessages {
580
584
  * The content of the dialog that warns about sorting incorrect (empty) range.
581
585
  */
582
586
  cantSortNullRef;
587
+ /**
588
+ * The content of the dialog that warns about sorting multiple range selection.
589
+ */
590
+ cantSortMultipleSelection;
583
591
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MessagesDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
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 });
592
+ 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", filter: "filter", 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", cantSortMultipleSelection: "cantSortMultipleSelection" }, usesInheritance: true, ngImport: i0 });
585
593
  }
586
594
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MessagesDirective, decorators: [{
587
595
  type: Directive,
@@ -607,6 +615,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
607
615
  type: Input
608
616
  }], dataValidation: [{
609
617
  type: Input
618
+ }], filter: [{
619
+ type: Input
610
620
  }], validationCellRange: [{
611
621
  type: Input
612
622
  }], validationCriteria: [{
@@ -869,4 +879,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
869
879
  type: Input
870
880
  }], cantSortNullRef: [{
871
881
  type: Input
882
+ }], cantSortMultipleSelection: [{
883
+ type: Input
872
884
  }] } });
@@ -10,7 +10,7 @@ export const packageMetadata = {
10
10
  productName: 'Kendo UI for Angular',
11
11
  productCode: 'KENDOUIANGULAR',
12
12
  productCodes: ['KENDOUIANGULAR'],
13
- publishDate: 1767861237,
14
- version: '21.4.0-develop.14',
13
+ publishDate: 1767878724,
14
+ version: '21.4.0-develop.16',
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
  };
@@ -302,6 +302,10 @@ export class SpreadsheetComponent {
302
302
  get selectedCondition() {
303
303
  return this._selectedCondition;
304
304
  }
305
+ /**
306
+ * @hidden
307
+ */
308
+ currentFilterOptions = null;
305
309
  _selectedCondition;
306
310
  _sheetsInfo;
307
311
  _activeSheet;
@@ -309,7 +313,6 @@ export class SpreadsheetComponent {
309
313
  currentRange;
310
314
  subs = new Subscription();
311
315
  filterMenuOpened = false;
312
- currentFilterOptions = null;
313
316
  popupRef;
314
317
  popupPositionChangeSub;
315
318
  constructor(ngZone, intl, host, localization, spreadsheetService, toolsService, errorService, dialogService, popupService, container, cdr) {
@@ -1206,14 +1209,19 @@ export class SpreadsheetComponent {
1206
1209
  return uniqueValuesSorted;
1207
1210
  }
1208
1211
  removeDuplicateValues(values) {
1209
- const uniqueMap = new Map();
1212
+ const hash = new Map();
1213
+ const result = [];
1210
1214
  for (const item of values) {
1211
- const key = `${item.dataType}:${item.value}`;
1212
- if (!uniqueMap.has(key)) {
1213
- uniqueMap.set(key, item);
1215
+ const existingItem = hash.get(item.value);
1216
+ if (!existingItem) {
1217
+ hash.set(item.value, item);
1218
+ result.push(item);
1219
+ }
1220
+ else if (!existingItem.checked && item.checked) {
1221
+ existingItem.checked = true;
1214
1222
  }
1215
1223
  }
1216
- return Array.from(uniqueMap.values());
1224
+ return result;
1217
1225
  }
1218
1226
  compareFilterValues(a, b) {
1219
1227
  if (a.dataType === b.dataType) {
@@ -1296,6 +1304,8 @@ export class SpreadsheetComponent {
1296
1304
  bold="Bold"
1297
1305
  i18n-dataValidation="kendo.spreadsheet.dataValidation|The title of the Data Validation tool."
1298
1306
  dataValidation="Data Validation"
1307
+ i18n-filter="kendo.spreadsheet.filter|The title of the Filter tool."
1308
+ filter="Filter"
1299
1309
  i18n-validationCellRange="kendo.spreadsheet.validationCellRange|The text of the Cell Range label in the data validation dialog."
1300
1310
  validationCellRange="Cell Range"
1301
1311
  i18n-validationCriteria="kendo.spreadsheet.validationCriteria|The text of the Criteria dropdown list label in the data validation dialog."
@@ -1514,6 +1524,8 @@ export class SpreadsheetComponent {
1514
1524
  cantSortMixedCells="Cannot sort range containing cells of mixed shapes"
1515
1525
  i18n-cantSortNullRef="kendo.spreadsheet.cantSortNullRef|The content of the dialog that warns about sorting incorrect (empty) range."
1516
1526
  cantSortNullRef="Cannot sort empty selection"
1527
+ i18n-cantSortMultipleSelection="kendo.spreadsheet.cantSortMultipleSelection|The content of the dialog that warns about sorting multiple range selection."
1528
+ cantSortMultipleSelection="Cannot sort multiple selection"
1517
1529
  i18n-filterApply="kendo.spreadsheet.filterApply|The text of the **Apply** button in the filter menu."
1518
1530
  filterApply="Apply"
1519
1531
  i18n-filterClear="kendo.spreadsheet.filterClear|The text of the **Clear** button in the filter menu."
@@ -1823,6 +1835,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
1823
1835
  bold="Bold"
1824
1836
  i18n-dataValidation="kendo.spreadsheet.dataValidation|The title of the Data Validation tool."
1825
1837
  dataValidation="Data Validation"
1838
+ i18n-filter="kendo.spreadsheet.filter|The title of the Filter tool."
1839
+ filter="Filter"
1826
1840
  i18n-validationCellRange="kendo.spreadsheet.validationCellRange|The text of the Cell Range label in the data validation dialog."
1827
1841
  validationCellRange="Cell Range"
1828
1842
  i18n-validationCriteria="kendo.spreadsheet.validationCriteria|The text of the Criteria dropdown list label in the data validation dialog."
@@ -2041,6 +2055,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
2041
2055
  cantSortMixedCells="Cannot sort range containing cells of mixed shapes"
2042
2056
  i18n-cantSortNullRef="kendo.spreadsheet.cantSortNullRef|The content of the dialog that warns about sorting incorrect (empty) range."
2043
2057
  cantSortNullRef="Cannot sort empty selection"
2058
+ i18n-cantSortMultipleSelection="kendo.spreadsheet.cantSortMultipleSelection|The content of the dialog that warns about sorting multiple range selection."
2059
+ cantSortMultipleSelection="Cannot sort multiple selection"
2044
2060
  i18n-filterApply="kendo.spreadsheet.filterApply|The text of the **Apply** button in the filter menu."
2045
2061
  filterApply="Apply"
2046
2062
  i18n-filterClear="kendo.spreadsheet.filterClear|The text of the **Clear** button in the filter menu."
@@ -34,6 +34,10 @@ export class SpreadsheetFilterDirective extends SpreadsheetCommandButton {
34
34
  this.toggleActiveState(button);
35
35
  }));
36
36
  }
37
+ ngOnInit() {
38
+ super.ngOnInit();
39
+ this.toggleActiveState(this.button);
40
+ }
37
41
  ngOnDestroy() {
38
42
  this.subs.unsubscribe();
39
43
  }
@@ -46,8 +50,18 @@ export class SpreadsheetFilterDirective extends SpreadsheetCommandButton {
46
50
  this.spreadsheetService.spreadsheet.executeCommand(options);
47
51
  }
48
52
  toggleActiveState(button, range) {
49
- const currentSheet = this.spreadsheetService.spreadsheet.activeSheet();
50
- const currentRange = isPresent(range) ? range : currentSheet.range(currentSheet.activeCell());
53
+ if (range?._ref?.length > 1 || range?._ref?.refs?.length > 1) {
54
+ if (!button.disabled) {
55
+ button.disabled = true;
56
+ this.cdr.detectChanges();
57
+ }
58
+ return;
59
+ }
60
+ const currentSheet = this.spreadsheetService.spreadsheet?.activeSheet();
61
+ if (!currentSheet) {
62
+ return;
63
+ }
64
+ const currentRange = isPresent(range) ? range : currentSheet.selection();
51
65
  let disabled = true;
52
66
  let rangeHasValue = false;
53
67
  currentRange.values().forEach((nestedArr) => {
@@ -39,9 +39,14 @@ export class SpreadsheetSortDirective {
39
39
  return;
40
40
  }
41
41
  const dir = item.value;
42
+ const currentFilterOptions = this.spreadsheetService.spreadsheetComponent?.currentFilterOptions;
43
+ const currentRange = currentFilterOptions?.range;
44
+ const noHeaderRange = currentRange?.resize({ top: 1 });
42
45
  const options = {
43
46
  value: dir,
44
- sheet: false
47
+ sheet: false,
48
+ operatingRange: noHeaderRange,
49
+ column: currentFilterOptions?.column
45
50
  };
46
51
  this.spreadsheetService.spreadsheet.executeCommand({ command: 'SortCommand', options });
47
52
  }
@@ -47,8 +47,8 @@ const packageMetadata = {
47
47
  productName: 'Kendo UI for Angular',
48
48
  productCode: 'KENDOUIANGULAR',
49
49
  productCodes: ['KENDOUIANGULAR'],
50
- publishDate: 1767861237,
51
- version: '21.4.0-develop.14',
50
+ publishDate: 1767878724,
51
+ version: '21.4.0-develop.16',
52
52
  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',
53
53
  };
54
54
 
@@ -3452,6 +3452,10 @@ class MessagesDirective extends ComponentMessages {
3452
3452
  * Sets the title for the **Data Validation** tool.
3453
3453
  */
3454
3454
  dataValidation;
3455
+ /**
3456
+ * Sets the title for the **Filter** tool.
3457
+ */
3458
+ filter;
3455
3459
  /**
3456
3460
  * Sets the label text for the Cell Range input in the data validation dialog.
3457
3461
  */
@@ -3985,8 +3989,12 @@ class MessagesDirective extends ComponentMessages {
3985
3989
  * The content of the dialog that warns about sorting incorrect (empty) range.
3986
3990
  */
3987
3991
  cantSortNullRef;
3992
+ /**
3993
+ * The content of the dialog that warns about sorting multiple range selection.
3994
+ */
3995
+ cantSortMultipleSelection;
3988
3996
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MessagesDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
3989
- 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 });
3997
+ 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", filter: "filter", 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", cantSortMultipleSelection: "cantSortMultipleSelection" }, usesInheritance: true, ngImport: i0 });
3990
3998
  }
3991
3999
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MessagesDirective, decorators: [{
3992
4000
  type: Directive,
@@ -4012,6 +4020,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
4012
4020
  type: Input
4013
4021
  }], dataValidation: [{
4014
4022
  type: Input
4023
+ }], filter: [{
4024
+ type: Input
4015
4025
  }], validationCellRange: [{
4016
4026
  type: Input
4017
4027
  }], validationCriteria: [{
@@ -4274,6 +4284,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
4274
4284
  type: Input
4275
4285
  }], cantSortNullRef: [{
4276
4286
  type: Input
4287
+ }], cantSortMultipleSelection: [{
4288
+ type: Input
4277
4289
  }] } });
4278
4290
 
4279
4291
  /**
@@ -5102,6 +5114,10 @@ class SpreadsheetFilterDirective extends SpreadsheetCommandButton {
5102
5114
  this.toggleActiveState(button);
5103
5115
  }));
5104
5116
  }
5117
+ ngOnInit() {
5118
+ super.ngOnInit();
5119
+ this.toggleActiveState(this.button);
5120
+ }
5105
5121
  ngOnDestroy() {
5106
5122
  this.subs.unsubscribe();
5107
5123
  }
@@ -5114,8 +5130,18 @@ class SpreadsheetFilterDirective extends SpreadsheetCommandButton {
5114
5130
  this.spreadsheetService.spreadsheet.executeCommand(options);
5115
5131
  }
5116
5132
  toggleActiveState(button, range) {
5117
- const currentSheet = this.spreadsheetService.spreadsheet.activeSheet();
5118
- const currentRange = isPresent(range) ? range : currentSheet.range(currentSheet.activeCell());
5133
+ if (range?._ref?.length > 1 || range?._ref?.refs?.length > 1) {
5134
+ if (!button.disabled) {
5135
+ button.disabled = true;
5136
+ this.cdr.detectChanges();
5137
+ }
5138
+ return;
5139
+ }
5140
+ const currentSheet = this.spreadsheetService.spreadsheet?.activeSheet();
5141
+ if (!currentSheet) {
5142
+ return;
5143
+ }
5144
+ const currentRange = isPresent(range) ? range : currentSheet.selection();
5119
5145
  let disabled = true;
5120
5146
  let rangeHasValue = false;
5121
5147
  currentRange.values().forEach((nestedArr) => {
@@ -5448,9 +5474,14 @@ class SpreadsheetSortDirective {
5448
5474
  return;
5449
5475
  }
5450
5476
  const dir = item.value;
5477
+ const currentFilterOptions = this.spreadsheetService.spreadsheetComponent?.currentFilterOptions;
5478
+ const currentRange = currentFilterOptions?.range;
5479
+ const noHeaderRange = currentRange?.resize({ top: 1 });
5451
5480
  const options = {
5452
5481
  value: dir,
5453
- sheet: false
5482
+ sheet: false,
5483
+ operatingRange: noHeaderRange,
5484
+ column: currentFilterOptions?.column
5454
5485
  };
5455
5486
  this.spreadsheetService.spreadsheet.executeCommand({ command: 'SortCommand', options });
5456
5487
  }
@@ -5687,6 +5718,10 @@ class SpreadsheetComponent {
5687
5718
  get selectedCondition() {
5688
5719
  return this._selectedCondition;
5689
5720
  }
5721
+ /**
5722
+ * @hidden
5723
+ */
5724
+ currentFilterOptions = null;
5690
5725
  _selectedCondition;
5691
5726
  _sheetsInfo;
5692
5727
  _activeSheet;
@@ -5694,7 +5729,6 @@ class SpreadsheetComponent {
5694
5729
  currentRange;
5695
5730
  subs = new Subscription();
5696
5731
  filterMenuOpened = false;
5697
- currentFilterOptions = null;
5698
5732
  popupRef;
5699
5733
  popupPositionChangeSub;
5700
5734
  constructor(ngZone, intl, host, localization, spreadsheetService, toolsService, errorService, dialogService, popupService, container, cdr) {
@@ -6591,14 +6625,19 @@ class SpreadsheetComponent {
6591
6625
  return uniqueValuesSorted;
6592
6626
  }
6593
6627
  removeDuplicateValues(values) {
6594
- const uniqueMap = new Map();
6628
+ const hash = new Map();
6629
+ const result = [];
6595
6630
  for (const item of values) {
6596
- const key = `${item.dataType}:${item.value}`;
6597
- if (!uniqueMap.has(key)) {
6598
- uniqueMap.set(key, item);
6631
+ const existingItem = hash.get(item.value);
6632
+ if (!existingItem) {
6633
+ hash.set(item.value, item);
6634
+ result.push(item);
6635
+ }
6636
+ else if (!existingItem.checked && item.checked) {
6637
+ existingItem.checked = true;
6599
6638
  }
6600
6639
  }
6601
- return Array.from(uniqueMap.values());
6640
+ return result;
6602
6641
  }
6603
6642
  compareFilterValues(a, b) {
6604
6643
  if (a.dataType === b.dataType) {
@@ -6681,6 +6720,8 @@ class SpreadsheetComponent {
6681
6720
  bold="Bold"
6682
6721
  i18n-dataValidation="kendo.spreadsheet.dataValidation|The title of the Data Validation tool."
6683
6722
  dataValidation="Data Validation"
6723
+ i18n-filter="kendo.spreadsheet.filter|The title of the Filter tool."
6724
+ filter="Filter"
6684
6725
  i18n-validationCellRange="kendo.spreadsheet.validationCellRange|The text of the Cell Range label in the data validation dialog."
6685
6726
  validationCellRange="Cell Range"
6686
6727
  i18n-validationCriteria="kendo.spreadsheet.validationCriteria|The text of the Criteria dropdown list label in the data validation dialog."
@@ -6899,6 +6940,8 @@ class SpreadsheetComponent {
6899
6940
  cantSortMixedCells="Cannot sort range containing cells of mixed shapes"
6900
6941
  i18n-cantSortNullRef="kendo.spreadsheet.cantSortNullRef|The content of the dialog that warns about sorting incorrect (empty) range."
6901
6942
  cantSortNullRef="Cannot sort empty selection"
6943
+ i18n-cantSortMultipleSelection="kendo.spreadsheet.cantSortMultipleSelection|The content of the dialog that warns about sorting multiple range selection."
6944
+ cantSortMultipleSelection="Cannot sort multiple selection"
6902
6945
  i18n-filterApply="kendo.spreadsheet.filterApply|The text of the **Apply** button in the filter menu."
6903
6946
  filterApply="Apply"
6904
6947
  i18n-filterClear="kendo.spreadsheet.filterClear|The text of the **Clear** button in the filter menu."
@@ -7208,6 +7251,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
7208
7251
  bold="Bold"
7209
7252
  i18n-dataValidation="kendo.spreadsheet.dataValidation|The title of the Data Validation tool."
7210
7253
  dataValidation="Data Validation"
7254
+ i18n-filter="kendo.spreadsheet.filter|The title of the Filter tool."
7255
+ filter="Filter"
7211
7256
  i18n-validationCellRange="kendo.spreadsheet.validationCellRange|The text of the Cell Range label in the data validation dialog."
7212
7257
  validationCellRange="Cell Range"
7213
7258
  i18n-validationCriteria="kendo.spreadsheet.validationCriteria|The text of the Criteria dropdown list label in the data validation dialog."
@@ -7426,6 +7471,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
7426
7471
  cantSortMixedCells="Cannot sort range containing cells of mixed shapes"
7427
7472
  i18n-cantSortNullRef="kendo.spreadsheet.cantSortNullRef|The content of the dialog that warns about sorting incorrect (empty) range."
7428
7473
  cantSortNullRef="Cannot sort empty selection"
7474
+ i18n-cantSortMultipleSelection="kendo.spreadsheet.cantSortMultipleSelection|The content of the dialog that warns about sorting multiple range selection."
7475
+ cantSortMultipleSelection="Cannot sort multiple selection"
7429
7476
  i18n-filterApply="kendo.spreadsheet.filterApply|The text of the **Apply** button in the filter menu."
7430
7477
  filterApply="Apply"
7431
7478
  i18n-filterClear="kendo.spreadsheet.filterClear|The text of the **Clear** button in the filter menu."
@@ -44,6 +44,10 @@ export declare class MessagesDirective extends ComponentMessages {
44
44
  * Sets the title for the **Data Validation** tool.
45
45
  */
46
46
  dataValidation: string;
47
+ /**
48
+ * Sets the title for the **Filter** tool.
49
+ */
50
+ filter: string;
47
51
  /**
48
52
  * Sets the label text for the Cell Range input in the data validation dialog.
49
53
  */
@@ -575,6 +579,10 @@ export declare class MessagesDirective extends ComponentMessages {
575
579
  * The content of the dialog that warns about sorting incorrect (empty) range.
576
580
  */
577
581
  cantSortNullRef: string;
582
+ /**
583
+ * The content of the dialog that warns about sorting multiple range selection.
584
+ */
585
+ cantSortMultipleSelection: string;
578
586
  static ɵfac: i0.ɵɵFactoryDeclaration<MessagesDirective, never>;
579
- static ɵdir: i0.ɵɵDirectiveDeclaration<MessagesDirective, "[kendoSpreadsheetMessages]", never, { "home": { "alias": "home"; "required": false; }; "file": { "alias": "file"; "required": false; }; "insert": { "alias": "insert"; "required": false; }; "formatTab": { "alias": "formatTab"; "required": false; }; "dataTab": { "alias": "dataTab"; "required": false; }; "saveFile": { "alias": "saveFile"; "required": false; }; "loadFile": { "alias": "loadFile"; "required": false; }; "bold": { "alias": "bold"; "required": false; }; "dataValidation": { "alias": "dataValidation"; "required": false; }; "validationCellRange": { "alias": "validationCellRange"; "required": false; }; "validationCriteria": { "alias": "validationCriteria"; "required": false; }; "validationComparer": { "alias": "validationComparer"; "required": false; }; "validationMinValue": { "alias": "validationMinValue"; "required": false; }; "validationMaxValue": { "alias": "validationMaxValue"; "required": false; }; "validationStartValue": { "alias": "validationStartValue"; "required": false; }; "validationEndValue": { "alias": "validationEndValue"; "required": false; }; "validationValue": { "alias": "validationValue"; "required": false; }; "validationShowListButtonCheckbox": { "alias": "validationShowListButtonCheckbox"; "required": false; }; "validationShowDateButtonCheckbox": { "alias": "validationShowDateButtonCheckbox"; "required": false; }; "validationIgnoreBlankCheckbox": { "alias": "validationIgnoreBlankCheckbox"; "required": false; }; "validationOnInvalidData": { "alias": "validationOnInvalidData"; "required": false; }; "validationRejectInput": { "alias": "validationRejectInput"; "required": false; }; "validationShowWarning": { "alias": "validationShowWarning"; "required": false; }; "validationShowHint": { "alias": "validationShowHint"; "required": false; }; "anyValueValidationCriteria": { "alias": "anyValueValidationCriteria"; "required": false; }; "numberValidationCriteria": { "alias": "numberValidationCriteria"; "required": false; }; "textValidationCriteria": { "alias": "textValidationCriteria"; "required": false; }; "dateValidationCriteria": { "alias": "dateValidationCriteria"; "required": false; }; "customFormulaValidationCriteria": { "alias": "customFormulaValidationCriteria"; "required": false; }; "listValidationCriteria": { "alias": "listValidationCriteria"; "required": false; }; "greaterThanValidationComparer": { "alias": "greaterThanValidationComparer"; "required": false; }; "lessThanValidationComparer": { "alias": "lessThanValidationComparer"; "required": false; }; "betweenValidationComparer": { "alias": "betweenValidationComparer"; "required": false; }; "notBetweenValidationComparer": { "alias": "notBetweenValidationComparer"; "required": false; }; "equalToValidationComparer": { "alias": "equalToValidationComparer"; "required": false; }; "notEqualToValidationComparer": { "alias": "notEqualToValidationComparer"; "required": false; }; "greaterThanOrEqualToValidationComparer": { "alias": "greaterThanOrEqualToValidationComparer"; "required": false; }; "lessThanOrEqualToValidationComparer": { "alias": "lessThanOrEqualToValidationComparer"; "required": false; }; "validationHintMessage": { "alias": "validationHintMessage"; "required": false; }; "validationHintTitle": { "alias": "validationHintTitle"; "required": false; }; "italic": { "alias": "italic"; "required": false; }; "underline": { "alias": "underline"; "required": false; }; "format": { "alias": "format"; "required": false; }; "fontFamily": { "alias": "fontFamily"; "required": false; }; "fontSize": { "alias": "fontSize"; "required": false; }; "undo": { "alias": "undo"; "required": false; }; "redo": { "alias": "redo"; "required": false; }; "background": { "alias": "background"; "required": false; }; "color": { "alias": "color"; "required": false; }; "gridLines": { "alias": "gridLines"; "required": false; }; "addColumnLeft": { "alias": "addColumnLeft"; "required": false; }; "addColumnRight": { "alias": "addColumnRight"; "required": false; }; "addRowBelow": { "alias": "addRowBelow"; "required": false; }; "addRowAbove": { "alias": "addRowAbove"; "required": false; }; "deleteColumn": { "alias": "deleteColumn"; "required": false; }; "deleteRow": { "alias": "deleteRow"; "required": false; }; "wrap": { "alias": "wrap"; "required": false; }; "align": { "alias": "align"; "required": false; }; "alignHorizontal": { "alias": "alignHorizontal"; "required": false; }; "alignVertical": { "alias": "alignVertical"; "required": false; }; "alignLeft": { "alias": "alignLeft"; "required": false; }; "alignCenter": { "alias": "alignCenter"; "required": false; }; "alignRight": { "alias": "alignRight"; "required": false; }; "alignJustify": { "alias": "alignJustify"; "required": false; }; "alignTop": { "alias": "alignTop"; "required": false; }; "alignMiddle": { "alias": "alignMiddle"; "required": false; }; "alignBottom": { "alias": "alignBottom"; "required": false; }; "dialogApply": { "alias": "dialogApply"; "required": false; }; "dialogCancel": { "alias": "dialogCancel"; "required": false; }; "dialogDelete": { "alias": "dialogDelete"; "required": false; }; "dialogRename": { "alias": "dialogRename"; "required": false; }; "dialogInsert": { "alias": "dialogInsert"; "required": false; }; "dialogRemove": { "alias": "dialogRemove"; "required": false; }; "dialogRemoveLink": { "alias": "dialogRemoveLink"; "required": false; }; "delete": { "alias": "delete"; "required": false; }; "rename": { "alias": "rename"; "required": false; }; "nameBox": { "alias": "nameBox"; "required": false; }; "formulaInput": { "alias": "formulaInput"; "required": false; }; "addSheet": { "alias": "addSheet"; "required": false; }; "sheetsMenu": { "alias": "sheetsMenu"; "required": false; }; "view": { "alias": "view"; "required": false; }; "merge": { "alias": "merge"; "required": false; }; "mergeHorizontally": { "alias": "mergeHorizontally"; "required": false; }; "mergeVertically": { "alias": "mergeVertically"; "required": false; }; "mergeAll": { "alias": "mergeAll"; "required": false; }; "unmerge": { "alias": "unmerge"; "required": false; }; "insertLink": { "alias": "insertLink"; "required": false; }; "increaseDecimal": { "alias": "increaseDecimal"; "required": false; }; "decreaseDecimal": { "alias": "decreaseDecimal"; "required": false; }; "increaseFontSize": { "alias": "increaseFontSize"; "required": false; }; "decreaseFontSize": { "alias": "decreaseFontSize"; "required": false; }; "openUnsupported": { "alias": "openUnsupported"; "required": false; }; "modifyMerged": { "alias": "modifyMerged"; "required": false; }; "cannotModifyDisabled": { "alias": "cannotModifyDisabled"; "required": false; }; "dialogOk": { "alias": "dialogOk"; "required": false; }; "dialogError": { "alias": "dialogError"; "required": false; }; "duplicateSheetName": { "alias": "duplicateSheetName"; "required": false; }; "copy": { "alias": "copy"; "required": false; }; "cut": { "alias": "cut"; "required": false; }; "paste": { "alias": "paste"; "required": false; }; "hideRow": { "alias": "hideRow"; "required": false; }; "unhideRow": { "alias": "unhideRow"; "required": false; }; "hideColumn": { "alias": "hideColumn"; "required": false; }; "unhideColumn": { "alias": "unhideColumn"; "required": false; }; "sheetDelete": { "alias": "sheetDelete"; "required": false; }; "sheetRename": { "alias": "sheetRename"; "required": false; }; "sheetHide": { "alias": "sheetHide"; "required": false; }; "sheetDuplicate": { "alias": "sheetDuplicate"; "required": false; }; "sheetMoveLeft": { "alias": "sheetMoveLeft"; "required": false; }; "sheetMoveRight": { "alias": "sheetMoveRight"; "required": false; }; "invalidNameError": { "alias": "invalidNameError"; "required": false; }; "cantSortMixedCells": { "alias": "cantSortMixedCells"; "required": false; }; "filterApply": { "alias": "filterApply"; "required": false; }; "filterClear": { "alias": "filterClear"; "required": false; }; "filterMenuAll": { "alias": "filterMenuAll"; "required": false; }; "blankValues": { "alias": "blankValues"; "required": false; }; "filterContainsOperator": { "alias": "filterContainsOperator"; "required": false; }; "filterNotContainsOperator": { "alias": "filterNotContainsOperator"; "required": false; }; "filterStartsWithOperator": { "alias": "filterStartsWithOperator"; "required": false; }; "filterEndsWithOperator": { "alias": "filterEndsWithOperator"; "required": false; }; "filterMatchesOperator": { "alias": "filterMatchesOperator"; "required": false; }; "filterNotMatchesOperator": { "alias": "filterNotMatchesOperator"; "required": false; }; "filterDateEqOperator": { "alias": "filterDateEqOperator"; "required": false; }; "filterDateNotEqOperator": { "alias": "filterDateNotEqOperator"; "required": false; }; "filterBeforeOperator": { "alias": "filterBeforeOperator"; "required": false; }; "filterAfterOperator": { "alias": "filterAfterOperator"; "required": false; }; "filterEqOperator": { "alias": "filterEqOperator"; "required": false; }; "filterNotEqOperator": { "alias": "filterNotEqOperator"; "required": false; }; "filterGteOperator": { "alias": "filterGteOperator"; "required": false; }; "filterGtOperator": { "alias": "filterGtOperator"; "required": false; }; "filterLteOperator": { "alias": "filterLteOperator"; "required": false; }; "filterLtOperator": { "alias": "filterLtOperator"; "required": false; }; "filterNoneOperator": { "alias": "filterNoneOperator"; "required": false; }; "filterMenuConditionItem": { "alias": "filterMenuConditionItem"; "required": false; }; "filterMenuValueItem": { "alias": "filterMenuValueItem"; "required": false; }; "sort": { "alias": "sort"; "required": false; }; "sortAsc": { "alias": "sortAsc"; "required": false; }; "sortDesc": { "alias": "sortDesc"; "required": false; }; "unsort": { "alias": "unsort"; "required": false; }; "cantSortNullRef": { "alias": "cantSortNullRef"; "required": false; }; }, {}, never, never, true, never>;
587
+ static ɵdir: i0.ɵɵDirectiveDeclaration<MessagesDirective, "[kendoSpreadsheetMessages]", never, { "home": { "alias": "home"; "required": false; }; "file": { "alias": "file"; "required": false; }; "insert": { "alias": "insert"; "required": false; }; "formatTab": { "alias": "formatTab"; "required": false; }; "dataTab": { "alias": "dataTab"; "required": false; }; "saveFile": { "alias": "saveFile"; "required": false; }; "loadFile": { "alias": "loadFile"; "required": false; }; "bold": { "alias": "bold"; "required": false; }; "dataValidation": { "alias": "dataValidation"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; "validationCellRange": { "alias": "validationCellRange"; "required": false; }; "validationCriteria": { "alias": "validationCriteria"; "required": false; }; "validationComparer": { "alias": "validationComparer"; "required": false; }; "validationMinValue": { "alias": "validationMinValue"; "required": false; }; "validationMaxValue": { "alias": "validationMaxValue"; "required": false; }; "validationStartValue": { "alias": "validationStartValue"; "required": false; }; "validationEndValue": { "alias": "validationEndValue"; "required": false; }; "validationValue": { "alias": "validationValue"; "required": false; }; "validationShowListButtonCheckbox": { "alias": "validationShowListButtonCheckbox"; "required": false; }; "validationShowDateButtonCheckbox": { "alias": "validationShowDateButtonCheckbox"; "required": false; }; "validationIgnoreBlankCheckbox": { "alias": "validationIgnoreBlankCheckbox"; "required": false; }; "validationOnInvalidData": { "alias": "validationOnInvalidData"; "required": false; }; "validationRejectInput": { "alias": "validationRejectInput"; "required": false; }; "validationShowWarning": { "alias": "validationShowWarning"; "required": false; }; "validationShowHint": { "alias": "validationShowHint"; "required": false; }; "anyValueValidationCriteria": { "alias": "anyValueValidationCriteria"; "required": false; }; "numberValidationCriteria": { "alias": "numberValidationCriteria"; "required": false; }; "textValidationCriteria": { "alias": "textValidationCriteria"; "required": false; }; "dateValidationCriteria": { "alias": "dateValidationCriteria"; "required": false; }; "customFormulaValidationCriteria": { "alias": "customFormulaValidationCriteria"; "required": false; }; "listValidationCriteria": { "alias": "listValidationCriteria"; "required": false; }; "greaterThanValidationComparer": { "alias": "greaterThanValidationComparer"; "required": false; }; "lessThanValidationComparer": { "alias": "lessThanValidationComparer"; "required": false; }; "betweenValidationComparer": { "alias": "betweenValidationComparer"; "required": false; }; "notBetweenValidationComparer": { "alias": "notBetweenValidationComparer"; "required": false; }; "equalToValidationComparer": { "alias": "equalToValidationComparer"; "required": false; }; "notEqualToValidationComparer": { "alias": "notEqualToValidationComparer"; "required": false; }; "greaterThanOrEqualToValidationComparer": { "alias": "greaterThanOrEqualToValidationComparer"; "required": false; }; "lessThanOrEqualToValidationComparer": { "alias": "lessThanOrEqualToValidationComparer"; "required": false; }; "validationHintMessage": { "alias": "validationHintMessage"; "required": false; }; "validationHintTitle": { "alias": "validationHintTitle"; "required": false; }; "italic": { "alias": "italic"; "required": false; }; "underline": { "alias": "underline"; "required": false; }; "format": { "alias": "format"; "required": false; }; "fontFamily": { "alias": "fontFamily"; "required": false; }; "fontSize": { "alias": "fontSize"; "required": false; }; "undo": { "alias": "undo"; "required": false; }; "redo": { "alias": "redo"; "required": false; }; "background": { "alias": "background"; "required": false; }; "color": { "alias": "color"; "required": false; }; "gridLines": { "alias": "gridLines"; "required": false; }; "addColumnLeft": { "alias": "addColumnLeft"; "required": false; }; "addColumnRight": { "alias": "addColumnRight"; "required": false; }; "addRowBelow": { "alias": "addRowBelow"; "required": false; }; "addRowAbove": { "alias": "addRowAbove"; "required": false; }; "deleteColumn": { "alias": "deleteColumn"; "required": false; }; "deleteRow": { "alias": "deleteRow"; "required": false; }; "wrap": { "alias": "wrap"; "required": false; }; "align": { "alias": "align"; "required": false; }; "alignHorizontal": { "alias": "alignHorizontal"; "required": false; }; "alignVertical": { "alias": "alignVertical"; "required": false; }; "alignLeft": { "alias": "alignLeft"; "required": false; }; "alignCenter": { "alias": "alignCenter"; "required": false; }; "alignRight": { "alias": "alignRight"; "required": false; }; "alignJustify": { "alias": "alignJustify"; "required": false; }; "alignTop": { "alias": "alignTop"; "required": false; }; "alignMiddle": { "alias": "alignMiddle"; "required": false; }; "alignBottom": { "alias": "alignBottom"; "required": false; }; "dialogApply": { "alias": "dialogApply"; "required": false; }; "dialogCancel": { "alias": "dialogCancel"; "required": false; }; "dialogDelete": { "alias": "dialogDelete"; "required": false; }; "dialogRename": { "alias": "dialogRename"; "required": false; }; "dialogInsert": { "alias": "dialogInsert"; "required": false; }; "dialogRemove": { "alias": "dialogRemove"; "required": false; }; "dialogRemoveLink": { "alias": "dialogRemoveLink"; "required": false; }; "delete": { "alias": "delete"; "required": false; }; "rename": { "alias": "rename"; "required": false; }; "nameBox": { "alias": "nameBox"; "required": false; }; "formulaInput": { "alias": "formulaInput"; "required": false; }; "addSheet": { "alias": "addSheet"; "required": false; }; "sheetsMenu": { "alias": "sheetsMenu"; "required": false; }; "view": { "alias": "view"; "required": false; }; "merge": { "alias": "merge"; "required": false; }; "mergeHorizontally": { "alias": "mergeHorizontally"; "required": false; }; "mergeVertically": { "alias": "mergeVertically"; "required": false; }; "mergeAll": { "alias": "mergeAll"; "required": false; }; "unmerge": { "alias": "unmerge"; "required": false; }; "insertLink": { "alias": "insertLink"; "required": false; }; "increaseDecimal": { "alias": "increaseDecimal"; "required": false; }; "decreaseDecimal": { "alias": "decreaseDecimal"; "required": false; }; "increaseFontSize": { "alias": "increaseFontSize"; "required": false; }; "decreaseFontSize": { "alias": "decreaseFontSize"; "required": false; }; "openUnsupported": { "alias": "openUnsupported"; "required": false; }; "modifyMerged": { "alias": "modifyMerged"; "required": false; }; "cannotModifyDisabled": { "alias": "cannotModifyDisabled"; "required": false; }; "dialogOk": { "alias": "dialogOk"; "required": false; }; "dialogError": { "alias": "dialogError"; "required": false; }; "duplicateSheetName": { "alias": "duplicateSheetName"; "required": false; }; "copy": { "alias": "copy"; "required": false; }; "cut": { "alias": "cut"; "required": false; }; "paste": { "alias": "paste"; "required": false; }; "hideRow": { "alias": "hideRow"; "required": false; }; "unhideRow": { "alias": "unhideRow"; "required": false; }; "hideColumn": { "alias": "hideColumn"; "required": false; }; "unhideColumn": { "alias": "unhideColumn"; "required": false; }; "sheetDelete": { "alias": "sheetDelete"; "required": false; }; "sheetRename": { "alias": "sheetRename"; "required": false; }; "sheetHide": { "alias": "sheetHide"; "required": false; }; "sheetDuplicate": { "alias": "sheetDuplicate"; "required": false; }; "sheetMoveLeft": { "alias": "sheetMoveLeft"; "required": false; }; "sheetMoveRight": { "alias": "sheetMoveRight"; "required": false; }; "invalidNameError": { "alias": "invalidNameError"; "required": false; }; "cantSortMixedCells": { "alias": "cantSortMixedCells"; "required": false; }; "filterApply": { "alias": "filterApply"; "required": false; }; "filterClear": { "alias": "filterClear"; "required": false; }; "filterMenuAll": { "alias": "filterMenuAll"; "required": false; }; "blankValues": { "alias": "blankValues"; "required": false; }; "filterContainsOperator": { "alias": "filterContainsOperator"; "required": false; }; "filterNotContainsOperator": { "alias": "filterNotContainsOperator"; "required": false; }; "filterStartsWithOperator": { "alias": "filterStartsWithOperator"; "required": false; }; "filterEndsWithOperator": { "alias": "filterEndsWithOperator"; "required": false; }; "filterMatchesOperator": { "alias": "filterMatchesOperator"; "required": false; }; "filterNotMatchesOperator": { "alias": "filterNotMatchesOperator"; "required": false; }; "filterDateEqOperator": { "alias": "filterDateEqOperator"; "required": false; }; "filterDateNotEqOperator": { "alias": "filterDateNotEqOperator"; "required": false; }; "filterBeforeOperator": { "alias": "filterBeforeOperator"; "required": false; }; "filterAfterOperator": { "alias": "filterAfterOperator"; "required": false; }; "filterEqOperator": { "alias": "filterEqOperator"; "required": false; }; "filterNotEqOperator": { "alias": "filterNotEqOperator"; "required": false; }; "filterGteOperator": { "alias": "filterGteOperator"; "required": false; }; "filterGtOperator": { "alias": "filterGtOperator"; "required": false; }; "filterLteOperator": { "alias": "filterLteOperator"; "required": false; }; "filterLtOperator": { "alias": "filterLtOperator"; "required": false; }; "filterNoneOperator": { "alias": "filterNoneOperator"; "required": false; }; "filterMenuConditionItem": { "alias": "filterMenuConditionItem"; "required": false; }; "filterMenuValueItem": { "alias": "filterMenuValueItem"; "required": false; }; "sort": { "alias": "sort"; "required": false; }; "sortAsc": { "alias": "sortAsc"; "required": false; }; "sortDesc": { "alias": "sortDesc"; "required": false; }; "unsort": { "alias": "unsort"; "required": false; }; "cantSortNullRef": { "alias": "cantSortNullRef"; "required": false; }; "cantSortMultipleSelection": { "alias": "cantSortMultipleSelection"; "required": false; }; }, {}, never, never, true, never>;
580
588
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@progress/kendo-angular-spreadsheet",
3
- "version": "21.4.0-develop.14",
3
+ "version": "21.4.0-develop.16",
4
4
  "description": "A Spreadsheet Component for Angular",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "author": "Progress",
@@ -19,7 +19,7 @@
19
19
  "package": {
20
20
  "productName": "Kendo UI for Angular",
21
21
  "productCode": "KENDOUIANGULAR",
22
- "publishDate": 1767861237,
22
+ "publishDate": 1767878724,
23
23
  "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"
24
24
  }
25
25
  },
@@ -29,26 +29,26 @@
29
29
  "@angular/core": "18 - 21",
30
30
  "@angular/platform-browser": "18 - 21",
31
31
  "@progress/kendo-licensing": "^1.7.0",
32
- "@progress/kendo-angular-buttons": "21.4.0-develop.14",
33
- "@progress/kendo-angular-common": "21.4.0-develop.14",
34
- "@progress/kendo-angular-dialog": "21.4.0-develop.14",
35
- "@progress/kendo-angular-dropdowns": "21.4.0-develop.14",
36
- "@progress/kendo-angular-icons": "21.4.0-develop.14",
37
- "@progress/kendo-angular-inputs": "21.4.0-develop.14",
38
- "@progress/kendo-angular-treeview": "21.4.0-develop.14",
39
- "@progress/kendo-angular-dateinputs": "21.4.0-develop.14",
40
- "@progress/kendo-angular-intl": "21.4.0-develop.14",
41
- "@progress/kendo-angular-l10n": "21.4.0-develop.14",
42
- "@progress/kendo-angular-label": "21.4.0-develop.14",
43
- "@progress/kendo-angular-layout": "21.4.0-develop.14",
44
- "@progress/kendo-angular-menu": "21.4.0-develop.14",
45
- "@progress/kendo-angular-popup": "21.4.0-develop.14",
46
- "@progress/kendo-angular-toolbar": "21.4.0-develop.14",
32
+ "@progress/kendo-angular-buttons": "21.4.0-develop.16",
33
+ "@progress/kendo-angular-common": "21.4.0-develop.16",
34
+ "@progress/kendo-angular-dialog": "21.4.0-develop.16",
35
+ "@progress/kendo-angular-dropdowns": "21.4.0-develop.16",
36
+ "@progress/kendo-angular-icons": "21.4.0-develop.16",
37
+ "@progress/kendo-angular-inputs": "21.4.0-develop.16",
38
+ "@progress/kendo-angular-treeview": "21.4.0-develop.16",
39
+ "@progress/kendo-angular-dateinputs": "21.4.0-develop.16",
40
+ "@progress/kendo-angular-intl": "21.4.0-develop.16",
41
+ "@progress/kendo-angular-l10n": "21.4.0-develop.16",
42
+ "@progress/kendo-angular-label": "21.4.0-develop.16",
43
+ "@progress/kendo-angular-layout": "21.4.0-develop.16",
44
+ "@progress/kendo-angular-menu": "21.4.0-develop.16",
45
+ "@progress/kendo-angular-popup": "21.4.0-develop.16",
46
+ "@progress/kendo-angular-toolbar": "21.4.0-develop.16",
47
47
  "rxjs": "^6.5.3 || ^7.0.0"
48
48
  },
49
49
  "dependencies": {
50
50
  "tslib": "^2.3.1",
51
- "@progress/kendo-angular-schematics": "21.4.0-develop.14",
51
+ "@progress/kendo-angular-schematics": "21.4.0-develop.16",
52
52
  "@progress/jszip-esm": "^1.0.3",
53
53
  "@progress/kendo-common": "^1.0.1",
54
54
  "@progress/kendo-date-math": "^1.5.10",
@@ -11,8 +11,8 @@ function default_1(options) {
11
11
  // Peer dependency of icons
12
12
  '@progress/kendo-svg-icons': '^4.0.0',
13
13
  // peer deps of the dropdowns
14
- '@progress/kendo-angular-navigation': '21.4.0-develop.14',
15
- '@progress/kendo-angular-treeview': '21.4.0-develop.14'
14
+ '@progress/kendo-angular-navigation': '21.4.0-develop.16',
15
+ '@progress/kendo-angular-treeview': '21.4.0-develop.16'
16
16
  } });
17
17
  return (0, schematics_1.externalSchematic)('@progress/kendo-angular-schematics', 'ng-add', finalOptions);
18
18
  }
@@ -197,6 +197,13 @@ export declare class SpreadsheetComponent implements AfterViewInit, OnChanges, O
197
197
  conditionValue: any;
198
198
  set selectedCondition(value: any);
199
199
  get selectedCondition(): any;
200
+ /**
201
+ * @hidden
202
+ */
203
+ currentFilterOptions: {
204
+ column: number;
205
+ range: any;
206
+ } | null;
200
207
  private _selectedCondition;
201
208
  private _sheetsInfo;
202
209
  private _activeSheet;
@@ -204,7 +211,6 @@ export declare class SpreadsheetComponent implements AfterViewInit, OnChanges, O
204
211
  private currentRange;
205
212
  private subs;
206
213
  private filterMenuOpened;
207
- private currentFilterOptions;
208
214
  private popupRef;
209
215
  private popupPositionChangeSub;
210
216
  constructor(ngZone: NgZone, intl: IntlService, host: ElementRef, localization: LocalizationService, spreadsheetService: SpreadsheetService, toolsService: SpreadsheetToolsService, errorService: ErrorHandlingService, dialogService: DialogService, popupService: PopupService, container: ViewContainerRef, cdr: ChangeDetectorRef);
@@ -2,7 +2,7 @@
2
2
  * Copyright © 2026 Progress Software Corporation. All rights reserved.
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
- import { ChangeDetectorRef, OnDestroy } from '@angular/core';
5
+ import { ChangeDetectorRef, OnDestroy, OnInit } from '@angular/core';
6
6
  import { ToolBarButtonComponent } from '@progress/kendo-angular-toolbar';
7
7
  import { SpreadsheetLocalizationService } from '../../localization/spreadsheet-localization.service';
8
8
  import { SpreadsheetService } from '../../common/spreadsheet.service';
@@ -12,9 +12,10 @@ import * as i0 from "@angular/core";
12
12
  /**
13
13
  * @hidden
14
14
  */
15
- export declare class SpreadsheetFilterDirective extends SpreadsheetCommandButton implements OnDestroy {
15
+ export declare class SpreadsheetFilterDirective extends SpreadsheetCommandButton implements OnInit, OnDestroy {
16
16
  private cdr;
17
17
  constructor(button: ToolBarButtonComponent, localization: SpreadsheetLocalizationService, spreadsheetService: SpreadsheetService, toolsService: SpreadsheetToolsService, cdr: ChangeDetectorRef);
18
+ ngOnInit(): void;
18
19
  ngOnDestroy(): void;
19
20
  protected clickHandler(): void;
20
21
  private toggleActiveState;