@progress/kendo-angular-spreadsheet 14.0.0-develop.5 → 14.0.0-develop.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,7 +3,7 @@
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  import * as i0 from '@angular/core';
6
- import { Injectable, EventEmitter, Output, Inject, Optional, Component, HostBinding, Input, Directive, forwardRef, ElementRef, ViewChild, InjectionToken, HostListener, ViewContainerRef, NgModule } from '@angular/core';
6
+ import { Injectable, EventEmitter, 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';
@@ -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, Keys, isDocumentAvailable, shouldShowValidationUI, EventsModule, WatermarkModule } from '@progress/kendo-angular-common';
16
+ import { isPresent, hasObservers, isDocumentAvailable, Keys, 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: 1696239772,
50
- version: '14.0.0-develop.5',
49
+ publishDate: 1696412890,
50
+ version: '14.0.0-develop.7',
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
 
@@ -73,6 +73,9 @@ class SpreadsheetService {
73
73
  get formulaListId() {
74
74
  return `k-spreadsheet-${spreadsheetCounter}-formula-list`;
75
75
  }
76
+ get tablistId() {
77
+ return `k-spreadsheet-${spreadsheetCounter}-tablist`;
78
+ }
76
79
  notifySheetsChange(actionType, sheetInfo) {
77
80
  const sheets = this.spreadsheet.sheets();
78
81
  this.sheetsChanged.next({ sheets, sheet: sheetInfo, actionType });
@@ -262,7 +265,7 @@ class FormulaInputDirective {
262
265
  this.spreadsheetService = spreadsheetService;
263
266
  this.hostClasses = true;
264
267
  this.ariaHasPopup = 'menu';
265
- this.ariaExpanded = null;
268
+ this.ariaExpanded = 'false';
266
269
  this.focusedItem = () => this.list?.element.nativeElement.querySelector('.k-focus');
267
270
  this.unfocus = () => {
268
271
  const focused = this.focusedItem();
@@ -289,7 +292,7 @@ class FormulaInputDirective {
289
292
  };
290
293
  }
291
294
  get ariaControls() {
292
- return this.ariaExpanded ? this.spreadsheetService.formulaListId : null;
295
+ return this.ariaExpanded === 'true' ? this.spreadsheetService.formulaListId : null;
293
296
  }
294
297
  get listElement() {
295
298
  return this.list?.element.nativeElement.firstElementChild;
@@ -346,12 +349,12 @@ class FormulaInputDirective {
346
349
  this.list = list;
347
350
  list.data = this.data;
348
351
  list.itemClick = this.handler;
349
- this.ariaExpanded = true;
352
+ this.ariaExpanded = 'true';
350
353
  },
351
354
  close: () => {
352
355
  this.popupRef && this.popupRef.close();
353
356
  this.popupRef = null;
354
- this.ariaExpanded = null;
357
+ this.ariaExpanded = 'false';
355
358
  },
356
359
  position: () => {
357
360
  // contentKey++;
@@ -492,6 +495,9 @@ const commandSVGIcons = {
492
495
  fontFamily: fontFamilyIcon
493
496
  };
494
497
 
498
+ /**
499
+ * @hidden
500
+ */
495
501
  class SpreadsheetLoadFileComponent extends ToolBarToolComponent {
496
502
  constructor(localization, spreadsheetService, toolbar) {
497
503
  super();
@@ -1593,57 +1599,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
1593
1599
  }]
1594
1600
  }], ctorParameters: function () { return [{ type: i1$4.DialogRef }]; } });
1595
1601
 
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
-
1647
1602
  /**
1648
1603
  * @hidden
1649
1604
  */
@@ -1664,7 +1619,6 @@ class SheetsBarComponent {
1664
1619
  this.selected = false;
1665
1620
  this.openedDdb = null;
1666
1621
  this.eyeIcon = eyeIcon;
1667
- this.focusedEl = null;
1668
1622
  this.onAddClick = () => {
1669
1623
  if (this.spreadsheetService.spreadsheet) {
1670
1624
  this.spreadsheetService.spreadsheet.view.sheetsbar.onAddSelect();
@@ -1673,9 +1627,16 @@ class SheetsBarComponent {
1673
1627
  };
1674
1628
  this.actionsCallback = {
1675
1629
  copy: (sheetInfo) => {
1676
- sheetInfo.copies ? sheetInfo.copies += 1 : sheetInfo.copies = 1;
1630
+ let copies = 0;
1631
+ const regex = this.getCopyRegex(sheetInfo.text);
1632
+ this.sheets.forEach(sheet => {
1633
+ const isPresent = regex.test(sheet.text);
1634
+ if (isPresent) {
1635
+ copies += 1;
1636
+ }
1637
+ });
1677
1638
  const sheetToCopy = this.spreadsheetService.spreadsheet.sheets().find(s => s.name() === sheetInfo.text);
1678
- const newName = `${sheetToCopy.name()} (${sheetInfo.copies})`;
1639
+ const newName = `${sheetInfo.text} (${copies + 1})`;
1679
1640
  this.spreadsheetService.spreadsheet.insertSheet({ data: { ...sheetToCopy.toJSON(), name: newName }, index: sheetInfo.index + 1 });
1680
1641
  this.selectSheet(newName);
1681
1642
  },
@@ -1688,44 +1649,30 @@ class SheetsBarComponent {
1688
1649
  }
1689
1650
  };
1690
1651
  }
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
- }
1699
1652
  get activeSheet() {
1700
1653
  return this.spreadsheetService.spreadsheet?.activeSheet()?.name();
1701
1654
  }
1702
1655
  get sheetsMenuList() {
1703
1656
  return this.sheets?.map(sheet => ({ text: sheet.text, icon: 'eye', svgIcon: this.eyeIcon }));
1704
1657
  }
1658
+ get tablistId() {
1659
+ return this.spreadsheetService.tablistId;
1660
+ }
1705
1661
  ngAfterViewInit() {
1706
1662
  if (!isDocumentAvailable() || !this.element.nativeElement) {
1707
1663
  return;
1708
1664
  }
1709
1665
  const prevBtn = this.element.nativeElement.querySelector('.k-tabstrip-prev');
1710
1666
  const nextBtn = this.element.nativeElement.querySelector('.k-tabstrip-next');
1667
+ const tablist = this.element.nativeElement.querySelector('.k-tabstrip-items');
1711
1668
  this.renderer.addClass(prevBtn, 'k-order-1');
1712
1669
  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));
1670
+ this.renderer.setAttribute(tablist, 'id', this.tablistId);
1671
+ this.tabListSub = this.renderer.listen(tablist, 'keydown', this.onTabListKeyDown.bind(this));
1715
1672
  }
1716
1673
  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;
1674
+ if (this.tabListSub) {
1675
+ this.tabListSub();
1729
1676
  }
1730
1677
  }
