@progress/kendo-angular-layout 24.0.0-develop.8 → 24.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,23 +3,23 @@
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, HostListener, ContentChild, Output, Inject, QueryList, NgZone, forwardRef, ElementRef, ViewEncapsulation, TemplateRef, NgModule } 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';
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, 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, 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';
11
11
  import { validatePackage } from '@progress/kendo-licensing';
12
- import * as i1$2 from '@angular/animations';
12
+ import * as i2 from '@angular/animations';
13
13
  import { trigger, state, style, transition, animate, AUTO_STYLE } from '@angular/animations';
14
14
  import { Subject, BehaviorSubject, Subscription, of } from 'rxjs';
15
- import { chevronUpIcon, chevronDownIcon, caretAltLeftIcon, caretAltRightIcon, caretAltUpIcon, caretAltDownIcon, xIcon, checkCircleIcon, exclamationCircleIcon, chevronRightIcon } from '@progress/kendo-svg-icons';
15
+ import { chevronUpIcon, chevronDownIcon, chevronLeftIcon, chevronRightIcon, xIcon, checkCircleIcon, exclamationCircleIcon } from '@progress/kendo-svg-icons';
16
16
  import { IconWrapperComponent } from '@progress/kendo-angular-icons';
17
17
  import { NgTemplateOutlet, NgStyle, NgClass } from '@angular/common';
18
18
  import { delay, takeUntil, map, tap, filter, switchMap, take } from 'rxjs/operators';
19
- import { ProgressBarComponent } from '@progress/kendo-angular-progressbar';
19
+ import { ProgressBarComponent, ProgressBarCustomMessagesComponent } from '@progress/kendo-angular-progressbar';
20
20
  import { Draggable } from '@progress/kendo-draggable';
21
- import { ButtonComponent } from '@progress/kendo-angular-buttons';
22
21
  import { DatePipe } from '@progress/kendo-angular-intl';
22
+ import { ButtonComponent } from '@progress/kendo-angular-buttons';
23
23
 
24
24
  /**
25
25
  * @hidden
@@ -29,8 +29,8 @@ const packageMetadata = {
29
29
  productName: 'Kendo UI for Angular',
30
30
  productCode: 'KENDOUIANGULAR',
31
31
  productCodes: ['KENDOUIANGULAR'],
32
- publishDate: 1777363092,
33
- version: '24.0.0-develop.8',
32
+ publishDate: 1779273377,
33
+ version: '24.0.0',
34
34
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'
35
35
  };
36
36
 
@@ -428,7 +428,7 @@ class PanelBarItemComponent {
428
428
  return (this.hasChildItems || this.hasContent) ? !this.disabled && this.expanded : null;
429
429
  }
430
430
  get ariaSelected() {
431
- return !this.disabled && this.selected;
431
+ return !this.disabled && (this.selected || this.expanded);
432
432
  }
433
433
  get ariaDisabled() {
434
434
  return this.disabled ? true : null;
@@ -669,8 +669,8 @@ class PanelBarItemComponent {
669
669
  <div
670
670
  #contentWrapper
671
671
  [@toggle]="state"
672
- [attr.role]="'group'"
673
- [attr.aria-hidden]="!disabled && !expanded"
672
+ [attr.role]="hasChildItems ? 'group' : null"
673
+ [attr.aria-hidden]="(!disabled && !expanded) || null"
674
674
  >
675
675
  @if (hasChildItems && !items?.length) {
676
676
  <div
@@ -843,8 +843,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
843
843
  <div
844
844
  #contentWrapper
845
845
  [@toggle]="state"
846
- [attr.role]="'group'"
847
- [attr.aria-hidden]="!disabled && !expanded"
846
+ [attr.role]="hasChildItems ? 'group' : null"
847
+ [attr.aria-hidden]="(!disabled && !expanded) || null"
848
848
  >
849
849
  @if (hasChildItems && !items?.length) {
850
850
  <div
@@ -1236,7 +1236,7 @@ class PanelBarComponent {
1236
1236
  hostClasses = true;
1237
1237
  tabIndex = 0;
1238
1238
  role = 'tree';
1239
- activeDescendant = '';
1239
+ activeDescendant = null;
1240
1240
  get hostHeight() {
1241
1241
  return this.expandMode === PanelBarExpandMode.Full ? this.height : 'auto';
1242
1242
  }
@@ -1369,7 +1369,7 @@ class PanelBarComponent {
1369
1369
  onComponentBlur() {
1370
1370
  this.eventService.onBlur();
1371
1371
  this.focused = false;
1372
- this.activeDescendant = '';
1372
+ this.activeDescendant = null;
1373
1373
  }
1374
1374
  /**
1375
1375
  * @hidden
@@ -1455,7 +1455,7 @@ class PanelBarComponent {
1455
1455
  if (currentItem.selected !== selectedState || currentItem.focused !== focusedState) {
1456
1456
  currentItem.selected = selectedState;
1457
1457
  currentItem.focused = focusedState;
1458
- this.activeDescendant = focusedState ? currentItem.itemId : '';
1458
+ this.activeDescendant = focusedState ? currentItem.itemId : null;
1459
1459
  modifiedItems.push(currentItem);
1460
1460
  }
1461
1461
  });
@@ -1466,7 +1466,7 @@ class PanelBarComponent {
1466
1466
  const focusedState = currentItem === item;
1467
1467
  if (currentItem.focused !== focusedState) {
1468
1468
  currentItem.focused = focusedState;
1469
- this.activeDescendant = focusedState ? currentItem.itemId : '';
1469
+ this.activeDescendant = focusedState ? currentItem.itemId : null;
1470
1470
  modifiedItems.push(currentItem);
1471
1471
  }
1472
1472
  });
@@ -1659,7 +1659,8 @@ class PanelBarComponent {
1659
1659
  {
1660
1660
  provide: L10N_PREFIX,
1661
1661
  useValue: 'kendo.panelbar'
1662
- }
1662
+ },
1663
+ { provide: KENDO_WEBMCP_HOST, useExisting: forwardRef(() => PanelBarComponent) }
1663
1664
  ], 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: `
1664
1665
  @if (contentChildItems && !items) {
1665
1666
  <ng-content select="kendo-panelbar-item"></ng-content>
@@ -1701,7 +1702,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
1701
1702
  {
1702
1703
  provide: L10N_PREFIX,
1703
1704
  useValue: 'kendo.panelbar'
1704
- }
1705
+ },
1706
+ { provide: KENDO_WEBMCP_HOST, useExisting: forwardRef(() => PanelBarComponent) }
1705
1707
  ],
1706
1708
  selector: 'kendo-panelbar',
1707
1709
  template: `
@@ -1860,11 +1862,7 @@ class SplitterService {
1860
1862
  pane.detectChanges();
1861
1863
  }
1862
1864
  }
1863
- const notCollapsed = this.panes.filter(p => !p.collapsed);
1864
- const allHaveFixedSize = notCollapsed.every(p => p.fixedSize);
1865
- notCollapsed.filter(p => p.fixedSize).forEach(pane => {
1866
- pane.forceExpand = allHaveFixedSize ? true : false;
1867
- });
1865
+ this.syncPaneExpandState();
1868
1866
  return pane.collapsible;
1869
1867
  }
1870
1868
  togglePane(keyCode, index) {
@@ -2010,6 +2008,23 @@ class SplitterService {
2010
2008
  this.containerSize = containerSize;
2011
2009
  this.rtl = direction === 'rtl';
2012
2010
  }
2011
+ syncPaneExpandState() {
2012
+ if (!this.panes) {
2013
+ return;
2014
+ }
2015
+ const notCollapsed = this.panes.filter(p => !p.collapsed);
2016
+ const someAreCollapsed = notCollapsed.length < this.panes.length;
2017
+ const allHaveFixedSize = notCollapsed.every(p => p.fixedSize);
2018
+ // A pane is flexible when it is resizable or collapsible, meaning it can absorb extra space.
2019
+ const someAreFlexible = notCollapsed.some(p => p.resizable || p.collapsible);
2020
+ notCollapsed.filter(p => p.fixedSize).forEach(pane => {
2021
+ // Force-expand only when a pane is collapsed (space needs redistribution),
2022
+ // all visible panes have a fixed size, and either no flexible pane exists
2023
+ // or this pane itself is flexible and can absorb the extra space.
2024
+ // When no pane is collapsed, sizes are balanced and no expansion is needed.
2025
+ pane.forceExpand = someAreCollapsed && allHaveFixedSize && (!someAreFlexible || pane.resizable || pane.collapsible);
2026
+ });
2027
+ }
2013
2028
  containerSize = () => { };
2014
2029
  rtl;
2015
2030
  isPercent(size) {
@@ -2151,11 +2166,7 @@ class SplitterPaneComponent {
2151
2166
  // Trigger the same forceExpand logic that tryToggle does
2152
2167
  // This ensures remaining panes expand when a pane is collapsed
2153
2168
  if (this.splitterService?.panes) {
2154
- const notCollapsed = this.splitterService.panes.filter(p => !p.collapsed);
2155
- const allHaveFixedSize = notCollapsed.every(p => p.fixedSize);
2156
- notCollapsed.filter(p => p.fixedSize).forEach(pane => {
2157
- pane.forceExpand = allHaveFixedSize;
2158
- });
2169
+ this.splitterService.syncPaneExpandState();
2159
2170
  }
2160
2171
  }
2161
2172
  }
@@ -2207,7 +2218,34 @@ class SplitterPaneComponent {
2207
2218
  /**
2208
2219
  * @hidden
2209
2220
  */
