@progress/kendo-angular-spreadsheet 14.0.0-develop.1 → 14.0.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.
Files changed (31) hide show
  1. package/action-bar/formula-input.directive.d.ts +1 -1
  2. package/action-bar/namebox.component.d.ts +4 -1
  3. package/common/spreadsheet.service.d.ts +1 -0
  4. package/esm2020/action-bar/formula-input.directive.mjs +4 -4
  5. package/esm2020/action-bar/namebox.component.mjs +13 -5
  6. package/esm2020/common/spreadsheet.service.mjs +3 -0
  7. package/esm2020/localization/messages.mjs +7 -1
  8. package/esm2020/package-metadata.mjs +2 -2
  9. package/esm2020/sheets-bar/action-dialog.component.mjs +2 -2
  10. package/esm2020/sheets-bar/sheets-bar.component.mjs +123 -64
  11. package/esm2020/spreadsheet.component.mjs +34 -31
  12. package/esm2020/spreadsheet.module.mjs +2 -5
  13. package/esm2020/tools/font-family/font-family-dropdownlist.component.mjs +1 -1
  14. package/esm2020/tools/font-size/font-size-dropdownlist.component.mjs +1 -1
  15. package/esm2020/tools/index.mjs +1 -1
  16. package/esm2020/tools/load-file.component.mjs +3 -0
  17. package/esm2020/tools/shared/spreadsheet-command-base.mjs +0 -7
  18. package/fesm2015/progress-kendo-angular-spreadsheet.mjs +189 -139
  19. package/fesm2020/progress-kendo-angular-spreadsheet.mjs +189 -140
  20. package/index.d.ts +1 -0
  21. package/localization/messages.d.ts +13 -1
  22. package/models/sheet-info.d.ts +0 -1
  23. package/package.json +13 -13
  24. package/schematics/ngAdd/index.js +1 -1
  25. package/sheets-bar/sheets-bar.component.d.ts +15 -4
  26. package/spreadsheet.component.d.ts +6 -16
  27. package/spreadsheet.module.d.ts +14 -15
  28. package/tools/index.d.ts +1 -1
  29. package/tools/load-file.component.d.ts +3 -0
  30. package/esm2020/sheets-bar/remove.directive.mjs +0 -25
  31. package/sheets-bar/remove.directive.d.ts +0 -13
@@ -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 * as i0 from '@angular/core';
6
- import { EventEmitter, Injectable, Output, Inject, Optional, Component, HostBinding, Input, Directive, forwardRef, ElementRef, ViewChild, InjectionToken, HostListener, ViewContainerRef, NgModule } from '@angular/core';
6
+ import { EventEmitter, Injectable, Output, Inject, Optional, Component, HostBinding, Input, Directive, forwardRef, ElementRef, ViewChild, InjectionToken, HostListener, ViewChildren, ViewContainerRef, NgModule } from '@angular/core';
7
7
  import { validatePackage } from '@progress/kendo-licensing';
8
8
  import { SpreadsheetWidget } from '@progress/kendo-spreadsheet-common';
9
9
  import * as i1$5 from '@progress/kendo-angular-intl';
