@progress/kendo-angular-spreadsheet 14.0.0-develop.2 → 14.0.0-develop.4

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.
@@ -13,7 +13,7 @@ import { Subject, Subscription } from 'rxjs';
13
13
  import * as i1 from '@progress/kendo-angular-l10n';
14
14
  import { LocalizationService, L10N_PREFIX, RTL, ComponentMessages } from '@progress/kendo-angular-l10n';
15
15
  import * as i3 from '@progress/kendo-angular-common';
16
- import { isPresent, hasObservers, isDocumentAvailable, shouldShowValidationUI, EventsModule, WatermarkModule } from '@progress/kendo-angular-common';
16
+ import { isPresent, hasObservers, Keys, isDocumentAvailable, shouldShowValidationUI, EventsModule, WatermarkModule } from '@progress/kendo-angular-common';
17
17
  import * as i1$1 from '@progress/kendo-angular-popup';
18
18
  import { PopupService, PopupModule } from '@progress/kendo-angular-popup';
19
19
  import * as i6 from '@progress/kendo-angular-icons';
@@ -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: 1695996313,
50
- version: '14.0.0-develop.2',
49
+ publishDate: 1696225092,
50
+ version: '14.0.0-develop.4',
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
 
@@ -796,7 +796,7 @@ FontFamilyDropDownListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion:
796
796
  </span>
797
797
  </ng-template>
798
798
  </kendo-dropdownlist>
799
- `, 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"] }] });
799
+ `, 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"] }] });
800
800
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FontFamilyDropDownListComponent, decorators: [{
801
801
  type: Component,
802
802
  args: [{
@@ -838,7 +838,7 @@ FontSizeDropDownListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "1
838
838
  (valueChange)="onValueChange($event)"
839
839
  [leftRightArrowsNavigation]="false"
840
840
  [fillMode]="fillMode"></kendo-dropdownlist>
841
- `, 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"] }] });
841
+ `, 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"] }] });
842
842
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FontSizeDropDownListComponent, decorators: [{
843
843
  type: Component,
844
844
  args: [{
@@ -1431,9 +1431,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
1431
1431
  * @hidden
1432
1432
  */
1433
1433
  class NameBoxComponent {
1434
- constructor(ngZone, host) {
1434
+ constructor(ngZone, host, localization) {
1435
1435
  this.ngZone = ngZone;
1436
1436
  this.host = host;
1437
+ this.localization = localization;
1437
1438
  this.hostClass = true;
1438
1439
  this.valueNormalizer = (text) => text.pipe(map((content) => ({ name: content })));
1439
1440
  }
@@ -1459,6 +1460,9 @@ class NameBoxComponent {
1459
1460
  }
1460
1461
  };
1461
1462
  }
1463
+ get title() {
1464
+ return this.localization.get('nameBox');
1465
+ }
1462
1466
  onSelectionChange(value) {
1463
1467
  const editor = this.spreadsheetWidget.view.nameEditor;
1464
1468
  if (editor && value) {
@@ -1477,7 +1481,7 @@ class NameBoxComponent {
1477
1481
  }
1478
1482
  ;
1479
1483
  }
1480
- 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 });
1484
+ 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 });
1481
1485
  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: `
1482
1486
  <kendo-combobox #combobox
1483
1487
  [popupSettings]="{popupClass: 'k-spreadsheet-names-popup'}"
@@ -1491,8 +1495,9 @@ NameBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", versi
1491
1495
  [value]="value"
1492
1496
  (open)="onOpen()"
1493
1497
  [valueNormalizer]="valueNormalizer"
1498
+ [attr.title]="title"
1494
1499
  ></kendo-combobox>
1495
- `, 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"] }] });
1500
+ `, 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"] }] });
1496
1501
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: NameBoxComponent, decorators: [{
1497
1502
  type: Component,
1498
1503
  args: [{
@@ -1510,10 +1515,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
1510
1515
  [value]="value"
1511
1516
  (open)="onOpen()"
1512
1517
  [valueNormalizer]="valueNormalizer"
1518
+ [attr.title]="title"
1513
1519
  ></kendo-combobox>
1514
1520
  `
1515
1521
  }]
1516
- }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.ElementRef }]; }, propDecorators: { hostClass: [{
1522
+ }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.ElementRef }, { type: SpreadsheetLocalizationService }]; }, propDecorators: { hostClass: [{
1517
1523
  type: HostBinding,
1518
1524
  args: ['class.k-spreadsheet-name-editor']
1519
1525
  }], keyDownHandler: [{
@@ -1549,7 +1555,7 @@ ActionDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
1549
1555
  <p>Are you sure you want to proceed?</p>
1550
1556
  </ng-container>
1551
1557
 
1552
- <form class="k-form k-form-md" *ngIf="commandName === 'rename'">
1558
+ <form class="k-form k-form-md" *ngIf="commandName === 'rename'" method="dialog">
1553
1559
  <div class="k-form-field">
1554
1560
  <label class="k-label k-form-label">Rename sheet</label>
1555
1561
  <div class="k-form-field-wrap">
@@ -1571,7 +1577,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
1571
1577
  <p>Are you sure you want to proceed?</p>
1572
1578
  </ng-container>
1573
1579
 
1574
- <form class="k-form k-form-md" *ngIf="commandName === 'rename'">
1580
+ <form class="k-form k-form-md" *ngIf="commandName === 'rename'" method="dialog">
1575
1581
  <div class="k-form-field">
1576
1582
  <label class="k-label k-form-label">Rename sheet</label>
1577
1583
  <div class="k-form-field-wrap">
@@ -1587,6 +1593,57 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
1587
1593
  }]
1588
1594
  }], ctorParameters: function () { return [{ type: i1$4.DialogRef }]; } });