2210
- forceExpand = false;
2221
+ set forceExpand(value) {
2222
+ if (this._forceExpand === value) {
2223
+ return;
2224
+ }
2225
+ this._forceExpand = value;
2226
+ // Enforce min/max constraints during flex redistribution so panes
2227
+ // do not exceed their bounds when absorbing a collapsed pane's space.
2228
+ const sizeProp = this.orientation === 'vertical' ? 'height' : 'width';
2229
+ if (value) {
2230
+ if (this.max) {
2231
+ this.renderer.setStyle(this.nativeElement, `max-${sizeProp}`, this.max);
2232
+ }
2233
+ if (this.min) {
2234
+ this.renderer.setStyle(this.nativeElement, `min-${sizeProp}`, this.min);
2235
+ }
2236
+ }
2237
+ else {
2238
+ if (this.max) {
2239
+ this.renderer.removeStyle(this.nativeElement, `max-${sizeProp}`);
2240
+ }
2241
+ if (this.min) {
2242
+ this.renderer.removeStyle(this.nativeElement, `min-${sizeProp}`);
2243
+ }
2244
+ }
2245
+ }
2246
+ get forceExpand() {
2247
+ return this._forceExpand;
2248
+ }
2211
2249
  /**
2212
2250
  * @hidden
2213
2251
  */
