@progress/kendo-angular-spreadsheet 23.3.0-develop.5 → 23.3.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.
@@ -47,8 +47,8 @@ const packageMetadata = {
47
47
  productName: 'Kendo UI for Angular',
48
48
  productCode: 'KENDOUIANGULAR',
49
49
  productCodes: ['KENDOUIANGULAR'],
50
- publishDate: 1773935958,
51
- version: '23.3.0-develop.5',
50
+ publishDate: 1774015059,
51
+ version: '23.3.0-develop.7',
52
52
  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',
53
53
  };
54
54
 
@@ -1565,8 +1565,19 @@ class SpreadsheetMergeDirective {
1565
1565
  ngOnInit() {
1566
1566
  this.subs.add(this.host.open.subscribe(() => {
1567
1567
  const sheet = this.spreadsheetService.spreadsheet.activeSheet();
1568
+ const selection = sheet.select();
1569
+ const { topLeft, bottomRight } = selection;
1570
+ const isSingleCell = topLeft.row === bottomRight.row && topLeft.col === bottomRight.col;
1571
+ const isVerticalOnly = topLeft.col === bottomRight.col && topLeft.row !== bottomRight.row;
1572
+ const isHorizontalOnly = topLeft.row === bottomRight.row && topLeft.col !== bottomRight.col;
1568
1573
  const isMergedCellWithinRange = this.hasMergedCells(sheet);
1574
+ const mergeAllItem = this.host.data.find(i => i.commandName === 'cells');
1575
+ const mergeHItem = this.host.data.find(i => i.commandName === 'horizontally');
1576
+ const mergeVItem = this.host.data.find(i => i.commandName === 'vertically');
1569
1577
  const unmergeItem = this.host.data.find(i => i.commandName === 'unmerge');
1578
+ mergeAllItem.disabled = isSingleCell;
1579
+ mergeHItem.disabled = isSingleCell || isVerticalOnly;
1580
+ mergeVItem.disabled = isSingleCell || isHorizontalOnly;
1570
1581
  unmergeItem.disabled = !isMergedCellWithinRange;
1571
1582
  }));
1572
1583
  this.subs.add(this.spreadsheetService.selectionChanged.subscribe(range => this.selectedRange = range));
@@ -1655,15 +1666,94 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
1655
1666
 
1656
1667
  /**
1657
1668
  * @hidden
1669
+ *
1670
+ * Checks if the selection spans an entire row (all columns selected).
1671
+ * Used to disable column insert/delete tools when a full row is selected.
1658
1672
  */
1659
- class SpreadsheetDeleteRowButtonDirective extends SpreadsheetCommandButton {
1660
- constructor(button, localization, spreadsheetService, toolsService) {
1673
+ function isFullRowSelection(ref, grid) {
1674
+ if (!ref) {
1675
+ return false;
1676
+ }
1677
+ const topLeft = ref.topLeft;
1678
+ const bottomRight = ref.bottomRight;
1679
+ return topLeft?.col === 0 && bottomRight?.col === grid.columnCount - 1;
1680
+ }
1681
+ /**
1682
+ * @hidden
1683
+ *
1684
+ * Checks if the selection spans an entire column (all rows selected).
1685
+ * Used to disable row insert/delete tools when a full column is selected.
1686
+ */
1687
+ function isFullColumnSelection(ref, grid) {
1688
+ if (!ref) {
1689
+ return false;
1690
+ }
1691
+ const topLeft = ref.topLeft;
1692
+ const bottomRight = ref.bottomRight;
1693
+ return topLeft?.row === 0 && bottomRight?.row === grid.rowCount - 1;
1694
+ }
1695
+
1696
+ /**
1697
+ * @hidden
1698
+ *
1699
+ * Intermediary base class for insert/delete row/column toolbar buttons.
1700
+ * Disables the button when the current selection would cause undesired behavior:
1701
+ * - Row tools are disabled when a full column is selected
1702
+ * - Column tools are disabled when a full row is selected
1703
+ */
1704
+ class SpreadsheetTableCommandButton extends SpreadsheetCommandButton {
1705
+ cdr;
1706
+ disableOn;
1707
+ constructor(command, button, localization, spreadsheetService, toolsService, commandOptions, cdr, disableOn) {
1708
+ super(command, button, localization, spreadsheetService, toolsService, commandOptions);
1709
+ this.cdr = cdr;
1710
+ this.disableOn = disableOn;
1711
+ this.subs.add(spreadsheetService.componentInitialized.subscribe(() => {
1712
+ this.updateDisabledState();
1713
+ }));
1714
+ this.subs.add(spreadsheetService.selectionChanged.subscribe((range) => {
1715
+ this.updateDisabledState(range);
1716
+ }));
1717
+ this.subs.add(spreadsheetService.activeSheetChanged.subscribe(() => {
1718
+ this.updateDisabledState();
1719
+ }));
1720
+ }
1721
+ ngOnInit() {
1722
+ super.ngOnInit();
1723
+ this.updateDisabledState();
1724
+ }
1725
+ updateDisabledState(range) {
1726
+ const sheet = this.spreadsheetService.spreadsheet?.activeSheet();
1727
+ if (!sheet) {
1728
+ return;
1729
+ }
1730
+ const ref = range?._ref ?? sheet.selection()?._ref;
1731
+ const disabled = this.disableOn === 'fullRow'
1732
+ ? isFullRowSelection(ref, sheet._grid)
1733
+ : isFullColumnSelection(ref, sheet._grid);
1734
+ if (this.button.disabled !== disabled) {
1735
+ this.button.disabled = disabled;
1736
+ this.cdr.detectChanges();
1737
+ }
1738
+ }
1739
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: SpreadsheetTableCommandButton, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
1740
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: SpreadsheetTableCommandButton, isStandalone: true, usesInheritance: true, ngImport: i0 });
1741
+ }
1742
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: SpreadsheetTableCommandButton, decorators: [{
1743
+ type: Directive
1744
+ }], ctorParameters: () => [{ type: undefined }, { type: i1$3.ToolBarButtonComponent }, { type: i1.LocalizationService }, { type: SpreadsheetService }, { type: SpreadsheetToolsService }, { type: undefined }, { type: i0.ChangeDetectorRef }, { type: undefined }] });
1745
+
1746
+ /**
1747
+ * @hidden
1748
+ */
1749
+ class SpreadsheetDeleteRowButtonDirective extends SpreadsheetTableCommandButton {
1750
+ constructor(button, localization, spreadsheetService, toolsService, cdr) {
1661
1751
  super('deleteRow', button, localization, spreadsheetService, toolsService, {
1662
1752
  command: 'DeleteRowCommand',
1663
1753
  options: { property: 'deleteRow' }
1664
- });
1754
+ }, cdr, 'fullColumn');
1665
1755
  }
1666
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: SpreadsheetDeleteRowButtonDirective, deps: [{ token: i1$3.ToolBarButtonComponent }, { token: SpreadsheetLocalizationService }, { token: SpreadsheetService }, { token: SpreadsheetToolsService }], target: i0.ɵɵFactoryTarget.Directive });
1756
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: SpreadsheetDeleteRowButtonDirective, deps: [{ token: i1$3.ToolBarButtonComponent }, { token: SpreadsheetLocalizationService }, { token: SpreadsheetService }, { token: SpreadsheetToolsService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
1667
1757
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: SpreadsheetDeleteRowButtonDirective, isStandalone: true, selector: "kendo-toolbar-button[kendoSpreadsheetDeleteRowButton]", usesInheritance: true, ngImport: i0 });
1668
1758
  }
1669
1759
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: SpreadsheetDeleteRowButtonDirective, decorators: [{
@@ -1672,19 +1762,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
1672
1762
  selector: 'kendo-toolbar-button[kendoSpreadsheetDeleteRowButton]',
1673
1763
  standalone: true
1674
1764
  }]
1675
- }], ctorParameters: () => [{ type: i1$3.ToolBarButtonComponent }, { type: SpreadsheetLocalizationService }, { type: SpreadsheetService }, { type: SpreadsheetToolsService }] });
1765
+ }], ctorParameters: () => [{ type: i1$3.ToolBarButtonComponent }, { type: SpreadsheetLocalizationService }, { type: SpreadsheetService }, { type: SpreadsheetToolsService }, { type: i0.ChangeDetectorRef }] });
1676
1766
 
1677
1767
  /**
1678
1768
  * @hidden
1679
1769
  */
1680
- class SpreadsheetDeleteColumnButtonDirective extends SpreadsheetCommandButton {
1681
- constructor(button, localization, spreadsheetService, toolsService) {
1770
+ class SpreadsheetDeleteColumnButtonDirective extends SpreadsheetTableCommandButton {
1771
+ constructor(button, localization, spreadsheetService, toolsService, cdr) {
1682
1772
  super('deleteColumn', button, localization, spreadsheetService, toolsService, {
1683
1773
  command: 'DeleteColumnCommand',
1684
1774
  options: { property: 'deleteColumn' }
1685
- });
1775
+ }, cdr, 'fullRow');
1686
1776
  }
1687
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: SpreadsheetDeleteColumnButtonDirective, deps: [{ token: i1$3.ToolBarButtonComponent }, { token: SpreadsheetLocalizationService }, { token: SpreadsheetService }, { token: SpreadsheetToolsService }], target: i0.ɵɵFactoryTarget.Directive });
1777
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: SpreadsheetDeleteColumnButtonDirective, deps: [{ token: i1$3.ToolBarButtonComponent }, { token: SpreadsheetLocalizationService }, { token: SpreadsheetService }, { token: SpreadsheetToolsService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
1688
1778
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: SpreadsheetDeleteColumnButtonDirective, isStandalone: true, selector: "kendo-toolbar-button[kendoSpreadsheetDeleteColumnButton]", usesInheritance: true, ngImport: i0 });
1689
1779
  }
