@progress/kendo-angular-layout 25.1.0-develop.1 → 25.1.0-develop.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,11 +3,11 @@
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
5
  import * as i0 from '@angular/core';
6
- import { Injectable, Directive, Optional, isDevMode, ContentChildren, ViewChildren, HostBinding, ViewChild, Input, SkipSelf, Host, Component, EventEmitter, forwardRef, HostListener, ContentChild, Output, Inject, QueryList, NgZone, ElementRef, ViewEncapsulation, TemplateRef, NgModule } from '@angular/core';
6
+ import { Injectable, Directive, Optional, isDevMode, signal, ContentChildren, ViewChildren, HostBinding, ViewChild, Input, SkipSelf, Host, ChangeDetectionStrategy, Component, EventEmitter, forwardRef, HostListener, ContentChild, Output, Inject, QueryList, NgZone, afterNextRender, ElementRef, ViewEncapsulation, computed, TemplateRef, NgModule } from '@angular/core';
7
7
  import * as i1 from '@progress/kendo-angular-l10n';
8
8
  import { LocalizationService, L10N_PREFIX, ComponentMessages } from '@progress/kendo-angular-l10n';
9
9
  import * as i1$1 from '@progress/kendo-angular-common';
10
- import { Keys, getLicenseMessage, shouldShowValidationUI, normalizeKeys, WatermarkOverlayComponent, KENDO_WEBMCP_HOST, provideComponentName, isDocumentAvailable, anyChanged, isObjectPresent, removeHTMLAttributes, parseAttributes, setHTMLAttributes, DraggableDirective, PreventableEvent as PreventableEvent$1, guid, ResizeSensorComponent, hasObservers, isPresent as isPresent$1, focusableSelector, isChanged } from '@progress/kendo-angular-common';
10
+ import { Keys, getLicenseMessage, shouldShowValidationUI, normalizeKeys, WatermarkOverlayComponent, KENDO_WEBMCP_HOST, provideComponentName, isDocumentAvailable, isObjectPresent, removeHTMLAttributes, parseAttributes, setHTMLAttributes, DraggableDirective, PreventableEvent as PreventableEvent$1, guid, ResizeSensorComponent, hasObservers, isPresent as isPresent$1, focusableSelector, isChanged } from '@progress/kendo-angular-common';
11
11
  import { validatePackage } from '@progress/kendo-licensing';
12
12
  import * as i2 from '@angular/animations';
13
13
  import { trigger, state, style, transition, animate, AUTO_STYLE } from '@angular/animations';
@@ -29,8 +29,8 @@ const packageMetadata = {
29
29
  productName: 'Kendo UI for Angular',
30
30
  productCode: 'KENDOUIANGULAR',
31
31
  productCodes: ['KENDOUIANGULAR'],
32
- publishDate: 1786626694,
33
- version: '25.1.0-develop.1',
32
+ publishDate: 1787669947,
33
+ version: '25.1.0-develop.10',
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
 
@@ -324,25 +324,45 @@ class PanelBarItemComponent {
324
324
  /**
325
325
  * Sets the title of the PanelBar item ([see example](https://www.telerik.com/kendo-angular-ui/components/layout/panelbar/items#titles)).
326
326
  */
327
- title;
327
+ set title(value) {
328
+ this._title.set(value);
329
+ }
330
+ get title() {
331
+ return this._title();
332
+ }
328
333
  /**
329
334
  * Allows the component to set the `"id"` property to each item.
330
335
  * Used to set the `id` attributes of the nested elements and to enable the WAI-ARIA support.
331
336
  */
332
- id = `default-${nextId++}`;
337
+ set id(value) {
338
+ this._id.set(value);
339
+ }
340
+ get id() {
341
+ return this._id();
342
+ }
333
343
  /**
334
344
  * Defines the icon that renders next to the title ([see example](https://www.telerik.com/kendo-angular-ui/components/layout/panelbar/items#title-icons)).
335
345
  *
336
346
  * @default ''
337
347
  */
338
- icon = '';
348
+ set icon(value) {
349
+ this._icon.set(value);
350
+ }
351
+ get icon() {
352
+ return this._icon();
353
+ }
339
354
  /**
340
355
  * Defines the icon that renders next to the title by using a custom CSS class
341
356
  * ([see example](https://www.telerik.com/kendo-angular-ui/components/layout/panelbar/items#title-icons)).
342
357
  *
343
358
  * @default ''
344
359
  */
345
- iconClass = '';
360
+ set iconClass(value) {
361
+ this._iconClass.set(value);
362
+ }
363
+ get iconClass() {
364
+ return this._iconClass();
365
+ }
346
366
  /**
347
367
  * Defines an SVG icon to render.
348
368
  * You can use either an [existing Kendo SVG icon](https://www.telerik.com/kendo-angular-ui/components/icons/svgicon/svgicon-list) or a custom one.
@@ -351,10 +371,10 @@ class PanelBarItemComponent {
351
371
  if (isDevMode() && icon && this.icon && this.iconClass) {
352
372
  throw new Error('Setting both icon/svgIcon and iconClass options at the same time is not supported.');
353
373
  }
354
- this._svgIcon = icon;
374
+ this._svgIcon.set(icon);
355
375
  }
356
376
  get svgIcon() {
357
- return this._svgIcon;
377
+ return this._svgIcon();
358
378
  }
359
379
  /**
360
380
  * Defines the location of the image that displays next to the title
@@ -362,13 +382,23 @@ class PanelBarItemComponent {
362
382
  *
363
383
  * @default ''
364
384
  */
365
- imageUrl = '';
385
+ set imageUrl(value) {
386
+ this._imageUrl.set(value);
387
+ }
388
+ get imageUrl() {
389
+ return this._imageUrl();
390
+ }
366
391
  /**
367
392
  * When set to `true`, disables a PanelBar item ([see example](https://www.telerik.com/kendo-angular-ui/components/layout/panelbar/items#disabled-state)).
368
393
  *
369
394
  * @default false
370
395
  */
371
- disabled = false;
396
+ set disabled(value) {
397
+ this._disabled.set(value);
398
+ }
399
+ get disabled() {
400
+ return this._disabled();
401
+ }
372
402
  /**
373
403
  * When set to `true`, expands the PanelBar item ([see example](https://www.telerik.com/kendo-angular-ui/components/layout/panelbar/items#expanded-state)).
374
404
  */
@@ -378,43 +408,86 @@ class PanelBarItemComponent {
378
408
  if (!this.keepContent) {
379
409
  this.toggleExpandedChildAnimations(value);
380
410
  }
381
- this._expanded = value;
411
+ this._expanded.set(value);
382
412
  }
383
413
  get expanded() {
384
- return this._expanded;
414
+ return this._expanded();
385
415
  }
386
416
  /**
387
417
  * Sets the selected state of a PanelBar item ([see example](https://www.telerik.com/kendo-angular-ui/components/layout/panelbar/items#selected-state)).
388
418
  *
389
419
  * @default false
390
420
  */
391
- selected = false;
421
+ set selected(value) {
422
+ this._selected.set(value);
423
+ }
424
+ get selected() {
425
+ return this._selected();
426
+ }
392
427
  /**
393
428
  * Sets the content of the PanelBar item.
394
429
  * It is used when the [`items`](https://www.telerik.com/kendo-angular-ui/components/layout/api/panelbarcomponent#items) property of the PanelBar is set.
395
430
  */
396
- content;
431
+ set content(value) {
432
+ this._content.set(value);
433
+ }
434
+ get content() {
435
+ return this._content();
436
+ }
397
437
  /**
398
438
  * @hidden
399
439
  */
400
- items;
440
+ set items(value) {
441
+ this._items.set(value);
442
+ }
443
+ get items() {
444
+ return this._items();
445
+ }
401
446
  /**
402
447
  * @hidden
403
448
  */
404
- template;
449
+ set template(value) {
450
+ this._template.set(value);
451
+ }
452
+ get template() {
453
+ return this._template();
454
+ }
405
455
  header;
406
456
  contentWrapper;
407
- contentHeight;
408
- contentOverflow;
409
- keepContent = false;
410
- childrenItems;
411
- hasChildItems = false;
412
- hasItems = false;
413
- hasContent = false;
414
- state = "inactive";
457
+ get contentHeight() {
458
+ return this._contentHeight();
459
+ }
460
+ set contentHeight(value) {
461
+ this._contentHeight.set(value);
462
+ }
463
+ get contentOverflow() {
464
+ return this._contentOverflow();
465
+ }
466
+ set contentOverflow(value) {
467
+ this._contentOverflow.set(value);
468
+ }
469
+ get keepContent() {
470
+ return this._keepContent();
471
+ }
472
+ set keepContent(value) {
473
+ this._keepContent.set(value);
474
+ }
475
+ get state() {
476
+ return this._state();
477
+ }
478
+ set state(value) {
479
+ this._state.set(value);
480
+ }
415
481
  get animate() {
416
482
  return this.eventService.animate;
417
483
  }
484
+ childrenItems;
485
+ get hasChildItems() { return this._hasChildItems(); }
486
+ set hasChildItems(value) { this._hasChildItems.set(value); }
487
+ get hasItems() { return this._hasItems(); }
488
+ set hasItems(value) { this._hasItems.set(value); }
489
+ get hasContent() { return this._hasContent(); }
490
+ set hasContent(value) { this._hasContent.set(value); }
418
491
  role = "treeitem";
419
492
  titleAttribute = null;
420
493
  kItemClass = true;
@@ -447,12 +520,41 @@ class PanelBarItemComponent {
447
520
  //ContentChild does not support descendants property, so we use ContentChildren for contentTemplate instead
448
521
  contentTemplate;
449
522
  titleTemplates;
450
- focused = false;
451
- wrapperFocused = false;
523
+ get focused() {
524
+ return this._focused();
525
+ }
526
+ set focused(value) {
527
+ this._focused.set(value);
528
+ }
529
+ get wrapperFocused() {
530
+ return this._wrapperFocused();
531
+ }
532
+ set wrapperFocused(value) {
533
+ this._wrapperFocused.set(value);
534
+ }
452
535
  subscriptions = new Subscription(() => { });
453
- _expanded = false;
536
+ _title = signal(undefined, ...(ngDevMode ? [{ debugName: "_title" }] : []));
537
+ _id = signal(`default-${nextId++}`, ...(ngDevMode ? [{ debugName: "_id" }] : []));
538
+ _icon = signal('', ...(ngDevMode ? [{ debugName: "_icon" }] : []));
539
+ _iconClass = signal('', ...(ngDevMode ? [{ debugName: "_iconClass" }] : []));
540
+ _imageUrl = signal('', ...(ngDevMode ? [{ debugName: "_imageUrl" }] : []));
541
+ _disabled = signal(false, ...(ngDevMode ? [{ debugName: "_disabled" }] : []));
542
+ _selected = signal(false, ...(ngDevMode ? [{ debugName: "_selected" }] : []));
543
+ _content = signal(undefined, ...(ngDevMode ? [{ debugName: "_content" }] : []));
544
+ _items = signal(undefined, ...(ngDevMode ? [{ debugName: "_items" }] : []));
545
+ _template = signal(undefined, ...(ngDevMode ? [{ debugName: "_template" }] : []));
546
+ _expanded = signal(false, ...(ngDevMode ? [{ debugName: "_expanded" }] : []));
547
+ _svgIcon = signal(undefined, ...(ngDevMode ? [{ debugName: "_svgIcon" }] : []));
548
+ _state = signal('inactive', ...(ngDevMode ? [{ debugName: "_state" }] : []));
549
+ _focused = signal(false, ...(ngDevMode ? [{ debugName: "_focused" }] : []));
550
+ _wrapperFocused = signal(false, ...(ngDevMode ? [{ debugName: "_wrapperFocused" }] : []));
551
+ _keepContent = signal(false, ...(ngDevMode ? [{ debugName: "_keepContent" }] : []));
552
+ _contentHeight = signal(undefined, ...(ngDevMode ? [{ debugName: "_contentHeight" }] : []));
553
+ _contentOverflow = signal(undefined, ...(ngDevMode ? [{ debugName: "_contentOverflow" }] : []));
554
+ _hasChildItems = signal(false, ...(ngDevMode ? [{ debugName: "_hasChildItems" }] : []));
555
+ _hasItems = signal(false, ...(ngDevMode ? [{ debugName: "_hasItems" }] : []));
556
+ _hasContent = signal(false, ...(ngDevMode ? [{ debugName: "_hasContent" }] : []));
454
557
  level;
455
- _svgIcon;
456
558
  constructor(parent, eventService, element, renderer) {
457
559
  this.parent = parent;
458
560
  this.eventService = eventService;
@@ -764,7 +866,7 @@ class PanelBarItemComponent {
764
866
  animate(200, style({ height: 0, display: 'none' }))
765
867
  ])
766
868
  ])
767
- ], deferBlockDependencies: [() => [PanelBarItemComponent, NgTemplateOutlet]] });
869
+ ], changeDetection: i0.ChangeDetectionStrategy.OnPush, deferBlockDependencies: [() => [PanelBarItemComponent, NgTemplateOutlet]] });
768
870
  }
769
871
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: PanelBarItemComponent, decorators: [{
770
872
  type: Component,
@@ -928,7 +1030,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
928
1030
  }
929
1031
  `,
930
1032
  standalone: true,
931
- imports: [IconWrapperComponent, NgTemplateOutlet]
1033
+ imports: [IconWrapperComponent, NgTemplateOutlet],
1034
+ changeDetection: ChangeDetectionStrategy.OnPush
932
1035
  }]
933
1036
  }], ctorParameters: () => [{ type: PanelBarItemComponent, decorators: [{
934
1037
  type: SkipSelf
@@ -1152,26 +1255,54 @@ class PanelBarComponent {
1152
1255
  *
1153
1256
  * @default 'multiple
1154
1257
  */
1155
- expandMode = PanelBarExpandMode.Default;
1258
+ set expandMode(value) {
1259
+ this._expandMode.set(value);
1260
+ this.eventService.expandMode = value;
1261
+ if (this.childrenItems) {
1262
+ setTimeout(this.updateChildrenHeight);
1263
+ }
1264
+ }
1265
+ get expandMode() {
1266
+ return this._expandMode();
1267
+ }
1156
1268
  /**
1157
1269
  * Allows the PanelBar to modify the selected state of the items.
1158
1270
  *
1159
1271
  * @default true
1160
1272
  */
1161
- selectable = true;
1273
+ set selectable(value) {
1274
+ this._selectable.set(value);
1275
+ }
1276
+ get selectable() {
1277
+ return this._selectable();
1278
+ }
1162
1279
  /**
1163
1280
  * Sets the animate state of the PanelBar ([see example](https://www.telerik.com/kendo-angular-ui/components/layout/panelbar/animations)).
1164
1281
  *
1165
1282
  * @default true
1166
1283
  */
1167
- animate = true;
1284
+ set animate(value) {
1285
+ this._animate.set(value);
1286
+ this.eventService.animate = value;
1287
+ }
1288
+ get animate() {
1289
+ return this._animate();
1290
+ }
1168
1291
  /**
1169
1292
  * Sets the height of the component when the `"full"` expand mode is used.
1170
1293
  * This option is ignored when the `"multiple"` or `"single"` expand modes are used.
1171
1294
  *
1172
1295
  * @default '400px'
1173
1296
  */
1174
- height = '400px';
1297
+ set height(value) {
1298
+ this._height.set(value);
1299
+ if (this.childrenItems) {
1300
+ setTimeout(this.updateChildrenHeight);
1301
+ }
1302
+ }
1303
+ get height() {
1304
+ return this._height();
1305
+ }
1175
1306
  /**
1176
1307
  * Controls how the PanelBar renders item content.
1177
1308
  *
@@ -1185,24 +1316,27 @@ class PanelBarComponent {
1185
1316
  *
1186
1317
  * @default false
1187
1318
  */
1188
- get keepItemContent() {
1189
- return this._keepItemContent;
1190
- }
1191
1319
  set keepItemContent(keepItemContent) {
1192
- this._keepItemContent = keepItemContent;
1320
+ this._keepItemContent.set(keepItemContent);
1193
1321
  this.eventService.onKeepContent(keepItemContent);
1194
1322
  }
1323
+ get keepItemContent() {
1324
+ return this._keepItemContent();
1325
+ }
1195
1326
  /**
1196
1327
  * Sets the items of the PanelBar as an array of `PanelBarItemModel` instances
1197
1328
  * ([see example](https://www.telerik.com/kendo-angular-ui/components/layout/panelbar/items)).
1198
1329
  */
1199
1330
  set items(data) {
1200
1331
  if (data) {
1201
- this._items = parsePanelBarItems(data);
1332
+ this._items.set(parsePanelBarItems(data));
1333
+ }
1334
+ if (this.childrenItems) {
1335
+ setTimeout(this.updateChildrenHeight);
1202
1336
  }
1203
1337
  }
1204
1338
  get items() {
1205
- return this._items;
1339
+ return this._items();
1206
1340
  }
1207
1341
  /**
1208
1342
  * Fires when the state of the PanelBar changes.
@@ -1262,8 +1396,12 @@ class PanelBarComponent {
1262
1396
  childrenItems;
1263
1397
  isViewInit = true;
1264
1398
  focused = false;
1265
- _items;
1266
- _keepItemContent = false;
1399
+ _expandMode = signal(PanelBarExpandMode.Default, ...(ngDevMode ? [{ debugName: "_expandMode" }] : []));
1400
+ _selectable = signal(true, ...(ngDevMode ? [{ debugName: "_selectable" }] : []));
1401
+ _animate = signal(true, ...(ngDevMode ? [{ debugName: "_animate" }] : []));
1402
+ _height = signal('400px', ...(ngDevMode ? [{ debugName: "_height" }] : []));
1403
+ _items = signal(undefined, ...(ngDevMode ? [{ debugName: "_items" }] : []));
1404
+ _keepItemContent = signal(false, ...(ngDevMode ? [{ debugName: "_keepItemContent" }] : []));
1267
1405
  elementRef;
1268
1406
  eventService;
1269
1407
  keyBindings;
@@ -1321,19 +1459,6 @@ class PanelBarComponent {
1321
1459
  }
1322
1460
  this.validateConfiguration();
1323
1461
  }
1324
- ngOnChanges(changes) {
1325
- if (changes['height'] || changes['expandMode'] || changes['items']) {
1326
- if (this.childrenItems) {
1327
- setTimeout(this.updateChildrenHeight);
1328
- }
1329
- }
1330
- if (changes['animate']) {
1331
- this.eventService.animate = this.animate;
1332
- }
1333
- if (changes['expandMode']) {
1334
- this.eventService.expandMode = this.expandMode;
1335
- }
1336
- }
1337
1462
  get templateRef() {
1338
1463
  return this.template ? this.template.templateRef : undefined;
1339
1464
  }
@@ -1662,7 +1787,7 @@ class PanelBarComponent {
1662
1787
  },
1663
1788
  provideComponentName('panelbar'),
1664
1789
  { provide: KENDO_WEBMCP_HOST, useExisting: forwardRef(() => PanelBarComponent) }
1665
- ], queries: [{ propertyName: "template", first: true, predicate: PanelBarItemTemplateDirective, descendants: true }, { propertyName: "contentItems", predicate: PanelBarItemComponent, descendants: true }, { propertyName: "contentChildItems", predicate: PanelBarItemComponent }], viewQueries: [{ propertyName: "viewChildItems", predicate: PanelBarItemComponent, descendants: true }], exportAs: ["kendoPanelbar"], usesOnChanges: true, ngImport: i0, template: `
1790
+ ], queries: [{ propertyName: "template", first: true, predicate: PanelBarItemTemplateDirective, descendants: true }, { propertyName: "contentItems", predicate: PanelBarItemComponent, descendants: true }, { propertyName: "contentChildItems", predicate: PanelBarItemComponent }], viewQueries: [{ propertyName: "viewChildItems", predicate: PanelBarItemComponent, descendants: true }], exportAs: ["kendoPanelbar"], ngImport: i0, template: `
1666
1791
  @if (contentChildItems && !items) {
1667
1792
  <ng-content select="kendo-panelbar-item"></ng-content>
1668
1793
  }
@@ -1691,7 +1816,7 @@ class PanelBarComponent {
1691
1816
  @if (showLicenseWatermark) {
1692
1817
  <div kendoWatermarkOverlay [licenseMessage]="licenseMessage"></div>
1693
1818
  }
1694
- `, isInline: true, dependencies: [{ kind: "component", type: PanelBarItemComponent, selector: "kendo-panelbar-item", inputs: ["title", "id", "icon", "iconClass", "svgIcon", "imageUrl", "disabled", "expanded", "selected", "content", "items", "template"], exportAs: ["kendoPanelbarItem"] }, { kind: "component", type: WatermarkOverlayComponent, selector: "div[kendoWatermarkOverlay], kendo-watermark-overlay", inputs: ["licenseMessage"] }] });
1819
+ `, isInline: true, dependencies: [{ kind: "component", type: PanelBarItemComponent, selector: "kendo-panelbar-item", inputs: ["title", "id", "icon", "iconClass", "svgIcon", "imageUrl", "disabled", "expanded", "selected", "content", "items", "template"], exportAs: ["kendoPanelbarItem"] }, { kind: "component", type: WatermarkOverlayComponent, selector: "div[kendoWatermarkOverlay], kendo-watermark-overlay", inputs: ["licenseMessage"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1695
1820
  }
1696
1821
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: PanelBarComponent, decorators: [{
1697
1822
  type: Component,
@@ -1739,7 +1864,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
1739
1864
  }
1740
1865
  `,
1741
1866
  standalone: true,
1742
- imports: [PanelBarItemComponent, WatermarkOverlayComponent]
1867
+ imports: [PanelBarItemComponent, WatermarkOverlayComponent],
1868
+ changeDetection: ChangeDetectionStrategy.OnPush
1743
1869
  }]
