@progress/kendo-angular-layout 24.0.0-develop.29 → 24.0.0-develop.30

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.
@@ -29,8 +29,8 @@ const packageMetadata = {
29
29
  productName: 'Kendo UI for Angular',
30
30
  productCode: 'KENDOUIANGULAR',
31
31
  productCodes: ['KENDOUIANGULAR'],
32
- publishDate: 1778673166,
33
- version: '24.0.0-develop.29',
32
+ publishDate: 1778748641,
33
+ version: '24.0.0-develop.30',
34
34
  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'
35
35
  };
36
36
 
@@ -1860,11 +1860,7 @@ class SplitterService {
1860
1860
  pane.detectChanges();
1861
1861
  }
1862
1862
  }
1863
- const notCollapsed = this.panes.filter(p => !p.collapsed);
1864
- const allHaveFixedSize = notCollapsed.every(p => p.fixedSize);
1865
- notCollapsed.filter(p => p.fixedSize).forEach(pane => {
1866
- pane.forceExpand = allHaveFixedSize ? true : false;
1867
- });
1863
+ this.syncPaneExpandState();
1868
1864
  return pane.collapsible;
1869
1865
  }
1870
1866
  togglePane(keyCode, index) {
@@ -2010,6 +2006,23 @@ class SplitterService {
2010
2006
  this.containerSize = containerSize;
2011
2007
  this.rtl = direction === 'rtl';
2012
2008
  }
2009
+ syncPaneExpandState() {
2010
+ if (!this.panes) {
2011
+ return;
2012
+ }
2013
+ const notCollapsed = this.panes.filter(p => !p.collapsed);
2014
+ const someAreCollapsed = notCollapsed.length < this.panes.length;
2015
+ const allHaveFixedSize = notCollapsed.every(p => p.fixedSize);
2016
+ // A pane is flexible when it is resizable or collapsible, meaning it can absorb extra space.
2017
+ const someAreFlexible = notCollapsed.some(p => p.resizable || p.collapsible);
2018
+ notCollapsed.filter(p => p.fixedSize).forEach(pane => {
2019
+ // Force-expand only when a pane is collapsed (space needs redistribution),
2020
+ // all visible panes have a fixed size, and either no flexible pane exists
2021
+ // or this pane itself is flexible and can absorb the extra space.
2022
+ // When no pane is collapsed, sizes are balanced and no expansion is needed.
2023
+ pane.forceExpand = someAreCollapsed && allHaveFixedSize && (!someAreFlexible || pane.resizable || pane.collapsible);
2024
+ });
2025
+ }
2013
2026
  containerSize = () => { };
2014
2027
  rtl;
2015
2028
  isPercent(size) {
@@ -2151,11 +2164,7 @@ class SplitterPaneComponent {
2151
2164
  // Trigger the same forceExpand logic that tryToggle does
2152
2165
  // This ensures remaining panes expand when a pane is collapsed
2153
2166
  if (this.splitterService?.panes) {
2154
- const notCollapsed = this.splitterService.panes.filter(p => !p.collapsed);
2155
- const allHaveFixedSize = notCollapsed.every(p => p.fixedSize);
2156
- notCollapsed.filter(p => p.fixedSize).forEach(pane => {
2157
- pane.forceExpand = allHaveFixedSize;
2158
- });
2167
+ this.splitterService.syncPaneExpandState();
2159
2168
  }
2160
2169
  }
2161
2170
  }
@@ -2207,7 +2216,34 @@ class SplitterPaneComponent {
2207
2216
  /**
2208
2217
  * @hidden
2209
2218
  */
2210
- forceExpand = false;
2219
+ set forceExpand(value) {
2220
+ if (this._forceExpand === value) {
2221
+ return;
2222
+ }
2223
+ this._forceExpand = value;
2224
+ // Enforce min/max constraints during flex redistribution so panes
2225
+ // do not exceed their bounds when absorbing a collapsed pane's space.
2226
+ const sizeProp = this.orientation === 'vertical' ? 'height' : 'width';
2227
+ if (value) {
2228
+ if (this.max) {
2229
+ this.renderer.setStyle(this.nativeElement, `max-${sizeProp}`, this.max);
2230
+ }
2231
+ if (this.min) {
2232
+ this.renderer.setStyle(this.nativeElement, `min-${sizeProp}`, this.min);
2233
+ }
2234
+ }
2235
+ else {
2236
+ if (this.max) {
2237
+ this.renderer.removeStyle(this.nativeElement, `max-${sizeProp}`);
2238
+ }
2239
+ if (this.min) {
2240
+ this.renderer.removeStyle(this.nativeElement, `min-${sizeProp}`);
2241
+ }
2242
+ }
2243
+ }
2244
+ get forceExpand() {
2245
+ return this._forceExpand;
2246
+ }
2211
2247
  /**
2212
2248
  * @hidden
2213
2249
  */
@@ -2216,6 +2252,7 @@ class SplitterPaneComponent {
2216
2252
  _order;
2217
2253
  _splitterBarAttributes;
2218
2254
  _collapsed = false;
2255
+ _forceExpand = false;
2219
2256
  constructor(element, renderer, cdr, splitterService) {
2220
2257
  this.element = element;
2221
2258
  this.renderer = renderer;
@@ -7,7 +7,7 @@ export const packageMetadata = {
7
7
  "productCodes": [
8
8
  "KENDOUIANGULAR"
9
9
  ],
10
- "publishDate": 1778673166,
11
- "version": "24.0.0-develop.29",
10
+ "publishDate": 1778748641,
11
+ "version": "24.0.0-develop.30",
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-layout",
3
- "version": "24.0.0-develop.29",
3
+ "version": "24.0.0-develop.30",
4
4
  "description": "Kendo UI for Angular Layout Package - a collection of components to create professional application layoyts",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "author": "Progress",
@@ -63,7 +63,7 @@
63
63
  "package": {
64
64
  "productName": "Kendo UI for Angular",
65
65
  "productCode": "KENDOUIANGULAR",
66
- "publishDate": 1778673166,
66
+ "publishDate": 1778748641,
67
67
  "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"
68
68
  }
69
69
  },
@@ -73,17 +73,17 @@
73
73
  "@angular/core": "19 - 21",
74
74
  "@angular/platform-browser": "19 - 21",
75
75
  "@progress/kendo-licensing": "^1.11.0",
76
- "@progress/kendo-angular-common": "24.0.0-develop.29",
77
- "@progress/kendo-angular-l10n": "24.0.0-develop.29",
78
- "@progress/kendo-angular-progressbar": "24.0.0-develop.29",
79
- "@progress/kendo-angular-icons": "24.0.0-develop.29",
80
- "@progress/kendo-angular-buttons": "24.0.0-develop.29",
81
- "@progress/kendo-angular-intl": "24.0.0-develop.29",
76
+ "@progress/kendo-angular-common": "24.0.0-develop.30",
77
+ "@progress/kendo-angular-l10n": "24.0.0-develop.30",
78
+ "@progress/kendo-angular-progressbar": "24.0.0-develop.30",
79
+ "@progress/kendo-angular-icons": "24.0.0-develop.30",
80
+ "@progress/kendo-angular-buttons": "24.0.0-develop.30",
81
+ "@progress/kendo-angular-intl": "24.0.0-develop.30",
82
82
  "rxjs": "^6.5.3 || ^7.0.0"
83
83
  },
84
84
  "dependencies": {
85
85
  "tslib": "^2.3.1",
86
- "@progress/kendo-angular-schematics": "24.0.0-develop.29",
86
+ "@progress/kendo-angular-schematics": "24.0.0-develop.30",
87
87
  "@progress/kendo-draggable": "^3.0.2"
88
88
  },
89
89
  "schematics": "./schematics/collection.json",
@@ -121,7 +121,8 @@ export declare class SplitterPaneComponent implements AfterViewChecked {
121
121
  /**
122
122
  * @hidden
123
123
  */
124
- forceExpand: boolean;
124
+ set forceExpand(value: boolean);
125
+ get forceExpand(): boolean;
125
126
  /**
126
127
  * @hidden
127
128
  */
@@ -130,6 +131,7 @@ export declare class SplitterPaneComponent implements AfterViewChecked {
130
131
  private _order;
131
132
  private _splitterBarAttributes;
132
133
  private _collapsed;
134
+ private _forceExpand;
133
135
  constructor(element: ElementRef<HTMLElement>, renderer: Renderer2, cdr: ChangeDetectorRef, splitterService: SplitterService);
134
136
  ngAfterViewChecked(): void;
135
137
  ngOnChanges(changes: SimpleChanges): void;
@@ -57,6 +57,7 @@ export declare class SplitterService {
57
57
  paneByIndex(pane: SplitterPaneComponent): number;
58
58
  getPaneSplitterBar(pane: SplitterPaneComponent): SplitterBarComponent | null;
59
59
  configure({ panes, orientation, containerSize, direction }: SplitterParameters): void;
60
+ syncPaneExpandState(): void;
60
61
  private containerSize;
61
62
  private rtl;
62
63
  private isPercent;