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

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.
@@ -11,7 +11,7 @@ import * as i0 from "@angular/core";
11
11
  export class MessagesDirective extends ComponentMessages {
12
12
  }
13
13
  MessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MessagesDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
14
- MessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: MessagesDirective, selector: "[kendoSpreadsheetMessages]", inputs: { home: "home", file: "file", insert: "insert", formatTab: "formatTab", saveFile: "saveFile", loadFile: "loadFile", bold: "bold", 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", 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" }, usesInheritance: true, ngImport: i0 });
14
+ MessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: MessagesDirective, selector: "[kendoSpreadsheetMessages]", inputs: { home: "home", file: "file", insert: "insert", formatTab: "formatTab", saveFile: "saveFile", loadFile: "loadFile", bold: "bold", 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", 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" }, usesInheritance: true, ngImport: i0 });
15
15
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MessagesDirective, decorators: [{
16
16
  type: Directive,
17
17
  args: [{
@@ -143,4 +143,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
143
143
  type: Input
144
144
  }], duplicateSheetName: [{
145
145
  type: Input
146
+ }], copy: [{
147
+ type: Input
148
+ }], cut: [{
149
+ type: Input
150
+ }], paste: [{
151
+ type: Input
152
+ }], hideRow: [{
153
+ type: Input
154
+ }], unhideRow: [{
155
+ type: Input
156
+ }], hideColumn: [{
157
+ type: Input
158
+ }], unhideColumn: [{
159
+ type: Input
146
160
  }] } });
@@ -9,7 +9,7 @@ export const packageMetadata = {
9
9
  name: '@progress/kendo-angular-spreadsheet',
10
10
  productName: 'Kendo UI for Angular',
11
11
  productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
12
- publishDate: 1701342735,
13
- version: '14.2.1-develop.1',
12
+ publishDate: 1701706666,
13
+ version: '14.3.0-develop.2',
14
14
  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',
15
15
  };
@@ -19,55 +19,61 @@ 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
  /**
@@ -150,10 +157,9 @@ export class SpreadsheetComponent {
150
157
  this.formulaFxIcon = formulaFxIcon;
151
158
  this.folderOpenIcon = folderOpenIcon;
152
159
  this.downloadIcon = downloadIcon;
153
- /**
154
- * @hidden
155
- */
156
160
  this.showLicenseWatermark = false;
161
+ this.contextMenuItems = [];
162
+ this.subs = new Subscription();
157
163
  this.onChange = (e) => {
158
164
  hasObservers(this.change) && this.change.emit(e);
159
165
  this.spreadsheetService.selectionChanged.next(e.range);
@@ -277,6 +283,7 @@ export class SpreadsheetComponent {
277
283
  spreadsheet.bind('excelExport', this.onExcelExport);
278
284
  spreadsheet.view.bind('update', this.updateState);
279
285
  spreadsheet.view.bind('message', this.onMessage);
286
+ spreadsheet.bind('contextmenu', this.onContextMenu.bind(this));
280
287
  const sheet = spreadsheet.activeSheet();
281
288
  if (sheet) {
282
289
  this.updateState({ range: sheet.range(sheet.activeCell()) });
@@ -289,8 +296,9 @@ export class SpreadsheetComponent {
289
296
  });
290
297
  }
291
298
  });
292
- this.spreadsheetService.sheetsChanged.subscribe(this.onSheetsChanged.bind(this));
293
- this.spreadsheetService.activeSheetChanged.subscribe(this.onActiveSheetChanged.bind(this));
299
+ this.subs.add(this.spreadsheetService.sheetsChanged.subscribe(this.onSheetsChanged.bind(this)));
300
+ this.subs.add(this.spreadsheetService.activeSheetChanged.subscribe(this.onActiveSheetChanged.bind(this)));
301
+ this.subs.add(this.spreadsheetService.selectionChanged.subscribe(range => this.currentRange = range));
294
302
  this.spreadsheetService.dialogContainer = this.dialogContainer;
295
303
  });
296
304
  }
@@ -314,6 +322,85 @@ export class SpreadsheetComponent {
314
322
  this.spreadsheetWidget.fromJSON(newOptions);
315
323
  }
316
324
  }