1744
1870
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: PanelBarService }, { type: i1.LocalizationService }], propDecorators: { expandMode: [{
1745
1871
  type: Input
@@ -1860,9 +1986,6 @@ class SplitterService {
1860
1986
  pane.collapsed = !pane.collapsed;
1861
1987
  pane.collapsedChange.emit(pane.collapsed);
1862
1988
  this.emit(this.layoutChange, {});
1863
- if (pane.collapsed) {
1864
- pane.detectChanges();
1865
- }
1866
1989
  }
1867
1990
  this.syncPaneExpandState();
1868
1991
  return pane.collapsible;
@@ -2075,11 +2198,11 @@ class SplitterPaneComponent {
2075
2198
  * @hidden
2076
2199
  */
2077
2200
  set order(paneOrder) {
2078
- this._order = paneOrder;
2201
+ this._order.set(paneOrder);
2079
2202
  this.setOrderStyles();
2080
2203
  }
2081
2204
  get order() {
2082
- return this._order;
2205
+ return this._order();
2083
2206
  }
2084
2207
  /**
2085
2208
  * Defines the initial size of the pane.
@@ -2087,16 +2210,16 @@ class SplitterPaneComponent {
2087
2210
  * The value must be between the `min` and `max` properties.
2088
2211
  */
2089
2212
  set size(newSize) {
2090
- this._size = newSize;
2213
+ this._size.set(newSize);
2091
2214
  // Only set flex-basis if the pane is not collapsed
2092
- if (!this._collapsed) {
2215
+ if (!this._collapsed()) {
2093
2216
  this.renderer.setStyle(this.nativeElement, '-ms-flex-preferred-size', newSize);
2094
2217
  this.renderer.setStyle(this.nativeElement, 'flex-basis', newSize);
2095
2218
  }
2096
2219
  this.setStaticPaneClass();
2097
2220
  }
2098
2221
  get size() {
2099
- return this._size;
2222
+ return this._size();
2100
2223
  }
2101
2224
  /**
2102
2225
  * Defines the HTML attributes of the splitter bar.
@@ -2104,66 +2227,98 @@ class SplitterPaneComponent {
2104
2227
  * You cannot change attributes that are essential for certain functionalities.
2105
2228
  */
2106
2229
  set splitterBarAttributes(attributes) {
2107
- this._splitterBarAttributes = attributes;
2230
+ this._splitterBarAttributes.set(attributes);
2108
2231
  const splitterBar = this.splitterService.getPaneSplitterBar(this);
2109
2232
  if (splitterBar) {
2110
2233
  splitterBar.htmlAttributes = attributes;
2111
2234
  }
2112
2235
  }
2113
2236
  get splitterBarAttributes() {
2114
- return this._splitterBarAttributes;
2237
+ return this._splitterBarAttributes();
2115
2238
  }
2116
2239
  /**
2117
2240
  * Defines the CSS classes that are rendered on the splitter bar.
2118
2241
  * Supports the same values as [`ngClass`](link:site.data.urls.angular['ngclassapi']).
2119
2242
  */
2120
- splitterBarClass;
2243
+ set splitterBarClass(value) {
2244
+ this._splitterBarClass.set(value);
2245
+ }
2246
+ get splitterBarClass() {
2247
+ return this._splitterBarClass();
2248
+ }
2121
2249
  /**
2122
2250
  * Defines the minimum possible size of the pane.
2123
2251
  * Accepts values in pixels and percentages.
2124
2252
  */
2125
- min;
2253
+ set min(value) {
2254
+ this._min.set(value);
2255
+ }
2256
+ get min() {
2257
+ return this._min();
2258
+ }
2126
2259
  /**
2127
2260
  * Defines the maximum possible size of the pane.
2128
2261
  * Accepts values in pixels and percentages.
2129
2262
  */
2130
- max;
2263
+ set max(value) {
2264
+ this._max.set(value);
2265
+ }
2266
+ get max() {
2267
+ return this._max();
2268
+ }
2131
2269
  /**
2132
2270
  * Determines if you can resize the pane and provide space for other panes.
2133
2271
  *
2134
2272
  * @default true
2135
2273
  */
2136
- resizable = true;
2274
+ set resizable(value) {
2275
+ this._resizable.set(value);
2276
+ this.setStaticPaneClass();
2277
+ }
2278
+ get resizable() {
2279
+ return this._resizable();
2280
+ }
2137
2281
  /**
2138
2282
  * Determines if you can hide the pane and provide space for other panes.
2139
2283
  *
2140
2284
  * @default false
2141
2285
  */
2142
- collapsible = false;
2286
+ set collapsible(value) {
2287
+ this._collapsible.set(value);
2288
+ this.setStaticPaneClass();
2289
+ }
2290
+ get collapsible() {
2291
+ return this._collapsible();
2292
+ }
2143
2293
  /**
2144
2294
  * Determines if overflowing content is scrollable or hidden.
2145
2295
  *
2146
2296
  * @default true
2147
2297
  */
2148
- scrollable = true;
2298
+ set scrollable(value) {
2299
+ this._scrollable.set(value);
2300
+ }
2301
+ get scrollable() {
2302
+ return this._scrollable();
2303
+ }
2149
2304
  /**
2150
2305
  * Determines if the pane is initially collapsed.
2151
2306
  *
2152
2307
  * @default false
2153
2308
  */
2154
2309
  set collapsed(value) {
2155
- const hasChanged = this._collapsed !== value;
2156
- this._collapsed = value;
2310
+ const hasChanged = this._collapsed() !== value;
2311
+ this._collapsed.set(value);
2157
2312
  if (hasChanged && this.nativeElement) {
2158
- if (this._collapsed) {
2313
+ if (this._collapsed()) {
2159
2314
  // When collapsing, clear the flex-basis to allow other panes to expand
2160
2315
  this.renderer.setStyle(this.nativeElement, '-ms-flex-preferred-size', '0');
2161
2316
  this.renderer.setStyle(this.nativeElement, 'flex-basis', '0');
2162
2317
  }
2163
- else if (this._size) {
2318
+ else if (this._size()) {
2164
2319
  // When expanding, restore the size if it was set
2165
- this.renderer.setStyle(this.nativeElement, '-ms-flex-preferred-size', this._size);
2166
- this.renderer.setStyle(this.nativeElement, 'flex-basis', this._size);
2320
+ this.renderer.setStyle(this.nativeElement, '-ms-flex-preferred-size', this._size());
2321
+ this.renderer.setStyle(this.nativeElement, 'flex-basis', this._size());
2167
2322
  }
2168
2323
  // Trigger the same forceExpand logic that tryToggle does
2169
2324
  // This ensures remaining panes expand when a pane is collapsed
@@ -2173,16 +2328,22 @@ class SplitterPaneComponent {
2173
2328
  }
2174
2329
  }
2175
2330
  get collapsed() {
2176
- return this._collapsed;
2331
+ return this._collapsed();
2177
2332
  }
2178
2333
  /**
2179
2334
  * @hidden
2180
2335
  */
2181
- orientation = 'horizontal';
2336
+ set orientation(value) {
2337
+ this._orientation.set(value);
2338
+ }
2339
+ get orientation() {
2340
+ return this._orientation();
2341
+ }
2182
2342
  /**
2183
2343
  * @hidden
2184
2344
  */
2185
2345
  set containsSplitter(value) {
2346
+ this._containsSplitter.set(value);
2186
2347
  if (value) {
2187
2348
  this.renderer.addClass(this.nativeElement, 'k-pane-flex');
2188
2349
  }
@@ -2190,10 +2351,18 @@ class SplitterPaneComponent {
2190
2351
  this.renderer.removeClass(this.nativeElement, 'k-pane-flex');
2191
2352
  }
2192
2353
  }
2354
+ get containsSplitter() {
2355
+ return this._containsSplitter();
2356
+ }
2193
2357
  /**
2194
2358
  * @hidden
2195
2359
  */
2196
- overlayContent = false;
2360
+ set overlayContent(value) {
2361
+ this._overlayContent.set(value);
2362
+ }
2363
+ get overlayContent() {
2364
+ return this._overlayContent();
2365
+ }
2197
2366
  /**
2198
2367
  * Fires when the Splitter pane size changes.
2199
2368
  * The event data contains the new pane size.
@@ -2221,10 +2390,10 @@ class SplitterPaneComponent {
2221
2390
  * @hidden
2222
2391
  */
2223
2392
  set forceExpand(value) {
2224
- if (this._forceExpand === value) {
2393
+ if (this._forceExpand() === value) {
2225
2394
  return;
2226
2395
  }
2227
- this._forceExpand = value;
2396
+ this._forceExpand.set(value);
2228
2397
  // Enforce min/max constraints during flex redistribution so panes
2229
2398
  // do not exceed their bounds when absorbing a collapsed pane's space.
2230
2399
  const sizeProp = this.orientation === 'vertical' ? 'height' : 'width';
@@ -2246,17 +2415,26 @@ class SplitterPaneComponent {
2246
2415
  }
2247
2416
  }
2248
2417
  get forceExpand() {
2249
- return this._forceExpand;
2418
+ return this._forceExpand();
2250
2419
  }
2251
2420
  /**
2252
2421
  * @hidden
2253
2422
  */
2254
2423
  isResized = false;
2255
- _size;
2256
- _order;
2257
- _splitterBarAttributes;
2258
- _collapsed = false;
2259
- _forceExpand = false;
2424
+ _size = signal(undefined, ...(ngDevMode ? [{ debugName: "_size" }] : []));
2425
+ _order = signal(undefined, ...(ngDevMode ? [{ debugName: "_order" }] : []));
2426
+ _splitterBarAttributes = signal(undefined, ...(ngDevMode ? [{ debugName: "_splitterBarAttributes" }] : []));
2427
+ _splitterBarClass = signal(undefined, ...(ngDevMode ? [{ debugName: "_splitterBarClass" }] : []));
2428
+ _min = signal(undefined, ...(ngDevMode ? [{ debugName: "_min" }] : []));
2429
+ _max = signal(undefined, ...(ngDevMode ? [{ debugName: "_max" }] : []));
2430
+ _collapsed = signal(false, ...(ngDevMode ? [{ debugName: "_collapsed" }] : []));
2431
+ _forceExpand = signal(false, ...(ngDevMode ? [{ debugName: "_forceExpand" }] : []));
2432
+ _resizable = signal(true, ...(ngDevMode ? [{ debugName: "_resizable" }] : []));
2433
+ _collapsible = signal(false, ...(ngDevMode ? [{ debugName: "_collapsible" }] : []));
2434
+ _scrollable = signal(true, ...(ngDevMode ? [{ debugName: "_scrollable" }] : []));
2435
+ _orientation = signal('horizontal', ...(ngDevMode ? [{ debugName: "_orientation" }] : []));
2436
+ _containsSplitter = signal(false, ...(ngDevMode ? [{ debugName: "_containsSplitter" }] : []));
2437
+ _overlayContent = signal(false, ...(ngDevMode ? [{ debugName: "_overlayContent" }] : []));
2260
2438
  constructor(element, renderer, cdr, splitterService) {
2261
2439
  this.element = element;
2262
2440
  this.renderer = renderer;
@@ -2274,11 +2452,6 @@ class SplitterPaneComponent {
2274
2452
  }
2275
2453
  this.setStaticPaneClass();
2276
2454
  }
2277
- ngOnChanges(changes) {
2278
- if (anyChanged(['resizable', 'collapsible'], changes)) {
2279
- this.setStaticPaneClass();
2280
- }
2281
- }
2282
2455
  /**
2283
2456
  * @hidden
2284
2457
  */
@@ -2300,8 +2473,7 @@ class SplitterPaneComponent {
2300
2473
  * @hidden
2301
2474
  */
2302
2475
  toggleOverlay(show) {
2303
- this.overlayContent = show;
2304
- this.cdr.detectChanges();
2476
+ this._overlayContent.set(show);
2305
2477
  }
2306
2478
  /**
2307
2479
  * @hidden
@@ -2326,20 +2498,21 @@ class SplitterPaneComponent {
2326
2498
  }
2327
2499
  }
2328
2500
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: SplitterPaneComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: SplitterService }], target: i0.ɵɵFactoryTarget.Component });
2329
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.27", type: SplitterPaneComponent, isStandalone: true, selector: "kendo-splitter-pane", inputs: { order: "order", size: "size", splitterBarAttributes: "splitterBarAttributes", splitterBarClass: "splitterBarClass", min: "min", max: "max", resizable: "resizable", collapsible: "collapsible", scrollable: "scrollable", collapsed: "collapsed", orientation: "orientation", containsSplitter: "containsSplitter", overlayContent: "overlayContent" }, outputs: { sizeChange: "sizeChange", collapsedChange: "collapsedChange" }, host: { properties: { "attr.role": "this.ariaRole", "class.k-pane": "this.hostClass", "class.k-scrollable": "this.scrollablePaneClass" } }, exportAs: ["kendoSplitterPane"], usesOnChanges: true, ngImport: i0, template: `
2501
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.27", type: SplitterPaneComponent, isStandalone: true, selector: "kendo-splitter-pane", inputs: { order: "order", size: "size", splitterBarAttributes: "splitterBarAttributes", splitterBarClass: "splitterBarClass", min: "min", max: "max", resizable: "resizable", collapsible: "collapsible", scrollable: "scrollable", collapsed: "collapsed", orientation: "orientation", containsSplitter: "containsSplitter", overlayContent: "overlayContent" }, outputs: { sizeChange: "sizeChange", collapsedChange: "collapsedChange" }, host: { properties: { "attr.role": "this.ariaRole", "class.k-pane": "this.hostClass", "class.k-scrollable": "this.scrollablePaneClass" } }, exportAs: ["kendoSplitterPane"], ngImport: i0, template: `
2330
2502
  @if (!collapsed) {
2331
2503
  <ng-content></ng-content>
2332
2504
  }
2333
2505
  @if (overlayContent) {
2334
2506
  <div class="k-splitter-overlay k-overlay"></div>
2335
2507
  }
2336
- `, isInline: true });
2508
+ `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
2337
2509
  }
2338
2510
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: SplitterPaneComponent, decorators: [{
2339
2511
  type: Component,
2340
2512
  args: [{
2341
- exportAs: 'kendoSplitterPane',
2342
2513
  selector: 'kendo-splitter-pane',
2514
+ exportAs: 'kendoSplitterPane',
2515
+ changeDetection: ChangeDetectionStrategy.OnPush,
2343
2516
  template: `
2344
2517
  @if (!collapsed) {
2345
2518
  <ng-content></ng-content>
@@ -2413,10 +2586,11 @@ class SplitterBarComponent {
2413
2586
  splitterService;
2414
2587
  element;
2415
2588
  renderer;
2416
- cdr;
2417
2589
  ariaRole = 'separator';
2418
2590
  ariaLabel = 'Splitter pane';
2419
- focused = false;
2591
+ get focused() {
2592
+ return this._focused();
2593
+ }
2420
2594
  get hostOrientation() {
2421
2595
  return this.orientation === 'horizontal' ? 'vertical' : null;
2422
2596
  }
@@ -2443,23 +2617,36 @@ class SplitterBarComponent {
2443
2617
  get order() {
2444
2618
  return 2 * this.index + 1;
2445
2619
  }
2446
- orientation = 'horizontal';
2447
- index = 0;
2620
+ set orientation(value) {
2621
+ this._orientation.set(value);
2622
+ }
2623
+ get orientation() {
2624
+ return this._orientation();
2625
+ }
2626
+ set index(value) {
2627
+ this._index.set(value);
2628
+ }
2629
+ get index() {
2630
+ return this._index();
2631
+ }
2448
2632
  set htmlAttributes(attributes) {
2449
2633
  if (isObjectPresent(this.parsedAttributes)) {
2450
2634
  removeHTMLAttributes(this.parsedAttributes, this.renderer, this.element.nativeElement);
2451
2635
  }
2452
- this._htmlAttributes = attributes;
2453
- this.parsedAttributes = this.htmlAttributes ?
2454
- parseAttributes(this.htmlAttributes, this.defaultAttributes) :
2455
- this.htmlAttributes;
2636
+ this._htmlAttributes.set(attributes);
2637
+ this.parsedAttributes = this._htmlAttributes() ?
2638
+ parseAttributes(this._htmlAttributes(), this.defaultAttributes) :
2639
+ this._htmlAttributes();
2456
2640
  this.setHtmlAttributes();
2457
2641
  }
2458
2642
  get htmlAttributes() {
2459
- return this._htmlAttributes;
2643
+ return this._htmlAttributes();
2460
2644
  }
2461
2645
  subscriptions = new Subscription();
2462
- _htmlAttributes;
2646
+ _htmlAttributes = signal(null, ...(ngDevMode ? [{ debugName: "_htmlAttributes" }] : []));
2647
+ _orientation = signal('horizontal', ...(ngDevMode ? [{ debugName: "_orientation" }] : []));
2648
+ _index = signal(0, ...(ngDevMode ? [{ debugName: "_index" }] : []));
2649
+ _focused = signal(false, ...(ngDevMode ? [{ debugName: "_focused" }] : []));
2463
2650
  parsedAttributes = {};
2464
2651
  get defaultAttributes() {
2465
2652
  return {
@@ -2470,13 +2657,12 @@ class SplitterBarComponent {
2470
2657
  get mutableAttributes() {
2471
2658
  return { 'tabindex': this.tabIndex };
2472
2659
  }
2473
- constructor(draggable, localization, splitterService, element, renderer, cdr) {
2660
+ constructor(draggable, localization, splitterService, element, renderer) {
2474
2661
  this.draggable = draggable;
2475
2662
  this.localization = localization;
2476
2663
  this.splitterService = splitterService;
2477
2664
  this.element = element;
2478
2665
  this.renderer = renderer;
2479
- this.cdr = cdr;
2480
2666
  }
2481
2667
  ngOnInit() {
2482
2668
  let state;
@@ -2497,8 +2683,8 @@ class SplitterBarComponent {
2497
2683
  this.subscriptions.add(this.draggable.kendoRelease.subscribe(() => this.splitterService.toggleContentOverlay(this.index, false)));
2498
2684
  const element = this.element.nativeElement;
2499
2685
  this.subscriptions.add(this.renderer.listen(element, 'keydown', event => this.onKeyDown(event)));
2500
- this.subscriptions.add(this.renderer.listen(element, 'focusin', () => this.focused = true));
2501
- this.subscriptions.add(this.renderer.listen(element, 'focusout', () => this.focused = false));
2686
+ this.subscriptions.add(this.renderer.listen(element, 'focusin', () => this._focused.set(true)));
2687
+ this.subscriptions.add(this.renderer.listen(element, 'focusout', () => this._focused.set(false)));
2502
2688
  this.subscriptions.add(this.renderer.listen(element, 'dblclick', () => this.togglePane()));
2503
2689
  }
2504
2690
  ngOnDestroy() {
@@ -2594,7 +2780,6 @@ class SplitterBarComponent {
2594
2780
  else {
2595
2781
  this.tryToggleNearest();
2596
2782
  }
2597
- this.cdr.markForCheck();
2598
2783
  }
2599
2784
  get expandLast() {
2600
2785
  const panes = this.splitterService.panes;
@@ -2628,7 +2813,7 @@ class SplitterBarComponent {
2628
2813
  const attributesToRender = { ...this.mutableAttributes, ...this.parsedAttributes };
2629
2814
  setHTMLAttributes(attributesToRender, this.renderer, this.element.nativeElement);
2630
2815
  }
2631
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: SplitterBarComponent, deps: [{ token: i1$1.DraggableDirective, host: true }, { token: i1.LocalizationService }, { token: SplitterService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
2816
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: SplitterBarComponent, deps: [{ token: i1$1.DraggableDirective, host: true }, { token: i1.LocalizationService }, { token: SplitterService }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
2632
2817
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.27", type: SplitterBarComponent, isStandalone: true, selector: "kendo-splitter-bar", inputs: { orientation: "orientation", index: "index", htmlAttributes: "htmlAttributes" }, host: { properties: { "attr.role": "this.ariaRole", "attr.aria-label": "this.ariaLabel", "class.k-focus": "this.focused", "attr.aria-orientation": "this.hostOrientation", "attr.aria-keyshortcuts": "this.ariaKeyShortcuts", "attr.tabindex": "this.tabIndex", "class": "this.hostClasses", "style.-ms-flex-order": "this.order", "style.order": "this.order" } }, ngImport: i0, template: `
2633
2818
  @if (shouldShowIcon('prev')) {
2634
2819
  <div class="k-collapse-prev" (click)="togglePrevious()">
@@ -2649,12 +2834,13 @@ class SplitterBarComponent {
2649
2834
  ></kendo-icon-wrapper>
2650
2835
  </div>
2651
2836
  }
2652
- `, isInline: true, dependencies: [{ kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }] });
2837
+ `, isInline: true, dependencies: [{ kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2653
2838
  }
2654
2839
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: SplitterBarComponent, decorators: [{
2655
2840
  type: Component,
2656
2841
  args: [{
2657
2842
  selector: 'kendo-splitter-bar',
2843
+ changeDetection: ChangeDetectionStrategy.OnPush,
2658
2844
  template: `
2659
2845
  @if (shouldShowIcon('prev')) {
2660
2846
  <div class="k-collapse-prev" (click)="togglePrevious()">
@@ -2681,7 +2867,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
2681
2867
  }]
2682
2868
  }], ctorParameters: () => [{ type: i1$1.DraggableDirective, decorators: [{
2683
2869
  type: Host
2684
- }] }, { type: i1.LocalizationService }, { type: SplitterService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }], propDecorators: { ariaRole: [{
2870
+ }] }, { type: i1.LocalizationService }, { type: SplitterService }, { type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { ariaRole: [{
2685
2871
  type: HostBinding,
2686
2872
  args: ['attr.role']
2687
2873
  }], ariaLabel: [{
@@ -2740,6 +2926,7 @@ class SplitterComponent {
2740
2926
  localization;
2741
2927
  renderer;
2742
2928
  ngZone;
2929
+ cdr;
2743
2930
  enclosingPane;
2744
2931
  /**
2745
2932
  * Defines the orientation of the panes within the Splitter.
@@ -2747,12 +2934,22 @@ class SplitterComponent {
2747
2934
  *
2748
2935
  * @default 'horizontal'
2749
2936
  */
2750
- orientation = 'horizontal';
2937
+ set orientation(value) {
2938
+ this._orientation.set(value);
2939
+ }
2940
+ get orientation() {
2941
+ return this._orientation();
2942
+ }
2751
2943
  /**
2752
2944
  * Defines the width or height of the Splitter splitbars in pixels.
2753
2945
  * The dimension depends on the orientation of the Splitter.
2754
2946
  */
2755
- splitbarWidth;
2947
+ set splitbarWidth(value) {
2948
+ this._splitbarWidth.set(value);
2949
+ }
2950
+ get splitbarWidth() {
2951
+ return this._splitbarWidth();
2952
+ }
2756
2953
  /**
2757
2954
  * Defines the distance in pixels that you move the separator during keyboard navigation.
2758
2955
  *
@@ -2768,7 +2965,12 @@ class SplitterComponent {
2768
2965
  * Defines the CSS classes that are rendered on the splitter bars.
2769
2966
  * Supports the same values as [`ngClass`](link:site.data.urls.angular['ngclassapi']).
2770
2967
  */
2771
- splitterBarClass;
2968
+ set splitterBarClass(value) {
2969
+ this._splitterBarClass.set(value);
2970
+ }
2971
+ get splitterBarClass() {
2972
+ return this._splitterBarClass();
2973
+ }
2772
2974
  /**
2773
2975
  * Fires when the layout of the Splitter changes.
2774
2976
  * Use this event to trigger layout calculations on components that are positioned inside the panes.
@@ -2811,14 +3013,18 @@ class SplitterComponent {
2811
3013
  * @hidden
2812
3014
  */
2813
3015
  panes;
3016
+ _orientation = signal('horizontal', ...(ngDevMode ? [{ debugName: "_orientation" }] : []));
3017
+ _splitbarWidth = signal(undefined, ...(ngDevMode ? [{ debugName: "_splitbarWidth" }] : []));
3018
+ _splitterBarClass = signal(undefined, ...(ngDevMode ? [{ debugName: "_splitterBarClass" }] : []));
2814
3019
  paneChangesSubscription;
2815
3020
  _styleObserver;
2816
- constructor(element, splitterService, localization, renderer, ngZone, enclosingPane) {
3021
+ constructor(element, splitterService, localization, renderer, ngZone, cdr, enclosingPane) {
2817
3022
  this.element = element;
2818
3023
  this.splitterService = splitterService;
2819
3024
  this.localization = localization;
2820
3025
  this.renderer = renderer;
2821
3026
  this.ngZone = ngZone;
3027
+ this.cdr = cdr;
2822
3028
  this.enclosingPane = enclosingPane;
2823
3029
  validatePackage(packageMetadata);
2824
3030
  if (enclosingPane) {
@@ -2889,6 +3095,7 @@ class SplitterComponent {
2889
3095
  },
2890
3096
  direction: this.direction
2891
3097
  });
3098
+ this.cdr.markForCheck();
2892
3099
  }
2893
3100
  get direction() {
2894
3101
  return this.localization.rtl ? 'rtl' : 'ltr';
@@ -2896,7 +3103,7 @@ class SplitterComponent {
2896
3103
  setFixedHeight() {
2897
3104
  this.splitterService.fixedHeight = getComputedStyle(this.element.nativeElement).getPropertyValue('height') !== 'auto';
2898
3105
  }
2899
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: SplitterComponent, deps: [{ token: i0.ElementRef }, { token: SplitterService }, { token: i1.LocalizationService }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: SplitterPaneComponent, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Component });
3106
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: SplitterComponent, deps: [{ token: i0.ElementRef }, { token: SplitterService }, { token: i1.LocalizationService }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: SplitterPaneComponent, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Component });
2900
3107
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.27", type: SplitterComponent, isStandalone: true, selector: "kendo-splitter", inputs: { orientation: "orientation", splitbarWidth: "splitbarWidth", resizeStep: "resizeStep", splitterBarClass: "splitterBarClass" }, outputs: { layoutChange: "layoutChange" }, host: { properties: { "class.k-splitter": "this.hostClasses", "class.k-splitter-flex": "this.hostClasses", "class.k-splitter-horizontal": "this.horizontalHostClasses", "class.k-splitter-vertical": "this.verticalHostClasses", "attr.dir": "this.dir" } }, providers: [
2901
3108
  SplitterService,
2902
3109
  LocalizationService,
@@ -2923,13 +3130,14 @@ class SplitterComponent {
2923
3130
  </kendo-splitter-bar>
2924
3131
  }
2925
3132
  }
2926
- `, isInline: true, dependencies: [{ kind: "component", type: SplitterBarComponent, selector: "kendo-splitter-bar", inputs: ["orientation", "index", "htmlAttributes"] }, { kind: "directive", type: DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
3133
+ `, isInline: true, dependencies: [{ kind: "component", type: SplitterBarComponent, selector: "kendo-splitter-bar", inputs: ["orientation", "index", "htmlAttributes"] }, { kind: "directive", type: DraggableDirective, selector: "[kendoDraggable]", inputs: ["enableDrag"], outputs: ["kendoPress", "kendoDrag", "kendoRelease"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2927
3134
  }
2928
3135
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: SplitterComponent, decorators: [{
2929
3136
  type: Component,
2930
3137
  args: [{
2931
- exportAs: 'kendoSplitter',
2932
3138
  selector: 'kendo-splitter',
3139
+ exportAs: 'kendoSplitter',
3140
+ changeDetection: ChangeDetectionStrategy.OnPush,
2933
3141
  providers: [
2934
3142
  SplitterService,
2935
3143
  LocalizationService,
@@ -2961,7 +3169,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
2961
3169
  standalone: true,
2962
3170
  imports: [SplitterBarComponent, DraggableDirective, NgStyle, NgClass]
2963
3171
  }]
2964
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: SplitterService }, { type: i1.LocalizationService }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: SplitterPaneComponent, decorators: [{
3172
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: SplitterService }, { type: i1.LocalizationService }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: SplitterPaneComponent, decorators: [{
2965
3173
  type: Optional
2966
3174
  }, {
2967
3175
  type: Host
@@ -3105,49 +3313,58 @@ class TabStripTabComponent {
3105
3313
  /**
3106
3314
  * Sets the title text for the tab ([see example](https://www.telerik.com/kendo-angular-ui/components/layout/tabstrip/tabs#tab-titles)).
3107
3315
  */
3108
- title;
3316
+ set title(value) { this._title.set(value); }
3317
+ get title() { return this._title(); }
3109
3318
  /**
3110
3319
  * Disables the tab and prevents user interaction ([see example](https://www.telerik.com/kendo-angular-ui/components/layout/tabstrip/tabs#disabled-tabs)).
3111
3320
  *
3112
3321
  * @default false
3113
3322
  */
3114
- disabled = false;
3323
+ set disabled(value) { this._disabled.set(value); }
3324
+ get disabled() { return this._disabled(); }
3115
3325
  /**
3116
3326
  * Specifies the CSS classes to apply to the `tab` element.
3117
3327
  * Accepts the same values as [`ngClass`](link:site.data.urls.angular['ngclassapi']).
3118
3328
  */
3119
- cssClass;
3329
+ set cssClass(value) { this._cssClass.set(value); }
3330
+ get cssClass() { return this._cssClass(); }
3120
3331
  /**
3121
3332
  * Specifies the CSS styles to apply to the `tab` element.
3122
3333
  * Accepts the same values as [`ngStyle`](link:site.data.urls.angular['ngstyleapi']).
3123
3334
  */
3124
- cssStyle;
3335
+ set cssStyle(value) { this._cssStyle.set(value); }
3336
+ get cssStyle() { return this._cssStyle(); }
3125
3337
  /**
3126
3338
  * Selects the tab when the TabStrip loads
3127
3339
  * ([see example](https://www.telerik.com/kendo-angular-ui/components/layout/tabstrip/tabs#selected-tab)).
3128
3340
  */
3129
- selected;
3341
+ set selected(value) { this._selected.set(value); }
3342
+ get selected() { return this._selected(); }
3130
3343
  /**
3131
3344
  * Shows a close button inside the tab when set to `true`.
3132
3345
  * This setting overrides the TabStrip `closable` option.
3133
3346
  */
3134
- closable;
3347
+ set closable(value) { this._closable.set(value); }
3348
+ get closable() { return this._closable(); }
3135
3349
  /**
3136
3350
  * Sets the name of an existing font icon in the Kendo UI theme for the close button.
3137
3351
  * This setting overrides the TabStrip `closeIcon` option.
3138
3352
  */
3139
- closeIcon;
3353
+ set closeIcon(value) { this._closeIcon.set(value); }
3354
+ get closeIcon() { return this._closeIcon(); }
3140
3355
  /**
3141
3356
  * Sets custom CSS classes for the close button icon.
3142
3357
  * You can define a single class or multiple classes separated by spaces.
3143
3358
  * This setting overrides the TabStrip `closeIcon` option.
3144
3359
  */
3145
- closeIconClass;
3360
+ set closeIconClass(value) { this._closeIconClass.set(value); }
3361
+ get closeIconClass() { return this._closeIconClass(); }
3146
3362
  /**
3147
3363
  * Sets an SVG icon for the close button.
3148
3364
  * You can use an [existing Kendo SVG icon](https://www.telerik.com/kendo-angular-ui/components/icons/svgicon/svgicon-list) or provide a custom one.
3149
3365
  */
3150
- closeSVGIcon;
3366
+ set closeSVGIcon(value) { this._closeSVGIcon.set(value); }
3367
+ get closeSVGIcon() { return this._closeSVGIcon(); }
3151
3368
  get tabContent() {
3152
3369
  return this._tabContent.first;
3153
3370
  }
@@ -3161,21 +3378,33 @@ class TabStripTabComponent {
3161
3378
  _tabContent = new QueryList();
3162
3379
  // guards against nested tabstrip components; `descendants` is not defined by default;
3163
3380
  _tabTitleDirective;
3381
+ _title = signal(undefined, ...(ngDevMode ? [{ debugName: "_title" }] : []));
3382
+ _disabled = signal(false, ...(ngDevMode ? [{ debugName: "_disabled" }] : []));
3383
+ _cssClass = signal(undefined, ...(ngDevMode ? [{ debugName: "_cssClass" }] : []));
3384
+ _cssStyle = signal(undefined, ...(ngDevMode ? [{ debugName: "_cssStyle" }] : []));
3385
+ _selected = signal(undefined, ...(ngDevMode ? [{ debugName: "_selected" }] : []));
3386
+ _closable = signal(undefined, ...(ngDevMode ? [{ debugName: "_closable" }] : []));
3387
+ _closeIcon = signal(undefined, ...(ngDevMode ? [{ debugName: "_closeIcon" }] : []));
3388
+ _closeIconClass = signal(undefined, ...(ngDevMode ? [{ debugName: "_closeIconClass" }] : []));
3389
+ _closeSVGIcon = signal(undefined, ...(ngDevMode ? [{ debugName: "_closeSVGIcon" }] : []));
3164
3390
  /**
3165
3391
  * @hidden
3166
3392
  *
3167
3393
  * Currently only disabled tabs can be focused. Otherwise they will be
3168
3394
  * immediately selected
3169
3395
  */
3170
- focused = false;
3396
+ set focused(value) { this._focused.set(value); }
3397
+ get focused() { return this._focused(); }
3398
+ _focused = signal(false, ...(ngDevMode ? [{ debugName: "_focused" }] : []));
3171
3399
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: TabStripTabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3172
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.27", type: TabStripTabComponent, isStandalone: true, selector: "kendo-tabstrip-tab", inputs: { title: "title", disabled: "disabled", cssClass: "cssClass", cssStyle: "cssStyle", selected: "selected", closable: "closable", closeIcon: "closeIcon", closeIconClass: "closeIconClass", closeSVGIcon: "closeSVGIcon" }, queries: [{ propertyName: "_tabDirective", predicate: TabTemplateDirective }, { propertyName: "_tabContent", predicate: TabContentDirective }, { propertyName: "_tabTitleDirective", predicate: TabTitleDirective }], exportAs: ["kendoTabStripTab"], ngImport: i0, template: ``, isInline: true });
3400
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.27", type: TabStripTabComponent, isStandalone: true, selector: "kendo-tabstrip-tab", inputs: { title: "title", disabled: "disabled", cssClass: "cssClass", cssStyle: "cssStyle", selected: "selected", closable: "closable", closeIcon: "closeIcon", closeIconClass: "closeIconClass", closeSVGIcon: "closeSVGIcon" }, queries: [{ propertyName: "_tabDirective", predicate: TabTemplateDirective }, { propertyName: "_tabContent", predicate: TabContentDirective }, { propertyName: "_tabTitleDirective", predicate: TabTitleDirective }], exportAs: ["kendoTabStripTab"], ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
3173
3401
  }
3174
3402
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: TabStripTabComponent, decorators: [{
3175
3403
  type: Component,
3176
3404
  args: [{
3177
- exportAs: 'kendoTabStripTab',
3178
3405
  selector: 'kendo-tabstrip-tab',
3406
+ exportAs: 'kendoTabStripTab',
3407
+ changeDetection: ChangeDetectionStrategy.OnPush,
3179
3408
  template: ``,
3180
3409
  standalone: true
3181
3410
  }]
@@ -3756,9 +3985,12 @@ class TabStripScrollableButtonComponent {
3756
3985
  get nextClass() {
3757
3986
  return !this.prev;
3758
3987
  }
3759
- prev = false;
3760
- tabPosition;
3761
- scrollable;
3988
+ set prev(value) { this._prev.set(value); }
3989
+ get prev() { return this._prev(); }
3990
+ set tabPosition(value) { this._tabPosition.set(value); }
3991
+ get tabPosition() { return this._tabPosition(); }
3992
+ set scrollable(value) { this._scrollable.set(value); }
3993
+ get scrollable() { return this._scrollable(); }
3762
3994
  tabScroll = new EventEmitter();
3763
3995
  onClick = new EventEmitter();
3764
3996
  get hostBoundingClientRect() {
@@ -3778,6 +4010,9 @@ class TabStripScrollableButtonComponent {
3778
4010
  chevronUpIcon = chevronUpIcon;
3779
4011
  chevronDownIcon = chevronDownIcon;
3780
4012
  subs = new Subscription();
4013
+ _prev = signal(false, ...(ngDevMode ? [{ debugName: "_prev" }] : []));
4014
+ _tabPosition = signal(undefined, ...(ngDevMode ? [{ debugName: "_tabPosition" }] : []));
4015
+ _scrollable = signal(undefined, ...(ngDevMode ? [{ debugName: "_scrollable" }] : []));
3781
4016
  constructor(host, renderer, ngZone, localization) {
3782
4017
  this.host = host;
3783
4018
  this.renderer = renderer;
@@ -3885,7 +4120,7 @@ class TabStripScrollableButtonComponent {
3885
4120
  innerCssClass="k-button-icon"
3886
4121
  >
3887
4122
  </kendo-icon-wrapper>
3888
- `, isInline: true, dependencies: [{ kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }] });
4123
+ `, isInline: true, dependencies: [{ kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3889
4124
  }
3890
4125
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: TabStripScrollableButtonComponent, decorators: [{
3891
4126
  type: Component,
@@ -3900,6 +4135,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
3900
4135
  </kendo-icon-wrapper>
3901
4136
  `,
3902
4137
  selector: '[kendoTabStripScrollableButton]',
4138
+ changeDetection: ChangeDetectionStrategy.OnPush,
3903
4139
  standalone: true,
3904
4140
  imports: [IconWrapperComponent]
3905
4141
  }]
@@ -3929,13 +4165,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
3929
4165
  */
3930
4166
  class TabComponent {
3931
4167
  localization;
3932
- tab;
3933
- index;
3934
- tabStripClosable;
3935
- tabStripCloseIcon;
3936
- customTabstripCloseIcon;
3937
- closeSVGIcon;
4168
+ set tab(value) { this._tab.set(value); }
4169
+ get tab() { return this._tab(); }
4170
+ set index(value) { this._index.set(value); }
4171
+ get index() { return this._index(); }
4172
+ set tabStripClosable(value) { this._tabStripClosable.set(value); }
4173
+ get tabStripClosable() { return this._tabStripClosable(); }
4174
+ set tabStripCloseIcon(value) { this._tabStripCloseIcon.set(value); }
4175
+ get tabStripCloseIcon() { return this._tabStripCloseIcon(); }
4176
+ set customTabstripCloseIcon(value) { this._customTabstripCloseIcon.set(value); }
4177
+ get customTabstripCloseIcon() { return this._customTabstripCloseIcon(); }
4178
+ set closeSVGIcon(value) { this._closeSVGIcon.set(value); }
4179
+ get closeSVGIcon() { return this._closeSVGIcon(); }
3938
4180
  tabClose = new EventEmitter();
4181
+ _tab = signal(undefined, ...(ngDevMode ? [{ debugName: "_tab" }] : []));
4182
+ _index = signal(undefined, ...(ngDevMode ? [{ debugName: "_index" }] : []));
4183
+ _tabStripClosable = signal(undefined, ...(ngDevMode ? [{ debugName: "_tabStripClosable" }] : []));
4184
+ _tabStripCloseIcon = signal(undefined, ...(ngDevMode ? [{ debugName: "_tabStripCloseIcon" }] : []));
4185
+ _customTabstripCloseIcon = signal(undefined, ...(ngDevMode ? [{ debugName: "_customTabstripCloseIcon" }] : []));
4186
+ _closeSVGIcon = signal(undefined, ...(ngDevMode ? [{ debugName: "_closeSVGIcon" }] : []));
3939
4187
  hostClasses = true;
3940
4188
  get activeClass() {
3941
4189
  return this.tab.selected || null;
@@ -4020,12 +4268,13 @@ class TabComponent {
4020
4268
  innerCssClass="k-button-icon" [customFontClass]="customCloseIconClasses"></kendo-icon-wrapper>
4021
4269
  </span>
4022
4270
  }
4023
- `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }] });
4271
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
4024
4272
  }
4025
4273
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: TabComponent, decorators: [{
4026
4274
  type: Component,
4027
4275
  args: [{
4028
4276
  selector: '[kendoTabStripTab]',
4277
+ changeDetection: ChangeDetectionStrategy.OnPush,
4029
4278
  template: `
4030
4279
  @if (!tab.tabTemplate) {
4031
4280
  @if (!tab.tabTitle) {
@@ -4100,15 +4349,33 @@ class TabStripMessages extends ComponentMessages {
4100
4349
  /**
4101
4350
  * Sets the title for the **Close** button in the TabStrip tab.
4102
4351
  */
4103
- closeTitle;
4352
+ set closeTitle(value) {
4353
+ this._closeTitle.set(value);
4354
+ }
4355
+ get closeTitle() {
4356
+ return this._closeTitle();
4357
+ }
4104
4358
  /**
4105
4359
  * Sets the title for the **Previous Tab** button when the TabStrip is scrollable.
4106
4360
  */
4107
- previousTabButton;
4361
+ set previousTabButton(value) {
4362
+ this._previousTabButton.set(value);
4363
+ }
4364
+ get previousTabButton() {
4365
+ return this._previousTabButton();
4366
+ }
4108
4367
  /**
4109
4368
  * Sets the title for the **Next Tab** button when the TabStrip is scrollable.
4110
4369
  */
4111
- nextTabButton;
4370
+ set nextTabButton(value) {
4371
+ this._nextTabButton.set(value);
4372
+ }
4373
+ get nextTabButton() {
4374
+ return this._nextTabButton();
4375
+ }
4376
+ _closeTitle = signal(undefined, ...(ngDevMode ? [{ debugName: "_closeTitle" }] : []));
4377
+ _previousTabButton = signal(undefined, ...(ngDevMode ? [{ debugName: "_previousTabButton" }] : []));
4378
+ _nextTabButton = signal(undefined, ...(ngDevMode ? [{ debugName: "_nextTabButton" }] : []));
4112
4379
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: TabStripMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });
4113
4380
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.27", type: TabStripMessages, isStandalone: true, selector: "kendo-tabstrip-messages-base", inputs: { closeTitle: "closeTitle", previousTabButton: "previousTabButton", nextTabButton: "nextTabButton" }, usesInheritance: true, ngImport: i0 });
4114
4381
  }
@@ -4184,35 +4451,40 @@ class TabStripComponent {
4184
4451
  tabstripService;
4185
4452
  scrollService;
4186
4453
  ngZone;
4454
+ injector;
4455
+ cdr;
4187
4456
  /**
4188
4457
  * Sets the height of the TabStrip.
4189
4458
  * Accepts a CSS size value, such as `100px`, `50%`, or `auto`.
4190
4459
  */
4191
4460
  set height(value) {
4192
- this._height = value;
4461
+ this._height.set(value);
4193
4462
  this.renderer.setStyle(this.wrapper.nativeElement, 'height', value);
4194
4463
  }
4195
4464
  get height() {
4196
- return this._height;
4465
+ return this._height();
4197
4466
  }
4198
4467
  /**
4199
4468
  * Sets whether the TabStrip should animate when switching tabs.
4200
4469
  *
4201
4470
  * @default true
4202
4471
  */
4203
- animate = true;
4472
+ set animate(value) { this._animate.set(value); }
4473
+ get animate() { return this._animate(); }
4204
4474
  /**
4205
4475
  * Sets the alignment of the tabs.
4206
4476
  *
4207
4477
  * @default 'start'
4208
4478
  */
4209
- tabAlignment = 'start';
4479
+ set tabAlignment(value) { this._tabAlignment.set(value); }
4480
+ get tabAlignment() { return this._tabAlignment(); }
4210
4481
  /**
4211
4482
  * Sets the position of the tabs.
4212
4483
  *
4213
4484
  * @default 'top'
4214
4485
  */
4215
- tabPosition = 'top';
4486
+ set tabPosition(value) { this._tabPosition.set(value); }
4487
+ get tabPosition() { return this._tabPosition(); }
4216
4488
  /**
4217
4489
  * Controls how the TabStrip renders tab content.
4218
4490
  *
@@ -4226,13 +4498,15 @@ class TabStripComponent {
4226
4498
  *
4227
4499
  * @default false
4228
4500
  */
4229
- keepTabContent = false;
4501
+ set keepTabContent(value) { this._keepTabContent.set(value); }
4502
+ get keepTabContent() { return this._keepTabContent(); }
4230
4503
  /**
4231
4504
  * When set to `true`, renders a close button inside each tab.
4232
4505
  *
4233
4506
  * @default false
4234
4507
  */
4235
- closable = false;
4508
+ set closable(value) { this._closable.set(value); }
4509
+ get closable() { return this._closable(); }
4236
4510
  /**
4237
4511
  * Enables scrolling of the tab list.
4238
4512
  * When set to `true` and the total size of all tabs exceeds the size of the TabStrip container, scroll buttons appear on each end of the tab list.
@@ -4240,7 +4514,7 @@ class TabStripComponent {
4240
4514
  * @default false
4241
4515
  */
4242
4516
  set scrollable(value) {
4243
- this._scrollableSettings = normalizeScrollableSettings(value);
4517
+ this._scrollableSettings.set(normalizeScrollableSettings(value));
4244
4518
  if (this.tablist) {
4245
4519
  this.toggleScrollButtons(this.scrollService.tabsOverflow);
4246
4520
  if (this.isScrollable && this.mouseScrollEnabled) {
@@ -4249,7 +4523,7 @@ class TabStripComponent {
4249
4523
  }
4250
4524
  }
4251
4525
  get scrollable() {
4252
- return this._scrollableSettings;
4526
+ return this._scrollableSettings();
4253
4527
  }
4254
4528
  /**
4255
4529
  * Sets the size of the TabStrip.
@@ -4273,21 +4547,23 @@ class TabStripComponent {
4273
4547
  this.renderer.addClass(this.wrapper.nativeElement, 'k-tabstrip-lg');
4274
4548
  break;
4275
4549
  }
4276
- this._size = value;
4277
- this.ngZone.onStable.pipe(take(1)).subscribe(() => this.onResize());
4550
+ this._size.set(value);
4551
+ afterNextRender(() => this.onResize(), { injector: this.injector });
4278
4552
  }
4279
4553
  get size() {
4280
- return this._size;
4554
+ return this._size();
4281
4555
  }
4282
4556
  /**
4283
4557
  * Defines the name of an existing font icon in the Kendo UI theme for the close icon.
4284
4558
  * @default 'x'
4285
4559
  */
4286
- closeIcon = 'x';
4560
+ set closeIcon(value) { this._closeIcon.set(value); }
4561
+ get closeIcon() { return this._closeIcon(); }
4287
4562
  /**
4288
4563
  * Defines a custom CSS class, or multiple classes separated by spaces, applied to the close button.
4289
4564
  */
4290
- closeIconClass;
4565
+ set closeIconClass(value) { this._closeIconClass.set(value); }
4566
+ get closeIconClass() { return this._closeIconClass(); }
4291
4567
  /**
4292
4568
  * Defines an SVGIcon to render for the close icon.
4293
4569
  * The input accepts either an [existing Kendo SVG icon](https://www.telerik.com/kendo-angular-ui/components/icons/svgicon/svgicon-list) or a custom one.
@@ -4296,17 +4572,18 @@ class TabStripComponent {
4296
4572
  if (isDevMode() && icon && this.closeIcon && this.closeIcon !== 'x') {
4297
4573
  throw new Error('Setting both closeIcon and svgIcon options at the same time is not supported.');
4298
4574
  }
4299
- this._closeSVGIcon = icon;
4575
+ this._closeSVGIcon.set(icon);
4300
4576
  }
4301
4577
  get closeSVGIcon() {
4302
- return this._closeSVGIcon;
4578
+ return this._closeSVGIcon();
4303
4579
  }
4304
4580
  /**
4305
4581
  * If set to `false`, the content area is hidden, but the tab headers are still visible.
4306
4582
  *
4307
4583
  * @default true
4308
4584
  */
4309
- showContentArea = true;
4585
+ set showContentArea(value) { this._showContentArea.set(value); }
4586
+ get showContentArea() { return this._showContentArea(); }
4310
4587
  /**
4311
4588
  * Fires each time a tab is selected.
4312
4589
  * The event data contains the index of the selected tab and its title.
@@ -4339,10 +4616,10 @@ class TabStripComponent {
4339
4616
  return this.localization.rtl ? 'rtl' : 'ltr';
4340
4617
  }
4341
4618
  get tabStripScrollable() {
4342
- return this._scrollableSettings.enabled;
4619
+ return this._scrollableSettings().enabled;
4343
4620
  }
4344
4621
  get tabStripScrollableOverlay() {
4345
- return this._scrollableSettings.enabled && !this.hasScrollButtons.visible;
4622
+ return this._scrollableSettings().enabled && !this.hasScrollButtons.visible;
4346
4623
  }
4347
4624
  /**
4348
4625
  * A query list of all declared tabs.
@@ -4376,22 +4653,32 @@ class TabStripComponent {
4376
4653
  * @hidden
4377
4654
  */
4378
4655
  licenseMessage;
4379
- _height;
4380
- _scrollableSettings = normalizeScrollableSettings(false);
4656
+ _height = signal(undefined, ...(ngDevMode ? [{ debugName: "_height" }] : []));
4657
+ _scrollableSettings = signal(normalizeScrollableSettings(false), ...(ngDevMode ? [{ debugName: "_scrollableSettings" }] : []));
4381
4658
  subscriptions = new Subscription();
4382
4659
  subscriptionsArePresent = false;
4383
- _closeSVGIcon;
4660
+ _closeSVGIcon = signal(undefined, ...(ngDevMode ? [{ debugName: "_closeSVGIcon" }] : []));
4384
4661
  tabStripId = guid();
4385
4662
  tabsChangesSub;
4386
4663
  activeStateChangeSub;
4387
- _size;
4388
- constructor(localization, renderer, wrapper, tabstripService, scrollService, ngZone) {
4664
+ _size = signal(undefined, ...(ngDevMode ? [{ debugName: "_size" }] : []));
4665
+ _animate = signal(true, ...(ngDevMode ? [{ debugName: "_animate" }] : []));
4666
+ _tabAlignment = signal('start', ...(ngDevMode ? [{ debugName: "_tabAlignment" }] : []));
4667
+ _tabPosition = signal('top', ...(ngDevMode ? [{ debugName: "_tabPosition" }] : []));
4668
+ _keepTabContent = signal(false, ...(ngDevMode ? [{ debugName: "_keepTabContent" }] : []));
4669
+ _closable = signal(false, ...(ngDevMode ? [{ debugName: "_closable" }] : []));
4670
+ _closeIcon = signal('x', ...(ngDevMode ? [{ debugName: "_closeIcon" }] : []));
4671
+ _closeIconClass = signal(undefined, ...(ngDevMode ? [{ debugName: "_closeIconClass" }] : []));
4672
+ _showContentArea = signal(true, ...(ngDevMode ? [{ debugName: "_showContentArea" }] : []));
4673
+ constructor(localization, renderer, wrapper, tabstripService, scrollService, ngZone, injector, cdr) {
4389
4674
  this.localization = localization;
4390
4675
  this.renderer = renderer;
4391
4676
  this.wrapper = wrapper;
4392
4677
  this.tabstripService = tabstripService;
4393
4678
  this.scrollService = scrollService;
4394
4679
  this.ngZone = ngZone;
4680
+ this.injector = injector;
4681
+ this.cdr = cdr;
4395
4682
  const isValid = validatePackage(packageMetadata);
4396
4683
  this.licenseMessage = getLicenseMessage(packageMetadata);
4397
4684
  this.showLicenseWatermark = shouldShowValidationUI(isValid);
@@ -4421,10 +4708,11 @@ class TabStripComponent {
4421
4708
  });
4422
4709
  this.initDomEvents();
4423
4710
  this.tabsChangesSub = this.tabs.changes.subscribe(() => {
4424
- this.ngZone.onStable.pipe(take(1)).subscribe(() => {
4711
+ afterNextRender(() => {
4425
4712
  this.toggleScrollButtons(this.scrollService.tabsOverflow);
4426
4713
  this.scrollService.toggleScrollButtonsState();
4427
- });
4714
+ }, { injector: this.injector });
4715
+ this.cdr.markForCheck();
4428
4716
  });
4429
4717
  this.isScrollable && !this.hasScrollButtons.visible && this.setScrollableOverlayClasses();
4430
4718
  }
@@ -4435,7 +4723,7 @@ class TabStripComponent {
4435
4723
  const positionChange = changes['tabPosition'];
4436
4724
  if (positionChange) {
4437
4725
  const tabsAtBottomChanged = positionChange.previousValue === 'bottom' || positionChange.currentValue === 'bottom';
4438
- this.ngZone.onStable.pipe(take(1)).subscribe(() => {
4726
+ afterNextRender(() => {
4439
4727
  if (tabsAtBottomChanged) {
4440
4728
  if (this.subscriptionsArePresent) {
4441
4729
  this.subscriptions.unsubscribe();
@@ -4451,7 +4739,7 @@ class TabStripComponent {
4451
4739
  this.initDomEvents();
4452
4740
  }
4453
4741
  this.scrollService.restoreScrollPosition();
4454
- });
4742
+ }, { injector: this.injector });
4455
4743
  }
4456
4744
  }
4457
4745
  ngOnDestroy() {
@@ -4469,19 +4757,19 @@ class TabStripComponent {
4469
4757
  * @hidden
4470
4758
  */
4471
4759
  get isScrollable() {
4472
- return this._scrollableSettings.enabled;
4760
+ return this._scrollableSettings().enabled;
4473
4761
  }
4474
4762
  /**
4475
4763
  * @hidden
4476
4764
  */
4477
4765
  get hasScrollButtons() {
4478
- return tabStripHasScrollButtons(this._scrollableSettings);
4766
+ return tabStripHasScrollButtons(this._scrollableSettings());
4479
4767
  }
4480
4768
  /**
4481
4769
  * @hidden
4482
4770
  */
4483
4771
  get mouseScrollEnabled() {
4484
- return mouseScrollEnabled(this._scrollableSettings);
4772
+ return mouseScrollEnabled(this._scrollableSettings());
4485
4773
  }
4486
4774
  /**
4487
4775
  * @hidden
@@ -4548,7 +4836,7 @@ class TabStripComponent {
4548
4836
  * @hidden
4549
4837
  */
4550
4838
  scrollToSelectedTab() {
4551
- if (this._scrollableSettings.enabled) {
4839
+ if (this._scrollableSettings().enabled) {
4552
4840
  this.scrollService.scrollToSelectedTab();
4553
4841
  }
4554
4842
  }
@@ -4577,8 +4865,8 @@ class TabStripComponent {
4577
4865
  this.subscriptionsArePresent = true;
4578
4866
  }
4579
4867
  toggleScrollButtons(tabsOverflow) {
4580
- this.ngZone.onStable.pipe(take(1)).subscribe(() => {
4581
- const scrollButtonsSetting = this._scrollableSettings.scrollButtons;
4868
+ afterNextRender(() => {
4869
+ const scrollButtonsSetting = this._scrollableSettings().scrollButtons;
4582
4870
  const scrollButtonsArePresent = this.prevScrollButton && this.nextScrollButton;
4583
4871
  const shouldShowButtons = scrollButtonsArePresent && tabsOverflow;
4584
4872
  const shouldHideButtons = scrollButtonsArePresent &&
@@ -4598,7 +4886,7 @@ class TabStripComponent {
4598
4886
  this.scrollService.toggleScrollButtonsState();
4599
4887
  });
4600
4888
  }
4601
- });
4889
+ }, { injector: this.injector });
4602
4890
  }
4603
4891
  attachTablistScrollHandler(tablist) {
4604
4892
  this.ngZone.runOutsideAngular(() => {
@@ -4638,7 +4926,7 @@ class TabStripComponent {
4638
4926
  this.renderer.addClass(wrapper, 'k-tabstrip-scrollable-end');
4639
4927
  }
4640
4928
  }
4641
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: TabStripComponent, deps: [{ token: i1.LocalizationService }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: TabStripService }, { token: ScrollService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
4929
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: TabStripComponent, deps: [{ token: i1.LocalizationService }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: TabStripService }, { token: ScrollService }, { token: i0.NgZone }, { token: i0.Injector }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
4642
4930
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.27", type: TabStripComponent, isStandalone: true, selector: "kendo-tabstrip", inputs: { height: "height", animate: "animate", tabAlignment: "tabAlignment", tabPosition: "tabPosition", keepTabContent: "keepTabContent", closable: "closable", scrollable: "scrollable", size: "size", closeIcon: "closeIcon", closeIconClass: "closeIconClass", closeSVGIcon: "closeSVGIcon", showContentArea: "showContentArea" }, outputs: { tabSelect: "tabSelect", tabClose: "tabClose", tabScroll: "tabScroll" }, host: { properties: { "class.k-tabstrip": "this.hostClasses", "class.k-tabstrip-top": "this.tabsAtTop", "class.k-tabstrip-right": "this.tabsAtRight", "class.k-tabstrip-bottom": "this.tabsAtBottom", "class.k-tabstrip-left": "this.tabsAtLeft", "attr.dir": "this.dir", "class.k-tabstrip-scrollable": "this.tabStripScrollable", "class.k-tabstrip-scrollable-overlay": "this.tabStripScrollableOverlay" } }, providers: [
4643
4931
  TabStripService,
4644
4932
  ScrollService,
@@ -4817,11 +5105,14 @@ class TabStripComponent {
4817
5105
  animate('400ms ease-in')
4818
5106
  ])
4819
5107
  ])
4820
- ], deferBlockDependencies: [() => [NgTemplateOutlet, NgClass]] });
5108
+ ], changeDetection: i0.ChangeDetectionStrategy.OnPush, deferBlockDependencies: [() => [NgTemplateOutlet, NgClass]] });
4821
5109
  }
4822
5110
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: TabStripComponent, decorators: [{
4823
5111
  type: Component,
4824
5112
  args: [{
5113
+ selector: 'kendo-tabstrip',
5114
+ exportAs: 'kendoTabStrip',
5115
+ changeDetection: ChangeDetectionStrategy.OnPush,
4825
5116
  animations: [
4826
5117
  trigger('state', [
4827
5118
  state('active', style({ opacity: 1 })),
@@ -4842,8 +5133,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
4842
5133
  provideComponentName('tabstrip'),
4843
5134
  { provide: KENDO_WEBMCP_HOST, useExisting: forwardRef(() => TabStripComponent) }
4844
5135
  ],
4845
- exportAs: 'kendoTabStrip',
4846
- selector: 'kendo-tabstrip',
4847
5136
  template: `
4848
5137
  <ng-container kendoTabStripLocalizedMessages
4849
5138
  i18n-closeTitle="kendo.tabstrip.closeTitle|The title for the **Close** button in the TabStrip tab."
@@ -5008,7 +5297,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
5008
5297
  standalone: true,
5009
5298
  imports: [LocalizedTabStripMessagesDirective, NgTemplateOutlet, NgClass, TabStripScrollableButtonComponent, TabComponent, NgStyle, ResizeSensorComponent, WatermarkOverlayComponent]
5010
5299
  }]
5011
- }], ctorParameters: () => [{ type: i1.LocalizationService }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: TabStripService }, { type: ScrollService }, { type: i0.NgZone }], propDecorators: { height: [{
5300
+ }], ctorParameters: () => [{ type: i1.LocalizationService }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: TabStripService }, { type: ScrollService }, { type: i0.NgZone }, { type: i0.Injector }, { type: i0.ChangeDetectorRef }], propDecorators: { height: [{
5012
5301
  type: Input
5013
5302
  }], animate: [{
5014
5303
  type: Input
@@ -5802,50 +6091,90 @@ class DrawerComponent {
5802
6091
  *
5803
6092
  * @default 'overlay'
5804
6093
  */
5805
- mode = 'overlay';
6094
+ set mode(value) {
6095
+ this._mode.set(value);
6096
+ }
6097
+ get mode() {
6098
+ return this._mode();
6099
+ }
5806
6100
  /**
5807
6101
  * Specifies the position of the Drawer
5808
6102
  * ([see example](https://www.telerik.com/kendo-angular-ui/components/layout/drawer/positioning)).
5809
6103
  *
5810
6104
  * @default 'start'
5811
6105
  */
5812
- position = 'start';
6106
+ set position(value) {
6107
+ this._position.set(value);
6108
+ }
6109
+ get position() {
6110
+ return this._position();
6111
+ }
5813
6112
  /**
5814
6113
  * Enables the mini (compact) view of the Drawer which displays when the component is collapsed
5815
6114
  * ([see example](https://www.telerik.com/kendo-angular-ui/components/layout/drawer/display-modes#mini-view)).
5816
6115
  *
5817
6116
  * @default false
5818
6117
  */
5819
- mini = false;
6118
+ set mini(value) {
6119
+ this._mini.set(value);
6120
+ }
6121
+ get mini() {
6122
+ return this._mini();
6123
+ }
5820
6124
  /**
5821
6125
  * Specifies the state of the Drawer.
5822
6126
  *
5823
6127
  * @default false
5824
6128
  */
5825
- expanded = false;
6129
+ set expanded(value) {
6130
+ this._expanded.set(value);
6131
+ }
6132
+ get expanded() {
6133
+ return this._expanded();
6134
+ }
5826
6135
  /**
5827
6136
  * Defines the width of the Drawer when it is expanded.
5828
6137
  *
5829
6138
  * @default 240
5830
6139
  */
5831
- width = 240;
6140
+ set width(value) {
6141
+ this._width.set(value);
6142
+ }
6143
+ get width() {
6144
+ return this._width();
6145
+ }
5832
6146
  /**
5833
6147
  * Defines the width of the Drawer when the mini view is enabled and the component is collapsed.
5834
6148
  * By default, the mini view width is determined by the used Kendo Theme.
5835
6149
  */
5836
- miniWidth;
6150
+ set miniWidth(value) {
6151
+ this._miniWidth.set(value);
6152
+ }
6153
+ get miniWidth() {
6154
+ return this._miniWidth();
6155
+ }
5837
6156
  /**
5838
6157
  * Specifies if the Drawer automatically collapses when an item or the overlay is clicked.
5839
6158
  *
5840
6159
  * @default true
5841
6160
  */
5842
- autoCollapse = true;
6161
+ set autoCollapse(value) {
6162
+ this._autoCollapse.set(value);
6163
+ }
6164
+ get autoCollapse() {
6165
+ return this._autoCollapse();
6166
+ }
5843
6167
  /**
5844
6168
  * Defines the collection of items that render in the Drawer.
5845
6169
  *
5846
6170
  * @default []
5847
6171
  */
5848
- items = [];
6172
+ set items(value) {
6173
+ this._items.set(value);
6174
+ }
6175
+ get items() {
6176
+ return this._items();
6177
+ }
5849
6178
  /**
5850
6179
  * Defines a callback function which determines if an item should be expanded.
5851
6180
  * This is useful for hierarchical data structures where the expansion state of an item depends on its parent or other items.
@@ -5862,14 +6191,21 @@ class DrawerComponent {
5862
6191
  /**
5863
6192
  * @hidden
5864
6193
  */
5865
- direction;
6194
+ get direction() {
6195
+ return this._direction();
6196
+ }
5866
6197
  /**
5867
6198
  * Specifies the animation settings of the Drawer
5868
6199
  * ([see example](https://www.telerik.com/kendo-angular-ui/components/layout/drawer/interaction-modes#toggling-between-states)).
5869
6200
  *
5870
6201
  * @default { type: 'slide', duration: 200 }
5871
6202
  */
5872
- animation = DEFAULT_ANIMATION;
6203
+ set animation(value) {
6204
+ this._animation.set(value);
6205
+ }
6206
+ get animation() {
6207
+ return this._animation();
6208
+ }
5873
6209
  /**
5874
6210
  * Fires when the Drawer is expanded and its animation is complete.
5875
6211
  */
@@ -5913,6 +6249,16 @@ class DrawerComponent {
5913
6249
  */
5914
6250
  licenseMessage;
5915
6251
  viewItems;
6252
+ _mode = signal('overlay', ...(ngDevMode ? [{ debugName: "_mode" }] : []));
6253
+ _position = signal('start', ...(ngDevMode ? [{ debugName: "_position" }] : []));
6254
+ _mini = signal(false, ...(ngDevMode ? [{ debugName: "_mini" }] : []));
6255
+ _expanded = signal(false, ...(ngDevMode ? [{ debugName: "_expanded" }] : []));
6256
+ _width = signal(240, ...(ngDevMode ? [{ debugName: "_width" }] : []));
6257
+ _miniWidth = signal(undefined, ...(ngDevMode ? [{ debugName: "_miniWidth" }] : []));
6258
+ _autoCollapse = signal(true, ...(ngDevMode ? [{ debugName: "_autoCollapse" }] : []));
6259
+ _items = signal([], ...(ngDevMode ? [{ debugName: "_items" }] : []));
6260
+ _animation = signal(DEFAULT_ANIMATION, ...(ngDevMode ? [{ debugName: "_animation" }] : []));
6261
+ _direction = signal(undefined, ...(ngDevMode ? [{ debugName: "_direction" }] : []));
5916
6262
  pendingToggle = null;
5917
6263
  animatingViaToggle = false;
5918
6264
  dynamicRTLSubscription;
@@ -5925,7 +6271,7 @@ class DrawerComponent {
5925
6271
  this.showLicenseWatermark = shouldShowValidationUI(isValid);
5926
6272
  this.dynamicRTLSubscription = this.localizationService.changes.subscribe(({ rtl }) => {
5927
6273
  this.rtl = rtl;
5928
- this.direction = this.rtl ? 'rtl' : 'ltr';
6274
+ this._direction.set(rtl ? 'rtl' : 'ltr');
5929
6275
  });
5930
6276
  this.drawerService.owner = this;
5931
6277
  }
@@ -6103,7 +6449,7 @@ class DrawerComponent {
6103
6449
  @if (showLicenseWatermark) {
6104
6450
  <div kendoWatermarkOverlay [licenseMessage]="licenseMessage"></div>
6105
6451
  }
6106
- `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: DrawerListComponent, selector: "[kendoDrawerList]", inputs: ["itemTemplate", "mini", "expanded", "view"], outputs: ["select", "viewChange"] }, { kind: "component", type: WatermarkOverlayComponent, selector: "div[kendoWatermarkOverlay], kendo-watermark-overlay", inputs: ["licenseMessage"] }] });
6452
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: DrawerListComponent, selector: "[kendoDrawerList]", inputs: ["itemTemplate", "mini", "expanded", "view"], outputs: ["select", "viewChange"] }, { kind: "component", type: WatermarkOverlayComponent, selector: "div[kendoWatermarkOverlay], kendo-watermark-overlay", inputs: ["licenseMessage"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
6107
6453
  }
6108
6454
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: DrawerComponent, decorators: [{
6109
6455
  type: Component,
@@ -6160,7 +6506,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
6160
6506
  }
6161
6507
  `,
6162
6508
  standalone: true,
6163
- imports: [NgTemplateOutlet, DrawerListComponent, WatermarkOverlayComponent]
6509
+ imports: [NgTemplateOutlet, DrawerListComponent, WatermarkOverlayComponent],
6510
+ changeDetection: ChangeDetectionStrategy.OnPush
6164
6511
  }]
6165
6512
  }], ctorParameters: () => [{ type: i1.LocalizationService }, { type: DrawerService }], propDecorators: { hostClasses: [{
6166
6513
  type: HostBinding,
@@ -6251,18 +6598,19 @@ class DrawerContainerComponent {
6251
6598
  /**
6252
6599
  * @hidden
6253
6600
  */
6254
- direction;
6601
+ get direction() {
6602
+ return this._direction();
6603
+ }
6255
6604
  /**
6256
6605
  * @hidden
6257
6606
  */
6258
6607
  drawer;
6608
+ _direction = signal(undefined, ...(ngDevMode ? [{ debugName: "_direction" }] : []));
6259
6609
  dynamicRTLSubscription;
6260
- rtl = false;
6261
6610
  constructor(localizationService) {
6262
6611
  this.localizationService = localizationService;
6263
6612
  this.dynamicRTLSubscription = this.localizationService.changes.subscribe(({ rtl }) => {
6264
- this.rtl = rtl;
6265
- this.direction = this.rtl ? 'rtl' : 'ltr';
6613
+ this._direction.set(rtl ? 'rtl' : 'ltr');
6266
6614
  });
6267
6615
  }
6268
6616
  ngOnDestroy() {
@@ -6298,7 +6646,7 @@ class DrawerContainerComponent {
6298
6646
  <div class="k-overlay" (click)="closeDrawer()"></div>
6299
6647
  }
6300
6648
  <ng-content></ng-content>
6301
- `, isInline: true });
6649
+ `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
6302
6650
  }
6303
6651
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: DrawerContainerComponent, decorators: [{
6304
6652
  type: Component,
@@ -6317,7 +6665,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
6317
6665
  }
6318
6666
  <ng-content></ng-content>
6319
6667
  `,
6320
- standalone: true
6668
+ standalone: true,
6669
+ changeDetection: ChangeDetectionStrategy.OnPush
6321
6670
  }]
6322
6671
  }], ctorParameters: () => [{ type: i1.LocalizationService }], propDecorators: { hostClass: [{
6323
6672
  type: HostBinding,
@@ -6359,7 +6708,7 @@ class DrawerContentComponent {
6359
6708
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: DrawerContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6360
6709
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.27", type: DrawerContentComponent, isStandalone: true, selector: "kendo-drawer-content", host: { properties: { "class.k-drawer-content": "this.hostClasses" } }, ngImport: i0, template: `
6361
6710
  <ng-content></ng-content>
6362
- `, isInline: true, encapsulation: i0.ViewEncapsulation.None });
6711
+ `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
6363
6712
  }
6364
6713
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: DrawerContentComponent, decorators: [{
6365
6714
  type: Component,
@@ -6369,7 +6718,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
6369
6718
  <ng-content></ng-content>
6370
6719
  `,
6371
6720
  encapsulation: ViewEncapsulation.None,
6372
- standalone: true
6721
+ standalone: true,
6722
+ changeDetection: ChangeDetectionStrategy.OnPush
6373
6723
  }]
6374
6724
  }], ctorParameters: () => [], propDecorators: { hostClasses: [{
6375
6725
  type: HostBinding,
@@ -6553,19 +6903,23 @@ let StepperActivateEvent$1 = class StepperActivateEvent extends PreventableEvent
6553
6903
  class StepperService {
6554
6904
  localization;
6555
6905
  ngZone;
6556
- changeDetector;
6557
6906
  owner;
6558
6907
  currentStep = DEFAULT_CURRENT_STEP;
6559
- focusedStep;
6908
+ set focusedStep(value) {
6909
+ this._focusedStep.set(value);
6910
+ }
6911
+ get focusedStep() {
6912
+ return this._focusedStep();
6913
+ }
6560
6914
  triggerValidation = new EventEmitter();
6561
6915
  focusedStepChange = new EventEmitter();
6562
6916
  get handlers() {
6563
6917
  return this.localization.rtl ? handlersRTL : handlers;
6564
6918
  }
6565
- constructor(localization, ngZone, changeDetector) {
6919
+ _focusedStep = signal(undefined, ...(ngDevMode ? [{ debugName: "_focusedStep" }] : []));
6920
+ constructor(localization, ngZone) {
6566
6921
  this.localization = localization;
6567
6922
  this.ngZone = ngZone;
6568
- this.changeDetector = changeDetector;
6569
6923
  }
6570
6924
  emit(event, eventArgs) {
6571
6925
  const stepper = this.owner;
@@ -6585,7 +6939,6 @@ class StepperService {
6585
6939
  if (!this.emit('activate', eventArgs)) {
6586
6940
  this.currentStep = currentIdx;
6587
6941
  this.owner['currentStepChange'].emit(currentIdx);
6588
- this.changeDetector.detectChanges();
6589
6942
  }
6590
6943
  });
6591
6944
  }
@@ -6673,12 +7026,12 @@ class StepperService {
6673
7026
  get isHorizontal() {
6674
7027
  return this.owner.orientation === 'horizontal';
6675
7028
  }
6676
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: StepperService, deps: [{ token: i1.LocalizationService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Injectable });
7029
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: StepperService, deps: [{ token: i1.LocalizationService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
6677
7030
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: StepperService });
6678
7031
  }
6679
7032
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: StepperService, decorators: [{
6680
7033
  type: Injectable
6681
- }], ctorParameters: () => [{ type: i1.LocalizationService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }] });
7034
+ }], ctorParameters: () => [{ type: i1.LocalizationService }, { type: i0.NgZone }] });
6682
7035
 
6683
7036
  /**
6684
7037
  * @hidden
@@ -6692,23 +7045,52 @@ class StepperStepComponent {
6692
7045
  service;
6693
7046
  localization;
6694
7047
  ngZone;
6695
- step;
6696
- index;
6697
- current;
6698
- type;
6699
- successIcon;
6700
- successSVGIcon;
6701
- errorIcon;
6702
- errorSVGIcon;
6703
- svgIcon;
6704
- indicatorTemplate;
6705
- labelTemplate;
6706
- stepTemplate;
7048
+ set step(value) { this._step.set(value); }
7049
+ get step() { return this._step(); }
7050
+ set index(value) { this._index.set(value); }
7051
+ get index() { return this._index(); }
7052
+ set current(value) {
7053
+ this._current.set(value);
7054
+ this.handleValidityChecks();
7055
+ }
7056
+ get current() { return this._current(); }
7057
+ set type(value) { this._type.set(value); }
7058
+ get type() { return this._type(); }
7059
+ set successIcon(value) { this._successIcon.set(value); }
7060
+ get successIcon() { return this._successIcon(); }
7061
+ set successSVGIcon(value) { this._successSVGIcon.set(value); }
7062
+ get successSVGIcon() { return this._successSVGIcon(); }
7063
+ set errorIcon(value) { this._errorIcon.set(value); }
7064
+ get errorIcon() { return this._errorIcon(); }
7065
+ set errorSVGIcon(value) { this._errorSVGIcon.set(value); }
7066
+ get errorSVGIcon() { return this._errorSVGIcon(); }
7067
+ set svgIcon(value) { this._svgIcon.set(value); }
7068
+ get svgIcon() { return this._svgIcon(); }
7069
+ set indicatorTemplate(value) { this._indicatorTemplate.set(value); }
7070
+ get indicatorTemplate() { return this._indicatorTemplate(); }
7071
+ set labelTemplate(value) { this._labelTemplate.set(value); }
7072
+ get labelTemplate() { return this._labelTemplate(); }
7073
+ set stepTemplate(value) { this._stepTemplate.set(value); }
7074
+ get stepTemplate() { return this._stepTemplate(); }
6707
7075
  stepLink;
6708
- isStepValid = undefined;
6709
- shouldCheckValidity = undefined;
7076
+ get isStepValid() { return this._isStepValid(); }
7077
+ get shouldCheckValidity() { return this._shouldCheckValidityState(); }
6710
7078
  checkCircleIcon = checkCircleIcon;
6711
7079
  exclamationCircleIcon = exclamationCircleIcon;
7080
+ _step = signal(undefined, ...(ngDevMode ? [{ debugName: "_step" }] : []));
7081
+ _index = signal(undefined, ...(ngDevMode ? [{ debugName: "_index" }] : []));
7082
+ _current = signal(undefined, ...(ngDevMode ? [{ debugName: "_current" }] : []));
7083
+ _type = signal(undefined, ...(ngDevMode ? [{ debugName: "_type" }] : []));
7084
+ _successIcon = signal(undefined, ...(ngDevMode ? [{ debugName: "_successIcon" }] : []));
7085
+ _successSVGIcon = signal(undefined, ...(ngDevMode ? [{ debugName: "_successSVGIcon" }] : []));
7086
+ _errorIcon = signal(undefined, ...(ngDevMode ? [{ debugName: "_errorIcon" }] : []));
7087
+ _errorSVGIcon = signal(undefined, ...(ngDevMode ? [{ debugName: "_errorSVGIcon" }] : []));
7088
+ _svgIcon = signal(undefined, ...(ngDevMode ? [{ debugName: "_svgIcon" }] : []));
7089
+ _indicatorTemplate = signal(undefined, ...(ngDevMode ? [{ debugName: "_indicatorTemplate" }] : []));
7090
+ _labelTemplate = signal(undefined, ...(ngDevMode ? [{ debugName: "_labelTemplate" }] : []));
7091
+ _stepTemplate = signal(undefined, ...(ngDevMode ? [{ debugName: "_stepTemplate" }] : []));
7092
+ _isStepValid = signal(undefined, ...(ngDevMode ? [{ debugName: "_isStepValid" }] : []));
7093
+ _shouldCheckValidityState = signal(undefined, ...(ngDevMode ? [{ debugName: "_shouldCheckValidityState" }] : []));
6712
7094
  subs;
6713
7095
  constructor(service, localization, ngZone) {
6714
7096
  this.service = service;
@@ -6737,11 +7119,6 @@ class StepperStepComponent {
6737
7119
  ngOnInit() {
6738
7120
  this.handleValidityChecks();
6739
7121
  }
6740
- ngOnChanges(changes) {
6741
- if (changes['current'] && !changes['current'].firstChange) {
6742
- this.handleValidityChecks();
6743
- }
6744
- }
6745
7122
  ngOnDestroy() {
6746
7123
  if (this.subs) {
6747
7124
  this.subs.unsubscribe();
@@ -6855,7 +7232,7 @@ class StepperStepComponent {
6855
7232
  get transitionDuration() {
6856
7233
  return this.service.owner.animationDuration;
6857
7234
  }
6858
- _shouldCheckValidity() {
7235
+ computeShouldCheckValidity() {
6859
7236
  if (isPresent(this.step.validate)) {
6860
7237
  if (typeof this.step.validate === 'boolean') {
6861
7238
  return this.step.validate;
@@ -6867,14 +7244,14 @@ class StepperStepComponent {
6867
7244
  return isPresent(this.step.isValid) && this.index < this.current;
6868
7245
  }
6869
7246
  handleValidityChecks() {
6870
- this.isStepValid = undefined;
6871
- this.shouldCheckValidity = this._shouldCheckValidity();
6872
- if (this.shouldCheckValidity) {
6873
- this.isStepValid = this.updateStepValidity();
7247
+ this._isStepValid.set(undefined);
7248
+ this._shouldCheckValidityState.set(this.computeShouldCheckValidity());
7249
+ if (this._shouldCheckValidityState()) {
7250
+ this._isStepValid.set(this.updateStepValidity());
6874
7251
  }
6875
7252
  }
6876
7253
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: StepperStepComponent, deps: [{ token: StepperService }, { token: i1.LocalizationService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
6877
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.27", type: StepperStepComponent, isStandalone: true, selector: "[kendoStepperStep]", inputs: { step: "step", index: "index", current: "current", type: "type", successIcon: "successIcon", successSVGIcon: "successSVGIcon", errorIcon: "errorIcon", errorSVGIcon: "errorSVGIcon", svgIcon: "svgIcon", indicatorTemplate: "indicatorTemplate", labelTemplate: "labelTemplate", stepTemplate: "stepTemplate" }, host: { properties: { "class.k-step-error": "this.errorStepClass", "class.k-step-success": "this.successStepClass" } }, viewQueries: [{ propertyName: "stepLink", first: true, predicate: ["stepLink"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: `
7254
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.27", type: StepperStepComponent, isStandalone: true, selector: "[kendoStepperStep]", inputs: { step: "step", index: "index", current: "current", type: "type", successIcon: "successIcon", successSVGIcon: "successSVGIcon", errorIcon: "errorIcon", errorSVGIcon: "errorSVGIcon", svgIcon: "svgIcon", indicatorTemplate: "indicatorTemplate", labelTemplate: "labelTemplate", stepTemplate: "stepTemplate" }, host: { properties: { "class.k-step-error": "this.errorStepClass", "class.k-step-success": "this.successStepClass" } }, viewQueries: [{ propertyName: "stepLink", first: true, predicate: ["stepLink"], descendants: true, static: true }], ngImport: i0, template: `
6878
7255
  <a href='#' class='k-step-link' #stepLink
6879
7256
  [attr.tabindex]='tabIndexAttr'
6880
7257
  [attr.title]='step.label'
@@ -6947,12 +7324,13 @@ class StepperStepComponent {
6947
7324
  }
6948
7325
  }
6949
7326
  </a>
6950
- `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }] });
7327
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
6951
7328
  }
6952
7329
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: StepperStepComponent, decorators: [{
6953
7330
  type: Component,
6954
7331
  args: [{
6955
7332
  selector: '[kendoStepperStep]',
7333
+ changeDetection: ChangeDetectionStrategy.OnPush,
6956
7334
  template: `
6957
7335
  <a href='#' class='k-step-link' #stepLink
6958
7336
  [attr.tabindex]='tabIndexAttr'
@@ -7073,21 +7451,47 @@ class StepperListComponent {
7073
7451
  ngZone;
7074
7452
  service;
7075
7453
  element;
7076
- linear;
7077
- stepType;
7078
- orientation;
7079
- currentStep;
7080
- steps;
7081
- successIcon;
7082
- successSVGIcon;
7083
- errorIcon;
7084
- errorSVGIcon;
7085
- svgIcon;
7086
- indicatorTemplate;
7087
- labelTemplate;
7088
- stepTemplate;
7454
+ set linear(value) { this._linear.set(value); }
7455
+ get linear() { return this._linear(); }
7456
+ set stepType(value) { this._stepType.set(value); }
7457
+ get stepType() { return this._stepType(); }
7458
+ set orientation(value) { this._orientation.set(value); }
7459
+ get orientation() { return this._orientation(); }
7460
+ set currentStep(value) { this._currentStep.set(value); }
7461
+ get currentStep() { return this._currentStep(); }
7462
+ set steps(value) { this._steps.set(value); }
7463
+ get steps() { return this._steps(); }
7464
+ set successIcon(value) { this._successIcon.set(value); }
7465
+ get successIcon() { return this._successIcon(); }
7466
+ set successSVGIcon(value) { this._successSVGIcon.set(value); }
7467
+ get successSVGIcon() { return this._successSVGIcon(); }
7468
+ set errorIcon(value) { this._errorIcon.set(value); }
7469
+ get errorIcon() { return this._errorIcon(); }
7470
+ set errorSVGIcon(value) { this._errorSVGIcon.set(value); }
7471
+ get errorSVGIcon() { return this._errorSVGIcon(); }
7472
+ set svgIcon(value) { this._svgIcon.set(value); }
7473
+ get svgIcon() { return this._svgIcon(); }
7474
+ set indicatorTemplate(value) { this._indicatorTemplate.set(value); }
7475
+ get indicatorTemplate() { return this._indicatorTemplate(); }
7476
+ set labelTemplate(value) { this._labelTemplate.set(value); }
7477
+ get labelTemplate() { return this._labelTemplate(); }
7478
+ set stepTemplate(value) { this._stepTemplate.set(value); }
7479
+ get stepTemplate() { return this._stepTemplate(); }
7089
7480
  listKeydown = new EventEmitter();
7090
7481
  listClick = new EventEmitter();
7482
+ _linear = signal(undefined, ...(ngDevMode ? [{ debugName: "_linear" }] : []));
7483
+ _stepType = signal(undefined, ...(ngDevMode ? [{ debugName: "_stepType" }] : []));
7484
+ _orientation = signal(undefined, ...(ngDevMode ? [{ debugName: "_orientation" }] : []));
7485
+ _currentStep = signal(undefined, ...(ngDevMode ? [{ debugName: "_currentStep" }] : []));
7486
+ _steps = signal(undefined, ...(ngDevMode ? [{ debugName: "_steps" }] : []));
7487
+ _successIcon = signal(undefined, ...(ngDevMode ? [{ debugName: "_successIcon" }] : []));
7488
+ _successSVGIcon = signal(undefined, ...(ngDevMode ? [{ debugName: "_successSVGIcon" }] : []));
7489
+ _errorIcon = signal(undefined, ...(ngDevMode ? [{ debugName: "_errorIcon" }] : []));
7490
+ _errorSVGIcon = signal(undefined, ...(ngDevMode ? [{ debugName: "_errorSVGIcon" }] : []));
7491
+ _svgIcon = signal(undefined, ...(ngDevMode ? [{ debugName: "_svgIcon" }] : []));
7492
+ _indicatorTemplate = signal(undefined, ...(ngDevMode ? [{ debugName: "_indicatorTemplate" }] : []));
7493
+ _labelTemplate = signal(undefined, ...(ngDevMode ? [{ debugName: "_labelTemplate" }] : []));
7494
+ _stepTemplate = signal(undefined, ...(ngDevMode ? [{ debugName: "_stepTemplate" }] : []));
7091
7495
  domSubs;
7092
7496
  constructor(renderer, ngZone, service, element) {
7093
7497
  this.renderer = renderer;
@@ -7164,12 +7568,13 @@ class StepperListComponent {
7164
7568
  }
7165
7569
  }
7166
7570
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: StepperListComponent, deps: [{ token: i0.Renderer2 }, { token: i0.NgZone }, { token: StepperService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
7167
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.27", type: StepperListComponent, isStandalone: true, selector: "[kendoStepperList]", inputs: { linear: "linear", stepType: "stepType", orientation: "orientation", currentStep: "currentStep", steps: "steps", successIcon: "successIcon", successSVGIcon: "successSVGIcon", errorIcon: "errorIcon", errorSVGIcon: "errorSVGIcon", svgIcon: "svgIcon", indicatorTemplate: "indicatorTemplate", labelTemplate: "labelTemplate", stepTemplate: "stepTemplate" }, outputs: { listKeydown: "listKeydown", listClick: "listClick" }, ngImport: i0, template: "\n @for (step of steps; track step; let idx = $index) {\n <li kendoStepperStep\n [attr.data-kendo-stepper-index]='idx'\n [type]='stepType'\n [step]='step'\n [index]='idx'\n [current]='currentStep'\n [successIcon]='successIcon'\n [successSVGIcon]='successSVGIcon'\n [errorIcon]='errorIcon'\n [errorSVGIcon]='errorSVGIcon'\n [svgIcon]='svgIcon'\n [indicatorTemplate]='indicatorTemplate'\n [labelTemplate]='labelTemplate'\n [stepTemplate]='stepTemplate'\n class='k-step'\n [class.k-step-first]='idx === 0'\n [class.k-step-last]='idx === steps.length - 1'\n [class.k-step-done]='idx < currentStep'\n [class.k-step-current]='idx === currentStep'\n [class.k-step-optional]='step.optional'\n [class.k-disabled]='step.disabled'\n [class.k-focus]='idx === focusedStep || (!isPresent(focusedStep) && idx === currentStep)'\n [ngClass]='step.cssClass'\n [ngStyle]='step.cssStyle'\n [style.max-width.%] = 'maxStepWidth'\n [style.max-height.%] = 'maxStepHeight'\n >\n </li>\n }\n ", isInline: true, dependencies: [{ kind: "component", type: StepperStepComponent, selector: "[kendoStepperStep]", inputs: ["step", "index", "current", "type", "successIcon", "successSVGIcon", "errorIcon", "errorSVGIcon", "svgIcon", "indicatorTemplate", "labelTemplate", "stepTemplate"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
7571
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.27", type: StepperListComponent, isStandalone: true, selector: "[kendoStepperList]", inputs: { linear: "linear", stepType: "stepType", orientation: "orientation", currentStep: "currentStep", steps: "steps", successIcon: "successIcon", successSVGIcon: "successSVGIcon", errorIcon: "errorIcon", errorSVGIcon: "errorSVGIcon", svgIcon: "svgIcon", indicatorTemplate: "indicatorTemplate", labelTemplate: "labelTemplate", stepTemplate: "stepTemplate" }, outputs: { listKeydown: "listKeydown", listClick: "listClick" }, ngImport: i0, template: "\n @for (step of steps; track step; let idx = $index) {\n <li kendoStepperStep\n [attr.data-kendo-stepper-index]='idx'\n [type]='stepType'\n [step]='step'\n [index]='idx'\n [current]='currentStep'\n [successIcon]='successIcon'\n [successSVGIcon]='successSVGIcon'\n [errorIcon]='errorIcon'\n [errorSVGIcon]='errorSVGIcon'\n [svgIcon]='svgIcon'\n [indicatorTemplate]='indicatorTemplate'\n [labelTemplate]='labelTemplate'\n [stepTemplate]='stepTemplate'\n class='k-step'\n [class.k-step-first]='idx === 0'\n [class.k-step-last]='idx === steps.length - 1'\n [class.k-step-done]='idx < currentStep'\n [class.k-step-current]='idx === currentStep'\n [class.k-step-optional]='step.optional'\n [class.k-disabled]='step.disabled'\n [class.k-focus]='idx === focusedStep || (!isPresent(focusedStep) && idx === currentStep)'\n [ngClass]='step.cssClass'\n [ngStyle]='step.cssStyle'\n [style.max-width.%] = 'maxStepWidth'\n [style.max-height.%] = 'maxStepHeight'\n >\n </li>\n }\n ", isInline: true, dependencies: [{ kind: "component", type: StepperStepComponent, selector: "[kendoStepperStep]", inputs: ["step", "index", "current", "type", "successIcon", "successSVGIcon", "errorIcon", "errorSVGIcon", "svgIcon", "indicatorTemplate", "labelTemplate", "stepTemplate"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
7168
7572
  }
7169
7573
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: StepperListComponent, decorators: [{
7170
7574
  type: Component,
7171
7575
  args: [{
7172
7576
  selector: '[kendoStepperList]',
7577
+ changeDetection: ChangeDetectionStrategy.OnPush,
7173
7578
  template: `
7174
7579
  @for (step of steps; track step; let idx = $index) {
7175
7580
  <li kendoStepperStep
@@ -7244,7 +7649,13 @@ class StepperMessages extends ComponentMessages {
7244
7649
  /**
7245
7650
  * Specifies the optional text.
7246
7651
  */
7247
- optional;
7652
+ set optional(value) {
7653
+ this._optional.set(value);
7654
+ }
7655
+ get optional() {
7656
+ return this._optional();
7657
+ }
7658
+ _optional = signal(undefined, ...(ngDevMode ? [{ debugName: "_optional" }] : []));
7248
7659
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: StepperMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });
7249
7660
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.27", type: StepperMessages, isStandalone: true, selector: "kendo-stepper-messages-base", inputs: { optional: "optional" }, usesInheritance: true, ngImport: i0 });
7250
7661
  }
@@ -7329,24 +7740,40 @@ class StepperComponent {
7329
7740
  *
7330
7741
  * @default 'indicator'
7331
7742
  */
7332
- stepType = 'indicator';
7743
+ set stepType(value) {
7744
+ this._stepType.set(value);
7745
+ }
7746
+ get stepType() {
7747
+ return this._stepType();
7748
+ }
7333
7749
  /**
7334
7750
  * Specifies the linear flow of the Stepper.
7335
7751
  *
7336
7752
  * @default true
7337
7753
  */
7338
- linear = true;
7754
+ set linear(value) {
7755
+ this._linear.set(value);
7756
+ }
7757
+ get linear() {
7758
+ return this._linear();
7759
+ }
7339
7760
  /**
7340
7761
  * Specifies the orientation of the Stepper
7341
7762
  * ([see example](https://www.telerik.com/kendo-angular-ui/components/layout/stepper/orientation)).
7342
7763
  *
7343
7764
  * @default 'horizontal'
7344
7765
  */
7345
- orientation = 'horizontal';
7766
+ set orientation(value) {
7767
+ this._orientation.set(value);
7768
+ }
7769
+ get orientation() {
7770
+ return this._orientation();
7771
+ }
7346
7772
  /**
7347
7773
  * Specifies the index of the current step.
7348
7774
  */
7349
7775
  set currentStep(value) {
7776
+ this._currentStep.set(value);
7350
7777
  this.stepperService.currentStep = value;
7351
7778
  }
7352
7779
  get currentStep() {
@@ -7358,48 +7785,73 @@ class StepperComponent {
7358
7785
  */
7359
7786
  set steps(steps) {
7360
7787
  if (isPresent(steps) && steps.length > 0) {
7361
- this._steps = steps;
7788
+ this._steps.set(steps);
7362
7789
  }
7363
7790
  }
7364
7791
  get steps() {
7365
- return this._steps;
7792
+ return this._steps();
7366
7793
  }
7367
7794
  /**
7368
7795
  * Specifies an SVG icon to be rendered inside the step indicator instead of the default numeric or text content.
7369
7796
  * You can use either an [existing Kendo SVG icon](https://www.telerik.com/kendo-angular-ui/components/icons/svgicon/svgicon-list) or a custom one.
7370
7797
  */
7371
7798
  set svgIcon(icon) {
7372
- this._svgIcon = icon;
7799
+ this._svgIcon.set(icon);
7373
7800
  }
7374
7801
  get svgIcon() {
7375
- return this._svgIcon;
7802
+ return this._svgIcon();
7376
7803
  }
7377
7804
  /**
7378
7805
  * Specifies an SVG icon to be rendered for the success icon.
7379
7806
  * You can use either an [existing Kendo SVG icon](https://www.telerik.com/kendo-angular-ui/components/icons/svgicon/svgicon-list) or a custom one.
7380
7807
  */
7381
- successSVGIcon;
7808
+ set successSVGIcon(value) {
7809
+ this._successSVGIcon.set(value);
7810
+ }
7811
+ get successSVGIcon() {
7812
+ return this._successSVGIcon();
7813
+ }
7382
7814
  /**
7383
7815
  * Specifies an SVG icon to be rendered for the error icon.
7384
7816
  * You can use either an [existing Kendo SVG icon](https://www.telerik.com/kendo-angular-ui/components/icons/svgicon/svgicon-list) or a custom one.
7385
7817
  */
7386
- errorSVGIcon;
7818
+ set errorSVGIcon(value) {
7819
+ this._errorSVGIcon.set(value);
7820
+ }
7821
+ get errorSVGIcon() {
7822
+ return this._errorSVGIcon();
7823
+ }
7387
7824
  /**
7388
7825
  * Specifies an SVG icon that will be rendered inside the step for valid previous steps.
7389
7826
  * You can use either an [existing Kendo SVG icon](https://www.telerik.com/kendo-angular-ui/components/icons/svgicon/svgicon-list) or a custom one.
7390
7827
  */
7391
- successIcon;
7828
+ set successIcon(value) {
7829
+ this._successIcon.set(value);
7830
+ }
7831
+ get successIcon() {
7832
+ return this._successIcon();
7833
+ }
7392
7834
  /**
7393
7835
  * Specifies an SVG icon that will be rendered inside the step for invalid previous steps.
7394
7836
  * You can use either an [existing Kendo SVG icon](https://www.telerik.com/kendo-angular-ui/components/icons/svgicon/svgicon-list) or a custom one.
7395
7837
  */
7396
- errorIcon;
7838
+ set errorIcon(value) {
7839
+ this._errorIcon.set(value);
7840
+ }
7841
+ get errorIcon() {
7842
+ return this._errorIcon();
7843
+ }
7397
7844
  /**
7398
7845
  * Specifies the duration of the progress indicator animation in milliseconds.
7399
7846
  *
7400
7847
  * @default true
7401
7848
  */
7402
- animation = true;
7849
+ set animation(value) {
7850
+ this._animation.set(value);
7851
+ }
7852
+ get animation() {
7853
+ return this._animation();
7854
+ }
7403
7855
  /**
7404
7856
  * Fires when a step is about to be activated. You can prevent this event.
7405
7857
  */
@@ -7422,10 +7874,31 @@ class StepperComponent {
7422
7874
  */
7423
7875
  indicatorTemplate;
7424
7876
  dynamicRTLSubscription;
7425
- _steps = [];
7426
- _successSVGIcon;
7427
- _errorSVGIcon;
7428
- _svgIcon;
7877
+ _steps = signal([], ...(ngDevMode ? [{ debugName: "_steps" }] : []));
7878
+ _svgIcon = signal(undefined, ...(ngDevMode ? [{ debugName: "_svgIcon" }] : []));
7879
+ _stepType = signal('indicator', ...(ngDevMode ? [{ debugName: "_stepType" }] : []));
7880
+ _linear = signal(true, ...(ngDevMode ? [{ debugName: "_linear" }] : []));
7881
+ _orientation = signal('horizontal', ...(ngDevMode ? [{ debugName: "_orientation" }] : []));
7882
+ _currentStep = signal(0, ...(ngDevMode ? [{ debugName: "_currentStep" }] : []));
7883
+ _successSVGIcon = signal(undefined, ...(ngDevMode ? [{ debugName: "_successSVGIcon" }] : []));
7884
+ _errorSVGIcon = signal(undefined, ...(ngDevMode ? [{ debugName: "_errorSVGIcon" }] : []));
7885
+ _successIcon = signal(undefined, ...(ngDevMode ? [{ debugName: "_successIcon" }] : []));
7886
+ _errorIcon = signal(undefined, ...(ngDevMode ? [{ debugName: "_errorIcon" }] : []));
7887
+ _animation = signal(true, ...(ngDevMode ? [{ debugName: "_animation" }] : []));
7888
+ _progressAnimation = computed(() => {
7889
+ const animation = this._animation();
7890
+ let duration;
7891
+ if (typeof animation === 'number') {
7892
+ duration = animation;
7893
+ }
7894
+ else if (typeof animation === 'boolean' && animation) {
7895
+ duration = DEFAULT_ANIMATION_DURATION;
7896
+ }
7897
+ else {
7898
+ duration = 0;
7899
+ }
7900
+ return { duration };
7901
+ }, ...(ngDevMode ? [{ debugName: "_progressAnimation" }] : []));
7429
7902
  constructor(renderer, elem, localization, stepperService) {
7430
7903
  this.renderer = renderer;
7431
7904
  this.elem = elem;
@@ -7474,7 +7947,7 @@ class StepperComponent {
7474
7947
  * @hidden
7475
7948
  */
7476
7949
  get progressAnimation() {
7477
- return { duration: this.animationDuration };
7950
+ return this._progressAnimation();
7478
7951
  }
7479
7952
  /**
7480
7953
  * @hidden
@@ -7588,12 +8061,14 @@ class StepperComponent {
7588
8061
  <kendo-progressbar-messages progressBarLabel="progress"></kendo-progressbar-messages>
7589
8062
  </kendo-progressbar>
7590
8063
  }
7591
- `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedStepperMessagesDirective, selector: "\n [kendoStepperLocalizedMessages]\n " }, { kind: "component", type: StepperListComponent, selector: "[kendoStepperList]", inputs: ["linear", "stepType", "orientation", "currentStep", "steps", "successIcon", "successSVGIcon", "errorIcon", "errorSVGIcon", "svgIcon", "indicatorTemplate", "labelTemplate", "stepTemplate"], outputs: ["listKeydown", "listClick"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: ProgressBarComponent, selector: "kendo-progressbar", inputs: ["label", "progressCssStyle", "progressCssClass", "emptyCssStyle", "emptyCssClass", "animation", "max"], outputs: ["animationEnd"], exportAs: ["kendoProgressBar"] }, { kind: "component", type: ProgressBarCustomMessagesComponent, selector: "kendo-progressbar-messages" }] });
8064
+ `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedStepperMessagesDirective, selector: "\n [kendoStepperLocalizedMessages]\n " }, { kind: "component", type: StepperListComponent, selector: "[kendoStepperList]", inputs: ["linear", "stepType", "orientation", "currentStep", "steps", "successIcon", "successSVGIcon", "errorIcon", "errorSVGIcon", "svgIcon", "indicatorTemplate", "labelTemplate", "stepTemplate"], outputs: ["listKeydown", "listClick"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: ProgressBarComponent, selector: "kendo-progressbar", inputs: ["label", "progressCssStyle", "progressCssClass", "emptyCssStyle", "emptyCssClass", "animation", "max"], outputs: ["animationEnd"], exportAs: ["kendoProgressBar"] }, { kind: "component", type: ProgressBarCustomMessagesComponent, selector: "kendo-progressbar-messages" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
7592
8065
  }
7593
8066
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: StepperComponent, decorators: [{
7594
8067
  type: Component,
7595
8068
  args: [{
8069
+ selector: 'kendo-stepper',
7596
8070
  exportAs: 'kendoStepper',
8071
+ changeDetection: ChangeDetectionStrategy.OnPush,
7597
8072
  providers: [
7598
8073
  LocalizationService,
7599
8074
  StepperService,
@@ -7604,7 +8079,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
7604
8079
  provideComponentName('stepper'),
7605
8080
  { provide: KENDO_WEBMCP_HOST, useExisting: forwardRef(() => StepperComponent) }
7606
8081
  ],
7607
- selector: 'kendo-stepper',
7608
8082
  template: `
7609
8083
  <ng-container kendoStepperLocalizedMessages
7610
8084
  i18n-optional="kendo.stepper.optional|The text for the optional segment of the step label"
@@ -7782,7 +8256,13 @@ class Messages extends ComponentMessages {
7782
8256
  /**
7783
8257
  * Defines the alt attribute text of the image in the Avatar.
7784
8258
  */
7785
- avatarAlt;
8259
+ set avatarAlt(value) {
8260
+ this._avatarAlt.set(value);
8261
+ }
8262
+ get avatarAlt() {
8263
+ return this._avatarAlt();
8264
+ }
8265
+ _avatarAlt = signal(undefined, ...(ngDevMode ? [{ debugName: "_avatarAlt" }] : []));
7786
8266
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: Messages, deps: null, target: i0.ɵɵFactoryTarget.Directive });
7787
8267
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.27", type: Messages, isStandalone: true, selector: "kendoAvatarMessages", inputs: { avatarAlt: "avatarAlt" }, usesInheritance: true, ngImport: i0 });
7788
8268
  }
@@ -7878,13 +8358,13 @@ class AvatarComponent {
7878
8358
  * ([see example](https://www.telerik.com/kendo-angular-ui/components/layout/avatar/appearance#size)). The default value is set by the Kendo theme.
7879
8359
  */
7880
8360
  set size(size) {
7881
- if (size !== this._size) {
8361
+ if (size !== this._size()) {
7882
8362
  this.handleClasses('size', size);
7883
- this._size = size;
8363
+ this._size.set(size);
7884
8364
  }
7885
8365
  }
7886
8366
  get size() {
7887
- return this._size;
8367
+ return this._size();
7888
8368
  }
7889
8369
  /**
7890
8370
  * Specifies the rounded styling of the Avatar
@@ -7893,36 +8373,36 @@ class AvatarComponent {
7893
8373
  set rounded(rounded) {
7894
8374
  if (rounded !== this.rounded) {
7895
8375
  this.handleClasses('rounded', rounded);
7896
- this._rounded = rounded;
8376
+ this._rounded.set(rounded);
7897
8377
  }
7898
8378
  }
7899
8379
  get rounded() {
7900
- return this._rounded;
8380
+ return this._rounded();
7901
8381
  }
7902
8382
  /**
7903
8383
  * Specifies the theme color of the Avatar.
7904
8384
  * The theme color applies as background and border color while adjusting the text color accordingly. The default value is set by the Kendo theme.
7905
8385
  */
7906
8386
  set themeColor(themeColor) {
7907
- if (themeColor !== this._themeColor) {
7908
- this._themeColor = themeColor;
8387
+ if (themeColor !== this._themeColor()) {
8388
+ this._themeColor.set(themeColor);
7909
8389
  this.handleFillModeAndThemeColorClasses(this.fillMode, this.themeColor);
7910
8390
  }
7911
8391
  }
7912
8392
  get themeColor() {
7913
- return this._themeColor;
8393
+ return this._themeColor();
7914
8394
  }
7915
8395
  /**
7916
8396
  * Specifies the fill style of the Avatar. The default value is set by the Kendo theme.
7917
8397
  */
7918
8398
  set fillMode(fillMode) {
7919
8399
  if (fillMode !== this.fillMode) {
7920
- this._fillMode = fillMode;
8400
+ this._fillMode.set(fillMode);
7921
8401
  this.handleFillModeAndThemeColorClasses(this.fillMode, this.themeColor);
7922
8402
  }
7923
8403
  }
7924
8404
  get fillMode() {
7925
- return this._fillMode;
8405
+ return this._fillMode();
7926
8406
  }
7927
8407
  /**
7928
8408
  * Specifies the appearance fill style of the avatar.
@@ -7938,16 +8418,31 @@ class AvatarComponent {
7938
8418
  *
7939
8419
  * @default false
7940
8420
  */
7941
- border = false;
8421
+ set border(value) {
8422
+ this._border.set(value);
8423
+ }
8424
+ get border() {
8425
+ return this._border();
8426
+ }
7942
8427
  /**
7943
8428
  * Defines a CSS class or multiple classes separated by spaces.
7944
8429
  * You can apply these classes to a `span` element inside the Avatar and also use custom icons.
7945
8430
  */
7946
- iconClass;
8431
+ set iconClass(value) {
8432
+ this._iconClass.set(value);
8433
+ }
8434
+ get iconClass() {
8435
+ return this._iconClass();
8436
+ }
7947
8437
  /**
7948
8438
  * Sets the width of the Avatar.
7949
8439
  */
7950
- width;
8440
+ set width(value) {
8441
+ this._width.set(value);
8442
+ }
8443
+ get width() {
8444
+ return this._width();
8445
+ }
7951
8446
  /**
7952
8447
  * @hidden
7953
8448
  */
@@ -7957,7 +8452,12 @@ class AvatarComponent {
7957
8452
  /**
7958
8453
  * Sets the height of the Avatar.
7959
8454
  */
7960
- height;
8455
+ set height(value) {
8456
+ this._height.set(value);
8457
+ }
8458
+ get height() {
8459
+ return this._height();
8460
+ }
7961
8461
  /**
7962
8462
  * @hidden
7963
8463
  */
@@ -7968,20 +8468,40 @@ class AvatarComponent {
7968
8468
  * Defines the CSS styles that render on the content element of the Avatar.
7969
8469
  * Supports the type of values that [`ngStyle`](link:site.data.urls.angular['ngstyleapi']) supports.
7970
8470
  */
7971
- cssStyle;
8471
+ set cssStyle(value) {
8472
+ this._cssStyle.set(value);
8473
+ }
8474
+ get cssStyle() {
8475
+ return this._cssStyle();
8476
+ }
7972
8477
  /**
7973
8478
  * Sets the initials for the Avatar.
7974
8479
  */
7975
- initials;
8480
+ set initials(value) {
8481
+ this._initials.set(value);
8482
+ }
8483
+ get initials() {
8484
+ return this._initials();
8485
+ }
7976
8486
  /**
7977
8487
  * Sets the icon for the Avatar.
7978
8488
  * All [Kendo UI Icons](https://www.telerik.com/kendo-angular-ui/components/styling/icons#icons-list) are supported.
7979
8489
  */
7980
- icon;
8490
+ set icon(value) {
8491
+ this._icon.set(value);
8492
+ }
8493
+ get icon() {
8494
+ return this._icon();
8495
+ }
7981
8496
  /**
7982
8497
  * Sets the image source of the Avatar.
7983
8498
  */
7984
- imageSrc;
8499
+ set imageSrc(value) {
8500
+ this._imageSrc.set(value);
8501
+ }
8502
+ get imageSrc() {
8503
+ return this._imageSrc();
8504
+ }
7985
8505
  /**
7986
8506
  * Defines an SVG icon to render.
7987
8507
  * You can use either an [existing Kendo SVG icon](https://www.telerik.com/kendo-angular-ui/components/icons/svgicon/svgicon-list) or a custom one.
@@ -7990,16 +8510,24 @@ class AvatarComponent {
7990
8510
  if (isDevMode() && icon && this.icon && this.iconClass) {
7991
8511
  throw new Error('Setting both icon/svgIcon and iconClass options at the same time is not supported.');
7992
8512
  }
7993
- this._svgIcon = icon;
8513
+ this._svgIcon.set(icon);
7994
8514
  }
7995
8515
  get svgIcon() {
7996
- return this._svgIcon;
7997
- }
7998
- _themeColor = undefined;
7999
- _size = undefined;
8000
- _fillMode = undefined;
8001
- _rounded = undefined;
8002
- _svgIcon;
8516
+ return this._svgIcon();
8517
+ }
8518
+ _themeColor = signal(undefined, ...(ngDevMode ? [{ debugName: "_themeColor" }] : []));
8519
+ _size = signal(undefined, ...(ngDevMode ? [{ debugName: "_size" }] : []));
8520
+ _fillMode = signal(undefined, ...(ngDevMode ? [{ debugName: "_fillMode" }] : []));
8521
+ _rounded = signal(undefined, ...(ngDevMode ? [{ debugName: "_rounded" }] : []));
8522
+ _svgIcon = signal(undefined, ...(ngDevMode ? [{ debugName: "_svgIcon" }] : []));
8523
+ _border = signal(false, ...(ngDevMode ? [{ debugName: "_border" }] : []));
8524
+ _iconClass = signal(undefined, ...(ngDevMode ? [{ debugName: "_iconClass" }] : []));
8525
+ _width = signal(undefined, ...(ngDevMode ? [{ debugName: "_width" }] : []));
8526
+ _height = signal(undefined, ...(ngDevMode ? [{ debugName: "_height" }] : []));
8527
+ _cssStyle = signal(undefined, ...(ngDevMode ? [{ debugName: "_cssStyle" }] : []));
8528
+ _initials = signal(undefined, ...(ngDevMode ? [{ debugName: "_initials" }] : []));
8529
+ _icon = signal(undefined, ...(ngDevMode ? [{ debugName: "_icon" }] : []));
8530
+ _imageSrc = signal(undefined, ...(ngDevMode ? [{ debugName: "_imageSrc" }] : []));
8003
8531
  _themeColorClasses = ['k-avatar-primary', 'k-avatar-secondary', 'k-avatar-tertiary', 'k-avatar-base'];
8004
8532
  constructor(localization, renderer, element) {
8005
8533
  this.localization = localization;
@@ -8103,7 +8631,7 @@ class AvatarComponent {
8103
8631
  </kendo-icon-wrapper>
8104
8632
  </span>
8105
8633
  }
8106
- `, isInline: true, dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: LocalizedAvatarMessagesDirective, selector: "[kendoAvatarLocalizedMessages]" }] });
8634
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: LocalizedAvatarMessagesDirective, selector: "[kendoAvatarLocalizedMessages]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
8107
8635
  }
8108
8636
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: AvatarComponent, decorators: [{
8109
8637
  type: Component,
@@ -8151,7 +8679,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
8151
8679
  }
8152
8680
  `,
8153
8681
  standalone: true,
8154
- imports: [NgStyle, IconWrapperComponent, LocalizedAvatarMessagesDirective]
8682
+ imports: [NgStyle, IconWrapperComponent, LocalizedAvatarMessagesDirective],
8683
+ changeDetection: ChangeDetectionStrategy.OnPush
8155
8684
  }]
8156
8685
  }], ctorParameters: () => [{ type: i1.LocalizationService }, { type: i0.Renderer2 }, { type: i0.ElementRef }], propDecorators: { hostClass: [{
8157
8686
  type: HostBinding,
@@ -8278,27 +8807,40 @@ class CardComponent {
8278
8807
  /**
8279
8808
  * @hidden
8280
8809
  */
8281
- direction;
8810
+ get direction() {
8811
+ return this._direction();
8812
+ }
8282
8813
  /**
8283
8814
  * Specifies the layout of the Card content.
8284
8815
  *
8285
8816
  * @default 'vertical'
8286
8817
  */
8287
- orientation = 'vertical';
8818
+ set orientation(value) {
8819
+ this._orientation.set(value);
8820
+ }
8821
+ get orientation() {
8822
+ return this._orientation();
8823
+ }
8288
8824
  /**
8289
8825
  * Defines the width of the Card.
8290
8826
  *
8291
8827
  * @default '285px'
8292
8828
  */
8293
- width = '285px';
8829
+ set width(value) {
8830
+ this._width.set(value);
8831
+ }
8832
+ get width() {
8833
+ return this._width();
8834
+ }
8835
+ _direction = signal(undefined, ...(ngDevMode ? [{ debugName: "_direction" }] : []));
8836
+ _orientation = signal('vertical', ...(ngDevMode ? [{ debugName: "_orientation" }] : []));
8837
+ _width = signal('285px', ...(ngDevMode ? [{ debugName: "_width" }] : []));
8294
8838
  dynamicRTLSubscription;
8295
- rtl = false;
8296
8839
  constructor(localizationService) {
8297
8840
  this.localizationService = localizationService;
8298
8841
  validatePackage(packageMetadata);
8299
8842
  this.dynamicRTLSubscription = this.localizationService.changes.subscribe(({ rtl }) => {
8300
- this.rtl = rtl;
8301
- this.direction = this.rtl ? 'rtl' : 'ltr';
8843
+ this._direction.set(rtl ? 'rtl' : 'ltr');
8302
8844
  });
8303
8845
  }
8304
8846
  ngOnDestroy() {
@@ -8315,7 +8857,7 @@ class CardComponent {
8315
8857
  }
8316
8858
  ], ngImport: i0, template: `
8317
8859
  <ng-content></ng-content>
8318
- `, isInline: true });
8860
+ `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
8319
8861
  }
8320
8862
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: CardComponent, decorators: [{
8321
8863
  type: Component,
@@ -8331,7 +8873,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
8331
8873
  template: `
8332
8874
  <ng-content></ng-content>
8333
8875
  `,
8334
- standalone: true
8876
+ standalone: true,
8877
+ changeDetection: ChangeDetectionStrategy.OnPush
8335
8878
  }]
8336
8879
  }], ctorParameters: () => [{ type: i1.LocalizationService }], propDecorators: { hostClass: [{
8337
8880
  type: HostBinding,
@@ -8371,7 +8914,7 @@ class CardHeaderComponent {
8371
8914
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: CardHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8372
8915
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.27", type: CardHeaderComponent, isStandalone: true, selector: "kendo-card-header", host: { properties: { "class.k-card-header": "this.hostClass" } }, ngImport: i0, template: `
8373
8916
  <ng-content></ng-content>
8374
- `, isInline: true });
8917
+ `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
8375
8918
  }
8376
8919
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: CardHeaderComponent, decorators: [{
8377
8920
  type: Component,
@@ -8380,7 +8923,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
8380
8923
  template: `
8381
8924
  <ng-content></ng-content>
8382
8925
  `,
8383
- standalone: true
8926
+ standalone: true,
8927
+ changeDetection: ChangeDetectionStrategy.OnPush
8384
8928
  }]
8385
8929
  }], propDecorators: { hostClass: [{
8386
8930
  type: HostBinding,
@@ -8403,7 +8947,7 @@ class CardBodyComponent {
8403
8947
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: CardBodyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8404
8948
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.27", type: CardBodyComponent, isStandalone: true, selector: "kendo-card-body", host: { properties: { "class.k-card-body": "this.hostClass" } }, ngImport: i0, template: `
8405
8949
  <ng-content></ng-content>
8406
- `, isInline: true });
8950
+ `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
8407
8951
  }
8408
8952
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: CardBodyComponent, decorators: [{
8409
8953
  type: Component,
@@ -8412,7 +8956,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
8412
8956
  template: `
8413
8957
  <ng-content></ng-content>
8414
8958
  `,
8415
- standalone: true
8959
+ standalone: true,
8960
+ changeDetection: ChangeDetectionStrategy.OnPush
8416
8961
  }]
8417
8962
  }], propDecorators: { hostClass: [{
8418
8963
  type: HostBinding,
@@ -8435,7 +8980,7 @@ class CardFooterComponent {
8435
8980
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: CardFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8436
8981
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.27", type: CardFooterComponent, isStandalone: true, selector: "kendo-card-footer", host: { properties: { "class.k-card-footer": "this.hostClass" } }, ngImport: i0, template: `
8437
8982
  <ng-content></ng-content>
8438
- `, isInline: true });
8983
+ `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
8439
8984
  }
8440
8985
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: CardFooterComponent, decorators: [{
8441
8986
  type: Component,
@@ -8444,7 +8989,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
8444
8989
  template: `
8445
8990
  <ng-content></ng-content>
8446
8991
  `,
8447
- standalone: true
8992
+ standalone: true,
8993
+ changeDetection: ChangeDetectionStrategy.OnPush
8448
8994
  }]
8449
8995
  }], propDecorators: { hostClass: [{
8450
8996
  type: HostBinding,
@@ -8488,13 +9034,23 @@ class CardActionsComponent {
8488
9034
  *
8489
9035
  * @default 'horizontal'
8490
9036
  */
8491
- orientation = 'horizontal';
9037
+ set orientation(value) {
9038
+ this._orientation.set(value);
9039
+ }
9040
+ get orientation() {
9041
+ return this._orientation();
9042
+ }
8492
9043
  /**
8493
9044
  * Specifies the layout of the Card action buttons.
8494
9045
  *
8495
9046
  * @default 'start'
8496
9047
  */
8497
- layout = 'start';
9048
+ set layout(value) {
9049
+ this._layout.set(value);
9050
+ }
9051
+ get layout() {
9052
+ return this._layout();
9053
+ }
8498
9054
  /**
8499
9055
  * Defines the Card actions declaratively.
8500
9056
  * You can pass an array of `CardAction` objects or a `TemplateRef`.
@@ -8519,6 +9075,8 @@ class CardActionsComponent {
8519
9075
  * @hidden
8520
9076
  */
8521
9077
  actionsTemplate;
9078
+ _orientation = signal('horizontal', ...(ngDevMode ? [{ debugName: "_orientation" }] : []));
9079
+ _layout = signal('start', ...(ngDevMode ? [{ debugName: "_layout" }] : []));
8522
9080
  /**
8523
9081
  * @hidden
8524
9082
  */
@@ -8548,7 +9106,7 @@ class CardActionsComponent {
8548
9106
  @if (actionsTemplate) {
8549
9107
  <ng-template [ngTemplateOutlet]="actionsTemplate"></ng-template>
8550
9108
  }
8551
- `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
9109
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
8552
9110
  }
8553
9111
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: CardActionsComponent, decorators: [{
8554
9112
  type: Component,
@@ -8578,7 +9136,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
8578
9136
  }
8579
9137
  `,
8580
9138
  standalone: true,
8581
- imports: [NgTemplateOutlet]
9139
+ imports: [NgTemplateOutlet],
9140
+ changeDetection: ChangeDetectionStrategy.OnPush
8582
9141
  }]
8583
9142
  }], propDecorators: { hostClass: [{
8584
9143
  type: HostBinding,
@@ -8863,19 +9422,34 @@ class ExpansionPanelComponent {
8863
9422
  * Specifies the primary text in the header of the ExpansionPanel
8864
9423
  * ([see example](https://www.telerik.com/kendo-angular-ui/components/layout/expansionpanel/title#titles-and-subtitles)).
8865
9424
  */
8866
- title = '';
9425
+ set title(value) {
9426
+ this._title.set(value);
9427
+ }
9428
+ get title() {
9429
+ return this._title();
9430
+ }
8867
9431
  /**
8868
9432
  * Specifies the secondary text in the header of the ExpansionPanel, which renders next to the collapse/expand icon
8869
9433
  * ([see example](https://www.telerik.com/kendo-angular-ui/components/layout/expansionpanel/title#titles-and-subtitles)).
8870
9434
  */
8871
- subtitle = '';
9435
+ set subtitle(value) {
9436
+ this._subtitle.set(value);
9437
+ }
9438
+ get subtitle() {
9439
+ return this._subtitle();
9440
+ }
8872
9441
  /**
8873
9442
  * Specifies whether the ExpansionPanel is disabled. If disabled, the ExpansionPanel can be neither expanded nor collapsed
8874
9443
  * ([see example](https://www.telerik.com/kendo-angular-ui/components/layout/expansionpanel/disabled-state)).
8875
9444
  *
8876
9445
  * @default false
8877
9446
  */
8878
- disabled = false;
9447
+ set disabled(value) {
9448
+ this._disabled.set(value);
9449
+ }
9450
+ get disabled() {
9451
+ return this._disabled();
9452
+ }
8879
9453
  /**
8880
9454
  * Specifies whether the ExpansionPanel is expanded. The property supports two-way binding
8881
9455
  * ([see example](https://www.telerik.com/kendo-angular-ui/components/layout/expansionpanel/interaction#setting-the-initial-state)).
@@ -8886,7 +9460,7 @@ class ExpansionPanelComponent {
8886
9460
  if (value === this.expanded) {
8887
9461
  return;
8888
9462
  }
8889
- this._expanded = value;
9463
+ this._expanded.set(value);
8890
9464
  if (this.expanded) {
8891
9465
  this.removeContentHiddenClass();
8892
9466
  }
@@ -8895,7 +9469,7 @@ class ExpansionPanelComponent {
8895
9469
  }
8896
9470
  }
8897
9471
  get expanded() {
8898
- return this._expanded;
9472
+ return this._expanded();
8899
9473
  }
8900
9474
  /**
8901
9475
  * Defines an SVG icon for the expanded state of the component.
@@ -8905,10 +9479,10 @@ class ExpansionPanelComponent {
8905
9479
  if (isDevMode() && icon && this.expandIcon) {
8906
9480
  throw new Error('Setting both expandIcon/svgExpandIcon options at the same time is not supported.');
8907
9481
  }
8908
- this._svgExpandIcon = icon;
9482
+ this._svgExpandIcon.set(icon);
8909
9483
  }
8910
9484
  get svgExpandIcon() {
8911
- return this._svgExpandIcon;
9485
+ return this._svgExpandIcon();
8912
9486
  }
8913
9487
  /**
8914
9488
  * Defines an SVG icon for the collapsed state of the component.
@@ -8918,28 +9492,43 @@ class ExpansionPanelComponent {
8918
9492
  if (isDevMode() && icon && this.collapseIcon) {
8919
9493
  throw new Error('Setting both collapseIcon/svgCollapseIcon options at the same time is not supported.');
8920
9494
  }
8921
- this._svgCollapseIcon = icon;
9495
+ this._svgCollapseIcon.set(icon);
8922
9496
  }
8923
9497
  get svgCollapseIcon() {
8924
- return this._svgCollapseIcon;
9498
+ return this._svgCollapseIcon();
8925
9499
  }
8926
9500
  /**
8927
9501
  * Sets a custom icon via CSS class(es) for the collapsed state of the component
8928
9502
  * ([see example](https://www.telerik.com/kendo-angular-ui/components/layout/expansionpanel/icons#icons)).
8929
9503
  */
8930
- expandIcon;
9504
+ set expandIcon(value) {
9505
+ this._expandIcon.set(value);
9506
+ }
9507
+ get expandIcon() {
9508
+ return this._expandIcon();
9509
+ }
8931
9510
  /**
8932
9511
  * Sets a custom icon via CSS class(es) for the expanded state of the component
8933
9512
  * ([see example](https://www.telerik.com/kendo-angular-ui/components/layout/expansionpanel/icons#icons)).
8934
9513
  */
8935
- collapseIcon;
9514
+ set collapseIcon(value) {
9515
+ this._collapseIcon.set(value);
9516
+ }
9517
+ get collapseIcon() {
9518
+ return this._collapseIcon();
9519
+ }
8936
9520
  /**
8937
9521
  * Specifies the animation settings of the ExpansionPanel
8938
9522
  * ([see example](https://www.telerik.com/kendo-angular-ui/components/layout/expansionpanel/animations)).
8939
9523
  *
8940
9524
  * @default true
8941
9525
  */
8942
- animation = true;
9526
+ set animation(value) {
9527
+ this._animation.set(value);
9528
+ }
9529
+ get animation() {
9530
+ return this._animation();
9531
+ }
8943
9532
  /**
8944
9533
  * Fires when the `expanded` property of the component is updated.
8945
9534
  * Used to provide a two-way binding for the `expanded` property
@@ -8974,16 +9563,25 @@ class ExpansionPanelComponent {
8974
9563
  get disabledClass() {
8975
9564
  return this.disabled;
8976
9565
  }
8977
- direction;
9566
+ get direction() {
9567
+ return this._direction();
9568
+ }
8978
9569
  /**
8979
9570
  * @hidden
8980
9571
  */
8981
9572
  focused = false;
8982
9573
  animationEnd = new EventEmitter();
8983
9574
  subscriptions = new Subscription();
8984
- _expanded = false;
8985
- _svgExpandIcon = chevronDownIcon;
8986
- _svgCollapseIcon = chevronUpIcon;
9575
+ _title = signal('', ...(ngDevMode ? [{ debugName: "_title" }] : []));
9576
+ _subtitle = signal('', ...(ngDevMode ? [{ debugName: "_subtitle" }] : []));
9577
+ _disabled = signal(false, ...(ngDevMode ? [{ debugName: "_disabled" }] : []));
9578
+ _expanded = signal(false, ...(ngDevMode ? [{ debugName: "_expanded" }] : []));
9579
+ _expandIcon = signal(undefined, ...(ngDevMode ? [{ debugName: "_expandIcon" }] : []));
9580
+ _collapseIcon = signal(undefined, ...(ngDevMode ? [{ debugName: "_collapseIcon" }] : []));
9581
+ _animation = signal(true, ...(ngDevMode ? [{ debugName: "_animation" }] : []));
9582
+ _svgExpandIcon = signal(chevronDownIcon, ...(ngDevMode ? [{ debugName: "_svgExpandIcon" }] : []));
9583
+ _svgCollapseIcon = signal(chevronUpIcon, ...(ngDevMode ? [{ debugName: "_svgCollapseIcon" }] : []));
9584
+ _direction = signal('ltr', ...(ngDevMode ? [{ debugName: "_direction" }] : []));
8987
9585
  nextId = incrementingId++;
8988
9586
  constructor(renderer, hostElement, ngZone, localizationService, builder) {
8989
9587
  this.renderer = renderer;
@@ -8992,11 +9590,11 @@ class ExpansionPanelComponent {
8992
9590
  this.localizationService = localizationService;
8993
9591
  this.builder = builder;
8994
9592
  validatePackage(packageMetadata);
8995
- this.direction = localizationService.rtl ? 'rtl' : 'ltr';
9593
+ this._direction.set(localizationService.rtl ? 'rtl' : 'ltr');
8996
9594
  }
8997
9595
  ngOnInit() {
8998
9596
  this.renderer.removeAttribute(this.hostElement.nativeElement, 'title');
8999
- this.subscriptions = this.localizationService.changes.subscribe(({ rtl }) => { this.direction = rtl ? 'rtl' : 'ltr'; });
9597
+ this.subscriptions = this.localizationService.changes.subscribe(({ rtl }) => { this._direction.set(rtl ? 'rtl' : 'ltr'); });
9000
9598
  const elem = this.hostElement.nativeElement;
9001
9599
  const header = this.header.nativeElement;
9002
9600
  this.subscriptions.add(this.renderer.listen(header, 'focus', () => this.focusExpansionPanel(elem)));
@@ -9141,7 +9739,7 @@ class ExpansionPanelComponent {
9141
9739
  }
9142
9740
  }
9143
9741
  setExpanded(value) {
9144
- this._expanded = value;
9742
+ this._expanded.set(value);
9145
9743
  this.expandedChange.emit(value);
9146
9744
  }
9147
9745
  animateContent() {
@@ -9227,7 +9825,7 @@ class ExpansionPanelComponent {
9227
9825
  <ng-content></ng-content>
9228
9826
  </div>
9229
9827
  </div>
9230
- `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }] });
9828
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
9231
9829
  }
9232
9830
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: ExpansionPanelComponent, decorators: [{
9233
9831
  type: Component,
@@ -9285,7 +9883,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
9285
9883
  </div>
9286
9884
  `,
9287
9885
  standalone: true,
9288
- imports: [NgTemplateOutlet, IconWrapperComponent]
9886
+ imports: [NgTemplateOutlet, IconWrapperComponent],
9887
+ changeDetection: ChangeDetectionStrategy.OnPush
9289
9888
  }]
9290
9889
  }], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i1.LocalizationService }, { type: i2.AnimationBuilder }], propDecorators: { title: [{
9291
9890
  type: Input
@@ -9617,7 +10216,7 @@ class TileLayoutDraggingService {
9617
10216
  cdr;
9618
10217
  localization;
9619
10218
  reorderable = new BehaviorSubject(null);
9620
- resizable = new BehaviorSubject(null);
10219
+ resizable = signal(null, ...(ngDevMode ? [{ debugName: "resizable" }] : []));
9621
10220
  reorder = new Subject();
9622
10221
  resize = new Subject();
9623
10222
  tileLayoutSettings;
@@ -9733,7 +10332,7 @@ class TileLayoutDraggingService {
9733
10332
  });
9734
10333
  this.cdr.markForCheck();
9735
10334
  }
9736
- else if (this.resizable && resizing) {
10335
+ else if (this.resizable() && resizing) {
9737
10336
  this.zone.run(() => {
9738
10337
  this.startingPoint = {
9739
10338
  top: originalEvent.clientY,
@@ -10222,12 +10821,13 @@ class TileLayoutItemHeaderComponent {
10222
10821
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: TileLayoutItemHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10223
10822
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.27", type: TileLayoutItemHeaderComponent, isStandalone: true, selector: "kendo-tilelayout-item-header", host: { properties: { "class.k-tilelayout-item-header": "this.hostClass", "class.k-card-header": "this.hostClass" } }, ngImport: i0, template: `
10224
10823
  <ng-content></ng-content>
10225
- `, isInline: true });
10824
+ `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
10226
10825
  }
10227
10826
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: TileLayoutItemHeaderComponent, decorators: [{
10228
10827
  type: Component,
10229
10828
  args: [{
10230
10829
  selector: 'kendo-tilelayout-item-header',
10830
+ changeDetection: ChangeDetectionStrategy.OnPush,
10231
10831
  template: `
10232
10832
  <ng-content></ng-content>
10233
10833
  `,
@@ -10247,8 +10847,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
10247
10847
  class TileLayoutResizeHandleDirective {
10248
10848
  el;
10249
10849
  renderer;
10250
- resizeDirection;
10251
- rtl;
10850
+ set resizeDirection(value) { this._resizeDirection.set(value); }
10851
+ get resizeDirection() { return this._resizeDirection(); }
10852
+ set rtl(value) { this._rtl.set(value); }
10853
+ get rtl() { return this._rtl(); }
10854
+ _resizeDirection = signal(undefined, ...(ngDevMode ? [{ debugName: "_resizeDirection" }] : []));
10855
+ _rtl = signal(undefined, ...(ngDevMode ? [{ debugName: "_rtl" }] : []));
10252
10856
  constructor(el, renderer) {
10253
10857
  this.el = el;
10254
10858
  this.renderer = renderer;
@@ -10320,47 +10924,54 @@ class TileLayoutItemComponent {
10320
10924
  /**
10321
10925
  * Sets the title text that appears in the item header ([see example](https://www.telerik.com/kendo-angular-ui/components/layout/tilelayout/tiles-configuration#tiles-configuration)).
10322
10926
  */
10323
- title;
10927
+ set title(value) { this._title.set(value); }
10928
+ get title() { return this._title(); }
10324
10929
  /**
10325
10930
  * Sets how many rows the tile item spans ([see example](https://www.telerik.com/kendo-angular-ui/components/layout/tilelayout/resizing#programmatic-resizing)).
10326
10931
  * @default 1
10327
10932
  */
10328
- rowSpan = 1;
10933
+ set rowSpan(value) { this._rowSpan.set(value); }
10934
+ get rowSpan() { return this._rowSpan(); }
10329
10935
  /**
10330
10936
  * Sets how many columns the tile item spans ([see example](https://www.telerik.com/kendo-angular-ui/components/layout/tilelayout/resizing#programmatic-resizing)).
10331
10937
  * @default 1
10332
10938
  */
10333
- colSpan = 1;
10939
+ set colSpan(value) { this._colSpan.set(value); }
10940
+ get colSpan() { return this._colSpan(); }
10334
10941
  /**
10335
10942
  * Sets the order of the tile item within the TileLayout.
10336
10943
  * When not set, items receive increasing order values based on their DOM position.
10337
10944
  */
10338
10945
  set order(value) {
10339
- this._order = value;
10340
- this.renderer.setStyle(this.elem.nativeElement, 'order', `${this._order}`);
10946
+ this._order.set(value);
10947
+ this.renderer.setStyle(this.elem.nativeElement, 'order', `${this._order()}`);
10341
10948
  }
10342
10949
  get order() {
10343
- return this._order;
10950
+ return this._order();
10344
10951
  }
10345
10952
  /**
10346
10953
  * Sets the starting column position of the item ([see example](https://www.telerik.com/kendo-angular-ui/components/layout/tilelayout/tiles-configuration#size-and-position)).
10347
10954
  */
10348
- col;
10955
+ set col(value) { this._col.set(value); }
10956
+ get col() { return this._col(); }
10349
10957
  /**
10350
10958
  * Sets the starting row position of the item ([see example](https://www.telerik.com/kendo-angular-ui/components/layout/tilelayout/tiles-configuration#size-and-position)).
10351
10959
  */
10352
- row;
10960
+ set row(value) { this._row.set(value); }
10961
+ get row() { return this._row(); }
10353
10962
  /**
10354
10963
  * Enables or disables individual item reordering.
10355
10964
  *
10356
10965
  * @default true
10357
10966
  */
10358
- reorderable = true;
10967
+ set reorderable(value) { this._reorderable.set(value); }
10968
+ get reorderable() { return this._reorderable(); }
10359
10969
  /**
10360
10970
  * Enables or disables individual item resizing.
10361
10971
  * @default true
10362
10972
  */
10363
- resizable = true;
10973
+ set resizable(value) { this._resizable.set(value); }
10974
+ get resizable() { return this._resizable(); }
10364
10975
  itemClass = true;
10365
10976
  hostRole = 'listitem';
10366
10977
  get hostTabindex() {
@@ -10400,16 +11011,16 @@ class TileLayoutItemComponent {
10400
11011
  * @hidden
10401
11012
  */
10402
11013
  get isResizable() {
10403
- return this.resizable && this.draggingService.resizable.getValue();
11014
+ return this.resizable && this.draggingService.resizable();
10404
11015
  }
10405
11016
  /**
10406
11017
  * @hidden
10407
11018
  */
10408
- resizeDirections;
11019
+ get resizeDirections() { return this._resizeDirections(); }
10409
11020
  /**
10410
11021
  * @hidden
10411
11022
  */
10412
- rtl;
11023
+ get rtl() { return this._rtl(); }
10413
11024
  headers;
10414
11025
  /**
10415
11026
  * @hidden
@@ -10418,7 +11029,16 @@ class TileLayoutItemComponent {
10418
11029
  subs = new Subscription();
10419
11030
  keyboardNavigationSubs;
10420
11031
  focusableItems;
10421
- _order;
11032
+ _order = signal(undefined, ...(ngDevMode ? [{ debugName: "_order" }] : []));
11033
+ _title = signal(undefined, ...(ngDevMode ? [{ debugName: "_title" }] : []));
11034
+ _rowSpan = signal(1, ...(ngDevMode ? [{ debugName: "_rowSpan" }] : []));
11035
+ _colSpan = signal(1, ...(ngDevMode ? [{ debugName: "_colSpan" }] : []));
11036
+ _col = signal(undefined, ...(ngDevMode ? [{ debugName: "_col" }] : []));
11037
+ _row = signal(undefined, ...(ngDevMode ? [{ debugName: "_row" }] : []));
11038
+ _reorderable = signal(true, ...(ngDevMode ? [{ debugName: "_reorderable" }] : []));
11039
+ _resizable = signal(true, ...(ngDevMode ? [{ debugName: "_resizable" }] : []));
11040
+ _rtl = signal(undefined, ...(ngDevMode ? [{ debugName: "_rtl" }] : []));
11041
+ _resizeDirections;
10422
11042
  constructor(elem, zone, renderer, localization, draggingService, keyboardNavigationService) {
10423
11043
  this.elem = elem;
10424
11044
  this.zone = zone;
@@ -10426,12 +11046,11 @@ class TileLayoutItemComponent {
10426
11046
  this.localization = localization;
10427
11047
  this.draggingService = draggingService;
10428
11048
  this.keyboardNavigationService = keyboardNavigationService;
11049
+ this._resizeDirections = computed(() => this.draggingService.resizable() && this._resizable()
11050
+ ? (this._rtl() ? RTL_RESIZE_DIRECTIONS : RESIZE_DIRECTIONS)
11051
+ : undefined, ...(ngDevMode ? [{ debugName: "_resizeDirections" }] : []));
10429
11052
  this.subs.add(this.localization.changes.subscribe(({ rtl }) => {
10430
- this.rtl = rtl;
10431
- }));
10432
- this.subs.add(this.draggingService.resizable.subscribe(resizable => {
10433
- this.resizeDirections = resizable && this.resizable ?
10434
- this.rtl ? RTL_RESIZE_DIRECTIONS : RESIZE_DIRECTIONS : undefined;
11053
+ this._rtl.set(rtl);
10435
11054
  }));
10436
11055
  this.titleId = getId('k-tilelayout-title');
10437
11056
  }
@@ -10464,10 +11083,6 @@ class TileLayoutItemComponent {
10464
11083
  if (changes['reorderable'] && !changes['reorderable'].firstChange) {
10465
11084
  this.toggleCursorClass(changes['reorderable'].currentValue && this.draggingService.reorderable.getValue());
10466
11085
  }
10467
- if (changes['resizable']) {
10468
- this.resizeDirections = this.resizable && this.draggingService.resizable.getValue() ?
10469
- this.rtl ? RTL_RESIZE_DIRECTIONS : RESIZE_DIRECTIONS : undefined;
10470
- }
10471
11086
  }
10472
11087
  ngOnDestroy() {
10473
11088
  this.subs.unsubscribe();
@@ -10511,12 +11126,13 @@ class TileLayoutItemComponent {
10511
11126
  </div>
10512
11127
  }
10513
11128
  }
10514
- `, isInline: true, dependencies: [{ kind: "component", type: TileLayoutItemHeaderComponent, selector: "kendo-tilelayout-item-header" }, { kind: "directive", type: TileLayoutResizeHandleDirective, selector: "[kendoTileLayoutResizeHandle]", inputs: ["resizeDirection", "rtl"] }] });
11129
+ `, isInline: true, dependencies: [{ kind: "component", type: TileLayoutItemHeaderComponent, selector: "kendo-tilelayout-item-header" }, { kind: "directive", type: TileLayoutResizeHandleDirective, selector: "[kendoTileLayoutResizeHandle]", inputs: ["resizeDirection", "rtl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
10515
11130
  }
10516
11131
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: TileLayoutItemComponent, decorators: [{
10517
11132
  type: Component,
10518
11133
  args: [{
10519
11134
  selector: 'kendo-tilelayout-item',
11135
+ changeDetection: ChangeDetectionStrategy.OnPush,
10520
11136
  template: `
10521
11137
  @if (title) {
10522
11138
  <kendo-tilelayout-item-header>
@@ -10619,13 +11235,15 @@ class TileLayoutComponent {
10619
11235
  * Specifies the number of columns ([see example](https://www.telerik.com/kendo-angular-ui/components/layout/tilelayout/tiles-configuration#size-and-position)).
10620
11236
  * @default 1
10621
11237
  */
10622
- columns = 1;
11238
+ set columns(value) { this._columns.set(value); }
11239
+ get columns() { return this._columns(); }
10623
11240
  /**
10624
11241
  * Sets the width of the columns.
10625
11242
  * Use numeric values for pixels or string values for other CSS units ([see example](https://www.telerik.com/kendo-angular-ui/components/layout/tilelayout/tiles-configuration#size-and-position)).
10626
11243
  * @default '1fr'
10627
11244
  */
10628
- columnWidth = '1fr';
11245
+ set columnWidth(value) { this._columnWidth.set(value); }
11246
+ get columnWidth() { return this._columnWidth(); }
10629
11247
  /**
10630
11248
  * Sets the spacing between layout items in pixels.
10631
11249
  * Use an object with `rows` and `columns` properties to set different horizontal and vertical spacing.
@@ -10634,27 +11252,33 @@ class TileLayoutComponent {
10634
11252
  * @default { rows: 16, columns: 16 }
10635
11253
  */
10636
11254
  set gap(value) {
10637
- this._gap = (typeof value === 'number') ? { rows: value, columns: value } : Object.assign(this._gap, value);
11255
+ const newGap = (typeof value === 'number')
11256
+ ? { rows: value, columns: value }
11257
+ : Object.assign({}, this._gap(), value);
11258
+ this._gap.set(newGap);
10638
11259
  }
10639
11260
  get gap() {
10640
- return this._gap;
11261
+ return this._gap();
10641
11262
  }
10642
11263
  /**
10643
11264
  * Enables or disables item reordering ([see example](https://www.telerik.com/kendo-angular-ui/components/layout/tilelayout/reordering)).
10644
11265
  * @default false
10645
11266
  */
10646
- reorderable = false;
11267
+ set reorderable(value) { this._reorderable.set(value); }
11268
+ get reorderable() { return this._reorderable(); }
10647
11269
  /**
10648
11270
  * Enables or disables item resizing ([see example](https://www.telerik.com/kendo-angular-ui/components/layout/tilelayout/resizing)).
10649
11271
  * @default false
10650
11272
  */
10651
- resizable = false;
11273
+ set resizable(value) { this._resizable.set(value); }
11274
+ get resizable() { return this._resizable(); }
10652
11275
  /**
10653
11276
  * Sets the height of the rows.
10654
11277
  * Use numeric values for pixels or string values for other CSS units ([see example](https://www.telerik.com/kendo-angular-ui/components/layout/tilelayout/tiles-configuration#size-and-position)).
10655
11278
  * @default '1fr'
10656
11279
  */
10657
- rowHeight = '1fr';
11280
+ set rowHeight(value) { this._rowHeight.set(value); }
11281
+ get rowHeight() { return this._rowHeight(); }
10658
11282
  /**
10659
11283
  *
10660
11284
  * Controls how the auto-placement algorithm works, specifying exactly how auto-placed items are flowed in the TileLayout ([see example](https://www.telerik.com/kendo-angular-ui/components/layout/tilelayout/auto-flow)).
@@ -10662,7 +11286,8 @@ class TileLayoutComponent {
10662
11286
  * For further reference, check the [grid-auto-flow CSS article](https://developer.mozilla.org/en-US/docs/Web/CSS/grid-auto-flow).
10663
11287
  * @default 'column'
10664
11288
  */
10665
- autoFlow = 'column';
11289
+ set autoFlow(value) { this._autoFlow.set(value); }
11290
+ get autoFlow() { return this._autoFlow(); }
10666
11291
  /**
10667
11292
  * Enables or disables [keyboard navigation](https://www.telerik.com/kendo-angular-ui/components/layout/tilelayout/keyboard-navigation).
10668
11293
  * @default true
@@ -10670,7 +11295,8 @@ class TileLayoutComponent {
10670
11295
  * @remarks
10671
11296
  * This property is related to accessibility.
10672
11297
  */
10673
- navigable = true;
11298
+ set navigable(value) { this._navigable.set(value); }
11299
+ get navigable() { return this._navigable(); }
10674
11300
  /**
10675
11301
  * Fires when item reordering is completed ([see example](https://www.telerik.com/kendo-angular-ui/components/layout/tilelayout/reordering)).
10676
11302
  * You can prevent this event to cancel the reorder operation.
@@ -10686,7 +11312,9 @@ class TileLayoutComponent {
10686
11312
  get gapStyle() {
10687
11313
  return `${this.gap.rows}px ${this.gap.columns}px`;
10688
11314
  }
10689
- direction;
11315
+ get direction() {
11316
+ return this._direction();
11317
+ }
10690
11318
  get currentColStart() {
10691
11319
  return this.draggingService.colStart;
10692
11320
  }
@@ -10715,10 +11343,15 @@ class TileLayoutComponent {
10715
11343
  licenseMessage;
10716
11344
  draggable;
10717
11345
  subs = new Subscription();
10718
- _gap = {
10719
- rows: 16,
10720
- columns: 16
10721
- };
11346
+ _columns = signal(1, ...(ngDevMode ? [{ debugName: "_columns" }] : []));
11347
+ _columnWidth = signal('1fr', ...(ngDevMode ? [{ debugName: "_columnWidth" }] : []));
11348
+ _gap = signal({ rows: 16, columns: 16 }, ...(ngDevMode ? [{ debugName: "_gap" }] : []));
11349
+ _reorderable = signal(false, ...(ngDevMode ? [{ debugName: "_reorderable" }] : []));
11350
+ _resizable = signal(false, ...(ngDevMode ? [{ debugName: "_resizable" }] : []));
11351
+ _rowHeight = signal('1fr', ...(ngDevMode ? [{ debugName: "_rowHeight" }] : []));
11352
+ _autoFlow = signal('column', ...(ngDevMode ? [{ debugName: "_autoFlow" }] : []));
11353
+ _navigable = signal(true, ...(ngDevMode ? [{ debugName: "_navigable" }] : []));
11354
+ _direction = signal(undefined, ...(ngDevMode ? [{ debugName: "_direction" }] : []));
10722
11355
  constructor(zone, elem, renderer, localization, draggingService, navigationService) {
10723
11356
  this.zone = zone;
10724
11357
  this.elem = elem;
@@ -10734,7 +11367,7 @@ class TileLayoutComponent {
10734
11367
  this.applyColStyling();
10735
11368
  this.applyRowStyling();
10736
11369
  this.draggingService.reorderable.next(this.reorderable);
10737
- this.draggingService.resizable.next(this.resizable);
11370
+ this.draggingService.resizable.set(this.resizable);
10738
11371
  this.navigationService.owner = this;
10739
11372
  this.navigationService.navigable.next(this.navigable);
10740
11373
  if (hasObservers(this.reorder)) {
@@ -10748,13 +11381,11 @@ class TileLayoutComponent {
10748
11381
  this.initializeDraggable();
10749
11382
  }
10750
11383
  }));
10751
- this.subs.add(this.draggingService.resizable.subscribe(resizable => {
10752
- if (resizable && !this.draggable) {
10753
- this.initializeDraggable();
10754
- }
10755
- }));
11384
+ if (this.resizable && !this.draggable) {
11385
+ this.initializeDraggable();
11386
+ }
10756
11387
  this.subs.add(this.localization.changes.subscribe(({ rtl }) => {
10757
- this.direction = rtl ? 'rtl' : 'ltr';
11388
+ this._direction.set(rtl ? 'rtl' : 'ltr');
10758
11389
  }));
10759
11390
  }
10760
11391
  ngAfterViewInit() {
@@ -10782,7 +11413,11 @@ class TileLayoutComponent {
10782
11413
  this.draggingService.reorderable.next(changes['reorderable'].currentValue);
10783
11414
  }
10784
11415
  if (isChanged('resizable', changes)) {
10785
- this.draggingService.resizable.next(changes['resizable'].currentValue);
11416
+ const newResizable = changes['resizable'].currentValue;
11417
+ this.draggingService.resizable.set(newResizable);
11418
+ if (newResizable && !this.draggable) {
11419
+ this.initializeDraggable();
11420
+ }
10786
11421
  }
10787
11422
  if (changes['gap'] || changes['autoFlow'] || changes['columns']) {
10788
11423
  this.draggingService.tileLayoutSettings = this.draggingServiceConfig();
@@ -10886,12 +11521,13 @@ class TileLayoutComponent {
10886
11521
  @if (showLicenseWatermark) {
10887
11522
  <div kendoWatermarkOverlay [licenseMessage]="licenseMessage"></div>
10888
11523
  }
10889
- `, isInline: true, dependencies: [{ kind: "component", type: WatermarkOverlayComponent, selector: "div[kendoWatermarkOverlay], kendo-watermark-overlay", inputs: ["licenseMessage"] }] });
11524
+ `, isInline: true, dependencies: [{ kind: "component", type: WatermarkOverlayComponent, selector: "div[kendoWatermarkOverlay], kendo-watermark-overlay", inputs: ["licenseMessage"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
10890
11525
  }
10891
11526
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: TileLayoutComponent, decorators: [{
10892
11527
  type: Component,
10893
11528
  args: [{
10894
11529
  selector: 'kendo-tilelayout',
11530
+ changeDetection: ChangeDetectionStrategy.OnPush,
10895
11531
  providers: [
10896
11532
  LocalizationService,
10897
11533
  TileLayoutDraggingService,
@@ -10980,12 +11616,13 @@ class TileLayoutItemBodyComponent {
10980
11616
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: TileLayoutItemBodyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10981
11617
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.27", type: TileLayoutItemBodyComponent, isStandalone: true, selector: "kendo-tilelayout-item-body", host: { properties: { "class.k-tilelayout-item-body": "this.hostClass", "class.k-card-body": "this.hostClass", "style.min-height": "this.minHeight" } }, ngImport: i0, template: `
10982
11618
  <ng-content></ng-content>
10983
- `, isInline: true });
11619
+ `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
10984
11620
  }
10985
11621
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: TileLayoutItemBodyComponent, decorators: [{
10986
11622
  type: Component,
10987
11623
  args: [{
10988
11624
  selector: 'kendo-tilelayout-item-body',
11625
+ changeDetection: ChangeDetectionStrategy.OnPush,
10989
11626
  template: `
10990
11627
  <ng-content></ng-content>
10991
11628
  `,
@@ -11134,7 +11771,12 @@ class GridLayoutComponent {
11134
11771
  * You can define rows by passing an array where the number of elements determines the number of rows or each element defines the size of the corresponding row.
11135
11772
  * For example, you can use CSS units like `px`, `%`, `fr`, or `auto` to define the row sizes.
11136
11773
  */
11137
- rows;
11774
+ set rows(value) {
11775
+ this._rows.set(value);
11776
+ }
11777
+ get rows() {
11778
+ return this._rows();
11779
+ }
11138
11780
  /**
11139
11781
  * Specifies the number of columns and their widths
11140
11782
  * ([More details](https://www.telerik.com/kendo-angular-ui/components/layout/gridlayout/layout#rows-and-columns)).
@@ -11142,28 +11784,41 @@ class GridLayoutComponent {
11142
11784
  * You can define columns by passing an array where the number of elements determines the number of columns or each element defines the size of the corresponding column.
11143
11785
  * For example, you can use CSS units like `px`, `%`, `fr`, or `auto` to define the column sizes.
11144
11786
  */
11145
- cols;
11787
+ set cols(value) {
11788
+ this._cols.set(value);
11789
+ }
11790
+ get cols() {
11791
+ return this._cols();
11792
+ }
11146
11793
  /**
11147
11794
  * Specifies the gaps between the elements ([see example](https://www.telerik.com/kendo-angular-ui/components/layout/gridlayout/layout#gap)).
11148
11795
  *
11149
11796
  * @default 0
11150
11797
  */
11151
- gap = 0;
11798
+ set gap(value) {
11799
+ this._gap.set(value);
11800
+ }
11801
+ get gap() {
11802
+ return this._gap();
11803
+ }
11152
11804
  /**
11153
11805
  * Specifies the horizontal and vertical alignment of the inner GridLayout elements
11154
11806
  * ([see example](https://www.telerik.com/kendo-angular-ui/components/layout/gridlayout/layout#alignment)).
11155
11807
  */
11156
11808
  set align(align) {
11157
- this._align = Object.assign({}, this._align, align);
11809
+ this._align.set(Object.assign({}, this._align(), align));
11158
11810
  this.handleAlignClasses();
11159
11811
  }
11160
11812
  get align() {
11161
- return this._align;
11813
+ return this._align();
11162
11814
  }
11163
- _align = {
11815
+ _align = signal({
11164
11816
  horizontal: 'stretch',
11165
11817
  vertical: 'stretch'
11166
- };
11818
+ }, ...(ngDevMode ? [{ debugName: "_align" }] : []));
11819
+ _rows = signal(undefined, ...(ngDevMode ? [{ debugName: "_rows" }] : []));
11820
+ _cols = signal(undefined, ...(ngDevMode ? [{ debugName: "_cols" }] : []));
11821
+ _gap = signal(0, ...(ngDevMode ? [{ debugName: "_gap" }] : []));
11167
11822
  justifyClass;
11168
11823
  alignClass;
11169
11824
  constructor(renderer, element, localization) {
@@ -11232,7 +11887,7 @@ class GridLayoutComponent {
11232
11887
  }
11233
11888
  ], exportAs: ["kendoGridLayout"], usesOnChanges: true, ngImport: i0, template: `
11234
11889
  <ng-content></ng-content>
11235
- `, isInline: true });
11890
+ `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
11236
11891
  }
11237
11892
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: GridLayoutComponent, decorators: [{
11238
11893
  type: Component,
@@ -11249,7 +11904,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
11249
11904
  template: `
11250
11905
  <ng-content></ng-content>
11251
11906
  `,
11252
- standalone: true
11907
+ standalone: true,
11908
+ changeDetection: ChangeDetectionStrategy.OnPush
11253
11909
  }]
11254
11910
  }], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i1.LocalizationService }], propDecorators: { hostClass: [{
11255
11911
  type: HostBinding,
@@ -11284,24 +11940,48 @@ class GridLayoutItemComponent {
11284
11940
  * Sets the row of the item in the GridLayout
11285
11941
  * ([see example](https://www.telerik.com/kendo-angular-ui/components/layout/gridlayout/items#size-and-position)).
11286
11942
  */
11287
- row;
11943
+ set row(value) {
11944
+ this._row.set(value);
11945
+ }
11946
+ get row() {
11947
+ return this._row();
11948
+ }
11288
11949
  /**
11289
11950
  * Sets the column of the item in the GridLayout
11290
11951
  * ([see example](https://www.telerik.com/kendo-angular-ui/components/layout/gridlayout/items#size-and-position)).
11291
11952
  */
11292
- col;
11953
+ set col(value) {
11954
+ this._col.set(value);
11955
+ }
11956
+ get col() {
11957
+ return this._col();
11958
+ }
11293
11959
  /**
11294
11960
  * Specifies how many rows the item spans ([see example](https://www.telerik.com/kendo-angular-ui/components/layout/gridlayout/items#size-and-position)).
11295
11961
  *
11296
11962
  * @default 1
11297
11963
  */
11298
- rowSpan;
11964
+ set rowSpan(value) {
11965
+ this._rowSpan.set(value);
11966
+ }
11967
+ get rowSpan() {
11968
+ return this._rowSpan();
11969
+ }
11299
11970
  /**
11300
11971
  * Specifies how many columns the item spans ([see example](https://www.telerik.com/kendo-angular-ui/components/layout/gridlayout/items#size-and-position)).
11301
11972
  *
11302
11973
  * @default 1
11303
11974
  */
11304
- colSpan;
11975
+ set colSpan(value) {
11976
+ this._colSpan.set(value);
11977
+ }
11978
+ get colSpan() {
11979
+ return this._colSpan();
11980
+ }
11981
+ _row = signal(undefined, ...(ngDevMode ? [{ debugName: "_row" }] : []));
11982
+ _col = signal(undefined, ...(ngDevMode ? [{ debugName: "_col" }] : []));
11983
+ _rowSpan = signal(undefined, ...(ngDevMode ? [{ debugName: "_rowSpan" }] : []));
11984
+ _colSpan = signal(undefined, ...(ngDevMode ? [{ debugName: "_colSpan" }] : []));
11305
11985
  constructor(renderer, element) {
11306
11986
  this.renderer = renderer;
11307
11987
  this.element = element;
@@ -11323,7 +12003,7 @@ class GridLayoutItemComponent {
11323
12003
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: GridLayoutItemComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
11324
12004
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.27", type: GridLayoutItemComponent, isStandalone: true, selector: "kendo-gridlayout-item", inputs: { row: "row", col: "col", rowSpan: "rowSpan", colSpan: "colSpan" }, usesOnChanges: true, ngImport: i0, template: `
11325
12005
  <ng-content></ng-content>
11326
- `, isInline: true });
12006
+ `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
11327
12007
  }
11328
12008
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: GridLayoutItemComponent, decorators: [{
11329
12009
  type: Component,
@@ -11332,7 +12012,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
11332
12012
  template: `
11333
12013
  <ng-content></ng-content>
11334
12014
  `,
11335
- standalone: true
12015
+ standalone: true,
12016
+ changeDetection: ChangeDetectionStrategy.OnPush
11336
12017
  }]
11337
12018
  }], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i0.ElementRef }], propDecorators: { row: [{
11338
12019
  type: Input
@@ -11376,29 +12057,41 @@ class StackLayoutComponent {
11376
12057
  * ([see example](https://www.telerik.com/kendo-angular-ui/components/layout/stacklayout/layout#alignment)).
11377
12058
  */
11378
12059
  set align(align) {
11379
- this._align = Object.assign({}, this._align, align);
12060
+ this._align.set(Object.assign({}, this._align(), align));
11380
12061
  this.handleAlignClasses();
11381
12062
  }
11382
12063
  get align() {
11383
- return this._align;
12064
+ return this._align();
11384
12065
  }
11385
12066
  /**
11386
12067
  * Specifies the gap between the inner StackLayout elements ([see example](https://www.telerik.com/kendo-angular-ui/components/layout/stacklayout/layout#gap)).
11387
12068
  *
11388
12069
  * @default 0
11389
12070
  */
11390
- gap = 0;
12071
+ set gap(value) {
12072
+ this._gap.set(value);
12073
+ }
12074
+ get gap() {
12075
+ return this._gap();
12076
+ }
11391
12077
  /**
11392
12078
  * Specifies the orientation of the StackLayout
11393
12079
  * ([see example](https://www.telerik.com/kendo-angular-ui/components/layout/stacklayout/layout#orientation)).
11394
12080
  *
11395
12081
  * @default 'horizontal'
11396
12082
  */
11397
- orientation = 'horizontal';
11398
- _align = {
12083
+ set orientation(value) {
12084
+ this._orientation.set(value);
12085
+ }
12086
+ get orientation() {
12087
+ return this._orientation();
12088
+ }
12089
+ _align = signal({
11399
12090
  horizontal: 'stretch',
11400
12091
  vertical: 'stretch'
11401
- };
12092
+ }, ...(ngDevMode ? [{ debugName: "_align" }] : []));
12093
+ _gap = signal(0, ...(ngDevMode ? [{ debugName: "_gap" }] : []));
12094
+ _orientation = signal('horizontal', ...(ngDevMode ? [{ debugName: "_orientation" }] : []));
11402
12095
  justifyClass;
11403
12096
  alignClass;
11404
12097
  constructor(renderer, element, localization) {
@@ -11454,7 +12147,7 @@ class StackLayoutComponent {
11454
12147
  }
11455
12148
  ], exportAs: ["kendoStackLayout"], usesOnChanges: true, ngImport: i0, template: `
11456
12149
  <ng-content></ng-content>
11457
- `, isInline: true });
12150
+ `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
11458
12151
  }
11459
12152
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: StackLayoutComponent, decorators: [{
11460
12153
  type: Component,
@@ -11471,7 +12164,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
11471
12164
  template: `
11472
12165
  <ng-content></ng-content>
11473
12166
  `,
11474
- standalone: true
12167
+ standalone: true,
12168
+ changeDetection: ChangeDetectionStrategy.OnPush
11475
12169
  }]
11476
12170
  }], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i1.LocalizationService }], propDecorators: { hostClass: [{
11477
12171
  type: HostBinding,
@@ -11500,11 +12194,23 @@ class TimelineMessages extends ComponentMessages {
11500
12194
  /**
11501
12195
  * The title of the previous button in horizontal orientation.
11502
12196
  */
11503
- previous;
12197
+ set previous(value) {
12198
+ this._previous.set(value);
12199
+ }
12200
+ get previous() {
12201
+ return this._previous();
12202
+ }
11504
12203
  /**
11505
12204
  * The title of the next button in horizontal orientation.
11506
12205
  */
11507
- next;
12206
+ set next(value) {
12207
+ this._next.set(value);
12208
+ }
12209
+ get next() {
12210
+ return this._next();
12211
+ }
12212
+ _previous = signal(undefined, ...(ngDevMode ? [{ debugName: "_previous" }] : []));
12213
+ _next = signal(undefined, ...(ngDevMode ? [{ debugName: "_next" }] : []));
11508
12214
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: TimelineMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });
11509
12215
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.27", type: TimelineMessages, isStandalone: true, selector: "kendo-timeline-messages-base", inputs: { previous: "previous", next: "next" }, usesInheritance: true, ngImport: i0 });
11510
12216
  }
@@ -11730,20 +12436,34 @@ class TimelineCardComponent {
11730
12436
  element;
11731
12437
  timelineService;
11732
12438
  renderer;
11733
- event;
11734
- expanded = false;
11735
- collapsible = true;
11736
- reversed = false;
11737
- orientation;
11738
- navigable;
11739
- tabIndex;
11740
- animationDuration;
11741
- index;
11742
- eventWidth;
11743
- eventHeight;
11744
- headerTemplate;
11745
- bodyTemplate;
11746
- actionsTemplate;
12439
+ set event(v) { this._event.set(v); }
12440
+ get event() { return this._event(); }
12441
+ set expanded(v) { this._expanded.set(v); }
12442
+ get expanded() { return this._expanded(); }
12443
+ set collapsible(v) { this._collapsible.set(v); }
12444
+ get collapsible() { return this._collapsible(); }
12445
+ set reversed(v) { this._reversed.set(v); }
12446
+ get reversed() { return this._reversed(); }
12447
+ set orientation(v) { this._orientation.set(v); }
12448
+ get orientation() { return this._orientation(); }
12449
+ set navigable(v) { this._navigable.set(v); }
12450
+ get navigable() { return this._navigable(); }
12451
+ set tabIndex(v) { this._tabIndex.set(v); }
12452
+ get tabIndex() { return this._tabIndex(); }
12453
+ set animationDuration(v) { this._animationDuration.set(v); }
12454
+ get animationDuration() { return this._animationDuration(); }
12455
+ set index(v) { this._index.set(v); }
12456
+ get index() { return this._index(); }
12457
+ set eventWidth(v) { this._eventWidth.set(v); }
12458
+ get eventWidth() { return this._eventWidth(); }
12459
+ set eventHeight(v) { this._eventHeight.set(v); }
12460
+ get eventHeight() { return this._eventHeight(); }
12461
+ set headerTemplate(v) { this._headerTemplate.set(v); }
12462
+ get headerTemplate() { return this._headerTemplate(); }
12463
+ set bodyTemplate(v) { this._bodyTemplate.set(v); }
12464
+ get bodyTemplate() { return this._bodyTemplate(); }
12465
+ set actionsTemplate(v) { this._actionsTemplate.set(v); }
12466
+ get actionsTemplate() { return this._actionsTemplate(); }
11747
12467
  set calloutStyle(value) {
11748
12468
  // applies only to horizontal orientation where the callout points upwards
11749
12469
  if (!this.calloutElementRef || !this.calloutElementRef.nativeElement.classList.contains('k-callout-n')) {
@@ -11784,7 +12504,21 @@ class TimelineCardComponent {
11784
12504
  }
11785
12505
  calloutSvgIcon = chevronRightIcon;
11786
12506
  calloutFontIcon = 'chevron-right';
11787
- animationState = this.expanded ? 'expanded' : 'collapsed';
12507
+ _event = signal(undefined, ...(ngDevMode ? [{ debugName: "_event" }] : []));
12508
+ _expanded = signal(false, ...(ngDevMode ? [{ debugName: "_expanded" }] : []));
12509
+ _collapsible = signal(true, ...(ngDevMode ? [{ debugName: "_collapsible" }] : []));
12510
+ _reversed = signal(false, ...(ngDevMode ? [{ debugName: "_reversed" }] : []));
12511
+ _orientation = signal(undefined, ...(ngDevMode ? [{ debugName: "_orientation" }] : []));
12512
+ _navigable = signal(undefined, ...(ngDevMode ? [{ debugName: "_navigable" }] : []));
12513
+ _tabIndex = signal(undefined, ...(ngDevMode ? [{ debugName: "_tabIndex" }] : []));
12514
+ _animationDuration = signal(undefined, ...(ngDevMode ? [{ debugName: "_animationDuration" }] : []));
12515
+ _index = signal(undefined, ...(ngDevMode ? [{ debugName: "_index" }] : []));
12516
+ _eventWidth = signal(undefined, ...(ngDevMode ? [{ debugName: "_eventWidth" }] : []));
12517
+ _eventHeight = signal(undefined, ...(ngDevMode ? [{ debugName: "_eventHeight" }] : []));
12518
+ _headerTemplate = signal(undefined, ...(ngDevMode ? [{ debugName: "_headerTemplate" }] : []));
12519
+ _bodyTemplate = signal(undefined, ...(ngDevMode ? [{ debugName: "_bodyTemplate" }] : []));
12520
+ _actionsTemplate = signal(undefined, ...(ngDevMode ? [{ debugName: "_actionsTemplate" }] : []));
12521
+ animationState = 'collapsed';
11788
12522
  animationInProgress = false;
11789
12523
  constructor(element, timelineService, renderer) {
11790
12524
  this.element = element;
@@ -11797,19 +12531,19 @@ class TimelineCardComponent {
11797
12531
  ngOnChanges(changes) {
11798
12532
  if (isChanged('collapsible', changes, false)) {
11799
12533
  if (!this.collapsible) {
11800
- this.expanded = true;
12534
+ this._expanded.set(true);
11801
12535
  }
11802
12536
  }
11803
12537
  }
11804
12538
  toggle() {
11805
12539
  if (this.orientation === 'vertical') {
11806
- this.expanded = this.collapsible ? !this.expanded : true;
12540
+ this._expanded.set(this.collapsible ? !this.expanded : true);
11807
12541
  this.timelineService.onToggle(this.index);
11808
12542
  }
11809
12543
  }
11810
12544
  expand() {
11811
12545
  if (!this.expanded) {
11812
- this.expanded = true;
12546
+ this._expanded.set(true);
11813
12547
  this.timelineService.onToggle(this.index);
11814
12548
  }
11815
12549
  }
@@ -11817,7 +12551,7 @@ class TimelineCardComponent {
11817
12551
  if (!this.collapsible || !this.expanded) {
11818
12552
  return;
11819
12553
  }
11820
- this.expanded = false;
12554
+ this._expanded.set(false);
11821
12555
  this.timelineService.onToggle(this.index);
11822
12556
  }
11823
12557
  onActionClick(event) {
@@ -11854,7 +12588,6 @@ class TimelineCardComponent {
11854
12588
  class="k-card-with-callout k-card-vertical"
11855
12589
  (click)="toggle()"
11856
12590
  [attr.role]="role"
11857
- [attr.aria-label]="ariaCardLabel"
11858
12591
  [attr.aria-live]="ariaLive"
11859
12592
  [attr.aria-expanded]="ariaExpanded"
11860
12593
  [attr.tabindex]="tabIndex"
@@ -11972,7 +12705,7 @@ class TimelineCardComponent {
11972
12705
  animate('{{animationDuration}}ms')
11973
12706
  ], { params: { animationDuration: '400' } }),
11974
12707
  ])
11975
- ] });
12708
+ ], changeDetection: i0.ChangeDetectionStrategy.OnPush });
11976
12709
  }
11977
12710
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: TimelineCardComponent, decorators: [{
11978
12711
  type: Component,
@@ -11995,8 +12728,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
11995
12728
  ])
11996
12729
  ],
11997
12730
  providers: [],
11998
- exportAs: 'kendoTimelineCard',
11999
12731
  selector: 'kendo-timeline-card',
12732
+ exportAs: 'kendoTimelineCard',
12733
+ changeDetection: ChangeDetectionStrategy.OnPush,
12000
12734
  template: `
12001
12735
  <kendo-card
12002
12736
  [ngStyle]="{ 'height': orientation === 'horizontal' ? eventHeight + 'px' : null }"
@@ -12004,7 +12738,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
12004
12738
  class="k-card-with-callout k-card-vertical"
12005
12739
  (click)="toggle()"
12006
12740
  [attr.role]="role"
12007
- [attr.aria-label]="ariaCardLabel"
12008
12741
  [attr.aria-live]="ariaLive"
12009
12742
  [attr.aria-expanded]="ariaExpanded"
12010
12743
  [attr.tabindex]="tabIndex"
@@ -12166,58 +12899,112 @@ class TimelineHorizontalComponent {
12166
12899
  renderer;
12167
12900
  timelineService;
12168
12901
  localization;
12169
- events = [];
12170
- alterMode;
12171
- collapsibleEvents;
12172
- navigable;
12173
- showDateLabels;
12174
- animationDuration;
12175
- eventHeight;
12176
- dateFormat;
12177
- headerTemplate;
12178
- bodyTemplate;
12179
- actionsTemplate;
12902
+ set events(v) { this._events.set(v); }
12903
+ get events() { return this._events(); }
12904
+ set alterMode(v) { this._alterMode.set(v); }
12905
+ get alterMode() { return this._alterMode(); }
12906
+ set collapsibleEvents(v) { this._collapsibleEvents.set(v); }
12907
+ get collapsibleEvents() { return this._collapsibleEvents(); }
12908
+ set navigable(v) { this._navigable.set(v); }
12909
+ get navigable() { return this._navigable(); }
12910
+ set showDateLabels(v) { this._showDateLabels.set(v); }
12911
+ get showDateLabels() { return this._showDateLabels(); }
12912
+ set animationDuration(v) { this._animationDuration.set(v); }
12913
+ get animationDuration() { return this._animationDuration(); }
12914
+ set eventHeight(v) { this._eventHeight.set(v); }
12915
+ get eventHeight() { return this._eventHeight(); }
12916
+ set dateFormat(v) { this._dateFormat.set(v); }
12917
+ get dateFormat() { return this._dateFormat(); }
12918
+ set headerTemplate(v) { this._headerTemplate.set(v); }
12919
+ get headerTemplate() { return this._headerTemplate(); }
12920
+ set bodyTemplate(v) { this._bodyTemplate.set(v); }
12921
+ get bodyTemplate() { return this._bodyTemplate(); }
12922
+ set actionsTemplate(v) { this._actionsTemplate.set(v); }
12923
+ get actionsTemplate() { return this._actionsTemplate(); }
12180
12924
  cardElementRefs;
12181
12925
  circleElementRefs;
12182
12926
  flagElementRefs;
12183
12927
  trackElementRef;
12184
12928
  scrollableTrackElementRef;
12185
12929
  cardComponents;
12186
- get selectedEvent() {
12187
- return this._selectedEvent;
12188
- }
12930
+ get selectedEvent() { return this._selectedEvent(); }
12189
12931
  set selectedEvent(value) {
12190
- if (this._selectedEvent === value) {
12932
+ if (this._selectedEvent() === value) {
12191
12933
  return;
12192
12934
  }
12193
12935
  const newSelectedIndex = this.events.findIndex(event => event === value);
12194
12936
  if (newSelectedIndex === -1 && value !== null) {
12195
12937
  return;
12196
12938
  }
12197
- this._selectedEvent = value;
12198
- this.selectedEventIndex = newSelectedIndex;
12199
- this.calloutStyle = this.calloutOffset;
12200
- }
12201
- trackWrapWidth;
12202
- scrollableTrackWidth;
12203
- cardWidth;
12939
+ this._selectedEvent.set(value);
12940
+ this._selectedEventIndex.set(newSelectedIndex);
12941
+ this._calloutStyle.set(this.calloutOffset);
12942
+ }
12943
+ get trackWrapWidth() { return this._trackWrapWidth; }
12944
+ set trackWrapWidth(v) { this._trackWrapWidth = v; }
12945
+ get scrollableTrackWidth() { return this._scrollableTrackWidth; }
12946
+ set scrollableTrackWidth(v) { this._scrollableTrackWidth = v; }
12947
+ get cardWidth() { return this._cardWidth; }
12948
+ set cardWidth(v) { this._cardWidth = v; }
12949
+ get calloutStyle() { return this._calloutStyle(); }
12950
+ set calloutStyle(v) { this._calloutStyle.set(v); }
12951
+ get animationState() { return this._animationState(); }
12952
+ set animationState(v) { this._animationState.set(v); }
12953
+ get translateValue() { return this._translateValue(); }
12954
+ set translateValue(v) { this._translateValue.set(v); }
12955
+ get eventsInInterval() { return this._eventsInInterval(); }
12956
+ set eventsInInterval(v) { this._eventsInInterval.set(v); }
12957
+ get selectedCardIndex() { return this._selectedCardIndex(); }
12958
+ set selectedCardIndex(v) { this._selectedCardIndex.set(v); }
12959
+ get selectedEventIndex() { return this._selectedEventIndex(); }
12960
+ set selectedEventIndex(v) { this._selectedEventIndex.set(v); }
12961
+ get tabFlex() { return this._tabFlex(); }
12962
+ set tabFlex(v) { this._tabFlex.set(v); }
12963
+ get tabWidth() { return this._tabWidth; }
12964
+ set tabWidth(v) { this._tabWidth = v; }
12965
+ get visibleTabsCount() { return this._visibleTabsCount(); }
12966
+ set visibleTabsCount(v) { this._visibleTabsCount.set(v); }
12967
+ get firstCircleInView() { return this._firstCircleInView(); }
12968
+ set firstCircleInView(v) { this._firstCircleInView.set(v); }
12969
+ get visibleEvents() { return this._visibleEvents; }
12970
+ set visibleEvents(v) { this._visibleEvents = v; }
12971
+ get trackItems() { return this._trackItems(); }
12972
+ set trackItems(v) { this._trackItems.set(v); }
12973
+ get previousTitle() { return this._previousTitle(); }
12974
+ set previousTitle(v) { this._previousTitle.set(v); }
12975
+ get nextTitle() { return this._nextTitle(); }
12976
+ set nextTitle(v) { this._nextTitle.set(v); }
12204
12977
  svgLeftIcon = chevronLeftIcon;
12205
12978
  svgRightIcon = chevronRightIcon;
12206
- calloutStyle;
12207
- animationState = 'center';
12208
- translateValue = 0;
12209
- eventsInInterval = [0, 1, 2];
12210
- selectedCardIndex = 0;
12211
- selectedEventIndex;
12212
- tabFlex;
12213
- tabWidth = DEFAULT_TAB_WIDTH;
12214
- visibleTabsCount;
12215
- firstCircleInView = 0;
12216
- visibleEvents = [];
12217
- trackItems = [];
12218
- previousTitle = 'previous';
12219
- nextTitle = 'next';
12220
- _selectedEvent;
12979
+ _selectedEvent = signal(null, ...(ngDevMode ? [{ debugName: "_selectedEvent" }] : []));
12980
+ _calloutStyle = signal({}, ...(ngDevMode ? [{ debugName: "_calloutStyle" }] : []));
12981
+ _animationState = signal('center', ...(ngDevMode ? [{ debugName: "_animationState" }] : []));
12982
+ _translateValue = signal(0, ...(ngDevMode ? [{ debugName: "_translateValue" }] : []));
12983
+ _eventsInInterval = signal([0, 1, 2], ...(ngDevMode ? [{ debugName: "_eventsInInterval" }] : []));
12984
+ _selectedCardIndex = signal(0, ...(ngDevMode ? [{ debugName: "_selectedCardIndex" }] : []));
12985
+ _selectedEventIndex = signal(undefined, ...(ngDevMode ? [{ debugName: "_selectedEventIndex" }] : []));
12986
+ _tabFlex = signal(undefined, ...(ngDevMode ? [{ debugName: "_tabFlex" }] : []));
12987
+ _visibleTabsCount = signal(undefined, ...(ngDevMode ? [{ debugName: "_visibleTabsCount" }] : []));
12988
+ _firstCircleInView = signal(0, ...(ngDevMode ? [{ debugName: "_firstCircleInView" }] : []));
12989
+ _trackItems = signal([], ...(ngDevMode ? [{ debugName: "_trackItems" }] : []));
12990
+ _previousTitle = signal('previous', ...(ngDevMode ? [{ debugName: "_previousTitle" }] : []));
12991
+ _nextTitle = signal('next', ...(ngDevMode ? [{ debugName: "_nextTitle" }] : []));
12992
+ _events = signal([], ...(ngDevMode ? [{ debugName: "_events" }] : []));
12993
+ _alterMode = signal(undefined, ...(ngDevMode ? [{ debugName: "_alterMode" }] : []));
12994
+ _collapsibleEvents = signal(undefined, ...(ngDevMode ? [{ debugName: "_collapsibleEvents" }] : []));
12995
+ _navigable = signal(undefined, ...(ngDevMode ? [{ debugName: "_navigable" }] : []));
12996
+ _showDateLabels = signal(undefined, ...(ngDevMode ? [{ debugName: "_showDateLabels" }] : []));
12997
+ _animationDuration = signal(undefined, ...(ngDevMode ? [{ debugName: "_animationDuration" }] : []));
12998
+ _eventHeight = signal(undefined, ...(ngDevMode ? [{ debugName: "_eventHeight" }] : []));
12999
+ _dateFormat = signal(undefined, ...(ngDevMode ? [{ debugName: "_dateFormat" }] : []));
13000
+ _headerTemplate = signal(undefined, ...(ngDevMode ? [{ debugName: "_headerTemplate" }] : []));
13001
+ _bodyTemplate = signal(undefined, ...(ngDevMode ? [{ debugName: "_bodyTemplate" }] : []));
13002
+ _actionsTemplate = signal(undefined, ...(ngDevMode ? [{ debugName: "_actionsTemplate" }] : []));
13003
+ _trackWrapWidth;
13004
+ _scrollableTrackWidth;
13005
+ _cardWidth;
13006
+ _tabWidth = DEFAULT_TAB_WIDTH;
13007
+ _visibleEvents = [];
12221
13008
  subscriptions = new Subscription();
12222
13009
  constructor(cdr, _zone, renderer, timelineService, localization) {
12223
13010
  this.cdr = cdr;
@@ -12546,7 +13333,6 @@ class TimelineHorizontalComponent {
12546
13333
  this.selectedCardIndex = this.getOtherSelectedCardIndex(direction);
12547
13334
  this.focusTrackItem(this.selectedEventIndex);
12548
13335
  this.animateCards();
12549
- this.cdr.markForCheck();
12550
13336
  }
12551
13337
  }
12552
13338
  navigateToInterval(start, selectedIndex = 0, selectFirst = false, selectLast = false) {
@@ -12567,10 +13353,9 @@ class TimelineHorizontalComponent {
12567
13353
  this.selectedEvent = this.events[selectedIndex];
12568
13354
  }
12569
13355
  this.selectedCardIndex = this.getOtherSelectedCardIndex(forward);
12570
- this.cdr.detectChanges();
12571
13356
  this.focusTrackItem(this.selectedEventIndex);
12572
13357
  this.animateCards();
12573
- this.calloutStyle = this.calloutOffset;
13358
+ this._calloutStyle.set(this.calloutOffset);
12574
13359
  this.cdr.markForCheck();
12575
13360
  }
12576
13361
  animateCards() {
@@ -12591,7 +13376,7 @@ class TimelineHorizontalComponent {
12591
13376
  this.tabFlex = 100 / this.visibleTabsCount;
12592
13377
  this.circleElementRefs.forEach(item => this.renderer.setStyle(item.nativeElement, 'flex', `1 0 ${this.tabFlex}%`));
12593
13378
  this.flagElementRefs.forEach(item => this.renderer.setStyle(item.nativeElement, 'flex', `1 0 ${this.tabFlex}%`));
12594
- this.cdr.detectChanges();
13379
+ this.cdr.markForCheck();
12595
13380
  this.visibleEvents = this.trackItems
12596
13381
  .slice(this.firstCircleInView, this.firstCircleInView + this.visibleTabsCount)
12597
13382
  .filter(event => !event.isFlag);
@@ -12603,12 +13388,11 @@ class TimelineHorizontalComponent {
12603
13388
  }
12604
13389
  l10nChange() {
12605
13390
  if (this.localization.get('previous')) {
12606
- this.previousTitle = this.localization.get('previous');
13391
+ this._previousTitle.set(this.localization.get('previous'));
12607
13392
  }
12608
13393
  if (this.localization.get('next')) {
12609
- this.nextTitle = this.localization.get('next');
13394
+ this._nextTitle.set(this.localization.get('next'));
12610
13395
  }
12611
- this.cdr.markForCheck();
12612
13396
  }
12613
13397
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: TimelineHorizontalComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: TimelineService }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
12614
13398
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.27", type: TimelineHorizontalComponent, isStandalone: true, selector: "kendo-timeline-horizontal", inputs: { events: "events", alterMode: "alterMode", collapsibleEvents: "collapsibleEvents", navigable: "navigable", showDateLabels: "showDateLabels", animationDuration: "animationDuration", eventHeight: "eventHeight", dateFormat: "dateFormat", headerTemplate: "headerTemplate", bodyTemplate: "bodyTemplate", actionsTemplate: "actionsTemplate" }, providers: [], viewQueries: [{ propertyName: "trackElementRef", first: true, predicate: ["track"], descendants: true }, { propertyName: "scrollableTrackElementRef", first: true, predicate: ["scrollableTrack"], descendants: true }, { propertyName: "cardElementRefs", predicate: ["card"], descendants: true, read: ElementRef }, { propertyName: "circleElementRefs", predicate: ["trackCircle"], descendants: true }, { propertyName: "flagElementRefs", predicate: ["trackFlag"], descendants: true }, { propertyName: "cardComponents", predicate: TimelineCardComponent, descendants: true }], exportAs: ["kendoTimelineHorizontal"], usesOnChanges: true, ngImport: i0, template: `
@@ -12738,11 +13522,15 @@ class TimelineHorizontalComponent {
12738
13522
  animate('{{animationDuration}}ms', style({ transform: `translateX(100%)` }))
12739
13523
  ], { params: { animationDuration: '400' } })
12740
13524
  ])
12741
- ] });
13525
+ ], changeDetection: i0.ChangeDetectionStrategy.OnPush });
12742
13526
  }
12743
13527
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: TimelineHorizontalComponent, decorators: [{
12744
13528
  type: Component,
12745
13529
  args: [{
13530
+ providers: [],
13531
+ selector: 'kendo-timeline-horizontal',
13532
+ exportAs: 'kendoTimelineHorizontal',
13533
+ changeDetection: ChangeDetectionStrategy.OnPush,
12746
13534
  animations: [
12747
13535
  trigger('trackSlide', [
12748
13536
  state('left', style({
@@ -12764,9 +13552,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
12764
13552
  ], { params: { animationDuration: '400' } })
12765
13553
  ])
12766
13554
  ],
12767
- providers: [],
12768
- exportAs: 'kendoTimelineHorizontal',
12769
- selector: 'kendo-timeline-horizontal',
12770
13555
  template: `
12771
13556
  <div class="k-timeline-track-wrap" #track>
12772
13557
  <button
@@ -12925,21 +13710,43 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
12925
13710
  */
12926
13711
  class TimelineVerticalComponent {
12927
13712
  renderer;
12928
- events = [];
12929
- alterMode;
12930
- collapsibleEvents;
12931
- navigable;
12932
- showDateLabels;
12933
- animationDuration;
12934
- eventWidth;
12935
- dateFormat;
12936
- headerTemplate;
12937
- bodyTemplate;
12938
- actionsTemplate;
13713
+ set events(v) { this._events.set(v); }
13714
+ get events() { return this._events(); }
13715
+ set alterMode(v) { this._alterMode.set(v); }
13716
+ get alterMode() { return this._alterMode(); }
13717
+ set collapsibleEvents(v) { this._collapsibleEvents.set(v); }
13718
+ get collapsibleEvents() { return this._collapsibleEvents(); }
13719
+ set navigable(v) { this._navigable.set(v); }
13720
+ get navigable() { return this._navigable(); }
13721
+ set showDateLabels(v) { this._showDateLabels.set(v); }
13722
+ get showDateLabels() { return this._showDateLabels(); }
13723
+ set animationDuration(v) { this._animationDuration.set(v); }
13724
+ get animationDuration() { return this._animationDuration(); }
13725
+ set eventWidth(v) { this._eventWidth.set(v); }
13726
+ get eventWidth() { return this._eventWidth(); }
13727
+ set dateFormat(v) { this._dateFormat.set(v); }
13728
+ get dateFormat() { return this._dateFormat(); }
13729
+ set headerTemplate(v) { this._headerTemplate.set(v); }
13730
+ get headerTemplate() { return this._headerTemplate(); }
13731
+ set bodyTemplate(v) { this._bodyTemplate.set(v); }
13732
+ get bodyTemplate() { return this._bodyTemplate(); }
13733
+ set actionsTemplate(v) { this._actionsTemplate.set(v); }
13734
+ get actionsTemplate() { return this._actionsTemplate(); }
12939
13735
  cards;
12940
13736
  dateElementRefs;
12941
13737
  innerDateElementRefs;
12942
13738
  subscriptions = new Subscription();
13739
+ _events = signal([], ...(ngDevMode ? [{ debugName: "_events" }] : []));
13740
+ _alterMode = signal(undefined, ...(ngDevMode ? [{ debugName: "_alterMode" }] : []));
13741
+ _collapsibleEvents = signal(undefined, ...(ngDevMode ? [{ debugName: "_collapsibleEvents" }] : []));
13742
+ _navigable = signal(undefined, ...(ngDevMode ? [{ debugName: "_navigable" }] : []));
13743
+ _showDateLabels = signal(undefined, ...(ngDevMode ? [{ debugName: "_showDateLabels" }] : []));
13744
+ _animationDuration = signal(undefined, ...(ngDevMode ? [{ debugName: "_animationDuration" }] : []));
13745
+ _eventWidth = signal(undefined, ...(ngDevMode ? [{ debugName: "_eventWidth" }] : []));
13746
+ _dateFormat = signal(undefined, ...(ngDevMode ? [{ debugName: "_dateFormat" }] : []));
13747
+ _headerTemplate = signal(undefined, ...(ngDevMode ? [{ debugName: "_headerTemplate" }] : []));
13748
+ _bodyTemplate = signal(undefined, ...(ngDevMode ? [{ debugName: "_bodyTemplate" }] : []));
13749
+ _actionsTemplate = signal(undefined, ...(ngDevMode ? [{ debugName: "_actionsTemplate" }] : []));
12943
13750
  constructor(renderer) {
12944
13751
  this.renderer = renderer;
12945
13752
  }
@@ -12958,7 +13765,7 @@ class TimelineVerticalComponent {
12958
13765
  if (index < 0 || index >= this.cards.length) {
12959
13766
  return;
12960
13767
  }
12961
- this.cards.get(index).expand();
13768
+ this.cards.get(index)?.expand();
12962
13769
  }
12963
13770
  collapse(index) {
12964
13771
  if (index < 0 || index >= this.cards.length) {
@@ -13026,14 +13833,15 @@ class TimelineVerticalComponent {
13026
13833
  }
13027
13834
  </ul>
13028
13835
  }
13029
- `, isInline: true, dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: TimelineCardComponent, selector: "kendo-timeline-card", inputs: ["event", "expanded", "collapsible", "reversed", "orientation", "navigable", "tabIndex", "animationDuration", "index", "eventWidth", "eventHeight", "headerTemplate", "bodyTemplate", "actionsTemplate", "calloutStyle"], exportAs: ["kendoTimelineCard"] }, { kind: "pipe", type: DatePipe, name: "kendoDate" }] });
13836
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: TimelineCardComponent, selector: "kendo-timeline-card", inputs: ["event", "expanded", "collapsible", "reversed", "orientation", "navigable", "tabIndex", "animationDuration", "index", "eventWidth", "eventHeight", "headerTemplate", "bodyTemplate", "actionsTemplate", "calloutStyle"], exportAs: ["kendoTimelineCard"] }, { kind: "pipe", type: DatePipe, name: "kendoDate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
13030
13837
  }
13031
13838
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: TimelineVerticalComponent, decorators: [{
13032
13839
  type: Component,
13033
13840
  args: [{
13034
13841
  providers: [],
13035
- exportAs: 'kendoTimelineVertical',
13036
13842
  selector: 'kendo-timeline-vertical',
13843
+ exportAs: 'kendoTimelineVertical',
13844
+ changeDetection: ChangeDetectionStrategy.OnPush,
13037
13845
  template: `
13038
13846
  @if (events && events.length > 0) {
13039
13847
  <ul>
@@ -13162,11 +13970,11 @@ class TimelineComponent {
13162
13970
  return;
13163
13971
  }
13164
13972
  this.originalData = events;
13165
- this._events = processItems(this.originalData, this.modelFields);
13973
+ this._events.set(processItems(this.originalData, this.modelFields));
13166
13974
  this.updateEvents();
13167
13975
  }
13168
13976
  get events() {
13169
- return this._events;
13977
+ return this._events();
13170
13978
  }
13171
13979
  /**
13172
13980
  * The names of the model fields from which the Timeline will read its data.
@@ -13174,7 +13982,8 @@ class TimelineComponent {
13174
13982
  set modelFields(value) {
13175
13983
  this._modelFields = { ...defaultModelFields, ...value };
13176
13984
  if (this.originalData) {
13177
- this.events = this.originalData;
13985
+ this._events.set(processItems(this.originalData, this._modelFields));
13986
+ this.updateEvents();
13178
13987
  }
13179
13988
  }
13180
13989
  get modelFields() {
@@ -13185,20 +13994,35 @@ class TimelineComponent {
13185
13994
  *
13186
13995
  * @default 'vertical'
13187
13996
  */
13188
- orientation = 'vertical';
13997
+ set orientation(value) {
13998
+ this._orientation.set(value);
13999
+ }
14000
+ get orientation() {
14001
+ return this._orientation();
14002
+ }
13189
14003
  /**
13190
14004
  * Specifies whether to render events alternatingly on both sides of the axis.
13191
14005
  * Applicable when `orientation` is set to `vertical`.
13192
14006
  *
13193
14007
  * @default false
13194
14008
  */
13195
- alterMode = false;
14009
+ set alterMode(value) {
14010
+ this._alterMode.set(value);
14011
+ }
14012
+ get alterMode() {
14013
+ return this._alterMode();
14014
+ }
13196
14015
  /**
13197
14016
  * Specifies whether the event cards can be collapsed.
13198
14017
  *
13199
14018
  * @default true
13200
14019
  */
13201
- collapsibleEvents = true;
14020
+ set collapsibleEvents(value) {
14021
+ this._collapsibleEvents.set(value);
14022
+ }
14023
+ get collapsibleEvents() {
14024
+ return this._collapsibleEvents();
14025
+ }
13202
14026
  /**
13203
14027
  * Specifies whether the user can use dedicated shortcuts to interact with the Timeline.
13204
14028
  *
@@ -13207,20 +14031,35 @@ class TimelineComponent {
13207
14031
  * @remarks
13208
14032
  * This property is related to accessibility.
13209
14033
  */
13210
- navigable = true;
14034
+ set navigable(value) {
14035
+ this._navigable.set(value);
14036
+ }
14037
+ get navigable() {
14038
+ return this._navigable();
14039
+ }
13211
14040
  /**
13212
14041
  * Specifies whether an event's date label will be visible.
13213
14042
  *
13214
14043
  * @default true
13215
14044
  */
13216
- showDateLabels = true;
14045
+ set showDateLabels(value) {
14046
+ this._showDateLabels.set(value);
14047
+ }
14048
+ get showDateLabels() {
14049
+ return this._showDateLabels();
14050
+ }
13217
14051
  /**
13218
14052
  * Specifies the time for sliding to the next event in `horizontal` mode and the time for collapsing the event in `vertical` mode.
13219
14053
  * The default animation duration values are `300ms` for `horizontal` mode and `400ms` for `vertical` mode.
13220
14054
  *
13221
14055
  * @default true
13222
14056
  */
13223
- animation;
14057
+ set animation(value) {
14058
+ this._animation.set(value);
14059
+ }
14060
+ get animation() {
14061
+ return this._animation();
14062
+ }
13224
14063
  /**
13225
14064
  * Specifies the order of the Timeline events.
13226
14065
  * `asc` - chronological order
@@ -13229,14 +14068,14 @@ class TimelineComponent {
13229
14068
  * @default 'asc'
13230
14069
  */
13231
14070
  set eventsOrder(order) {
13232
- if (order === this._eventsOrder) {
14071
+ if (order === this._eventsOrder()) {
13233
14072
  return;
13234
14073
  }
13235
- this._eventsOrder = order;
14074
+ this._eventsOrder.set(order);
13236
14075
  this.updateEvents();
13237
14076
  }
13238
14077
  get eventsOrder() {
13239
- return this._eventsOrder;
14078
+ return this._eventsOrder();
13240
14079
  }
13241
14080
  /**
13242
14081
  * Sets a specific width for the event.
@@ -13245,14 +14084,14 @@ class TimelineComponent {
13245
14084
  * @default 400
13246
14085
  */
13247
14086
  get eventWidth() {
13248
- return this._eventWidth;
14087
+ return this._eventWidth();
13249
14088
  }
13250
14089
  set eventWidth(value) {
13251
14090
  if (value) {
13252
- this._eventWidth = value;
14091
+ this._eventWidth.set(value);
13253
14092
  }
13254
14093
  else {
13255
- this._eventWidth = DEFAULT_EVENT_WIDTH;
14094
+ this._eventWidth.set(DEFAULT_EVENT_WIDTH);
13256
14095
  }
13257
14096
  }
13258
14097
  /**
@@ -13262,14 +14101,14 @@ class TimelineComponent {
13262
14101
  * @default 600
13263
14102
  */
13264
14103
  get eventHeight() {
13265
- return this._eventHeight;
14104
+ return this._eventHeight();
13266
14105
  }
13267
14106
  set eventHeight(value) {
13268
14107
  if (value) {
13269
- this._eventHeight = value;
14108
+ this._eventHeight.set(value);
13270
14109
  }
13271
14110
  else {
13272
- this._eventHeight = DEFAULT_EVENT_HEIGHT;
14111
+ this._eventHeight.set(DEFAULT_EVENT_HEIGHT);
13273
14112
  }
13274
14113
  }
13275
14114
  /**
@@ -13291,14 +14130,14 @@ class TimelineComponent {
13291
14130
  */
13292
14131
  set dateFormat(value) {
13293
14132
  if (isPresent$1(value) && value !== '') {
13294
- this._dateFormat = value;
14133
+ this._dateFormat.set(value);
13295
14134
  }
13296
14135
  else {
13297
- this._dateFormat = DEFAULT_DATE_FORMAT;
14136
+ this._dateFormat.set(DEFAULT_DATE_FORMAT);
13298
14137
  }
13299
14138
  }
13300
14139
  get dateFormat() {
13301
- return this._dateFormat;
14140
+ return this._dateFormat();
13302
14141
  }
13303
14142
  hostClass = true;
13304
14143
  get verticalClass() {
@@ -13359,13 +14198,19 @@ class TimelineComponent {
13359
14198
  * @hidden
13360
14199
  */
13361
14200
  actionsTemplate;
13362
- _events = [];
14201
+ _events = signal([], ...(ngDevMode ? [{ debugName: "_events" }] : []));
13363
14202
  _modelFields = defaultModelFields;
13364
- _eventWidth = DEFAULT_EVENT_WIDTH;
13365
- _eventHeight = DEFAULT_EVENT_HEIGHT;
13366
- _dateFormat = DEFAULT_DATE_FORMAT;
14203
+ _orientation = signal('vertical', ...(ngDevMode ? [{ debugName: "_orientation" }] : []));
14204
+ _alterMode = signal(false, ...(ngDevMode ? [{ debugName: "_alterMode" }] : []));
14205
+ _collapsibleEvents = signal(true, ...(ngDevMode ? [{ debugName: "_collapsibleEvents" }] : []));
14206
+ _navigable = signal(true, ...(ngDevMode ? [{ debugName: "_navigable" }] : []));
14207
+ _showDateLabels = signal(true, ...(ngDevMode ? [{ debugName: "_showDateLabels" }] : []));
14208
+ _animation = signal(undefined, ...(ngDevMode ? [{ debugName: "_animation" }] : []));
14209
+ _eventWidth = signal(DEFAULT_EVENT_WIDTH, ...(ngDevMode ? [{ debugName: "_eventWidth" }] : []));
14210
+ _eventHeight = signal(DEFAULT_EVENT_HEIGHT, ...(ngDevMode ? [{ debugName: "_eventHeight" }] : []));
14211
+ _dateFormat = signal(DEFAULT_DATE_FORMAT, ...(ngDevMode ? [{ debugName: "_dateFormat" }] : []));
13367
14212
  originalData = [];
13368
- _eventsOrder = 'asc';
14213
+ _eventsOrder = signal('asc', ...(ngDevMode ? [{ debugName: "_eventsOrder" }] : []));
13369
14214
  subscriptions = new Subscription();
13370
14215
  constructor(timelineService) {
13371
14216
  this.timelineService = timelineService;
@@ -13413,13 +14258,13 @@ class TimelineComponent {
13413
14258
  this.timelineVertical?.collapse(index);
13414
14259
  }
13415
14260
  updateEvents() {
13416
- const sortOrder = this._eventsOrder === 'asc' ? 1 : -1;
13417
- this._events = [...this._events].sort((a, b) => {
14261
+ const sortOrder = this._eventsOrder() === 'asc' ? 1 : -1;
14262
+ const sorted = [...this._events()].sort((a, b) => {
13418
14263
  return sortOrder * (a.date.getTime() - b.date.getTime());
13419
14264
  });
13420
- if (this._events.length > 0) {
13421
- let flag = this._events[0].date.getFullYear() - sortOrder;
13422
- this._events.forEach((event) => {
14265
+ if (sorted.length > 0) {
14266
+ let flag = sorted[0].date.getFullYear() - sortOrder;
14267
+ sorted.forEach((event) => {
13423
14268
  if (event.date.getFullYear() === flag) {
13424
14269
  event.flag = null;
13425
14270
  }
@@ -13429,6 +14274,7 @@ class TimelineComponent {
13429
14274
  }
13430
14275
  });
13431
14276
  }
14277
+ this._events.set(sorted);
13432
14278
  }
13433
14279
  initTemplates() {
13434
14280
  this.headerTemplate = this.cardHeaderTemplate?.first;
@@ -13495,11 +14341,14 @@ class TimelineComponent {
13495
14341
  >
13496
14342
  </kendo-timeline-horizontal>
13497
14343
  }
13498
- `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedTimelineMessagesDirective, selector: "[kendoTimelineLocalizedMessages]" }, { kind: "component", type: TimelineVerticalComponent, selector: "kendo-timeline-vertical", inputs: ["events", "alterMode", "collapsibleEvents", "navigable", "showDateLabels", "animationDuration", "eventWidth", "dateFormat", "headerTemplate", "bodyTemplate", "actionsTemplate"], exportAs: ["kendoTimelineVertical"] }, { kind: "component", type: TimelineHorizontalComponent, selector: "kendo-timeline-horizontal", inputs: ["events", "alterMode", "collapsibleEvents", "navigable", "showDateLabels", "animationDuration", "eventHeight", "dateFormat", "headerTemplate", "bodyTemplate", "actionsTemplate"], exportAs: ["kendoTimelineHorizontal"] }] });
14344
+ `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedTimelineMessagesDirective, selector: "[kendoTimelineLocalizedMessages]" }, { kind: "component", type: TimelineVerticalComponent, selector: "kendo-timeline-vertical", inputs: ["events", "alterMode", "collapsibleEvents", "navigable", "showDateLabels", "animationDuration", "eventWidth", "dateFormat", "headerTemplate", "bodyTemplate", "actionsTemplate"], exportAs: ["kendoTimelineVertical"] }, { kind: "component", type: TimelineHorizontalComponent, selector: "kendo-timeline-horizontal", inputs: ["events", "alterMode", "collapsibleEvents", "navigable", "showDateLabels", "animationDuration", "eventHeight", "dateFormat", "headerTemplate", "bodyTemplate", "actionsTemplate"], exportAs: ["kendoTimelineHorizontal"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
13499
14345
  }
13500
14346
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImport: i0, type: TimelineComponent, decorators: [{
13501
14347
  type: Component,
13502
14348
  args: [{
14349
+ selector: 'kendo-timeline',
14350
+ exportAs: 'kendoTimeline',
14351
+ changeDetection: ChangeDetectionStrategy.OnPush,
13503
14352
  providers: [
13504
14353
  TimelineService,
13505
14354
  LocalizationService,
@@ -13509,8 +14358,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.27", ngImpo
13509
14358
  },
13510
14359
  provideComponentName('timeline')
13511
14360
  ],
13512
- exportAs: 'kendoTimeline',
13513
- selector: 'kendo-timeline',
13514
14361
  template: `
13515
14362
  <ng-container kendoTimelineLocalizedMessages
13516
14363
  i18n-previous="kendo.timeline.previous|The title of the previous button in horizontal orientation."