@progress/kendo-angular-spreadsheet 14.1.0-develop.1 → 14.1.0-develop.11

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.
@@ -3,7 +3,7 @@
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  import { ViewContainerRef } from '@angular/core';
6
- import { Sheet, SpreadsheetWidget } from '@progress/kendo-spreadsheet-common';
6
+ import { Range, Sheet, SpreadsheetWidget } from '@progress/kendo-spreadsheet-common';
7
7
  import { Subject } from 'rxjs';
8
8
  import { SheetsChanges } from './sheet-changes';
9
9
  import { SheetInfo } from '../models';
@@ -15,6 +15,7 @@ export declare class SpreadsheetService {
15
15
  spreadsheet: SpreadsheetWidget;
16
16
  sheetsChanged: Subject<SheetsChanges>;
17
17
  activeSheetChanged: Subject<Sheet>;
18
+ selectionChanged: Subject<Range>;
18
19
  dialogContainer: ViewContainerRef;
19
20
  constructor();
20
21
  set currentActiveSheet(value: string);
@@ -13,6 +13,7 @@ export class SpreadsheetService {
13
13
  constructor() {
14
14
  this.sheetsChanged = new Subject();
15
15
  this.activeSheetChanged = new Subject();
16
+ this.selectionChanged = new Subject();
16
17
  spreadsheetCounter++;
17
18
  }
18
19
  set currentActiveSheet(value) {
@@ -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", 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", dialogApply: "dialogApply", dialogCancel: "dialogCancel", dialogDelete: "dialogDelete", dialogRename: "dialogRename", delete: "delete", rename: "rename", nameBox: "nameBox", addSheet: "addSheet", sheetsMenu: "sheetsMenu" }, 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", 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", dialogApply: "dialogApply", dialogCancel: "dialogCancel", dialogDelete: "dialogDelete", dialogRename: "dialogRename", delete: "delete", rename: "rename", nameBox: "nameBox", addSheet: "addSheet", sheetsMenu: "sheetsMenu", view: "view", merge: "merge" }, 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: [{
@@ -83,4 +83,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
83
83
  type: Input
84
84
  }], sheetsMenu: [{
85
85
  type: Input
86
+ }], view: [{
87
+ type: Input
88
+ }], merge: [{
89
+ type: Input
86
90
  }] } });
@@ -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: 1698853364,
13
- version: '14.1.0-develop.1',
12
+ publishDate: 1699450670,
13
+ version: '14.1.0-develop.11',
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
  };
@@ -46,14 +46,15 @@ import * as i24 from "./tools/typographical-emphasis/underline-tool.directive";
46
46
  import * as i25 from "./tools/align-tool.directive";
47
47
  import * as i26 from "./tools/text-wrap-tool.directive";
48
48
  import * as i27 from "./tools/format-tool.directive";
49
- import * as i28 from "./tools/gridlines-tool.directive";
50
- import * as i29 from "./tools/tables/add-column-left-button.directive";
51
- import * as i30 from "./tools/tables/add-column-right-button.directive";
52
- import * as i31 from "./tools/tables/add-row-below-button.directive";
53
- import * as i32 from "./tools/tables/add-row-above-button.directive";
54
- import * as i33 from "./tools/tables/delete-column-button.directive";
55
- import * as i34 from "./tools/tables/delete-row-button.directive";
56
- import * as i35 from "./action-bar/formula-input.directive";
49
+ import * as i28 from "./tools/tables/add-column-left-button.directive";
50
+ import * as i29 from "./tools/tables/add-column-right-button.directive";
51
+ import * as i30 from "./tools/tables/add-row-below-button.directive";
52
+ import * as i31 from "./tools/tables/add-row-above-button.directive";
53
+ import * as i32 from "./tools/tables/delete-column-button.directive";
54
+ import * as i33 from "./tools/tables/delete-row-button.directive";
55
+ import * as i34 from "./tools/tables/merge-tool.directive";
56
+ import * as i35 from "./tools/gridlines-tool.directive";
57
+ import * as i36 from "./action-bar/formula-input.directive";
57
58
  /**
58
59
  * Represents the [Kendo UI Spreadsheet component for Angular]({% slug overview_spreadsheet %}).
59
60
  */