1589
1595
 
1596
+ /**
1597
+ * @hidden
1598
+ */
1599
+ class SpreadsheetTabStripDirective {
1600
+ constructor(host) {
1601
+ this.host = host;
1602
+ this.navigationEnd = new EventEmitter();
1603
+ }
1604
+ ngAfterViewInit() {
1605
+ this.host.tablist.nativeElement.addEventListener('keydown', this.onKeyDown.bind(this), true);
1606
+ }
1607
+ ngOnDestroy() {
1608
+ this.host.tablist.nativeElement.removeEventListener('keydown', this.onKeyDown.bind(this), true);
1609
+ }
1610
+ get isLastActive() {
1611
+ const lastIndex = this.host.tabs.length - 1;
1612
+ return Array.from(this.host.tabs)[lastIndex].selected;
1613
+ }
1614
+ get isFirstActive() {
1615
+ return Array.from(this.host.tabs)[0].selected;
1616
+ }
1617
+ onKeyDown(ev) {
1618
+ switch (ev.keyCode) {
1619
+ case Keys.ArrowLeft:
1620
+ if (this.isFirstActive) {
1621
+ ev.stopImmediatePropagation();
1622
+ this.navigationEnd.emit('first');
1623
+ }
1624
+ break;
1625
+ case Keys.ArrowRight:
1626
+ if (this.isLastActive) {
1627
+ ev.stopImmediatePropagation();
1628
+ this.navigationEnd.emit('last');
1629
+ }
1630
+ break;
1631
+ default:
1632
+ break;
1633
+ }
1634
+ }
1635
+ }
1636
+ SpreadsheetTabStripDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SpreadsheetTabStripDirective, deps: [{ token: i5$1.TabStripComponent }], target: i0.ɵɵFactoryTarget.Directive });
1637
+ SpreadsheetTabStripDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: SpreadsheetTabStripDirective, selector: "[kendoSpreadsheetTabStrip]", outputs: { navigationEnd: "navigationEnd" }, ngImport: i0 });
1638
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SpreadsheetTabStripDirective, decorators: [{
1639
+ type: Directive,
1640
+ args: [{
1641
+ selector: '[kendoSpreadsheetTabStrip]',
1642
+ }]
1643
+ }], ctorParameters: function () { return [{ type: i5$1.TabStripComponent }]; }, propDecorators: { navigationEnd: [{
1644
+ type: Output
1645
+ }] } });
1646
+
1590
1647
  /**
1591
1648
  * @hidden
1592
1649
  */
