@progress/kendo-angular-spreadsheet 23.3.0-develop.6 → 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: 1774011229,
51
- version: '23.3.0-develop.6',
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
@@ -5864,7 +5954,14 @@ class SpreadsheetComponent {
5864
5954
  const { topLeft, bottomRight } = selection;
5865
5955
  const isRange = e.targetType === 'cell' && (topLeft.row !== bottomRight.row || topLeft.col !== bottomRight.col);
5866
5956
  const targetType = isRange ? 'range' : e.targetType;
5867
- 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
+ });
5868
5965
  this.contextMenu.show({ top: e.originalEvent.pageY, left: e.originalEvent.pageX });
5869
5966
  }
5870
5967
  /**
@@ -6184,7 +6281,9 @@ class SpreadsheetComponent {
6184
6281
  createFilterMenu: this.createFilterMenu.bind(this)
6185
6282
  };
6186
6283
  }
6187
- 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;
6188
6287
  const commonItems = [{
6189
6288
  text: this.messageFor('copy'),
6190
6289
  icon: commandIcons.copy,
@@ -6208,16 +6307,19 @@ class SpreadsheetComponent {
6208
6307
  icon: commandIcons.mergeAll,
6209
6308
  svgIcon: commandSVGIcons.mergeAll,
6210
6309
  id: 'mergeAll',
6310
+ disabled: disableAllMerge
6211
6311
  }, {
6212
6312
  text: this.messageFor('mergeHorizontally'),
6213
6313
  icon: commandIcons.mergeHorizontally,
6214
6314
  svgIcon: commandSVGIcons.mergeHorizontally,
6215
6315
  id: 'mergeHorizontally',
6316
+ disabled: disableAllMerge || isVerticalOnly
6216
6317
  }, {
6217
6318
  text: this.messageFor('mergeVertically'),
6218
6319
  icon: commandIcons.mergeVertically,
6219
6320
  svgIcon: commandSVGIcons.mergeVertically,
6220
6321
  id: 'mergeVertically',
6322
+ disabled: disableAllMerge || isHorizontalOnly
6221
6323
  }, {
6222
6324
  text: this.messageFor('unmerge'),
6223
6325
  icon: commandIcons.unmerge,
@@ -7,7 +7,7 @@ export const packageMetadata = {
7
7
  "productCodes": [
8
8
  "KENDOUIANGULAR"
9
9
  ],
10
- "publishDate": 1774011229,
11
- "version": "23.3.0-develop.6",
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.6",
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": 1774011229,
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.6",
33
- "@progress/kendo-angular-common": "23.3.0-develop.6",
34
- "@progress/kendo-angular-dialog": "23.3.0-develop.6",
35
- "@progress/kendo-angular-dropdowns": "23.3.0-develop.6",
36
- "@progress/kendo-angular-icons": "23.3.0-develop.6",
37
- "@progress/kendo-angular-inputs": "23.3.0-develop.6",
38
- "@progress/kendo-angular-treeview": "23.3.0-develop.6",
39
- "@progress/kendo-angular-dateinputs": "23.3.0-develop.6",
40
- "@progress/kendo-angular-intl": "23.3.0-develop.6",
41
- "@progress/kendo-angular-l10n": "23.3.0-develop.6",
42
- "@progress/kendo-angular-label": "23.3.0-develop.6",
43
- "@progress/kendo-angular-layout": "23.3.0-develop.6",
44
- "@progress/kendo-angular-menu": "23.3.0-develop.6",
45
- "@progress/kendo-angular-popup": "23.3.0-develop.6",
46
- "@progress/kendo-angular-toolbar": "23.3.0-develop.6",
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.6",
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.6',
15
- '@progress/kendo-angular-treeview': '23.3.0-develop.6'
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
+ }