@progress/kendo-angular-spreadsheet 14.2.1-develop.1 → 14.3.0-develop.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/action-bar/formula-input.directive.d.ts +2 -1
  2. package/action-bar/list.component.d.ts +2 -1
  3. package/common/spreadsheet.service.d.ts +1 -0
  4. package/esm2020/action-bar/formula-input.directive.mjs +22 -2
  5. package/esm2020/action-bar/list.component.mjs +7 -1
  6. package/esm2020/common/error-handling.service.mjs +14 -1
  7. package/esm2020/common/spreadsheet.service.mjs +1 -0
  8. package/esm2020/localization/messages.mjs +29 -1
  9. package/esm2020/package-metadata.mjs +2 -2
  10. package/esm2020/sheets-bar/action-dialog.component.mjs +1 -1
  11. package/esm2020/sheets-bar/sheets-bar.component.mjs +136 -59
  12. package/esm2020/sheets-bar/utils.mjs +22 -18
  13. package/esm2020/spreadsheet.component.mjs +397 -55
  14. package/esm2020/spreadsheet.module.mjs +4 -4
  15. package/esm2020/tools/align/horizontal-align-tool.directive.mjs +1 -3
  16. package/esm2020/tools/align/vertical-align-tool.directive.mjs +1 -3
  17. package/esm2020/tools/insert/insert-link-dialog.component.mjs +1 -1
  18. package/esm2020/tools/insert/insert-link-tool.directive.mjs +4 -1
  19. package/esm2020/tools/shared/command-icons.mjs +17 -3
  20. package/esm2020/utils.mjs +6 -1
  21. package/fesm2015/progress-kendo-angular-spreadsheet.mjs +644 -150
  22. package/fesm2020/progress-kendo-angular-spreadsheet.mjs +659 -158
  23. package/localization/messages.d.ts +64 -1
  24. package/models/sheet-info.d.ts +1 -0
  25. package/package.json +15 -15
  26. package/schematics/ngAdd/index.js +1 -1
  27. package/sheets-bar/sheets-bar.component.d.ts +6 -3
  28. package/sheets-bar/utils.d.ts +1 -1
  29. package/spreadsheet.component.d.ts +31 -5
  30. package/spreadsheet.module.d.ts +1 -1
  31. package/tools/insert/insert-link-tool.directive.d.ts +1 -0
  32. package/tools/shared/commands.d.ts +1 -1
  33. package/utils.d.ts +4 -0
@@ -12,62 +12,68 @@ import { SpreadsheetService } from './common/spreadsheet.service';
12
12
  import { SpreadsheetToolsService } from './tools/tools.service';
13
13
  import { L10N_PREFIX, LocalizationService } from '@progress/kendo-angular-l10n';
14
14
  import { SpreadsheetLocalizationService } from './localization/spreadsheet-localization.service';
15
- import { hasObservers, isDocumentAvailable, isPresent, shouldShowValidationUI } from '@progress/kendo-angular-common';
15
+ import { Keys, hasObservers, isDocumentAvailable, isPresent, shouldShowValidationUI } from '@progress/kendo-angular-common';
16
16
  import { mapToSheetDescriptor } from './utils';
17
17
  import { PopupService } from '@progress/kendo-angular-popup';
18
18
  import { FormulaInputDirective } from './action-bar/formula-input.directive';
19
19
  import { take } from 'rxjs/operators';
20
20
  import { getSheetActions } from './sheets-bar/utils';
21
21
  import { ErrorHandlingService } from './common/error-handling.service';
22
+ import { ContextMenuComponent } from '@progress/kendo-angular-menu';
23
+ import { commandIcons, commandSVGIcons } from './tools/shared/command-icons';
24
+ import { Subscription } from 'rxjs';
25
+ import { DialogService } from '@progress/kendo-angular-dialog';
26
+ import { InsertLinkDialogComponent } from './tools/insert/insert-link-dialog.component';
22
27
  import * as i0 from "@angular/core";
23
28
  import * as i1 from "@progress/kendo-angular-intl";
24
29
  import * as i2 from "@progress/kendo-angular-l10n";
25
30
  import * as i3 from "./common/spreadsheet.service";
26
31
  import * as i4 from "./tools/tools.service";
27
32
  import * as i5 from "./common/error-handling.service";