1690
1780
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: SpreadsheetDeleteColumnButtonDirective, decorators: [{
@@ -1693,21 +1783,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
1693
1783
  selector: 'kendo-toolbar-button[kendoSpreadsheetDeleteColumnButton]',
1694
1784
  standalone: true
1695
1785
  }]
1696
- }], ctorParameters: () => [{ type: i1$3.ToolBarButtonComponent }, { type: SpreadsheetLocalizationService }, { type: SpreadsheetService }, { type: SpreadsheetToolsService }] });
1786
+ }], ctorParameters: () => [{ type: i1$3.ToolBarButtonComponent }, { type: SpreadsheetLocalizationService }, { type: SpreadsheetService }, { type: SpreadsheetToolsService }, { type: i0.ChangeDetectorRef }] });
1697
1787
 
1698
1788
  /**
1699
1789
  * @hidden
1700
1790
  */
1701
- class SpreadsheetAddRowAboveButtonDirective extends SpreadsheetCommandButton {
1702
- constructor(button, localization, spreadsheetService, toolsService) {
1791
+ class SpreadsheetAddRowAboveButtonDirective extends SpreadsheetTableCommandButton {
1792
+ constructor(button, localization, spreadsheetService, toolsService, cdr) {
1703
1793
  super('addRowAbove', button, localization, spreadsheetService, toolsService, {
1704
1794
  command: 'AddRowCommand',
1705
1795
  options: { property: 'addRowAbove',
1706
1796
  value: 'above'
1707
1797
  }
1708
- });
1798
+ }, cdr, 'fullColumn');
1709
1799
  }
1710
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: SpreadsheetAddRowAboveButtonDirective, deps: [{ token: i1$3.ToolBarButtonComponent }, { token: SpreadsheetLocalizationService }, { token: SpreadsheetService }, { token: SpreadsheetToolsService }], target: i0.ɵɵFactoryTarget.Directive });
1800
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: SpreadsheetAddRowAboveButtonDirective, deps: [{ token: i1$3.ToolBarButtonComponent }, { token: SpreadsheetLocalizationService }, { token: SpreadsheetService }, { token: SpreadsheetToolsService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
1711
1801
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: SpreadsheetAddRowAboveButtonDirective, isStandalone: true, selector: "kendo-toolbar-button[kendoSpreadsheetAddRowAboveButton]", usesInheritance: true, ngImport: i0 });
1712
1802
  }
1713
1803
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: SpreadsheetAddRowAboveButtonDirective, decorators: [{
@@ -1716,21 +1806,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
1716
1806
  selector: 'kendo-toolbar-button[kendoSpreadsheetAddRowAboveButton]',
1717
1807
  standalone: true
1718
1808
  }]
1719
- }], ctorParameters: () => [{ type: i1$3.ToolBarButtonComponent }, { type: SpreadsheetLocalizationService }, { type: SpreadsheetService }, { type: SpreadsheetToolsService }] });
1809
+ }], ctorParameters: () => [{ type: i1$3.ToolBarButtonComponent }, { type: SpreadsheetLocalizationService }, { type: SpreadsheetService }, { type: SpreadsheetToolsService }, { type: i0.ChangeDetectorRef }] });
1720
1810
 
1721
1811
  /**
1722
1812
  * @hidden
1723
1813
  */
1724
- class SpreadsheetAddRowBelowButtonDirective extends SpreadsheetCommandButton {
1725
- constructor(button, localization, spreadsheetService, toolsService) {
1814
+ class SpreadsheetAddRowBelowButtonDirective extends SpreadsheetTableCommandButton {
1815
+ constructor(button, localization, spreadsheetService, toolsService, cdr) {
1726
1816
  super('addRowBelow', button, localization, spreadsheetService, toolsService, {
1727
1817
  command: 'AddRowCommand',
1728
1818
  options: { property: 'addRowBelow',
1729
1819
  value: 'below'
1730
1820
  }
1731
- });
1821
+ }, cdr, 'fullColumn');
1732
1822
  }
1733
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: SpreadsheetAddRowBelowButtonDirective, deps: [{ token: i1$3.ToolBarButtonComponent }, { token: SpreadsheetLocalizationService }, { token: SpreadsheetService }, { token: SpreadsheetToolsService }], target: i0.ɵɵFactoryTarget.Directive });
1823
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: SpreadsheetAddRowBelowButtonDirective, deps: [{ token: i1$3.ToolBarButtonComponent }, { token: SpreadsheetLocalizationService }, { token: SpreadsheetService }, { token: SpreadsheetToolsService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
1734
1824
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: SpreadsheetAddRowBelowButtonDirective, isStandalone: true, selector: "kendo-toolbar-button[kendoSpreadsheetAddRowBelowButton]", usesInheritance: true, ngImport: i0 });
1735
1825
  }
1736
1826
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: SpreadsheetAddRowBelowButtonDirective, decorators: [{
@@ -1739,21 +1829,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
1739
1829
  selector: 'kendo-toolbar-button[kendoSpreadsheetAddRowBelowButton]',
1740
1830
  standalone: true
1741
1831
  }]
1742
- }], ctorParameters: () => [{ type: i1$3.ToolBarButtonComponent }, { type: SpreadsheetLocalizationService }, { type: SpreadsheetService }, { type: SpreadsheetToolsService }] });
1832
+ }], ctorParameters: () => [{ type: i1$3.ToolBarButtonComponent }, { type: SpreadsheetLocalizationService }, { type: SpreadsheetService }, { type: SpreadsheetToolsService }, { type: i0.ChangeDetectorRef }] });
1743
1833
 
1744
1834
  /**
1745
1835
  * @hidden
1746
1836
  */
1747
- class SpreadsheetAddColumnRightButtonDirective extends SpreadsheetCommandButton {
1748
- constructor(button, localization, spreadsheetService, toolsService) {
1837
+ class SpreadsheetAddColumnRightButtonDirective extends SpreadsheetTableCommandButton {
1838
+ constructor(button, localization, spreadsheetService, toolsService, cdr) {
1749
1839
  super('addColumnRight', button, localization, spreadsheetService, toolsService, {
1750
1840
  command: 'AddColumnCommand',
1751
1841
  options: { property: 'addColumnRight',
1752
1842
  value: 'right'
1753
1843
  }
1754
- });
1844
+ }, cdr, 'fullRow');
1755
1845
  }
1756
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: SpreadsheetAddColumnRightButtonDirective, deps: [{ token: i1$3.ToolBarButtonComponent }, { token: SpreadsheetLocalizationService }, { token: SpreadsheetService }, { token: SpreadsheetToolsService }], target: i0.ɵɵFactoryTarget.Directive });
1846
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: SpreadsheetAddColumnRightButtonDirective, deps: [{ token: i1$3.ToolBarButtonComponent }, { token: SpreadsheetLocalizationService }, { token: SpreadsheetService }, { token: SpreadsheetToolsService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
1757
1847
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: SpreadsheetAddColumnRightButtonDirective, isStandalone: true, selector: "kendo-toolbar-button[kendoSpreadsheetAddColumnRightButton]", usesInheritance: true, ngImport: i0 });
1758
1848
  }
1759
1849
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: SpreadsheetAddColumnRightButtonDirective, decorators: [{
@@ -1762,21 +1852,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
1762
1852
  selector: 'kendo-toolbar-button[kendoSpreadsheetAddColumnRightButton]',
1763
1853
  standalone: true
1764
1854
  }]
1765
- }], ctorParameters: () => [{ type: i1$3.ToolBarButtonComponent }, { type: SpreadsheetLocalizationService }, { type: SpreadsheetService }, { type: SpreadsheetToolsService }] });
1855
+ }], ctorParameters: () => [{ type: i1$3.ToolBarButtonComponent }, { type: SpreadsheetLocalizationService }, { type: SpreadsheetService }, { type: SpreadsheetToolsService }, { type: i0.ChangeDetectorRef }] });
1766
1856
 
1767
1857
  /**
1768
1858
  * @hidden
1769
1859
  */
1770
- class SpreadsheetAddColumnLeftButtonDirective extends SpreadsheetCommandButton {
1771
- constructor(button, localization, spreadsheetService, toolsService) {
1860
+ class SpreadsheetAddColumnLeftButtonDirective extends SpreadsheetTableCommandButton {
1861
+ constructor(button, localization, spreadsheetService, toolsService, cdr) {
1772
1862
  super('addColumnLeft', button, localization, spreadsheetService, toolsService, {
1773
1863
  command: 'AddColumnCommand',
1774
1864
  options: { property: 'addColumnLeft',
1775
1865
  value: 'left'
1776
1866
  }
1777
- });
1867
+ }, cdr, 'fullRow');
1778
1868
  }
1779
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: SpreadsheetAddColumnLeftButtonDirective, deps: [{ token: i1$3.ToolBarButtonComponent }, { token: SpreadsheetLocalizationService }, { token: SpreadsheetService }, { token: SpreadsheetToolsService }], target: i0.ɵɵFactoryTarget.Directive });
1869
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: SpreadsheetAddColumnLeftButtonDirective, deps: [{ token: i1$3.ToolBarButtonComponent }, { token: SpreadsheetLocalizationService }, { token: SpreadsheetService }, { token: SpreadsheetToolsService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
1780
1870
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: SpreadsheetAddColumnLeftButtonDirective, isStandalone: true, selector: "kendo-toolbar-button[kendoSpreadsheetAddColumnLeftButton]", usesInheritance: true, ngImport: i0 });
1781
1871
  }