325
+ ngOnDestroy() {
326
+ this.subs.unsubscribe();
327
+ }
328
+ /**
329
+ * @hidden
330
+ */
331
+ onContextMenu(e) {
332
+ if (e.targetType === 'topcorner') {
333
+ return;
334
+ }
335
+ const selection = this.spreadsheetWidget.activeSheet().select();
336
+ const { topLeft, bottomRight } = selection;
337
+ const isRange = e.targetType === 'cell' && (topLeft.row !== bottomRight.row || topLeft.col !== bottomRight.col);
338
+ const targetType = isRange ? 'range' : e.targetType;
339
+ this.contextMenuItems = this.contextMenuItemsForTarget(targetType, e.showUnhide, e.showUnmerge);
340
+ this.contextMenu.show({ top: e.originalEvent.pageY, left: e.originalEvent.pageX });
341
+ }
342
+ /**
343
+ * @hidden
344
+ */
345
+ onContextMenuSelect(e) {
346
+ let command;
347
+ switch (e.item.id) {
348
+ case 'cut':
349
+ command = { command: 'ToolbarCutCommand', options: { workbook: this.spreadsheetWidget.workbook } };
350
+ break;
351
+ case 'copy':
352
+ command = { command: 'ToolbarCopyCommand', options: { workbook: this.spreadsheetWidget.workbook } };
353
+ break;
354
+ case 'unmerge':
355
+ command = { command: 'MergeCellCommand', options: { value: 'unmerge' } };
356
+ break;
357
+ case 'mergeAll':
358
+ command = { command: 'MergeCellCommand', options: { value: 'cells' } };
359
+ break;
360
+ case 'mergeHorizontally':
361
+ command = { command: 'MergeCellCommand', options: { value: 'horizontally' } };
362
+ break;
363
+ case 'mergeVertically':
364
+ command = { command: 'MergeCellCommand', options: { value: 'vertically' } };
365
+ break;
366
+ case 'hideRow':
367
+ command = { command: 'HideLineCommand', options: { axis: 'row' } };
368
+ break;
369
+ case 'hideColumn':
370
+ command = { command: 'HideLineCommand', options: { axis: 'column' } };
371
+ break;
372
+ case 'unhideRow':
373
+ command = { command: 'UnHideLineCommand', options: { axis: 'row' } };
374
+ break;
375
+ case 'unhideColumn':
376
+ command = { command: 'UnHideLineCommand', options: { axis: 'column' } };
377
+ break;
378
+ case 'deleteRow':
379
+ command = { command: 'DeleteRowCommand' };
380
+ break;
381
+ case 'deleteColumn':
382
+ command = { command: 'DeleteColumnCommand' };
383
+ break;
384
+ case 'insertLink':
385
+ this.openLinkDialog();
386
+ break;
387
+ case 'addRowAbove':
388
+ command = { command: 'AddRowCommand', options: { value: 'above' } };
389
+ break;
390
+ case 'addRowBelow':
391
+ command = { command: 'AddRowCommand', options: { value: 'below' } };
392
+ break;
393
+ case 'addColumnLeft':
394
+ command = { command: 'AddColumnCommand', options: { value: 'left' } };
395
+ break;
396
+ case 'addColumnRight':
397
+ command = { command: 'AddColumnCommand', options: { value: 'right' } };
398
+ break;
399
+ }
400
+ if (command) {
401
+ this.spreadsheetWidget.executeCommand(command);
402
+ }
403
+ }
317
404
  /**
318
405
  * @hidden
319
406
  */
@@ -369,8 +456,162 @@ export class SpreadsheetComponent {
369
456
  nameBoxRef: { current: this.nameBoxRef.current }
370
457
  };
371
458
  }