28
- import * as i6 from "@progress/kendo-angular-menu";
29
- import * as i7 from "@progress/kendo-angular-toolbar";
30
- import * as i8 from "./tools/load-file.component";
31
- import * as i9 from "./tools/font-family/spreadsheet-fontfamily-tool.component";
32
- import * as i10 from "./tools/font-size/spreadsheet-fontsize-tool.component";
33
- import * as i11 from "./tools/colorpicker/spreadsheet-forecolor.component";
34
- import * as i12 from "./tools/colorpicker/spreadsheet-backcolor.component";
35
- import * as i13 from "./action-bar/namebox.component";
36
- import * as i14 from "@progress/kendo-angular-icons";
37
- import * as i15 from "./sheets-bar/sheets-bar.component";
38
- import * as i16 from "@progress/kendo-angular-common";
39
- import * as i17 from "./localization/localized-messages.directive";
40
- import * as i18 from "./common/main-menu.directive";
41
- import * as i19 from "@angular/common";
42
- import * as i20 from "./tools/save-file-tool.directive";
43
- import * as i21 from "./tools/history/undo-tool";
44
- import * as i22 from "./tools/history/redo-tool";
45
- import * as i23 from "./tools/font-size/increase-font-tool.directive";
46
- import * as i24 from "./tools/font-size/decrease-font-tool.directive";
47
- import * as i25 from "./tools/typographical-emphasis/bold-tool.directive";
48
- import * as i26 from "./tools/typographical-emphasis/italic-tool.directive";
49
- import * as i27 from "./tools/typographical-emphasis/underline-tool.directive";
50
- import * as i28 from "./tools/align/horizontal-align-tool.directive";
51
- import * as i29 from "./tools/align/vertical-align-tool.directive";
52
- import * as i30 from "./tools/text-wrap-tool.directive";
53
- import * as i31 from "./tools/format-tool.directive";
54
- import * as i32 from "./tools/insert/insert-link-tool.directive";
55
- import * as i33 from "./tools/tables/add-column-left-button.directive";
56
- import * as i34 from "./tools/tables/add-column-right-button.directive";
57
- import * as i35 from "./tools/tables/add-row-below-button.directive";
58
- import * as i36 from "./tools/tables/add-row-above-button.directive";
59
- import * as i37 from "./tools/tables/delete-column-button.directive";
60
- import * as i38 from "./tools/tables/delete-row-button.directive";
61
- import * as i39 from "./tools/decrease-decimal-tool.directive";
62
- import * as i40 from "./tools/increase-decimal-tool.directive";
63
- import * as i41 from "./tools/tables/merge-tool.directive";
64
- import * as i42 from "./tools/gridlines-tool.directive";
65
- import * as i43 from "./action-bar/formula-input.directive";
33
+ import * as i6 from "@progress/kendo-angular-dialog";
34
+ import * as i7 from "@progress/kendo-angular-menu";
35
+ import * as i8 from "@progress/kendo-angular-toolbar";
36
+ import * as i9 from "./tools/load-file.component";
37
+ import * as i10 from "./tools/font-family/spreadsheet-fontfamily-tool.component";
38
+ import * as i11 from "./tools/font-size/spreadsheet-fontsize-tool.component";
39
+ import * as i12 from "./tools/colorpicker/spreadsheet-forecolor.component";
40
+ import * as i13 from "./tools/colorpicker/spreadsheet-backcolor.component";
41
+ import * as i14 from "./action-bar/namebox.component";
42
+ import * as i15 from "@progress/kendo-angular-icons";
43
+ import * as i16 from "./sheets-bar/sheets-bar.component";
44
+ import * as i17 from "@progress/kendo-angular-common";
45
+ import * as i18 from "./localization/localized-messages.directive";
46
+ import * as i19 from "./common/main-menu.directive";
47
+ import * as i20 from "@angular/common";
48
+ import * as i21 from "./tools/save-file-tool.directive";
49
+ import * as i22 from "./tools/history/undo-tool";
50
+ import * as i23 from "./tools/history/redo-tool";
51
+ import * as i24 from "./tools/font-size/increase-font-tool.directive";
52
+ import * as i25 from "./tools/font-size/decrease-font-tool.directive";
53
+ import * as i26 from "./tools/typographical-emphasis/bold-tool.directive";
54
+ import * as i27 from "./tools/typographical-emphasis/italic-tool.directive";
55
+ import * as i28 from "./tools/typographical-emphasis/underline-tool.directive";
56
+ import * as i29 from "./tools/align/horizontal-align-tool.directive";
57
+ import * as i30 from "./tools/align/vertical-align-tool.directive";
58
+ import * as i31 from "./tools/text-wrap-tool.directive";
59
+ import * as i32 from "./tools/format-tool.directive";
60
+ import * as i33 from "./tools/insert/insert-link-tool.directive";
61
+ import * as i34 from "./tools/tables/add-column-left-button.directive";
62
+ import * as i35 from "./tools/tables/add-column-right-button.directive";
63
+ import * as i36 from "./tools/tables/add-row-below-button.directive";
64
+ import * as i37 from "./tools/tables/add-row-above-button.directive";
65
+ import * as i38 from "./tools/tables/delete-column-button.directive";
66
+ import * as i39 from "./tools/tables/delete-row-button.directive";
67
+ import * as i40 from "./tools/decrease-decimal-tool.directive";
68
+ import * as i41 from "./tools/increase-decimal-tool.directive";
69
+ import * as i42 from "./tools/tables/merge-tool.directive";
70
+ import * as i43 from "./tools/gridlines-tool.directive";
71
+ import * as i44 from "./action-bar/formula-input.directive";
66
72
  /**
67
73
  * Represents the [Kendo UI Spreadsheet component for Angular]({% slug overview_spreadsheet %}).
68
74
  */