1782
1872
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: SpreadsheetAddColumnLeftButtonDirective, decorators: [{
@@ -1785,7 +1875,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
1785
1875
  selector: 'kendo-toolbar-button[kendoSpreadsheetAddColumnLeftButton]',
1786
1876
  standalone: true
1787
1877
  }]
1788
- }], ctorParameters: () => [{ type: i1$3.ToolBarButtonComponent }, { type: SpreadsheetLocalizationService }, { type: SpreadsheetService }, { type: SpreadsheetToolsService }] });
1878
+ }], ctorParameters: () => [{ type: i1$3.ToolBarButtonComponent }, { type: SpreadsheetLocalizationService }, { type: SpreadsheetService }, { type: SpreadsheetToolsService }, { type: i0.ChangeDetectorRef }] });
1789
1879
 
1790
1880
  /**
1791
1881
  * @hidden
@@ -3798,6 +3888,10 @@ class MessagesDirective extends ComponentMessages {
3798
3888
  * Sets the content for the dialog that warns about modifying a disabled cell.
3799
3889
  */
3800
3890
  cannotModifyDisabled;
3891
+ /**
3892
+ * The content of the dialog that warns about performing an action on a range that contains disabled cells.
3893
+ */
3894
+ rangeDisabled;
3801
3895
  /**
3802
3896
  * Sets the text for the **OK** dialog button.
3803
3897
  */
@@ -3994,7 +4088,7 @@ class MessagesDirective extends ComponentMessages {
3994
4088
  */
3995
4089
  cantSortMultipleSelection;
3996
4090
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: MessagesDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
3997
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: MessagesDirective, isStandalone: true, selector: "[kendoSpreadsheetMessages]", inputs: { home: "home", file: "file", insert: "insert", formatTab: "formatTab", dataTab: "dataTab", saveFile: "saveFile", loadFile: "loadFile", bold: "bold", dataValidation: "dataValidation", filter: "filter", validationCellRange: "validationCellRange", validationCriteria: "validationCriteria", validationComparer: "validationComparer", validationMinValue: "validationMinValue", validationMaxValue: "validationMaxValue", validationStartValue: "validationStartValue", validationEndValue: "validationEndValue", validationValue: "validationValue", validationShowListButtonCheckbox: "validationShowListButtonCheckbox", validationShowDateButtonCheckbox: "validationShowDateButtonCheckbox", validationIgnoreBlankCheckbox: "validationIgnoreBlankCheckbox", validationOnInvalidData: "validationOnInvalidData", validationRejectInput: "validationRejectInput", validationShowWarning: "validationShowWarning", validationShowHint: "validationShowHint", anyValueValidationCriteria: "anyValueValidationCriteria", numberValidationCriteria: "numberValidationCriteria", textValidationCriteria: "textValidationCriteria", dateValidationCriteria: "dateValidationCriteria", customFormulaValidationCriteria: "customFormulaValidationCriteria", listValidationCriteria: "listValidationCriteria", greaterThanValidationComparer: "greaterThanValidationComparer", lessThanValidationComparer: "lessThanValidationComparer", betweenValidationComparer: "betweenValidationComparer", notBetweenValidationComparer: "notBetweenValidationComparer", equalToValidationComparer: "equalToValidationComparer", notEqualToValidationComparer: "notEqualToValidationComparer", greaterThanOrEqualToValidationComparer: "greaterThanOrEqualToValidationComparer", lessThanOrEqualToValidationComparer: "lessThanOrEqualToValidationComparer", validationHintMessage: "validationHintMessage", validationHintTitle: "validationHintTitle", italic: "italic", underline: "underline", format: "format", fontFamily: "fontFamily", fontSize: "fontSize", undo: "undo", redo: "redo", background: "background", color: "color", gridLines: "gridLines", addColumnLeft: "addColumnLeft", addColumnRight: "addColumnRight", addRowBelow: "addRowBelow", addRowAbove: "addRowAbove", deleteColumn: "deleteColumn", deleteRow: "deleteRow", wrap: "wrap", align: "align", alignHorizontal: "alignHorizontal", alignVertical: "alignVertical", alignLeft: "alignLeft", alignCenter: "alignCenter", alignRight: "alignRight", alignJustify: "alignJustify", alignTop: "alignTop", alignMiddle: "alignMiddle", alignBottom: "alignBottom", dialogApply: "dialogApply", dialogCancel: "dialogCancel", dialogDelete: "dialogDelete", dialogRename: "dialogRename", dialogInsert: "dialogInsert", dialogRemove: "dialogRemove", dialogRemoveLink: "dialogRemoveLink", delete: "delete", rename: "rename", nameBox: "nameBox", formulaInput: "formulaInput", addSheet: "addSheet", sheetsMenu: "sheetsMenu", view: "view", merge: "merge", mergeHorizontally: "mergeHorizontally", mergeVertically: "mergeVertically", mergeAll: "mergeAll", unmerge: "unmerge", insertLink: "insertLink", increaseDecimal: "increaseDecimal", decreaseDecimal: "decreaseDecimal", increaseFontSize: "increaseFontSize", decreaseFontSize: "decreaseFontSize", openUnsupported: "openUnsupported", modifyMerged: "modifyMerged", cannotModifyDisabled: "cannotModifyDisabled", dialogOk: "dialogOk", dialogError: "dialogError", duplicateSheetName: "duplicateSheetName", copy: "copy", cut: "cut", paste: "paste", hideRow: "hideRow", unhideRow: "unhideRow", hideColumn: "hideColumn", unhideColumn: "unhideColumn", sheetDelete: "sheetDelete", sheetRename: "sheetRename", sheetHide: "sheetHide", sheetDuplicate: "sheetDuplicate", sheetMoveLeft: "sheetMoveLeft", sheetMoveRight: "sheetMoveRight", invalidNameError: "invalidNameError", cantSortMixedCells: "cantSortMixedCells", filterApply: "filterApply", filterClear: "filterClear", filterMenuAll: "filterMenuAll", blankValues: "blankValues", filterContainsOperator: "filterContainsOperator", filterNotContainsOperator: "filterNotContainsOperator", filterStartsWithOperator: "filterStartsWithOperator", filterEndsWithOperator: "filterEndsWithOperator", filterMatchesOperator: "filterMatchesOperator", filterNotMatchesOperator: "filterNotMatchesOperator", filterDateEqOperator: "filterDateEqOperator", filterDateNotEqOperator: "filterDateNotEqOperator", filterBeforeOperator: "filterBeforeOperator", filterAfterOperator: "filterAfterOperator", filterEqOperator: "filterEqOperator", filterNotEqOperator: "filterNotEqOperator", filterGteOperator: "filterGteOperator", filterGtOperator: "filterGtOperator", filterLteOperator: "filterLteOperator", filterLtOperator: "filterLtOperator", filterNoneOperator: "filterNoneOperator", filterMenuConditionItem: "filterMenuConditionItem", filterMenuValueItem: "filterMenuValueItem", sort: "sort", sortAsc: "sortAsc", sortDesc: "sortDesc", unsort: "unsort", cantSortNullRef: "cantSortNullRef", cantSortMultipleSelection: "cantSortMultipleSelection" }, usesInheritance: true, ngImport: i0 });
4091
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: MessagesDirective, isStandalone: true, selector: "[kendoSpreadsheetMessages]", inputs: { home: "home", file: "file", insert: "insert", formatTab: "formatTab", dataTab: "dataTab", saveFile: "saveFile", loadFile: "loadFile", bold: "bold", dataValidation: "dataValidation", filter: "filter", validationCellRange: "validationCellRange", validationCriteria: "validationCriteria", validationComparer: "validationComparer", validationMinValue: "validationMinValue", validationMaxValue: "validationMaxValue", validationStartValue: "validationStartValue", validationEndValue: "validationEndValue", validationValue: "validationValue", validationShowListButtonCheckbox: "validationShowListButtonCheckbox", validationShowDateButtonCheckbox: "validationShowDateButtonCheckbox", validationIgnoreBlankCheckbox: "validationIgnoreBlankCheckbox", validationOnInvalidData: "validationOnInvalidData", validationRejectInput: "validationRejectInput", validationShowWarning: "validationShowWarning", validationShowHint: "validationShowHint", anyValueValidationCriteria: "anyValueValidationCriteria", numberValidationCriteria: "numberValidationCriteria", textValidationCriteria: "textValidationCriteria", dateValidationCriteria: "dateValidationCriteria", customFormulaValidationCriteria: "customFormulaValidationCriteria", listValidationCriteria: "listValidationCriteria", greaterThanValidationComparer: "greaterThanValidationComparer", lessThanValidationComparer: "lessThanValidationComparer", betweenValidationComparer: "betweenValidationComparer", notBetweenValidationComparer: "notBetweenValidationComparer", equalToValidationComparer: "equalToValidationComparer", notEqualToValidationComparer: "notEqualToValidationComparer", greaterThanOrEqualToValidationComparer: "greaterThanOrEqualToValidationComparer", lessThanOrEqualToValidationComparer: "lessThanOrEqualToValidationComparer", validationHintMessage: "validationHintMessage", validationHintTitle: "validationHintTitle", italic: "italic", underline: "underline", format: "format", fontFamily: "fontFamily", fontSize: "fontSize", undo: "undo", redo: "redo", background: "background", color: "color", gridLines: "gridLines", addColumnLeft: "addColumnLeft", addColumnRight: "addColumnRight", addRowBelow: "addRowBelow", addRowAbove: "addRowAbove", deleteColumn: "deleteColumn", deleteRow: "deleteRow", wrap: "wrap", align: "align", alignHorizontal: "alignHorizontal", alignVertical: "alignVertical", alignLeft: "alignLeft", alignCenter: "alignCenter", alignRight: "alignRight", alignJustify: "alignJustify", alignTop: "alignTop", alignMiddle: "alignMiddle", alignBottom: "alignBottom", dialogApply: "dialogApply", dialogCancel: "dialogCancel", dialogDelete: "dialogDelete", dialogRename: "dialogRename", dialogInsert: "dialogInsert", dialogRemove: "dialogRemove", dialogRemoveLink: "dialogRemoveLink", delete: "delete", rename: "rename", nameBox: "nameBox", formulaInput: "formulaInput", addSheet: "addSheet", sheetsMenu: "sheetsMenu", view: "view", merge: "merge", mergeHorizontally: "mergeHorizontally", mergeVertically: "mergeVertically", mergeAll: "mergeAll", unmerge: "unmerge", insertLink: "insertLink", increaseDecimal: "increaseDecimal", decreaseDecimal: "decreaseDecimal", increaseFontSize: "increaseFontSize", decreaseFontSize: "decreaseFontSize", openUnsupported: "openUnsupported", modifyMerged: "modifyMerged", cannotModifyDisabled: "cannotModifyDisabled", rangeDisabled: "rangeDisabled", dialogOk: "dialogOk", dialogError: "dialogError", duplicateSheetName: "duplicateSheetName", copy: "copy", cut: "cut", paste: "paste", hideRow: "hideRow", unhideRow: "unhideRow", hideColumn: "hideColumn", unhideColumn: "unhideColumn", sheetDelete: "sheetDelete", sheetRename: "sheetRename", sheetHide: "sheetHide", sheetDuplicate: "sheetDuplicate", sheetMoveLeft: "sheetMoveLeft", sheetMoveRight: "sheetMoveRight", invalidNameError: "invalidNameError", cantSortMixedCells: "cantSortMixedCells", filterApply: "filterApply", filterClear: "filterClear", filterMenuAll: "filterMenuAll", blankValues: "blankValues", filterContainsOperator: "filterContainsOperator", filterNotContainsOperator: "filterNotContainsOperator", filterStartsWithOperator: "filterStartsWithOperator", filterEndsWithOperator: "filterEndsWithOperator", filterMatchesOperator: "filterMatchesOperator", filterNotMatchesOperator: "filterNotMatchesOperator", filterDateEqOperator: "filterDateEqOperator", filterDateNotEqOperator: "filterDateNotEqOperator", filterBeforeOperator: "filterBeforeOperator", filterAfterOperator: "filterAfterOperator", filterEqOperator: "filterEqOperator", filterNotEqOperator: "filterNotEqOperator", filterGteOperator: "filterGteOperator", filterGtOperator: "filterGtOperator", filterLteOperator: "filterLteOperator", filterLtOperator: "filterLtOperator", filterNoneOperator: "filterNoneOperator", filterMenuConditionItem: "filterMenuConditionItem", filterMenuValueItem: "filterMenuValueItem", sort: "sort", sortAsc: "sortAsc", sortDesc: "sortDesc", unsort: "unsort", cantSortNullRef: "cantSortNullRef", cantSortMultipleSelection: "cantSortMultipleSelection" }, usesInheritance: true, ngImport: i0 });
3998
4092
  }