@@ -145,7 +146,10 @@ export class SpreadsheetComponent {
145
146
  */
146
147
  this.showLicenseWatermark = false;
147
148
  this.onChange = (e) => hasObservers(this.change) && this.change.emit(e);
148
- this.onSelectionChange = (e) => hasObservers(this.selectionChange) && this.selectionChange.emit(e);
149
+ this.onSelectionChange = (e) => {
150
+ hasObservers(this.selectionChange) && this.selectionChange.emit(e);
151
+ this.spreadsheetService.selectionChanged.next(e.range);
152
+ };
149
153
  this.onChangeFormat = (e) => hasObservers(this.formatChange) && this.formatChange.emit(e);
150
154
  this.onExcelExport = (e) => hasObservers(this.excelExport) && this.excelExport.emit(e);
151
155
  this.onExcelImport = (e) => hasObservers(this.excelImport) && this.excelImport.emit(e);
@@ -174,6 +178,9 @@ export class SpreadsheetComponent {
174
178
  }, {
175
179
  id: 'insert',
176
180
  text: this.messageFor('insert')
181
+ }, {
182
+ id: 'view',
183
+ text: this.messageFor('view')
177
184
  }];
178
185
  }
179
186
  this.selectedMenuItem = this.menuItems[1];
@@ -379,6 +386,8 @@ SpreadsheetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
379
386
  file="File"
380
387
  i18n-insert="kendo.spreadsheet.insert|The text of the Insert toolbar tab."
381
388
  insert="Insert"
389
+ i18n-view="kendo.spreadsheet.view|The text of the View toolbar tab."
390
+ view="View"
382
391
  i18n-undo="kendo.spreadsheet.undo|The title of the Undo tool."
383
392
  undo="Undo"
384
393
  i18n-redo="kendo.spreadsheet.redo|The title of the Redo tool."
@@ -401,6 +410,8 @@ SpreadsheetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
401
410
  wrap="Text wrap"
402
411
  i18n-align="kendo.spreadsheet.align|The title of the Text Align tool."
403
412
  align="Align"
413
+ i18n-merge="kendo.spreadsheet.merge|The title of the Cells Merge tool."
414
+ merge="Merge"
404
415
  i18n-dialogApply="kendo.spreadsheet.dialogApply|The text of the **Apply** button in all Spreadsheet dialogs."
405
416
  dialogApply="Apply"
406
417
  i18n-dialogCancel="kendo.spreadsheet.dialogCancel|The text of the **Cancel** button in all Spreadsheet dialogs."
@@ -455,8 +466,6 @@ SpreadsheetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
455
466
  <kendo-toolbar-button kendoSpreadsheetTextWrap></kendo-toolbar-button>
456
467
  <kendo-toolbar-separator></kendo-toolbar-separator>
457
468
  <kendo-toolbar-dropdownbutton kendoSpreadsheetFormat></kendo-toolbar-dropdownbutton>
458
- <kendo-toolbar-separator></kendo-toolbar-separator>
459
- <kendo-toolbar-button kendoSpreadsheetGridLines></kendo-toolbar-button>
460
469
  </kendo-toolbar>
461
470
  <kendo-toolbar *ngIf="selectedMenuItem?.active && selectedMenuItem.id === 'insert'"
462
471
  [attr.aria-label]="messageFor('insert')"
@@ -470,6 +479,14 @@ SpreadsheetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
470
479
  <kendo-toolbar-button kendoSpreadsheetDeleteColumnButton></kendo-toolbar-button>
471
480
  <kendo-toolbar-button kendoSpreadsheetDeleteRowButton></kendo-toolbar-button>
472
481
  </kendo-toolbar>
482
+ <kendo-toolbar *ngIf="selectedMenuItem?.active && selectedMenuItem.id === 'view'"
483
+ [attr.aria-label]="messageFor('view')"
484
+ class="k-spreadsheet-toolbar"
485
+ [overflow]="overflow">
486
+ <kendo-toolbar-dropdownbutton kendoSpreadsheetMerge></kendo-toolbar-dropdownbutton>
487
+ <kendo-toolbar-separator></kendo-toolbar-separator>
488
+ <kendo-toolbar-button kendoSpreadsheetGridLines></kendo-toolbar-button>
489
+ </kendo-toolbar>
473
490
  </div>
474
491
  <div class="k-spreadsheet-action-bar">
475
492
  <div #nameBox kendoSpreadsheetNameBox [spreadsheetWidget]="spreadsheetWidget"></div>
@@ -499,7 +516,7 @@ SpreadsheetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
499
516
  <ng-container #dialogContainer></ng-container>
500
517
 
501
518
  <div kendoWatermarkOverlay *ngIf="showLicenseWatermark"></div>