69
75
  export class SpreadsheetComponent {
70
- constructor(ngZone, intl, host, localization, spreadsheetService, toolsService, errorService) {
76
+ constructor(ngZone, intl, host, localization, spreadsheetService, toolsService, errorService, dialogService) {
71
77
  this.ngZone = ngZone;
72
78
  this.intl = intl;
73
79
  this.host = host;
@@ -75,6 +81,7 @@ export class SpreadsheetComponent {
75
81
  this.spreadsheetService = spreadsheetService;
76
82
  this.toolsService = toolsService;
77
83
  this.errorService = errorService;
84
+ this.dialogService = dialogService;
78
85
  this.hostClass = true;
79
86
  this.role = 'application';
80
87
  /**
@@ -82,6 +89,13 @@ export class SpreadsheetComponent {
82
89
  * @default false
83
90
  */
84
91
  this.overflow = false;
92
+ /**
93
+ * Sets the height of the formula list container.
94
+ * Accepts same values as the CSS [`style.height`](https://developer.mozilla.org/en-US/docs/Web/CSS/height) property.
95
+ *
96
+ * @default '300px'
97
+ */
98
+ this.formulaListMaxHeight = '300px';
85
99
  /**
86
100
  * The number of columns in the document.
87
101
  *
@@ -150,10 +164,19 @@ export class SpreadsheetComponent {
150
164
  this.formulaFxIcon = formulaFxIcon;
151
165
  this.folderOpenIcon = folderOpenIcon;
152
166
  this.downloadIcon = downloadIcon;
167
+ this.showLicenseWatermark = false;
168
+ this.contextMenuItems = [];
169
+ this.subs = new Subscription();
153
170
  /**
154
171
  * @hidden
155
172
  */
156
- this.showLicenseWatermark = false;
173
+ this.onKeyDown = (e) => {
174
+ const isCtrl = e.ctrlKey || e.metaKey;
175
+ const shift = e.shiftKey;
176
+ if (isCtrl && shift && e.keyCode === Keys.KeyS) {
177
+ this.spreadsheetService.onSheetsBarFocus.next();
178
+ }
179
+ };
157
180
  this.onChange = (e) => {
158
181
  hasObservers(this.change) && this.change.emit(e);
159
182
  this.spreadsheetService.selectionChanged.next(e.range);
@@ -247,13 +270,13 @@ export class SpreadsheetComponent {
247
270
  set sheets(value) {
248
271
  const items = value.map((item, index, items) => ({
249
272
  ...item,
273
+ state: item.state || 'visible',
250
274
  inEdit: false,
251
275
  first: index === 0,
252
276
  last: index === items.length - 1,
253
277
  text: item.name,
254
278
  active: (item.name === this.activeSheet) || items.length === 1,
255
- index,
256
- sheetActions: getSheetActions(index, items)
279
+ index
257
280
  }));
258
281
  this._sheetsInfo = items;
259
282
  }
@@ -275,8 +298,10 @@ export class SpreadsheetComponent {
275
298
  spreadsheet.bind('changeFormat', this.onChangeFormat);
276
299
  spreadsheet.bind('excelImport', this.onExcelImport);
277
300
  spreadsheet.bind('excelExport', this.onExcelExport);
301
+ spreadsheet.bind('keydown', this.onKeyDown);
278
302
  spreadsheet.view.bind('update', this.updateState);
279
303
  spreadsheet.view.bind('message', this.onMessage);
304
+ spreadsheet.bind('contextmenu', this.onContextMenu.bind(this));
280
305
  const sheet = spreadsheet.activeSheet();
281
306
  if (sheet) {
282
307
  this.updateState({ range: sheet.range(sheet.activeCell()) });
@@ -285,12 +310,19 @@ export class SpreadsheetComponent {
285
310
  if (!this.sheetsInfo) {
286
311
  this.ngZone.run(() => {
287
312
  const defaultSheetDescriptors = mapToSheetDescriptor([spreadsheet?.activeSheet()]);
288
- this._sheetsInfo = [{ text: this.spreadsheetService.currentActiveSheet, first: true, last: true, ...defaultSheetDescriptors, sheetActions: getSheetActions(0, defaultSheetDescriptors) }];
313
+ this._sheetsInfo = [{
314
+ text: this.spreadsheetService.currentActiveSheet,
315
+ first: true, last: true,
316
+ state: 'visible',
317
+ ...defaultSheetDescriptors,
318
+ sheetActions: getSheetActions(defaultSheetDescriptors).map(item => ({ ...item, text: this.messageFor(item.messageKey) }))
319
+ }];
289
320
  });
290
321
  }
291
322
  });
292
- this.spreadsheetService.sheetsChanged.subscribe(this.onSheetsChanged.bind(this));
293
- this.spreadsheetService.activeSheetChanged.subscribe(this.onActiveSheetChanged.bind(this));
323
+ this.subs.add(this.spreadsheetService.sheetsChanged.subscribe(this.onSheetsChanged.bind(this)));
324
+ this.subs.add(this.spreadsheetService.activeSheetChanged.subscribe(this.onActiveSheetChanged.bind(this)));
325
+ this.subs.add(this.spreadsheetService.selectionChanged.subscribe(range => this.currentRange = range));
294
326
  this.spreadsheetService.dialogContainer = this.dialogContainer;
295
327
  });
296
328
  }
@@ -314,6 +346,85 @@ export class SpreadsheetComponent {
314
346
  this.spreadsheetWidget.fromJSON(newOptions);
315
347
  }
316
348
  }
349
+ ngOnDestroy() {
350
+ this.subs.unsubscribe();
351
+ }
352
+ /**
353
+ * @hidden
354
+ */
355
+ onContextMenu(e) {
356
+ if (e.targetType === 'topcorner') {
357
+ return;
358
+ }
359
+ const selection = this.spreadsheetWidget.activeSheet().select();
360
+ const { topLeft, bottomRight } = selection;
361
+ const isRange = e.targetType === 'cell' && (topLeft.row !== bottomRight.row || topLeft.col !== bottomRight.col);
362
+ const targetType = isRange ? 'range' : e.targetType;
363
+ this.contextMenuItems = this.contextMenuItemsForTarget(targetType, e.showUnhide, e.showUnmerge);
364
+ this.contextMenu.show({ top: e.originalEvent.pageY, left: e.originalEvent.pageX });
365
+ }
366
+ /**
367
+ * @hidden
368
+ */
369
+ onContextMenuSelect(e) {
370
+ let command;
371
+ switch (e.item.id) {
372
+ case 'cut':
373
+ command = { command: 'ToolbarCutCommand', options: { workbook: this.spreadsheetWidget.workbook } };
374
+ break;
375
+ case 'copy':
376
+ command = { command: 'ToolbarCopyCommand', options: { workbook: this.spreadsheetWidget.workbook } };
377
+ break;
378
+ case 'unmerge':
379
+ command = { command: 'MergeCellCommand', options: { value: 'unmerge' } };
380
+ break;
381
+ case 'mergeAll':
382
+ command = { command: 'MergeCellCommand', options: { value: 'cells' } };
383
+ break;
384
+ case 'mergeHorizontally':
385
+ command = { command: 'MergeCellCommand', options: { value: 'horizontally' } };
386
+ break;
387
+ case 'mergeVertically':
388
+ command = { command: 'MergeCellCommand', options: { value: 'vertically' } };
389
+ break;
390
+ case 'hideRow':
391
+ command = { command: 'HideLineCommand', options: { axis: 'row' } };
392
+ break;
393
+ case 'hideColumn':
394
+ command = { command: 'HideLineCommand', options: { axis: 'column' } };
395
+ break;
396
+ case 'unhideRow':
397
+ command = { command: 'UnHideLineCommand', options: { axis: 'row' } };
398
+ break;
399
+ case 'unhideColumn':
400
+ command = { command: 'UnHideLineCommand', options: { axis: 'column' } };
401
+ break;
402
+ case 'deleteRow':
403
+ command = { command: 'DeleteRowCommand' };
404
+ break;
405
+ case 'deleteColumn':
406
+ command = { command: 'DeleteColumnCommand' };
407
+ break;
408
+ case 'insertLink':
409
+ this.openLinkDialog();
410
+ break;
411
+ case 'addRowAbove':
412
+ command = { command: 'AddRowCommand', options: { value: 'above' } };
413
+ break;
414
+ case 'addRowBelow':
415
+ command = { command: 'AddRowCommand', options: { value: 'below' } };
416
+ break;
417
+ case 'addColumnLeft':
418
+ command = { command: 'AddColumnCommand', options: { value: 'left' } };
419
+ break;
420
+ case 'addColumnRight':
421
+ command = { command: 'AddColumnCommand', options: { value: 'right' } };
422
+ break;
423
+ }
424
+ if (command) {
425
+ this.spreadsheetWidget.executeCommand(command);
426
+ }
427
+ }
317
428
  /**
318
429
  * @hidden
319
430
  */
@@ -369,9 +480,163 @@ export class SpreadsheetComponent {
369
480
  nameBoxRef: { current: this.nameBoxRef.current }
370
481
  };
371
482
  }
483
+ contextMenuItemsForTarget(target, unhide, unmerge) {
484
+ const commonItems = [{
485
+ text: this.messageFor('copy'),
486
+ icon: commandIcons.copy,
487
+ svgIcon: commandSVGIcons.copy,
488
+ id: 'copy'
489
+ }, {
490
+ text: this.messageFor('cut'),
491
+ icon: commandIcons.cut,
492
+ svgIcon: commandSVGIcons.cut,
493
+ id: 'cut'
494
+ }, {
495
+ text: this.messageFor('paste'),
496
+ icon: commandIcons.paste,
497
+ svgIcon: commandSVGIcons.paste,
498
+ id: 'paste',
499
+ disabled: true
500
+ }, {
501
+ separator: true
502
+ }, {
503
+ text: this.messageFor('mergeAll'),
504
+ icon: commandIcons.mergeAll,
505
+ svgIcon: commandSVGIcons.mergeAll,
506
+ id: 'mergeAll',
507
+ }, {
508
+ text: this.messageFor('mergeHorizontally'),
509
+ icon: commandIcons.mergeHorizontally,
510
+ svgIcon: commandSVGIcons.mergeHorizontally,
511
+ id: 'mergeHorizontally',
512
+ }, {
513
+ text: this.messageFor('mergeVertically'),
514
+ icon: commandIcons.mergeVertically,
515
+ svgIcon: commandSVGIcons.mergeVertically,
516
+ id: 'mergeVertically',
517
+ }, {
518
+ text: this.messageFor('unmerge'),
519
+ icon: commandIcons.unmerge,
520
+ svgIcon: commandSVGIcons.unmerge,
521
+ id: 'unmerge',
522
+ disabled: !unmerge
523
+ }, {
524
+ separator: true
525
+ }, {
526
+ text: this.messageFor('insertLink'),
527
+ icon: commandIcons.insertLink,
528
+ svgIcon: commandSVGIcons.insertLink,
529
+ id: 'insertLink'
530
+ }];
531
+ if (target === 'rowheader') {
532
+ commonItems.push({
533
+ separator: true
534
+ }, {
535
+ text: this.messageFor('addRowAbove'),
536
+ icon: commandIcons.addRowAbove,
537
+ svgIcon: commandSVGIcons.addRowAbove,
538
+ id: 'addRowAbove',
539
+ }, {
540
+ text: this.messageFor('addRowBelow'),
541
+ icon: commandIcons.addRowBelow,
542
+ svgIcon: commandSVGIcons.addRowBelow,
543
+ id: 'addRowBelow',
544
+ }, {
545
+ text: this.messageFor('deleteRow'),
546
+ icon: commandIcons.deleteRow,
547
+ svgIcon: commandSVGIcons.deleteRow,
548
+ id: 'deleteRow',
549
+ }, {
550
+ text: this.messageFor('hideRow'),
551
+ icon: commandIcons.hideRow,
552
+ svgIcon: commandSVGIcons.hideRow,
553
+ id: 'hideRow',
554
+ }, {
555
+ text: this.messageFor('unhideRow'),
556
+ icon: commandIcons.unhideRow,
557
+ svgIcon: commandSVGIcons.unhideRow,
558
+ id: 'unhideRow',
559
+ disabled: !unhide
560
+ });
561
+ }
562
+ if (target === 'columnheader') {
563
+ commonItems.push({
564
+ separator: true
565
+ }, {
566
+ text: this.messageFor('addColumnLeft'),
567
+ icon: commandIcons.addColumnLeft,
568
+ svgIcon: commandSVGIcons.addColumnLeft,
569
+ id: 'addColumnLeft',
570
+ }, {
571
+ text: this.messageFor('addColumnRight'),
572
+ icon: commandIcons.addColumnRight,
573
+ svgIcon: commandSVGIcons.addColumnRight,
574
+ id: 'addColumnRight',
575
+ }, {
576
+ text: this.messageFor('deleteColumn'),
577
+ icon: commandIcons.deleteColumn,
578
+ svgIcon: commandSVGIcons.deleteColumn,
579
+ id: 'deleteColumn',
580
+ }, {
581
+ text: this.messageFor('hideColumn'),
582
+ icon: commandIcons.hideColumn,
583
+ svgIcon: commandSVGIcons.hideColumn,
584
+ id: 'hideColumn',
585
+ }, {
586
+ text: this.messageFor('unhideColumn'),
587
+ icon: commandIcons.unhideColumn,
588
+ svgIcon: commandSVGIcons.unhideColumn,
589
+ id: 'unhideColumn',
590
+ disabled: !unhide
591
+ });
592
+ }
593
+ return commonItems;
594
+ }
595
+ openLinkDialog() {
596
+ const hasLink = isPresent(this.currentRange?.link());
597
+ const dialogSettings = {
598
+ appendTo: this.spreadsheetService.dialogContainer,
599
+ title: this.localization.get('insertLink'),
600
+ content: InsertLinkDialogComponent,
601
+ actions: [{
602
+ text: this.localization.get('dialogInsert'),
603
+ themeColor: 'primary'
604
+ }, {
605
+ text: this.localization.get('dialogCancel')
606
+ },
607
+ 'spacer', {
608
+ text: this.localization.get('dialogRemoveLink'),
609
+ themeColor: 'primary',
610
+ fillMode: 'clear',
611
+ cssClass: hasLink ? '' : 'k-disabled'
612
+ }],
613
+ actionsLayout: 'start',
614
+ width: 400,
615
+ autoFocusedElement: '.k-textbox > .k-input-inner'
616
+ };
617
+ const dialog = this.dialogService.open(dialogSettings);
618
+ const dialogInstance = dialog.dialog.instance;
619
+ const dialogContent = dialog.content.instance;
620
+ if (hasLink) {
621
+ dialogContent.setData({ link: this.currentRange?.link() });
622
+ }
623
+ dialogInstance.action.pipe(take(1)).subscribe((event) => {
624
+ if (event.text === this.localization.get('dialogCancel')) {
625
+ return;
626
+ }
627
+ let link = null;
628
+ if (event.text === this.localization.get('dialogInsert')) {
629
+ link = dialogContent.urlLink || null;
630
+ }
631
+ this.spreadsheetService.spreadsheet.executeCommand({
632
+ command: 'HyperlinkCommand',
633
+ options: { link }
634
+ });
635
+ });
636
+ }
372
637
  }
373
- SpreadsheetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SpreadsheetComponent, deps: [{ token: i0.NgZone }, { token: i1.IntlService }, { token: i0.ElementRef }, { token: i2.LocalizationService }, { token: i3.SpreadsheetService }, { token: i4.SpreadsheetToolsService }, { token: i5.ErrorHandlingService }], target: i0.ɵɵFactoryTarget.Component });
374
- SpreadsheetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: SpreadsheetComponent, selector: "kendo-spreadsheet", inputs: { menuItems: "menuItems", overflow: "overflow", activeSheet: "activeSheet", sheets: "sheets", columns: "columns", columnWidth: "columnWidth", defaultCellStyle: "defaultCellStyle", headerHeight: "headerHeight", headerWidth: "headerWidth", rowHeight: "rowHeight", rows: "rows", images: "images", excel: "excel" }, outputs: { change: "change", formatChange: "formatChange", selectionChange: "selectionChange", excelExport: "excelExport", excelImport: "excelImport", activeSheetChange: "activeSheetChange" }, host: { properties: { "class.k-spreadsheet": "this.hostClass", "attr.role": "this.role" } }, providers: [
638
+ SpreadsheetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SpreadsheetComponent, deps: [{ token: i0.NgZone }, { token: i1.IntlService }, { token: i0.ElementRef }, { token: i2.LocalizationService }, { token: i3.SpreadsheetService }, { token: i4.SpreadsheetToolsService }, { token: i5.ErrorHandlingService }, { token: i6.DialogService }], target: i0.ɵɵFactoryTarget.Component });
639
+ SpreadsheetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: SpreadsheetComponent, 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", images: "images", excel: "excel" }, outputs: { change: "change", formatChange: "formatChange", selectionChange: "selectionChange", excelExport: "excelExport", excelImport: "excelImport", activeSheetChange: "activeSheetChange" }, host: { properties: { "class.k-spreadsheet": "this.hostClass", "attr.role": "this.role" } }, providers: [
375
640
  SpreadsheetLocalizationService,
