@progress/kendo-angular-spreadsheet 23.3.0-develop.22 → 23.3.0-develop.23

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.
package/README.md CHANGED
@@ -19,13 +19,23 @@ The Kendo UI for Angular Spreadsheet allows you to create, edit, and manipulate
19
19
 
20
20
  Among the many features which the Kendo UI for Angular Spreadsheet delivers are:
21
21
 
22
- * Toolbar Tools—The Spreadsheet component provides a variety of built-in tools that help you to create, edit, and style the sheet data. [Read more about the built-in toolbar tools of the Spreadsheet...](https://www.telerik.com/kendo-angular-ui/components/spreadsheet/tools)
22
+ * Data Binding—The Spreadsheet loads data through the `sheets` property which accepts a collection of `SheetDescriptor` objects that define the rows, cells, columns, and formatting for each sheet. [Read more about data binding in the Spreadsheet...](https://www.telerik.com/kendo-angular-ui/components/spreadsheet/data-binding)
23
+ * Importing and Exporting Data—The Spreadsheet supports importing and exporting data in `.xlsx` (Excel) and JSON formats, and exporting the active worksheet to PDF. [Read more about data import and export in the Spreadsheet...](https://www.telerik.com/kendo-angular-ui/components/spreadsheet/data-import-export)
24
+ * Menu and Toolbar Tools—The Spreadsheet component provides a variety of built-in menu and toolbar tools that help you to create, edit, and style the sheet data. [Read more about the built-in menu and toolbar tools of the Spreadsheet...](https://www.telerik.com/kendo-angular-ui/components/spreadsheet/tools)
25
+ * Filtering and Sorting—The Spreadsheet provides filtering and sorting capabilities to help you manage large datasets. [Read more about filtering and sorting in the Spreadsheet...](https://www.telerik.com/kendo-angular-ui/components/spreadsheet/filtering-sorting)
26
+ * Data Validation—The Spreadsheet provides a built-in data validation tool that allows you to restrict the type of data that can be entered into a cell or range of cells. [Read more about the data validation tool of the Spreadsheet...](https://www.telerik.com/kendo-angular-ui/components/spreadsheet/validations)
27
+ * Custom Cell Editors—The Spreadsheet allows you to create custom cell editors that extend the built-in editing capabilities with specialized input controls for specific data types. [Read more about implementing custom cell editors for the Spreadsheet...](https://www.telerik.com/kendo-angular-ui/components/spreadsheet/custom-cell-editors)
28
+ * Disabled Cells—The Spreadsheet lets you mark individual cells or ranges as disabled to prevent users from modifying protected data. [Read more about disabling cells in the Spreadsheet...](https://www.telerik.com/kendo-angular-ui/components/spreadsheet/disabled-cells)
29
+ * Cell Comments—The Spreadsheet allows you to attach text comments to individual cells as annotations that provide additional context. [Read more about cell comments in the Spreadsheet...](https://www.telerik.com/kendo-angular-ui/components/spreadsheet/cell-comments)
23
30
  * Action Bar—The Spreadsheet action bar allows you to control the cell selection and calculate cell values by entering formulas into the dedicated formula input. [Read more about the action bar capabilities of the Spreadsheet...](https://www.telerik.com/kendo-angular-ui/components/spreadsheet/action-bar)
31
+ * Built-in Formulas—The Spreadsheet supports a comprehensive set of built-in formulas for mathematical, statistical, logical, text, and date operations. [Read more about the built-in formulas of the Spreadsheet...](https://www.telerik.com/kendo-angular-ui/components/spreadsheet/built-in-formulas)
24
32
  * Sheets Bar—The sheets bar provides a convenient way to rename, duplicate, and delete sheets as necessary. [Read more about the sheets bar options of the Spreadsheet...](https://www.telerik.com/kendo-angular-ui/components/spreadsheet/sheets-bar)
33
+ * Context Menu—The Spreadsheet context menu provides quick access to common actions. You can modify the context menu items, add custom actions, or prevent the menu from opening. [Read more about the context menu of the Spreadsheet...](https://www.telerik.com/kendo-angular-ui/components/spreadsheet/context-menu)
25
34
  * Appearance—You can use the options provided by the Spreadsheet component to customize its appearance. [Read more about the customizable appearance of the Spreadsheet...](https://www.telerik.com/kendo-angular-ui/components/spreadsheet/appearance)
26
35
  * Events—The Spreadsheet exposes several events to let you easily handle any file operations logic. [Read more about the events of the Spreadsheet...](https://www.telerik.com/kendo-angular-ui/components/spreadsheet/events)
27
- * Accessibility—The Spreadsheet is accessible for screen readers and supports WAI-ARIA attributes. [Read more about the accessibility of the Spreadsheet...](https://www.telerik.com/kendo-angular-ui/components/spreadsheet/accessibility)
28
36
  * Keyboard Navigation—The Spreadsheet supports a number of keyboard shortcuts which allow users to accomplish various commands. [Read more about the keyboard navigation of the Spreadsheet...](https://www.telerik.com/kendo-angular-ui/components/spreadsheet/keyboard-navigation)
37
+ * Globalization—The Spreadsheet provides internationalization, localization, and right-to-left support to adapt the component to different languages and cultures. [Read more about the globalization of the Spreadsheet...](https://www.telerik.com/kendo-angular-ui/components/spreadsheet/globalization)
38
+ * Accessibility—The Spreadsheet is accessible for screen readers and supports WAI-ARIA attributes. [Read more about the accessibility of the Spreadsheet...](https://www.telerik.com/kendo-angular-ui/components/spreadsheet/accessibility)
29
39
 
30
40
  ## Support Options
31
41
 
@@ -0,0 +1,17 @@
1
+ /**-----------------------------------------------------------------------------------------
2
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
3
+ * Licensed under commercial license. See LICENSE.md in the project root for more information
4
+ *-------------------------------------------------------------------------------------------*/
5
+ import { SpreadsheetContextMenuAction } from "./models";
6
+ /**
7
+ * @hidden
8
+ */
9
+ export declare const COMMON_ITEMS: SpreadsheetContextMenuAction[];
10
+ /**
11
+ * @hidden
12
+ */
13
+ export declare const ROWHEADER_ITEMS: SpreadsheetContextMenuAction[];
14
+ /**
15
+ * @hidden
16
+ */
17
+ export declare const COLUMNHEADER_ITEMS: SpreadsheetContextMenuAction[];
@@ -48,8 +48,8 @@ const packageMetadata = {
48
48
  productName: 'Kendo UI for Angular',
49
49
  productCode: 'KENDOUIANGULAR',
50
50
  productCodes: ['KENDOUIANGULAR'],
51
- publishDate: 1774956619,
52
- version: '23.3.0-develop.22',
51
+ publishDate: 1775110795,
52
+ version: '23.3.0-develop.23',
53
53
  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',
54
54
  };
55
55
 
@@ -192,6 +192,43 @@ class SpreadsheetPDFExportEvent extends PreventableEvent {
192
192
  this.sender = sender;
193
193
  }
194
194
  }
195
+ /**
196
+ * Provides the event data for the Spreadsheet `contextMenu` event.
197
+ */
198
+ class SpreadsheetContextMenuEvent extends PreventableEvent {
199
+ /**
200
+ * The context menu items for the current selection.
201
+ */
202
+ items;
203
+ /**
204
+ * The Spreadsheet component instance.
205
+ */
206
+ spreadsheet;
207
+ /**
208
+ * The Spreadsheet Range object representing the currently selected cells.
209
+ * Provides methods to apply values, formatting, and styling to the Spreadsheet cells using the original event's data.
210
+ */
211
+ range;
212
+ /**
213
+ * Represents the Rectangle object that provides position and dimension information about the active range, useful for custom positioning logic.
214
+ */
215
+ rect;
216
+ /**
217
+ * The current Spreadsheet View instance, giving access to the broader Spreadsheet context.
218
+ */
219
+ view;
220
+ /**
221
+ * The type of target that opens the context menu.
222
+ */
223
+ targetType;
224
+ /**
225
+ * @hidden
226
+ */
227
+ constructor(options) {
228
+ super();
229
+ Object.assign(this, options);
230
+ }
231
+ }
195
232
 
196
233
  /**
197
234
  * @hidden
@@ -5657,6 +5694,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
5657
5694
  }]
5658
5695
  }], ctorParameters: () => [{ type: i1$3.ToolBarDropDownButtonComponent }, { type: SpreadsheetLocalizationService }, { type: SpreadsheetService }] });
5659
5696
 
5697
+ /**
5698
+ * @hidden
5699
+ */
5700
+ const COMMON_ITEMS = ['copy', 'cut', 'paste', 'separator', 'mergeAll', 'mergeHorizontally', 'mergeVertically', 'unmerge', 'separator', 'insertLink'];
5701
+ /**
5702
+ * @hidden
5703
+ */
5704
+ const ROWHEADER_ITEMS = ['separator', 'addRowAbove', 'addRowBelow', 'deleteRow', 'hideRow', 'unhideRow'];
5705
+ /**
5706
+ * @hidden
5707
+ */
5708
+ const COLUMNHEADER_ITEMS = ['separator', 'addColumnLeft', 'addColumnRight', 'deleteColumn', 'hideColumn', 'unhideColumn'];
5709
+
5660
5710
  /**
5661
5711
  * Represents the [Kendo UI Spreadsheet component for Angular](https://www.telerik.com/kendo-angular-ui/components/spreadsheet).
5662
5712
  *
@@ -5684,7 +5734,7 @@ class SpreadsheetComponent {
5684
5734
  formulaCellInputRef;
5685
5735
  nameBoxRef;
5686
5736
  dialogContainer;
5687
- contextMenu;
5737
+ contextMenuComponent;
5688
5738
  filterMenuTemplate;
5689
5739
  hostClass = true;
5690
5740
  role = 'application';
@@ -5869,6 +5919,10 @@ class SpreadsheetComponent {
5869
5919
  * Fires when a clipboard action (cut, copy, or paste) occurs in the Spreadsheet.
5870
5920
  */
5871
5921
  clipboard = new EventEmitter();
5922
+ /**
5923
+ * Fires when the user right-clicks within the Spreadsheet view and before the context menu is opened.
5924
+ */
5925
+ contextMenu = new EventEmitter();
5872
5926
  formulaFxIcon = formulaFxIcon;
5873
5927
  folderOpenIcon = folderOpenIcon;
5874
5928
  downloadIcon = downloadIcon;
@@ -6041,17 +6095,41 @@ class SpreadsheetComponent {
6041
6095
  }
6042
6096
  const selection = this.spreadsheetWidget.activeSheet().select();
6043
6097
  const { topLeft, bottomRight } = selection;
6044
- const isRange = e.targetType === 'cell' && (topLeft.row !== bottomRight.row || topLeft.col !== bottomRight.col);
6045
- const targetType = isRange ? 'range' : e.targetType;
6046
- const isSingleCell = topLeft.row === bottomRight.row && topLeft.col === bottomRight.col;
6047
- const isVerticalOnly = topLeft.col === bottomRight.col && topLeft.row !== bottomRight.row;
6048
- const isHorizontalOnly = topLeft.row === bottomRight.row && topLeft.col !== bottomRight.col;
6098
+ const isRange = e.targetType === 'cell' && (topLeft?.row !== bottomRight?.row || topLeft?.col !== bottomRight?.col);
6099
+ let targetType = isRange ? 'range' : e.targetType;
6100
+ if (targetType === 'columnheader') {
6101
+ targetType = 'columnHeader';
6102
+ }
6103
+ else if (targetType === 'rowheader') {
6104
+ targetType = 'rowHeader';
6105
+ }
6106
+ const isSingleCell = topLeft?.row === bottomRight?.row && topLeft?.col === bottomRight?.col;
6107
+ const isVerticalOnly = topLeft?.col === bottomRight?.col && topLeft?.row !== bottomRight?.row;
6108
+ const isHorizontalOnly = topLeft?.row === bottomRight?.row && topLeft?.col !== bottomRight?.col;
6049
6109
  this.contextMenuItems = this.contextMenuItemsForTarget(targetType, e.showUnhide, e.showUnmerge, {
6050
6110
  isSingleCell,
6051
6111
  isVerticalOnly,
6052
6112
  isHorizontalOnly
6053
6113
  });
6054
- this.contextMenu.show({ top: e.originalEvent.pageY, left: e.originalEvent.pageX });
6114
+ const eventArgs = {
6115
+ targetType,
6116
+ view: this.spreadsheetWidget.view,
6117
+ spreadsheet: this,
6118
+ range: selection,
6119
+ rect: this.spreadsheetWidget.view.activeCellRectangle(),
6120
+ items: this.contextMenuItems
6121
+ };
6122
+ const event = new SpreadsheetContextMenuEvent(eventArgs);
6123
+ this.contextMenu.emit(event);
6124
+ if (!event.isDefaultPrevented()) {
6125
+ this.contextMenuItems = event.items.map(item => {
6126
+ if (item.type === 'custom') {
6127
+ return item;
6128
+ }
6129
+ return this.getDefaultItemPerAction(item.type, { disableAllMerge: isSingleCell, isVerticalOnly, isHorizontalOnly, unmerge: e.showUnmerge, unhide: e.showUnhide });
6130
+ });
6131
+ this.contextMenuComponent.show({ top: e.originalEvent.pageY, left: e.originalEvent.pageX });
6132
+ }
6055
6133
  }
6056
6134
  /**
6057
6135
  * @hidden
@@ -6070,7 +6148,8 @@ class SpreadsheetComponent {
6070
6148
  */
6071
6149
  onContextMenuSelect(e) {
6072
6150
  let command;
6073
- switch (e.item.id) {
6151
+ let customAction;
6152
+ switch (e.item.type) {
6074
6153
  case 'cut':
6075
6154
  command = { command: 'ToolbarCutCommand', options: { workbook: this.spreadsheetWidget.workbook } };
6076
6155
  break;
@@ -6122,10 +6201,23 @@ class SpreadsheetComponent {
6122
6201
  case 'addColumnRight':
6123
6202
  command = { command: 'AddColumnCommand', options: { value: 'right' } };
6124
6203
  break;
6204
+ case 'custom':
6205
+ customAction = e.item.action;
6125
6206
  }
6126
6207
  if (command) {
6127
6208
  this.spreadsheetWidget.executeCommand(command);
6128
6209
  }
6210
+ else if (customAction) {
6211
+ const activeSheet = this.spreadsheetWidget.activeSheet();
6212
+ const actionContext = {
6213
+ item: e.item,
6214
+ spreadsheet: this,
6215
+ range: activeSheet.range(activeSheet.activeCell()),
6216
+ rect: this.spreadsheetWidget.view.activeCellRectangle(),
6217
+ view: this.spreadsheetWidget.view
6218
+ };
6219
+ customAction(actionContext);
6220
+ }
6129
6221
  }
6130
6222
  /**
6131
6223
  * @hidden
@@ -6393,120 +6485,48 @@ class SpreadsheetComponent {
6393
6485
  contextMenuItemsForTarget(target, unhide, unmerge, selectionInfo = { isSingleCell: false, isVerticalOnly: false, isHorizontalOnly: false }) {
6394
6486
  const { isSingleCell, isVerticalOnly, isHorizontalOnly } = selectionInfo;
6395
6487
  const disableAllMerge = isSingleCell;
6396
- const commonItems = [{
6397
- text: this.messageFor('copy'),
6398
- icon: commandIcons.copy,
6399
- svgIcon: commandSVGIcons.copy,
6400
- id: 'copy'
6401
- }, {
6402
- text: this.messageFor('cut'),
6403
- icon: commandIcons.cut,
6404
- svgIcon: commandSVGIcons.cut,
6405
- id: 'cut'
6406
- }, {
6407
- text: this.messageFor('paste'),
6408
- icon: commandIcons.paste,
6409
- svgIcon: commandSVGIcons.paste,
6410
- id: 'paste',
6411
- disabled: true
6412
- }, {
6413
- separator: true
6414
- }, {
6415
- text: this.messageFor('mergeAll'),
6416
- icon: commandIcons.mergeAll,
6417
- svgIcon: commandSVGIcons.mergeAll,
6418
- id: 'mergeAll',
6419
- disabled: disableAllMerge
6420
- }, {
6421
- text: this.messageFor('mergeHorizontally'),
6422
- icon: commandIcons.mergeHorizontally,
6423
- svgIcon: commandSVGIcons.mergeHorizontally,
6424
- id: 'mergeHorizontally',
6425
- disabled: disableAllMerge || isVerticalOnly
6426
- }, {
6427
- text: this.messageFor('mergeVertically'),
6428
- icon: commandIcons.mergeVertically,
6429
- svgIcon: commandSVGIcons.mergeVertically,
6430
- id: 'mergeVertically',
6431
- disabled: disableAllMerge || isHorizontalOnly
6432
- }, {
6433
- text: this.messageFor('unmerge'),
6434
- icon: commandIcons.unmerge,
6435
- svgIcon: commandSVGIcons.unmerge,
6436
- id: 'unmerge',
6437
- disabled: !unmerge
6438
- }, {
6439
- separator: true
6440
- }, {
6441
- text: this.messageFor('insertLink'),
6442
- icon: commandIcons.insertLink,
6443
- svgIcon: commandSVGIcons.insertLink,
6444
- id: 'insertLink'
6445
- }];
6446
- if (target === 'rowheader') {
6447
- commonItems.push({
6448
- separator: true
6449
- }, {
6450
- text: this.messageFor('addRowAbove'),
6451
- icon: commandIcons.addRowAbove,
6452
- svgIcon: commandSVGIcons.addRowAbove,
6453
- id: 'addRowAbove',
6454
- }, {
6455
- text: this.messageFor('addRowBelow'),
6456
- icon: commandIcons.addRowBelow,
6457
- svgIcon: commandSVGIcons.addRowBelow,
6458
- id: 'addRowBelow',
6459
- }, {
6460
- text: this.messageFor('deleteRow'),
6461
- icon: commandIcons.deleteRow,
6462
- svgIcon: commandSVGIcons.deleteRow,
6463
- id: 'deleteRow',
6464
- }, {
6465
- text: this.messageFor('hideRow'),
6466
- icon: commandIcons.hideRow,
6467
- svgIcon: commandSVGIcons.hideRow,
6468
- id: 'hideRow',
6469
- }, {
6470
- text: this.messageFor('unhideRow'),
6471
- icon: commandIcons.unhideRow,
6472
- svgIcon: commandSVGIcons.unhideRow,
6473
- id: 'unhideRow',
6474
- disabled: !unhide
6475
- });
6488
+ const commonItems = COMMON_ITEMS.map(actionType => this.getDefaultItemPerAction(actionType, { disableAllMerge, isVerticalOnly, isHorizontalOnly, unmerge, unhide }));
6489
+ if (target === 'rowHeader') {
6490
+ const rowHeaderItems = ROWHEADER_ITEMS.map(actionType => this.getDefaultItemPerAction(actionType, { disableAllMerge, isVerticalOnly, isHorizontalOnly, unmerge, unhide }));
6491
+ commonItems.push(...rowHeaderItems);
6476
6492
  }
6477
- if (target === 'columnheader') {
6478
- commonItems.push({
6479
- separator: true
6480
- }, {
6481
- text: this.messageFor('addColumnLeft'),
6482
- icon: commandIcons.addColumnLeft,
6483
- svgIcon: commandSVGIcons.addColumnLeft,
6484
- id: 'addColumnLeft',
6485
- }, {
6486
- text: this.messageFor('addColumnRight'),
6487
- icon: commandIcons.addColumnRight,
6488
- svgIcon: commandSVGIcons.addColumnRight,
6489
- id: 'addColumnRight',
6490
- }, {
6491
- text: this.messageFor('deleteColumn'),
6492
- icon: commandIcons.deleteColumn,
6493
- svgIcon: commandSVGIcons.deleteColumn,
6494
- id: 'deleteColumn',
6495
- }, {
6496
- text: this.messageFor('hideColumn'),
6497
- icon: commandIcons.hideColumn,
6498
- svgIcon: commandSVGIcons.hideColumn,
6499
- id: 'hideColumn',
6500
- }, {
6501
- text: this.messageFor('unhideColumn'),
6502
- icon: commandIcons.unhideColumn,
6503
- svgIcon: commandSVGIcons.unhideColumn,
6504
- id: 'unhideColumn',
6505
- disabled: !unhide
6506
- });
6493
+ if (target === 'columnHeader') {
6494
+ const columnHeaderItems = COLUMNHEADER_ITEMS.map(actionType => this.getDefaultItemPerAction(actionType, { disableAllMerge, isVerticalOnly, isHorizontalOnly, unmerge, unhide }));
6495
+ commonItems.push(...columnHeaderItems);
6507
6496
  }
6508
6497
  return commonItems;
6509
6498
  }
6499
+ getDefaultItemPerAction(actionType, selectionInfo) {
6500
+ return {
6501
+ type: actionType,
6502
+ text: this.messageFor(actionType),
6503
+ icon: commandIcons[actionType],
6504
+ svgIcon: commandSVGIcons[actionType],
6505
+ disabled: this.getActionDisabledState(actionType, selectionInfo),
6506
+ separator: actionType === 'separator',
6507
+ action: undefined
6508
+ };
6509
+ }
6510
+ getActionDisabledState(actionType, selectionInfo) {
6511
+ const { disableAllMerge, isVerticalOnly, isHorizontalOnly, unmerge, unhide } = selectionInfo;
6512
+ switch (actionType) {
6513
+ case 'paste':
6514
+ return true;
6515
+ case 'mergeAll':
6516
+ return disableAllMerge;
6517
+ case 'mergeHorizontally':
6518
+ return disableAllMerge || isVerticalOnly;
6519
+ case 'mergeVertically':
6520
+ return disableAllMerge || isHorizontalOnly;
6521
+ case 'unmerge':
6522
+ return !unmerge;
6523
+ case 'unhideRow':
6524
+ case 'unhideColumn':
6525
+ return !unhide;
6526
+ default:
6527
+ return false;
6528
+ }
6529
+ }
6510
6530
  openLinkDialog() {
6511
6531
  const hasLink = isPresent(this.currentRange?.link());
6512
6532
  const dialogSettings = {
@@ -6912,7 +6932,7 @@ class SpreadsheetComponent {
6912
6932
  return false;
6913
6933
  }
6914
6934
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: SpreadsheetComponent, deps: [{ token: i0.NgZone }, { token: i1$4.IntlService }, { token: i0.ElementRef }, { token: i1.LocalizationService }, { token: SpreadsheetService }, { token: SpreadsheetToolsService }, { token: ErrorHandlingService }, { token: i1$2.DialogService }, { token: i1$1.PopupService }, { token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
6915
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: SpreadsheetComponent, isStandalone: true, selector: "kendo-spreadsheet", inputs: { menuItems: "menuItems", overflow: "overflow", formulaListMaxHeight: "formulaListMaxHeight", activeSheet: "activeSheet", sheets: "sheets", columns: "columns", columnWidth: "columnWidth", defaultCellStyle: "defaultCellStyle", headerHeight: "headerHeight", headerWidth: "headerWidth", rowHeight: "rowHeight", rows: "rows", cellEditors: "cellEditors", images: "images", pdfExportSettings: "pdfExportSettings", excelExportSettings: "excelExportSettings", excel: "excel" }, outputs: { change: "change", formatChange: "formatChange", selectionChange: "selectionChange", excelExport: "excelExport", excelImport: "excelImport", pdfExport: "pdfExport", activeSheetChange: "activeSheetChange", clipboard: "clipboard" }, host: { properties: { "class.k-spreadsheet": "this.hostClass", "attr.role": "this.role" } }, providers: [
6935
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: SpreadsheetComponent, isStandalone: true, selector: "kendo-spreadsheet", inputs: { menuItems: "menuItems", overflow: "overflow", formulaListMaxHeight: "formulaListMaxHeight", activeSheet: "activeSheet", sheets: "sheets", columns: "columns", columnWidth: "columnWidth", defaultCellStyle: "defaultCellStyle", headerHeight: "headerHeight", headerWidth: "headerWidth", rowHeight: "rowHeight", rows: "rows", cellEditors: "cellEditors", images: "images", pdfExportSettings: "pdfExportSettings", excelExportSettings: "excelExportSettings", excel: "excel" }, outputs: { change: "change", formatChange: "formatChange", selectionChange: "selectionChange", excelExport: "excelExport", excelImport: "excelImport", pdfExport: "pdfExport", activeSheetChange: "activeSheetChange", clipboard: "clipboard", contextMenu: "contextMenu" }, host: { properties: { "class.k-spreadsheet": "this.hostClass", "attr.role": "this.role" } }, providers: [
6916
6936
  SpreadsheetLocalizationService,
6917
6937
  SpreadsheetService,
6918
6938
  {
@@ -6926,7 +6946,7 @@ class SpreadsheetComponent {
6926
6946
  SpreadsheetToolsService,
6927
6947
  PopupService,
6928
6948
  ErrorHandlingService
6929
- ], viewQueries: [{ propertyName: "formulaBarInputRef", first: true, predicate: ["formulaBar"], descendants: true, read: FormulaInputDirective }, { propertyName: "formulaCellInputRef", first: true, predicate: ["formulaCell"], descendants: true, read: FormulaInputDirective }, { propertyName: "nameBoxRef", first: true, predicate: ["nameBox"], descendants: true }, { propertyName: "dialogContainer", first: true, predicate: ["dialogContainer"], descendants: true, read: ViewContainerRef }, { propertyName: "contextMenu", first: true, predicate: ["contextMenu"], descendants: true }, { propertyName: "filterMenuTemplate", first: true, predicate: ["filterMenuTemplate"], descendants: true }], exportAs: ["kendo-spreadsheet"], usesOnChanges: true, ngImport: i0, template: `
6949
+ ], viewQueries: [{ propertyName: "formulaBarInputRef", first: true, predicate: ["formulaBar"], descendants: true, read: FormulaInputDirective }, { propertyName: "formulaCellInputRef", first: true, predicate: ["formulaCell"], descendants: true, read: FormulaInputDirective }, { propertyName: "nameBoxRef", first: true, predicate: ["nameBox"], descendants: true }, { propertyName: "dialogContainer", first: true, predicate: ["dialogContainer"], descendants: true, read: ViewContainerRef }, { propertyName: "contextMenuComponent", first: true, predicate: ["contextMenu"], descendants: true }, { propertyName: "filterMenuTemplate", first: true, predicate: ["filterMenuTemplate"], descendants: true }], exportAs: ["kendo-spreadsheet"], usesOnChanges: true, ngImport: i0, template: `
6930
6950
  <ng-container
6931
6951
  kendoSpreadsheetLocalizedMessages
6932
6952
  i18n-background="kendo.spreadsheet.background|The title of the tool that changes the text background color."
@@ -7992,7 +8012,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
7992
8012
  }], dialogContainer: [{
7993
8013
  type: ViewChild,
7994
8014
  args: ['dialogContainer', { read: ViewContainerRef }]
7995
- }], contextMenu: [{
8015
+ }], contextMenuComponent: [{
7996
8016
  type: ViewChild,
7997
8017
  args: ['contextMenu']
7998
8018
  }], filterMenuTemplate: [{
@@ -8054,6 +8074,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
8054
8074
  type: Output
8055
8075
  }], clipboard: [{
8056
8076
  type: Output
8077
+ }], contextMenu: [{
8078
+ type: Output
8057
8079
  }] } });
8058
8080
 
8059
8081
  /**
@@ -8235,5 +8257,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
8235
8257
  * Generated bundle index. Do not edit.
8236
8258
  */
8237
8259
 
8238
- export { CustomMessagesComponent, FormulaInputDirective, FormulaListComponent, KENDO_SPREADSHEET, NameBoxComponent, SheetsBarComponent, SpreadsheetAddColumnLeftButtonDirective, SpreadsheetAddColumnRightButtonDirective, SpreadsheetAddRowAboveButtonDirective, SpreadsheetAddRowBelowButtonDirective, SpreadsheetBackColorComponent, SpreadsheetBoldDirective, SpreadsheetComponent, SpreadsheetDataValidationDirective, SpreadsheetDecreaseDecimalDirective, SpreadsheetDecreaseFontSizeDirective, SpreadsheetDeleteColumnButtonDirective, SpreadsheetDeleteRowButtonDirective, SpreadsheetFilterDirective, SpreadsheetFontFamilyComponent, SpreadsheetFontSizeComponent, SpreadsheetForeColorComponent, SpreadsheetFormatDirective, SpreadsheetGridLinesDirective, SpreadsheetHorizontalTextAlignDirective, SpreadsheetIncreaseDecimalDirective, SpreadsheetIncreaseFontSizeDirective, SpreadsheetInsertLinkDirective, SpreadsheetItalicDirective, SpreadsheetLoadFileComponent, SpreadsheetMergeDirective, SpreadsheetModule, SpreadsheetPDFExportDirective, SpreadsheetPDFExportEvent, SpreadsheetRedoDirective, SpreadsheetSaveFileDirective, SpreadsheetSortDirective, SpreadsheetTextAlignDirective, SpreadsheetTextWrapDirective, SpreadsheetUnderlineDirective, SpreadsheetUndoDirective, SpreadsheetVerticalTextAlignDirective };
8260
+ export { CustomMessagesComponent, FormulaInputDirective, FormulaListComponent, KENDO_SPREADSHEET, NameBoxComponent, SheetsBarComponent, SpreadsheetAddColumnLeftButtonDirective, SpreadsheetAddColumnRightButtonDirective, SpreadsheetAddRowAboveButtonDirective, SpreadsheetAddRowBelowButtonDirective, SpreadsheetBackColorComponent, SpreadsheetBoldDirective, SpreadsheetComponent, SpreadsheetContextMenuEvent, SpreadsheetDataValidationDirective, SpreadsheetDecreaseDecimalDirective, SpreadsheetDecreaseFontSizeDirective, SpreadsheetDeleteColumnButtonDirective, SpreadsheetDeleteRowButtonDirective, SpreadsheetFilterDirective, SpreadsheetFontFamilyComponent, SpreadsheetFontSizeComponent, SpreadsheetForeColorComponent, SpreadsheetFormatDirective, SpreadsheetGridLinesDirective, SpreadsheetHorizontalTextAlignDirective, SpreadsheetIncreaseDecimalDirective, SpreadsheetIncreaseFontSizeDirective, SpreadsheetInsertLinkDirective, SpreadsheetItalicDirective, SpreadsheetLoadFileComponent, SpreadsheetMergeDirective, SpreadsheetModule, SpreadsheetPDFExportDirective, SpreadsheetPDFExportEvent, SpreadsheetRedoDirective, SpreadsheetSaveFileDirective, SpreadsheetSortDirective, SpreadsheetTextAlignDirective, SpreadsheetTextWrapDirective, SpreadsheetUnderlineDirective, SpreadsheetUndoDirective, SpreadsheetVerticalTextAlignDirective };
8239
8261
 
package/index.d.ts CHANGED
@@ -8,7 +8,7 @@ export { FormulaListComponent } from './action-bar/list.component';
8
8
  export { FormulaInputDirective } from './action-bar/formula-input.directive';
9
9
  export { NameBoxComponent } from './action-bar/namebox.component';
10
10
  export { SheetsBarComponent } from './sheets-bar/sheets-bar.component';
11
- export { SheetInfo, SpreadsheetMainMenuItem as ToolbarTab, SpreadsheetChangeEvent, SpreadsheetActiveSheetChangeEvent, SpreadsheetExcelExportEvent, SpreadsheetExcelImportEvent, SpreadsheetClipboardEvent, SpreadsheetMainMenuItem, SpreadsheetCellEditorOptions, SpreadsheetCellEditorHandlerArgs, Rectangle, SpreadsheetClipboardContent, SpreadsheetClipboardEventType, SpreadsheetPaperSize, PDFExportSettings, SpreadsheetPDFExportEvent, PDFMargin } from './models';
11
+ export { SheetInfo, SpreadsheetMainMenuItem as ToolbarTab, SpreadsheetChangeEvent, SpreadsheetActiveSheetChangeEvent, SpreadsheetExcelExportEvent, SpreadsheetExcelImportEvent, SpreadsheetClipboardEvent, SpreadsheetMainMenuItem, SpreadsheetCellEditorOptions, SpreadsheetCellEditorHandlerArgs, Rectangle, SpreadsheetClipboardContent, SpreadsheetClipboardEventType, SpreadsheetPaperSize, PDFExportSettings, SpreadsheetPDFExportEvent, PDFMargin, SpreadsheetContextMenuAction, SpreadsheetContextMenuEvent, SpreadsheetContextMenuItem, SpreadsheetContextMenuTarget, ContextMenuActionFn, ContextMenuArgs } from './models';
12
12
  export * from './tools';
13
13
  export * from './directives';
14
14
  export { CustomMessagesComponent } from './localization/custom-messages.component';
@@ -2,8 +2,11 @@
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 { Range, Sheet, SpreadsheetWidget, Workbook } from "@progress/kendo-spreadsheet-common";
5
+ import { Range, Sheet, SpreadsheetWidget, Workbook, View } from "@progress/kendo-spreadsheet-common";
6
6
  import { PreventableEvent } from "@progress/kendo-angular-common";
7
+ import { SpreadsheetComponent } from "../spreadsheet.component";
8
+ import { Rectangle } from "./cell-editor-action-args";
9
+ import { SVGIcon } from "@progress/kendo-svg-icons";
7
10
  /**
8
11
  * Provides the event data for the Spreadsheet `change` event.
9
12
  */
@@ -122,6 +125,111 @@ export interface SpreadsheetClipboardContent {
122
125
  */
123
126
  mergedCells: string[];
124
127
  }
128
+ /**
129
+ * Provides the event data for the Spreadsheet `contextMenu` event.
130
+ */
131
+ export declare class SpreadsheetContextMenuEvent extends PreventableEvent {
132
+ /**
133
+ * The context menu items for the current selection.
134
+ */
135
+ items: Array<SpreadsheetContextMenuItem>;
136
+ /**
137
+ * The Spreadsheet component instance.
138
+ */
139
+ spreadsheet: SpreadsheetComponent;
140
+ /**
141
+ * The Spreadsheet Range object representing the currently selected cells.
142
+ * Provides methods to apply values, formatting, and styling to the Spreadsheet cells using the original event's data.
143
+ */
144
+ range: Range;
145
+ /**
146
+ * Represents the Rectangle object that provides position and dimension information about the active range, useful for custom positioning logic.
147
+ */
148
+ rect: Rectangle;
149
+ /**
150
+ * The current Spreadsheet View instance, giving access to the broader Spreadsheet context.
151
+ */
152
+ view: View;
153
+ /**
154
+ * The type of target that opens the context menu.
155
+ */
156
+ targetType: SpreadsheetContextMenuTarget;
157
+ /**
158
+ * @hidden
159
+ */
160
+ constructor(options: any);
161
+ }
162
+ export interface SpreadsheetContextMenuItem {
163
+ /**
164
+ * The context menu item type.
165
+ */
166
+ type: SpreadsheetContextMenuAction;
167
+ /**
168
+ * Sets the unique identifier for the context menu item.
169
+ */
170
+ id?: string | number;
171
+ /**
172
+ * Specifies the item text.
173
+ */
174
+ text?: string;
175
+ /**
176
+ * Specifies the name of the font icon that will be rendered for the item.
177
+ */
178
+ icon?: string;
179
+ /**
180
+ * Defines an SVGIcon that will be rendered for the item using a KendoSVGIcon component.
181
+ */
182
+ svgIcon?: SVGIcon;
183
+ /**
184
+ * Specifies if the item is disabled.
185
+ */
186
+ disabled?: boolean;
187
+ /**
188
+ * Specifies if this is a separator item. If set to true, other fields are disregarded.
189
+ */
190
+ separator?: boolean;
191
+ /**
192
+ * Sets a function that will be invoked when the item is selected.
193
+ */
194
+ action?: ContextMenuActionFn;
195
+ }
196
+ /**
197
+ * Provides the arguments for the callback function of a context menu item.
198
+ */
199
+ export interface ContextMenuArgs {
200
+ /**
201
+ * The item that triggered the action.
202
+ */
203
+ item: SpreadsheetContextMenuItem;
204
+ /**
205
+ * The Spreadsheet component instance.
206
+ */
207
+ spreadsheet: SpreadsheetComponent;
208
+ /**
209
+ * The Spreadsheet Range object representing the currently selected cells. Provides methods to apply values, formatting, and styling to the Spreadsheet cells using the original event's data.
210
+ */
211
+ range: Range;
212
+ /**
213
+ * Represents the Rectangle object that provides position and dimension information about the active range, useful for custom positioning logic.
214
+ */
215
+ rect: Rectangle;
216
+ /**
217
+ * The current Spreadsheet View instance, giving access to the broader Spreadsheet context.
218
+ */
219
+ view: View;
220
+ }
221
+ /**
222
+ * Represents the callback that will be invoked when a context menu item is selected.
223
+ */
224
+ export type ContextMenuActionFn = (context: ContextMenuArgs) => void;
225
+ /**
226
+ * Defines the possible values for the `targetType` that triggered opening of the context menu.
227
+ */
228
+ export type SpreadsheetContextMenuTarget = 'cell' | 'range' | 'rowHeader' | 'columnHeader';
229
+ /**
230
+ * Defines the possible values for the `type` property of a context menu item.
231
+ */
232
+ export type SpreadsheetContextMenuAction = 'copy' | 'paste' | 'cut' | 'mergeAll' | 'mergeHorizontally' | 'mergeVertically' | 'unmerge' | 'insertLink' | 'separator' | 'addRowAbove' | 'addRowBelow' | 'deleteRow' | 'hideRow' | 'unhideRow' | 'addColumnLeft' | 'addColumnRight' | 'deleteColumn' | 'hideColumn' | 'unhideColumn' | 'custom';
125
233
  /**
126
234
  * Defines the possible values for the `type` property of [`SpreadsheetClipboardEvent`](https://www.telerik.com/kendo-angular-ui/components/spreadsheet/api/spreadsheetclipboardevent).
127
235
  */
@@ -7,7 +7,7 @@ export const packageMetadata = {
7
7
  "productCodes": [
8
8
  "KENDOUIANGULAR"
9
9
  ],
10
- "publishDate": 1774956619,
11
- "version": "23.3.0-develop.22",
10
+ "publishDate": 1775110795,
11
+ "version": "23.3.0-develop.23",
12
12
  "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"
13
13
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@progress/kendo-angular-spreadsheet",
3
- "version": "23.3.0-develop.22",
3
+ "version": "23.3.0-develop.23",
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": 1774956619,
22
+ "publishDate": 1775110795,
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": "19 - 21",
30
30
  "@angular/platform-browser": "19 - 21",
31
31
  "@progress/kendo-licensing": "^1.10.0",
32
- "@progress/kendo-angular-buttons": "23.3.0-develop.22",
33
- "@progress/kendo-angular-common": "23.3.0-develop.22",
34
- "@progress/kendo-angular-dialog": "23.3.0-develop.22",
35
- "@progress/kendo-angular-dropdowns": "23.3.0-develop.22",
36
- "@progress/kendo-angular-icons": "23.3.0-develop.22",
37
- "@progress/kendo-angular-inputs": "23.3.0-develop.22",
38
- "@progress/kendo-angular-treeview": "23.3.0-develop.22",
39
- "@progress/kendo-angular-dateinputs": "23.3.0-develop.22",
40
- "@progress/kendo-angular-intl": "23.3.0-develop.22",
41
- "@progress/kendo-angular-l10n": "23.3.0-develop.22",
42
- "@progress/kendo-angular-label": "23.3.0-develop.22",
43
- "@progress/kendo-angular-layout": "23.3.0-develop.22",
44
- "@progress/kendo-angular-menu": "23.3.0-develop.22",
45
- "@progress/kendo-angular-popup": "23.3.0-develop.22",
46
- "@progress/kendo-angular-toolbar": "23.3.0-develop.22",
32
+ "@progress/kendo-angular-buttons": "23.3.0-develop.23",
33
+ "@progress/kendo-angular-common": "23.3.0-develop.23",
34
+ "@progress/kendo-angular-dialog": "23.3.0-develop.23",
35
+ "@progress/kendo-angular-dropdowns": "23.3.0-develop.23",
36
+ "@progress/kendo-angular-icons": "23.3.0-develop.23",
37
+ "@progress/kendo-angular-inputs": "23.3.0-develop.23",
38
+ "@progress/kendo-angular-treeview": "23.3.0-develop.23",
39
+ "@progress/kendo-angular-dateinputs": "23.3.0-develop.23",
40
+ "@progress/kendo-angular-intl": "23.3.0-develop.23",
41
+ "@progress/kendo-angular-l10n": "23.3.0-develop.23",
42
+ "@progress/kendo-angular-label": "23.3.0-develop.23",
43
+ "@progress/kendo-angular-layout": "23.3.0-develop.23",
44
+ "@progress/kendo-angular-menu": "23.3.0-develop.23",
45
+ "@progress/kendo-angular-popup": "23.3.0-develop.23",
46
+ "@progress/kendo-angular-toolbar": "23.3.0-develop.23",
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": "23.3.0-develop.22",
51
+ "@progress/kendo-angular-schematics": "23.3.0-develop.23",
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': '23.3.0-develop.22',
15
- '@progress/kendo-angular-treeview': '23.3.0-develop.22'
14
+ '@progress/kendo-angular-navigation': '23.3.0-develop.23',
15
+ '@progress/kendo-angular-treeview': '23.3.0-develop.23'
16
16
  } });
17
17
  return (0, schematics_1.externalSchematic)('@progress/kendo-angular-schematics', 'ng-add', finalOptions);
18
18
  }
@@ -9,11 +9,11 @@ import { IntlService } from '@progress/kendo-angular-intl';
9
9
  import { SVGIcon } from '@progress/kendo-svg-icons';
10
10
  import { LocalizationService } from '@progress/kendo-angular-l10n';
11
11
  import { PopupService } from '@progress/kendo-angular-popup';
12
- import { ContextMenuSelectEvent, MenuItem } from '@progress/kendo-angular-menu';
12
+ import { ContextMenuSelectEvent } from '@progress/kendo-angular-menu';
13
13
  import { DialogService } from '@progress/kendo-angular-dialog';
14
14
  import { SpreadsheetService } from './common/spreadsheet.service';
15
15
  import { SpreadsheetToolsService } from './tools/tools.service';
16
- import { FilterMenuItem, SheetInfo, SpreadsheetActiveSheetChangeEvent, SpreadsheetCellEditorOptions, SpreadsheetChangeEvent, SpreadsheetExcelExportEvent, SpreadsheetExcelImportEvent, SpreadsheetPDFExportEvent, SpreadsheetMainMenuItem, SpreadsheetClipboardEvent, PDFExportSettings } from './models';
16
+ import { FilterMenuItem, SheetInfo, SpreadsheetActiveSheetChangeEvent, SpreadsheetCellEditorOptions, SpreadsheetChangeEvent, SpreadsheetExcelExportEvent, SpreadsheetExcelImportEvent, SpreadsheetPDFExportEvent, SpreadsheetMainMenuItem, SpreadsheetClipboardEvent, PDFExportSettings, SpreadsheetContextMenuEvent, SpreadsheetContextMenuItem } from './models';
17
17
  import { ErrorHandlingService } from './common/error-handling.service';
18
18
  import { CheckedState } from '@progress/kendo-angular-treeview';
19
19
  import * as i0 from "@angular/core";
@@ -44,7 +44,7 @@ export declare class SpreadsheetComponent implements AfterViewInit, OnChanges, O
44
44
  private formulaCellInputRef;
45
45
  private nameBoxRef;
46
46
  dialogContainer: ViewContainerRef;
47
- private contextMenu;
47
+ private contextMenuComponent;
48
48
  filterMenuTemplate: TemplateRef<any>;
49
49
  hostClass: boolean;
50
50
  role: string;
@@ -193,6 +193,10 @@ export declare class SpreadsheetComponent implements AfterViewInit, OnChanges, O
193
193
  * Fires when a clipboard action (cut, copy, or paste) occurs in the Spreadsheet.
194
194
  */
195
195
  clipboard: EventEmitter<SpreadsheetClipboardEvent>;
196
+ /**
197
+ * Fires when the user right-clicks within the Spreadsheet view and before the context menu is opened.
198
+ */
199
+ contextMenu: EventEmitter<SpreadsheetContextMenuEvent>;
196
200
  formulaFxIcon: SVGIcon;
197
201
  folderOpenIcon: SVGIcon;
198
202
  downloadIcon: SVGIcon;
@@ -210,7 +214,7 @@ export declare class SpreadsheetComponent implements AfterViewInit, OnChanges, O
210
214
  * @hidden
211
215
  */
212
216
  licenseMessage?: LicenseMessage;
213
- contextMenuItems: MenuItem[];
217
+ contextMenuItems: SpreadsheetContextMenuItem[];
214
218
  sortMenuItems: FilterMenuItem[];
215
219
  conditionExpanded: boolean;
216
220
  valueExpanded: boolean;
@@ -300,6 +304,8 @@ export declare class SpreadsheetComponent implements AfterViewInit, OnChanges, O
300
304
  private onClipboardEvent;
301
305
  private get options();
302
306
  private contextMenuItemsForTarget;
307
+ private getDefaultItemPerAction;
308
+ private getActionDisabledState;
303
309
  private openLinkDialog;
304
310
  private configureSheets;
305
311
  private registerEditors;
@@ -316,5 +322,5 @@ export declare class SpreadsheetComponent implements AfterViewInit, OnChanges, O
316
322
  private findItemByText;
317
323
  private isIndeterminate;
318
324
  static ɵfac: i0.ɵɵFactoryDeclaration<SpreadsheetComponent, never>;
319
- static ɵcmp: i0.ɵɵComponentDeclaration<SpreadsheetComponent, "kendo-spreadsheet", ["kendo-spreadsheet"], { "menuItems": { "alias": "menuItems"; "required": false; }; "overflow": { "alias": "overflow"; "required": false; }; "formulaListMaxHeight": { "alias": "formulaListMaxHeight"; "required": false; }; "activeSheet": { "alias": "activeSheet"; "required": false; }; "sheets": { "alias": "sheets"; "required": false; }; "columns": { "alias": "columns"; "required": false; }; "columnWidth": { "alias": "columnWidth"; "required": false; }; "defaultCellStyle": { "alias": "defaultCellStyle"; "required": false; }; "headerHeight": { "alias": "headerHeight"; "required": false; }; "headerWidth": { "alias": "headerWidth"; "required": false; }; "rowHeight": { "alias": "rowHeight"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; "cellEditors": { "alias": "cellEditors"; "required": false; }; "images": { "alias": "images"; "required": false; }; "pdfExportSettings": { "alias": "pdfExportSettings"; "required": false; }; "excelExportSettings": { "alias": "excelExportSettings"; "required": false; }; "excel": { "alias": "excel"; "required": false; }; }, { "change": "change"; "formatChange": "formatChange"; "selectionChange": "selectionChange"; "excelExport": "excelExport"; "excelImport": "excelImport"; "pdfExport": "pdfExport"; "activeSheetChange": "activeSheetChange"; "clipboard": "clipboard"; }, never, never, true, never>;
325
+ static ɵcmp: i0.ɵɵComponentDeclaration<SpreadsheetComponent, "kendo-spreadsheet", ["kendo-spreadsheet"], { "menuItems": { "alias": "menuItems"; "required": false; }; "overflow": { "alias": "overflow"; "required": false; }; "formulaListMaxHeight": { "alias": "formulaListMaxHeight"; "required": false; }; "activeSheet": { "alias": "activeSheet"; "required": false; }; "sheets": { "alias": "sheets"; "required": false; }; "columns": { "alias": "columns"; "required": false; }; "columnWidth": { "alias": "columnWidth"; "required": false; }; "defaultCellStyle": { "alias": "defaultCellStyle"; "required": false; }; "headerHeight": { "alias": "headerHeight"; "required": false; }; "headerWidth": { "alias": "headerWidth"; "required": false; }; "rowHeight": { "alias": "rowHeight"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; "cellEditors": { "alias": "cellEditors"; "required": false; }; "images": { "alias": "images"; "required": false; }; "pdfExportSettings": { "alias": "pdfExportSettings"; "required": false; }; "excelExportSettings": { "alias": "excelExportSettings"; "required": false; }; "excel": { "alias": "excel"; "required": false; }; }, { "change": "change"; "formatChange": "formatChange"; "selectionChange": "selectionChange"; "excelExport": "excelExport"; "excelImport": "excelImport"; "pdfExport": "pdfExport"; "activeSheetChange": "activeSheetChange"; "clipboard": "clipboard"; "contextMenu": "contextMenu"; }, never, never, true, never>;
320
326
  }