1731
1678
  onTabSelect(ev) {
@@ -1741,6 +1688,8 @@ class SheetsBarComponent {
1741
1688
  }
1742
1689
  onClose() {
1743
1690
  this.openedDdb = null;
1691
+ const activeTabIdx = this.sheets.findIndex(sheet => sheet.active);
1692
+ this.tabstrip.selectTab(activeTabIdx);
1744
1693
  }
1745
1694
  onActionClick(dataItem, sheet) {
1746
1695
  if (dataItem.disabled) {
@@ -1792,6 +1741,11 @@ class SheetsBarComponent {
1792
1741
  commandName: dataItem.commandName
1793
1742
  });
1794
1743
  }
1744
+ getCopyRegex(sheetName) {
1745
+ const newName = sheetName.replaceAll('(', '\\(').replaceAll(')', '\\)');
1746
+ const st = `(${newName})\\s?\\(`;
1747
+ return new RegExp(st, 's');
1748
+ }
1795
1749
  selectSheet(sheetName) {
1796
1750
  const spreadsheetSheet = this.spreadsheetService.spreadsheet.sheets().find(s => s.name() === sheetName);
1797
1751
  this.spreadsheetService.spreadsheet.activeSheet(spreadsheetSheet);
@@ -1799,6 +1753,21 @@ class SheetsBarComponent {
1799
1753
  this.spreadsheetService.activeSheetChanged.next(spreadsheetSheet);
1800
1754
  this.notifySheetsChange();
1801
1755
  }
1756
+ onTabListKeyDown(ev) {
1757
+ const buttonEl = ev.target.querySelector('.k-dropdown-button');
1758
+ const index = Array.from(this.actionDdbRefs).findIndex(el => el.nativeElement === buttonEl);
1759
+ const ddb = Array.from(this.actionDdbs)[index];
1760
+ if (!ddb) {
1761
+ return;
1762
+ }
1763
+ const altKey = ev.altKey;
1764
+ const arrowDown = ev.keyCode === Keys.ArrowDown;
1765
+ const shouldOpenDdb = altKey && arrowDown && !ddb.isOpen;
1766
+ if (shouldOpenDdb) {
1767
+ ev.preventDefault();
1768
+ ddb.togglePopupVisibility();
1769
+ }
1770
+ }
1802
1771
  notifySheetsChange() {
1803
1772
  this.ngZone.run(() => {
1804
1773
  const newSheets = this.spreadsheetService.spreadsheet.sheets();
@@ -1815,60 +1784,9 @@ class SheetsBarComponent {
1815
1784
  }));
1816
1785
  });
1817
1786
  }
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
- }
1869
1787
  }