502
- `, isInline: true, components: [{ type: i5.MenuComponent, selector: "kendo-menu", inputs: ["menuItemTemplate", "ariaRole", "menuItemLinkTemplate"], outputs: ["select", "open", "close"], exportAs: ["kendoMenu"] }, { type: i5.MenuItemComponent, selector: "kendo-menu-item", inputs: ["text", "url", "disabled", "cssClass", "cssStyle", "icon", "svgIcon", "data", "separator"] }, { type: i6.ToolBarComponent, selector: "kendo-toolbar", inputs: ["overflow", "resizable", "popupSettings", "tabindex", "size", "tabIndex"], outputs: ["open", "close"], exportAs: ["kendoToolBar"] }, { type: i7.SpreadsheetLoadFileComponent, selector: "kendo-spreadsheet-load-file-tool" }, { type: i6.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: i6.ToolBarButtonGroupComponent, selector: "kendo-toolbar-buttongroup", inputs: ["disabled", "selection", "width", "look"], exportAs: ["kendoToolBarButtonGroup"] }, { type: i6.ToolBarSeparatorComponent, selector: "kendo-toolbar-separator", exportAs: ["kendoToolBarSeparator"] }, { type: i8.SpreadsheetFontFamilyComponent, selector: "kendo-toolbar-dropdownlist[kendoSpreadsheetFontFamily]" }, { type: i9.SpreadsheetFontSizeComponent, selector: "kendo-toolbar-dropdownlist[kendoSpreadsheetFontSize]" }, { type: i10.SpreadsheetForeColorComponent, selector: "kendo-spreadsheet-forecolor-tool" }, { type: i11.SpreadsheetBackColorComponent, selector: "kendo-spreadsheet-backcolor-tool" }, { type: i6.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: i12.NameBoxComponent, selector: "[kendoSpreadsheetNameBox]", inputs: ["data", "spreadsheetWidget"] }, { type: i13.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { type: i14.SheetsBarComponent, selector: "[kendoSpreadsheetSheetsBar]", inputs: ["sheets", "sheetDescriptors"] }, { type: i15.WatermarkOverlayComponent, selector: "div[kendoWatermarkOverlay]" }], directives: [{ type: i16.LocalizedMessagesDirective, selector: "[kendoSpreadsheetLocalizedMessages]" }, { type: i17.MainMenuDirective, selector: "[kendoSpreadsheetMenu]" }, { type: i18.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i18.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i19.SpreadsheetSaveFileDirective, selector: "[kendoSpreadsheetSaveFile]" }, { type: i20.SpreadsheetUndoDirective, selector: "kendo-toolbar-button[kendoSpreadsheetUndo]" }, { type: i21.SpreadsheetRedoDirective, selector: "kendo-toolbar-button[kendoSpreadsheetRedo]" }, { type: i22.SpreadsheetBoldDirective, selector: "kendo-toolbar-button[kendoSpreadsheetBold]" }, { type: i23.SpreadsheetItalicDirective, selector: "kendo-toolbar-button[kendoSpreadsheetItalic]" }, { type: i24.SpreadsheetUnderlineDirective, selector: "kendo-toolbar-button[kendoSpreadsheetUnderline]" }, { type: i25.SpreadsheetTextAlignDirective, selector: "[kendoSpreadsheetTextAlign]" }, { type: i26.SpreadsheetTextWrapDirective, selector: "kendo-toolbar-button[kendoSpreadsheetTextWrap]" }, { type: i27.SpreadsheetFormatDirective, selector: "[kendoSpreadsheetFormat]" }, { type: i28.SpreadsheetGridLinesDirective, selector: "kendo-toolbar-button[kendoSpreadsheetGridLines]" }, { type: i29.SpreadsheetAddColumnLeftButtonDirective, selector: "kendo-toolbar-button[kendoSpreadsheetAddColumnLeftButton]" }, { type: i30.SpreadsheetAddColumnRightButtonDirective, selector: "kendo-toolbar-button[kendoSpreadsheetAddColumnRightButton]" }, { type: i31.SpreadsheetAddRowBelowButtonDirective, selector: "kendo-toolbar-button[kendoSpreadsheetAddRowBelowButton]" }, { type: i32.SpreadsheetAddRowAboveButtonDirective, selector: "kendo-toolbar-button[kendoSpreadsheetAddRowAboveButton]" }, { type: i33.SpreadsheetDeleteColumnButtonDirective, selector: "kendo-toolbar-button[kendoSpreadsheetDeleteColumnButton]" }, { type: i34.SpreadsheetDeleteRowButtonDirective, selector: "kendo-toolbar-button[kendoSpreadsheetDeleteRowButton]" }, { type: i35.FormulaInputDirective, selector: "[kendoSpreadsheetFormulaInput]" }] });
519
+ `, isInline: true, components: [{ type: i5.MenuComponent, selector: "kendo-menu", inputs: ["menuItemTemplate", "ariaRole", "menuItemLinkTemplate"], outputs: ["select", "open", "close"], exportAs: ["kendoMenu"] }, { type: i5.MenuItemComponent, selector: "kendo-menu-item", inputs: ["text", "url", "disabled", "cssClass", "cssStyle", "icon", "svgIcon", "data", "separator"] }, { type: i6.ToolBarComponent, selector: "kendo-toolbar", inputs: ["overflow", "resizable", "popupSettings", "tabindex", "size", "tabIndex"], outputs: ["open", "close"], exportAs: ["kendoToolBar"] }, { type: i7.SpreadsheetLoadFileComponent, selector: "kendo-spreadsheet-load-file-tool" }, { type: i6.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: i6.ToolBarButtonGroupComponent, selector: "kendo-toolbar-buttongroup", inputs: ["disabled", "selection", "width", "look"], exportAs: ["kendoToolBarButtonGroup"] }, { type: i6.ToolBarSeparatorComponent, selector: "kendo-toolbar-separator", exportAs: ["kendoToolBarSeparator"] }, { type: i8.SpreadsheetFontFamilyComponent, selector: "kendo-toolbar-dropdownlist[kendoSpreadsheetFontFamily]" }, { type: i9.SpreadsheetFontSizeComponent, selector: "kendo-toolbar-dropdownlist[kendoSpreadsheetFontSize]" }, { type: i10.SpreadsheetForeColorComponent, selector: "kendo-spreadsheet-forecolor-tool" }, { type: i11.SpreadsheetBackColorComponent, selector: "kendo-spreadsheet-backcolor-tool" }, { type: i6.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: i12.NameBoxComponent, selector: "[kendoSpreadsheetNameBox]", inputs: ["data", "spreadsheetWidget"] }, { type: i13.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { type: i14.SheetsBarComponent, selector: "[kendoSpreadsheetSheetsBar]", inputs: ["sheets", "sheetDescriptors"] }, { type: i15.WatermarkOverlayComponent, selector: "div[kendoWatermarkOverlay]" }], directives: [{ type: i16.LocalizedMessagesDirective, selector: "[kendoSpreadsheetLocalizedMessages]" }, { type: i17.MainMenuDirective, selector: "[kendoSpreadsheetMenu]" }, { type: i18.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i18.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i19.SpreadsheetSaveFileDirective, selector: "[kendoSpreadsheetSaveFile]" }, { type: i20.SpreadsheetUndoDirective, selector: "kendo-toolbar-button[kendoSpreadsheetUndo]" }, { type: i21.SpreadsheetRedoDirective, selector: "kendo-toolbar-button[kendoSpreadsheetRedo]" }, { type: i22.SpreadsheetBoldDirective, selector: "kendo-toolbar-button[kendoSpreadsheetBold]" }, { type: i23.SpreadsheetItalicDirective, selector: "kendo-toolbar-button[kendoSpreadsheetItalic]" }, { type: i24.SpreadsheetUnderlineDirective, selector: "kendo-toolbar-button[kendoSpreadsheetUnderline]" }, { type: i25.SpreadsheetTextAlignDirective, selector: "[kendoSpreadsheetTextAlign]" }, { type: i26.SpreadsheetTextWrapDirective, selector: "kendo-toolbar-button[kendoSpreadsheetTextWrap]" }, { type: i27.SpreadsheetFormatDirective, selector: "[kendoSpreadsheetFormat]" }, { type: i28.SpreadsheetAddColumnLeftButtonDirective, selector: "kendo-toolbar-button[kendoSpreadsheetAddColumnLeftButton]" }, { type: i29.SpreadsheetAddColumnRightButtonDirective, selector: "kendo-toolbar-button[kendoSpreadsheetAddColumnRightButton]" }, { type: i30.SpreadsheetAddRowBelowButtonDirective, selector: "kendo-toolbar-button[kendoSpreadsheetAddRowBelowButton]" }, { type: i31.SpreadsheetAddRowAboveButtonDirective, selector: "kendo-toolbar-button[kendoSpreadsheetAddRowAboveButton]" }, { type: i32.SpreadsheetDeleteColumnButtonDirective, selector: "kendo-toolbar-button[kendoSpreadsheetDeleteColumnButton]" }, { type: i33.SpreadsheetDeleteRowButtonDirective, selector: "kendo-toolbar-button[kendoSpreadsheetDeleteRowButton]" }, { type: i34.SpreadsheetMergeDirective, selector: "[kendoSpreadsheetMerge]" }, { type: i35.SpreadsheetGridLinesDirective, selector: "kendo-toolbar-button[kendoSpreadsheetGridLines]" }, { type: i36.FormulaInputDirective, selector: "[kendoSpreadsheetFormulaInput]" }] });
503
520
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SpreadsheetComponent, decorators: [{
504
521
  type: Component,
505
522
  args: [{
@@ -547,6 +564,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
547
564
  file="File"
548
565
  i18n-insert="kendo.spreadsheet.insert|The text of the Insert toolbar tab."
549
566
  insert="Insert"
567
+ i18n-view="kendo.spreadsheet.view|The text of the View toolbar tab."
568
+ view="View"
550
569
  i18n-undo="kendo.spreadsheet.undo|The title of the Undo tool."
551
570
  undo="Undo"
552
571
  i18n-redo="kendo.spreadsheet.redo|The title of the Redo tool."
@@ -569,6 +588,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
569
588
  wrap="Text wrap"
570
589
  i18n-align="kendo.spreadsheet.align|The title of the Text Align tool."
571
590
  align="Align"
591
+ i18n-merge="kendo.spreadsheet.merge|The title of the Cells Merge tool."
592
+ merge="Merge"
572
593
  i18n-dialogApply="kendo.spreadsheet.dialogApply|The text of the **Apply** button in all Spreadsheet dialogs."
573
594
  dialogApply="Apply"
574
595
  i18n-dialogCancel="kendo.spreadsheet.dialogCancel|The text of the **Cancel** button in all Spreadsheet dialogs."
@@ -623,8 +644,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
623
644
  <kendo-toolbar-button kendoSpreadsheetTextWrap></kendo-toolbar-button>
624
645
  <kendo-toolbar-separator></kendo-toolbar-separator>
625
646
  <kendo-toolbar-dropdownbutton kendoSpreadsheetFormat></kendo-toolbar-dropdownbutton>
626
- <kendo-toolbar-separator></kendo-toolbar-separator>
627
- <kendo-toolbar-button kendoSpreadsheetGridLines></kendo-toolbar-button>
628
647
  </kendo-toolbar>
629
648
  <kendo-toolbar *ngIf="selectedMenuItem?.active && selectedMenuItem.id === 'insert'"
630
649
  [attr.aria-label]="messageFor('insert')"
@@ -638,6 +657,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
638
657
  <kendo-toolbar-button kendoSpreadsheetDeleteColumnButton></kendo-toolbar-button>
639
658
  <kendo-toolbar-button kendoSpreadsheetDeleteRowButton></kendo-toolbar-button>
640
659
  </kendo-toolbar>
660
+ <kendo-toolbar *ngIf="selectedMenuItem?.active && selectedMenuItem.id === 'view'"
661
+ [attr.aria-label]="messageFor('view')"
662
+ class="k-spreadsheet-toolbar"
663
+ [overflow]="overflow">
664
+ <kendo-toolbar-dropdownbutton kendoSpreadsheetMerge></kendo-toolbar-dropdownbutton>
665
+ <kendo-toolbar-separator></kendo-toolbar-separator>
666
+ <kendo-toolbar-button kendoSpreadsheetGridLines></kendo-toolbar-button>
667
+ </kendo-toolbar>
641
668
  </div>
642
669
  <div class="k-spreadsheet-action-bar">
643
670
  <div #nameBox kendoSpreadsheetNameBox [spreadsheetWidget]="spreadsheetWidget"></div>
@@ -50,6 +50,7 @@ import { DialogContentComponent } from './tools/shared/dialog-content.component'
50
50
  import { MenuModule } 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
+ import { SpreadsheetMergeDirective } from './tools/tables/merge-tool.directive';
53
54
  import * as i0 from "@angular/core";
54
55
  const DIRECTIVES = [
55
56
  SpreadsheetComponent,
@@ -85,7 +86,8 @@ const DIRECTIVES = [
85
86
  FontSizeDropDownListComponent,
86
87
  DialogContentComponent,
87
88
  MainMenuDirective,
88
- ActionDialogComponent
89
+ ActionDialogComponent,
90
+ SpreadsheetMergeDirective
89
91
  ];
90
92
  const EXPORTS = [
91
93
  SpreadsheetComponent,
@@ -110,7 +112,8 @@ const EXPORTS = [
110
112
  SpreadsheetDeleteColumnButtonDirective,
111
113
  SpreadsheetDeleteRowButtonDirective,
112
114
  SpreadsheetTextAlignDirective,
113
- SpreadsheetTextWrapDirective
115
+ SpreadsheetTextWrapDirective,
116
+ SpreadsheetMergeDirective
114
117
  ];
115
118
  /**
116
119
  * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])
@@ -152,7 +155,8 @@ SpreadsheetModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", versi
152
155
  FontSizeDropDownListComponent,
153
156
  DialogContentComponent,
154
157
  MainMenuDirective,
155
- ActionDialogComponent], imports: [CommonModule,
158
+ ActionDialogComponent,
159
+ SpreadsheetMergeDirective], imports: [CommonModule,
156
160
  ButtonsModule,
157
161
  ComboBoxModule,
158
162
  DropDownListModule,
@@ -188,7 +192,8 @@ SpreadsheetModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", versi
188
192
  SpreadsheetDeleteColumnButtonDirective,
189
193
  SpreadsheetDeleteRowButtonDirective,
190
194
  SpreadsheetTextAlignDirective,
191
- SpreadsheetTextWrapDirective] });
195
+ SpreadsheetTextWrapDirective,
196
+ SpreadsheetMergeDirective] });
192
197
  SpreadsheetModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SpreadsheetModule, imports: [[
193
198
  CommonModule,
194
199
  ButtonsModule,
@@ -2,7 +2,7 @@
2
2
  * Copyright © 2023 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 { alignCenterIcon, alignJustifyIcon, alignLeftIcon, alignRightIcon, boldIcon, dropletIcon, foregroundColorIcon, italicIcon, tableColumnDeleteIcon, tableColumnInsertLeftIcon, tableColumnInsertRightIcon, tableRowDeleteIcon, tableRowInsertAboveIcon, tableRowInsertBelowIcon, underlineIcon, arrowRotateCcwIcon, arrowRotateCwIcon, bordersNoneIcon, alignTopIcon, alignMiddleIcon, alignBottomIcon, textWrapIcon, folderOpenIcon, downloadIcon, customFormatIcon, fontSizeIcon, fontFamilyIcon } from '@progress/kendo-svg-icons';
5
+ import { alignCenterIcon, alignJustifyIcon, alignLeftIcon, alignRightIcon, boldIcon, dropletIcon, foregroundColorIcon, italicIcon, tableColumnDeleteIcon, tableColumnInsertLeftIcon, tableColumnInsertRightIcon, tableRowDeleteIcon, tableRowInsertAboveIcon, tableRowInsertBelowIcon, underlineIcon, arrowRotateCcwIcon, arrowRotateCwIcon, bordersNoneIcon, alignTopIcon, alignMiddleIcon, alignBottomIcon, textWrapIcon, folderOpenIcon, downloadIcon, customFormatIcon, fontSizeIcon, fontFamilyIcon, cellsMergeHorizontallyIcon, cellsMergeIcon, cellsMergeVerticallyIcon, tableUnmergeIcon } from '@progress/kendo-svg-icons';
6
6
  /**
7
7
  * @hidden
8
8
  */
@@ -34,7 +34,12 @@ export const commandIcons = {
34
34
  download: 'download',
35
35
  format: 'custom-format',
36
36
  fontSize: 'font-size',
37
- fontFamily: 'font-family'
37
+ fontFamily: 'font-family',
38
+ merge: 'cells-merge',
39
+ mergeAll: 'cells-merge',
40
+ mergeHorizontally: 'cells-merge-horizontally',
41
+ mergeVertically: 'cells-merge-vertically',
42
+ unmerge: 'table-unmerge'
38
43
  };
39
44
  /**
40
45
  * @hidden
@@ -67,5 +72,10 @@ export const commandSVGIcons = {
67
72
  download: downloadIcon,
68
73
  format: customFormatIcon,
69
74
  fontSize: fontSizeIcon,
70
- fontFamily: fontFamilyIcon
75
+ fontFamily: fontFamilyIcon,
76
+ merge: cellsMergeIcon,
77
+ mergeAll: cellsMergeIcon,
78
+ mergeHorizontally: cellsMergeHorizontallyIcon,
79
+ mergeVertically: cellsMergeVerticallyIcon,
80
+ unmerge: tableUnmergeIcon
71
81
  };
@@ -3,7 +3,7 @@
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  import { InjectionToken } from "@angular/core";
6
- import { commandSVGIcons } from './command-icons';
6
+ import { commandIcons, commandSVGIcons } from './command-icons';
7
7
  const DEFAULT_FONT_FAMILY = 'Arial';
8
8
  const DEFAULT_FONT_SIZE = 12;
9
9
  /**
@@ -47,13 +47,22 @@ export const FORMATS = [
47
47
  * @hidden
48
48
  */
49
49
  export const ALIGNS = [
50
- { icon: 'align-left', svgIcon: commandSVGIcons.alignLeft, textKey: 'Align Left', commandName: 'textAlign', value: 'left', cssClass: '' },
51
- { icon: 'align-center', svgIcon: commandSVGIcons.alignCenter, textKey: 'Align Center', commandName: 'textAlign', value: 'center', cssClass: '' },
52
- { icon: 'align-right', svgIcon: commandSVGIcons.alignRight, textKey: 'Align Right', commandName: 'textAlign', value: 'right', cssClass: '' },
53
- { icon: 'align-justify', svgIcon: commandSVGIcons.alignJustify, textKey: 'Align Justify', commandName: 'textAlign', value: 'justify', cssClass: '' },
54
- { icon: 'align-top', svgIcon: commandSVGIcons.alignTop, textKey: 'Align Top', commandName: 'verticalAlign', value: 'top', cssClass: '' },
55
- { icon: 'align-middle', svgIcon: commandSVGIcons.alignMiddle, textKey: 'Align Middle', commandName: 'verticalAlign', value: 'center', cssClass: '' },
56
- { icon: 'align-bottom', svgIcon: commandSVGIcons.alignBottom, textKey: 'Align Bottom', commandName: 'verticalAlign', value: 'bottom', cssClass: '' }
50
+ { icon: commandIcons.alignLeft, svgIcon: commandSVGIcons.alignLeft, textKey: 'Align Left', commandName: 'textAlign', value: 'left', cssClass: '' },
51
+ { icon: commandIcons.alignCenter, svgIcon: commandSVGIcons.alignCenter, textKey: 'Align Center', commandName: 'textAlign', value: 'center', cssClass: '' },
52
+ { icon: commandIcons.alignRight, svgIcon: commandSVGIcons.alignRight, textKey: 'Align Right', commandName: 'textAlign', value: 'right', cssClass: '' },
53
+ { icon: commandIcons.alignJustify, svgIcon: commandSVGIcons.alignJustify, textKey: 'Align Justify', commandName: 'textAlign', value: 'justify', cssClass: '' },
54
+ { icon: commandIcons.alignTop, svgIcon: commandSVGIcons.alignTop, textKey: 'Align Top', commandName: 'verticalAlign', value: 'top', cssClass: '' },
55
+ { icon: commandIcons.alignMiddle, svgIcon: commandSVGIcons.alignMiddle, textKey: 'Align Middle', commandName: 'verticalAlign', value: 'center', cssClass: '' },
56
+ { icon: commandIcons.alignBottom, svgIcon: commandSVGIcons.alignBottom, textKey: 'Align Bottom', commandName: 'verticalAlign', value: 'bottom', cssClass: '' }
57
+ ];
58
+ /**
59
+ * @hidden
60
+ */
61
+ export const MERGE = [
62
+ { icon: commandIcons.mergeAll, svgIcon: commandSVGIcons.mergeAll, textKey: 'Merge all', commandName: 'cells', value: 'cells', disabled: false },
63
+ { icon: commandIcons.mergeHorizontally, svgIcon: commandSVGIcons.mergeHorizontally, textKey: 'Merge horizontally', commandName: 'horizontally', value: 'horizontally', disabled: false },
64
+ { icon: commandIcons.mergeVertically, svgIcon: commandSVGIcons.mergeVertically, textKey: 'Merge vertically', commandName: 'vertically', value: 'vertically', disabled: false },
65
+ { icon: commandIcons.unmerge, svgIcon: commandSVGIcons.unmerge, textKey: 'Unmerge', commandName: 'unmerge', value: 'unmerge', disabled: false }
57
66
  ];
58
67
  /**
59
68
  * @hidden
@@ -8,3 +8,4 @@ export { SpreadsheetAddRowAboveButtonDirective } from './add-row-above-button.di
8
8
  export { SpreadsheetAddRowBelowButtonDirective } from './add-row-below-button.directive';
9
9
  export { SpreadsheetDeleteColumnButtonDirective } from './delete-column-button.directive';
10
10
  export { SpreadsheetDeleteRowButtonDirective } from './delete-row-button.directive';
11
+ export { SpreadsheetMergeDirective } from './merge-tool.directive';
@@ -0,0 +1,68 @@
1
+ /**-----------------------------------------------------------------------------------------
2
+ * Copyright © 2023 Progress Software Corporation. All rights reserved.
3
+ * Licensed under commercial license. See LICENSE.md in the project root for more information
4
+ *-------------------------------------------------------------------------------------------*/
5
+ import { Directive } from '@angular/core';
6
+ import { Subscription } from 'rxjs';
7
+ import { ToolBarDropDownButtonComponent } from '@progress/kendo-angular-toolbar';
8
+ import { SpreadsheetLocalizationService } from '../../localization/spreadsheet-localization.service';
9
+ import { SpreadsheetService } from '../../common/spreadsheet.service';
10
+ import { commandIcons, commandSVGIcons } from '../shared/command-icons';
11
+ import { MERGE } from '../shared/constants';
12
+ import * as i0 from "@angular/core";
13
+ import * as i1 from "@progress/kendo-angular-toolbar";
14
+ import * as i2 from "../../localization/spreadsheet-localization.service";
15
+ import * as i3 from "../../common/spreadsheet.service";
16
+ /**
17
+ * @hidden
18
+ */
19
+ export class SpreadsheetMergeDirective {
20
+ constructor(host, localization, spreadsheetService) {
21
+ this.host = host;
22
+ this.spreadsheetService = spreadsheetService;
23
+ this.commandName = 'merge';
24
+ this.subs = new Subscription();
25
+ host.svgIcon = commandSVGIcons[this.commandName];
26
+ host.icon = commandIcons[this.commandName];
27
+ host.arrowIcon = true;
28
+ host.fillMode = 'flat';
29
+ host.data = [...MERGE];
30
+ this.subs.add(host.itemClick.subscribe((e) => this.onItemClick(e)));
31
+ host.title = localization.get(this.commandName);
32
+ host.textField = 'textKey';
33
+ }
34
+ ngOnInit() {
35
+ this.subs.add(this.host.open.subscribe(() => {
36
+ const sheet = this.spreadsheetService.spreadsheet.activeSheet();
37
+ const isMergedCellWithinRange = this.hasMergedCells(sheet);
38
+ const unmergeItem = this.host.data.find(i => i.commandName === 'unmerge');
39
+ unmergeItem.disabled = !isMergedCellWithinRange;
40
+ }));
41
+ this.subs.add(this.spreadsheetService.selectionChanged.subscribe(range => this.selectedRange = range));
42
+ }
43
+ ngOnDestroy() {
44
+ this.subs.unsubscribe();
45
+ }
46
+ onItemClick(item) {
47
+ if (item.disabled) {
48
+ return;
49
+ }
50
+ const value = item.value || null;
51
+ const options = {
52
+ command: 'MergeCellCommand', options: { property: item.commandName, value }
53
+ };
54
+ this.spreadsheetService.spreadsheet.executeCommand(options);
55
+ }
56
+ hasMergedCells(sheet) {
57
+ const range = sheet._ref(this.selectedRange);
58
+ return sheet._getMergedCells(range).hasMerged;
59
+ }
60
+ }
61
+ SpreadsheetMergeDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SpreadsheetMergeDirective, deps: [{ token: i1.ToolBarDropDownButtonComponent }, { token: i2.SpreadsheetLocalizationService }, { token: i3.SpreadsheetService }], target: i0.ɵɵFactoryTarget.Directive });
62
+ SpreadsheetMergeDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: SpreadsheetMergeDirective, selector: "[kendoSpreadsheetMerge]", ngImport: i0 });
63
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SpreadsheetMergeDirective, decorators: [{
64
+ type: Directive,
65
+ args: [{
66
+ selector: '[kendoSpreadsheetMerge]',
67
+ }]
68
+ }], ctorParameters: function () { return [{ type: i1.ToolBarDropDownButtonComponent }, { type: i2.SpreadsheetLocalizationService }, { type: i3.SpreadsheetService }]; } });