@@ -1607,6 +1664,7 @@ class SheetsBarComponent {
1607
1664
  this.selected = false;
1608
1665
  this.openedDdb = null;
1609
1666
  this.eyeIcon = eyeIcon;
1667
+ this.focusedEl = null;
1610
1668
  this.onAddClick = () => {
1611
1669
  if (this.spreadsheetService.spreadsheet) {
1612
1670
  this.spreadsheetService.spreadsheet.view.sheetsbar.onAddSelect();
@@ -1630,6 +1688,14 @@ class SheetsBarComponent {
1630
1688
  }
1631
1689
  };
1632
1690
  }
1691
+ /**
1692
+ * @hidden
1693
+ */
1694
+ onFocus() {
1695
+ this.renderer.setAttribute(this.element.nativeElement, 'tabindex', '-1');
1696
+ this.addButton.focus();
1697
+ this.focusedEl = this.addButton;
1698
+ }
1633
1699
  get activeSheet() {
1634
1700
  return this.spreadsheetService.spreadsheet?.activeSheet()?.name();
1635
1701
  }
@@ -1644,6 +1710,23 @@ class SheetsBarComponent {
1644
1710
  const nextBtn = this.element.nativeElement.querySelector('.k-tabstrip-next');
1645
1711
  this.renderer.addClass(prevBtn, 'k-order-1');
1646
1712
  this.renderer.addClass(nextBtn, 'k-order-2');
1713
+ this.renderer.setAttribute(this.element.nativeElement, 'tabindex', '0');
1714
+ this.hostKeyDownSub = this.renderer.listen(this.element.nativeElement, 'keydown', (ev) => this.onHostKeyDown(ev));
1715
+ }
1716
+ ngOnDestroy() {
1717
+ if (this.hostKeyDownSub) {
1718
+ this.hostKeyDownSub();
1719
+ }
1720
+ }
1721
+ onTabStripNavigationEnd(ev) {
1722
+ if (ev === 'last') {
1723
+ this.addButton.focus();
1724
+ this.focusedEl = this.addButton;
1725
+ }
1726
+ else {
1727
+ this.menuButton.focus();
1728
+ this.focusedEl = this.menuButton;
1729
+ }
1647
1730
  }
1648
1731
  onTabSelect(ev) {
1649
1732
  if (ev.title !== this.activeSheet) {
@@ -1674,16 +1757,19 @@ class SheetsBarComponent {
1674
1757
  const sheet = this.sheets.find(s => s.text === item.text);
1675
1758
  this.selectSheet(sheet.text);
1676
1759
  }
1760
+ messageFor(key) {
1761
+ return this.localization.get(key);
1762
+ }
1677
1763
  openDialog(dataItem, sheet) {
1678
1764
  const dialogSettings = {
1679
1765
  appendTo: this.spreadsheetService.dialogContainer,
1680
- title: this.localization.get(dataItem.commandName),
1766
+ title: this.messageFor(dataItem.commandName),
1681
1767
  content: ActionDialogComponent,
1682
1768
  actions: [{
1683
- text: this.localization.get(dataItem.dialogButton),
1769
+ text: this.messageFor(dataItem.dialogButton),
1684
1770
  themeColor: 'primary'
1685
1771
  }, {
1686
- text: this.localization.get('dialogCancel')
1772
+ text: this.messageFor('dialogCancel')
1687
1773
  }],
1688
1774
  actionsLayout: 'stretched',
1689
1775
  autoFocusedElement: '.k-textbox .k-input-inner, .k-button-solid-primary'
@@ -1692,7 +1778,7 @@ class SheetsBarComponent {
1692
1778
  const dialogInstance = dialog.dialog.instance;
1693
1779
  const dialogContent = dialog.content.instance;
1694
1780
  dialogInstance.action.pipe(take(1)).subscribe((event) => {
1695
- if (event.text === this.localization.get(dataItem.dialogButton)) {
1781
+ if (event.text === this.messageFor(dataItem.dialogButton)) {
1696
1782
  const sheetsBar = this.spreadsheetService.spreadsheet.view.sheetsbar;
1697
1783
  if (sheetsBar) {
1698
1784
  dataItem.commandName === 'delete' ? sheetsBar.onSheetRemove(sheet.text) : sheetsBar.onSheetRename(dialogContent.value, this.sheets.indexOf(sheet));
@@ -1717,7 +1803,6 @@ class SheetsBarComponent {
1717
1803
  this.ngZone.run(() => {
1718
1804
  const newSheets = this.spreadsheetService.spreadsheet.sheets();
1719
1805
  const sheetDesc = mapToSheetDescriptor(newSheets);
1720
- console.log(newSheets, 'new');
1721
1806
  this.sheets = sheetDesc.map((item, index, items) => ({
1722
1807
  ...item,
1723
1808
  inEdit: false,
@@ -1730,108 +1815,161 @@ class SheetsBarComponent {
1730
1815
  }));
1731
1816
  });
1732
1817
  }
1818
+ onHostKeyDown(ev) {
1819
+ const activeSheetIndex = this.sheets.find(s => s.name === this.activeSheet).index;
1820
+ switch (ev.keyCode) {
1821
+ case Keys.ArrowRight:
1822
+ this.focusNext(activeSheetIndex);
1823
+ break;
1824
+ case Keys.ArrowLeft:
1825
+ this.focusPrev(activeSheetIndex);
1826
+ break;
1827
+ case Keys.Tab:
1828
+ this.resetNavigation();
1829
+ break;
1830
+ default:
1831
+ break;
1832
+ }
1833
+ }
1834
+ focusNext(sheetIndex) {
1835
+ switch (this.focusedEl) {
1836
+ case this.addButton:
1837
+ this.menuButton.focus();
1838
+ this.focusedEl = this.menuButton;
1839
+ break;
1840
+ case this.menuButton:
1841
+ this.tabstrip.selectTab(sheetIndex);
1842
+ this.focusedEl = this.tabstrip;
1843
+ break;
1844
+ default:
1845
+ break;
1846
+ }
1847
+ }
1848
+ focusPrev(sheetIndex) {
1849
+ switch (this.focusedEl) {
1850
+ case this.addButton:
1851
+ this.tabstrip.selectTab(sheetIndex);
1852
+ this.focusedEl = this.tabstrip;
1853
+ break;
1854
+ case this.menuButton:
1855
+ this.addButton.focus();
1856
+ this.focusedEl = this.addButton;
1857
+ break;
1858
+ default:
1859
+ break;
1860
+ }
1861
+ }
1862
+ resetNavigation() {
1863
+ if (this.focusedEl !== this.tabstrip) {
1864
+ this.focusedEl.blur();
1865
+ }
1866
+ this.focusedEl = null;
1867
+ this.renderer.setAttribute(this.element.nativeElement, 'tabindex', '0');
1868
+ }
1733
1869
  }
1734
1870
  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 });
1735
- 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: `
1736
- <button kendoButton
1737
- title="Add new sheet"
1871
+ SheetsBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: SheetsBarComponent, selector: "[kendoSpreadsheetSheetsBar]", inputs: { sheets: "sheets", sheetDescriptors: "sheetDescriptors" }, host: { listeners: { "focus": "onFocus()" }, 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 }], ngImport: i0, template: `
1872
+ <button kendoButton #addButton
1873
+ [title]="messageFor('addSheet')"
1738
1874
  type="button"
1739
1875
  fillMode="flat"
1740
1876
  class="k-spreadsheet-sheet-add"
1741
1877
  icon="plus"
1742
1878
  [svgIcon]="plusIcon"
1743
- [kendoEventsOutsideAngular]="{click: onAddClick}">
1879
+ [kendoEventsOutsideAngular]="{click: onAddClick}"
1880
+ [tabIndex]="-1">
1744
1881
  </button>
1745
- <kendo-dropdownbutton #menuDdb
1882
+ <kendo-dropdownbutton #menuButton
1746
1883
  fillMode="flat"
1747
1884
  buttonClass="k-spreadsheet-sheets-menu"
1748
1885
  icon="menu"
1749
1886
  [svgIcon]="menuIcon"
1750
1887
  [data]="sheetsMenuList"
1751
1888
  (itemClick)="onMenuItemClick($event)"
1752
- (open)="onOpen(menuDdb)">
1889
+ (open)="onOpen(menuButton)"
1890
+ [buttonAttributes]="{title: messageFor('sheetsMenu')}"
1891
+ [tabIndex]="-1">
1753
1892
  </kendo-dropdownbutton>
1754
- <kendo-tabstrip
1893
+ <kendo-tabstrip #tabstrip kendoSpreadsheetTabStrip
1755
1894
  [tabPosition]="'bottom'"
1756
1895
  [showContentArea]="false"
1757
1896
  [scrollable]="{prevButtonIcon: 'caret-alt-left', prevSVGButtonIcon: caretAltLeftIcon, nextButtonIcon: 'caret-alt-right', nextSVGButtonIcon: caretAltRightIcon}"
1758
1897
  class="k-spreadsheet-sheets k-overflow-hidden"
1759
1898
  (tabSelect)="onTabSelect($event)"
1760
- [keepTabContent]="true">
1761
- <ng-container *ngFor="let sheet of sheets">
1762
- <kendo-tabstrip-tab
1899
+ (navigationEnd)="onTabStripNavigationEnd($event)">
1900
+ <kendo-tabstrip-tab *ngFor="let sheet of sheets"
1763
1901
  [title]="sheet.text"
1764
1902
  [selected]="sheet.text === activeSheet">
1765
- <ng-template kendoTabTemplate>
1766
- <span class="k-link">{{sheet.text}}</span>
1767
- <kendo-dropdownbutton #sheetDdb
1768
- fillMode="flat"
1769
- icon="caret-alt-down"
1770
- [svgIcon]="caretAltDownIcon"
1771
- buttonClass="k-menu-button"
1772
- [data]="sheet.sheetActions"
1773
- [buttonAttributes]="{'aria-hidden': 'true', 'tabindex': '-1', role: 'presentation'}"
1774
- (open)="onOpen(sheetDdb)"
1775
- (close)="onClose()"
1776
- (click)="$event.stopPropagation()"
1777
- (itemClick)="onActionClick($event, sheet)">
1778
- </kendo-dropdownbutton>
1779
- </ng-template>
1780
- </kendo-tabstrip-tab>
1781
- </ng-container>
1903
+ <ng-template kendoTabTemplate>
1904
+ <span class="k-link">{{sheet.text}}</span>
1905
+ <kendo-dropdownbutton #sheetDdb
1906
+ fillMode="flat"
1907
+ icon="caret-alt-down"
1908
+ [svgIcon]="caretAltDownIcon"
1909
+ buttonClass="k-menu-button"
1910
+ [data]="sheet.sheetActions"
1911
+ [buttonAttributes]="{'aria-hidden': 'true', 'tabindex': '-1', role: 'presentation'}"
1912
+ (open)="onOpen(sheetDdb)"
1913
+ (close)="onClose()"
1914
+ (click)="$event.stopPropagation()"
1915
+ (itemClick)="onActionClick($event, sheet)">
1916
+ </kendo-dropdownbutton>
1917
+ </ng-template>
1918
+ </kendo-tabstrip-tab>
1782
1919
  </kendo-tabstrip>
1783
- `, 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]" }] });
1920
+ `, 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: SpreadsheetTabStripDirective, selector: "[kendoSpreadsheetTabStrip]", outputs: ["navigationEnd"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5$1.TabTemplateDirective, selector: "[kendoTabTemplate]" }] });
1784
1921
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SheetsBarComponent, decorators: [{
1785
1922
  type: Component,
1786
1923
  args: [{
1787
1924
  selector: '[kendoSpreadsheetSheetsBar]',
1788
1925
  template: `
1789
- <button kendoButton
1790
- title="Add new sheet"
1926
+ <button kendoButton #addButton
1927
+ [title]="messageFor('addSheet')"
1791
1928
  type="button"
1792
1929
  fillMode="flat"
1793
1930
  class="k-spreadsheet-sheet-add"
1794
1931
  icon="plus"
1795
1932
  [svgIcon]="plusIcon"
1796
- [kendoEventsOutsideAngular]="{click: onAddClick}">
1933
+ [kendoEventsOutsideAngular]="{click: onAddClick}"
1934
+ [tabIndex]="-1">
1797
1935
  </button>
1798
- <kendo-dropdownbutton #menuDdb
1936
+ <kendo-dropdownbutton #menuButton
1799
1937
  fillMode="flat"
1800
1938
  buttonClass="k-spreadsheet-sheets-menu"
1801
1939
  icon="menu"
1802
1940
  [svgIcon]="menuIcon"
1803
1941
  [data]="sheetsMenuList"
1804
1942
  (itemClick)="onMenuItemClick($event)"
1805
- (open)="onOpen(menuDdb)">
1943
+ (open)="onOpen(menuButton)"
1944
+ [buttonAttributes]="{title: messageFor('sheetsMenu')}"
1945
+ [tabIndex]="-1">
1806
1946
  </kendo-dropdownbutton>
1807
- <kendo-tabstrip
1947
+ <kendo-tabstrip #tabstrip kendoSpreadsheetTabStrip
1808
1948
  [tabPosition]="'bottom'"
1809
1949
  [showContentArea]="false"
1810
1950
  [scrollable]="{prevButtonIcon: 'caret-alt-left', prevSVGButtonIcon: caretAltLeftIcon, nextButtonIcon: 'caret-alt-right', nextSVGButtonIcon: caretAltRightIcon}"
1811
1951
  class="k-spreadsheet-sheets k-overflow-hidden"
1812
1952
  (tabSelect)="onTabSelect($event)"
1813
- [keepTabContent]="true">
1814
- <ng-container *ngFor="let sheet of sheets">
1815
- <kendo-tabstrip-tab
1953
+ (navigationEnd)="onTabStripNavigationEnd($event)">
1954
+ <kendo-tabstrip-tab *ngFor="let sheet of sheets"
1816
1955
  [title]="sheet.text"
1817
1956
  [selected]="sheet.text === activeSheet">
1818
- <ng-template kendoTabTemplate>
1819
- <span class="k-link">{{sheet.text}}</span>
1820
- <kendo-dropdownbutton #sheetDdb
1821
- fillMode="flat"
1822
- icon="caret-alt-down"
1823
- [svgIcon]="caretAltDownIcon"
1824
- buttonClass="k-menu-button"
1825
- [data]="sheet.sheetActions"
1826
- [buttonAttributes]="{'aria-hidden': 'true', 'tabindex': '-1', role: 'presentation'}"
1827
- (open)="onOpen(sheetDdb)"
1828
- (close)="onClose()"
1829
- (click)="$event.stopPropagation()"
1830
- (itemClick)="onActionClick($event, sheet)">
1831
- </kendo-dropdownbutton>
1832
- </ng-template>
1833
- </kendo-tabstrip-tab>
1834
- </ng-container>
1957
+ <ng-template kendoTabTemplate>
1958
+ <span class="k-link">{{sheet.text}}</span>
1959
+ <kendo-dropdownbutton #sheetDdb
1960
+ fillMode="flat"
1961
+ icon="caret-alt-down"
1962
+ [svgIcon]="caretAltDownIcon"
1963
+ buttonClass="k-menu-button"
1964
+ [data]="sheet.sheetActions"
1965
+ [buttonAttributes]="{'aria-hidden': 'true', 'tabindex': '-1', role: 'presentation'}"
1966
+ (open)="onOpen(sheetDdb)"
1967
+ (close)="onClose()"
1968
+ (click)="$event.stopPropagation()"
1969
+ (itemClick)="onActionClick($event, sheet)">
1970
+ </kendo-dropdownbutton>
1971
+ </ng-template>
1972
+ </kendo-tabstrip-tab>
1835
1973
  </kendo-tabstrip>
1836
1974
  `
1837
1975
  }]
@@ -1842,6 +1980,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
1842
1980
  type: Input
1843
1981
  }], sheetDescriptors: [{
1844
1982
  type: Input
1983
+ }], onFocus: [{
1984
+ type: HostListener,
1985
+ args: ['focus']
1986
+ }], addButton: [{
1987
+ type: ViewChild,
1988
+ args: ['addButton']
1989
+ }], menuButton: [{
1990
+ type: ViewChild,
1991
+ args: ['menuButton']
1992
+ }], tabstrip: [{
1993
+ type: ViewChild,
1994
+ args: ['tabstrip']
1845
1995
  }] } });
1846
1996
 
1847
1997
  /**
@@ -1850,7 +2000,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
1850
2000
  class MessagesDirective extends ComponentMessages {
1851
2001
  }
1852
2002
  MessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MessagesDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
1853
- 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 });
2003
+ 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 });
1854
2004
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MessagesDirective, decorators: [{
1855
2005
  type: Directive,
1856
2006
  args: [{
@@ -1916,6 +2066,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
1916
2066
  type: Input
1917
2067
  }], rename: [{
1918
2068
  type: Input
2069
+ }], nameBox: [{
2070
+ type: Input
2071
+ }], addSheet: [{
2072
+ type: Input
2073
+ }], sheetsMenu: [{
2074
+ type: Input
1919
2075
  }] } });
1920
2076
 
1921
2077
  /**
@@ -2010,8 +2166,6 @@ class SpreadsheetCommandBaseDirective {
2010
2166
  this.spreadsheetService = spreadsheetService;
2011
2167
  this.toolsService = toolsService;
2012
2168
  this.subs = new Subscription();
2013
- // this.toolsService.zone.runOutsideAngular(() => {
2014
- // setTimeout(() => {
2015
2169
  const text = this.localization.get(this.command);
2016
2170
  if (text) {
2017
2171
  this.button.showText = 'overflow';
@@ -2029,11 +2183,6 @@ class SpreadsheetCommandBaseDirective {
2029
2183
  this.subs.add(this.toolsService.stateChange.subscribe(state => {
2030
2184
  this.toolsService.ngZone.onStable.pipe(take(1)).subscribe(() => this.button.selected = state[command]);
2031
2185
  }));
2032
- // this.toolsService.zone.run(() => {
2033
- // this.toolsService.needsCheck.next();
2034
- // });
2035
- // });
2036
- //});
2037
2186
  }
2038
2187
  ngOnInit() {
2039
2188
  this.subs.add(this.button.click.subscribe((this.clickHandler.bind(this))));
@@ -2720,7 +2869,6 @@ class SpreadsheetComponent {
2720
2869
  this.ngZone.run(() => this.spreadsheetService.currentActiveSheet = name);
2721
2870
  }
2722
2871
  onSheetsChanged(e) {
2723
- console.log(e, 'sheet ch');
2724
2872
  this.ngZone.run(() => {
2725
2873
  this.sheets = mapToSheetDescriptor(e.sheets);
2726
2874
  this.updateActiveSheet(this.spreadsheetService.activeSheet);
@@ -2829,7 +2977,13 @@ SpreadsheetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
2829
2977
  i18n-rename="kendo.spreadsheet.rename|The title of the Rename sheet dialog."
2830
2978
  rename="Rename Sheet"
2831
2979
  i18n-delete="kendo.spreadsheet.delete|The title of the Delete sheet dialog."
2832
- delete="Delete Sheet">
2980
+ delete="Delete Sheet"
2981
+ i18n-nameBox="kendo.spreadsheet.nameBox|The title of the Name Box input."
2982
+ nameBox="Name Box"
2983
+ i18n-addSheet="kendo.spreadsheet.addSheet|The title of the Add new sheet button."
2984
+ addSheet="Add New Sheet"
2985
+ i18n-sheetsMenu="kendo.spreadsheet.sheetsMenu|The title of the Sheets menu button."
2986
+ sheetsMenu="All Sheets">
2833
2987
  </ng-container>
2834
2988
  <div class="k-spreadsheet-header">
2835
2989
  <kendo-menu kendoSpreadsheetMenu (select)="onMenuItemSelect($event)">
@@ -2886,14 +3040,12 @@ SpreadsheetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
2886
3040
  <div #nameBox kendoSpreadsheetNameBox [spreadsheetWidget]="spreadsheetWidget"></div>
2887
3041
  <div class="k-spreadsheet-formula-bar">
2888
3042
  <span class="k-separator k-separator-vertical"></span>
2889
- <button kendoButton
2890
- icon="formula-fx"
2891
- [svgIcon]="formulaFxIcon"
2892
- [fillMode]="'flat'">
2893
- </button>
3043
+ <kendo-icon-wrapper
3044
+ name="formula-fx"
3045
+ [svgIcon]="formulaFxIcon">
3046
+ </kendo-icon-wrapper>
2894
3047
  <span class="k-separator k-separator-vertical"></span>
2895
3048
  <div #formulaBar kendoSpreadsheetFormulaInput class="k-textbox k-input k-input-md k-input-flat k-rounded-md"></div>
2896
- <div class="k-widget k-tooltip" style="position: absolute; display: none;">A1</div>
2897
3049
  </div>
2898
3050
  </div>
2899
3051
  <div class="k-spreadsheet-view">
@@ -2912,7 +3064,7 @@ SpreadsheetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
2912
3064
  <ng-container #dialogContainer></ng-container>
2913
3065
 
2914
3066
  <div kendoWatermarkOverlay *ngIf="showLicenseWatermark"></div>
2915
- `, 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]" }] });
3067
+ `, 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]" }] });
2916
3068
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SpreadsheetComponent, decorators: [{
2917
3069
  type: Component,
2918
3070
  args: [{
@@ -2993,7 +3145,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
2993
3145
  i18n-rename="kendo.spreadsheet.rename|The title of the Rename sheet dialog."
2994
3146
  rename="Rename Sheet"
2995
3147
  i18n-delete="kendo.spreadsheet.delete|The title of the Delete sheet dialog."
2996
- delete="Delete Sheet">
3148
+ delete="Delete Sheet"
3149
+ i18n-nameBox="kendo.spreadsheet.nameBox|The title of the Name Box input."
3150
+ nameBox="Name Box"
3151
+ i18n-addSheet="kendo.spreadsheet.addSheet|The title of the Add new sheet button."
3152
+ addSheet="Add New Sheet"
3153
+ i18n-sheetsMenu="kendo.spreadsheet.sheetsMenu|The title of the Sheets menu button."
3154
+ sheetsMenu="All Sheets">
2997
3155
  </ng-container>
2998
3156
  <div class="k-spreadsheet-header">
2999
3157
  <kendo-menu kendoSpreadsheetMenu (select)="onMenuItemSelect($event)">
@@ -3050,14 +3208,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
3050
3208
  <div #nameBox kendoSpreadsheetNameBox [spreadsheetWidget]="spreadsheetWidget"></div>
3051
3209
  <div class="k-spreadsheet-formula-bar">
3052
3210
  <span class="k-separator k-separator-vertical"></span>
3053
- <button kendoButton
3054
- icon="formula-fx"
3055
- [svgIcon]="formulaFxIcon"
3056
- [fillMode]="'flat'">
3057
- </button>
3211
+ <kendo-icon-wrapper
3212
+ name="formula-fx"
3213
+ [svgIcon]="formulaFxIcon">
3214
+ </kendo-icon-wrapper>
3058
3215
  <span class="k-separator k-separator-vertical"></span>
3059
3216
  <div #formulaBar kendoSpreadsheetFormulaInput class="k-textbox k-input k-input-md k-input-flat k-rounded-md"></div>
3060
- <div class="k-widget k-tooltip" style="position: absolute; display: none;">A1</div>
3061
3217
  </div>
3062
3218
  </div>
3063
3219
  <div class="k-spreadsheet-view">
@@ -3172,26 +3328,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
3172
3328
  }]
3173
3329
  }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });
3174
3330
 
3175
- /**
3176
- * @hidden
3177
- */
3178
- class RemoveDirective {
3179
- constructor() {
3180
- this.hostDisplay = 'none';
3181
- }
3182
- }
3183
- RemoveDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RemoveDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
3184
- RemoveDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: RemoveDirective, selector: "[kendoRemoveDirective]", host: { properties: { "style.display": "this.hostDisplay" } }, ngImport: i0 });
3185
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RemoveDirective, decorators: [{
3186
- type: Directive,
3187
- args: [{
3188
- selector: '[kendoRemoveDirective]',
3189
- }]
3190
- }], propDecorators: { hostDisplay: [{
3191
- type: HostBinding,
3192
- args: ['style.display']
3193
- }] } });
3194
-
3195
3331
  const DIRECTIVES = [
3196
3332
  SpreadsheetComponent,
3197
3333
  MessagesDirective,
@@ -3227,7 +3363,7 @@ const DIRECTIVES = [
3227
3363
  DialogContentComponent,
3228
3364
  MainMenuDirective,
3229
3365
  ActionDialogComponent,
3230
- RemoveDirective
3366
+ SpreadsheetTabStripDirective
3231
3367
  ];
3232
3368
  const EXPORTS = [
3233
3369
  SpreadsheetComponent,
@@ -3295,7 +3431,7 @@ SpreadsheetModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", versi
3295
3431
  DialogContentComponent,
3296
3432
  MainMenuDirective,
3297
3433
  ActionDialogComponent,
3298
- RemoveDirective], imports: [CommonModule,
3434
+ SpreadsheetTabStripDirective], imports: [CommonModule,
3299
3435
  ButtonsModule,
3300
3436
  ComboBoxModule,
3301
3437
  DropDownListModule,