1870
1788
  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 });
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: `
1789
+ 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: `
1872
1790
  <button kendoButton #addButton
1873
1791
  [title]="messageFor('addSheet')"
1874
1792
  type="button"
@@ -1877,7 +1795,7 @@ SheetsBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ver
1877
1795
  icon="plus"
1878
1796
  [svgIcon]="plusIcon"
1879
1797
  [kendoEventsOutsideAngular]="{click: onAddClick}"
1880
- [tabIndex]="-1">
1798
+ [attr.aria-controls]="tablistId">
1881
1799
  </button>
1882
1800
  <kendo-dropdownbutton #menuButton
1883
1801
  fillMode="flat"
@@ -1887,16 +1805,14 @@ SheetsBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ver
1887
1805
  [data]="sheetsMenuList"
1888
1806
  (itemClick)="onMenuItemClick($event)"
1889
1807
  (open)="onOpen(menuButton)"
1890
- [buttonAttributes]="{title: messageFor('sheetsMenu')}"
1891
- [tabIndex]="-1">
1808
+ [buttonAttributes]="{title: messageFor('sheetsMenu'), ariaControls: tablistId}">
1892
1809
  </kendo-dropdownbutton>
1893
- <kendo-tabstrip #tabstrip kendoSpreadsheetTabStrip
1810
+ <kendo-tabstrip #tabstrip
1894
1811
  [tabPosition]="'bottom'"
1895
1812
  [showContentArea]="false"
1896
1813
  [scrollable]="{prevButtonIcon: 'caret-alt-left', prevSVGButtonIcon: caretAltLeftIcon, nextButtonIcon: 'caret-alt-right', nextSVGButtonIcon: caretAltRightIcon}"
1897
1814
  class="k-spreadsheet-sheets k-overflow-hidden"
1898
- (tabSelect)="onTabSelect($event)"
1899
- (navigationEnd)="onTabStripNavigationEnd($event)">
1815
+ (tabSelect)="onTabSelect($event)">
1900
1816
  <kendo-tabstrip-tab *ngFor="let sheet of sheets"
1901
1817
  [title]="sheet.text"
1902
1818
  [selected]="sheet.text === activeSheet">
@@ -1917,7 +1833,7 @@ SheetsBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ver
1917
1833
  </ng-template>
1918
1834
  </kendo-tabstrip-tab>