459
+ contextMenuItemsForTarget(target, unhide, unmerge) {
460
+ const commonItems = [{
461
+ text: this.messageFor('copy'),
462
+ icon: commandIcons.copy,
463
+ svgIcon: commandSVGIcons.copy,
464
+ id: 'copy'
465
+ }, {
466
+ text: this.messageFor('cut'),
467
+ icon: commandIcons.cut,
468
+ svgIcon: commandSVGIcons.cut,
469
+ id: 'cut'
470
+ }, {
471
+ text: this.messageFor('paste'),
472
+ icon: commandIcons.paste,
473
+ svgIcon: commandSVGIcons.paste,
474
+ id: 'paste',
475
+ disabled: true
476
+ }, {
477
+ separator: true
478
+ }, {
479
+ text: this.messageFor('mergeAll'),
480
+ icon: commandIcons.mergeAll,
481
+ svgIcon: commandSVGIcons.mergeAll,
482
+ id: 'mergeAll',
483
+ }, {
484
+ text: this.messageFor('mergeHorizontally'),
485
+ icon: commandIcons.mergeHorizontally,
486
+ svgIcon: commandSVGIcons.mergeHorizontally,
487
+ id: 'mergeHorizontally',
488
+ }, {
489
+ text: this.messageFor('mergeVertically'),
490
+ icon: commandIcons.mergeVertically,
491
+ svgIcon: commandSVGIcons.mergeVertically,
492
+ id: 'mergeVertically',
493
+ }, {
494
+ text: this.messageFor('unmerge'),
495
+ icon: commandIcons.unmerge,
496
+ svgIcon: commandSVGIcons.unmerge,
497
+ id: 'unmerge',
498
+ disabled: !unmerge
499
+ }, {
500
+ separator: true
501
+ }, {
502
+ text: this.messageFor('insertLink'),
503
+ icon: commandIcons.insertLink,
504
+ svgIcon: commandSVGIcons.insertLink,
505
+ id: 'insertLink'
506
+ }];
507
+ if (target === 'rowheader') {
508
+ commonItems.push({
509
+ separator: true
510
+ }, {
511
+ text: this.messageFor('addRowAbove'),
512
+ icon: commandIcons.addRowAbove,
513
+ svgIcon: commandSVGIcons.addRowAbove,
514
+ id: 'addRowAbove',
515
+ }, {
516
+ text: this.messageFor('addRowBelow'),
517
+ icon: commandIcons.addRowBelow,
518
+ svgIcon: commandSVGIcons.addRowBelow,
519
+ id: 'addRowBelow',
520
+ }, {
521
+ text: this.messageFor('deleteRow'),
522
+ icon: commandIcons.deleteRow,
523
+ svgIcon: commandSVGIcons.deleteRow,
524
+ id: 'deleteRow',
525
+ }, {
526
+ text: this.messageFor('hideRow'),
527
+ icon: commandIcons.hideRow,
528
+ svgIcon: commandSVGIcons.hideRow,
529
+ id: 'hideRow',
530
+ }, {
531
+ text: this.messageFor('unhideRow'),
532
+ icon: commandIcons.unhideRow,
533
+ svgIcon: commandSVGIcons.unhideRow,
534
+ id: 'unhideRow',
535
+ disabled: !unhide
536
+ });
537
+ }
538
+ if (target === 'columnheader') {
539
+ commonItems.push({
540
+ separator: true
541
+ }, {
542
+ text: this.messageFor('addColumnLeft'),
543
+ icon: commandIcons.addColumnLeft,
544
+ svgIcon: commandSVGIcons.addColumnLeft,
545
+ id: 'addColumnLeft',
546
+ }, {
547
+ text: this.messageFor('addColumnRight'),
548
+ icon: commandIcons.addColumnRight,
549
+ svgIcon: commandSVGIcons.addColumnRight,
550
+ id: 'addColumnRight',
551
+ }, {
552
+ text: this.messageFor('deleteColumn'),
553
+ icon: commandIcons.deleteColumn,
554
+ svgIcon: commandSVGIcons.deleteColumn,
555
+ id: 'deleteColumn',
556
+ }, {
557
+ text: this.messageFor('hideColumn'),
558
+ icon: commandIcons.hideColumn,
559
+ svgIcon: commandSVGIcons.hideColumn,
560
+ id: 'hideColumn',
561
+ }, {
562
+ text: this.messageFor('unhideColumn'),
563
+ icon: commandIcons.unhideColumn,
564
+ svgIcon: commandSVGIcons.unhideColumn,
565
+ id: 'unhideColumn',
566
+ disabled: !unhide
567
+ });
568
+ }
569
+ return commonItems;
570
+ }
571
+ openLinkDialog() {
572
+ const hasLink = isPresent(this.currentRange?.link());
573
+ const dialogSettings = {
574
+ appendTo: this.spreadsheetService.dialogContainer,
575
+ title: this.localization.get('insertLink'),
576
+ content: InsertLinkDialogComponent,
577
+ actions: [{
578
+ text: this.localization.get('dialogInsert'),
579
+ themeColor: 'primary'
580
+ }, {
581
+ text: this.localization.get('dialogCancel')
582
+ },
583
+ 'spacer', {
584
+ text: this.localization.get('dialogRemoveLink'),
585
+ themeColor: 'primary',
586
+ fillMode: 'clear',
587
+ cssClass: hasLink ? '' : 'k-disabled'
588
+ }],
589
+ actionsLayout: 'start',
590
+ width: 400,
591
+ autoFocusedElement: '.k-textbox > .k-input-inner'
592
+ };
593
+ const dialog = this.dialogService.open(dialogSettings);
594
+ const dialogInstance = dialog.dialog.instance;
595
+ const dialogContent = dialog.content.instance;
596
+ if (hasLink) {
597
+ dialogContent.setData({ link: this.currentRange?.link() });
598
+ }
599
+ dialogInstance.action.pipe(take(1)).subscribe((event) => {
600
+ if (event.text === this.localization.get('dialogCancel')) {
601
+ return;
602
+ }
603
+ let link = null;
604
+ if (event.text === this.localization.get('dialogInsert')) {
605
+ link = dialogContent.urlLink || null;
606
+ }
607
+ this.spreadsheetService.spreadsheet.executeCommand({
608
+ command: 'HyperlinkCommand',
609
+ options: { link }
610
+ });
611
+ });
612
+ }
372
613
  }
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 });
614
+ 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 });
374
615
  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: [
375
616
  SpreadsheetLocalizationService,
376
617
  {
@@ -384,7 +625,7 @@ SpreadsheetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
384
625
  SpreadsheetToolsService,
385
626
  PopupService,
386
627
  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: `
628
+ ], 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
629
  <ng-container
389
630
  kendoSpreadsheetLocalizedMessages
390
631
  i18n-background="kendo.spreadsheet.background|The title of the tool that changes the text background color."
@@ -513,7 +754,20 @@ SpreadsheetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
513
754
  dialogError="Error"
514
755
  i18n-duplicateSheetName="kendo.spreadsheet.duplicateSheetName|The content of the dialog that warns about duplicated sheet name."
515
756
  duplicateSheetName="There is an existing sheet with this name. Please enter another name."
516
- >
757
+ i18n-copy="kendo.spreadsheet.copy|The Copy command text."
758
+ copy="Copy"
759
+ i18n-cut="kendo.spreadsheet.cut|The Cut command text."
760
+ cut="Cut"
761
+ i18n-paste="kendo.spreadsheet.paste|The Paste command text."
762
+ paste="Paste (use Ctrl/⌘ + V)"
763
+ i18n-hideRow="kendo.spreadsheet.hideRow|The Hide row command text."
764
+ hideRow="Hide"
765
+ i18n-unhideRow="kendo.spreadsheet.unhideRow|The Unhide row command text."
766
+ unhideRow="Unhide"
767
+ i18n-hideColumn="kendo.spreadsheet.hideColumn|The Hide column command text."
768
+ hideColumn="Hide"
769
+ i18n-unhideColumn="kendo.spreadsheet.unhideColumn|The Unhide column command text."
770
+ unhideColumn="Unhide">
517
771
  </ng-container>
518
772
  <div class="k-spreadsheet-header">
519
773
  <kendo-menu kendoSpreadsheetMenu (select)="onMenuItemSelect($event)">
@@ -612,8 +866,13 @@ SpreadsheetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
612
866
  </div>
613
867
  <ng-container #dialogContainer></ng-container>
614
868
 
869
+ <kendo-contextmenu
870
+ #contextMenu
871
+ [items]="contextMenuItems"
872
+ (select)="onContextMenuSelect($event)"></kendo-contextmenu>
873
+
615
874
  <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]" }] });
875
+ `, 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]" }] });
617
876
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SpreadsheetComponent, decorators: [{
618
877
  type: Component,
619
878
  args: [{
@@ -762,7 +1021,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
762
1021
  dialogError="Error"
763
1022
  i18n-duplicateSheetName="kendo.spreadsheet.duplicateSheetName|The content of the dialog that warns about duplicated sheet name."
764
1023
  duplicateSheetName="There is an existing sheet with this name. Please enter another name."
765
- >
1024
+ i18n-copy="kendo.spreadsheet.copy|The Copy command text."
1025
+ copy="Copy"
1026
+ i18n-cut="kendo.spreadsheet.cut|The Cut command text."
1027
+ cut="Cut"
1028
+ i18n-paste="kendo.spreadsheet.paste|The Paste command text."
1029
+ paste="Paste (use Ctrl/⌘ + V)"
1030
+ i18n-hideRow="kendo.spreadsheet.hideRow|The Hide row command text."
1031
+ hideRow="Hide"
1032
+ i18n-unhideRow="kendo.spreadsheet.unhideRow|The Unhide row command text."
1033
+ unhideRow="Unhide"
1034
+ i18n-hideColumn="kendo.spreadsheet.hideColumn|The Hide column command text."
1035
+ hideColumn="Hide"
1036
+ i18n-unhideColumn="kendo.spreadsheet.unhideColumn|The Unhide column command text."
1037
+ unhideColumn="Unhide">
766
1038
  </ng-container>
767
1039
  <div class="k-spreadsheet-header">
768
1040
  <kendo-menu kendoSpreadsheetMenu (select)="onMenuItemSelect($event)">
@@ -861,10 +1133,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
861
1133
  </div>
862
1134
  <ng-container #dialogContainer></ng-container>
863
1135
 
1136
+ <kendo-contextmenu
1137
+ #contextMenu
1138
+ [items]="contextMenuItems"
1139
+ (select)="onContextMenuSelect($event)"></kendo-contextmenu>
1140
+
864
1141
  <div kendoWatermarkOverlay *ngIf="showLicenseWatermark"></div>
865
1142
  `,
866
1143
  }]
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: [{
1144
+ }], 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
1145
  type: ViewChild,
869
1146
  args: ['formulaBar', { read: FormulaInputDirective }]
870
1147
  }], formulaCellInputRef: [{
@@ -876,6 +1153,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
876
1153
  }], dialogContainer: [{
877
1154
  type: ViewChild,
878
1155
  args: ['dialogContainer', { read: ViewContainerRef }]
1156
+ }], contextMenu: [{
1157
+ type: ViewChild,
1158
+ args: ['contextMenu']
879
1159
  }], hostClass: [{
880
1160
  type: HostBinding,
881
1161
  args: ['class.k-spreadsheet']
@@ -47,7 +47,7 @@ import { DialogModule } from '@progress/kendo-angular-dialog';
47
47
  import { FontFamilyDropDownListComponent } from './tools/font-family/font-family-dropdownlist.component';
48
48
  import { FontSizeDropDownListComponent } from './tools/font-size/font-size-dropdownlist.component';
49
49
  import { DialogContentComponent } from './tools/shared/dialog-content.component';
50
- import { MenuModule } from '@progress/kendo-angular-menu';
50
+ import { MenusModule } from '@progress/kendo-angular-menu';
51
51
  import { MainMenuDirective } from './common/main-menu.directive';
52
52
  import { ActionDialogComponent } from './sheets-bar/action-dialog.component';
53
53
  import { SpreadsheetMergeDirective } from './tools/tables/merge-tool.directive';
@@ -195,7 +195,7 @@ SpreadsheetModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", versi
195
195
  EventsModule,
196
196
  IconsModule,
197
197
  IntlModule,
198
- MenuModule,
198
+ MenusModule,
199
199
  PopupModule,
200
200
  TabStripModule,
201
201
  ToolBarModule,
@@ -241,7 +241,7 @@ SpreadsheetModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", versi
241
241
  EventsModule,
242
242
  IconsModule,
243
243
  IntlModule,
244
- MenuModule,
244
+ MenusModule,
245
245
  PopupModule,
246
246
  TabStripModule,
247
247
  ToolBarModule,
@@ -263,7 +263,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
263
263
  EventsModule,
264
264
  IconsModule,
265
265
  IntlModule,
266
- MenuModule,
266
+ MenusModule,
267
267
  PopupModule,
268
268
  TabStripModule,
269
269
  ToolBarModule,
@@ -27,7 +27,10 @@ export class SpreadsheetInsertLinkDirective extends SpreadsheetCommandButton {
27
27
  command: 'HyperlinkCommand'
28
28
  });
29
29
  this.dialogService = dialogService;
30
- spreadsheetService.selectionChanged.subscribe(range => this.currentRange = range);
30
+ this.subs.add(spreadsheetService.selectionChanged.subscribe(range => this.currentRange = range));
31
+ }
32
+ ngOnDestroy() {
33
+ this.subs.unsubscribe();
31
34
  }
32
35
  clickHandler() {
33
36
  const sheet = this.spreadsheetService.spreadsheet.activeSheet();