@progress/kendo-angular-layout 20.1.0-develop.9 → 20.1.0

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.
@@ -23,6 +23,7 @@ import * as i1 from "@progress/kendo-angular-l10n";
23
23
  import * as i2 from "@angular/animations";
24
24
  const DEFAULT_DURATION = 200;
25
25
  const CONTENT_HIDDEN_CLASS = 'k-hidden';
26
+ let incrementingId = 0;
26
27
  /**
27
28
  * Represents the Kendo UI ExpansionPanel component for Angular. Provides an expandable and collapsible content container with customizable header and animation ([see overview]({% slug overview_expansionpanel %})).
28
29
  *
@@ -164,6 +165,7 @@ export class ExpansionPanelComponent {
164
165
  _expanded = false;
165
166
  _svgExpandIcon = chevronDownIcon;
166
167
  _svgCollapseIcon = chevronUpIcon;
168
+ nextId = incrementingId++;
167
169
  constructor(renderer, hostElement, ngZone, localizationService, builder) {
168
170
  this.renderer = renderer;
169
171
  this.hostElement = hostElement;
@@ -248,6 +250,12 @@ export class ExpansionPanelComponent {
248
250
  this.emitExpandCollapseEvent();
249
251
  }
250
252
  }
253
+ /**
254
+ * @hidden
255
+ */
256
+ get contentWrapperId() {
257
+ return `k-expansion-panel-content-wrapper-${this.nextId}`;
258
+ }
251
259
  /**
252
260
  * @hidden
253
261
  */