@@ -12,7 +12,7 @@ import { formulaFxIcon, trashIcon, copyIcon, pencilIcon, arrowRightIcon, arrowLe
12
12
  import * as i1 from '@progress/kendo-angular-l10n';
13
13
  import { LocalizationService, L10N_PREFIX, RTL, ComponentMessages } from '@progress/kendo-angular-l10n';
14
14
  import * as i3 from '@progress/kendo-angular-common';
15
- import { isPresent, hasObservers, isDocumentAvailable, shouldShowValidationUI, EventsModule, WatermarkModule } from '@progress/kendo-angular-common';
15
+ import { isPresent, hasObservers, isDocumentAvailable, Keys, shouldShowValidationUI, EventsModule, WatermarkModule } from '@progress/kendo-angular-common';
16
16
  import * as i1$1 from '@progress/kendo-angular-popup';
17
17
  import { PopupService, PopupModule } from '@progress/kendo-angular-popup';
18
18
  import { Subject, Subscription } from 'rxjs';
@@ -46,8 +46,8 @@ const packageMetadata = {
46
46
  name: '@progress/kendo-angular-spreadsheet',
47
47
  productName: 'Kendo UI for Angular',
48
48
  productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
49
- publishDate: 1695995129,
50
- version: '14.0.0-develop.1',
49
+ publishDate: 1696927504,
50
+ version: '14.0.0-develop.11',
51
51
  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',
52
52
  };
53
53
 
@@ -177,6 +177,9 @@ class SpreadsheetService {
177
177
  get formulaListId() {
178
178
  return `k-spreadsheet-${spreadsheetCounter}-formula-list`;
179
179
  }
180
+ get tablistId() {
181
+ return `k-spreadsheet-${spreadsheetCounter}-tablist`;
182
+ }
180
183
  notifySheetsChange(actionType, sheetInfo) {
181
184
  const sheets = this.spreadsheet.sheets();
182
185
  this.sheetsChanged.next({ sheets, sheet: sheetInfo, actionType });
@@ -265,7 +268,7 @@ class FormulaInputDirective {
265
268
  this.spreadsheetService = spreadsheetService;
266
269
  this.hostClasses = true;
267
270
  this.ariaHasPopup = 'menu';
268
- this.ariaExpanded = null;
271
+ this.ariaExpanded = 'false';
269
272
  this.focusedItem = () => { var _a; return (_a = this.list) === null || _a === void 0 ? void 0 : _a.element.nativeElement.querySelector('.k-focus'); };
270
273
  this.unfocus = () => {
271
274
  const focused = this.focusedItem();
@@ -293,7 +296,7 @@ class FormulaInputDirective {
293
296
  };
294
297
  }
295
298
  get ariaControls() {
296
- return this.ariaExpanded ? this.spreadsheetService.formulaListId : null;
299
+ return this.ariaExpanded === 'true' ? this.spreadsheetService.formulaListId : null;
297
300
  }
298
301
  get listElement() {
299
302
  var _a;
@@ -353,12 +356,12 @@ class FormulaInputDirective {
353
356
  this.list = list;
354
357
  list.data = this.data;
355
358
  list.itemClick = this.handler;
356
- this.ariaExpanded = true;
359
+ this.ariaExpanded = 'true';
357
360
  },
358
361
  close: () => {
359
362
  this.popupRef && this.popupRef.close();
360
363
  this.popupRef = null;
361
- this.ariaExpanded = null;
364
+ this.ariaExpanded = 'false';
362
365
  },
363
366
  position: () => {
364
367
  // contentKey++;
@@ -499,6 +502,9 @@ const commandSVGIcons = {
499
502
  fontFamily: fontFamilyIcon
500
503
  };
501
504
 
505
+ /**
506
+ * @hidden
507
+ */
502
508
  class SpreadsheetLoadFileComponent extends ToolBarToolComponent {
503
509
  constructor(localization, spreadsheetService, toolbar) {
504
510
  super();
@@ -805,7 +811,7 @@ FontFamilyDropDownListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion:
805
811
  </span>
806
812
  </ng-template>
807
813
  </kendo-dropdownlist>
808
- `, isInline: true, components: [{ type: i1$3.DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["showStickyHeader", "iconClass", "loading", "data", "value", "textField", "valueField", "adaptiveMode", "title", "subtitle", "popupSettings", "listHeight", "defaultItem", "disabled", "itemDisabled", "readonly", "filterable", "virtual", "ignoreCase", "delay", "valuePrimitive", "tabindex", "tabIndex", "size", "rounded", "fillMode", "leftRightArrowsNavigation", "id"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }], directives: [{ type: i1$3.ItemTemplateDirective, selector: "[kendoDropDownListItemTemplate],[kendoComboBoxItemTemplate],[kendoAutoCompleteItemTemplate],[kendoMultiSelectItemTemplate]" }, { type: i7.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
814
+ `, isInline: true, components: [{ type: i1$3.DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["customIconClass", "showStickyHeader", "icon", "svgIcon", "loading", "data", "value", "textField", "valueField", "adaptiveMode", "title", "subtitle", "popupSettings", "listHeight", "defaultItem", "disabled", "itemDisabled", "readonly", "filterable", "virtual", "ignoreCase", "delay", "valuePrimitive", "tabindex", "tabIndex", "size", "rounded", "fillMode", "leftRightArrowsNavigation", "id"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }], directives: [{ type: i1$3.ItemTemplateDirective, selector: "[kendoDropDownListItemTemplate],[kendoComboBoxItemTemplate],[kendoAutoCompleteItemTemplate],[kendoMultiSelectItemTemplate]" }, { type: i7.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
809
815
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FontFamilyDropDownListComponent, decorators: [{
810
816
  type: Component,
811
817
  args: [{
@@ -847,7 +853,7 @@ FontSizeDropDownListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "1
847
853
  (valueChange)="onValueChange($event)"
848
854
  [leftRightArrowsNavigation]="false"
849
855
  [fillMode]="fillMode"></kendo-dropdownlist>
850
- `, isInline: true, components: [{ type: i1$3.DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["showStickyHeader", "iconClass", "loading", "data", "value", "textField", "valueField", "adaptiveMode", "title", "subtitle", "popupSettings", "listHeight", "defaultItem", "disabled", "itemDisabled", "readonly", "filterable", "virtual", "ignoreCase", "delay", "valuePrimitive", "tabindex", "tabIndex", "size", "rounded", "fillMode", "leftRightArrowsNavigation", "id"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }] });
856
+ `, isInline: true, components: [{ type: i1$3.DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["customIconClass", "showStickyHeader", "icon", "svgIcon", "loading", "data", "value", "textField", "valueField", "adaptiveMode", "title", "subtitle", "popupSettings", "listHeight", "defaultItem", "disabled", "itemDisabled", "readonly", "filterable", "virtual", "ignoreCase", "delay", "valuePrimitive", "tabindex", "tabIndex", "size", "rounded", "fillMode", "leftRightArrowsNavigation", "id"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }] });
851
857
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FontSizeDropDownListComponent, decorators: [{
852
858
  type: Component,
853
859
  args: [{
@@ -1450,9 +1456,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
1450
1456
  * @hidden
1451
1457
  */
1452
1458
  class NameBoxComponent {
1453
- constructor(ngZone, host) {
1459
+ constructor(ngZone, host, localization) {
1454
1460
  this.ngZone = ngZone;
1455
1461
  this.host = host;
1462
+ this.localization = localization;
1456
1463
  this.hostClass = true;
1457
1464
  this.valueNormalizer = (text) => text.pipe(map((content) => ({ name: content })));
1458
1465
  }
@@ -1478,6 +1485,9 @@ class NameBoxComponent {
1478
1485
  }
1479
1486
  };
1480
1487
  }
1488
+ get title() {
1489
+ return this.localization.get('nameBox');
1490
+ }
1481
1491
  onSelectionChange(value) {
1482
1492
  const editor = this.spreadsheetWidget.view.nameEditor;
1483
1493
  if (editor && value) {
@@ -1496,7 +1506,7 @@ class NameBoxComponent {
1496
1506
  }
1497
1507
  ;
1498
1508
  }
1499
- NameBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: NameBoxComponent, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
1509
+ NameBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: NameBoxComponent, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }, { token: SpreadsheetLocalizationService }], target: i0.ɵɵFactoryTarget.Component });
1500
1510
  NameBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: NameBoxComponent, selector: "[kendoSpreadsheetNameBox]", inputs: { data: "data", spreadsheetWidget: "spreadsheetWidget" }, host: { listeners: { "keydown.enter": "keyDownHandler()" }, properties: { "class.k-spreadsheet-name-editor": "this.hostClass" } }, viewQueries: [{ propertyName: "combobox", first: true, predicate: ["combobox"], descendants: true }], ngImport: i0, template: `
1501
1511
  <kendo-combobox #combobox
1502
1512
  [popupSettings]="{popupClass: 'k-spreadsheet-names-popup'}"
@@ -1510,8 +1520,9 @@ NameBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", versi
1510
1520
  [value]="value"
1511
1521
  (open)="onOpen()"
1512
1522
  [valueNormalizer]="valueNormalizer"
1523
+ [attr.title]="title"
1513
1524
  ></kendo-combobox>
1514
- `, isInline: true, components: [{ type: i1$3.ComboBoxComponent, selector: "kendo-combobox", inputs: ["showStickyHeader", "focusableId", "allowCustom", "data", "value", "textField", "valueField", "valuePrimitive", "valueNormalizer", "placeholder", "adaptiveMode", "title", "subtitle", "popupSettings", "listHeight", "iconClass", "loading", "suggest", "clearButton", "disabled", "itemDisabled", "readonly", "tabindex", "tabIndex", "filterable", "virtual", "size", "rounded", "fillMode"], outputs: ["valueChange", "selectionChange", "filterChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoComboBox"] }] });
1525
+ `, isInline: true, components: [{ type: i1$3.ComboBoxComponent, selector: "kendo-combobox", inputs: ["icon", "svgIcon", "showStickyHeader", "focusableId", "allowCustom", "data", "value", "textField", "valueField", "valuePrimitive", "valueNormalizer", "placeholder", "adaptiveMode", "title", "subtitle", "popupSettings", "listHeight", "loading", "suggest", "clearButton", "disabled", "itemDisabled", "readonly", "tabindex", "tabIndex", "filterable", "virtual", "size", "rounded", "fillMode"], outputs: ["valueChange", "selectionChange", "filterChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoComboBox"] }] });
1515
1526
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: NameBoxComponent, decorators: [{
1516
1527
  type: Component,
1517
1528
  args: [{
@@ -1529,10 +1540,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
1529
1540
  [value]="value"
1530
1541
  (open)="onOpen()"
1531
1542
  [valueNormalizer]="valueNormalizer"
1543
+ [attr.title]="title"
1532
1544
  ></kendo-combobox>
1533
1545
  `
1534
1546
  }]
1535
- }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.ElementRef }]; }, propDecorators: { hostClass: [{
1547
+ }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.ElementRef }, { type: SpreadsheetLocalizationService }]; }, propDecorators: { hostClass: [{
1536
1548
  type: HostBinding,
1537
1549
  args: ['class.k-spreadsheet-name-editor']
1538
1550
  }], keyDownHandler: [{
@@ -1568,7 +1580,7 @@ ActionDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
1568
1580
  <p>Are you sure you want to proceed?</p>
1569
1581
  </ng-container>
1570
1582
 
1571
- <form class="k-form k-form-md" *ngIf="commandName === 'rename'">
1583
+ <form class="k-form k-form-md" *ngIf="commandName === 'rename'" method="dialog">
1572
1584
  <div class="k-form-field">
1573
1585
  <label class="k-label k-form-label">Rename sheet</label>
1574
1586
  <div class="k-form-field-wrap">
@@ -1590,7 +1602,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
1590
1602
  <p>Are you sure you want to proceed?</p>
1591
1603
  </ng-container>
1592
1604
 
1593
- <form class="k-form k-form-md" *ngIf="commandName === 'rename'">
1605
+ <form class="k-form k-form-md" *ngIf="commandName === 'rename'" method="dialog">
1594
1606
  <div class="k-form-field">
1595
1607
  <label class="k-label k-form-label">Rename sheet</label>
1596
1608
  <div class="k-form-field-wrap">
@@ -1634,9 +1646,16 @@ class SheetsBarComponent {
1634
1646
  };
1635
1647
  this.actionsCallback = {
1636
1648
  copy: (sheetInfo) => {
1637
- sheetInfo.copies ? sheetInfo.copies += 1 : sheetInfo.copies = 1;
1649
+ let copies = 0;
1650
+ const regex = this.getCopyRegex(sheetInfo.text);
1651
+ this.sheets.forEach(sheet => {
1652
+ const isPresent = regex.test(sheet.text);
1653
+ if (isPresent) {
1654
+ copies += 1;
1655
+ }
1656
+ });
1638
1657
  const sheetToCopy = this.spreadsheetService.spreadsheet.sheets().find(s => s.name() === sheetInfo.text);
1639
- const newName = `${sheetToCopy.name()} (${sheetInfo.copies})`;
1658
+ const newName = `${sheetInfo.text} (${copies + 1})`;
1640
1659
  this.spreadsheetService.spreadsheet.insertSheet({ data: Object.assign(Object.assign({}, sheetToCopy.toJSON()), { name: newName }), index: sheetInfo.index + 1 });
1641
1660
  this.selectSheet(newName);
1642
1661
  },
@@ -1657,14 +1676,25 @@ class SheetsBarComponent {
1657
1676
  var _a;
1658
1677
  return (_a = this.sheets) === null || _a === void 0 ? void 0 : _a.map(sheet => ({ text: sheet.text, icon: 'eye', svgIcon: this.eyeIcon }));
1659
1678
  }
1679
+ get tablistId() {
1680
+ return this.spreadsheetService.tablistId;
1681
+ }
1660
1682
  ngAfterViewInit() {
1661
1683
  if (!isDocumentAvailable() || !this.element.nativeElement) {
1662
1684
  return;
1663
1685
  }
1664
1686
  const prevBtn = this.element.nativeElement.querySelector('.k-tabstrip-prev');
1665
1687
  const nextBtn = this.element.nativeElement.querySelector('.k-tabstrip-next');
1688
+ const tablist = this.element.nativeElement.querySelector('.k-tabstrip-items');
1666
1689
  this.renderer.addClass(prevBtn, 'k-order-1');
1667
1690
  this.renderer.addClass(nextBtn, 'k-order-2');
1691
+ this.renderer.setAttribute(tablist, 'id', this.tablistId);
1692
+ this.tabListSub = this.renderer.listen(tablist, 'keydown', this.onTabListKeyDown.bind(this));
1693
+ }
1694
+ ngOnDestroy() {
1695
+ if (this.tabListSub) {
1696
+ this.tabListSub();
1697
+ }
1668
1698
  }
1669
1699
  onTabSelect(ev) {
1670
1700
  if (ev.title !== this.activeSheet) {
@@ -1679,6 +1709,8 @@ class SheetsBarComponent {
1679
1709
  }
1680
1710
  onClose() {
1681
1711
  this.openedDdb = null;
1712
+ const activeTabIdx = this.sheets.findIndex(sheet => sheet.active);
1713
+ this.tabstrip.selectTab(activeTabIdx);
1682
1714
  }
1683
1715
  onActionClick(dataItem, sheet) {
1684
1716
  if (dataItem.disabled) {
@@ -1695,16 +1727,19 @@ class SheetsBarComponent {
1695
1727
  const sheet = this.sheets.find(s => s.text === item.text);
1696
1728
  this.selectSheet(sheet.text);
1697
1729
  }
1730
+ messageFor(key) {
1731
+ return this.localization.get(key);
1732
+ }
1698
1733
  openDialog(dataItem, sheet) {
1699
1734
  const dialogSettings = {
1700
1735
  appendTo: this.spreadsheetService.dialogContainer,
1701
- title: this.localization.get(dataItem.commandName),
1736
+ title: this.messageFor(dataItem.commandName),
1702
1737
  content: ActionDialogComponent,
1703
1738
  actions: [{
1704
- text: this.localization.get(dataItem.dialogButton),
1739
+ text: this.messageFor(dataItem.dialogButton),
1705
1740
  themeColor: 'primary'
1706
1741
  }, {
1707
- text: this.localization.get('dialogCancel')
1742
+ text: this.messageFor('dialogCancel')
1708
1743
  }],
1709
1744
  actionsLayout: 'stretched',
1710
1745
  autoFocusedElement: '.k-textbox .k-input-inner, .k-button-solid-primary'
@@ -1713,7 +1748,7 @@ class SheetsBarComponent {
1713
1748
  const dialogInstance = dialog.dialog.instance;
1714
1749
  const dialogContent = dialog.content.instance;
1715
1750
  dialogInstance.action.pipe(take(1)).subscribe((event) => {
1716
- if (event.text === this.localization.get(dataItem.dialogButton)) {
1751
+ if (event.text === this.messageFor(dataItem.dialogButton)) {
1717
1752
  const sheetsBar = this.spreadsheetService.spreadsheet.view.sheetsbar;
1718
1753
  if (sheetsBar) {
1719
1754
  dataItem.commandName === 'delete' ? sheetsBar.onSheetRemove(sheet.text) : sheetsBar.onSheetRename(dialogContent.value, this.sheets.indexOf(sheet));
@@ -1727,6 +1762,11 @@ class SheetsBarComponent {
1727
1762
  commandName: dataItem.commandName
1728
1763
  });
1729
1764
  }
1765
+ getCopyRegex(sheetName) {
1766
+ const newName = sheetName.replaceAll('(', '\\(').replaceAll(')', '\\)');
1767
+ const st = `(${newName})\\s?\\(`;
1768
+ return new RegExp(st, 's');
1769
+ }
1730
1770
  selectSheet(sheetName) {
1731
1771
  const spreadsheetSheet = this.spreadsheetService.spreadsheet.sheets().find(s => s.name() === sheetName);
1732
1772
  this.spreadsheetService.spreadsheet.activeSheet(spreadsheetSheet);
@@ -1734,63 +1774,77 @@ class SheetsBarComponent {
1734
1774
  this.spreadsheetService.activeSheetChanged.next(spreadsheetSheet);
1735
1775
  this.notifySheetsChange();
1736
1776
  }
1777
+ onTabListKeyDown(ev) {
1778
+ const buttonEl = ev.target.querySelector('.k-dropdown-button');
1779
+ const index = Array.from(this.actionDdbRefs).findIndex(el => el.nativeElement === buttonEl);
1780
+ const ddb = Array.from(this.actionDdbs)[index];
1781
+ if (!ddb) {
1782
+ return;
1783
+ }
1784
+ const altKey = ev.altKey;
1785
+ const arrowDown = ev.keyCode === Keys.ArrowDown;
1786
+ const shouldOpenDdb = altKey && arrowDown && !ddb.isOpen;
1787
+ if (shouldOpenDdb) {
1788
+ ev.preventDefault();
1789
+ ddb.togglePopupVisibility();
1790
+ }
1791
+ }
1737
1792
  notifySheetsChange() {
1738
1793
  this.ngZone.run(() => {
1739
1794
  const newSheets = this.spreadsheetService.spreadsheet.sheets();
1740
1795
  const sheetDesc = mapToSheetDescriptor(newSheets);
1741
- console.log(newSheets, 'new');
1742
1796
  this.sheets = sheetDesc.map((item, index, items) => (Object.assign(Object.assign({}, item), { inEdit: false, first: index === 0, last: index === items.length - 1, text: item.name, active: (item.name === this.activeSheet) || items.length === 1, index, sheetActions: getSheetActions(index, items) })));
1743
1797
  });
1744
1798
  }
1745
1799
  }
1746
1800
  SheetsBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SheetsBarComponent, deps: [{ token: SpreadsheetService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: SpreadsheetLocalizationService }, { token: i1$4.DialogService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1747
- SheetsBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: SheetsBarComponent, selector: "[kendoSpreadsheetSheetsBar]", inputs: { sheets: "sheets", sheetDescriptors: "sheetDescriptors" }, host: { properties: { "class.k-spreadsheet-sheets-bar": "this.hostClasses" } }, ngImport: i0, template: `
1748
- <button kendoButton
1749
- title="Add new sheet"
1801
+ SheetsBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: SheetsBarComponent, selector: "[kendoSpreadsheetSheetsBar]", inputs: { sheets: "sheets", sheetDescriptors: "sheetDescriptors" }, host: { properties: { "class.k-spreadsheet-sheets-bar": "this.hostClasses" } }, viewQueries: [{ propertyName: "addButton", first: true, predicate: ["addButton"], descendants: true }, { propertyName: "menuButton", first: true, predicate: ["menuButton"], descendants: true }, { propertyName: "tabstrip", first: true, predicate: ["tabstrip"], descendants: true }, { propertyName: "actionDdbs", predicate: ["sheetDdb"], descendants: true }, { propertyName: "actionDdbRefs", predicate: ["sheetDdb"], descendants: true, read: ElementRef }], ngImport: i0, template: `
1802
+ <button kendoButton #addButton
1803
+ [title]="messageFor('addSheet')"
1750
1804
  type="button"
1751
1805
  fillMode="flat"
1752
1806
  class="k-spreadsheet-sheet-add"
1753
1807
  icon="plus"
1754
1808
  [svgIcon]="plusIcon"
1755
- [kendoEventsOutsideAngular]="{click: onAddClick}">
1809
+ [kendoEventsOutsideAngular]="{click: onAddClick}"
1810
+ [attr.aria-controls]="tablistId">
1756
1811
  </button>
1757
- <kendo-dropdownbutton #menuDdb
1812
+ <kendo-dropdownbutton #menuButton
1758
1813
  fillMode="flat"
1759
1814
  buttonClass="k-spreadsheet-sheets-menu"
1760
1815
  icon="menu"
1761
1816
  [svgIcon]="menuIcon"
1762
1817
  [data]="sheetsMenuList"
1763
1818
  (itemClick)="onMenuItemClick($event)"
1764
- (open)="onOpen(menuDdb)">
1819
+ (open)="onOpen(menuButton)"
1820
+ [buttonAttributes]="{title: messageFor('sheetsMenu')}"
1821
+ [attr.aria-controls]="tablistId">
1765
1822
  </kendo-dropdownbutton>
1766
- <kendo-tabstrip
1823
+ <kendo-tabstrip #tabstrip
1767
1824
  [tabPosition]="'bottom'"
1768
1825
  [showContentArea]="false"
1769
1826
  [scrollable]="{prevButtonIcon: 'caret-alt-left', prevSVGButtonIcon: caretAltLeftIcon, nextButtonIcon: 'caret-alt-right', nextSVGButtonIcon: caretAltRightIcon}"
1770
1827
  class="k-spreadsheet-sheets k-overflow-hidden"
1771
- (tabSelect)="onTabSelect($event)"
1772
- [keepTabContent]="true">
1773
- <ng-container *ngFor="let sheet of sheets">
1774
- <kendo-tabstrip-tab
1828
+ (tabSelect)="onTabSelect($event)">
1829
+ <kendo-tabstrip-tab *ngFor="let sheet of sheets"
1775
1830
  [title]="sheet.text"
1776
1831
  [selected]="sheet.text === activeSheet">
1777
- <ng-template kendoTabTemplate>
1778
- <span class="k-link">{{sheet.text}}</span>
1779
- <kendo-dropdownbutton #sheetDdb
1780
- fillMode="flat"
1781
- icon="caret-alt-down"
1782
- [svgIcon]="caretAltDownIcon"
1783
- buttonClass="k-menu-button"
1784
- [data]="sheet.sheetActions"
1785
- [buttonAttributes]="{'aria-hidden': 'true', 'tabindex': '-1', role: 'presentation'}"
1786
- (open)="onOpen(sheetDdb)"
1787
- (close)="onClose()"
1788
- (click)="$event.stopPropagation()"
1789
- (itemClick)="onActionClick($event, sheet)">
1790
- </kendo-dropdownbutton>
1791
- </ng-template>
1792
- </kendo-tabstrip-tab>
1793
- </ng-container>
1832
+ <ng-template kendoTabTemplate>
1833
+ <span class="k-link">{{sheet.text}}</span>
1834
+ <kendo-dropdownbutton #sheetDdb
1835
+ fillMode="flat"
1836
+ icon="caret-alt-down"
1837
+ [svgIcon]="caretAltDownIcon"
1838
+ buttonClass="k-menu-button"
1839
+ [data]="sheet.sheetActions"
1840
+ [buttonAttributes]="{'aria-hidden': 'true', 'tabindex': '-1', role: 'presentation'}"
1841
+ (open)="onOpen(sheetDdb)"
1842
+ (close)="onClose()"
1843
+ (click)="$event.stopPropagation()"
1844
+ (itemClick)="onActionClick($event, sheet)">
1845
+ </kendo-dropdownbutton>
1846
+ </ng-template>
1847
+ </kendo-tabstrip-tab>
1794
1848
  </kendo-tabstrip>
1795
1849
  `, isInline: true, components: [{ type: i4.ButtonComponent, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { type: i4.DropDownButtonComponent, selector: "kendo-dropdownbutton", inputs: ["arrowIcon", "icon", "svgIcon", "iconClass", "imageUrl", "textField", "data", "size", "rounded", "fillMode", "themeColor", "buttonAttributes"], outputs: ["itemClick", "focus", "blur"], exportAs: ["kendoDropDownButton"] }, { type: i5$1.TabStripComponent, selector: "kendo-tabstrip", inputs: ["height", "animate", "tabAlignment", "tabPosition", "keepTabContent", "closable", "scrollable", "closeIcon", "closeIconClass", "closeSVGIcon", "showContentArea"], outputs: ["tabSelect", "tabClose", "tabScroll"], exportAs: ["kendoTabStrip"] }, { type: i5$1.TabStripTabComponent, selector: "kendo-tabstrip-tab", inputs: ["title", "disabled", "cssClass", "cssStyle", "selected", "closable", "closeIcon", "closeIconClass", "closeSVGIcon"], exportAs: ["kendoTabStripTab"] }], directives: [{ type: i3.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5$1.TabTemplateDirective, selector: "[kendoTabTemplate]" }] });
1796
1850
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SheetsBarComponent, decorators: [{
@@ -1798,52 +1852,52 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
1798
1852
  args: [{
1799
1853
  selector: '[kendoSpreadsheetSheetsBar]',
1800
1854
  template: `
1801
- <button kendoButton
1802
- title="Add new sheet"
1855
+ <button kendoButton #addButton
1856
+ [title]="messageFor('addSheet')"
1803
1857
  type="button"
1804
1858
  fillMode="flat"
1805
1859
  class="k-spreadsheet-sheet-add"
1806
1860
  icon="plus"
1807
1861
  [svgIcon]="plusIcon"
1808
- [kendoEventsOutsideAngular]="{click: onAddClick}">
1862
+ [kendoEventsOutsideAngular]="{click: onAddClick}"
1863
+ [attr.aria-controls]="tablistId">
1809
1864
  </button>
1810
- <kendo-dropdownbutton #menuDdb
1865
+ <kendo-dropdownbutton #menuButton
1811
1866
  fillMode="flat"
1812
1867
  buttonClass="k-spreadsheet-sheets-menu"
1813
1868
  icon="menu"
1814
1869
  [svgIcon]="menuIcon"
1815
1870
  [data]="sheetsMenuList"
1816
1871
  (itemClick)="onMenuItemClick($event)"
1817
- (open)="onOpen(menuDdb)">
1872
+ (open)="onOpen(menuButton)"
1873
+ [buttonAttributes]="{title: messageFor('sheetsMenu')}"
1874
+ [attr.aria-controls]="tablistId">
1818
1875
  </kendo-dropdownbutton>
1819
- <kendo-tabstrip
1876
+ <kendo-tabstrip #tabstrip
1820
1877
  [tabPosition]="'bottom'"
1821
1878
  [showContentArea]="false"
1822
1879
  [scrollable]="{prevButtonIcon: 'caret-alt-left', prevSVGButtonIcon: caretAltLeftIcon, nextButtonIcon: 'caret-alt-right', nextSVGButtonIcon: caretAltRightIcon}"
1823
1880
  class="k-spreadsheet-sheets k-overflow-hidden"
1824
- (tabSelect)="onTabSelect($event)"
1825
- [keepTabContent]="true">
1826
- <ng-container *ngFor="let sheet of sheets">
1827
- <kendo-tabstrip-tab
1881
+ (tabSelect)="onTabSelect($event)">
1882
+ <kendo-tabstrip-tab *ngFor="let sheet of sheets"
1828
1883
  [title]="sheet.text"
1829
1884
  [selected]="sheet.text === activeSheet">
1830
- <ng-template kendoTabTemplate>
1831
- <span class="k-link">{{sheet.text}}</span>
1832
- <kendo-dropdownbutton #sheetDdb
1833
- fillMode="flat"
1834
- icon="caret-alt-down"
1835
- [svgIcon]="caretAltDownIcon"
1836
- buttonClass="k-menu-button"
1837
- [data]="sheet.sheetActions"
1838
- [buttonAttributes]="{'aria-hidden': 'true', 'tabindex': '-1', role: 'presentation'}"
1839
- (open)="onOpen(sheetDdb)"
1840
- (close)="onClose()"
1841
- (click)="$event.stopPropagation()"
1842
- (itemClick)="onActionClick($event, sheet)">
1843
- </kendo-dropdownbutton>
1844
- </ng-template>
1845
- </kendo-tabstrip-tab>
1846
- </ng-container>
1885
+ <ng-template kendoTabTemplate>
1886
+ <span class="k-link">{{sheet.text}}</span>
1887
+ <kendo-dropdownbutton #sheetDdb
1888
+ fillMode="flat"
1889
+ icon="caret-alt-down"
1890
+ [svgIcon]="caretAltDownIcon"
1891
+ buttonClass="k-menu-button"
1892
+ [data]="sheet.sheetActions"
1893
+ [buttonAttributes]="{'aria-hidden': 'true', 'tabindex': '-1', role: 'presentation'}"
1894
+ (open)="onOpen(sheetDdb)"
1895
+ (close)="onClose()"
1896
+ (click)="$event.stopPropagation()"
1897
+ (itemClick)="onActionClick($event, sheet)">
1898
+ </kendo-dropdownbutton>
1899
+ </ng-template>
1900
+ </kendo-tabstrip-tab>
1847
1901
  </kendo-tabstrip>
1848
1902
  `
1849
1903
  }]
@@ -1854,6 +1908,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
1854
1908
  type: Input
1855
1909
  }], sheetDescriptors: [{
1856
1910
  type: Input
1911
+ }], addButton: [{
1912
+ type: ViewChild,
1913
+ args: ['addButton']
1914
+ }], menuButton: [{
1915
+ type: ViewChild,
1916
+ args: ['menuButton']
1917
+ }], tabstrip: [{
1918
+ type: ViewChild,
1919
+ args: ['tabstrip']
1920
+ }], actionDdbs: [{
1921
+ type: ViewChildren,
1922
+ args: ['sheetDdb']
1923
+ }], actionDdbRefs: [{
1924
+ type: ViewChildren,
1925
+ args: ['sheetDdb', { read: ElementRef }]
1857
1926
  }] } });
1858
1927
 
1859
1928
  /**
@@ -1862,7 +1931,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
1862
1931
  class MessagesDirective extends ComponentMessages {
1863
1932
  }
1864
1933
  MessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MessagesDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
1865
- 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" }, usesInheritance: true, ngImport: i0 });
1934
+ 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 });
1866
1935
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MessagesDirective, decorators: [{
1867
1936
  type: Directive,
1868
1937
  args: [{
@@ -1928,6 +1997,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
1928
1997
  type: Input
1929
1998
  }], rename: [{
1930
1999
  type: Input
2000
+ }], nameBox: [{
2001
+ type: Input
2002
+ }], addSheet: [{
2003
+ type: Input
2004
+ }], sheetsMenu: [{
2005
+ type: Input
1931
2006
  }] } });
1932
2007
 
1933
2008
  /**
@@ -2019,8 +2094,6 @@ class SpreadsheetCommandBaseDirective {
2019
2094
  this.spreadsheetService = spreadsheetService;
2020
2095
  this.toolsService = toolsService;
2021
2096
  this.subs = new Subscription();
2022
- // this.toolsService.zone.runOutsideAngular(() => {
2023
- // setTimeout(() => {
2024
2097
  const text = this.localization.get(this.command);
2025
2098
  if (text) {
2026
2099
  this.button.showText = 'overflow';
@@ -2038,11 +2111,6 @@ class SpreadsheetCommandBaseDirective {
2038
2111
  this.subs.add(this.toolsService.stateChange.subscribe(state => {
2039
2112
  this.toolsService.ngZone.onStable.pipe(take(1)).subscribe(() => this.button.selected = state[command]);
2040
2113
  }));
2041
- // this.toolsService.zone.run(() => {
2042
- // this.toolsService.needsCheck.next();
2043
- // });
2044
- // });
2045
- //});
2046
2114
  }
2047
2115
  ngOnInit() {
2048
2116
  this.subs.add(this.button.click.subscribe((this.clickHandler.bind(this))));
@@ -2483,14 +2551,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
2483
2551
  * Represents the [Kendo UI Spreadsheet component for Angular]({% slug overview_spreadsheet %}).
2484
2552
  */
2485
2553
  class SpreadsheetComponent {
2486
- constructor(ngZone, intl, host, localization, spreadsheetService, toolsService, renderer) {
2554
+ constructor(ngZone, intl, host, localization, spreadsheetService, toolsService) {
2487
2555
  this.ngZone = ngZone;
2488
2556
  this.intl = intl;
2489
2557
  this.host = host;
2490
2558
  this.localization = localization;
2491
2559
  this.spreadsheetService = spreadsheetService;
2492
2560
  this.toolsService = toolsService;
2493
- this.renderer = renderer;
2494
2561
  this.hostClass = true;
2495
2562
  this.role = 'application';
2496
2563
  /**
@@ -2507,13 +2574,13 @@ class SpreadsheetComponent {
2507
2574
  /**
2508
2575
  * The initial column width in pixels.
2509
2576
  *
2510
- * @default 64
2577
+ * @default 100
2511
2578
  */
2512
2579
  this.columnWidth = 100;
2513
2580
  /**
2514
2581
  * The height of the header row in pixels.
2515
2582
  *
2516
- * @default 20
2583
+ * @default 30
2517
2584
  */
2518
2585
  this.headerHeight = 30;
2519
2586
  /**
@@ -2521,11 +2588,11 @@ class SpreadsheetComponent {
2521
2588
  *
2522
2589
  * @default 32
2523
2590
  */
2524
- this.headerWidth = 100;
2591
+ this.headerWidth = 32;
2525
2592
  /**
2526
2593
  * The initial row height in pixels.
2527
2594
  *
2528
- * @default 20
2595
+ * @default 30
2529
2596
  */
2530
2597
  this.rowHeight = 30;
2531
2598
  /**
@@ -2726,7 +2793,6 @@ class SpreadsheetComponent {
2726
2793
  this.ngZone.run(() => this.spreadsheetService.currentActiveSheet = name);
2727
2794
  }
2728
2795
  onSheetsChanged(e) {
2729
- console.log(e, 'sheet ch');
2730
2796
  this.ngZone.run(() => {
2731
2797
  this.sheets = mapToSheetDescriptor(e.sheets);
2732
2798
  this.updateActiveSheet(this.spreadsheetService.activeSheet);
@@ -2741,11 +2807,11 @@ class SpreadsheetComponent {
2741
2807
  toString: (value, fmt) => this.intl.toString(value, fmt),
2742
2808
  format: (fmt, ...values) => this.intl.format(fmt, ...values)
2743
2809
  }
2744
- }), { columns: this.columns, columnWidth: this.columnWidth, defaultCellStyle: this.defaultCellStyle, excel: this.excel, headerHeight: this.headerHeight, headerWidth: this.headerHeight, images: this.images, names: this.names, rowHeight: this.rowHeight, rows: this.rows, formulaBarInputRef: { current: this.formulaBarInputRef.current }, formulaCellInputRef: { current: this.formulaCellInputRef.current }, nameBoxRef: { current: this.nameBoxRef.current } });
2810
+ }), { columns: this.columns, columnWidth: this.columnWidth, defaultCellStyle: this.defaultCellStyle, excel: this.excel, headerHeight: this.headerHeight, headerWidth: this.headerWidth, images: this.images, rowHeight: this.rowHeight, rows: this.rows, formulaBarInputRef: { current: this.formulaBarInputRef.current }, formulaCellInputRef: { current: this.formulaCellInputRef.current }, nameBoxRef: { current: this.nameBoxRef.current } });
2745
2811
  }
2746
2812
  }
2747
- SpreadsheetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SpreadsheetComponent, deps: [{ token: i0.NgZone }, { token: i1$5.IntlService }, { token: i0.ElementRef }, { token: i1.LocalizationService }, { token: SpreadsheetService }, { token: SpreadsheetToolsService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
2748
- 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", names: "names", 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: [
2813
+ SpreadsheetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SpreadsheetComponent, deps: [{ token: i0.NgZone }, { token: i1$5.IntlService }, { token: i0.ElementRef }, { token: i1.LocalizationService }, { token: SpreadsheetService }, { token: SpreadsheetToolsService }], target: i0.ɵɵFactoryTarget.Component });
2814
+ 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: [
2749
2815
  SpreadsheetLocalizationService,
2750
2816
  {
2751
2817
  provide: LocalizationService,
@@ -2819,7 +2885,13 @@ SpreadsheetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
2819
2885
  i18n-rename="kendo.spreadsheet.rename|The title of the Rename sheet dialog."
2820
2886
  rename="Rename Sheet"
2821
2887
  i18n-delete="kendo.spreadsheet.delete|The title of the Delete sheet dialog."
2822
- delete="Delete Sheet">
2888
+ delete="Delete Sheet"
2889
+ i18n-nameBox="kendo.spreadsheet.nameBox|The title of the Name Box input."
2890
+ nameBox="Name Box"
2891
+ i18n-addSheet="kendo.spreadsheet.addSheet|The title of the Add new sheet button."
2892
+ addSheet="Add New Sheet"
2893
+ i18n-sheetsMenu="kendo.spreadsheet.sheetsMenu|The title of the Sheets menu button."
2894
+ sheetsMenu="All Sheets">
2823
2895
  </ng-container>
2824
2896
  <div class="k-spreadsheet-header">
2825
2897
  <kendo-menu kendoSpreadsheetMenu (select)="onMenuItemSelect($event)">
@@ -2876,14 +2948,12 @@ SpreadsheetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
2876
2948
  <div #nameBox kendoSpreadsheetNameBox [spreadsheetWidget]="spreadsheetWidget"></div>
2877
2949
  <div class="k-spreadsheet-formula-bar">
2878
2950
  <span class="k-separator k-separator-vertical"></span>
2879
- <button kendoButton
2880
- icon="formula-fx"
2881
- [svgIcon]="formulaFxIcon"
2882
- [fillMode]="'flat'">
2883
- </button>
2951
+ <kendo-icon-wrapper
2952
+ name="formula-fx"
2953
+ [svgIcon]="formulaFxIcon">
2954
+ </kendo-icon-wrapper>
2884
2955
  <span class="k-separator k-separator-vertical"></span>
2885
2956
  <div #formulaBar kendoSpreadsheetFormulaInput class="k-textbox k-input k-input-md k-input-flat k-rounded-md"></div>
2886
- <div class="k-widget k-tooltip" style="position: absolute; display: none;">A1</div>
2887
2957
  </div>
2888
2958
  </div>
2889
2959
  <div class="k-spreadsheet-view">
@@ -2902,7 +2972,7 @@ SpreadsheetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
2902
2972
  <ng-container #dialogContainer></ng-container>
2903
2973
 
2904
2974
  <div kendoWatermarkOverlay *ngIf="showLicenseWatermark"></div>
2905
- `, isInline: true, components: [{ type: i5$2.MenuComponent, selector: "kendo-menu", inputs: ["menuItemTemplate", "ariaRole", "menuItemLinkTemplate"], outputs: ["select", "open", "close"], exportAs: ["kendoMenu"] }, { type: i5$2.MenuItemComponent, selector: "kendo-menu-item", inputs: ["text", "url", "disabled", "cssClass", "cssStyle", "icon", "svgIcon", "data", "separator"] }, { type: i1$2.ToolBarComponent, selector: "kendo-toolbar", inputs: ["overflow", "resizable", "popupSettings", "tabindex", "size", "tabIndex"], outputs: ["open", "close"], exportAs: ["kendoToolBar"] }, { type: SpreadsheetLoadFileComponent, selector: "kendo-spreadsheet-load-file-tool" }, { type: i1$2.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: i1$2.ToolBarButtonGroupComponent, selector: "kendo-toolbar-buttongroup", inputs: ["disabled", "selection", "width", "look"], exportAs: ["kendoToolBarButtonGroup"] }, { type: i1$2.ToolBarSeparatorComponent, selector: "kendo-toolbar-separator", exportAs: ["kendoToolBarSeparator"] }, { type: SpreadsheetFontFamilyComponent, selector: "kendo-toolbar-dropdownlist[kendoSpreadsheetFontFamily]" }, { type: SpreadsheetFontSizeComponent, selector: "kendo-toolbar-dropdownlist[kendoSpreadsheetFontSize]" }, { type: SpreadsheetForeColorComponent, selector: "kendo-spreadsheet-forecolor-tool" }, { type: SpreadsheetBackColorComponent, selector: "kendo-spreadsheet-backcolor-tool" }, { type: i1$2.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: NameBoxComponent, selector: "[kendoSpreadsheetNameBox]", inputs: ["data", "spreadsheetWidget"] }, { type: i4.ButtonComponent, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { type: SheetsBarComponent, selector: "[kendoSpreadsheetSheetsBar]", inputs: ["sheets", "sheetDescriptors"] }, { type: i3.WatermarkOverlayComponent, selector: "div[kendoWatermarkOverlay]" }], directives: [{ type: LocalizedMessagesDirective, selector: "[kendoSpreadsheetLocalizedMessages]" }, { type: MainMenuDirective, selector: "[kendoSpreadsheetMenu]" }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: SpreadsheetSaveFileDirective, selector: "[kendoSpreadsheetSaveFile]" }, { type: SpreadsheetUndoDirective, selector: "kendo-toolbar-button[kendoSpreadsheetUndo]" }, { type: SpreadsheetRedoDirective, selector: "kendo-toolbar-button[kendoSpreadsheetRedo]" }, { type: SpreadsheetBoldDirective, selector: "kendo-toolbar-button[kendoSpreadsheetBold]" }, { type: SpreadsheetItalicDirective, selector: "kendo-toolbar-button[kendoSpreadsheetItalic]" }, { type: SpreadsheetUnderlineDirective, selector: "kendo-toolbar-button[kendoSpreadsheetUnderline]" }, { type: SpreadsheetTextAlignDirective, selector: "[kendoSpreadsheetTextAlign]" }, { type: SpreadsheetTextWrapDirective, selector: "kendo-toolbar-button[kendoSpreadsheetTextWrap]" }, { type: SpreadsheetFormatDirective, selector: "[kendoSpreadsheetFormat]" }, { type: SpreadsheetGridLinesDirective, selector: "kendo-toolbar-button[kendoSpreadsheetGridLines]" }, { type: SpreadsheetAddColumnLeftButtonDirective, selector: "kendo-toolbar-button[kendoSpreadsheetAddColumnLeftButton]" }, { type: SpreadsheetAddColumnRightButtonDirective, selector: "kendo-toolbar-button[kendoSpreadsheetAddColumnRightButton]" }, { type: SpreadsheetAddRowBelowButtonDirective, selector: "kendo-toolbar-button[kendoSpreadsheetAddRowBelowButton]" }, { type: SpreadsheetAddRowAboveButtonDirective, selector: "kendo-toolbar-button[kendoSpreadsheetAddRowAboveButton]" }, { type: SpreadsheetDeleteColumnButtonDirective, selector: "kendo-toolbar-button[kendoSpreadsheetDeleteColumnButton]" }, { type: SpreadsheetDeleteRowButtonDirective, selector: "kendo-toolbar-button[kendoSpreadsheetDeleteRowButton]" }, { type: FormulaInputDirective, selector: "[kendoSpreadsheetFormulaInput]" }] });
2975
+ `, isInline: true, components: [{ type: i5$2.MenuComponent, selector: "kendo-menu", inputs: ["menuItemTemplate", "ariaRole", "menuItemLinkTemplate"], outputs: ["select", "open", "close"], exportAs: ["kendoMenu"] }, { type: i5$2.MenuItemComponent, selector: "kendo-menu-item", inputs: ["text", "url", "disabled", "cssClass", "cssStyle", "icon", "svgIcon", "data", "separator"] }, { type: i1$2.ToolBarComponent, selector: "kendo-toolbar", inputs: ["overflow", "resizable", "popupSettings", "tabindex", "size", "tabIndex"], outputs: ["open", "close"], exportAs: ["kendoToolBar"] }, { type: SpreadsheetLoadFileComponent, selector: "kendo-spreadsheet-load-file-tool" }, { type: i1$2.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: i1$2.ToolBarButtonGroupComponent, selector: "kendo-toolbar-buttongroup", inputs: ["disabled", "selection", "width", "look"], exportAs: ["kendoToolBarButtonGroup"] }, { type: i1$2.ToolBarSeparatorComponent, selector: "kendo-toolbar-separator", exportAs: ["kendoToolBarSeparator"] }, { type: SpreadsheetFontFamilyComponent, selector: "kendo-toolbar-dropdownlist[kendoSpreadsheetFontFamily]" }, { type: SpreadsheetFontSizeComponent, selector: "kendo-toolbar-dropdownlist[kendoSpreadsheetFontSize]" }, { type: SpreadsheetForeColorComponent, selector: "kendo-spreadsheet-forecolor-tool" }, { type: SpreadsheetBackColorComponent, selector: "kendo-spreadsheet-backcolor-tool" }, { type: i1$2.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: NameBoxComponent, selector: "[kendoSpreadsheetNameBox]", inputs: ["data", "spreadsheetWidget"] }, { type: i6.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { type: SheetsBarComponent, selector: "[kendoSpreadsheetSheetsBar]", inputs: ["sheets", "sheetDescriptors"] }, { type: i3.WatermarkOverlayComponent, selector: "div[kendoWatermarkOverlay]" }], directives: [{ type: LocalizedMessagesDirective, selector: "[kendoSpreadsheetLocalizedMessages]" }, { type: MainMenuDirective, selector: "[kendoSpreadsheetMenu]" }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: SpreadsheetSaveFileDirective, selector: "[kendoSpreadsheetSaveFile]" }, { type: SpreadsheetUndoDirective, selector: "kendo-toolbar-button[kendoSpreadsheetUndo]" }, { type: SpreadsheetRedoDirective, selector: "kendo-toolbar-button[kendoSpreadsheetRedo]" }, { type: SpreadsheetBoldDirective, selector: "kendo-toolbar-button[kendoSpreadsheetBold]" }, { type: SpreadsheetItalicDirective, selector: "kendo-toolbar-button[kendoSpreadsheetItalic]" }, { type: SpreadsheetUnderlineDirective, selector: "kendo-toolbar-button[kendoSpreadsheetUnderline]" }, { type: SpreadsheetTextAlignDirective, selector: "[kendoSpreadsheetTextAlign]" }, { type: SpreadsheetTextWrapDirective, selector: "kendo-toolbar-button[kendoSpreadsheetTextWrap]" }, { type: SpreadsheetFormatDirective, selector: "[kendoSpreadsheetFormat]" }, { type: SpreadsheetGridLinesDirective, selector: "kendo-toolbar-button[kendoSpreadsheetGridLines]" }, { type: SpreadsheetAddColumnLeftButtonDirective, selector: "kendo-toolbar-button[kendoSpreadsheetAddColumnLeftButton]" }, { type: SpreadsheetAddColumnRightButtonDirective, selector: "kendo-toolbar-button[kendoSpreadsheetAddColumnRightButton]" }, { type: SpreadsheetAddRowBelowButtonDirective, selector: "kendo-toolbar-button[kendoSpreadsheetAddRowBelowButton]" }, { type: SpreadsheetAddRowAboveButtonDirective, selector: "kendo-toolbar-button[kendoSpreadsheetAddRowAboveButton]" }, { type: SpreadsheetDeleteColumnButtonDirective, selector: "kendo-toolbar-button[kendoSpreadsheetDeleteColumnButton]" }, { type: SpreadsheetDeleteRowButtonDirective, selector: "kendo-toolbar-button[kendoSpreadsheetDeleteRowButton]" }, { type: FormulaInputDirective, selector: "[kendoSpreadsheetFormulaInput]" }] });
2906
2976
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SpreadsheetComponent, decorators: [{
2907
2977
  type: Component,
2908
2978
  args: [{
@@ -2983,7 +3053,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
2983
3053
  i18n-rename="kendo.spreadsheet.rename|The title of the Rename sheet dialog."
2984
3054
  rename="Rename Sheet"
2985
3055
  i18n-delete="kendo.spreadsheet.delete|The title of the Delete sheet dialog."
2986
- delete="Delete Sheet">
3056
+ delete="Delete Sheet"
3057
+ i18n-nameBox="kendo.spreadsheet.nameBox|The title of the Name Box input."
3058
+ nameBox="Name Box"
3059
+ i18n-addSheet="kendo.spreadsheet.addSheet|The title of the Add new sheet button."
3060
+ addSheet="Add New Sheet"
3061
+ i18n-sheetsMenu="kendo.spreadsheet.sheetsMenu|The title of the Sheets menu button."
3062
+ sheetsMenu="All Sheets">
2987
3063
  </ng-container>
2988
3064
  <div class="k-spreadsheet-header">
2989
3065
  <kendo-menu kendoSpreadsheetMenu (select)="onMenuItemSelect($event)">
@@ -3040,14 +3116,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
3040
3116
  <div #nameBox kendoSpreadsheetNameBox [spreadsheetWidget]="spreadsheetWidget"></div>
3041
3117
  <div class="k-spreadsheet-formula-bar">
3042
3118
  <span class="k-separator k-separator-vertical"></span>
3043
- <button kendoButton
3044
- icon="formula-fx"
3045
- [svgIcon]="formulaFxIcon"
3046
- [fillMode]="'flat'">
3047
- </button>
3119
+ <kendo-icon-wrapper
3120
+ name="formula-fx"
3121
+ [svgIcon]="formulaFxIcon">
3122
+ </kendo-icon-wrapper>
3048
3123
  <span class="k-separator k-separator-vertical"></span>
3049
3124
  <div #formulaBar kendoSpreadsheetFormulaInput class="k-textbox k-input k-input-md k-input-flat k-rounded-md"></div>
3050
- <div class="k-widget k-tooltip" style="position: absolute; display: none;">A1</div>
3051
3125
  </div>
3052
3126
  </div>
3053
3127
  <div class="k-spreadsheet-view">
@@ -3068,7 +3142,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
3068
3142
  <div kendoWatermarkOverlay *ngIf="showLicenseWatermark"></div>
3069
3143
  `,
3070
3144
  }]
3071
- }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1$5.IntlService }, { type: i0.ElementRef }, { type: i1.LocalizationService }, { type: SpreadsheetService }, { type: SpreadsheetToolsService }, { type: i0.Renderer2 }]; }, propDecorators: { formulaBarInputRef: [{
3145
+ }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1$5.IntlService }, { type: i0.ElementRef }, { type: i1.LocalizationService }, { type: SpreadsheetService }, { type: SpreadsheetToolsService }]; }, propDecorators: { formulaBarInputRef: [{
3072
3146
  type: ViewChild,
3073
3147
  args: ['formulaBar', { read: FormulaInputDirective }]
3074
3148
  }], formulaCellInputRef: [{
@@ -3108,8 +3182,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
3108
3182
  type: Input
3109
3183
  }], rows: [{
3110
3184
  type: Input
3111
- }], names: [{
3112
- type: Input
3113
3185
  }], images: [{
3114
3186
  type: Input
3115
3187
  }], excel: [{
@@ -3162,26 +3234,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
3162
3234
  }]
3163
3235
  }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });
3164
3236
 
3165
- /**
3166
- * @hidden
3167
- */
3168
- class RemoveDirective {
3169
- constructor() {
3170
- this.hostDisplay = 'none';
3171
- }
3172
- }
3173
- RemoveDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RemoveDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
3174
- RemoveDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: RemoveDirective, selector: "[kendoRemoveDirective]", host: { properties: { "style.display": "this.hostDisplay" } }, ngImport: i0 });
3175
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RemoveDirective, decorators: [{
3176
- type: Directive,
3177
- args: [{
3178
- selector: '[kendoRemoveDirective]',
3179
- }]
3180
- }], propDecorators: { hostDisplay: [{
3181
- type: HostBinding,
3182
- args: ['style.display']
3183
- }] } });
3184
-
3185
3237
  const DIRECTIVES = [
3186
3238
  SpreadsheetComponent,
3187
3239
  MessagesDirective,
@@ -3216,8 +3268,7 @@ const DIRECTIVES = [
3216
3268
  FontSizeDropDownListComponent,
3217
3269
  DialogContentComponent,
3218
3270
  MainMenuDirective,
3219
- ActionDialogComponent,
3220
- RemoveDirective
3271
+ ActionDialogComponent
3221
3272
  ];
3222
3273
  const EXPORTS = [
3223
3274
  SpreadsheetComponent,
@@ -3284,8 +3335,7 @@ SpreadsheetModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", versi
3284
3335
  FontSizeDropDownListComponent,
3285
3336
  DialogContentComponent,
3286
3337
  MainMenuDirective,
3287
- ActionDialogComponent,
3288
- RemoveDirective], imports: [CommonModule,
3338
+ ActionDialogComponent], imports: [CommonModule,
3289
3339
  ButtonsModule,
3290
3340
  ComboBoxModule,
3291
3341
  DropDownListModule,
@@ -3368,5 +3418,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
3368
3418
  * Generated bundle index. Do not edit.
3369
3419
  */
3370
3420
 
3371
- export { CustomMessagesComponent, FormulaInputDirective, FormulaListComponent, NameBoxComponent, SheetsBarComponent, SpreadsheetAddColumnLeftButtonDirective, SpreadsheetAddColumnRightButtonDirective, SpreadsheetAddRowAboveButtonDirective, SpreadsheetAddRowBelowButtonDirective, SpreadsheetBackColorComponent, SpreadsheetBoldDirective, SpreadsheetComponent, SpreadsheetDeleteColumnButtonDirective, SpreadsheetDeleteRowButtonDirective, SpreadsheetFontFamilyComponent, SpreadsheetFontSizeComponent, SpreadsheetForeColorComponent, SpreadsheetFormatDirective, SpreadsheetGridLinesDirective, SpreadsheetItalicDirective, SpreadsheetLoadFileComponent, SpreadsheetModule, SpreadsheetRedoDirective, SpreadsheetSaveFileDirective, SpreadsheetTextAlignDirective as SpreadsheetTextAlignComponent, SpreadsheetTextWrapDirective, SpreadsheetUnderlineDirective, SpreadsheetUndoDirective };
3421
+ export { CustomMessagesComponent, FormulaInputDirective, FormulaListComponent, NameBoxComponent, SheetsBarComponent, SpreadsheetAddColumnLeftButtonDirective, SpreadsheetAddColumnRightButtonDirective, SpreadsheetAddRowAboveButtonDirective, SpreadsheetAddRowBelowButtonDirective, SpreadsheetBackColorComponent, SpreadsheetBoldDirective, SpreadsheetComponent, SpreadsheetDeleteColumnButtonDirective, SpreadsheetDeleteRowButtonDirective, SpreadsheetFontFamilyComponent, SpreadsheetFontSizeComponent, SpreadsheetForeColorComponent, SpreadsheetFormatDirective, SpreadsheetGridLinesDirective, SpreadsheetItalicDirective, SpreadsheetLoadFileComponent, SpreadsheetModule, SpreadsheetRedoDirective, SpreadsheetSaveFileDirective, SpreadsheetTextAlignDirective, SpreadsheetTextWrapDirective, SpreadsheetUnderlineDirective, SpreadsheetUndoDirective };
3372
3422