3999
4093
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: MessagesDirective, decorators: [{
4000
4094
  type: Directive,
@@ -4192,6 +4286,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
4192
4286
  type: Input
4193
4287
  }], cannotModifyDisabled: [{
4194
4288
  type: Input
4289
+ }], rangeDisabled: [{
4290
+ type: Input
4195
4291
  }], dialogOk: [{
4196
4292
  type: Input
4197
4293
  }], dialogError: [{
@@ -5858,7 +5954,14 @@ class SpreadsheetComponent {
5858
5954
  const { topLeft, bottomRight } = selection;
5859
5955
  const isRange = e.targetType === 'cell' && (topLeft.row !== bottomRight.row || topLeft.col !== bottomRight.col);
5860
5956
  const targetType = isRange ? 'range' : e.targetType;
5861
- this.contextMenuItems = this.contextMenuItemsForTarget(targetType, e.showUnhide, e.showUnmerge);
5957
+ const isSingleCell = topLeft.row === bottomRight.row && topLeft.col === bottomRight.col;
5958
+ const isVerticalOnly = topLeft.col === bottomRight.col && topLeft.row !== bottomRight.row;
5959
+ const isHorizontalOnly = topLeft.row === bottomRight.row && topLeft.col !== bottomRight.col;
5960
+ this.contextMenuItems = this.contextMenuItemsForTarget(targetType, e.showUnhide, e.showUnmerge, {
5961
+ isSingleCell,
5962
+ isVerticalOnly,
5963
+ isHorizontalOnly
5964
+ });
5862
5965
  this.contextMenu.show({ top: e.originalEvent.pageY, left: e.originalEvent.pageX });
5863
5966
  }
5864
5967
  /**
@@ -6178,7 +6281,9 @@ class SpreadsheetComponent {
6178
6281
  createFilterMenu: this.createFilterMenu.bind(this)
6179
6282
  };
6180
6283
  }
6181
- contextMenuItemsForTarget(target, unhide, unmerge) {
6284
+ contextMenuItemsForTarget(target, unhide, unmerge, selectionInfo = { isSingleCell: false, isVerticalOnly: false, isHorizontalOnly: false }) {
6285
+ const { isSingleCell, isVerticalOnly, isHorizontalOnly } = selectionInfo;
6286
+ const disableAllMerge = isSingleCell;
6182
6287
  const commonItems = [{
6183
6288
  text: this.messageFor('copy'),
6184
6289
  icon: commandIcons.copy,
@@ -6202,16 +6307,19 @@ class SpreadsheetComponent {
6202
6307
  icon: commandIcons.mergeAll,
6203
6308
  svgIcon: commandSVGIcons.mergeAll,
6204
6309
  id: 'mergeAll',
6310
+ disabled: disableAllMerge
6205
6311
  }, {
6206
6312
  text: this.messageFor('mergeHorizontally'),
6207
6313
  icon: commandIcons.mergeHorizontally,
6208
6314
  svgIcon: commandSVGIcons.mergeHorizontally,
6209
6315
  id: 'mergeHorizontally',
6316
+ disabled: disableAllMerge || isVerticalOnly
6210
6317
  }, {
6211
6318
  text: this.messageFor('mergeVertically'),
6212
6319
  icon: commandIcons.mergeVertically,
6213
6320
  svgIcon: commandSVGIcons.mergeVertically,
6214
6321
  id: 'mergeVertically',
6322
+ disabled: disableAllMerge || isHorizontalOnly
6215
6323
  }, {
6216
6324
  text: this.messageFor('unmerge'),
6217
6325
  icon: commandIcons.unmerge,
@@ -6902,6 +7010,8 @@ class SpreadsheetComponent {
6902
7010
  modifyMerged="Cannot change part of a merged cell."
6903
7011
  i18n-cannotModifyDisabled="kendo.spreadsheet.cannotModifyDisabled|The content of the dialog that warns about modifying a disabled cell."
6904
7012
  cannotModifyDisabled="Cannot modify disabled cells."
7013
+ i18n-rangeDisabled="kendo.spreadsheet.rangeDisabled|The content of the dialog that warns about performing an action on a range that contains disabled cells."
7014
+ rangeDisabled="Destination range contains disabled cells."
6905
7015
  i18n-dialogOk="kendo.spreadsheet.dialogOk|The text of the **OK** dialog button."
6906
7016
  dialogOk="OK"
6907
7017
  i18n-dialogError="kendo.spreadsheet.dialogError|The title of an error dialog."
@@ -7433,6 +7543,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
7433
7543
  modifyMerged="Cannot change part of a merged cell."
7434
7544
  i18n-cannotModifyDisabled="kendo.spreadsheet.cannotModifyDisabled|The content of the dialog that warns about modifying a disabled cell."
7435
7545
  cannotModifyDisabled="Cannot modify disabled cells."
7546
+ i18n-rangeDisabled="kendo.spreadsheet.rangeDisabled|The content of the dialog that warns about performing an action on a range that contains disabled cells."
7547
+ rangeDisabled="Destination range contains disabled cells."
7436
7548
  i18n-dialogOk="kendo.spreadsheet.dialogOk|The text of the **OK** dialog button."
7437
7549
  dialogOk="OK"
7438
7550
  i18n-dialogError="kendo.spreadsheet.dialogError|The title of an error dialog."
@@ -388,6 +388,10 @@ export declare class MessagesDirective extends ComponentMessages {
388
388
  * Sets the content for the dialog that warns about modifying a disabled cell.
389
389
  */
390
390
  cannotModifyDisabled: string;
391
+ /**
392
+ * The content of the dialog that warns about performing an action on a range that contains disabled cells.
393
+ */
394
+ rangeDisabled: string;
391
395
  /**
392
396
  * Sets the text for the **OK** dialog button.
393
397
  */
@@ -584,5 +588,5 @@ export declare class MessagesDirective extends ComponentMessages {
584
588
  */
585
589
  cantSortMultipleSelection: string;
586
590
  static ɵfac: i0.ɵɵFactoryDeclaration<MessagesDirective, never>;
587
- static ɵdir: i0.ɵɵDirectiveDeclaration<MessagesDirective, "[kendoSpreadsheetMessages]", never, { "home": { "alias": "home"; "required": false; }; "file": { "alias": "file"; "required": false; }; "insert": { "alias": "insert"; "required": false; }; "formatTab": { "alias": "formatTab"; "required": false; }; "dataTab": { "alias": "dataTab"; "required": false; }; "saveFile": { "alias": "saveFile"; "required": false; }; "loadFile": { "alias": "loadFile"; "required": false; }; "bold": { "alias": "bold"; "required": false; }; "dataValidation": { "alias": "dataValidation"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; "validationCellRange": { "alias": "validationCellRange"; "required": false; }; "validationCriteria": { "alias": "validationCriteria"; "required": false; }; "validationComparer": { "alias": "validationComparer"; "required": false; }; "validationMinValue": { "alias": "validationMinValue"; "required": false; }; "validationMaxValue": { "alias": "validationMaxValue"; "required": false; }; "validationStartValue": { "alias": "validationStartValue"; "required": false; }; "validationEndValue": { "alias": "validationEndValue"; "required": false; }; "validationValue": { "alias": "validationValue"; "required": false; }; "validationShowListButtonCheckbox": { "alias": "validationShowListButtonCheckbox"; "required": false; }; "validationShowDateButtonCheckbox": { "alias": "validationShowDateButtonCheckbox"; "required": false; }; "validationIgnoreBlankCheckbox": { "alias": "validationIgnoreBlankCheckbox"; "required": false; }; "validationOnInvalidData": { "alias": "validationOnInvalidData"; "required": false; }; "validationRejectInput": { "alias": "validationRejectInput"; "required": false; }; "validationShowWarning": { "alias": "validationShowWarning"; "required": false; }; "validationShowHint": { "alias": "validationShowHint"; "required": false; }; "anyValueValidationCriteria": { "alias": "anyValueValidationCriteria"; "required": false; }; "numberValidationCriteria": { "alias": "numberValidationCriteria"; "required": false; }; "textValidationCriteria": { "alias": "textValidationCriteria"; "required": false; }; "dateValidationCriteria": { "alias": "dateValidationCriteria"; "required": false; }; "customFormulaValidationCriteria": { "alias": "customFormulaValidationCriteria"; "required": false; }; "listValidationCriteria": { "alias": "listValidationCriteria"; "required": false; }; "greaterThanValidationComparer": { "alias": "greaterThanValidationComparer"; "required": false; }; "lessThanValidationComparer": { "alias": "lessThanValidationComparer"; "required": false; }; "betweenValidationComparer": { "alias": "betweenValidationComparer"; "required": false; }; "notBetweenValidationComparer": { "alias": "notBetweenValidationComparer"; "required": false; }; "equalToValidationComparer": { "alias": "equalToValidationComparer"; "required": false; }; "notEqualToValidationComparer": { "alias": "notEqualToValidationComparer"; "required": false; }; "greaterThanOrEqualToValidationComparer": { "alias": "greaterThanOrEqualToValidationComparer"; "required": false; }; "lessThanOrEqualToValidationComparer": { "alias": "lessThanOrEqualToValidationComparer"; "required": false; }; "validationHintMessage": { "alias": "validationHintMessage"; "required": false; }; "validationHintTitle": { "alias": "validationHintTitle"; "required": false; }; "italic": { "alias": "italic"; "required": false; }; "underline": { "alias": "underline"; "required": false; }; "format": { "alias": "format"; "required": false; }; "fontFamily": { "alias": "fontFamily"; "required": false; }; "fontSize": { "alias": "fontSize"; "required": false; }; "undo": { "alias": "undo"; "required": false; }; "redo": { "alias": "redo"; "required": false; }; "background": { "alias": "background"; "required": false; }; "color": { "alias": "color"; "required": false; }; "gridLines": { "alias": "gridLines"; "required": false; }; "addColumnLeft": { "alias": "addColumnLeft"; "required": false; }; "addColumnRight": { "alias": "addColumnRight"; "required": false; }; "addRowBelow": { "alias": "addRowBelow"; "required": false; }; "addRowAbove": { "alias": "addRowAbove"; "required": false; }; "deleteColumn": { "alias": "deleteColumn"; "required": false; }; "deleteRow": { "alias": "deleteRow"; "required": false; }; "wrap": { "alias": "wrap"; "required": false; }; "align": { "alias": "align"; "required": false; }; "alignHorizontal": { "alias": "alignHorizontal"; "required": false; }; "alignVertical": { "alias": "alignVertical"; "required": false; }; "alignLeft": { "alias": "alignLeft"; "required": false; }; "alignCenter": { "alias": "alignCenter"; "required": false; }; "alignRight": { "alias": "alignRight"; "required": false; }; "alignJustify": { "alias": "alignJustify"; "required": false; }; "alignTop": { "alias": "alignTop"; "required": false; }; "alignMiddle": { "alias": "alignMiddle"; "required": false; }; "alignBottom": { "alias": "alignBottom"; "required": false; }; "dialogApply": { "alias": "dialogApply"; "required": false; }; "dialogCancel": { "alias": "dialogCancel"; "required": false; }; "dialogDelete": { "alias": "dialogDelete"; "required": false; }; "dialogRename": { "alias": "dialogRename"; "required": false; }; "dialogInsert": { "alias": "dialogInsert"; "required": false; }; "dialogRemove": { "alias": "dialogRemove"; "required": false; }; "dialogRemoveLink": { "alias": "dialogRemoveLink"; "required": false; }; "delete": { "alias": "delete"; "required": false; }; "rename": { "alias": "rename"; "required": false; }; "nameBox": { "alias": "nameBox"; "required": false; }; "formulaInput": { "alias": "formulaInput"; "required": false; }; "addSheet": { "alias": "addSheet"; "required": false; }; "sheetsMenu": { "alias": "sheetsMenu"; "required": false; }; "view": { "alias": "view"; "required": false; }; "merge": { "alias": "merge"; "required": false; }; "mergeHorizontally": { "alias": "mergeHorizontally"; "required": false; }; "mergeVertically": { "alias": "mergeVertically"; "required": false; }; "mergeAll": { "alias": "mergeAll"; "required": false; }; "unmerge": { "alias": "unmerge"; "required": false; }; "insertLink": { "alias": "insertLink"; "required": false; }; "increaseDecimal": { "alias": "increaseDecimal"; "required": false; }; "decreaseDecimal": { "alias": "decreaseDecimal"; "required": false; }; "increaseFontSize": { "alias": "increaseFontSize"; "required": false; }; "decreaseFontSize": { "alias": "decreaseFontSize"; "required": false; }; "openUnsupported": { "alias": "openUnsupported"; "required": false; }; "modifyMerged": { "alias": "modifyMerged"; "required": false; }; "cannotModifyDisabled": { "alias": "cannotModifyDisabled"; "required": false; }; "dialogOk": { "alias": "dialogOk"; "required": false; }; "dialogError": { "alias": "dialogError"; "required": false; }; "duplicateSheetName": { "alias": "duplicateSheetName"; "required": false; }; "copy": { "alias": "copy"; "required": false; }; "cut": { "alias": "cut"; "required": false; }; "paste": { "alias": "paste"; "required": false; }; "hideRow": { "alias": "hideRow"; "required": false; }; "unhideRow": { "alias": "unhideRow"; "required": false; }; "hideColumn": { "alias": "hideColumn"; "required": false; }; "unhideColumn": { "alias": "unhideColumn"; "required": false; }; "sheetDelete": { "alias": "sheetDelete"; "required": false; }; "sheetRename": { "alias": "sheetRename"; "required": false; }; "sheetHide": { "alias": "sheetHide"; "required": false; }; "sheetDuplicate": { "alias": "sheetDuplicate"; "required": false; }; "sheetMoveLeft": { "alias": "sheetMoveLeft"; "required": false; }; "sheetMoveRight": { "alias": "sheetMoveRight"; "required": false; }; "invalidNameError": { "alias": "invalidNameError"; "required": false; }; "cantSortMixedCells": { "alias": "cantSortMixedCells"; "required": false; }; "filterApply": { "alias": "filterApply"; "required": false; }; "filterClear": { "alias": "filterClear"; "required": false; }; "filterMenuAll": { "alias": "filterMenuAll"; "required": false; }; "blankValues": { "alias": "blankValues"; "required": false; }; "filterContainsOperator": { "alias": "filterContainsOperator"; "required": false; }; "filterNotContainsOperator": { "alias": "filterNotContainsOperator"; "required": false; }; "filterStartsWithOperator": { "alias": "filterStartsWithOperator"; "required": false; }; "filterEndsWithOperator": { "alias": "filterEndsWithOperator"; "required": false; }; "filterMatchesOperator": { "alias": "filterMatchesOperator"; "required": false; }; "filterNotMatchesOperator": { "alias": "filterNotMatchesOperator"; "required": false; }; "filterDateEqOperator": { "alias": "filterDateEqOperator"; "required": false; }; "filterDateNotEqOperator": { "alias": "filterDateNotEqOperator"; "required": false; }; "filterBeforeOperator": { "alias": "filterBeforeOperator"; "required": false; }; "filterAfterOperator": { "alias": "filterAfterOperator"; "required": false; }; "filterEqOperator": { "alias": "filterEqOperator"; "required": false; }; "filterNotEqOperator": { "alias": "filterNotEqOperator"; "required": false; }; "filterGteOperator": { "alias": "filterGteOperator"; "required": false; }; "filterGtOperator": { "alias": "filterGtOperator"; "required": false; }; "filterLteOperator": { "alias": "filterLteOperator"; "required": false; }; "filterLtOperator": { "alias": "filterLtOperator"; "required": false; }; "filterNoneOperator": { "alias": "filterNoneOperator"; "required": false; }; "filterMenuConditionItem": { "alias": "filterMenuConditionItem"; "required": false; }; "filterMenuValueItem": { "alias": "filterMenuValueItem"; "required": false; }; "sort": { "alias": "sort"; "required": false; }; "sortAsc": { "alias": "sortAsc"; "required": false; }; "sortDesc": { "alias": "sortDesc"; "required": false; }; "unsort": { "alias": "unsort"; "required": false; }; "cantSortNullRef": { "alias": "cantSortNullRef"; "required": false; }; "cantSortMultipleSelection": { "alias": "cantSortMultipleSelection"; "required": false; }; }, {}, never, never, true, never>;
591
+ static ɵdir: i0.ɵɵDirectiveDeclaration<MessagesDirective, "[kendoSpreadsheetMessages]", never, { "home": { "alias": "home"; "required": false; }; "file": { "alias": "file"; "required": false; }; "insert": { "alias": "insert"; "required": false; }; "formatTab": { "alias": "formatTab"; "required": false; }; "dataTab": { "alias": "dataTab"; "required": false; }; "saveFile": { "alias": "saveFile"; "required": false; }; "loadFile": { "alias": "loadFile"; "required": false; }; "bold": { "alias": "bold"; "required": false; }; "dataValidation": { "alias": "dataValidation"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; "validationCellRange": { "alias": "validationCellRange"; "required": false; }; "validationCriteria": { "alias": "validationCriteria"; "required": false; }; "validationComparer": { "alias": "validationComparer"; "required": false; }; "validationMinValue": { "alias": "validationMinValue"; "required": false; }; "validationMaxValue": { "alias": "validationMaxValue"; "required": false; }; "validationStartValue": { "alias": "validationStartValue"; "required": false; }; "validationEndValue": { "alias": "validationEndValue"; "required": false; }; "validationValue": { "alias": "validationValue"; "required": false; }; "validationShowListButtonCheckbox": { "alias": "validationShowListButtonCheckbox"; "required": false; }; "validationShowDateButtonCheckbox": { "alias": "validationShowDateButtonCheckbox"; "required": false; }; "validationIgnoreBlankCheckbox": { "alias": "validationIgnoreBlankCheckbox"; "required": false; }; "validationOnInvalidData": { "alias": "validationOnInvalidData"; "required": false; }; "validationRejectInput": { "alias": "validationRejectInput"; "required": false; }; "validationShowWarning": { "alias": "validationShowWarning"; "required": false; }; "validationShowHint": { "alias": "validationShowHint"; "required": false; }; "anyValueValidationCriteria": { "alias": "anyValueValidationCriteria"; "required": false; }; "numberValidationCriteria": { "alias": "numberValidationCriteria"; "required": false; }; "textValidationCriteria": { "alias": "textValidationCriteria"; "required": false; }; "dateValidationCriteria": { "alias": "dateValidationCriteria"; "required": false; }; "customFormulaValidationCriteria": { "alias": "customFormulaValidationCriteria"; "required": false; }; "listValidationCriteria": { "alias": "listValidationCriteria"; "required": false; }; "greaterThanValidationComparer": { "alias": "greaterThanValidationComparer"; "required": false; }; "lessThanValidationComparer": { "alias": "lessThanValidationComparer"; "required": false; }; "betweenValidationComparer": { "alias": "betweenValidationComparer"; "required": false; }; "notBetweenValidationComparer": { "alias": "notBetweenValidationComparer"; "required": false; }; "equalToValidationComparer": { "alias": "equalToValidationComparer"; "required": false; }; "notEqualToValidationComparer": { "alias": "notEqualToValidationComparer"; "required": false; }; "greaterThanOrEqualToValidationComparer": { "alias": "greaterThanOrEqualToValidationComparer"; "required": false; }; "lessThanOrEqualToValidationComparer": { "alias": "lessThanOrEqualToValidationComparer"; "required": false; }; "validationHintMessage": { "alias": "validationHintMessage"; "required": false; }; "validationHintTitle": { "alias": "validationHintTitle"; "required": false; }; "italic": { "alias": "italic"; "required": false; }; "underline": { "alias": "underline"; "required": false; }; "format": { "alias": "format"; "required": false; }; "fontFamily": { "alias": "fontFamily"; "required": false; }; "fontSize": { "alias": "fontSize"; "required": false; }; "undo": { "alias": "undo"; "required": false; }; "redo": { "alias": "redo"; "required": false; }; "background": { "alias": "background"; "required": false; }; "color": { "alias": "color"; "required": false; }; "gridLines": { "alias": "gridLines"; "required": false; }; "addColumnLeft": { "alias": "addColumnLeft"; "required": false; }; "addColumnRight": { "alias": "addColumnRight"; "required": false; }; "addRowBelow": { "alias": "addRowBelow"; "required": false; }; "addRowAbove": { "alias": "addRowAbove"; "required": false; }; "deleteColumn": { "alias": "deleteColumn"; "required": false; }; "deleteRow": { "alias": "deleteRow"; "required": false; }; "wrap": { "alias": "wrap"; "required": false; }; "align": { "alias": "align"; "required": false; }; "alignHorizontal": { "alias": "alignHorizontal"; "required": false; }; "alignVertical": { "alias": "alignVertical"; "required": false; }; "alignLeft": { "alias": "alignLeft"; "required": false; }; "alignCenter": { "alias": "alignCenter"; "required": false; }; "alignRight": { "alias": "alignRight"; "required": false; }; "alignJustify": { "alias": "alignJustify"; "required": false; }; "alignTop": { "alias": "alignTop"; "required": false; }; "alignMiddle": { "alias": "alignMiddle"; "required": false; }; "alignBottom": { "alias": "alignBottom"; "required": false; }; "dialogApply": { "alias": "dialogApply"; "required": false; }; "dialogCancel": { "alias": "dialogCancel"; "required": false; }; "dialogDelete": { "alias": "dialogDelete"; "required": false; }; "dialogRename": { "alias": "dialogRename"; "required": false; }; "dialogInsert": { "alias": "dialogInsert"; "required": false; }; "dialogRemove": { "alias": "dialogRemove"; "required": false; }; "dialogRemoveLink": { "alias": "dialogRemoveLink"; "required": false; }; "delete": { "alias": "delete"; "required": false; }; "rename": { "alias": "rename"; "required": false; }; "nameBox": { "alias": "nameBox"; "required": false; }; "formulaInput": { "alias": "formulaInput"; "required": false; }; "addSheet": { "alias": "addSheet"; "required": false; }; "sheetsMenu": { "alias": "sheetsMenu"; "required": false; }; "view": { "alias": "view"; "required": false; }; "merge": { "alias": "merge"; "required": false; }; "mergeHorizontally": { "alias": "mergeHorizontally"; "required": false; }; "mergeVertically": { "alias": "mergeVertically"; "required": false; }; "mergeAll": { "alias": "mergeAll"; "required": false; }; "unmerge": { "alias": "unmerge"; "required": false; }; "insertLink": { "alias": "insertLink"; "required": false; }; "increaseDecimal": { "alias": "increaseDecimal"; "required": false; }; "decreaseDecimal": { "alias": "decreaseDecimal"; "required": false; }; "increaseFontSize": { "alias": "increaseFontSize"; "required": false; }; "decreaseFontSize": { "alias": "decreaseFontSize"; "required": false; }; "openUnsupported": { "alias": "openUnsupported"; "required": false; }; "modifyMerged": { "alias": "modifyMerged"; "required": false; }; "cannotModifyDisabled": { "alias": "cannotModifyDisabled"; "required": false; }; "rangeDisabled": { "alias": "rangeDisabled"; "required": false; }; "dialogOk": { "alias": "dialogOk"; "required": false; }; "dialogError": { "alias": "dialogError"; "required": false; }; "duplicateSheetName": { "alias": "duplicateSheetName"; "required": false; }; "copy": { "alias": "copy"; "required": false; }; "cut": { "alias": "cut"; "required": false; }; "paste": { "alias": "paste"; "required": false; }; "hideRow": { "alias": "hideRow"; "required": false; }; "unhideRow": { "alias": "unhideRow"; "required": false; }; "hideColumn": { "alias": "hideColumn"; "required": false; }; "unhideColumn": { "alias": "unhideColumn"; "required": false; }; "sheetDelete": { "alias": "sheetDelete"; "required": false; }; "sheetRename": { "alias": "sheetRename"; "required": false; }; "sheetHide": { "alias": "sheetHide"; "required": false; }; "sheetDuplicate": { "alias": "sheetDuplicate"; "required": false; }; "sheetMoveLeft": { "alias": "sheetMoveLeft"; "required": false; }; "sheetMoveRight": { "alias": "sheetMoveRight"; "required": false; }; "invalidNameError": { "alias": "invalidNameError"; "required": false; }; "cantSortMixedCells": { "alias": "cantSortMixedCells"; "required": false; }; "filterApply": { "alias": "filterApply"; "required": false; }; "filterClear": { "alias": "filterClear"; "required": false; }; "filterMenuAll": { "alias": "filterMenuAll"; "required": false; }; "blankValues": { "alias": "blankValues"; "required": false; }; "filterContainsOperator": { "alias": "filterContainsOperator"; "required": false; }; "filterNotContainsOperator": { "alias": "filterNotContainsOperator"; "required": false; }; "filterStartsWithOperator": { "alias": "filterStartsWithOperator"; "required": false; }; "filterEndsWithOperator": { "alias": "filterEndsWithOperator"; "required": false; }; "filterMatchesOperator": { "alias": "filterMatchesOperator"; "required": false; }; "filterNotMatchesOperator": { "alias": "filterNotMatchesOperator"; "required": false; }; "filterDateEqOperator": { "alias": "filterDateEqOperator"; "required": false; }; "filterDateNotEqOperator": { "alias": "filterDateNotEqOperator"; "required": false; }; "filterBeforeOperator": { "alias": "filterBeforeOperator"; "required": false; }; "filterAfterOperator": { "alias": "filterAfterOperator"; "required": false; }; "filterEqOperator": { "alias": "filterEqOperator"; "required": false; }; "filterNotEqOperator": { "alias": "filterNotEqOperator"; "required": false; }; "filterGteOperator": { "alias": "filterGteOperator"; "required": false; }; "filterGtOperator": { "alias": "filterGtOperator"; "required": false; }; "filterLteOperator": { "alias": "filterLteOperator"; "required": false; }; "filterLtOperator": { "alias": "filterLtOperator"; "required": false; }; "filterNoneOperator": { "alias": "filterNoneOperator"; "required": false; }; "filterMenuConditionItem": { "alias": "filterMenuConditionItem"; "required": false; }; "filterMenuValueItem": { "alias": "filterMenuValueItem"; "required": false; }; "sort": { "alias": "sort"; "required": false; }; "sortAsc": { "alias": "sortAsc"; "required": false; }; "sortDesc": { "alias": "sortDesc"; "required": false; }; "unsort": { "alias": "unsort"; "required": false; }; "cantSortNullRef": { "alias": "cantSortNullRef"; "required": false; }; "cantSortMultipleSelection": { "alias": "cantSortMultipleSelection"; "required": false; }; }, {}, never, never, true, never>;
588
592
  }
@@ -7,7 +7,7 @@ export const packageMetadata = {
7
7
  "productCodes": [
8
8
  "KENDOUIANGULAR"
9
9
  ],
10
- "publishDate": 1773935958,
11
- "version": "23.3.0-develop.5",
10
+ "publishDate": 1774015059,
11
+ "version": "23.3.0-develop.7",
12
12
  "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"
13
13
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@progress/kendo-angular-spreadsheet",
3
- "version": "23.3.0-develop.5",
3
+ "version": "23.3.0-develop.7",
4
4
  "description": "A Spreadsheet Component for Angular",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "author": "Progress",
@@ -19,7 +19,7 @@
19
19
  "package": {
20
20
  "productName": "Kendo UI for Angular",
21
21
  "productCode": "KENDOUIANGULAR",
22
- "publishDate": 1773935958,
22
+ "publishDate": 1774015059,
23
23
  "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"
24
24
  }
25
25
  },
@@ -29,26 +29,26 @@
29
29
  "@angular/core": "19 - 21",
30
30
  "@angular/platform-browser": "19 - 21",
31
31
  "@progress/kendo-licensing": "^1.10.0",
32
- "@progress/kendo-angular-buttons": "23.3.0-develop.5",
33
- "@progress/kendo-angular-common": "23.3.0-develop.5",
34
- "@progress/kendo-angular-dialog": "23.3.0-develop.5",
35
- "@progress/kendo-angular-dropdowns": "23.3.0-develop.5",
36
- "@progress/kendo-angular-icons": "23.3.0-develop.5",
37
- "@progress/kendo-angular-inputs": "23.3.0-develop.5",
38
- "@progress/kendo-angular-treeview": "23.3.0-develop.5",
39
- "@progress/kendo-angular-dateinputs": "23.3.0-develop.5",
40
- "@progress/kendo-angular-intl": "23.3.0-develop.5",
41
- "@progress/kendo-angular-l10n": "23.3.0-develop.5",
42
- "@progress/kendo-angular-label": "23.3.0-develop.5",
43
- "@progress/kendo-angular-layout": "23.3.0-develop.5",
44
- "@progress/kendo-angular-menu": "23.3.0-develop.5",
45
- "@progress/kendo-angular-popup": "23.3.0-develop.5",
46
- "@progress/kendo-angular-toolbar": "23.3.0-develop.5",
32
+ "@progress/kendo-angular-buttons": "23.3.0-develop.7",
33
+ "@progress/kendo-angular-common": "23.3.0-develop.7",
34
+ "@progress/kendo-angular-dialog": "23.3.0-develop.7",
35
+ "@progress/kendo-angular-dropdowns": "23.3.0-develop.7",
36
+ "@progress/kendo-angular-icons": "23.3.0-develop.7",
37
+ "@progress/kendo-angular-inputs": "23.3.0-develop.7",
38
+ "@progress/kendo-angular-treeview": "23.3.0-develop.7",
39
+ "@progress/kendo-angular-dateinputs": "23.3.0-develop.7",
40
+ "@progress/kendo-angular-intl": "23.3.0-develop.7",
41
+ "@progress/kendo-angular-l10n": "23.3.0-develop.7",
42
+ "@progress/kendo-angular-label": "23.3.0-develop.7",
43
+ "@progress/kendo-angular-layout": "23.3.0-develop.7",
44
+ "@progress/kendo-angular-menu": "23.3.0-develop.7",
45
+ "@progress/kendo-angular-popup": "23.3.0-develop.7",
46
+ "@progress/kendo-angular-toolbar": "23.3.0-develop.7",
47
47
  "rxjs": "^6.5.3 || ^7.0.0"
48
48
  },
49
49
  "dependencies": {
50
50
  "tslib": "^2.3.1",
51
- "@progress/kendo-angular-schematics": "23.3.0-develop.5",
51
+ "@progress/kendo-angular-schematics": "23.3.0-develop.7",
52
52
  "@progress/jszip-esm": "^1.0.3",
53
53
  "@progress/kendo-common": "^1.0.1",
54
54
  "@progress/kendo-date-math": "^1.5.10",
@@ -11,8 +11,8 @@ function default_1(options) {
11
11
  // Peer dependency of icons
12
12
  '@progress/kendo-svg-icons': '^4.0.0',
13
13
  // peer deps of the dropdowns
14
- '@progress/kendo-angular-navigation': '23.3.0-develop.5',
15
- '@progress/kendo-angular-treeview': '23.3.0-develop.5'
14
+ '@progress/kendo-angular-navigation': '23.3.0-develop.7',
15
+ '@progress/kendo-angular-treeview': '23.3.0-develop.7'
16
16
  } });
17
17
  return (0, schematics_1.externalSchematic)('@progress/kendo-angular-schematics', 'ng-add', finalOptions);
18
18
  }
@@ -2,17 +2,18 @@
2
2
  * Copyright © 2026 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 { ChangeDetectorRef } from '@angular/core';
5
6
  import { ToolBarButtonComponent } from '@progress/kendo-angular-toolbar';
6
7
  import { SpreadsheetLocalizationService } from '../../localization/spreadsheet-localization.service';
7
8
  import { SpreadsheetService } from '../../common/spreadsheet.service';
8
9
  import { SpreadsheetToolsService } from '.././tools.service';
9
- import { SpreadsheetCommandButton } from '.././shared/spreadsheet-command-button';
10
+ import { SpreadsheetTableCommandButton } from './spreadsheet-table-command-button';
10
11
  import * as i0 from "@angular/core";
11
12
  /**
12
13
  * @hidden
13
14
  */
14
- export declare class SpreadsheetAddColumnLeftButtonDirective extends SpreadsheetCommandButton {
15
- constructor(button: ToolBarButtonComponent, localization: SpreadsheetLocalizationService, spreadsheetService: SpreadsheetService, toolsService: SpreadsheetToolsService);
15
+ export declare class SpreadsheetAddColumnLeftButtonDirective extends SpreadsheetTableCommandButton {
16
+ constructor(button: ToolBarButtonComponent, localization: SpreadsheetLocalizationService, spreadsheetService: SpreadsheetService, toolsService: SpreadsheetToolsService, cdr: ChangeDetectorRef);
16
17
  static ɵfac: i0.ɵɵFactoryDeclaration<SpreadsheetAddColumnLeftButtonDirective, never>;
17
18
  static ɵdir: i0.ɵɵDirectiveDeclaration<SpreadsheetAddColumnLeftButtonDirective, "kendo-toolbar-button[kendoSpreadsheetAddColumnLeftButton]", never, {}, {}, never, never, true, never>;
18
19
  }
@@ -2,17 +2,18 @@
2
2
  * Copyright © 2026 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 { ChangeDetectorRef } from '@angular/core';
5
6
  import { ToolBarButtonComponent } from '@progress/kendo-angular-toolbar';
6
7
  import { SpreadsheetLocalizationService } from '../../localization/spreadsheet-localization.service';
7
8
  import { SpreadsheetService } from '../../common/spreadsheet.service';
8
9
  import { SpreadsheetToolsService } from '.././tools.service';
9
- import { SpreadsheetCommandButton } from '.././shared/spreadsheet-command-button';
10
+ import { SpreadsheetTableCommandButton } from './spreadsheet-table-command-button';
10
11
  import * as i0 from "@angular/core";
11
12
  /**
12
13
  * @hidden
13
14
  */
14
- export declare class SpreadsheetAddColumnRightButtonDirective extends SpreadsheetCommandButton {
15
- constructor(button: ToolBarButtonComponent, localization: SpreadsheetLocalizationService, spreadsheetService: SpreadsheetService, toolsService: SpreadsheetToolsService);
15
+ export declare class SpreadsheetAddColumnRightButtonDirective extends SpreadsheetTableCommandButton {
16
+ constructor(button: ToolBarButtonComponent, localization: SpreadsheetLocalizationService, spreadsheetService: SpreadsheetService, toolsService: SpreadsheetToolsService, cdr: ChangeDetectorRef);
16
17
  static ɵfac: i0.ɵɵFactoryDeclaration<SpreadsheetAddColumnRightButtonDirective, never>;
17
18
  static ɵdir: i0.ɵɵDirectiveDeclaration<SpreadsheetAddColumnRightButtonDirective, "kendo-toolbar-button[kendoSpreadsheetAddColumnRightButton]", never, {}, {}, never, never, true, never>;
18
19
  }
@@ -2,17 +2,18 @@
2
2
  * Copyright © 2026 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 { ChangeDetectorRef } from '@angular/core';
5
6
  import { ToolBarButtonComponent } from '@progress/kendo-angular-toolbar';
6
7
  import { SpreadsheetLocalizationService } from '../../localization/spreadsheet-localization.service';
7
8
  import { SpreadsheetService } from '../../common/spreadsheet.service';
8
9
  import { SpreadsheetToolsService } from '.././tools.service';
9
- import { SpreadsheetCommandButton } from '.././shared/spreadsheet-command-button';
10
+ import { SpreadsheetTableCommandButton } from './spreadsheet-table-command-button';
10
11
  import * as i0 from "@angular/core";
11
12
  /**
12
13
  * @hidden
13
14
  */
14
- export declare class SpreadsheetAddRowAboveButtonDirective extends SpreadsheetCommandButton {
15
- constructor(button: ToolBarButtonComponent, localization: SpreadsheetLocalizationService, spreadsheetService: SpreadsheetService, toolsService: SpreadsheetToolsService);
15
+ export declare class SpreadsheetAddRowAboveButtonDirective extends SpreadsheetTableCommandButton {
16
+ constructor(button: ToolBarButtonComponent, localization: SpreadsheetLocalizationService, spreadsheetService: SpreadsheetService, toolsService: SpreadsheetToolsService, cdr: ChangeDetectorRef);
16
17
  static ɵfac: i0.ɵɵFactoryDeclaration<SpreadsheetAddRowAboveButtonDirective, never>;
17
18
  static ɵdir: i0.ɵɵDirectiveDeclaration<SpreadsheetAddRowAboveButtonDirective, "kendo-toolbar-button[kendoSpreadsheetAddRowAboveButton]", never, {}, {}, never, never, true, never>;
18
19
  }
@@ -2,17 +2,18 @@
2
2
  * Copyright © 2026 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 { ChangeDetectorRef } from '@angular/core';
5
6
  import { ToolBarButtonComponent } from '@progress/kendo-angular-toolbar';
6
7
  import { SpreadsheetLocalizationService } from '../../localization/spreadsheet-localization.service';
7
8
  import { SpreadsheetService } from '../../common/spreadsheet.service';
8
9
  import { SpreadsheetToolsService } from '.././tools.service';
9
- import { SpreadsheetCommandButton } from '.././shared/spreadsheet-command-button';
10
+ import { SpreadsheetTableCommandButton } from './spreadsheet-table-command-button';
10
11
  import * as i0 from "@angular/core";
11
12
  /**
12
13
  * @hidden
13
14
  */
14
- export declare class SpreadsheetAddRowBelowButtonDirective extends SpreadsheetCommandButton {
15
- constructor(button: ToolBarButtonComponent, localization: SpreadsheetLocalizationService, spreadsheetService: SpreadsheetService, toolsService: SpreadsheetToolsService);
15
+ export declare class SpreadsheetAddRowBelowButtonDirective extends SpreadsheetTableCommandButton {
16
+ constructor(button: ToolBarButtonComponent, localization: SpreadsheetLocalizationService, spreadsheetService: SpreadsheetService, toolsService: SpreadsheetToolsService, cdr: ChangeDetectorRef);
16
17
  static ɵfac: i0.ɵɵFactoryDeclaration<SpreadsheetAddRowBelowButtonDirective, never>;
17
18
  static ɵdir: i0.ɵɵDirectiveDeclaration<SpreadsheetAddRowBelowButtonDirective, "kendo-toolbar-button[kendoSpreadsheetAddRowBelowButton]", never, {}, {}, never, never, true, never>;
18
19
  }
@@ -2,17 +2,18 @@
2
2
  * Copyright © 2026 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 { ChangeDetectorRef } from '@angular/core';
5
6
  import { ToolBarButtonComponent } from '@progress/kendo-angular-toolbar';
6
7
  import { SpreadsheetLocalizationService } from '../../localization/spreadsheet-localization.service';
7
8
  import { SpreadsheetService } from '../../common/spreadsheet.service';
8
9
  import { SpreadsheetToolsService } from '.././tools.service';
9
- import { SpreadsheetCommandButton } from '.././shared/spreadsheet-command-button';
10
+ import { SpreadsheetTableCommandButton } from './spreadsheet-table-command-button';
10
11
  import * as i0 from "@angular/core";
11
12
  /**
12
13
  * @hidden
13
14
  */
14
- export declare class SpreadsheetDeleteColumnButtonDirective extends SpreadsheetCommandButton {
15
- constructor(button: ToolBarButtonComponent, localization: SpreadsheetLocalizationService, spreadsheetService: SpreadsheetService, toolsService: SpreadsheetToolsService);
15
+ export declare class SpreadsheetDeleteColumnButtonDirective extends SpreadsheetTableCommandButton {
16
+ constructor(button: ToolBarButtonComponent, localization: SpreadsheetLocalizationService, spreadsheetService: SpreadsheetService, toolsService: SpreadsheetToolsService, cdr: ChangeDetectorRef);
16
17
  static ɵfac: i0.ɵɵFactoryDeclaration<SpreadsheetDeleteColumnButtonDirective, never>;
17
18
  static ɵdir: i0.ɵɵDirectiveDeclaration<SpreadsheetDeleteColumnButtonDirective, "kendo-toolbar-button[kendoSpreadsheetDeleteColumnButton]", never, {}, {}, never, never, true, never>;
18
19
  }
@@ -2,17 +2,18 @@
2
2
  * Copyright © 2026 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 { ChangeDetectorRef } from '@angular/core';
5
6
  import { ToolBarButtonComponent } from '@progress/kendo-angular-toolbar';
6
7
  import { SpreadsheetLocalizationService } from '../../localization/spreadsheet-localization.service';
7
8
  import { SpreadsheetService } from '../../common/spreadsheet.service';
8
9
  import { SpreadsheetToolsService } from '.././tools.service';
9
- import { SpreadsheetCommandButton } from '.././shared/spreadsheet-command-button';
10
+ import { SpreadsheetTableCommandButton } from './spreadsheet-table-command-button';
10
11
  import * as i0 from "@angular/core";
11
12
  /**
12
13
  * @hidden
13
14
  */
14
- export declare class SpreadsheetDeleteRowButtonDirective extends SpreadsheetCommandButton {
15
- constructor(button: ToolBarButtonComponent, localization: SpreadsheetLocalizationService, spreadsheetService: SpreadsheetService, toolsService: SpreadsheetToolsService);
15
+ export declare class SpreadsheetDeleteRowButtonDirective extends SpreadsheetTableCommandButton {
16
+ constructor(button: ToolBarButtonComponent, localization: SpreadsheetLocalizationService, spreadsheetService: SpreadsheetService, toolsService: SpreadsheetToolsService, cdr: ChangeDetectorRef);
16
17
  static ɵfac: i0.ɵɵFactoryDeclaration<SpreadsheetDeleteRowButtonDirective, never>;
17
18
  static ɵdir: i0.ɵɵDirectiveDeclaration<SpreadsheetDeleteRowButtonDirective, "kendo-toolbar-button[kendoSpreadsheetDeleteRowButton]", never, {}, {}, never, never, true, never>;
18
19
  }
@@ -0,0 +1,18 @@
1
+ /**-----------------------------------------------------------------------------------------
2
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
3
+ * Licensed under commercial license. See LICENSE.md in the project root for more information
4
+ *-------------------------------------------------------------------------------------------*/
5
+ /**
6
+ * @hidden
7
+ *
8
+ * Checks if the selection spans an entire row (all columns selected).
9
+ * Used to disable column insert/delete tools when a full row is selected.
10
+ */
11
+ export declare function isFullRowSelection(ref: any, grid: any): boolean;
12
+ /**
13
+ * @hidden
14
+ *
15
+ * Checks if the selection spans an entire column (all rows selected).
16
+ * Used to disable row insert/delete tools when a full column is selected.
17
+ */
18
+ export declare function isFullColumnSelection(ref: any, grid: any): boolean;
@@ -0,0 +1,29 @@
1
+ /**-----------------------------------------------------------------------------------------
2
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
3
+ * Licensed under commercial license. See LICENSE.md in the project root for more information
4
+ *-------------------------------------------------------------------------------------------*/
5
+ import { ChangeDetectorRef } from '@angular/core';
6
+ import { LocalizationService } from '@progress/kendo-angular-l10n';
7
+ import { ToolBarButtonComponent } from '@progress/kendo-angular-toolbar';
8
+ import { SpreadsheetService } from '../../common/spreadsheet.service';
9
+ import { SpreadsheetToolsService } from '../tools.service';
10
+ import { SpreadsheetCommand } from '../shared/commands';
11
+ import { SpreadsheetCommandButton } from '../shared/spreadsheet-command-button';
12
+ import * as i0 from "@angular/core";
13
+ /**
14
+ * @hidden
15
+ *
16
+ * Intermediary base class for insert/delete row/column toolbar buttons.
17
+ * Disables the button when the current selection would cause undesired behavior:
18
+ * - Row tools are disabled when a full column is selected
19
+ * - Column tools are disabled when a full row is selected
20
+ */
21
+ export declare abstract class SpreadsheetTableCommandButton extends SpreadsheetCommandButton {
22
+ private cdr;
23
+ private disableOn;
24
+ constructor(command: SpreadsheetCommand, button: ToolBarButtonComponent, localization: LocalizationService, spreadsheetService: SpreadsheetService, toolsService: SpreadsheetToolsService, commandOptions: any, cdr: ChangeDetectorRef, disableOn: 'fullRow' | 'fullColumn');
25
+ ngOnInit(): void;
26
+ private updateDisabledState;
27
+ static ɵfac: i0.ɵɵFactoryDeclaration<SpreadsheetTableCommandButton, never>;
28
+ static ɵdir: i0.ɵɵDirectiveDeclaration<SpreadsheetTableCommandButton, never, never, {}, {}, never, never, true, never>;
29
+ }