376
641
  {
377
642
  provide: LocalizationService,
@@ -384,7 +649,7 @@ SpreadsheetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
384
649
  SpreadsheetToolsService,
385
650
  PopupService,
386
651
  ErrorHandlingService
387
- ], 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 }], exportAs: ["kendo-spreadsheet"], usesOnChanges: true, ngImport: i0, template: `
652
+ ], 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 }], exportAs: ["kendo-spreadsheet"], usesOnChanges: true, ngImport: i0, template: `
388
653
  <ng-container
389
654
  kendoSpreadsheetLocalizedMessages
390
655
  i18n-background="kendo.spreadsheet.background|The title of the tool that changes the text background color."
@@ -513,7 +778,34 @@ SpreadsheetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
513
778
  dialogError="Error"
514
779
  i18n-duplicateSheetName="kendo.spreadsheet.duplicateSheetName|The content of the dialog that warns about duplicated sheet name."
515
780
  duplicateSheetName="There is an existing sheet with this name. Please enter another name."
516
- >
781
+ i18n-copy="kendo.spreadsheet.copy|The Copy command text."
782
+ copy="Copy"
783
+ i18n-cut="kendo.spreadsheet.cut|The Cut command text."
784
+ cut="Cut"
785
+ i18n-paste="kendo.spreadsheet.paste|The Paste command text."
786
+ paste="Paste (use Ctrl/⌘ + V)"
787
+ i18n-hideRow="kendo.spreadsheet.hideRow|The Hide row command text."
788
+ hideRow="Hide"
789
+ i18n-unhideRow="kendo.spreadsheet.unhideRow|The Unhide row command text."
790
+ unhideRow="Unhide"
791
+ i18n-hideColumn="kendo.spreadsheet.hideColumn|The Hide column command text."
792
+ hideColumn="Hide"
793
+ i18n-unhideColumn="kendo.spreadsheet.unhideColumn|The Unhide column command text."
794
+ unhideColumn="Unhide"
795
+ i18n-sheetDelete="kendo.spreadsheet.sheetDelete|The text of the Sheet menu Delete option."
796
+ sheetDelete="Delete"
797
+ i18n-sheetRename="kendo.spreadsheet.sheetRename|The text of the Sheet menu Rename option."
798
+ sheetRename="Rename"
799
+ i18n-sheetDuplicate="kendo.spreadsheet.sheetDuplicate|The text of the Sheet menu Duplicate option."
800
+ sheetDuplicate="Duplicate"
801
+ i18n-sheetHide="kendo.spreadsheet.sheetHide|The text of the Sheet menu Hide option."
802
+ sheetHide="Hide"
803
+ i18n-sheetMoveLeft="kendo.spreadsheet.sheetMoveLeft|The text of the Sheet menu Move Left option."
804
+ sheetMoveLeft="Move Left"
805
+ i18n-sheetMoveRight="kendo.spreadsheet.sheetMoveRight|The text of the Sheet menu Move Right option."
806
+ sheetMoveRight="Move Right"
807
+ i18n-invalidNameError="kendo.spreadsheet.invalidNameError|The content of the dialog that warns about invalid name input."
808
+ invalidNameError="{{ 'Invalid name: {inputValue}' }}">
517
809
  </ng-container>