1919
1835
  </kendo-tabstrip>
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]" }] });
1836
+ `, 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]" }] });
1921
1837
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: SheetsBarComponent, decorators: [{
1922
1838
  type: Component,
1923
1839
  args: [{
@@ -1931,7 +1847,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
1931
1847
  icon="plus"
1932
1848
  [svgIcon]="plusIcon"
1933
1849
  [kendoEventsOutsideAngular]="{click: onAddClick}"
1934
- [tabIndex]="-1">
1850
+ [attr.aria-controls]="tablistId">
1935
1851
  </button>
1936
1852
  <kendo-dropdownbutton #menuButton
1937
1853
  fillMode="flat"
@@ -1941,16 +1857,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
1941
1857
  [data]="sheetsMenuList"
1942
1858
  (itemClick)="onMenuItemClick($event)"
1943
1859
  (open)="onOpen(menuButton)"
1944
- [buttonAttributes]="{title: messageFor('sheetsMenu')}"
1945
- [tabIndex]="-1">
1860
+ [buttonAttributes]="{title: messageFor('sheetsMenu'), ariaControls: tablistId}">
1946
1861
  </kendo-dropdownbutton>
1947
- <kendo-tabstrip #tabstrip kendoSpreadsheetTabStrip
1862
+ <kendo-tabstrip #tabstrip
1948
1863
  [tabPosition]="'bottom'"
1949
1864
  [showContentArea]="false"
1950
1865
  [scrollable]="{prevButtonIcon: 'caret-alt-left', prevSVGButtonIcon: caretAltLeftIcon, nextButtonIcon: 'caret-alt-right', nextSVGButtonIcon: caretAltRightIcon}"
1951
1866
  class="k-spreadsheet-sheets k-overflow-hidden"
1952
- (tabSelect)="onTabSelect($event)"
1953
- (navigationEnd)="onTabStripNavigationEnd($event)">
1867
+ (tabSelect)="onTabSelect($event)">
1954
1868
  <kendo-tabstrip-tab *ngFor="let sheet of sheets"
1955
1869
  [title]="sheet.text"
1956
1870
  [selected]="sheet.text === activeSheet">
@@ -1980,9 +1894,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
1980
1894
  type: Input
1981
1895
  }], sheetDescriptors: [{
1982
1896
  type: Input
1983
- }], onFocus: [{
1984
- type: HostListener,
1985
- args: ['focus']
1986
1897
  }], addButton: [{
1987
1898
  type: ViewChild,
1988
1899
  args: ['addButton']
@@ -1992,6 +1903,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
1992
1903
  }], tabstrip: [{
1993
1904
  type: ViewChild,
1994
1905
  args: ['tabstrip']
1906
+ }], actionDdbs: [{
1907
+ type: ViewChildren,
1908
+ args: ['sheetDdb']
1909
+ }], actionDdbRefs: [{
1910
+ type: ViewChildren,
1911
+ args: ['sheetDdb', { read: ElementRef }]
1995
1912
  }] } });
1996
1913
 
1997
1914
  /**
@@ -2621,14 +2538,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
2621
2538
  * Represents the [Kendo UI Spreadsheet component for Angular]({% slug overview_spreadsheet %}).
2622
2539
  */
2623
2540
  class SpreadsheetComponent {
2624
- constructor(ngZone, intl, host, localization, spreadsheetService, toolsService, renderer) {
2541
+ constructor(ngZone, intl, host, localization, spreadsheetService, toolsService) {
2625
2542
  this.ngZone = ngZone;
2626
2543
  this.intl = intl;
2627
2544
  this.host = host;
2628
2545
  this.localization = localization;
2629
2546
  this.spreadsheetService = spreadsheetService;
2630
2547
  this.toolsService = toolsService;
2631
- this.renderer = renderer;
2632
2548
  this.hostClass = true;
2633
2549
  this.role = 'application';
2634
2550
  /**
@@ -2645,13 +2561,13 @@ class SpreadsheetComponent {
2645
2561
  /**
2646
2562
  * The initial column width in pixels.
2647
2563
  *
2648
- * @default 64
2564
+ * @default 100
2649
2565
  */
2650
2566
  this.columnWidth = 100;
2651
2567
  /**
2652
2568
  * The height of the header row in pixels.
2653
2569
  *
2654
- * @default 20
2570
+ * @default 30
2655
2571
  */
2656
2572
  this.headerHeight = 30;
2657
2573
  /**
@@ -2659,11 +2575,11 @@ class SpreadsheetComponent {
2659
2575
  *
2660
2576
  * @default 32
2661
2577
  */
2662
- this.headerWidth = 100;
2578
+ this.headerWidth = 32;
2663
2579
  /**
2664
2580
  * The initial row height in pixels.
2665
2581
  *
2666
- * @default 20
2582
+ * @default 30
2667
2583
  */
2668
2584
  this.rowHeight = 30;
2669
2585
  /**
@@ -2891,9 +2807,8 @@ class SpreadsheetComponent {
2891
2807
  defaultCellStyle: this.defaultCellStyle,
2892
2808
  excel: this.excel,
2893
2809
  headerHeight: this.headerHeight,
2894
- headerWidth: this.headerHeight,
2810
+ headerWidth: this.headerWidth,
2895
2811
  images: this.images,
2896
- names: this.names,
2897
2812
  rowHeight: this.rowHeight,
2898
2813
  rows: this.rows,
2899
2814
  formulaBarInputRef: { current: this.formulaBarInputRef.current },
@@ -2902,8 +2817,8 @@ class SpreadsheetComponent {
2902
2817
  };
2903
2818
  }
2904
2819
  }
2905
- 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 });
2906
- 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: [
2820
+ 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 });
2821
+ 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: [
2907
2822
  SpreadsheetLocalizationService,
2908
2823
  {
2909
2824
  provide: LocalizationService,
@@ -3234,7 +3149,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
3234
3149
  <div kendoWatermarkOverlay *ngIf="showLicenseWatermark"></div>
3235
3150
  `,