@@ -367,7 +375,7 @@ export class ExpansionPanelComponent {
367
375
  [attr.aria-expanded]="expanded && !disabled"
368
376
  role="button"
369
377
  tabindex="0"
370
- [attr.aria-controls]="title"
378
+ [attr.aria-controls]="contentWrapperId"
371
379
  (click)="onHeaderClick($event)"
372
380
  >
373
381
  <ng-container *ngIf="!titleTemplate">
@@ -390,7 +398,7 @@ export class ExpansionPanelComponent {
390
398
  </kendo-icon-wrapper>
391
399
  </span>
392
400
  </div>
393
- <div #content [id]="title" class="k-expander-content-wrapper">
401
+ <div #content [id]="contentWrapperId" class="k-expander-content-wrapper">
394
402
  <div class="k-expander-content" [attr.aria-hidden]="!expanded">
395
403
  <ng-content></ng-content>
396
404
  </div>
@@ -418,7 +426,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
418
426
  [attr.aria-expanded]="expanded && !disabled"
419
427
  role="button"
420
428
  tabindex="0"
421
- [attr.aria-controls]="title"
429
+ [attr.aria-controls]="contentWrapperId"
422
430
  (click)="onHeaderClick($event)"
423
431
  >
424
432
  <ng-container *ngIf="!titleTemplate">
@@ -441,7 +449,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
441
449
  </kendo-icon-wrapper>
442
450
  </span>
443
451
  </div>
444
- <div #content [id]="title" class="k-expander-content-wrapper">
452
+ <div #content [id]="contentWrapperId" class="k-expander-content-wrapper">
445
453
  <div class="k-expander-content" [attr.aria-hidden]="!expanded">
446
454
  <ng-content></ng-content>
447
455
  </div>
@@ -10,7 +10,7 @@ export const packageMetadata = {
10
10
  productName: 'Kendo UI for Angular',
11
11
  productCode: 'KENDOUIANGULAR',
12
12
  productCodes: ['KENDOUIANGULAR'],
13
- publishDate: 1759490804,
14
- version: '20.1.0-develop.9',
13
+ publishDate: 1761117193,
14
+ version: '20.1.0',
15
15
  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'
16
16
  };
@@ -45,8 +45,11 @@ export class SplitterPaneComponent {
45
45
  */
46
46
  set size(newSize) {
47
47
  this._size = newSize;
48
- this.renderer.setStyle(this.nativeElement, '-ms-flex-preferred-size', newSize);
49
- this.renderer.setStyle(this.nativeElement, 'flex-basis', newSize);
48
+ // Only set flex-basis if the pane is not collapsed
49
+ if (!this._collapsed) {
50
+ this.renderer.setStyle(this.nativeElement, '-ms-flex-preferred-size', newSize);
51
+ this.renderer.setStyle(this.nativeElement, 'flex-basis', newSize);
52
+ }
50
53
  this.setStaticPaneClass();
51
54
  }
52
55
  get size() {
@@ -105,7 +108,34 @@ export class SplitterPaneComponent {
105
108
  *
106
109
  * @default false
107
110
  */
108
- collapsed = false;
111
+ set collapsed(value) {
112
+ const hasChanged = this._collapsed !== value;
113
+ this._collapsed = value;
114
+ if (hasChanged && this.nativeElement) {
115
+ if (this._collapsed) {
116
+ // When collapsing, clear the flex-basis to allow other panes to expand
117
+ this.renderer.setStyle(this.nativeElement, '-ms-flex-preferred-size', '0');
118
+ this.renderer.setStyle(this.nativeElement, 'flex-basis', '0');
119
+ }
120
+ else if (this._size) {
121
+ // When expanding, restore the size if it was set
122
+ this.renderer.setStyle(this.nativeElement, '-ms-flex-preferred-size', this._size);
123
+ this.renderer.setStyle(this.nativeElement, 'flex-basis', this._size);
124
+ }
125
+ // Trigger the same forceExpand logic that tryToggle does
126
+ // This ensures remaining panes expand when a pane is collapsed
127
+ if (this.splitterService?.panes) {
128
+ const notCollapsed = this.splitterService.panes.filter(p => !p.collapsed);
129
+ const allHaveFixedSize = notCollapsed.every(p => p.fixedSize);
130
+ notCollapsed.filter(p => p.fixedSize).forEach(pane => {
131
+ pane.forceExpand = allHaveFixedSize;
132
+ });
133
+ }
134
+ }
135
+ }
136
+ get collapsed() {
137
+ return this._collapsed;
138
+ }
109
139
  /**
110
140
  * @hidden
111
141
  */
@@ -159,6 +189,7 @@ export class SplitterPaneComponent {
159
189
  _size;
160
190
  _order;
161
191
  _splitterBarAttributes;
192
+ _collapsed = false;
162
193
  constructor(element, renderer, cdr, splitterService) {
163
194
  this.element = element;
164
195
  this.renderer = renderer;
@@ -121,6 +121,7 @@ export declare class ExpansionPanelComponent implements OnInit, AfterViewInit, O
121
121
  private _expanded;
122
122
  private _svgExpandIcon;
123
123
  private _svgCollapseIcon;
124
+ private nextId;
124
125
  constructor(renderer: Renderer2, hostElement: ElementRef, ngZone: NgZone, localizationService: LocalizationService, builder: AnimationBuilder);
125
126
  ngOnInit(): void;
126
127
  ngAfterViewInit(): void;
@@ -141,6 +142,10 @@ export declare class ExpansionPanelComponent implements OnInit, AfterViewInit, O
141
142
  * @hidden
142
143
  */
143
144
  onHeaderAction(): void;
145
+ /**
146
+ * @hidden
147
+ */
148
+ get contentWrapperId(): string;
144
149
  /**
145
150
  * @hidden
146
151
  */
@@ -29,8 +29,8 @@ const packageMetadata = {
29
29
  productName: 'Kendo UI for Angular',
30
30
  productCode: 'KENDOUIANGULAR',
31
31
  productCodes: ['KENDOUIANGULAR'],
32
- publishDate: 1759490804,
33
- version: '20.1.0-develop.9',
32
+ publishDate: 1761117193,
33
+ version: '20.1.0',
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
 
@@ -2011,8 +2011,11 @@ class SplitterPaneComponent {
2011
2011
  */
2012
2012
  set size(newSize) {
2013
2013
  this._size = newSize;
2014
- this.renderer.setStyle(this.nativeElement, '-ms-flex-preferred-size', newSize);
2015
- this.renderer.setStyle(this.nativeElement, 'flex-basis', newSize);
2014
+ // Only set flex-basis if the pane is not collapsed
2015
+ if (!this._collapsed) {
2016
+ this.renderer.setStyle(this.nativeElement, '-ms-flex-preferred-size', newSize);
2017
+ this.renderer.setStyle(this.nativeElement, 'flex-basis', newSize);
2018
+ }
2016
2019
  this.setStaticPaneClass();
2017
2020
  }
2018
2021
  get size() {
@@ -2071,7 +2074,34 @@ class SplitterPaneComponent {
2071
2074
  *
2072
2075
  * @default false
2073
2076
  */
2074
- collapsed = false;
2077
+ set collapsed(value) {
2078
+ const hasChanged = this._collapsed !== value;
2079
+ this._collapsed = value;
2080
+ if (hasChanged && this.nativeElement) {
2081
+ if (this._collapsed) {
2082
+ // When collapsing, clear the flex-basis to allow other panes to expand
2083
+ this.renderer.setStyle(this.nativeElement, '-ms-flex-preferred-size', '0');
2084
+ this.renderer.setStyle(this.nativeElement, 'flex-basis', '0');
2085
+ }
2086
+ else if (this._size) {
2087
+ // When expanding, restore the size if it was set
2088
+ this.renderer.setStyle(this.nativeElement, '-ms-flex-preferred-size', this._size);
2089
+ this.renderer.setStyle(this.nativeElement, 'flex-basis', this._size);
2090
+ }
2091
+ // Trigger the same forceExpand logic that tryToggle does
2092
+ // This ensures remaining panes expand when a pane is collapsed
2093
+ if (this.splitterService?.panes) {
2094
+ const notCollapsed = this.splitterService.panes.filter(p => !p.collapsed);
2095
+ const allHaveFixedSize = notCollapsed.every(p => p.fixedSize);
2096
+ notCollapsed.filter(p => p.fixedSize).forEach(pane => {
2097
+ pane.forceExpand = allHaveFixedSize;
2098
+ });
2099
+ }
2100
+ }
2101
+ }
2102
+ get collapsed() {
2103
+ return this._collapsed;
2104
+ }
2075
2105
  /**
2076
2106
  * @hidden
2077
2107
  */
@@ -2125,6 +2155,7 @@ class SplitterPaneComponent {
2125
2155
  _size;
2126
2156
  _order;
2127
2157
  _splitterBarAttributes;
2158
+ _collapsed = false;
2128
2159
  constructor(element, renderer, cdr, splitterService) {
2129
2160
  this.element = element;
2130
2161
  this.renderer = renderer;
@@ -8722,6 +8753,7 @@ class ExpansionPanelActionEvent extends PreventableEvent$1 {
8722
8753
 
8723
8754
  const DEFAULT_DURATION = 200;
8724
8755
  const CONTENT_HIDDEN_CLASS = 'k-hidden';
8756
+ let incrementingId = 0;
8725
8757
  /**
8726
8758
  * Represents the Kendo UI ExpansionPanel component for Angular. Provides an expandable and collapsible content container with customizable header and animation ([see overview]({% slug overview_expansionpanel %})).
8727
8759
  *
@@ -8863,6 +8895,7 @@ class ExpansionPanelComponent {
8863
8895
  _expanded = false;
8864
8896
  _svgExpandIcon = chevronDownIcon;
8865
8897
  _svgCollapseIcon = chevronUpIcon;
8898
+ nextId = incrementingId++;
8866
8899
  constructor(renderer, hostElement, ngZone, localizationService, builder) {
8867
8900
  this.renderer = renderer;
8868
8901
  this.hostElement = hostElement;
@@ -8947,6 +8980,12 @@ class ExpansionPanelComponent {
8947
8980
  this.emitExpandCollapseEvent();
8948
8981
  }
8949
8982
  }
8983
+ /**
8984
+ * @hidden
8985
+ */
8986
+ get contentWrapperId() {
8987
+ return `k-expansion-panel-content-wrapper-${this.nextId}`;
8988
+ }
8950
8989
  /**
8951
8990
  * @hidden
8952
8991
  */
@@ -9066,7 +9105,7 @@ class ExpansionPanelComponent {
9066
9105
  [attr.aria-expanded]="expanded && !disabled"
9067
9106
  role="button"
9068
9107
  tabindex="0"
9069
- [attr.aria-controls]="title"
9108
+ [attr.aria-controls]="contentWrapperId"
9070
9109
  (click)="onHeaderClick($event)"
9071
9110
  >
9072
9111
  <ng-container *ngIf="!titleTemplate">
@@ -9089,7 +9128,7 @@ class ExpansionPanelComponent {
9089
9128
  </kendo-icon-wrapper>
9090
9129
  </span>
9091
9130
  </div>
9092
- <div #content [id]="title" class="k-expander-content-wrapper">
9131
+ <div #content [id]="contentWrapperId" class="k-expander-content-wrapper">
9093
9132
  <div class="k-expander-content" [attr.aria-hidden]="!expanded">
9094
9133
  <ng-content></ng-content>
9095
9134
  </div>
@@ -9117,7 +9156,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
9117
9156
  [attr.aria-expanded]="expanded && !disabled"
9118
9157
  role="button"
9119
9158
  tabindex="0"
9120
- [attr.aria-controls]="title"
9159
+ [attr.aria-controls]="contentWrapperId"
9121
9160
  (click)="onHeaderClick($event)"
9122
9161
  >
9123
9162
  <ng-container *ngIf="!titleTemplate">
@@ -9140,7 +9179,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
9140
9179
  </kendo-icon-wrapper>
9141
9180
  </span>
9142
9181
  </div>
9143
- <div #content [id]="title" class="k-expander-content-wrapper">
9182
+ <div #content [id]="contentWrapperId" class="k-expander-content-wrapper">
9144
9183
  <div class="k-expander-content" [attr.aria-hidden]="!expanded">
9145
9184
  <ng-content></ng-content>
9146
9185
  </div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@progress/kendo-angular-layout",
3
- "version": "20.1.0-develop.9",
3
+ "version": "20.1.0",
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",
@@ -50,7 +50,7 @@
50
50
  "package": {
51
51
  "productName": "Kendo UI for Angular",
52
52
  "productCode": "KENDOUIANGULAR",
53
- "publishDate": 1759490804,
53
+ "publishDate": 1761117193,
54
54
  "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"
55
55
  }
56
56
  },
@@ -60,17 +60,17 @@
60
60
  "@angular/core": "16 - 20",
61
61
  "@angular/platform-browser": "16 - 20",
62
62
  "@progress/kendo-licensing": "^1.7.0",
63
- "@progress/kendo-angular-common": "20.1.0-develop.9",
64
- "@progress/kendo-angular-l10n": "20.1.0-develop.9",
65
- "@progress/kendo-angular-progressbar": "20.1.0-develop.9",
66
- "@progress/kendo-angular-icons": "20.1.0-develop.9",
67
- "@progress/kendo-angular-buttons": "20.1.0-develop.9",
68
- "@progress/kendo-angular-intl": "20.1.0-develop.9",
63
+ "@progress/kendo-angular-common": "20.1.0",
64
+ "@progress/kendo-angular-l10n": "20.1.0",
65
+ "@progress/kendo-angular-progressbar": "20.1.0",
66
+ "@progress/kendo-angular-icons": "20.1.0",
67
+ "@progress/kendo-angular-buttons": "20.1.0",
68
+ "@progress/kendo-angular-intl": "20.1.0",
69
69
  "rxjs": "^6.5.3 || ^7.0.0"
70
70
  },
71
71
  "dependencies": {
72
72
  "tslib": "^2.3.1",
73
- "@progress/kendo-angular-schematics": "20.1.0-develop.9",
73
+ "@progress/kendo-angular-schematics": "20.1.0",
74
74
  "@progress/kendo-draggable": "^3.0.2",
75
75
  "node-html-parser": "^7.0.1"
76
76
  },
@@ -87,7 +87,8 @@ export declare class SplitterPaneComponent implements AfterViewChecked {
87
87
  *
88
88
  * @default false
89
89
  */
90
- collapsed: boolean;
90
+ set collapsed(value: boolean);
91
+ get collapsed(): boolean;
91
92
  /**
92
93
  * @hidden
93
94
  */
@@ -128,6 +129,7 @@ export declare class SplitterPaneComponent implements AfterViewChecked {
128
129
  private _size;
129
130
  private _order;
130
131
  private _splitterBarAttributes;
132
+ private _collapsed;
131
133
  constructor(element: ElementRef<HTMLElement>, renderer: Renderer2, cdr: ChangeDetectorRef, splitterService: SplitterService);
132
134
  ngAfterViewChecked(): void;
133
135
  ngOnChanges(changes: SimpleChanges): void;