518
810
  <div class="k-spreadsheet-header">
519
811
  <kendo-menu kendoSpreadsheetMenu (select)="onMenuItemSelect($event)">
@@ -594,7 +886,11 @@ SpreadsheetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
594
886
  [svgIcon]="formulaFxIcon">
595
887
  </kendo-icon-wrapper>
596
888
  <span class="k-separator k-separator-vertical"></span>
597
- <div #formulaBar kendoSpreadsheetFormulaInput class="k-textbox k-input k-input-md k-input-flat k-rounded-md"></div>
889
+ <div
890
+ #formulaBar
891
+ kendoSpreadsheetFormulaInput
892
+ [formulaListMaxHeight]="formulaListMaxHeight"
893
+ class="k-textbox k-input k-input-md k-input-flat k-rounded-md"></div>
598
894
  </div>
599
895
  </div>
600
896
  <div class="k-spreadsheet-view">
@@ -612,8 +908,13 @@ SpreadsheetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
612
908
  </div>
613
909
  <ng-container #dialogContainer></ng-container>
614
910
 
911
+ <kendo-contextmenu
912
+ #contextMenu
913
+ [items]="contextMenuItems"
914
+ (select)="onContextMenuSelect($event)"></kendo-contextmenu>
915
+
615
916
  <div kendoWatermarkOverlay *ngIf="showLicenseWatermark"></div>