3236
3151
  }]
3237
- }], 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: [{
3152
+ }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1$5.IntlService }, { type: i0.ElementRef }, { type: i1.LocalizationService }, { type: SpreadsheetService }, { type: SpreadsheetToolsService }]; }, propDecorators: { formulaBarInputRef: [{
3238
3153
  type: ViewChild,
3239
3154
  args: ['formulaBar', { read: FormulaInputDirective }]
3240
3155
  }], formulaCellInputRef: [{
@@ -3274,8 +3189,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
3274
3189
  type: Input
3275
3190
  }], rows: [{
3276
3191
  type: Input
3277
- }], names: [{
3278
- type: Input
3279
3192
  }], images: [{
3280
3193
  type: Input
3281
3194
  }], excel: [{
@@ -3362,8 +3275,7 @@ const DIRECTIVES = [
3362
3275
  FontSizeDropDownListComponent,
3363
3276
  DialogContentComponent,
3364
3277
  MainMenuDirective,
3365
- ActionDialogComponent,
3366
- SpreadsheetTabStripDirective
3278
+ ActionDialogComponent
3367
3279
  ];
3368
3280
  const EXPORTS = [
3369
3281
  SpreadsheetComponent,
@@ -3430,8 +3342,7 @@ SpreadsheetModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", versi
3430
3342
  FontSizeDropDownListComponent,
3431
3343
  DialogContentComponent,
3432
3344
  MainMenuDirective,
3433
- ActionDialogComponent,
3434
- SpreadsheetTabStripDirective], imports: [CommonModule,
3345
+ ActionDialogComponent], imports: [CommonModule,
3435
3346
  ButtonsModule,
3436
3347
  ComboBoxModule,
3437
3348
  DropDownListModule,
@@ -3514,5 +3425,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
3514
3425
  * Generated bundle index. Do not edit.
3515
3426
  */
3516
3427
 
3517
- 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 };
3428
+ 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 };
3518
3429
 
@@ -19,7 +19,6 @@ export declare type SheetInfo = SheetDescriptor & {
19
19
  first: boolean;
20
20
  text: string;
21
21
  sheetActions: SheetAction[];
22
- copies?: number;
23
22
  inEdit?: boolean;
24
23
  active?: boolean;
25
24
  index?: number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@progress/kendo-angular-spreadsheet",
3
- "version": "14.0.0-develop.5",
3
+ "version": "14.0.0-develop.7",
4
4
  "description": "A Spreadsheet Component for Angular",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "author": "Progress",
@@ -23,22 +23,22 @@
23
23
  "@angular/core": "13 - 16",
24
24
  "@angular/platform-browser": "13 - 16",
25
25
  "@progress/kendo-licensing": "^1.0.2",
26
- "@progress/kendo-angular-buttons": "14.0.0-develop.5",
27
- "@progress/kendo-angular-common": "14.0.0-develop.5",
28
- "@progress/kendo-angular-dialog": "14.0.0-develop.5",
29
- "@progress/kendo-angular-dropdowns": "14.0.0-develop.5",
30
- "@progress/kendo-angular-icons": "14.0.0-develop.5",
31
- "@progress/kendo-angular-l10n": "14.0.0-develop.5",
32
- "@progress/kendo-angular-layout": "14.0.0-develop.5",
33
- "@progress/kendo-angular-menu": "14.0.0-develop.5",
34
- "@progress/kendo-angular-popup": "14.0.0-develop.5",
35
- "@progress/kendo-angular-toolbar": "14.0.0-develop.5",
36
- "@progress/kendo-angular-intl": "14.0.0-develop.5",
26
+ "@progress/kendo-angular-buttons": "14.0.0-develop.7",
27
+ "@progress/kendo-angular-common": "14.0.0-develop.7",
28
+ "@progress/kendo-angular-dialog": "14.0.0-develop.7",
29
+ "@progress/kendo-angular-dropdowns": "14.0.0-develop.7",
30
+ "@progress/kendo-angular-icons": "14.0.0-develop.7",
31
+ "@progress/kendo-angular-l10n": "14.0.0-develop.7",
32
+ "@progress/kendo-angular-layout": "14.0.0-develop.7",
33
+ "@progress/kendo-angular-menu": "14.0.0-develop.7",
34
+ "@progress/kendo-angular-popup": "14.0.0-develop.7",
35
+ "@progress/kendo-angular-toolbar": "14.0.0-develop.7",
36
+ "@progress/kendo-angular-intl": "14.0.0-develop.7",
37
37
  "rxjs": "^6.5.3 || ^7.0.0"
38
38
  },
39
39
  "dependencies": {
40
40
  "tslib": "^2.3.1",
41
- "@progress/kendo-angular-schematics": "14.0.0-develop.5",
41
+ "@progress/kendo-angular-schematics": "14.0.0-develop.7",
42
42
  "@progress/kendo-spreadsheet-common": "1.0.0-develop.13"
43
43
  },
44
44
  "schematics": "./schematics/collection.json",
@@ -6,7 +6,7 @@ function default_1(options) {
6
6
  // Peer dependency of icons
7
7
  '@progress/kendo-svg-icons': '^1.0.0',
8
8
  // peer dep of the dropdowns
9
- '@progress/kendo-angular-treeview': '14.0.0-develop.5'
9
+ '@progress/kendo-angular-treeview': '14.0.0-develop.7'
10
10
  } });