@@ -2216,6 +2254,7 @@ class SplitterPaneComponent {
2216
2254
  _order;
2217
2255
  _splitterBarAttributes;
2218
2256
  _collapsed = false;
2257
+ _forceExpand = false;
2219
2258
  constructor(element, renderer, cdr, splitterService) {
2220
2259
  this.element = element;
2221
2260
  this.renderer = renderer;
@@ -2377,8 +2416,9 @@ class SplitterBarComponent {
2377
2416
  ariaLabel = 'Splitter pane';
2378
2417
  focused = false;
2379
2418
  get hostOrientation() {
2380
- return this.orientation === 'horizontal' ? 'vertical' : 'horizontal';
2419
+ return this.orientation === 'horizontal' ? 'vertical' : null;
2381
2420
  }
2421
+ ariaKeyShortcuts = 'ArrowLeft ArrowRight ArrowUp ArrowDown';
2382
2422
  get tabIndex() {
2383
2423
  return this.splitterService.isStatic(this.index) ? -1 : 0;
2384
2424
  }
@@ -2488,10 +2528,10 @@ class SplitterBarComponent {
2488
2528
  const isHorizontal = this.orientation === 'horizontal';
2489
2529
  const isRTL = this.direction === 'rtl';
2490
2530
  return classFromObject({
2491
- 'caret-alt-left': isCollapsible && isHorizontal && ((!isCollapsed && !isRTL) || (isCollapsed && isRTL)),
2492
- 'caret-alt-right': isCollapsible && isHorizontal && ((isCollapsed && !isRTL) || (!isCollapsed && isRTL)),
2493
- 'caret-alt-up': isCollapsible && !isHorizontal && !isCollapsed,
2494
- 'caret-alt-down': isCollapsible && !isHorizontal && isCollapsed
2531
+ 'chevron-left': isCollapsible && isHorizontal && ((!isCollapsed && !isRTL) || (isCollapsed && isRTL)),
2532
+ 'chevron-right': isCollapsible && isHorizontal && ((isCollapsed && !isRTL) || (!isCollapsed && isRTL)),
2533
+ 'chevron-up': isCollapsible && !isHorizontal && !isCollapsed,
2534
+ 'chevron-down': isCollapsible && !isHorizontal && isCollapsed
2495
2535
  });
2496
2536
  }
2497
2537
  previousSVGArrowClass() {
@@ -2501,16 +2541,16 @@ class SplitterBarComponent {
2501
2541
  const isHorizontal = this.orientation === 'horizontal';
2502
2542
  const isRTL = this.direction === 'rtl';
2503
2543
  if (isCollapsible && isHorizontal && ((!isCollapsed && !isRTL) || (isCollapsed && isRTL))) {
2504
- return caretAltLeftIcon;
2544
+ return chevronLeftIcon;
2505
2545
  }
2506
2546
  if (isCollapsible && isHorizontal && ((isCollapsed && !isRTL) || (!isCollapsed && isRTL))) {
2507
- return caretAltRightIcon;
2547
+ return chevronRightIcon;
2508
2548
  }
2509
2549
  if (isCollapsible && !isHorizontal && !isCollapsed) {
2510
- return caretAltUpIcon;
2550
+ return chevronUpIcon;
2511
2551
  }
2512
2552
  if (isCollapsible && !isHorizontal && isCollapsed) {
2513
- return caretAltDownIcon;
2553
+ return chevronDownIcon;
2514
2554
  }
2515
2555
  }
2516
2556
  nextArrowClass() {
@@ -2520,10 +2560,10 @@ class SplitterBarComponent {
2520
2560
  const isHorizontal = this.orientation === 'horizontal';
2521
2561
  const isRTL = this.direction === 'rtl';
2522
2562
  return classFromObject({
2523
- 'caret-alt-right': isCollapsible && isHorizontal && ((!isCollapsed && !isRTL) || (isCollapsed && isRTL)),
2524
- 'caret-alt-left': isCollapsible && isHorizontal && ((isCollapsed && !isRTL) || (!isCollapsed && isRTL)),
2525
- 'caret-alt-down': isCollapsible && !isHorizontal && !isCollapsed,
2526
- 'caret-alt-up': isCollapsible && !isHorizontal && isCollapsed
2563
+ 'chevron-right': isCollapsible && isHorizontal && ((!isCollapsed && !isRTL) || (isCollapsed && isRTL)),
2564
+ 'chevron-left': isCollapsible && isHorizontal && ((isCollapsed && !isRTL) || (!isCollapsed && isRTL)),
2565
+ 'chevron-down': isCollapsible && !isHorizontal && !isCollapsed,
2566
+ 'chevron-up': isCollapsible && !isHorizontal && isCollapsed
2527
2567
  });
2528
2568
  }
2529
2569
  nextSVGArrowClass() {
@@ -2533,16 +2573,16 @@ class SplitterBarComponent {
2533
2573
  const isHorizontal = this.orientation === 'horizontal';
2534
2574
  const isRTL = this.direction === 'rtl';
2535
2575
  if (isCollapsible && isHorizontal && ((!isCollapsed && !isRTL) || (isCollapsed && isRTL))) {
2536
- return caretAltRightIcon;
2576
+ return chevronRightIcon;
2537
2577
  }
2538
2578
  if (isCollapsible && isHorizontal && ((isCollapsed && !isRTL) || (!isCollapsed && isRTL))) {
2539
- return caretAltLeftIcon;
2579
+ return chevronLeftIcon;
2540
2580
  }
2541
2581
  if (isCollapsible && !isHorizontal && !isCollapsed) {
2542
- return caretAltDownIcon;
2582
+ return chevronDownIcon;
2543
2583
  }
2544
2584
  if (isCollapsible && !isHorizontal && isCollapsed) {
2545
- return caretAltUpIcon;
2585
+ return chevronUpIcon;
2546
2586
  }
2547
2587
  }
2548
2588
  togglePane() {
@@ -2587,7 +2627,7 @@ class SplitterBarComponent {
2587
2627
  setHTMLAttributes(attributesToRender, this.renderer, this.element.nativeElement);
2588
2628
  }
2589
2629
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", 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 });
2590
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", 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.tabindex": "this.tabIndex", "class": "this.hostClasses", "style.-ms-flex-order": "this.order", "style.order": "this.order" } }, ngImport: i0, template: `
2630
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", 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: `
2591
2631
  @if (shouldShowIcon('prev')) {
2592
2632
  <div class="k-collapse-prev" (click)="togglePrevious()">
2593
2633
  <kendo-icon-wrapper
@@ -2597,7 +2637,7 @@ class SplitterBarComponent {
2597
2637
  ></kendo-icon-wrapper>
2598
2638
  </div>
2599
2639
  }
2600
- <div class="k-resize-handle"></div>
2640
+ <div class="k-resize-handle" aria-hidden="true"></div>
2601
2641
  @if (shouldShowIcon('next')) {
2602
2642
  <div class="k-collapse-next" (click)="toggleNext()">
2603
2643
  <kendo-icon-wrapper
@@ -2623,7 +2663,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
2623
2663
  ></kendo-icon-wrapper>
2624
2664
  </div>
2625
2665
  }
2626
- <div class="k-resize-handle"></div>
2666
+ <div class="k-resize-handle" aria-hidden="true"></div>
2627
2667
  @if (shouldShowIcon('next')) {
2628
2668
  <div class="k-collapse-next" (click)="toggleNext()">
2629
2669
  <kendo-icon-wrapper
@@ -2651,6 +2691,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
2651
2691
  }], hostOrientation: [{
2652
2692
  type: HostBinding,
2653
2693
  args: ['attr.aria-orientation']
2694
+ }], ariaKeyShortcuts: [{
2695
+ type: HostBinding,
2696
+ args: ['attr.aria-keyshortcuts']
2654
2697
  }], tabIndex: [{
2655
2698
  type: HostBinding,
2656
2699
  args: ['attr.tabindex']
@@ -3500,10 +3543,10 @@ const HIDDEN_CLASS = 'k-hidden';
3500
3543
  * @hidden
3501
3544
  */
3502
3545
  const DIRECTION_CLASSES = {
3503
- left: 'caret-alt-left',
3504
- right: 'caret-alt-right',
3505
- up: 'caret-alt-up',
3506
- down: 'caret-alt-down'
3546
+ left: 'chevron-left',
3547
+ right: 'chevron-right',
3548
+ up: 'chevron-up',
3549
+ down: 'chevron-down'
3507
3550
  };
3508
3551
  /**
3509
3552
  * @hidden
@@ -3725,10 +3768,10 @@ class TabStripScrollableButtonComponent {
3725
3768
  get svgIcon() {
3726
3769
  return this.scrollButtonSVGIcon;
3727
3770
  }
3728
- caretAltLeftIcon = caretAltLeftIcon;
3729
- caretAltRightIcon = caretAltRightIcon;
3730
- caretAltUpIcon = caretAltUpIcon;
3731
- caretAltDownIcon = caretAltDownIcon;
3771
+ chevronLeftIcon = chevronLeftIcon;
3772
+ chevronRightIcon = chevronRightIcon;
3773
+ chevronUpIcon = chevronUpIcon;
3774
+ chevronDownIcon = chevronDownIcon;
3732
3775
  subs = new Subscription();
3733
3776
  constructor(host, renderer, ngZone, localization) {
3734
3777
  this.host = host;
@@ -3757,16 +3800,22 @@ class TabStripScrollableButtonComponent {
3757
3800
  this.onClick.emit(buttonType);
3758
3801
  };
3759
3802
  get scrollButtonIconClass() {
3760
- const defaultPrevIcon = isTablistHorizontal(this.tabPosition) ?
3761
- !this.localization.rtl ?
3762
- DIRECTION_CLASSES.left :
3763
- DIRECTION_CLASSES.right :
3764
- DIRECTION_CLASSES.up;
3765
- const defaultNextIcon = isTablistHorizontal(this.tabPosition) ?
3766
- !this.localization.rtl ?
3767
- DIRECTION_CLASSES.right :
3768
- DIRECTION_CLASSES.left :
3769
- DIRECTION_CLASSES.down;
3803
+ const horizontal = isTablistHorizontal(this.tabPosition);
3804
+ const rtl = this.localization.rtl;
3805
+ let defaultPrevIcon;
3806
+ if (!horizontal) {
3807
+ defaultPrevIcon = DIRECTION_CLASSES.up;
3808
+ }
3809
+ else {
3810
+ defaultPrevIcon = rtl ? DIRECTION_CLASSES.right : DIRECTION_CLASSES.left;
3811
+ }
3812
+ let defaultNextIcon;
3813
+ if (!horizontal) {
3814
+ defaultNextIcon = DIRECTION_CLASSES.down;
3815
+ }
3816
+ else {
3817
+ defaultNextIcon = rtl ? DIRECTION_CLASSES.left : DIRECTION_CLASSES.right;
3818
+ }
3770
3819
  if (typeof this.scrollable === 'object') {
3771
3820
  const prevIcon = typeof this.scrollable.prevButtonIcon === 'undefined' ? defaultPrevIcon : '';
3772
3821
  const nextIcon = typeof this.scrollable.nextButtonIcon === 'undefined' ? defaultNextIcon : '';
@@ -3791,16 +3840,22 @@ class TabStripScrollableButtonComponent {
3791
3840
  }
3792
3841
  }
3793
3842
  get scrollButtonSVGIcon() {
3794
- const defaultPrevSVGIcon = isTablistHorizontal(this.tabPosition) ?
3795
- !this.localization.rtl ?
3796
- this.caretAltLeftIcon :
3797
- this.caretAltRightIcon :
3798
- this.caretAltUpIcon;
3799
- const defaultNextSVGIcon = isTablistHorizontal(this.tabPosition) ?
3800
- !this.localization.rtl ?
3801
- this.caretAltRightIcon :
3802
- this.caretAltLeftIcon :
3803
- this.caretAltDownIcon;
3843
+ const horizontal = isTablistHorizontal(this.tabPosition);
3844
+ const rtl = this.localization.rtl;
3845
+ let defaultPrevSVGIcon;
3846
+ if (!horizontal) {
3847
+ defaultPrevSVGIcon = this.chevronUpIcon;
3848
+ }
3849
+ else {
3850
+ defaultPrevSVGIcon = rtl ? this.chevronRightIcon : this.chevronLeftIcon;
3851
+ }
3852
+ let defaultNextSVGIcon;
3853
+ if (!horizontal) {
3854
+ defaultNextSVGIcon = this.chevronDownIcon;
3855
+ }
3856
+ else {
3857
+ defaultNextSVGIcon = rtl ? this.chevronLeftIcon : this.chevronRightIcon;
3858
+ }
3804
3859
  if (typeof this.scrollable === 'object') {
3805
3860
  const prevIcon = this.scrollable.prevSVGButtonIcon !== undefined ? this.scrollable.prevSVGButtonIcon : defaultPrevSVGIcon;
3806
3861
  const nextIcon = this.scrollable.nextSVGButtonIcon !== undefined ? this.scrollable.nextSVGButtonIcon : defaultNextSVGIcon;
@@ -3878,7 +3933,7 @@ class TabComponent {
3878
3933
  return this.tab.selected;
3879
3934
  }
3880
3935
  get disabledClass() {
3881
- return this.tab.disabled;
3936
+ return this.tab.disabled || null;
3882
3937
  }
3883
3938
  get focusedClass() {
3884
3939
  return this.tab.focused;
@@ -3950,7 +4005,7 @@ class TabComponent {
3950
4005
  }
3951
4006
 
3952
4007
  @if (tabClosable) {
3953
- <span class="k-remove-tab k-icon-button k-button k-button-md k-rounded-md k-button-flat-base k-button-flat"
4008
+ <span class="k-remove-tab k-icon-button k-button k-button-xs k-rounded-md k-button-flat-base k-button-flat"
3954
4009
  (click)="closeTab(index)" [title]="closeButtonTitle">
3955
4010
  <kendo-icon-wrapper
3956
4011
  [svgIcon]="closeSVGIconClass" [name]="closeIconClasses"
@@ -3982,7 +4037,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
3982
4037
  }
3983
4038
 
3984
4039
  @if (tabClosable) {
3985
- <span class="k-remove-tab k-icon-button k-button k-button-md k-rounded-md k-button-flat-base k-button-flat"
4040
+ <span class="k-remove-tab k-icon-button k-button k-button-xs k-rounded-md k-button-flat-base k-button-flat"
3986
4041
  (click)="closeTab(index)" [title]="closeButtonTitle">
3987
4042
  <kendo-icon-wrapper
3988
4043
  [svgIcon]="closeSVGIconClass" [name]="closeIconClasses"
@@ -4583,7 +4638,8 @@ class TabStripComponent {
4583
4638
  {
4584
4639
  provide: L10N_PREFIX,
4585
4640
  useValue: 'kendo.tabstrip'
4586
- }
4641
+ },
4642
+ { provide: KENDO_WEBMCP_HOST, useExisting: forwardRef(() => TabStripComponent) }
4587
4643
  ], queries: [{ propertyName: "tabs", predicate: TabStripTabComponent }], viewQueries: [{ propertyName: "tablist", first: true, predicate: ["tablist"], descendants: true }, { propertyName: "prevScrollButton", first: true, predicate: ["prevScrollButton"], descendants: true }, { propertyName: "nextScrollButton", first: true, predicate: ["nextScrollButton"], descendants: true }, { propertyName: "tabHeaderContainers", predicate: ["tabHeaderContainer"], descendants: true, read: ElementRef }], exportAs: ["kendoTabStrip"], usesOnChanges: true, ngImport: i0, template: `
4588
4644
  <ng-container kendoTabStripLocalizedMessages
4589
4645
  i18n-closeTitle="kendo.tabstrip.closeTitle|The title for the **Close** button in the TabStrip tab."
@@ -4657,7 +4713,7 @@ class TabStripComponent {
4657
4713
  'k-tabstrip-items-justify': tabAlignment === 'justify',
4658
4714
  'k-tabstrip-items-scroll': mouseScrollEnabled
4659
4715
  }"
4660
- [attr.aria-orientation]="tabPosition === 'left' || tabPosition === 'right' ? 'vertical' : 'horizontal'"
4716
+ [attr.aria-orientation]="tabPosition === 'left' || tabPosition === 'right' ? 'vertical' : null"
4661
4717
  >
4662
4718
  @for (tab of tabs; track tab; let i = $index) {
4663
4719
  <li
@@ -4728,9 +4784,9 @@ class TabStripComponent {
4728
4784
  [tabIndex]="0"
4729
4785
  role="tabpanel"
4730
4786
  [id]="getTabPanelId(i)"
4731
- [attr.aria-hidden]="!tab.selected"
4787
+ [attr.aria-hidden]="!tab.selected || null"
4732
4788
  [attr.aria-labelledby]="getTabId(i)"
4733
- [attr.aria-disabled]="tab.disabled"
4789
+ [attr.aria-disabled]="tab.disabled || null"
4734
4790
  >
4735
4791
  <ng-template [ngTemplateOutlet]="tab.tabContent?.templateRef"></ng-template>
4736
4792
  </div>
@@ -4773,7 +4829,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
4773
4829
  {
4774
4830
  provide: L10N_PREFIX,
4775
4831
  useValue: 'kendo.tabstrip'
4776
- }
4832
+ },
4833
+ { provide: KENDO_WEBMCP_HOST, useExisting: forwardRef(() => TabStripComponent) }
4777
4834
  ],
4778
4835
  exportAs: 'kendoTabStrip',
4779
4836
  selector: 'kendo-tabstrip',
@@ -4850,7 +4907,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
4850
4907
  'k-tabstrip-items-justify': tabAlignment === 'justify',
4851
4908
  'k-tabstrip-items-scroll': mouseScrollEnabled
4852
4909
  }"
4853
- [attr.aria-orientation]="tabPosition === 'left' || tabPosition === 'right' ? 'vertical' : 'horizontal'"
4910
+ [attr.aria-orientation]="tabPosition === 'left' || tabPosition === 'right' ? 'vertical' : null"
4854
4911
  >
4855
4912
  @for (tab of tabs; track tab; let i = $index) {
4856
4913
  <li
@@ -4921,9 +4978,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
4921
4978
  [tabIndex]="0"
4922
4979
  role="tabpanel"
4923
4980
  [id]="getTabPanelId(i)"
4924
- [attr.aria-hidden]="!tab.selected"
4981
+ [attr.aria-hidden]="!tab.selected || null"
4925
4982
  [attr.aria-labelledby]="getTabId(i)"
4926
- [attr.aria-disabled]="tab.disabled"
4983
+ [attr.aria-disabled]="tab.disabled || null"
4927
4984
  >
4928
4985
  <ng-template [ngTemplateOutlet]="tab.tabContent?.templateRef"></ng-template>
4929
4986
  </div>
@@ -5295,148 +5352,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
5295
5352
  type: Injectable
5296
5353
  }] });
5297
5354
 
5298
- /**
5299
- * @hidden
5300
- */
5301
- function miniExpandPush(duration, width, miniWidth) {
5302
- return [
5303
- style({ overflow: 'hidden', flexBasis: `${miniWidth}px` }),
5304
- animate(`${duration}ms ease-in`, style({ flexBasis: `${width}px` }))
5305
- ];
5306
- }
5307
- /**
5308
- * @hidden
5309
- */
5310
- function miniCollapsePush(duration, width, miniWidth) {
5311
- return [
5312
- style({ overflow: 'hidden', flexBasis: `${width}px` }),
5313
- animate(`${duration}ms ease-in`, style({ flexBasis: `${miniWidth}px` }))
5314
- ];
5315
- }
5316
- /**
5317
- * @hidden
5318
- *
5319
- */
5320
- function miniExpandOverlay(duration, width, miniWidth) {
5321
- return [
5322
- style({ width: `${miniWidth}px` }),
5323
- animate(`${duration}ms ease-in`, style({ overflow: 'hidden', width: `${width}px` }))
5324
- ];
5325
- }
5326
- /**
5327
- * @hidden
5328
- */
5329
- function expandPush(duration, width) {
5330
- return [
5331
- style({ overflow: 'hidden', flexBasis: '0px' }),
5332
- animate(`${duration}ms ease-in`, style({ flexBasis: `${width}px` }))
5333
- ];
5334
- }
5335
- /**
5336
- * @hidden
5337
- */
5338
- function collapsePush(duration, width) {
5339
- return [
5340
- style({ flexBasis: `${width}px` }),
5341
- animate(`${duration}ms ease-in`, style({ overflow: 'hidden', flexBasis: `0px` }))
5342
- ];
5343
- }
5344
- /**
5345
- * @hidden
5346
- */
5347
- function expandRTLOverlay(duration, width) {
5348
- return [
5349
- style({ marginRight: `-${width}px` }),
5350
- animate(`${duration}ms ease-in`, style({ overflow: 'hidden', marginRight: `0px` }))
5351
- ];
5352
- }
5353
- /**
5354
- * @hidden
5355
- */
5356
- function expandOverlay(duration, width, position) {
5357
- const marginProp = position !== 'end' ? 'marginLeft' : 'marginRight';
5358
- return [
5359
- style({ [marginProp]: `-${width}px` }),
5360
- animate(`${duration}ms ease-in`, style({ overflow: 'hidden', [marginProp]: `0px` }))
5361
- ];
5362
- }
5363
- /**
5364
- * @hidden
5365
- */
5366
- function miniCollapseOverlay(duration, width, miniWidth) {
5367
- return [
5368
- style({ width: `${width}px` }),
5369
- animate(`${duration}ms ease-in`, style({ overflow: 'hidden', width: `${miniWidth}px` }))
5370
- ];
5371
- }
5372
- /**
5373
- * @hidden
5374
- */
5375
- function collapseOverlay(duration, width, position) {
5376
- const marginProp = position !== 'end' ? 'marginLeft' : 'marginRight';
5377
- return [
5378
- style({ [marginProp]: `0px` }),
5379
- animate(`${duration}ms ease-in`, style({ overflow: 'hidden', [marginProp]: `-${width}px` }))
5380
- ];
5381
- }
5382
- /**
5383
- * @hidden
5384
- */
5385
- function collapseRTLOverlay(duration, width) {
5386
- return [
5387
- style({ marginRight: `0px` }),
5388
- animate(`${duration}ms ease-in`, style({ overflow: 'hidden', marginRight: `-${width}px` }))
5389
- ];
5390
- }
5391
- /**
5392
- * @hidden
5393
- */
5394
- function expandAnimation(settings) {
5395
- const duration = settings.animation.duration;
5396
- const width = settings.width;
5397
- const miniWidth = settings.miniWidth;
5398
- const mode = settings.mode;
5399
- const mini = settings.mini;
5400
- const rtl = settings.rtl;
5401
- const position = settings.position;
5402
- if (mini && mode === 'push') {
5403
- return miniExpandPush(duration, width, miniWidth);
5404
- }
5405
- if (!mini && mode === 'push') {
5406
- return expandPush(duration, width);
5407
- }
5408
- if (!mini && mode === 'overlay') {
5409
- return rtl ? expandRTLOverlay(duration, width) : expandOverlay(duration, width, position);
5410
- }
5411
- if (mini && mode === 'overlay') {
5412
- return miniExpandOverlay(duration, width, miniWidth);
5413
- }
5414
- }
5415
- /**
5416
- * @hidden
5417
- */
5418
- function collapseAnimation(settings) {
5419
- const duration = settings.animation.duration;
5420
- const width = settings.width;
5421
- const miniWidth = settings.miniWidth;
5422
- const mode = settings.mode;
5423
- const mini = settings.mini;
5424
- const rtl = settings.rtl;
5425
- const position = settings.position;
5426
- if (mini && mode === 'push') {
5427
- return miniCollapsePush(duration, width, miniWidth);
5428
- }
5429
- if (!mini && mode === 'push') {
5430
- return collapsePush(duration, width);
5431
- }
5432
- if (!mini && mode === 'overlay') {
5433
- return rtl ? collapseRTLOverlay(duration, width) : collapseOverlay(duration, width, position);
5434
- }
5435
- if (mini && mode === 'overlay') {
5436
- return miniCollapseOverlay(duration, width, miniWidth);
5437
- }
5438
- }
5439
-
5440
5355
  /**
5441
5356
  * @hidden
5442
5357
  */
@@ -5861,8 +5776,6 @@ const DEFAULT_ANIMATION = { type: 'slide', duration: 200 };
5861
5776
  * ```
5862
5777
  */
5863
5778
  class DrawerComponent {
5864
- element;
5865
- builder;
5866
5779
  localizationService;
5867
5780
  drawerService;
5868
5781
  hostClasses = true;
@@ -5872,33 +5785,6 @@ class DrawerComponent {
5872
5785
  get endPositionClass() {
5873
5786
  return this.position === 'end';
5874
5787
  }
5875
- get overlayMarginLeft() {
5876
- if (!this.shouldApplyOverlayMargin()) {
5877
- return null;
5878
- }
5879
- if (this.rtl || this.position === 'end') {
5880
- return null;
5881
- }
5882
- return `-${this.drawerWidth}px`;
5883
- }
5884
- get overlayMarginRight() {
5885
- if (!this.shouldApplyOverlayMargin()) {
5886
- return null;
5887
- }
5888
- if (!this.rtl && this.position !== 'end') {
5889
- return null;
5890
- }
5891
- return `-${this.drawerWidth}px`;
5892
- }
5893
- get flexStyles() {
5894
- if (this.mode === 'overlay') {
5895
- return;
5896
- }
5897
- if (!this.expanded && !this.minimized) {
5898
- return 0;
5899
- }
5900
- return this.drawerWidth;
5901
- }
5902
5788
  /**
5903
5789
  * Specifies the mode in which the Drawer displays.
5904
5790
  *
@@ -5933,10 +5819,9 @@ class DrawerComponent {
5933
5819
  width = 240;
5934
5820
  /**
5935
5821
  * Defines the width of the Drawer when the mini view is enabled and the component is collapsed.
5936
- *
5937
- * @default 50
5822
+ * By default, the mini view width is determined by the used Kendo Theme.
5938
5823
  */
5939
- miniWidth = 50;
5824
+ miniWidth;
5940
5825
  /**
5941
5826
  * Specifies if the Drawer automatically collapses when an item or the overlay is clicked.
5942
5827
  *
@@ -6016,12 +5901,11 @@ class DrawerComponent {
6016
5901
  */
6017
5902
  licenseMessage;
6018
5903
  viewItems;
6019
- animationEnd = new EventEmitter();
5904
+ pendingToggle = null;
5905
+ animatingViaToggle = false;
6020
5906
  dynamicRTLSubscription;
6021
5907
  rtl = false;
6022
- constructor(element, builder, localizationService, drawerService) {
6023
- this.element = element;
6024
- this.builder = builder;
5908
+ constructor(localizationService, drawerService) {
6025
5909
  this.localizationService = localizationService;
6026
5910
  this.drawerService = drawerService;
6027
5911
  const isValid = validatePackage(packageMetadata);
@@ -6034,17 +5918,26 @@ class DrawerComponent {
6034
5918
  this.drawerService.owner = this;
6035
5919
  }
6036
5920
  ngOnChanges(changes) {
6037
- if (changes && changes['items']) {
5921
+ if (changes?.['items']) {
6038
5922
  this.drawerService.resetSelection();
6039
5923
  this.drawerService.init();
6040
5924
  this.viewItems = this.drawerService.view;
6041
5925
  }
5926
+ if (changes?.['expanded']) {
5927
+ this.animatingViaToggle = false;
5928
+ }
6042
5929
  }
6043
5930
  ngOnDestroy() {
6044
5931
  if (this.dynamicRTLSubscription) {
6045
5932
  this.dynamicRTLSubscription.unsubscribe();
6046
5933
  }
6047
5934
  }
5935
+ /**
5936
+ * @hidden
5937
+ */
5938
+ get listExpanded() {
5939
+ return this.expanded || (this.animatingViaToggle && this.pendingToggle === false);
5940
+ }
6048
5941
  /**
6049
5942
  * @hidden
6050
5943
  */
@@ -6057,6 +5950,51 @@ class DrawerComponent {
6057
5950
  get drawerWidth() {
6058
5951
  return this.minimized ? this.miniWidth : this.width;
6059
5952
  }
5953
+ /**
5954
+ * @hidden
5955
+ */
5956
+ get drawerWrapperStyle() {
5957
+ const styles = {};
5958
+ const slidesLeft = (!this.rtl && this.position === 'start') || (this.rtl && this.position === 'end');
5959
+ if (this.expanded) {
5960
+ styles['width'] = `${this.width}px`;
5961
+ }
5962
+ else if (this.mini) {
5963
+ if (isPresent(this.miniWidth)) {
5964
+ styles['width'] = `${this.miniWidth}px`;
5965
+ }
5966
+ }
5967
+ else {
5968
+ styles['width'] = '0';
5969
+ }
5970
+ if (this.mode === 'overlay') {
5971
+ if (this.minimized) {
5972
+ styles['transform'] = 'translateX(0%)';
5973
+ }
5974
+ else if (this.expanded) {
5975
+ styles['opacity'] = '1';
5976
+ styles['transform'] = 'translateX(0px)';
5977
+ }
5978
+ else {
5979
+ styles['opacity'] = '0';
5980
+ styles['transform'] = slidesLeft ? 'translateX(-100%)' : 'translateX(100%)';
5981
+ }
5982
+ }
5983
+ else {
5984
+ styles['opacity'] = (this.expanded || this.minimized) ? '1' : '0';
5985
+ }
5986
+ if (this.animation && this.animatingViaToggle) {
5987
+ const animationSettings = typeof this.animation === 'boolean' ? DEFAULT_ANIMATION : this.animation;
5988
+ const duration = animationSettings.duration;
5989
+ if (this.mini) {
5990
+ styles['transition'] = `width ${duration}ms`;
5991
+ }
5992
+ else {
5993
+ styles['transition'] = `all ${duration}ms`;
5994
+ }
5995
+ }
5996
+ return styles;
5997
+ }
6060
5998
  /**
6061
5999
  * Toggles the visibility of the Drawer.
6062
6000
  * If the `expanded` parameter is not provided, the Drawer will toggle between expanded and collapsed states.
@@ -6069,20 +6007,16 @@ class DrawerComponent {
6069
6007
  if (current === previous) {
6070
6008
  return;
6071
6009
  }
6072
- if (current === true) {
6073
- this.setExpanded(true);
6074
- }
6075
- else if (current === false && !this.animation) {
6076
- this.setExpanded(false);
6077
- }
6078
- if (this.animation) {
6079
- this.animationEnd.pipe(take(1))
6080
- .subscribe(() => { this.onAnimationEnd(current); });
6081
- this.animate(current);
6082
- }
6083
- else {
6010
+ this.animatingViaToggle = true;
6011
+ this.setExpanded(current);
6012
+ const anim = this.animation && typeof this.animation !== 'boolean' ? this.animation : DEFAULT_ANIMATION;
6013
+ const duration = this.animation ? anim.duration : 0;
6014
+ if (!this.animation || duration === 0) {
6015
+ this.animatingViaToggle = false;
6084
6016
  this[current ? 'expand' : 'collapse'].emit();
6017
+ return;
6085
6018
  }
6019
+ this.pendingToggle = current;
6086
6020
  }
6087
6021
  /**
6088
6022
  * @hidden
@@ -6090,59 +6024,39 @@ class DrawerComponent {
6090
6024
  onSelect(e) {
6091
6025
  this.select.emit(Object.assign(e, { sender: this }));
6092
6026
  }
6093
- onAnimationEnd(currentExpanded) {
6094
- if (currentExpanded) {
6095
- this.expand.emit();
6027
+ /**
6028
+ * @hidden
6029
+ */
6030
+ onTransitionEnd(event) {
6031
+ if (this.pendingToggle === null) {
6032
+ return;
6096
6033
  }
6097
- else {
6098
- this.setExpanded(false);
6099
- this.collapse.emit();
6034
+ if (event.target !== event.currentTarget) {
6035
+ return;
6100
6036
  }
6037
+ const wasExpanding = this.pendingToggle;
6038
+ this.pendingToggle = null;
6039
+ this.animatingViaToggle = false;
6040
+ this[wasExpanding ? 'expand' : 'collapse'].emit();
6101
6041
  }
6102
6042
  setExpanded(value) {
6103
6043
  this.expanded = value;
6104
6044
  this.expandedChange.emit(value);
6105
6045
  }
6106
- shouldApplyOverlayMargin() {
6107
- return this.mode !== 'push' && !this.expanded && !this.minimized;
6108
- }
6109
- animate(expanded) {
6110
- const settings = {
6111
- mode: this.mode,
6112
- mini: this.mini,
6113
- miniWidth: this.miniWidth,
6114
- width: this.width,
6115
- rtl: this.rtl,
6116
- position: this.position,
6117
- animation: (typeof this.animation !== 'boolean') ? this.animation : DEFAULT_ANIMATION
6118
- };
6119
- const animation = expanded ? expandAnimation(settings) : collapseAnimation(settings);
6120
- const player = this.createPlayer(animation, this.element.nativeElement);
6121
- player.play();
6122
- }
6123
- createPlayer(animation, animatedElement) {
6124
- const factory = this.builder.build(animation);
6125
- let player = factory.create(animatedElement);
6126
- player.onDone(() => {
6127
- if (player) {
6128
- this.animationEnd.emit();
6129
- player.destroy();
6130
- player = null;
6131
- }
6132
- });
6133
- return player;
6134
- }
6135
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: DrawerComponent, deps: [{ token: i0.ElementRef }, { token: i1$2.AnimationBuilder }, { token: i1.LocalizationService }, { token: DrawerService }], target: i0.ɵɵFactoryTarget.Component });
6136
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: DrawerComponent, isStandalone: true, selector: "kendo-drawer", inputs: { mode: "mode", position: "position", mini: "mini", expanded: "expanded", width: "width", miniWidth: "miniWidth", autoCollapse: "autoCollapse", items: "items", isItemExpanded: "isItemExpanded", animation: "animation" }, outputs: { expand: "expand", collapse: "collapse", select: "select", expandedChange: "expandedChange" }, host: { properties: { "class.k-drawer": "this.hostClasses", "class.k-drawer-start": "this.startPositionClass", "class.k-drawer-end": "this.endPositionClass", "style.marginLeft": "this.overlayMarginLeft", "style.marginRight": "this.overlayMarginRight", "style.flexBasis.px": "this.flexStyles", "attr.dir": "this.direction" } }, providers: [
6046
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: DrawerComponent, deps: [{ token: i1.LocalizationService }, { token: DrawerService }], target: i0.ɵɵFactoryTarget.Component });
6047
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: DrawerComponent, isStandalone: true, selector: "kendo-drawer", inputs: { mode: "mode", position: "position", mini: "mini", expanded: "expanded", width: "width", miniWidth: "miniWidth", autoCollapse: "autoCollapse", items: "items", isItemExpanded: "isItemExpanded", animation: "animation" }, outputs: { expand: "expand", collapse: "collapse", select: "select", expandedChange: "expandedChange" }, host: { properties: { "class.k-drawer": "this.hostClasses", "class.k-drawer-start": "this.startPositionClass", "class.k-drawer-end": "this.endPositionClass", "attr.dir": "this.direction" } }, providers: [
6137
6048
  LocalizationService,
6138
6049
  DrawerService,
6139
6050
  {
6140
6051
  provide: L10N_PREFIX,
6141
6052
  useValue: 'kendo.drawer'
6142
- }
6053
+ },
6054
+ { provide: KENDO_WEBMCP_HOST, useExisting: forwardRef(() => DrawerComponent) }
6143
6055
  ], queries: [{ propertyName: "drawerTemplate", first: true, predicate: DrawerTemplateDirective, descendants: true }, { propertyName: "footerTemplate", first: true, predicate: DrawerFooterTemplateDirective, descendants: true }, { propertyName: "headerTemplate", first: true, predicate: DrawerHeaderTemplateDirective, descendants: true }, { propertyName: "itemTemplate", first: true, predicate: DrawerItemTemplateDirective, descendants: true }], exportAs: ["kendoDrawer"], usesOnChanges: true, ngImport: i0, template: `
6144
- @if (expanded || mini) {
6145
- <div class="k-drawer-wrapper" [style.width.px]="drawerWidth">
6056
+ @if (expanded || mini || animation) {
6057
+ <div class="k-drawer-wrapper"
6058
+ [style]="drawerWrapperStyle"
6059
+ (transitionend)="onTransitionEnd($event)">
6146
6060
  @if (!drawerTemplate) {
6147
6061
  @if (headerTemplate) {
6148
6062
  <ng-template
@@ -6154,7 +6068,7 @@ class DrawerComponent {
6154
6068
  aria-orientation="vertical"
6155
6069
  (select)="onSelect($event)"
6156
6070
  [mini]="mini"
6157
- [expanded]="expanded"
6071
+ [expanded]="listExpanded"
6158
6072
  [(view)]="viewItems"
6159
6073
  [itemTemplate]="itemTemplate?.templateRef"
6160
6074
  class="k-drawer-items">
@@ -6188,12 +6102,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
6188
6102
  {
6189
6103
  provide: L10N_PREFIX,
6190
6104
  useValue: 'kendo.drawer'
6191
- }
6105
+ },
6106
+ { provide: KENDO_WEBMCP_HOST, useExisting: forwardRef(() => DrawerComponent) }
6192
6107
  ],
6193
6108
  selector: 'kendo-drawer',
6194
6109
  template: `
6195
- @if (expanded || mini) {
6196
- <div class="k-drawer-wrapper" [style.width.px]="drawerWidth">
6110
+ @if (expanded || mini || animation) {
6111
+ <div class="k-drawer-wrapper"
6112
+ [style]="drawerWrapperStyle"
6113
+ (transitionend)="onTransitionEnd($event)">
6197
6114
  @if (!drawerTemplate) {
6198
6115
  @if (headerTemplate) {
6199
6116
  <ng-template
@@ -6205,7 +6122,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
6205
6122
  aria-orientation="vertical"
6206
6123
  (select)="onSelect($event)"
6207
6124
  [mini]="mini"
6208
- [expanded]="expanded"
6125
+ [expanded]="listExpanded"
6209
6126
  [(view)]="viewItems"
6210
6127
  [itemTemplate]="itemTemplate?.templateRef"
6211
6128
  class="k-drawer-items">
@@ -6231,7 +6148,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
6231
6148
  standalone: true,
6232
6149
  imports: [NgTemplateOutlet, DrawerListComponent, WatermarkOverlayComponent]
6233
6150
  }]
6234
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1$2.AnimationBuilder }, { type: i1.LocalizationService }, { type: DrawerService }], propDecorators: { hostClasses: [{
6151
+ }], ctorParameters: () => [{ type: i1.LocalizationService }, { type: DrawerService }], propDecorators: { hostClasses: [{
6235
6152
  type: HostBinding,
6236
6153
  args: ['class.k-drawer']
6237
6154
  }], startPositionClass: [{
@@ -6240,15 +6157,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
6240
6157
  }], endPositionClass: [{
6241
6158
  type: HostBinding,
6242
6159
  args: ['class.k-drawer-end']
6243
- }], overlayMarginLeft: [{
6244
- type: HostBinding,
6245
- args: ['style.marginLeft']
6246
- }], overlayMarginRight: [{
6247
- type: HostBinding,
6248
- args: ['style.marginRight']
6249
- }], flexStyles: [{
6250
- type: HostBinding,
6251
- args: ['style.flexBasis.px']
6252
6160
  }], mode: [{
6253
6161
  type: Input
6254
6162
  }], position: [{
@@ -6956,6 +6864,7 @@ class StepperStepComponent {
6956
6864
  <a href='#' class='k-step-link' #stepLink
6957
6865
  [attr.tabindex]='tabIndexAttr'
6958
6866
  [attr.title]='step.label'
6867
+ [attr.aria-label]='step.label'
6959
6868
  [attr.aria-disabled]='step.disabled'
6960
6869
  [attr.aria-current]='index === current ? "step" : null'
6961
6870
  (focus)='onFocus()'
@@ -6971,7 +6880,6 @@ class StepperStepComponent {
6971
6880
  @if (showIndicator) {
6972
6881
  <span
6973
6882
  class='k-step-indicator'
6974
- aria-hidden='true'
6975
6883
  [style.transition-duration.ms]='transitionDuration'
6976
6884
  >
6977
6885
  @if (indicatorTemplate) {
@@ -7035,6 +6943,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
7035
6943
  <a href='#' class='k-step-link' #stepLink
7036
6944
  [attr.tabindex]='tabIndexAttr'
7037
6945
  [attr.title]='step.label'
6946
+ [attr.aria-label]='step.label'
7038
6947
  [attr.aria-disabled]='step.disabled'
7039
6948
  [attr.aria-current]='index === current ? "step" : null'
7040
6949
  (focus)='onFocus()'
@@ -7050,7 +6959,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
7050
6959
  @if (showIndicator) {
7051
6960
  <span
7052
6961
  class='k-step-indicator'
7053
- aria-hidden='true'
7054
6962
  [style.transition-duration.ms]='transitionDuration'
7055
6963
  >
7056
6964
  @if (indicatorTemplate) {
@@ -7622,7 +7530,8 @@ class StepperComponent {
7622
7530
  {
7623
7531
  provide: L10N_PREFIX,
7624
7532
  useValue: 'kendo.stepper'
7625
- }
7533
+ },
7534
+ { provide: KENDO_WEBMCP_HOST, useExisting: forwardRef(() => StepperComponent) }
7626
7535
  ], queries: [{ propertyName: "stepTemplate", first: true, predicate: StepperStepTemplateDirective, descendants: true }, { propertyName: "labelTemplate", first: true, predicate: StepperLabelTemplateDirective, descendants: true }, { propertyName: "indicatorTemplate", first: true, predicate: StepperIndicatorTemplateDirective, descendants: true }], exportAs: ["kendoStepper"], usesOnChanges: true, ngImport: i0, template: `
7627
7536
  <ng-container kendoStepperLocalizedMessages
7628
7537
  i18n-optional="kendo.stepper.optional|The text for the optional segment of the step label"
@@ -7651,7 +7560,7 @@ class StepperComponent {
7651
7560
  (listClick)="onListClick($event)">
7652
7561
  </ol>
7653
7562
 
7654
- @if (steps.length > 0) {
7563
+ @if (steps.length > 1) {
7655
7564
  <kendo-progressbar
7656
7565
  [attr.aria-hidden]='true'
7657
7566
  [animation]='progressAnimation'
@@ -7661,9 +7570,10 @@ class StepperComponent {
7661
7570
  [reverse]='!isHorizontal'
7662
7571
  [value]='currentStep'
7663
7572
  [ngStyle]='progressBarStyling'>
7573
+ <kendo-progressbar-messages progressBarLabel="progress"></kendo-progressbar-messages>
7664
7574
  </kendo-progressbar>
7665
7575
  }
7666
- `, 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"], outputs: ["animationEnd"], exportAs: ["kendoProgressBar"] }] });
7576
+ `, 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"], outputs: ["animationEnd"], exportAs: ["kendoProgressBar"] }, { kind: "component", type: ProgressBarCustomMessagesComponent, selector: "kendo-progressbar-messages" }] });
7667
7577
  }
7668
7578
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: StepperComponent, decorators: [{
7669
7579
  type: Component,
@@ -7675,7 +7585,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
7675
7585
  {
7676
7586
  provide: L10N_PREFIX,
7677
7587
  useValue: 'kendo.stepper'
7678
- }
7588
+ },
7589
+ { provide: KENDO_WEBMCP_HOST, useExisting: forwardRef(() => StepperComponent) }
7679
7590
  ],
7680
7591
  selector: 'kendo-stepper',
7681
7592
  template: `
@@ -7706,7 +7617,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
7706
7617
  (listClick)="onListClick($event)">
7707
7618
  </ol>
7708
7619
 
7709
- @if (steps.length > 0) {
7620
+ @if (steps.length > 1) {
7710
7621
  <kendo-progressbar
7711
7622
  [attr.aria-hidden]='true'
7712
7623
  [animation]='progressAnimation'
@@ -7716,11 +7627,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
7716
7627
  [reverse]='!isHorizontal'
7717
7628
  [value]='currentStep'
7718
7629
  [ngStyle]='progressBarStyling'>
7630
+ <kendo-progressbar-messages progressBarLabel="progress"></kendo-progressbar-messages>
7719
7631
  </kendo-progressbar>
7720
7632
  }
7721
7633
  `,
7722
7634
  standalone: true,
7723
- imports: [LocalizedStepperMessagesDirective, StepperListComponent, NgStyle, ProgressBarComponent]
7635
+ imports: [LocalizedStepperMessagesDirective, StepperListComponent, NgStyle, ProgressBarComponent, ProgressBarCustomMessagesComponent]
7724
7636
  }]
7725
7637
  }], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i1.LocalizationService }, { type: StepperService }], propDecorators: { hostClasses: [{
7726
7638
  type: HostBinding,
@@ -8072,7 +7984,7 @@ class AvatarComponent {
8072
7984
  _fillMode = undefined;
8073
7985
  _rounded = undefined;
8074
7986
  _svgIcon;
8075
- _themeColorClasses = ['k-avatar-primary', 'k-avatar-secondary', 'k-avatar-tertiary', 'k-avatar-base', 'k-avatar-info', 'k-avatar-success', 'k-avatar-warning', 'k-avatar-error', 'k-avatar-dark', 'k-avatar-light', 'k-avatar-inverse'];
7987
+ _themeColorClasses = ['k-avatar-primary', 'k-avatar-secondary', 'k-avatar-tertiary', 'k-avatar-base'];
8076
7988
  constructor(localization, renderer, element) {
8077
7989
  this.localization = localization;
8078
7990
  this.renderer = renderer;
@@ -9041,6 +8953,9 @@ class ExpansionPanelComponent {
9041
8953
  get expandedClass() {
9042
8954
  return this.expanded && !this.disabled;
9043
8955
  }
8956
+ get disabledClass() {
8957
+ return this.disabled;
8958
+ }
9044
8959
  direction;
9045
8960
  /**
9046
8961
  * @hidden
@@ -9245,8 +9160,8 @@ class ExpansionPanelComponent {
9245
9160
  removeContentHiddenClass() {
9246
9161
  this.renderer.removeClass(this.content.nativeElement, CONTENT_HIDDEN_CLASS);
9247
9162
  }
9248
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ExpansionPanelComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.LocalizationService }, { token: i1$2.AnimationBuilder }], target: i0.ɵɵFactoryTarget.Component });
9249
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: ExpansionPanelComponent, isStandalone: true, selector: "kendo-expansionpanel", inputs: { title: "title", subtitle: "subtitle", disabled: "disabled", expanded: "expanded", svgExpandIcon: "svgExpandIcon", svgCollapseIcon: "svgCollapseIcon", expandIcon: "expandIcon", collapseIcon: "collapseIcon", animation: "animation" }, outputs: { expandedChange: "expandedChange", action: "action", expand: "expand", collapse: "collapse" }, host: { properties: { "class.k-expander": "this.hostClass", "class.k-expanded": "this.expandedClass", "attr.dir": "this.direction" } }, providers: [
9163
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ExpansionPanelComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.LocalizationService }, { token: i2.AnimationBuilder }], target: i0.ɵɵFactoryTarget.Component });
9164
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: ExpansionPanelComponent, isStandalone: true, selector: "kendo-expansionpanel", inputs: { title: "title", subtitle: "subtitle", disabled: "disabled", expanded: "expanded", svgExpandIcon: "svgExpandIcon", svgCollapseIcon: "svgCollapseIcon", expandIcon: "expandIcon", collapseIcon: "collapseIcon", animation: "animation" }, outputs: { expandedChange: "expandedChange", action: "action", expand: "expand", collapse: "collapse" }, host: { properties: { "class.k-expander": "this.hostClass", "class.k-expanded": "this.expandedClass", "class.k-disabled": "this.disabledClass", "attr.dir": "this.direction" } }, providers: [
9250
9165
  LocalizationService,
9251
9166
  {
9252
9167
  provide: L10N_PREFIX,
@@ -9256,8 +9171,7 @@ class ExpansionPanelComponent {
9256
9171
  <div
9257
9172
  #header
9258
9173
  [class.k-expander-header]="true"
9259
- [class.k-disabled]="disabled"
9260
- [attr.aria-disabled]="disabled"
9174
+ [attr.aria-disabled]="disabled || null"
9261
9175
  [attr.aria-expanded]="expanded && !disabled"
9262
9176
  role="button"
9263
9177
  tabindex="0"
@@ -9290,7 +9204,7 @@ class ExpansionPanelComponent {
9290
9204
  </span>
9291
9205
  </div>
9292
9206
  <div #content [id]="contentWrapperId" class="k-expander-content-wrapper">
9293
- <div class="k-expander-content" [attr.aria-hidden]="!expanded">
9207
+ <div class="k-expander-content">
9294
9208
  <ng-content></ng-content>
9295
9209
  </div>
9296
9210
  </div>
@@ -9312,8 +9226,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
9312
9226
  <div
9313
9227
  #header
9314
9228
  [class.k-expander-header]="true"
9315
- [class.k-disabled]="disabled"
9316
- [attr.aria-disabled]="disabled"
9229
+ [attr.aria-disabled]="disabled || null"
9317
9230
  [attr.aria-expanded]="expanded && !disabled"
9318
9231
  role="button"
9319
9232
  tabindex="0"
@@ -9346,7 +9259,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
9346
9259
  </span>
9347
9260
  </div>
9348
9261
  <div #content [id]="contentWrapperId" class="k-expander-content-wrapper">
9349
- <div class="k-expander-content" [attr.aria-hidden]="!expanded">
9262
+ <div class="k-expander-content">
9350
9263
  <ng-content></ng-content>
9351
9264
  </div>
9352
9265
  </div>
@@ -9354,7 +9267,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
9354
9267
  standalone: true,
9355
9268
  imports: [NgTemplateOutlet, IconWrapperComponent]
9356
9269
  }]
9357
- }], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i1.LocalizationService }, { type: i1$2.AnimationBuilder }], propDecorators: { title: [{
9270
+ }], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i1.LocalizationService }, { type: i2.AnimationBuilder }], propDecorators: { title: [{
9358
9271
  type: Input
9359
9272
  }], subtitle: [{
9360
9273
  type: Input
@@ -9395,6 +9308,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
9395
9308
  }], expandedClass: [{
9396
9309
  type: HostBinding,
9397
9310
  args: ['class.k-expanded']
9311
+ }], disabledClass: [{
9312
+ type: HostBinding,
9313
+ args: ['class.k-disabled']
9398
9314
  }], direction: [{
9399
9315
  type: HostBinding,
9400
9316
  args: ['attr.dir']
@@ -10415,18 +10331,12 @@ class TileLayoutItemComponent {
10415
10331
  resizable = true;
10416
10332
  itemClass = true;
10417
10333
  hostRole = 'listitem';
10418
- get hostDropEffect() {
10419
- return this.isResizable || this.isReorderable ? 'execute' : undefined;
10420
- }
10421
10334
  get hostTabindex() {
10422
10335
  return this.isNavigable ? '0' : undefined;
10423
10336
  }
10424
10337
  get ariaKeyShortcuts() {
10425
10338
  return this.isNavigable ? 'Enter' : undefined;
10426
10339
  }
10427
- get hostGrabbed() {
10428
- return this.isResizable || this.isReorderable;
10429
- }
10430
10340
  get hostLabelledBy() {
10431
10341
  return this.title ? this.titleId : undefined;
10432
10342
  }
@@ -10552,7 +10462,7 @@ class TileLayoutItemComponent {
10552
10462
  }
10553
10463
  }
10554
10464
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TileLayoutItemComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i1.LocalizationService }, { token: TileLayoutDraggingService }, { token: TileLayoutKeyboardNavigationService }], target: i0.ɵɵFactoryTarget.Component });
10555
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: TileLayoutItemComponent, isStandalone: true, selector: "kendo-tilelayout-item", inputs: { title: "title", rowSpan: "rowSpan", colSpan: "colSpan", order: "order", col: "col", row: "row", reorderable: "reorderable", resizable: "resizable" }, host: { properties: { "class.k-tilelayout-item": "this.itemClass", "class.k-card": "this.itemClass", "attr.role": "this.hostRole", "attr.aria-dropeffect": "this.hostDropEffect", "attr.tabindex": "this.hostTabindex", "attr.aria-keyshortcuts": "this.ariaKeyShortcuts", "attr.aria-grabbed": "this.hostGrabbed", "attr.aria-labelledby": "this.hostLabelledBy", "style.grid-column-end": "this.colEnd", "style.grid-row-end": "this.rowEnd", "style.grid-column-start": "this.colStart", "style.grid-row-start": "this.rowStart" } }, queries: [{ propertyName: "headers", predicate: TileLayoutItemHeaderComponent }], usesOnChanges: true, ngImport: i0, template: `
10465
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: TileLayoutItemComponent, isStandalone: true, selector: "kendo-tilelayout-item", inputs: { title: "title", rowSpan: "rowSpan", colSpan: "colSpan", order: "order", col: "col", row: "row", reorderable: "reorderable", resizable: "resizable" }, host: { properties: { "class.k-tilelayout-item": "this.itemClass", "class.k-card": "this.itemClass", "attr.role": "this.hostRole", "attr.tabindex": "this.hostTabindex", "attr.aria-keyshortcuts": "this.ariaKeyShortcuts", "attr.aria-labelledby": "this.hostLabelledBy", "style.grid-column-end": "this.colEnd", "style.grid-row-end": "this.rowEnd", "style.grid-column-start": "this.colStart", "style.grid-row-start": "this.rowStart" } }, queries: [{ propertyName: "headers", predicate: TileLayoutItemHeaderComponent }], usesOnChanges: true, ngImport: i0, template: `
10556
10466
  @if (title) {
10557
10467
  <kendo-tilelayout-item-header>
10558
10468
  <h5 [id]="titleId" class="k-card-title">{{ title }}</h5>
@@ -10621,18 +10531,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
10621
10531
  }], hostRole: [{
10622
10532
  type: HostBinding,
10623
10533
  args: ['attr.role']
10624
- }], hostDropEffect: [{
10625
- type: HostBinding,
10626
- args: ['attr.aria-dropeffect']
10627
10534
  }], hostTabindex: [{
10628
10535
  type: HostBinding,
10629
10536
  args: ['attr.tabindex']
10630
10537
  }], ariaKeyShortcuts: [{
10631
10538
  type: HostBinding,
10632
10539
  args: ['attr.aria-keyshortcuts']
10633
- }], hostGrabbed: [{
10634
- type: HostBinding,
10635
- args: ['attr.aria-grabbed']
10636
10540
  }], hostLabelledBy: [{
10637
10541
  type: HostBinding,
10638
10542
  args: ['attr.aria-labelledby']
@@ -11832,13 +11736,19 @@ class TimelineCardComponent {
11832
11736
  }
11833
11737
  }
11834
11738
  get role() {
11835
- return this.orientation === 'vertical' ? 'button' : 'tabpanel';
11739
+ if (this.orientation === 'vertical') {
11740
+ return 'button';
11741
+ }
11742
+ return this.event ? 'tabpanel' : null;
11743
+ }
11744
+ get ariaCardLabel() {
11745
+ return this.orientation === 'horizontal' && this.event ? this.event.subtitle : null;
11836
11746
  }
11837
11747
  get ariaLive() {
11838
11748
  return this.orientation === 'vertical' ? 'polite' : null;
11839
11749
  }
11840
11750
  get ariaExpanded() {
11841
- return this.orientation === 'vertical' ? this.expanded : null;
11751
+ return this.orientation === 'vertical' && this.collapsible ? this.expanded : null;
11842
11752
  }
11843
11753
  calloutSvgIcon = chevronRightIcon;
11844
11754
  calloutFontIcon = 'arrow-chevron-right';
@@ -11912,6 +11822,7 @@ class TimelineCardComponent {
11912
11822
  class="k-card-with-callout k-card-vertical"
11913
11823
  (click)="toggle()"
11914
11824
  [attr.role]="role"
11825
+ [attr.aria-label]="ariaCardLabel"
11915
11826
  [attr.aria-live]="ariaLive"
11916
11827
  [attr.aria-expanded]="ariaExpanded"
11917
11828
  [attr.tabindex]="tabIndex"
@@ -11940,16 +11851,13 @@ class TimelineCardComponent {
11940
11851
  <div kendoCardTitle>
11941
11852
  <span class="k-event-title">{{ event.title }}</span>
11942
11853
  @if (collapsible && orientation === 'vertical') {
11943
- <button
11944
- kendoButton
11945
- [icon]="calloutFontIcon"
11946
- [svgIcon]="calloutSvgIcon"
11947
- class="k-event-collapse"
11948
- fillMode="flat"
11949
- [attr.aria-hidden]="true"
11950
- tabindex="-1"
11951
- type="button"
11952
- ></button>
11854
+ <span class="k-event-collapse k-button k-button-flat k-button-xs k-icon-button">
11855
+ <kendo-icon-wrapper
11856
+ [name]="calloutFontIcon"
11857
+ [svgIcon]="calloutSvgIcon"
11858
+ innerCssClass="k-button-icon">
11859
+ </kendo-icon-wrapper>
11860
+ </span>
11953
11861
  }
11954
11862
  </div>
11955
11863
  }
@@ -12016,7 +11924,7 @@ class TimelineCardComponent {
12016
11924
  </div>
12017
11925
  }
12018
11926
  </kendo-card>
12019
- `, isInline: true, dependencies: [{ kind: "component", type: CardComponent, selector: "kendo-card", inputs: ["orientation", "width"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: CardHeaderComponent, selector: "kendo-card-header" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: CardTitleDirective, selector: "[kendoCardTitle]" }, { kind: "component", type: ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconPosition", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "directive", type: CardSubtitleDirective, selector: "[kendoCardSubtitle]" }, { kind: "component", type: CardBodyComponent, selector: "kendo-card-body" }, { kind: "directive", type: CardMediaDirective, selector: "[kendoCardMedia]" }, { kind: "component", type: CardActionsComponent, selector: "kendo-card-actions", inputs: ["orientation", "layout", "actions"], outputs: ["action"] }], animations: [
11927
+ `, isInline: true, dependencies: [{ kind: "component", type: CardComponent, selector: "kendo-card", inputs: ["orientation", "width"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: CardHeaderComponent, selector: "kendo-card-header" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: CardTitleDirective, selector: "[kendoCardTitle]" }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: CardSubtitleDirective, selector: "[kendoCardSubtitle]" }, { kind: "component", type: CardBodyComponent, selector: "kendo-card-body" }, { kind: "directive", type: CardMediaDirective, selector: "[kendoCardMedia]" }, { kind: "component", type: CardActionsComponent, selector: "kendo-card-actions", inputs: ["orientation", "layout", "actions"], outputs: ["action"] }], animations: [
12020
11928
  trigger('toggle', [
12021
11929
  state('collapsed', style({
12022
11930
  height: '0',
@@ -12064,6 +11972,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
12064
11972
  class="k-card-with-callout k-card-vertical"
12065
11973
  (click)="toggle()"
12066
11974
  [attr.role]="role"
11975
+ [attr.aria-label]="ariaCardLabel"
12067
11976
  [attr.aria-live]="ariaLive"
12068
11977
  [attr.aria-expanded]="ariaExpanded"
12069
11978
  [attr.tabindex]="tabIndex"
@@ -12092,16 +12001,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
12092
12001
  <div kendoCardTitle>
12093
12002
  <span class="k-event-title">{{ event.title }}</span>
12094
12003
  @if (collapsible && orientation === 'vertical') {
12095
- <button
12096
- kendoButton
12097
- [icon]="calloutFontIcon"
12098
- [svgIcon]="calloutSvgIcon"
12099
- class="k-event-collapse"
12100
- fillMode="flat"
12101
- [attr.aria-hidden]="true"
12102
- tabindex="-1"
12103
- type="button"
12104
- ></button>
12004
+ <span class="k-event-collapse k-button k-button-flat k-button-xs k-icon-button">
12005
+ <kendo-icon-wrapper
12006
+ [name]="calloutFontIcon"
12007
+ [svgIcon]="calloutSvgIcon"
12008
+ innerCssClass="k-button-icon">
12009
+ </kendo-icon-wrapper>
12010
+ </span>
12105
12011
  }
12106
12012
  </div>
12107
12013
  }
@@ -12170,7 +12076,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
12170
12076
  </kendo-card>
12171
12077
  `,
12172
12078
  standalone: true,
12173
- imports: [CardComponent, NgStyle, NgClass, CardHeaderComponent, NgTemplateOutlet, CardTitleDirective, ButtonComponent, CardSubtitleDirective, CardBodyComponent, CardMediaDirective, CardActionsComponent]
12079
+ imports: [CardComponent, NgStyle, NgClass, CardHeaderComponent, NgTemplateOutlet, CardTitleDirective, IconWrapperComponent, CardSubtitleDirective, CardBodyComponent, CardMediaDirective, CardActionsComponent]
12174
12080
  }]
12175
12081
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: TimelineService }, { type: i0.Renderer2 }], propDecorators: { event: [{
12176
12082
  type: Input
@@ -12263,8 +12169,8 @@ class TimelineHorizontalComponent {
12263
12169
  trackWrapWidth;
12264
12170
  scrollableTrackWidth;
12265
12171
  cardWidth;
12266
- svgLeftIcon = caretAltLeftIcon;
12267
- svgRightIcon = caretAltRightIcon;
12172
+ svgLeftIcon = chevronLeftIcon;
12173
+ svgRightIcon = chevronRightIcon;
12268
12174
  calloutStyle;
12269
12175
  animationState = 'center';
12270
12176
  translateValue = 0;
@@ -12552,9 +12458,10 @@ class TimelineHorizontalComponent {
12552
12458
  });
12553
12459
  }
12554
12460
  assignAriaLabel(cardElement, dateElement) {
12555
- const dateLabelId = `k-${guid()}`;
12556
- this.renderer.setAttribute(dateElement, 'id', dateLabelId);
12557
- this.renderer.setAttribute(cardElement, 'aria-label', dateLabelId);
12461
+ const dateSpan = dateElement.querySelector('.k-timeline-date');
12462
+ if (dateSpan) {
12463
+ this.renderer.setAttribute(cardElement, 'aria-label', dateSpan.textContent.trim());
12464
+ }
12558
12465
  }
12559
12466
  assignAriaDescribedBy(cardElement, dateElement) {
12560
12467
  const cardId = `k-${guid()}`;
@@ -12677,10 +12584,11 @@ class TimelineHorizontalComponent {
12677
12584
  <button
12678
12585
  kendoButton
12679
12586
  [svgIcon]="svgLeftIcon"
12680
- icon="caret-alt-left"
12587
+ icon="chevron-left"
12681
12588
  class="k-timeline-arrow k-timeline-arrow-left"
12682
12589
  rounded="full"
12683
12590
  [title]="previousTitle"
12591
+ [attr.aria-hidden]="true"
12684
12592
  (click)="previousClick()"
12685
12593
  [disabled]="isFirstRange"
12686
12594
  tabindex="-1"
@@ -12689,10 +12597,11 @@ class TimelineHorizontalComponent {
12689
12597
  <button
12690
12598
  kendoButton
12691
12599
  [svgIcon]="svgRightIcon"
12692
- icon="caret-alt-right"
12600
+ icon="chevron-right"
12693
12601
  class="k-timeline-arrow k-timeline-arrow-right"
12694
12602
  rounded="full"
12695
12603
  [title]="nextTitle"
12604
+ [attr.aria-hidden]="true"
12696
12605
  (click)="nextClick()"
12697
12606
  [disabled]="isLastRange"
12698
12607
  tabindex="-1"
@@ -12777,7 +12686,7 @@ class TimelineHorizontalComponent {
12777
12686
  }
12778
12687
  <kendo-resize-sensor (resize)="onResize()" [rateLimit]="10"></kendo-resize-sensor>
12779
12688
  </div>
12780
- `, isInline: true, dependencies: [{ kind: "component", type: ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconPosition", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { 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" }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }], animations: [
12689
+ `, isInline: true, dependencies: [{ kind: "component", type: ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconPosition", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { 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" }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }], animations: [
12781
12690
  trigger('trackSlide', [
12782
12691
  state('left', style({
12783
12692
  transform: `translateX({{transformValue}}%)`,
@@ -12831,10 +12740,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
12831
12740
  <button
12832
12741
  kendoButton
12833
12742
  [svgIcon]="svgLeftIcon"
12834
- icon="caret-alt-left"
12743
+ icon="chevron-left"
12835
12744
  class="k-timeline-arrow k-timeline-arrow-left"
12836
12745
  rounded="full"
12837
12746
  [title]="previousTitle"
12747
+ [attr.aria-hidden]="true"
12838
12748
  (click)="previousClick()"
12839
12749
  [disabled]="isFirstRange"
12840
12750
  tabindex="-1"
@@ -12843,10 +12753,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
12843
12753
  <button
12844
12754
  kendoButton
12845
12755
  [svgIcon]="svgRightIcon"
12846
- icon="caret-alt-right"
12756
+ icon="chevron-right"
12847
12757
  class="k-timeline-arrow k-timeline-arrow-right"
12848
12758
  rounded="full"
12849
12759
  [title]="nextTitle"
12760
+ [attr.aria-hidden]="true"
12850
12761
  (click)="nextClick()"
12851
12762
  [disabled]="isLastRange"
12852
12763
  tabindex="-1"