616
- `, isInline: true, components: [{ type: i6.MenuComponent, selector: "kendo-menu", inputs: ["menuItemTemplate", "ariaRole", "menuItemLinkTemplate"], outputs: ["select", "open", "close"], exportAs: ["kendoMenu"] }, { type: i6.MenuItemComponent, selector: "kendo-menu-item", inputs: ["text", "url", "disabled", "cssClass", "cssStyle", "icon", "svgIcon", "data", "separator"] }, { type: i7.ToolBarComponent, selector: "kendo-toolbar", inputs: ["overflow", "resizable", "popupSettings", "tabindex", "size", "tabIndex"], outputs: ["open", "close"], exportAs: ["kendoToolBar"] }, { type: i8.SpreadsheetLoadFileComponent, selector: "kendo-spreadsheet-load-file-tool" }, { type: i7.ToolBarButtonComponent, selector: "kendo-toolbar-button", inputs: ["showText", "showIcon", "text", "style", "className", "title", "disabled", "toggleable", "look", "togglable", "selected", "fillMode", "themeColor", "icon", "iconClass", "svgIcon", "imageUrl"], outputs: ["click", "pointerdown", "selectedChange"], exportAs: ["kendoToolBarButton"] }, { type: i7.ToolBarButtonGroupComponent, selector: "kendo-toolbar-buttongroup", inputs: ["disabled", "selection", "width", "look"], exportAs: ["kendoToolBarButtonGroup"] }, { type: i7.ToolBarSeparatorComponent, selector: "kendo-toolbar-separator", exportAs: ["kendoToolBarSeparator"] }, { type: i9.SpreadsheetFontFamilyComponent, selector: "kendo-toolbar-dropdownlist[kendoSpreadsheetFontFamily]" }, { type: i10.SpreadsheetFontSizeComponent, selector: "kendo-toolbar-dropdownlist[kendoSpreadsheetFontSize]" }, { type: i11.SpreadsheetForeColorComponent, selector: "kendo-spreadsheet-forecolor-tool" }, { type: i12.SpreadsheetBackColorComponent, selector: "kendo-spreadsheet-backcolor-tool" }, { type: i7.ToolBarDropDownButtonComponent, selector: "kendo-toolbar-dropdownbutton", inputs: ["arrowIcon", "title", "showText", "showIcon", "text", "icon", "svgIcon", "iconClass", "imageUrl", "popupSettings", "look", "primary", "fillMode", "themeColor", "buttonClass", "textField", "disabled", "data"], outputs: ["itemClick", "open", "close"], exportAs: ["kendoToolBarDropDownButton"] }, { type: i13.NameBoxComponent, selector: "[kendoSpreadsheetNameBox]", inputs: ["data", "spreadsheetWidget"] }, { type: i14.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { type: i15.SheetsBarComponent, selector: "[kendoSpreadsheetSheetsBar]", inputs: ["sheets", "sheetDescriptors"] }, { type: i16.WatermarkOverlayComponent, selector: "div[kendoWatermarkOverlay]" }], directives: [{ type: i17.LocalizedMessagesDirective, selector: "[kendoSpreadsheetLocalizedMessages]" }, { type: i18.MainMenuDirective, selector: "[kendoSpreadsheetMenu]" }, { type: i19.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i19.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i20.SpreadsheetSaveFileDirective, selector: "[kendoSpreadsheetSaveFile]" }, { type: i21.SpreadsheetUndoDirective, selector: "kendo-toolbar-button[kendoSpreadsheetUndo]" }, { type: i22.SpreadsheetRedoDirective, selector: "kendo-toolbar-button[kendoSpreadsheetRedo]" }, { type: i23.SpreadsheetIncreaseFontSizeDirective, selector: "kendo-toolbar-button[kendoSpreadsheetIncreaseFontSize]" }, { type: i24.SpreadsheetDecreaseFontSizeDirective, selector: "kendo-toolbar-button[kendoSpreadsheetDecreaseFontSize]" }, { type: i25.SpreadsheetBoldDirective, selector: "kendo-toolbar-button[kendoSpreadsheetBold]" }, { type: i26.SpreadsheetItalicDirective, selector: "kendo-toolbar-button[kendoSpreadsheetItalic]" }, { type: i27.SpreadsheetUnderlineDirective, selector: "kendo-toolbar-button[kendoSpreadsheetUnderline]" }, { type: i28.SpreadsheetHorizontalTextAlignDirective, selector: "[kendoSpreadsheetHorizontalTextAlign]" }, { type: i29.SpreadsheetVerticalTextAlignDirective, selector: "[kendoSpreadsheetVerticalTextAlign]" }, { type: i30.SpreadsheetTextWrapDirective, selector: "kendo-toolbar-button[kendoSpreadsheetTextWrap]" }, { type: i31.SpreadsheetFormatDirective, selector: "[kendoSpreadsheetFormat]" }, { type: i32.SpreadsheetInsertLinkDirective, selector: "kendo-toolbar-button[kendoSpreadsheetInsertLink]" }, { type: i33.SpreadsheetAddColumnLeftButtonDirective, selector: "kendo-toolbar-button[kendoSpreadsheetAddColumnLeftButton]" }, { type: i34.SpreadsheetAddColumnRightButtonDirective, selector: "kendo-toolbar-button[kendoSpreadsheetAddColumnRightButton]" }, { type: i35.SpreadsheetAddRowBelowButtonDirective, selector: "kendo-toolbar-button[kendoSpreadsheetAddRowBelowButton]" }, { type: i36.SpreadsheetAddRowAboveButtonDirective, selector: "kendo-toolbar-button[kendoSpreadsheetAddRowAboveButton]" }, { type: i37.SpreadsheetDeleteColumnButtonDirective, selector: "kendo-toolbar-button[kendoSpreadsheetDeleteColumnButton]" }, { type: i38.SpreadsheetDeleteRowButtonDirective, selector: "kendo-toolbar-button[kendoSpreadsheetDeleteRowButton]" }, { type: i39.SpreadsheetDecreaseDecimalDirective, selector: "kendo-toolbar-button[kendoSpreadsheetDecreaseDecimal]" }, { type: i40.SpreadsheetIncreaseDecimalDirective, selector: "kendo-toolbar-button[kendoSpreadsheetIncreaseDecimal]" }, { type: i41.SpreadsheetMergeDirective, selector: "[kendoSpreadsheetMerge]" }, { type: i42.SpreadsheetGridLinesDirective, selector: "kendo-toolbar-button[kendoSpreadsheetGridLines]" }, { type: i43.FormulaInputDirective, selector: "[kendoSpreadsheetFormulaInput]" }] });
917
+ `, isInline: true, components: [{ type: i7.MenuComponent, selector: "kendo-menu", inputs: ["menuItemTemplate", "ariaRole", "menuItemLinkTemplate"], outputs: ["select", "open", "close"], exportAs: ["kendoMenu"] }, { type: i7.MenuItemComponent, selector: "kendo-menu-item", inputs: ["text", "url", "disabled", "cssClass", "cssStyle", "icon", "svgIcon", "data", "separator"] }, { type: i8.ToolBarComponent, selector: "kendo-toolbar", inputs: ["overflow", "resizable", "popupSettings", "tabindex", "size", "tabIndex"], outputs: ["open", "close"], exportAs: ["kendoToolBar"] }, { type: i9.SpreadsheetLoadFileComponent, selector: "kendo-spreadsheet-load-file-tool" }, { type: i8.ToolBarButtonComponent, selector: "kendo-toolbar-button", inputs: ["showText", "showIcon", "text", "style", "className", "title", "disabled", "toggleable", "look", "togglable", "selected", "fillMode", "themeColor", "icon", "iconClass", "svgIcon", "imageUrl"], outputs: ["click", "pointerdown", "selectedChange"], exportAs: ["kendoToolBarButton"] }, { type: i8.ToolBarButtonGroupComponent, selector: "kendo-toolbar-buttongroup", inputs: ["disabled", "selection", "width", "look"], exportAs: ["kendoToolBarButtonGroup"] }, { type: i8.ToolBarSeparatorComponent, selector: "kendo-toolbar-separator", exportAs: ["kendoToolBarSeparator"] }, { type: i10.SpreadsheetFontFamilyComponent, selector: "kendo-toolbar-dropdownlist[kendoSpreadsheetFontFamily]" }, { type: i11.SpreadsheetFontSizeComponent, selector: "kendo-toolbar-dropdownlist[kendoSpreadsheetFontSize]" }, { type: i12.SpreadsheetForeColorComponent, selector: "kendo-spreadsheet-forecolor-tool" }, { type: i13.SpreadsheetBackColorComponent, selector: "kendo-spreadsheet-backcolor-tool" }, { type: i8.ToolBarDropDownButtonComponent, selector: "kendo-toolbar-dropdownbutton", inputs: ["arrowIcon", "title", "showText", "showIcon", "text", "icon", "svgIcon", "iconClass", "imageUrl", "popupSettings", "look", "primary", "fillMode", "themeColor", "buttonClass", "textField", "disabled", "data"], outputs: ["itemClick", "open", "close"], exportAs: ["kendoToolBarDropDownButton"] }, { type: i14.NameBoxComponent, selector: "[kendoSpreadsheetNameBox]", inputs: ["data", "spreadsheetWidget"] }, { type: i15.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { type: i16.SheetsBarComponent, selector: "[kendoSpreadsheetSheetsBar]", inputs: ["sheets", "sheetDescriptors"] }, { type: i7.ContextMenuComponent, selector: "kendo-contextmenu", inputs: ["showOn", "target", "filter", "alignToAnchor", "vertical", "popupAnimate", "popupAlign", "anchorAlign", "collision", "appendTo", "ariaLabel"], outputs: ["popupOpen", "popupClose", "select", "open", "close"], exportAs: ["kendoContextMenu"] }, { type: i17.WatermarkOverlayComponent, selector: "div[kendoWatermarkOverlay]" }], directives: [{ type: i18.LocalizedMessagesDirective, selector: "[kendoSpreadsheetLocalizedMessages]" }, { type: i19.MainMenuDirective, selector: "[kendoSpreadsheetMenu]" }, { type: i20.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i20.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i21.SpreadsheetSaveFileDirective, selector: "[kendoSpreadsheetSaveFile]" }, { type: i22.SpreadsheetUndoDirective, selector: "kendo-toolbar-button[kendoSpreadsheetUndo]" }, { type: i23.SpreadsheetRedoDirective, selector: "kendo-toolbar-button[kendoSpreadsheetRedo]" }, { type: i24.SpreadsheetIncreaseFontSizeDirective, selector: "kendo-toolbar-button[kendoSpreadsheetIncreaseFontSize]" }, { type: i25.SpreadsheetDecreaseFontSizeDirective, selector: "kendo-toolbar-button[kendoSpreadsheetDecreaseFontSize]" }, { type: i26.SpreadsheetBoldDirective, selector: "kendo-toolbar-button[kendoSpreadsheetBold]" }, { type: i27.SpreadsheetItalicDirective, selector: "kendo-toolbar-button[kendoSpreadsheetItalic]" }, { type: i28.SpreadsheetUnderlineDirective, selector: "kendo-toolbar-button[kendoSpreadsheetUnderline]" }, { type: i29.SpreadsheetHorizontalTextAlignDirective, selector: "[kendoSpreadsheetHorizontalTextAlign]" }, { type: i30.SpreadsheetVerticalTextAlignDirective, selector: "[kendoSpreadsheetVerticalTextAlign]" }, { type: i31.SpreadsheetTextWrapDirective, selector: "kendo-toolbar-button[kendoSpreadsheetTextWrap]" }, { type: i32.SpreadsheetFormatDirective, selector: "[kendoSpreadsheetFormat]" }, { type: i33.SpreadsheetInsertLinkDirective, selector: "kendo-toolbar-button[kendoSpreadsheetInsertLink]" }, { type: i34.SpreadsheetAddColumnLeftButtonDirective, selector: "kendo-toolbar-button[kendoSpreadsheetAddColumnLeftButton]" }, { type: i35.SpreadsheetAddColumnRightButtonDirective, selector: "kendo-toolbar-button[kendoSpreadsheetAddColumnRightButton]" }, { type: i36.SpreadsheetAddRowBelowButtonDirective, selector: "kendo-toolbar-button[kendoSpreadsheetAddRowBelowButton]" }, { type: i37.SpreadsheetAddRowAboveButtonDirective, selector: "kendo-toolbar-button[kendoSpreadsheetAddRowAboveButton]" }, { type: i38.SpreadsheetDeleteColumnButtonDirective, selector: "kendo-toolbar-button[kendoSpreadsheetDeleteColumnButton]" }, { type: i39.SpreadsheetDeleteRowButtonDirective, selector: "kendo-toolbar-button[kendoSpreadsheetDeleteRowButton]" }, { type: i40.SpreadsheetDecreaseDecimalDirective, selector: "kendo-toolbar-button[kendoSpreadsheetDecreaseDecimal]" }, { type: i41.SpreadsheetIncreaseDecimalDirective, selector: "kendo-toolbar-button[kendoSpreadsheetIncreaseDecimal]" }, { type: i42.SpreadsheetMergeDirective, selector: "[kendoSpreadsheetMerge]" }, { type: i43.SpreadsheetGridLinesDirective, selector: "kendo-toolbar-button[kendoSpreadsheetGridLines]" }, { type: i44.FormulaInputDirective, selector: "[kendoSpreadsheetFormulaInput]", inputs: ["formulaListMaxHeight"] }] });
617
918
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SpreadsheetComponent, decorators: [{
618
919
  type: Component,
619
920
  args: [{
@@ -762,7 +1063,34 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
762
1063
  dialogError="Error"
763
1064
  i18n-duplicateSheetName="kendo.spreadsheet.duplicateSheetName|The content of the dialog that warns about duplicated sheet name."
764
1065
  duplicateSheetName="There is an existing sheet with this name. Please enter another name."
765
- >
1066
+ i18n-copy="kendo.spreadsheet.copy|The Copy command text."
1067
+ copy="Copy"
1068
+ i18n-cut="kendo.spreadsheet.cut|The Cut command text."
1069
+ cut="Cut"
1070
+ i18n-paste="kendo.spreadsheet.paste|The Paste command text."
1071
+ paste="Paste (use Ctrl/⌘ + V)"
1072
+ i18n-hideRow="kendo.spreadsheet.hideRow|The Hide row command text."
1073
+ hideRow="Hide"
1074
+ i18n-unhideRow="kendo.spreadsheet.unhideRow|The Unhide row command text."
1075
+ unhideRow="Unhide"
1076
+ i18n-hideColumn="kendo.spreadsheet.hideColumn|The Hide column command text."
1077
+ hideColumn="Hide"
1078
+ i18n-unhideColumn="kendo.spreadsheet.unhideColumn|The Unhide column command text."
1079
+ unhideColumn="Unhide"
1080
+ i18n-sheetDelete="kendo.spreadsheet.sheetDelete|The text of the Sheet menu Delete option."
1081
+ sheetDelete="Delete"
1082
+ i18n-sheetRename="kendo.spreadsheet.sheetRename|The text of the Sheet menu Rename option."
1083
+ sheetRename="Rename"
1084
+ i18n-sheetDuplicate="kendo.spreadsheet.sheetDuplicate|The text of the Sheet menu Duplicate option."
1085
+ sheetDuplicate="Duplicate"
1086
+ i18n-sheetHide="kendo.spreadsheet.sheetHide|The text of the Sheet menu Hide option."
1087
+ sheetHide="Hide"
1088
+ i18n-sheetMoveLeft="kendo.spreadsheet.sheetMoveLeft|The text of the Sheet menu Move Left option."
1089
+ sheetMoveLeft="Move Left"
1090
+ i18n-sheetMoveRight="kendo.spreadsheet.sheetMoveRight|The text of the Sheet menu Move Right option."
1091
+ sheetMoveRight="Move Right"
1092
+ i18n-invalidNameError="kendo.spreadsheet.invalidNameError|The content of the dialog that warns about invalid name input."
1093
+ invalidNameError="{{ 'Invalid name: {inputValue}' }}">
766
1094
  </ng-container>
767
1095
  <div class="k-spreadsheet-header">
768
1096
  <kendo-menu kendoSpreadsheetMenu (select)="onMenuItemSelect($event)">
@@ -843,7 +1171,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
843
1171
  [svgIcon]="formulaFxIcon">
844
1172
  </kendo-icon-wrapper>
845
1173
  <span class="k-separator k-separator-vertical"></span>
846
- <div #formulaBar kendoSpreadsheetFormulaInput class="k-textbox k-input k-input-md k-input-flat k-rounded-md"></div>
1174
+ <div
1175
+ #formulaBar
1176
+ kendoSpreadsheetFormulaInput
1177
+ [formulaListMaxHeight]="formulaListMaxHeight"
1178
+ class="k-textbox k-input k-input-md k-input-flat k-rounded-md"></div>
847
1179
  </div>
848
1180
  </div>
849
1181
  <div class="k-spreadsheet-view">
@@ -861,10 +1193,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
861
1193
  </div>
862
1194
  <ng-container #dialogContainer></ng-container>
863
1195
 
1196
+ <kendo-contextmenu
1197
+ #contextMenu
1198
+ [items]="contextMenuItems"
1199
+ (select)="onContextMenuSelect($event)"></kendo-contextmenu>
1200
+
864
1201
  <div kendoWatermarkOverlay *ngIf="showLicenseWatermark"></div>
865
1202
  `,
866
1203
  }]
867
- }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1.IntlService }, { type: i0.ElementRef }, { type: i2.LocalizationService }, { type: i3.SpreadsheetService }, { type: i4.SpreadsheetToolsService }, { type: i5.ErrorHandlingService }]; }, propDecorators: { formulaBarInputRef: [{
1204
+ }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1.IntlService }, { type: i0.ElementRef }, { type: i2.LocalizationService }, { type: i3.SpreadsheetService }, { type: i4.SpreadsheetToolsService }, { type: i5.ErrorHandlingService }, { type: i6.DialogService }]; }, propDecorators: { formulaBarInputRef: [{
868
1205
  type: ViewChild,
869
1206
  args: ['formulaBar', { read: FormulaInputDirective }]
870
1207
  }], formulaCellInputRef: [{
@@ -876,6 +1213,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
876
1213
  }], dialogContainer: [{
877
1214
  type: ViewChild,
878
1215
  args: ['dialogContainer', { read: ViewContainerRef }]
1216
+ }], contextMenu: [{
1217
+ type: ViewChild,
1218
+ args: ['contextMenu']
879
1219
  }], hostClass: [{
880
1220
  type: HostBinding,
881
1221
  args: ['class.k-spreadsheet']
@@ -886,6 +1226,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
886
1226
  type: Input
887
1227
  }], overflow: [{
888
1228
  type: Input
1229
+ }], formulaListMaxHeight: [{
1230
+ type: Input
889
1231
  }], activeSheet: [{
890
1232
  type: Input
891
1233
  }], sheets: [{