11
11
  return (0, schematics_1.externalSchematic)('@progress/kendo-angular-schematics', 'ng-add', finalOptions);
12
12
  }
@@ -2,7 +2,7 @@
2
2
  * Copyright © 2023 Progress Software Corporation. All rights reserved.
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
- import { AfterViewInit, ElementRef, NgZone, OnDestroy, Renderer2 } from '@angular/core';
5
+ import { AfterViewInit, ElementRef, NgZone, OnDestroy, QueryList, Renderer2 } from '@angular/core';
6
6
  import { SVGIcon } from '@progress/kendo-svg-icons';
7
7
  import { SheetInfo } from '../models/sheet-info';
8
8
  import { SpreadsheetService } from '../common/spreadsheet.service';
@@ -26,14 +26,12 @@ export declare class SheetsBarComponent implements AfterViewInit, OnDestroy {
26
26
  hostClasses: boolean;
27
27
  sheets: SheetInfo[];
28
28
  sheetDescriptors: SheetDescriptor[];
29
- /**
30
- * @hidden
31
- */
32
- onFocus(): void;
33
29
  constructor(spreadsheetService: SpreadsheetService, element: ElementRef, renderer: Renderer2, localization: SpreadsheetLocalizationService, dialogService: DialogService, ngZone: NgZone);
34
30
  addButton: ButtonComponent;
35
31
  menuButton: DropDownButtonComponent;
36
32
  tabstrip: TabStripComponent;
33
+ actionDdbs: QueryList<DropDownButtonComponent>;
34
+ actionDdbRefs: QueryList<ElementRef>;
37
35
  get activeSheet(): string;
38
36
  plusIcon: SVGIcon;
39
37
  menuIcon: SVGIcon;
@@ -43,12 +41,11 @@ export declare class SheetsBarComponent implements AfterViewInit, OnDestroy {
43
41
  selected: boolean;
44
42
  private openedDdb;
45
43
  private eyeIcon;
46
- private hostKeyDownSub;
47
- private focusedEl;
44
+ private tabListSub;
48
45
  get sheetsMenuList(): any[];
46
+ get tablistId(): string;
49
47
  ngAfterViewInit(): void;
50
48
  ngOnDestroy(): void;
51
- onTabStripNavigationEnd(ev: string): void;
52
49
  onAddClick: () => void;
53
50
  onTabSelect(ev: SelectEvent): void;
54
51
  onOpen(ddb: DropDownButtonComponent): void;
@@ -57,13 +54,11 @@ export declare class SheetsBarComponent implements AfterViewInit, OnDestroy {
57
54
  onMenuItemClick(item: any): void;
58
55
  messageFor(key: string): string;
59
56
  private openDialog;
57
+ private getCopyRegex;
60
58
  private actionsCallback;
61
59
  private selectSheet;
60
+ private onTabListKeyDown;
62
61
  private notifySheetsChange;
63
- private onHostKeyDown;
64
- private focusNext;
65
- private focusPrev;
66
- private resetNavigation;
67
62
  static ɵfac: i0.ɵɵFactoryDeclaration<SheetsBarComponent, never>;
68
63
  static ɵcmp: i0.ɵɵComponentDeclaration<SheetsBarComponent, "[kendoSpreadsheetSheetsBar]", never, { "sheets": "sheets"; "sheetDescriptors": "sheetDescriptors"; }, {}, never, never>;
69
64
  }