@progress/kendo-angular-dateinputs 25.0.0-develop.1 → 25.0.0-develop.12

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,7 +3,7 @@
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, EventEmitter, Input, Directive, isDevMode, Output, Component, HostBinding, HostListener, ChangeDetectionStrategy, forwardRef, ElementRef, ViewChild, ContentChild, InjectionToken, Inject, NgZone, Optional, ViewContainerRef, ViewChildren, TemplateRef, ContentChildren, NgModule } from '@angular/core';
6
+ import { Injectable, EventEmitter, Input, Directive, isDevMode, Output, Component, HostBinding, HostListener, ChangeDetectionStrategy, forwardRef, ElementRef, ViewChild, ContentChild, InjectionToken, Inject, NgZone, Optional, ViewContainerRef, ViewChildren, signal, TemplateRef, ContentChildren, NgModule } from '@angular/core';
7
7
  import { NG_VALUE_ACCESSOR, NG_VALIDATORS, NgControl } from '@angular/forms';
8
8
  import * as i1$1 from '@progress/kendo-angular-l10n';
9
9
  import { ComponentMessages, LocalizationService, L10N_PREFIX, RTL } from '@progress/kendo-angular-l10n';
@@ -36,8 +36,8 @@ const packageMetadata = {
36
36
  productName: 'Kendo UI for Angular',
37
37
  productCode: 'KENDOUIANGULAR',
38
38
  productCodes: ['KENDOUIANGULAR'],
39
- publishDate: 1783679912,
40
- version: '25.0.0-develop.1',
39
+ publishDate: 1785317928,
40
+ version: '25.0.0-develop.12',
41
41
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
42
42
  };
43
43
 
@@ -1881,7 +1881,6 @@ class ViewComponent {
1881
1881
  @if (firstDate(row)) {
1882
1882
  <td
1883
1883
  class="k-alt k-calendar-td"
1884
- role="gridcell"
1885
1884
  (click)="handleWeekNumberClick(row)"
1886
1885
  >
1887
1886
  @if (!weekNumberTemplateRef) {
@@ -1907,8 +1906,8 @@ class ViewComponent {
1907
1906
  role="gridcell"
1908
1907
  [attr.id]="cell.id"
1909
1908
  [attr.data-cell-index]="tableCellIndex(rowIndex, cellIndex)"
1910
- [attr.aria-selected]="cell.isSelected || cell.isRangeStart || cell.isRangeMid || cell.isRangeEnd"
1911
- [attr.aria-disabled]="cell.isDisabled"
1909
+ [attr.aria-selected]="(cell.isSelected || cell.isRangeStart || cell.isRangeMid || cell.isRangeEnd) || null"
1910
+ [attr.aria-disabled]="cell.isDisabled || null"
1912
1911
  [attr.aria-label]="getMonthLabel(cell.value)"
1913
1912
  [ngClass]="getStyles(cell)"
1914
1913
  [title]="cell.title"
@@ -1943,7 +1942,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
1943
1942
  @if (firstDate(row)) {
1944
1943
  <td
1945
1944
  class="k-alt k-calendar-td"
1946
- role="gridcell"
1947
1945
  (click)="handleWeekNumberClick(row)"
1948
1946
  >
1949
1947
  @if (!weekNumberTemplateRef) {
@@ -1969,8 +1967,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
1969
1967
  role="gridcell"
1970
1968
  [attr.id]="cell.id"
1971
1969
  [attr.data-cell-index]="tableCellIndex(rowIndex, cellIndex)"
1972
- [attr.aria-selected]="cell.isSelected || cell.isRangeStart || cell.isRangeMid || cell.isRangeEnd"
1973
- [attr.aria-disabled]="cell.isDisabled"
1970
+ [attr.aria-selected]="(cell.isSelected || cell.isRangeStart || cell.isRangeMid || cell.isRangeEnd) || null"
1971
+ [attr.aria-disabled]="cell.isDisabled || null"
1974
1972
  [attr.aria-label]="getMonthLabel(cell.value)"
1975
1973
  [ngClass]="getStyles(cell)"
1976
1974
  [title]="cell.title"
@@ -2052,6 +2050,7 @@ class HorizontalViewListComponent {
2052
2050
  cdr;
2053
2051
  element;
2054
2052
  renderer;
2053
+ localization;
2055
2054
  handleMultiViewCalendarFocus() {
2056
2055
  this.focusCalendar.emit();
2057
2056
  }
@@ -2117,16 +2116,19 @@ class HorizontalViewListComponent {
2117
2116
  return this.activeView === CalendarViewEnum.century;
2118
2117
  }
2119
2118
  get role() {
2120
- return this.views >= 2 ? 'grid' : null;
2121
- }
2122
- get tabindex() {
2123
- return this.views >= 2 ? '0' : null;
2119
+ return 'grid';
2124
2120
  }
2125
- get getActiveDescendant() {
2126
- return this.views === 1 ? this.activeDescendant : null;
2121
+ get hostActiveDescendant() {
2122
+ return this.activeDescendant || null;
2127
2123
  }
2128
2124
  get getTabIndex() {
2129
- return this.disabled || this.views >= 2 ? null : this.tabIndex;
2125
+ if (this.views >= 2) {
2126
+ return null;
2127
+ }
2128
+ return this.disabled ? null : String(this.tabIndex) || '0';
2129
+ }
2130
+ get weekNumberLabel() {
2131
+ return this.localization.get('weekNumberLabel');
2130
2132
  }
2131
2133
  service;
2132
2134
  weekNames = [];
@@ -2140,12 +2142,13 @@ class HorizontalViewListComponent {
2140
2142
  showWeekNumbers;
2141
2143
  intlSubscription;
2142
2144
  animation;
2143
- constructor(bus, intl, cdr, element, renderer) {
2145
+ constructor(bus, intl, cdr, element, renderer, localization) {
2144
2146
  this.bus = bus;
2145
2147
  this.intl = intl;
2146
2148
  this.cdr = cdr;
2147
2149
  this.element = element;
2148
2150
  this.renderer = renderer;
2151
+ this.localization = localization;
2149
2152
  this.intlSubscription = this.intl.changes.subscribe(this.intlChange.bind(this));
2150
2153
  }
2151
2154
  ngOnChanges(changes) {
@@ -2305,15 +2308,13 @@ class HorizontalViewListComponent {
2305
2308
  this.renderer.setAttribute(this.element.nativeElement, attributeNames.ariaActiveDescendant, this.activeDescendant);
2306
2309
  }
2307
2310
  }
2308
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: HorizontalViewListComponent, deps: [{ token: BusViewService }, { token: i1.IntlService }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
2309
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: HorizontalViewListComponent, isStandalone: true, selector: "kendo-calendar-horizontal", inputs: { showOtherMonthDays: "showOtherMonthDays", cellTemplateRef: "cellTemplateRef", weekNumberTemplateRef: "weekNumberTemplateRef", allowReverse: "allowReverse", activeRangeEnd: "activeRangeEnd", activeView: "activeView", cellUID: "cellUID", focusedDate: "focusedDate", isActive: "isActive", min: "min", max: "max", selectionRange: "selectionRange", selectedDates: "selectedDates", views: "views", showViewHeader: "showViewHeader", animateNavigation: "animateNavigation", orientation: "orientation", activeDescendant: "activeDescendant", tabIndex: "tabIndex", disabled: "disabled", id: "id", weekDaysFormat: "weekDaysFormat", weekNumber: "weekNumber" }, outputs: { cellClick: "cellClick", weekNumberCellClick: "weekNumberCellClick", cellEnter: "cellEnter", cellLeave: "cellLeave", activeDateChange: "activeDateChange", focusCalendar: "focusCalendar", blurCalendar: "blurCalendar", focusedCellChange: "focusedCellChange" }, host: { listeners: { "focus": "handleMultiViewCalendarFocus()", "blur": "handleMultiViewCalendarBlur($event)" }, properties: { "class.k-calendar-view": "this.getComponentClass", "class.k-align-items-start": "this.getComponentClass", "class.k-justify-content-center": "this.getComponentClass", "class.k-hstack": "this.horizontalHostClass", "class.k-vstack": "this.verticalHostClass", "class.k-calendar-monthview": "this.getComponentMonthClass", "class.k-calendar-yearview": "this.getComponentYearClass", "class.k-calendar-decadeview": "this.getComponentDecadeClass", "class.k-calendar-centuryview": "this.getComponentCenturyClass", "attr.role": "this.role", "attr.tabindex": "this.tabindex" } }, usesOnChanges: true, ngImport: i0, template: `
2311
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: HorizontalViewListComponent, deps: [{ token: BusViewService }, { token: i1.IntlService }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
2312
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: HorizontalViewListComponent, isStandalone: true, selector: "kendo-calendar-horizontal", inputs: { showOtherMonthDays: "showOtherMonthDays", cellTemplateRef: "cellTemplateRef", weekNumberTemplateRef: "weekNumberTemplateRef", allowReverse: "allowReverse", activeRangeEnd: "activeRangeEnd", activeView: "activeView", cellUID: "cellUID", focusedDate: "focusedDate", isActive: "isActive", min: "min", max: "max", selectionRange: "selectionRange", selectedDates: "selectedDates", views: "views", showViewHeader: "showViewHeader", animateNavigation: "animateNavigation", orientation: "orientation", activeDescendant: "activeDescendant", tabIndex: "tabIndex", disabled: "disabled", id: "id", weekDaysFormat: "weekDaysFormat", weekNumber: "weekNumber" }, outputs: { cellClick: "cellClick", weekNumberCellClick: "weekNumberCellClick", cellEnter: "cellEnter", cellLeave: "cellLeave", activeDateChange: "activeDateChange", focusCalendar: "focusCalendar", blurCalendar: "blurCalendar", focusedCellChange: "focusedCellChange" }, host: { listeners: { "focus": "handleMultiViewCalendarFocus()", "blur": "handleMultiViewCalendarBlur($event)" }, properties: { "class.k-calendar-view": "this.getComponentClass", "class.k-align-items-start": "this.getComponentClass", "class.k-justify-content-center": "this.getComponentClass", "class.k-hstack": "this.horizontalHostClass", "class.k-vstack": "this.verticalHostClass", "class.k-calendar-monthview": "this.getComponentMonthClass", "class.k-calendar-yearview": "this.getComponentYearClass", "class.k-calendar-decadeview": "this.getComponentDecadeClass", "class.k-calendar-centuryview": "this.getComponentCenturyClass", "attr.role": "this.role", "attr.aria-activedescendant": "this.hostActiveDescendant" } }, usesOnChanges: true, ngImport: i0, template: `
2310
2313
  <ng-template #tableTemplate let-date="date" let-class="className">
2311
2314
  <table
2312
- [attr.role]="views >= 2 ? 'none' : 'grid'"
2315
+ role="none"
2313
2316
  class="k-calendar-table"
2314
2317
  [ngClass]="class"
2315
- [attr.aria-labelledby]="id"
2316
- [attr.aria-activedescendant]="getActiveDescendant"
2317
2318
  [attr.tabindex]="getTabIndex"
2318
2319
  (focus)="handleClassicCalendarFocus()"
2319
2320
  (blur)="handleClassicCalendarBlur($event)"
@@ -2327,10 +2328,11 @@ class HorizontalViewListComponent {
2327
2328
  @for (name of weekNames; track $index; let i = $index) {
2328
2329
  <th
2329
2330
  class="k-calendar-th"
2331
+ [class.k-alt]="weekNumber && i === 0"
2330
2332
  scope="col"
2331
- [attr.aria-label]="wideWeekNames[i]"
2333
+ [attr.aria-label]="weekNumber && i === 0 ? weekNumberLabel : wideWeekNames[i]"
2332
2334
  role="columnheader"
2333
- >{{name}}</th>
2335
+ >@if (weekNumber && i === 0) {<span class="k-sr-only">{{weekNumberLabel}}</span>}{{name}}</th>
2334
2336
  }
2335
2337
  </tr>
2336
2338
  </thead>
@@ -2407,11 +2409,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
2407
2409
  template: `
2408
2410
  <ng-template #tableTemplate let-date="date" let-class="className">
2409
2411
  <table
2410
- [attr.role]="views >= 2 ? 'none' : 'grid'"
2412
+ role="none"
2411
2413
  class="k-calendar-table"
2412
2414
  [ngClass]="class"
2413
- [attr.aria-labelledby]="id"
2414
- [attr.aria-activedescendant]="getActiveDescendant"
2415
2415
  [attr.tabindex]="getTabIndex"
2416
2416
  (focus)="handleClassicCalendarFocus()"
2417
2417
  (blur)="handleClassicCalendarBlur($event)"
@@ -2425,10 +2425,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
2425
2425
  @for (name of weekNames; track $index; let i = $index) {
2426
2426
  <th
2427
2427
  class="k-calendar-th"
2428
+ [class.k-alt]="weekNumber && i === 0"
2428
2429
  scope="col"
2429
- [attr.aria-label]="wideWeekNames[i]"
2430
+ [attr.aria-label]="weekNumber && i === 0 ? weekNumberLabel : wideWeekNames[i]"
2430
2431
  role="columnheader"
2431
- >{{name}}</th>
2432
+ >@if (weekNumber && i === 0) {<span class="k-sr-only">{{weekNumberLabel}}</span>}{{name}}</th>
2432
2433
  }
2433
2434
  </tr>
2434
2435
  </thead>
@@ -2499,7 +2500,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
2499
2500
  standalone: true,
2500
2501
  imports: [NgClass, ViewComponent, NgTemplateOutlet, KForOf]
2501
2502
  }]
2502
- }], ctorParameters: () => [{ type: BusViewService }, { type: i1.IntlService }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { handleMultiViewCalendarFocus: [{
2503
+ }], ctorParameters: () => [{ type: BusViewService }, { type: i1.IntlService }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1$1.LocalizationService }], propDecorators: { handleMultiViewCalendarFocus: [{
2503
2504
  type: HostListener,
2504
2505
  args: ["focus"]
2505
2506
  }], handleMultiViewCalendarBlur: [{
@@ -2597,9 +2598,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
2597
2598
  }], role: [{
2598
2599
  type: HostBinding,
2599
2600
  args: ['attr.role']
2600
- }], tabindex: [{
2601
+ }], hostActiveDescendant: [{
2601
2602
  type: HostBinding,
2602
- args: ['attr.tabindex']
2603
+ args: ['attr.aria-activedescendant']
2603
2604
  }] } });
2604
2605
 
2605
2606
  /**
@@ -2735,7 +2736,6 @@ class HeaderComponent {
2735
2736
  <button
2736
2737
  kendoButton
2737
2738
  class="k-calendar-title"
2738
- role="button"
2739
2739
  [id]="id"
2740
2740
  type="button"
2741
2741
  fillMode="flat"
@@ -2746,6 +2746,7 @@ class HeaderComponent {
2746
2746
  [kendoEventsOutsideAngular]="{
2747
2747
  click: handleNavigation
2748
2748
  }"
2749
+ [attr.aria-label]="title"
2749
2750
  [title]="parentViewButtonTitle"
2750
2751
  [scope]="this">
2751
2752
  @if (!titleTemplateRef) {
@@ -2770,8 +2771,9 @@ class HeaderComponent {
2770
2771
  tabindex="-1"
2771
2772
  type="button"
2772
2773
  class="k-calendar-nav-prev"
2773
- [attr.aria-disabled]="isPrevDisabled"
2774
+ [attr.aria-disabled]="isPrevDisabled || null"
2774
2775
  [disabled]="isPrevDisabled"
2776
+ [attr.aria-label]="prevButtonTitle"
2775
2777
  [title]="prevButtonTitle"
2776
2778
  (click)="prevButtonClick.emit()"
2777
2779
  >
@@ -2781,7 +2783,6 @@ class HeaderComponent {
2781
2783
  kendoButton
2782
2784
  class="k-calendar-nav-today"
2783
2785
  fillMode="flat"
2784
- role="link"
2785
2786
  [size]="size"
2786
2787
  [disabled]="!todayAvailable"
2787
2788
  [kendoEventsOutsideAngular]="{
@@ -2802,8 +2803,9 @@ class HeaderComponent {
2802
2803
  class="k-calendar-nav-next"
2803
2804
  tabindex="-1"
2804
2805
  type="button"
2805
- [attr.aria-disabled]="isNextDisabled"
2806
+ [attr.aria-disabled]="isNextDisabled || null"
2806
2807
  [disabled]="isNextDisabled"
2808
+ [attr.aria-label]="nextButtonTitle"
2807
2809
  [title]="nextButtonTitle"
2808
2810
  (click)="nextButtonClick.emit()"
2809
2811
  >
@@ -2827,7 +2829,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
2827
2829
  <button
2828
2830
  kendoButton
2829
2831
  class="k-calendar-title"
2830
- role="button"
2831
2832
  [id]="id"
2832
2833
  type="button"
2833
2834
  fillMode="flat"
@@ -2838,6 +2839,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
2838
2839
  [kendoEventsOutsideAngular]="{
2839
2840
  click: handleNavigation
2840
2841
  }"
2842
+ [attr.aria-label]="title"
2841
2843
  [title]="parentViewButtonTitle"
2842
2844
  [scope]="this">
2843
2845
  @if (!titleTemplateRef) {
@@ -2862,8 +2864,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
2862
2864
  tabindex="-1"
2863
2865
  type="button"
2864
2866
  class="k-calendar-nav-prev"
2865
- [attr.aria-disabled]="isPrevDisabled"
2867
+ [attr.aria-disabled]="isPrevDisabled || null"
2866
2868
  [disabled]="isPrevDisabled"
2869
+ [attr.aria-label]="prevButtonTitle"
2867
2870
  [title]="prevButtonTitle"
2868
2871
  (click)="prevButtonClick.emit()"
2869
2872
  >
@@ -2873,7 +2876,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
2873
2876
  kendoButton
2874
2877
  class="k-calendar-nav-today"
2875
2878
  fillMode="flat"
2876
- role="link"
2877
2879
  [size]="size"
2878
2880
  [disabled]="!todayAvailable"
2879
2881
  [kendoEventsOutsideAngular]="{
@@ -2894,8 +2896,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
2894
2896
  class="k-calendar-nav-next"
2895
2897
  tabindex="-1"
2896
2898
  type="button"
2897
- [attr.aria-disabled]="isNextDisabled"
2899
+ [attr.aria-disabled]="isNextDisabled || null"
2898
2900
  [disabled]="isNextDisabled"
2901
+ [attr.aria-label]="nextButtonTitle"
2899
2902
  [title]="nextButtonTitle"
2900
2903
  (click)="nextButtonClick.emit()"
2901
2904
  >
@@ -3591,8 +3594,12 @@ class Messages extends ComponentMessages {
3591
3594
  * The title of the **Parent View** button in the header of the MultiViewCalendar.
3592
3595
  */
3593
3596
  parentViewButtonTitle;
3597
+ /**
3598
+ * The label of the week number column in the Calendar.
3599
+ */
3600
+ weekNumberLabel;
3594
3601
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: Messages, deps: null, target: i0.ɵɵFactoryTarget.Directive });
3595
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.25", type: Messages, isStandalone: true, selector: "kendo-multiview-calendar-messages-base", inputs: { today: "today", prevButtonTitle: "prevButtonTitle", nextButtonTitle: "nextButtonTitle", parentViewButtonTitle: "parentViewButtonTitle" }, usesInheritance: true, ngImport: i0 });
3602
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.25", type: Messages, isStandalone: true, selector: "kendo-multiview-calendar-messages-base", inputs: { today: "today", prevButtonTitle: "prevButtonTitle", nextButtonTitle: "nextButtonTitle", parentViewButtonTitle: "parentViewButtonTitle", weekNumberLabel: "weekNumberLabel" }, usesInheritance: true, ngImport: i0 });
3596
3603
  }
3597
3604
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: Messages, decorators: [{
3598
3605
  type: Directive,
@@ -3607,6 +3614,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
3607
3614
  type: Input
3608
3615
  }], parentViewButtonTitle: [{
3609
3616
  type: Input
3617
+ }], weekNumberLabel: [{
3618
+ type: Input
3610
3619
  }] } });
3611
3620
 
3612
3621
  /**
@@ -4230,7 +4239,7 @@ class MultiViewCalendarComponent {
4230
4239
  return this.views >= 2 ? this.id : null;
4231
4240
  }
4232
4241
  get ariaDisabled() {
4233
- return this.disabled;
4242
+ return this.disabled || null;
4234
4243
  }
4235
4244
  /**
4236
4245
  * @hidden
@@ -4446,8 +4455,7 @@ class MultiViewCalendarComponent {
4446
4455
  if (!this.element) {
4447
4456
  return;
4448
4457
  }
4449
- const activeElement = this.views >= 2 ? this.element.nativeElement.querySelector('.k-calendar-view') :
4450
- this.element.nativeElement.querySelector('.k-calendar-table');
4458
+ const activeElement = this.element.nativeElement.querySelector('.k-calendar-view');
4451
4459
  activeElement.blur();
4452
4460
  }
4453
4461
  /**
@@ -4804,7 +4812,7 @@ class MultiViewCalendarComponent {
4804
4812
  });
4805
4813
  }
4806
4814
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: MultiViewCalendarComponent, deps: [{ token: BusViewService }, { token: i0.ElementRef }, { token: NavigationService }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: DisabledDatesService }, { token: SelectionService }], target: i0.ɵɵFactoryTarget.Component });
4807
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: MultiViewCalendarComponent, isStandalone: true, selector: "kendo-multiviewcalendar", inputs: { showOtherMonthDays: "showOtherMonthDays", showCalendarHeader: "showCalendarHeader", size: "size", id: "id", focusedDate: "focusedDate", footer: "footer", min: "min", max: "max", rangeValidation: "rangeValidation", disabledDatesRangeValidation: "disabledDatesRangeValidation", selection: "selection", allowReverse: "allowReverse", value: "value", disabled: "disabled", tabindex: "tabindex", tabIndex: "tabIndex", weekDaysFormat: "weekDaysFormat", isActive: "isActive", disabledDates: "disabledDates", activeView: "activeView", bottomView: "bottomView", topView: "topView", showViewHeader: "showViewHeader", animateNavigation: "animateNavigation", weekNumber: "weekNumber", activeRangeEnd: "activeRangeEnd", selectionRange: "selectionRange", views: "views", orientation: "orientation", cellTemplateRef: ["cellTemplate", "cellTemplateRef"], monthCellTemplateRef: ["monthCellTemplate", "monthCellTemplateRef"], yearCellTemplateRef: ["yearCellTemplate", "yearCellTemplateRef"], decadeCellTemplateRef: ["decadeCellTemplate", "decadeCellTemplateRef"], centuryCellTemplateRef: ["centuryCellTemplate", "centuryCellTemplateRef"], weekNumberTemplateRef: ["weekNumberTemplate", "weekNumberTemplateRef"], footerTemplateRef: ["footerTemplate", "footerTemplateRef"], headerTitleTemplateRef: ["headerTitleTemplate", "headerTitleTemplateRef"], headerTemplateRef: ["headerTemplate", "headerTemplateRef"] }, outputs: { activeViewChange: "activeViewChange", navigate: "navigate", cellEnter: "cellEnter", cellLeave: "cellLeave", valueChange: "valueChange", rangeSelectionChange: "rangeSelectionChange", blurEvent: "blur", focusEvent: "focus", focusCalendar: "focusCalendar", onClosePopup: "onClosePopup", onTabPress: "onTabPress", onShiftTabPress: "onShiftTabPress" }, host: { listeners: { "mouseenter": "handleMouseEnter()", "mouseleave": "handleMouseLeave()", "mousedown": "handleMousedown($event)", "click": "handleClick()", "keydown": "keydown($event)" }, properties: { "attr.id": "this.widgetId", "attr.aria-disabled": "this.ariaDisabled", "class.k-disabled": "this.ariaDisabled" } }, providers: [
4815
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: MultiViewCalendarComponent, isStandalone: true, selector: "kendo-multiviewcalendar", inputs: { showOtherMonthDays: "showOtherMonthDays", showCalendarHeader: "showCalendarHeader", size: "size", id: "id", focusedDate: "focusedDate", footer: "footer", min: "min", max: "max", rangeValidation: "rangeValidation", disabledDatesRangeValidation: "disabledDatesRangeValidation", selection: "selection", allowReverse: "allowReverse", value: "value", disabled: "disabled", tabindex: "tabindex", tabIndex: "tabIndex", weekDaysFormat: "weekDaysFormat", isActive: "isActive", disabledDates: "disabledDates", activeView: "activeView", bottomView: "bottomView", topView: "topView", showViewHeader: "showViewHeader", animateNavigation: "animateNavigation", weekNumber: "weekNumber", activeRangeEnd: "activeRangeEnd", selectionRange: "selectionRange", views: "views", orientation: "orientation", cellTemplateRef: ["cellTemplate", "cellTemplateRef"], monthCellTemplateRef: ["monthCellTemplate", "monthCellTemplateRef"], yearCellTemplateRef: ["yearCellTemplate", "yearCellTemplateRef"], decadeCellTemplateRef: ["decadeCellTemplate", "decadeCellTemplateRef"], centuryCellTemplateRef: ["centuryCellTemplate", "centuryCellTemplateRef"], weekNumberTemplateRef: ["weekNumberTemplate", "weekNumberTemplateRef"], footerTemplateRef: ["footerTemplate", "footerTemplateRef"], headerTitleTemplateRef: ["headerTitleTemplate", "headerTitleTemplateRef"], headerTemplateRef: ["headerTemplate", "headerTemplateRef"] }, outputs: { activeViewChange: "activeViewChange", navigate: "navigate", cellEnter: "cellEnter", cellLeave: "cellLeave", valueChange: "valueChange", rangeSelectionChange: "rangeSelectionChange", blurEvent: "blur", focusEvent: "focus", focusCalendar: "focusCalendar", onClosePopup: "onClosePopup", onTabPress: "onTabPress", onShiftTabPress: "onShiftTabPress" }, host: { listeners: { "mouseenter": "handleMouseEnter()", "mouseleave": "handleMouseLeave()", "mousedown": "handleMousedown($event)", "click": "handleClick()", "keydown": "keydown($event)" }, properties: { "class.k-week-number": "this.weekNumber", "attr.id": "this.widgetId", "attr.aria-disabled": "this.ariaDisabled", "class.k-disabled": "this.ariaDisabled" } }, providers: [
4808
4816
  BusViewService,
4809
4817
  RANGE_CALENDAR_VALUE_ACCESSOR,
4810
4818
  RANGE_CALENDAR_RANGE_VALIDATORS,
@@ -4829,6 +4837,9 @@ class MultiViewCalendarComponent {
4829
4837
 
4830
4838
  i18n-parentViewButtonTitle="kendo.multiviewcalendar.parentViewButtonTitle|The title of the parent view button in the Multiview calendar header"
4831
4839
  parentViewButtonTitle="Navigate to parent view"
4840
+
4841
+ i18n-weekNumberLabel="kendo.calendar.weekNumberLabel|The label of the week number column in the Calendar"
4842
+ weekNumberLabel="Week number"
4832
4843
  >
4833
4844
  </ng-container>
4834
4845
  @if (showCalendarHeader) {
@@ -4856,7 +4867,7 @@ class MultiViewCalendarComponent {
4856
4867
  [showOtherMonthDays]="showOtherMonthDays"
4857
4868
  [allowReverse]="allowReverse"
4858
4869
  [id]="calendarHeaderIdLabel"
4859
- [attr.aria-labelledby]="multiViewCalendarHeaderIdLabel"
4870
+ [attr.aria-labelledby]="calendarHeaderIdLabel || multiViewCalendarHeaderIdLabel"
4860
4871
  [activeView]="activeViewEnum"
4861
4872
  [activeDescendant]="ariaActivedescendant"
4862
4873
  [isActive]="isActive || isHovered"
@@ -4927,6 +4938,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
4927
4938
 
4928
4939
  i18n-parentViewButtonTitle="kendo.multiviewcalendar.parentViewButtonTitle|The title of the parent view button in the Multiview calendar header"
4929
4940
  parentViewButtonTitle="Navigate to parent view"
4941
+
4942
+ i18n-weekNumberLabel="kendo.calendar.weekNumberLabel|The label of the week number column in the Calendar"
4943
+ weekNumberLabel="Week number"
4930
4944
  >
4931
4945
  </ng-container>
4932
4946
  @if (showCalendarHeader) {
@@ -4954,7 +4968,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
4954
4968
  [showOtherMonthDays]="showOtherMonthDays"
4955
4969
  [allowReverse]="allowReverse"
4956
4970
  [id]="calendarHeaderIdLabel"
4957
- [attr.aria-labelledby]="multiViewCalendarHeaderIdLabel"
4971
+ [attr.aria-labelledby]="calendarHeaderIdLabel || multiViewCalendarHeaderIdLabel"
4958
4972
  [activeView]="activeViewEnum"
4959
4973
  [activeDescendant]="ariaActivedescendant"
4960
4974
  [isActive]="isActive || isHovered"
@@ -5045,6 +5059,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
5045
5059
  type: Input
5046
5060
  }], weekNumber: [{
5047
5061
  type: Input
5062
+ }, {
5063
+ type: HostBinding,
5064
+ args: ['class.k-week-number']
5048
5065
  }], activeRangeEnd: [{
5049
5066
  type: Input
5050
5067
  }], selectionRange: [{
@@ -5591,6 +5608,7 @@ class VirtualizationComponent {
5591
5608
  pageChange = new EventEmitter();
5592
5609
  scrollChange = new EventEmitter();
5593
5610
  wrapperClasses = true;
5611
+ role = 'none';
5594
5612
  get horizontalClass() {
5595
5613
  return this.direction === 'horizontal';
5596
5614
  }
@@ -5659,7 +5677,9 @@ class VirtualizationComponent {
5659
5677
  return this.container.nativeElement[propertyName];
5660
5678
  }
5661
5679
  activeIndex() {
5662
- return this.itemIndex(Math.ceil(this.containerScrollPosition)); //handle subpixeling
5680
+ // guard against negative scrollTop in iOS during rubber-band overscroll - https://github.com/telerik/kendo-angular-private/issues/6747
5681
+ const scrollPosition = Math.max(0, Math.ceil(this.containerScrollPosition)); //handle subpixeling
5682
+ return this.itemIndex(scrollPosition);
5663
5683
  }
5664
5684
  itemIndex(offset) {
5665
5685
  return this.rowHeightService.index(offset);
@@ -5769,7 +5789,7 @@ class VirtualizationComponent {
5769
5789
  return indexOffset < this.containerScrollPosition ? ScrollDirection.Backward : ScrollDirection.Forward;
5770
5790
  }
5771
5791
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: VirtualizationComponent, deps: [{ token: SCROLLER_FACTORY_TOKEN }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i19.ScrollbarService }], target: i0.ɵɵFactoryTarget.Component });
5772
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: VirtualizationComponent, isStandalone: true, selector: "kendo-virtualization", inputs: { direction: "direction", itemHeight: "itemHeight", itemWidth: "itemWidth", topOffset: "topOffset", bottomOffset: "bottomOffset", maxScrollDifference: "maxScrollDifference", scrollOffsetSize: "scrollOffsetSize", scrollDuration: "scrollDuration", skip: "skip", take: "take", total: "total" }, outputs: { activeIndexChange: "activeIndexChange", pageChange: "pageChange", scrollChange: "scrollChange" }, host: { properties: { "class.k-flex": "this.wrapperClasses", "class.k-content": "this.wrapperClasses", "class.k-scrollable": "this.wrapperClasses", "class.k-scrollable-horizontal": "this.horizontalClass" } }, providers: [{
5792
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: VirtualizationComponent, isStandalone: true, selector: "kendo-virtualization", inputs: { direction: "direction", itemHeight: "itemHeight", itemWidth: "itemWidth", topOffset: "topOffset", bottomOffset: "bottomOffset", maxScrollDifference: "maxScrollDifference", scrollOffsetSize: "scrollOffsetSize", scrollDuration: "scrollDuration", skip: "skip", take: "take", total: "total", role: "role" }, outputs: { activeIndexChange: "activeIndexChange", pageChange: "pageChange", scrollChange: "scrollChange" }, host: { properties: { "class.k-content": "this.wrapperClasses", "class.k-scrollable": "this.wrapperClasses", "attr.role": "this.role", "class.k-scrollable-horizontal": "this.horizontalClass" } }, providers: [{
5773
5793
  provide: SCROLLER_FACTORY_TOKEN,
5774
5794
  useValue: DEFAULT_SCROLLER_FACTORY
5775
5795
  }], usesOnChanges: true, ngImport: i0, template: `
@@ -5832,14 +5852,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
5832
5852
  }], scrollChange: [{
5833
5853
  type: Output
5834
5854
  }], wrapperClasses: [{
5835
- type: HostBinding,
5836
- args: ['class.k-flex']
5837
- }, {
5838
5855
  type: HostBinding,
5839
5856
  args: ['class.k-content']
5840
5857
  }, {
5841
5858
  type: HostBinding,
5842
5859
  args: ['class.k-scrollable']
5860
+ }], role: [{
5861
+ type: HostBinding,
5862
+ args: ['attr.role']
5863
+ }, {
5864
+ type: Input
5843
5865
  }], horizontalClass: [{
5844
5866
  type: HostBinding,
5845
5867
  args: ['class.k-scrollable-horizontal']
@@ -5970,6 +5992,7 @@ class NavigationComponent {
5970
5992
  [topOffset]="topOffset"
5971
5993
  [bottomOffset]="bottomOffset"
5972
5994
  [maxScrollDifference]="maxViewHeight"
5995
+ [role]="null"
5973
5996
  (pageChange)="onPageChange($event)"
5974
5997
  (scrollChange)="scrollChange($event)"
5975
5998
  >
@@ -5989,7 +6012,7 @@ class NavigationComponent {
5989
6012
  </li>
5990
6013
  </ul>
5991
6014
  </kendo-virtualization>
5992
- `, isInline: true, dependencies: [{ kind: "component", type: VirtualizationComponent, selector: "kendo-virtualization", inputs: ["direction", "itemHeight", "itemWidth", "topOffset", "bottomOffset", "maxScrollDifference", "scrollOffsetSize", "scrollDuration", "skip", "take", "total"], outputs: ["activeIndexChange", "pageChange", "scrollChange"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { kind: "directive", type: KForOf, selector: "[kFor][kForOf]", inputs: ["kForOf", "kForTrackBy", "kForTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
6015
+ `, isInline: true, dependencies: [{ kind: "component", type: VirtualizationComponent, selector: "kendo-virtualization", inputs: ["direction", "itemHeight", "itemWidth", "topOffset", "bottomOffset", "maxScrollDifference", "scrollOffsetSize", "scrollDuration", "skip", "take", "total", "role"], outputs: ["activeIndexChange", "pageChange", "scrollChange"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { kind: "directive", type: KForOf, selector: "[kFor][kForOf]", inputs: ["kForOf", "kForTrackBy", "kForTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
5993
6016
  }
5994
6017
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: NavigationComponent, decorators: [{
5995
6018
  type: Component,
@@ -6006,6 +6029,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
6006
6029
  [topOffset]="topOffset"
6007
6030
  [bottomOffset]="bottomOffset"
6008
6031
  [maxScrollDifference]="maxViewHeight"
6032
+ [role]="null"
6009
6033
  (pageChange)="onPageChange($event)"
6010
6034
  (scrollChange)="scrollChange($event)"
6011
6035
  >
@@ -6067,6 +6091,7 @@ class ViewListComponent {
6067
6091
  intl;
6068
6092
  dom;
6069
6093
  renderer;
6094
+ localization;
6070
6095
  allowReverse;
6071
6096
  cellTemplateRef;
6072
6097
  weekNumberTemplateRef;
@@ -6126,6 +6151,9 @@ class ViewListComponent {
6126
6151
  get activeViewValue() {
6127
6152
  return CalendarViewEnum[this.activeView];
6128
6153
  }
6154
+ get weekNumberLabel() {
6155
+ return this.localization.get('weekNumberLabel');
6156
+ }
6129
6157
  service;
6130
6158
  activeDate;
6131
6159
  dates = [];
@@ -6143,12 +6171,13 @@ class ViewListComponent {
6143
6171
  showWeekNumbers;
6144
6172
  minViewsToRender = 1;
6145
6173
  intlSubscription;
6146
- constructor(bus, cdr, intl, dom, renderer) {
6174
+ constructor(bus, cdr, intl, dom, renderer, localization) {
6147
6175
  this.bus = bus;
6148
6176
  this.cdr = cdr;
6149
6177
  this.intl = intl;
6150
6178
  this.dom = dom;
6151
6179
  this.renderer = renderer;
6180
+ this.localization = localization;
6152
6181
  }
6153
6182
  ngOnInit() {
6154
6183
  this.weekNames = this.getWeekNames(this.weekDaysFormat);
@@ -6260,7 +6289,7 @@ class ViewListComponent {
6260
6289
  this.cdr.markForCheck();
6261
6290
  }
6262
6291
  }
6263
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ViewListComponent, deps: [{ token: BusViewService }, { token: i0.ChangeDetectorRef }, { token: i1.IntlService }, { token: CalendarDOMService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
6292
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ViewListComponent, deps: [{ token: BusViewService }, { token: i0.ChangeDetectorRef }, { token: i1.IntlService }, { token: CalendarDOMService }, { token: i0.Renderer2 }, { token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
6264
6293
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: ViewListComponent, isStandalone: true, selector: "kendo-calendar-viewlist", inputs: { allowReverse: "allowReverse", cellTemplateRef: "cellTemplateRef", weekNumberTemplateRef: "weekNumberTemplateRef", headerTitleTemplateRef: "headerTitleTemplateRef", headerTemplateRef: "headerTemplateRef", footerTemplateRef: "footerTemplateRef", showOtherMonthDays: "showOtherMonthDays", activeView: "activeView", cellUID: "cellUID", focusedDate: "focusedDate", isActive: "isActive", min: "min", max: "max", selectedDates: "selectedDates", tabIndex: "tabIndex", disabled: "disabled", id: "id", showFooter: "showFooter", weekDaysFormat: "weekDaysFormat", activeRangeEnd: "activeRangeEnd", selectionRange: "selectionRange", size: "size", weekNumber: "weekNumber" }, outputs: { cellEnter: "cellEnter", cellClick: "cellClick", weekNumberCellClick: "weekNumberCellClick", activeDateChange: "activeDateChange", todayButtonClick: "todayButtonClick", pageChange: "pageChange", focusCalendar: "focusCalendar", blurCalendar: "blurCalendar", focusedCellChange: "focusedCellChange" }, host: { properties: { "class.k-vstack": "this.getComponentClass", "class.k-calendar-view": "this.getComponentClass", "class.k-calendar-monthview": "this.getComponentMonthClass", "class.k-calendar-yearview": "this.getComponentYearClass", "class.k-calendar-decadeview": "this.getComponentDecadeClass", "class.k-calendar-centuryview": "this.getComponentCenturyClass" } }, viewQueries: [{ propertyName: "virtualization", first: true, predicate: VirtualizationComponent, descendants: true }, { propertyName: "headerComponent", first: true, predicate: HeaderComponent, descendants: true }, { propertyName: "list", first: true, predicate: ["list"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: `
6265
6294
  <kendo-calendar-header
6266
6295
  [currentDate]="activeDate"
@@ -6275,11 +6304,17 @@ class ViewListComponent {
6275
6304
  >
6276
6305
  </kendo-calendar-header>
6277
6306
  @if (isMonthView()) {
6278
- <table class="k-calendar-weekdays k-calendar-table" [style.table-layout]="'auto'">
6279
- <thead class="k-calendar-thead">
6280
- <tr class="k-calendar-tr">
6307
+ <table class="k-calendar-weekdays k-calendar-table" [style.table-layout]="'auto'" role="table">
6308
+ <thead class="k-calendar-thead" role="rowgroup">
6309
+ <tr class="k-calendar-tr" role="row">
6281
6310
  @for (name of weekNames; track $index; let i = $index) {
6282
- <th class="k-calendar-th" scope="col" [attr.aria-label]="wideWeekNames[i]" role="columnheader">{{name}}</th>
6311
+ <th
6312
+ class="k-calendar-th"
6313
+ [class.k-alt]="weekNumber && i === 0"
6314
+ scope="col"
6315
+ [attr.aria-label]="weekNumber && i === 0 ? weekNumberLabel : wideWeekNames[i]"
6316
+ role="columnheader"
6317
+ >@if (weekNumber && i === 0) {<span class="k-sr-only">{{weekNumberLabel}}</span>}{{name}}</th>
6283
6318
  }
6284
6319
  </tr>
6285
6320
  </thead>
@@ -6345,7 +6380,7 @@ class ViewListComponent {
6345
6380
  [currentDate]="activeDate">
6346
6381
  </kendo-calendar-footer>
6347
6382
  }
6348
- `, isInline: true, dependencies: [{ kind: "component", type: HeaderComponent, selector: "kendo-calendar-header", inputs: ["activeView", "currentDate", "min", "max", "rangeLength", "titleTemplateRef", "headerTemplateRef", "isPrevDisabled", "isNextDisabled", "showNavigationButtons", "orientation", "id", "size"], outputs: ["todayButtonClick", "prevButtonClick", "nextButtonClick"] }, { kind: "component", type: VirtualizationComponent, selector: "kendo-virtualization", inputs: ["direction", "itemHeight", "itemWidth", "topOffset", "bottomOffset", "maxScrollDifference", "scrollOffsetSize", "scrollDuration", "skip", "take", "total"], outputs: ["activeIndexChange", "pageChange", "scrollChange"] }, { kind: "directive", type: KForOf, selector: "[kFor][kForOf]", inputs: ["kForOf", "kForTrackBy", "kForTemplate"] }, { kind: "component", type: ViewComponent, selector: "[kendoCalendarView]", inputs: ["allowReverse", "showOtherMonthDays", "direction", "isActive", "activeView", "cellUID", "focusedDate", "viewDate", "activeRangeEnd", "selectionRange", "min", "max", "selectedDates", "weekNumber", "viewIndex", "templateRef", "weekNumberTemplateRef", "headerTitle"], outputs: ["cellClick", "weekNumberCellClick", "cellEnter", "cellLeave", "focusedCellId"] }, { kind: "component", type: FooterComponent, selector: "kendo-calendar-footer", inputs: ["footerTemplateRef", "activeViewValue", "currentDate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
6383
+ `, isInline: true, dependencies: [{ kind: "component", type: HeaderComponent, selector: "kendo-calendar-header", inputs: ["activeView", "currentDate", "min", "max", "rangeLength", "titleTemplateRef", "headerTemplateRef", "isPrevDisabled", "isNextDisabled", "showNavigationButtons", "orientation", "id", "size"], outputs: ["todayButtonClick", "prevButtonClick", "nextButtonClick"] }, { kind: "component", type: VirtualizationComponent, selector: "kendo-virtualization", inputs: ["direction", "itemHeight", "itemWidth", "topOffset", "bottomOffset", "maxScrollDifference", "scrollOffsetSize", "scrollDuration", "skip", "take", "total", "role"], outputs: ["activeIndexChange", "pageChange", "scrollChange"] }, { kind: "directive", type: KForOf, selector: "[kFor][kForOf]", inputs: ["kForOf", "kForTrackBy", "kForTemplate"] }, { kind: "component", type: ViewComponent, selector: "[kendoCalendarView]", inputs: ["allowReverse", "showOtherMonthDays", "direction", "isActive", "activeView", "cellUID", "focusedDate", "viewDate", "activeRangeEnd", "selectionRange", "min", "max", "selectedDates", "weekNumber", "viewIndex", "templateRef", "weekNumberTemplateRef", "headerTitle"], outputs: ["cellClick", "weekNumberCellClick", "cellEnter", "cellLeave", "focusedCellId"] }, { kind: "component", type: FooterComponent, selector: "kendo-calendar-footer", inputs: ["footerTemplateRef", "activeViewValue", "currentDate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
6349
6384
  }
6350
6385
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ViewListComponent, decorators: [{
6351
6386
  type: Component,
@@ -6366,11 +6401,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
6366
6401
  >
6367
6402
  </kendo-calendar-header>
6368
6403
  @if (isMonthView()) {
6369
- <table class="k-calendar-weekdays k-calendar-table" [style.table-layout]="'auto'">
6370
- <thead class="k-calendar-thead">
6371
- <tr class="k-calendar-tr">
6404
+ <table class="k-calendar-weekdays k-calendar-table" [style.table-layout]="'auto'" role="table">
6405
+ <thead class="k-calendar-thead" role="rowgroup">
6406
+ <tr class="k-calendar-tr" role="row">
6372
6407
  @for (name of weekNames; track $index; let i = $index) {
6373
- <th class="k-calendar-th" scope="col" [attr.aria-label]="wideWeekNames[i]" role="columnheader">{{name}}</th>
6408
+ <th
6409
+ class="k-calendar-th"
6410
+ [class.k-alt]="weekNumber && i === 0"
6411
+ scope="col"
6412
+ [attr.aria-label]="weekNumber && i === 0 ? weekNumberLabel : wideWeekNames[i]"
6413
+ role="columnheader"
6414
+ >@if (weekNumber && i === 0) {<span class="k-sr-only">{{weekNumberLabel}}</span>}{{name}}</th>
6374
6415
  }
6375
6416
  </tr>
6376
6417
  </thead>
@@ -6440,7 +6481,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
6440
6481
  standalone: true,
6441
6482
  imports: [HeaderComponent, VirtualizationComponent, KForOf, ViewComponent, FooterComponent]
6442
6483
  }]
6443
- }], ctorParameters: () => [{ type: BusViewService }, { type: i0.ChangeDetectorRef }, { type: i1.IntlService }, { type: CalendarDOMService }, { type: i0.Renderer2 }], propDecorators: { allowReverse: [{
6484
+ }], ctorParameters: () => [{ type: BusViewService }, { type: i0.ChangeDetectorRef }, { type: i1.IntlService }, { type: CalendarDOMService }, { type: i0.Renderer2 }, { type: i1$1.LocalizationService }], propDecorators: { allowReverse: [{
6444
6485
  type: Input
6445
6486
  }], cellTemplateRef: [{
6446
6487
  type: Input
@@ -6729,8 +6770,12 @@ class CalendarMessages extends ComponentMessages {
6729
6770
  * The title of the **Parent View** button in the header of the Calendar.
6730
6771
  */
6731
6772
  parentViewButtonTitle;
6773
+ /**
6774
+ * The label of the week number column in the Calendar.
6775
+ */
6776
+ weekNumberLabel;
6732
6777
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: CalendarMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });
6733
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.25", type: CalendarMessages, isStandalone: true, selector: "kendo-calendar-messages-base", inputs: { today: "today", prevButtonTitle: "prevButtonTitle", nextButtonTitle: "nextButtonTitle", parentViewButtonTitle: "parentViewButtonTitle" }, usesInheritance: true, ngImport: i0 });
6778
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.25", type: CalendarMessages, isStandalone: true, selector: "kendo-calendar-messages-base", inputs: { today: "today", prevButtonTitle: "prevButtonTitle", nextButtonTitle: "nextButtonTitle", parentViewButtonTitle: "parentViewButtonTitle", weekNumberLabel: "weekNumberLabel" }, usesInheritance: true, ngImport: i0 });
6734
6779
  }
6735
6780
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: CalendarMessages, decorators: [{
6736
6781
  type: Directive,
@@ -6745,6 +6790,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
6745
6790
  type: Input
6746
6791
  }], parentViewButtonTitle: [{
6747
6792
  type: Input
6793
+ }], weekNumberLabel: [{
6794
+ type: Input
6748
6795
  }] } });
6749
6796
 
6750
6797
  /**
@@ -7057,6 +7104,12 @@ class CalendarComponent {
7057
7104
  * @default false
7058
7105
  */
7059
7106
  weekNumber = false;
7107
+ /**
7108
+ * @hidden
7109
+ */
7110
+ get hostWeekNumberClass() {
7111
+ return this.weekNumber && this.type !== 'classic';
7112
+ }
7060
7113
  /**
7061
7114
  * @hidden
7062
7115
  */
@@ -7363,7 +7416,8 @@ class CalendarComponent {
7363
7416
  }
7364
7417
  get ariaDisabled() {
7365
7418
  // in Classic mode, the inner MultiViewCalendar should handle the disabled class and aria attr
7366
- return this.type === 'classic' ? undefined : this.disabled;
7419
+ const isDisabled = this.disabled ? true : null;
7420
+ return this.type === 'classic' ? null : isDisabled;
7367
7421
  }
7368
7422
  domEvents = [];
7369
7423
  control;
@@ -8009,7 +8063,7 @@ class CalendarComponent {
8009
8063
  });
8010
8064
  }
8011
8065
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: CalendarComponent, deps: [{ token: BusViewService }, { token: CalendarDOMService }, { token: i0.ElementRef }, { token: NavigationService }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i0.Injector }, { token: ScrollSyncService }, { token: DisabledDatesService }, { token: i1$1.LocalizationService }, { token: SelectionService }, { token: PickerService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
8012
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: CalendarComponent, isStandalone: true, selector: "kendo-calendar", inputs: { showOtherMonthDays: "showOtherMonthDays", id: "id", focusedDate: "focusedDate", min: "min", max: "max", rangeValidation: "rangeValidation", weekDaysFormat: "weekDaysFormat", footer: "footer", selection: "selection", allowReverse: "allowReverse", value: "value", disabled: "disabled", tabindex: "tabindex", tabIndex: "tabIndex", disabledDates: "disabledDates", navigation: "navigation", activeView: "activeView", bottomView: "bottomView", topView: "topView", type: "type", animateNavigation: "animateNavigation", weekNumber: "weekNumber", cellTemplateRef: ["cellTemplate", "cellTemplateRef"], monthCellTemplateRef: ["monthCellTemplate", "monthCellTemplateRef"], yearCellTemplateRef: ["yearCellTemplate", "yearCellTemplateRef"], decadeCellTemplateRef: ["decadeCellTemplate", "decadeCellTemplateRef"], centuryCellTemplateRef: ["centuryCellTemplate", "centuryCellTemplateRef"], weekNumberTemplateRef: ["weekNumberTemplate", "weekNumberTemplateRef"], headerTitleTemplateRef: ["headerTitleTemplate", "headerTitleTemplateRef"], headerTemplateRef: ["headerTemplate", "headerTemplateRef"], footerTemplateRef: ["footerTemplate", "footerTemplateRef"], navigationItemTemplateRef: ["navigationItemTemplate", "navigationItemTemplateRef"], size: "size", activeRangeEnd: "activeRangeEnd" }, outputs: { closePopup: "closePopup", activeViewChange: "activeViewChange", navigate: "navigate", activeViewDateChange: "activeViewDateChange", onBlur: "blur", onFocus: "focus", valueChange: "valueChange" }, host: { properties: { "class.k-week-number": "this.weekNumber", "attr.id": "this.widgetId", "attr.aria-disabled": "this.ariaDisabled", "class.k-disabled": "this.ariaDisabled" } }, providers: [
8066
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: CalendarComponent, isStandalone: true, selector: "kendo-calendar", inputs: { showOtherMonthDays: "showOtherMonthDays", id: "id", focusedDate: "focusedDate", min: "min", max: "max", rangeValidation: "rangeValidation", weekDaysFormat: "weekDaysFormat", footer: "footer", selection: "selection", allowReverse: "allowReverse", value: "value", disabled: "disabled", tabindex: "tabindex", tabIndex: "tabIndex", disabledDates: "disabledDates", navigation: "navigation", activeView: "activeView", bottomView: "bottomView", topView: "topView", type: "type", animateNavigation: "animateNavigation", weekNumber: "weekNumber", cellTemplateRef: ["cellTemplate", "cellTemplateRef"], monthCellTemplateRef: ["monthCellTemplate", "monthCellTemplateRef"], yearCellTemplateRef: ["yearCellTemplate", "yearCellTemplateRef"], decadeCellTemplateRef: ["decadeCellTemplate", "decadeCellTemplateRef"], centuryCellTemplateRef: ["centuryCellTemplate", "centuryCellTemplateRef"], weekNumberTemplateRef: ["weekNumberTemplate", "weekNumberTemplateRef"], headerTitleTemplateRef: ["headerTitleTemplate", "headerTitleTemplateRef"], headerTemplateRef: ["headerTemplate", "headerTemplateRef"], footerTemplateRef: ["footerTemplate", "footerTemplateRef"], navigationItemTemplateRef: ["navigationItemTemplate", "navigationItemTemplateRef"], size: "size", activeRangeEnd: "activeRangeEnd" }, outputs: { closePopup: "closePopup", activeViewChange: "activeViewChange", navigate: "navigate", activeViewDateChange: "activeViewDateChange", onBlur: "blur", onFocus: "focus", valueChange: "valueChange" }, host: { properties: { "class.k-week-number": "this.hostWeekNumberClass", "attr.id": "this.widgetId", "attr.aria-disabled": "this.ariaDisabled", "class.k-disabled": "this.ariaDisabled" } }, providers: [
8013
8067
  BusViewService,
8014
8068
  CALENDAR_VALUE_ACCESSOR,
8015
8069
  CALENDAR_RANGE_VALIDATORS,
@@ -8037,6 +8091,9 @@ class CalendarComponent {
8037
8091
 
8038
8092
  i18n-parentViewButtonTitle="kendo.calendar.parentViewButtonTitle|The title of the parent view button in the calendar header"
8039
8093
  parentViewButtonTitle="Navigate to parent view"
8094
+
8095
+ i18n-weekNumberLabel="kendo.calendar.weekNumberLabel|The label of the week number column in the Calendar"
8096
+ weekNumberLabel="Week number"
8040
8097
  >
8041
8098
  </ng-container>
8042
8099
  @if (type === 'infinite') {
@@ -8181,6 +8238,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
8181
8238
 
8182
8239
  i18n-parentViewButtonTitle="kendo.calendar.parentViewButtonTitle|The title of the parent view button in the calendar header"
8183
8240
  parentViewButtonTitle="Navigate to parent view"
8241
+
8242
+ i18n-weekNumberLabel="kendo.calendar.weekNumberLabel|The label of the week number column in the Calendar"
8243
+ weekNumberLabel="Week number"
8184
8244
  >
8185
8245
  </ng-container>
8186
8246
  @if (type === 'infinite') {
@@ -8338,7 +8398,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
8338
8398
  type: Input
8339
8399
  }], weekNumber: [{
8340
8400
  type: Input
8341
- }, {
8401
+ }], hostWeekNumberClass: [{
8342
8402
  type: HostBinding,
8343
8403
  args: ['class.k-week-number']
8344
8404
  }], closePopup: [{
@@ -8665,7 +8725,7 @@ class DateInputComponent {
8665
8725
  /**
8666
8726
  * @hidden
8667
8727
  */
8668
- role = 'textbox';
8728
+ role = null;
8669
8729
  /**
8670
8730
  * @hidden
8671
8731
  */
@@ -8818,6 +8878,18 @@ class DateInputComponent {
8818
8878
  * @hidden
8819
8879
  */
8820
8880
  hasPopup;
8881
+ /**
8882
+ * @hidden
8883
+ */
8884
+ set ariaInvalidState(value) {
8885
+ this._ariaInvalidState = value;
8886
+ if (value !== null && this.inputElement) {
8887
+ this.setAriaInvalid();
8888
+ }
8889
+ }
8890
+ get ariaInvalidState() {
8891
+ return this._ariaInvalidState;
8892
+ }
8821
8893
  /**
8822
8894
  * Specifies the size of the component. The default value is set by the Kendo theme.
8823
8895
  *
@@ -8990,6 +9062,7 @@ class DateInputComponent {
8990
9062
  _size;
8991
9063
  _rounded;
8992
9064
  _fillMode;
9065
+ _ariaInvalidState = null;
8993
9066
  control;
8994
9067
  subs = new Subscription();
8995
9068
  _inputAttributes;
@@ -9151,15 +9224,13 @@ class DateInputComponent {
9151
9224
  * @hidden
9152
9225
  */
9153
9226
  setAriaInvalid() {
9154
- if (!this.control) {
9227
+ if (this._ariaInvalidState === null && !this.control) {
9155
9228
  return;
9156
9229
  }
9157
- if (this.control.invalid) {
9158
- this.renderer.setAttribute(this.inputElement, attributeNames.ariaInvalid, 'true');
9159
- }
9160
- else {
9161
- this.renderer.setAttribute(this.inputElement, attributeNames.ariaInvalid, 'false');
9162
- }
9230
+ const isInvalid = this._ariaInvalidState !== null
9231
+ ? this._ariaInvalidState
9232
+ : !!(this.control.invalid && (this.control.touched || this.control.dirty));
9233
+ this.renderer.setAttribute(this.inputElement, attributeNames.ariaInvalid, `${isInvalid}`);
9163
9234
  }
9164
9235
  /**
9165
9236
  * @hidden
@@ -9311,6 +9382,7 @@ class DateInputComponent {
9311
9382
  if (hasObservers(this.onBlur) || requiresZoneOnBlur(this.ngControl)) {
9312
9383
  this.ngZone.run(() => {
9313
9384
  this.onControlTouched();
9385
+ this.setAriaInvalid();
9314
9386
  this.emitBlur(args.event);
9315
9387
  this.cdr.markForCheck();
9316
9388
  });
@@ -9382,10 +9454,10 @@ class DateInputComponent {
9382
9454
  }
9383
9455
  setInputAttributes() {
9384
9456
  const attributesToRender = { ...this.mutableAttributes, ...this.parsedAttributes };
9385
- setHTMLAttributes(attributesToRender, this.renderer, this.dateInput.nativeElement, this.ngZone);
9457
+ setHTMLAttributes(attributesToRender, this.renderer, this.dateInput.nativeElement, this.injector);
9386
9458
  }
9387
9459
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DateInputComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.IntlService }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Injector }, { token: i1$1.LocalizationService }, { token: PickerService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
9388
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: DateInputComponent, isStandalone: true, selector: "kendo-dateinput", inputs: { focusableId: "focusableId", pickerType: "pickerType", clearButton: "clearButton", disabled: "disabled", readonly: "readonly", title: "title", tabindex: "tabindex", role: "role", ariaReadOnly: "ariaReadOnly", tabIndex: "tabIndex", isRequired: "isRequired", format: "format", formatPlaceholder: "formatPlaceholder", placeholder: "placeholder", steps: "steps", max: "max", min: "min", rangeValidation: "rangeValidation", autoCorrectParts: "autoCorrectParts", autoSwitchParts: "autoSwitchParts", autoSwitchKeys: "autoSwitchKeys", allowCaretMode: "allowCaretMode", autoFill: "autoFill", incompleteDateValidation: "incompleteDateValidation", twoDigitYearMax: "twoDigitYearMax", enableMouseWheel: "enableMouseWheel", value: "value", spinners: "spinners", isPopupOpen: "isPopupOpen", hasPopup: "hasPopup", size: "size", rounded: "rounded", fillMode: "fillMode", inputAttributes: "inputAttributes" }, outputs: { valueChange: "valueChange", valueUpdate: "valueUpdate", onFocus: "focus", onBlur: "blur" }, host: { properties: { "class.k-readonly": "this.readonly", "class.k-disabled": "this.disabledClass" } }, providers: [
9460
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: DateInputComponent, isStandalone: true, selector: "kendo-dateinput", inputs: { focusableId: "focusableId", pickerType: "pickerType", clearButton: "clearButton", disabled: "disabled", readonly: "readonly", title: "title", tabindex: "tabindex", role: "role", ariaReadOnly: "ariaReadOnly", tabIndex: "tabIndex", isRequired: "isRequired", format: "format", formatPlaceholder: "formatPlaceholder", placeholder: "placeholder", steps: "steps", max: "max", min: "min", rangeValidation: "rangeValidation", autoCorrectParts: "autoCorrectParts", autoSwitchParts: "autoSwitchParts", autoSwitchKeys: "autoSwitchKeys", allowCaretMode: "allowCaretMode", autoFill: "autoFill", incompleteDateValidation: "incompleteDateValidation", twoDigitYearMax: "twoDigitYearMax", enableMouseWheel: "enableMouseWheel", value: "value", spinners: "spinners", isPopupOpen: "isPopupOpen", hasPopup: "hasPopup", ariaInvalidState: "ariaInvalidState", size: "size", rounded: "rounded", fillMode: "fillMode", inputAttributes: "inputAttributes" }, outputs: { valueChange: "valueChange", valueUpdate: "valueUpdate", onFocus: "focus", onBlur: "blur" }, host: { properties: { "class.k-readonly": "this.readonly", "class.k-disabled": "this.disabledClass" } }, providers: [
9389
9461
  { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DateInputComponent), multi: true },
9390
9462
  { provide: NG_VALIDATORS, useExisting: forwardRef(() => DateInputComponent), multi: true },
9391
9463
  { provide: L10N_PREFIX, useValue: 'kendo.dateinput' },
@@ -9411,7 +9483,7 @@ class DateInputComponent {
9411
9483
  autocapitalize="off"
9412
9484
  spellcheck="false"
9413
9485
  [attr.role]="role"
9414
- [attr.aria-readonly]="ariaReadOnly"
9486
+ [attr.aria-readonly]="ariaReadOnly || null"
9415
9487
  [id]="focusableId"
9416
9488
  [title]="title"
9417
9489
  [tabindex]="tabindex"
@@ -9517,7 +9589,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
9517
9589
  autocapitalize="off"
9518
9590
  spellcheck="false"
9519
9591
  [attr.role]="role"
9520
- [attr.aria-readonly]="ariaReadOnly"
9592
+ [attr.aria-readonly]="ariaReadOnly || null"
9521
9593
  [id]="focusableId"
9522
9594
  [title]="title"
9523
9595
  [tabindex]="tabindex"
@@ -9657,6 +9729,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
9657
9729
  type: Input
9658
9730
  }], hasPopup: [{
9659
9731
  type: Input
9732
+ }], ariaInvalidState: [{
9733
+ type: Input
9660
9734
  }], size: [{
9661
9735
  type: Input
9662
9736
  }], rounded: [{
@@ -10468,6 +10542,16 @@ class DatePickerComponent extends MultiTabStop {
10468
10542
  get isControlRequired() {
10469
10543
  return isControlRequired(this.control);
10470
10544
  }
10545
+ /**
10546
+ * @hidden
10547
+ */
10548
+ get ariaInvalidState() {
10549
+ const control = this.control?.control;
10550
+ if (!control) {
10551
+ return null;
10552
+ }
10553
+ return control.invalid && (control.touched || control.dirty);
10554
+ }
10471
10555
  _popupSettings = { animate: true };
10472
10556
  _show = false;
10473
10557
  _value = null;
@@ -10539,6 +10623,7 @@ class DatePickerComponent extends MultiTabStop {
10539
10623
  ngAfterViewInit() {
10540
10624
  this.setComponentClasses();
10541
10625
  this.windowSize = this.adaptiveService.size;
10626
+ this.pickerSubscriptions.add(this.control?.control?.statusChanges?.subscribe(() => this.cdr.markForCheck()));
10542
10627
  }
10543
10628
  /**
10544
10629
  * @hidden
@@ -10976,8 +11061,8 @@ class DatePickerComponent extends MultiTabStop {
10976
11061
  blurComponent() {
10977
11062
  this.isActive = false;
10978
11063
  this.show = false;
10979
- this.cdr.detectChanges();
10980
11064
  this.onControlTouched();
11065
+ this.cdr.detectChanges();
10981
11066
  this.onBlur.emit();
10982
11067
  }
10983
11068
  handleSameSelection() {
@@ -11047,6 +11132,7 @@ class DatePickerComponent extends MultiTabStop {
11047
11132
  pickerType="datepicker"
11048
11133
  hasPopup="grid"
11049
11134
  [isPopupOpen]="show"
11135
+ [ariaInvalidState]="ariaInvalidState"
11050
11136
  [clearButton]="clearButton"
11051
11137
  [disabled]="disabled"
11052
11138
  [readonly]="readonly || readOnlyInput"
@@ -11082,6 +11168,7 @@ class DatePickerComponent extends MultiTabStop {
11082
11168
  #toggleButton
11083
11169
  type="button"
11084
11170
  class="k-input-button k-button k-icon-button"
11171
+ [class.k-disabled]="disabled"
11085
11172
  [tabindex]="-1"
11086
11173
  [attr.title]="localization.get('toggle')"
11087
11174
  [attr.aria-label]="localization.get('toggle')"
@@ -11145,6 +11232,7 @@ class DatePickerComponent extends MultiTabStop {
11145
11232
  icon="check"
11146
11233
  themeColor="primary"
11147
11234
  [attr.title]="localization.get('adaptiveCloseButtonTitle')"
11235
+ [attr.aria-label]="localization.get('adaptiveCloseButtonTitle')"
11148
11236
  [svgIcon]="checkIcon"
11149
11237
  fillMode="flat"
11150
11238
  [tabIndex]="-1"
@@ -11206,7 +11294,7 @@ class DatePickerComponent extends MultiTabStop {
11206
11294
  </kendo-calendar-messages>
11207
11295
  </kendo-calendar>
11208
11296
  </ng-template>
11209
- `, isInline: true, dependencies: [{ kind: "directive", type: DatePickerLocalizedMessagesDirective, selector: "[kendoDatePickerLocalizedMessages]" }, { kind: "component", type: DateInputComponent, selector: "kendo-dateinput", inputs: ["focusableId", "pickerType", "clearButton", "disabled", "readonly", "title", "tabindex", "role", "ariaReadOnly", "tabIndex", "isRequired", "format", "formatPlaceholder", "placeholder", "steps", "max", "min", "rangeValidation", "autoCorrectParts", "autoSwitchParts", "autoSwitchKeys", "allowCaretMode", "autoFill", "incompleteDateValidation", "twoDigitYearMax", "enableMouseWheel", "value", "spinners", "isPopupOpen", "hasPopup", "size", "rounded", "fillMode", "inputAttributes"], outputs: ["valueChange", "valueUpdate", "focus", "blur"], exportAs: ["kendo-dateinput"] }, { kind: "component", type: DateInputCustomMessagesComponent, selector: "kendo-dateinput-messages" }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { kind: "component", type: ActionSheetComponent, selector: "kendo-actionsheet", inputs: ["actions", "actionsLayout", "overlayClickClose", "title", "subtitle", "items", "cssClass", "cssStyle", "animation", "expanded", "titleId", "initialFocus"], outputs: ["expandedChange", "action", "expand", "collapse", "itemClick", "overlayClick"], exportAs: ["kendoActionSheet"] }, { kind: "directive", type: ActionSheetTemplateDirective, selector: "[kendoActionSheetTemplate]" }, { 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: "component", type: CalendarComponent, selector: "kendo-calendar", inputs: ["showOtherMonthDays", "id", "focusedDate", "min", "max", "rangeValidation", "weekDaysFormat", "footer", "selection", "allowReverse", "value", "disabled", "tabindex", "tabIndex", "disabledDates", "navigation", "activeView", "bottomView", "topView", "type", "animateNavigation", "weekNumber", "cellTemplate", "monthCellTemplate", "yearCellTemplate", "decadeCellTemplate", "centuryCellTemplate", "weekNumberTemplate", "headerTitleTemplate", "headerTemplate", "footerTemplate", "navigationItemTemplate", "size", "activeRangeEnd"], outputs: ["closePopup", "activeViewChange", "navigate", "activeViewDateChange", "blur", "focus", "valueChange"], exportAs: ["kendo-calendar"] }, { kind: "component", type: CalendarCustomMessagesComponent, selector: "kendo-calendar-messages" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
11297
+ `, isInline: true, dependencies: [{ kind: "directive", type: DatePickerLocalizedMessagesDirective, selector: "[kendoDatePickerLocalizedMessages]" }, { kind: "component", type: DateInputComponent, selector: "kendo-dateinput", inputs: ["focusableId", "pickerType", "clearButton", "disabled", "readonly", "title", "tabindex", "role", "ariaReadOnly", "tabIndex", "isRequired", "format", "formatPlaceholder", "placeholder", "steps", "max", "min", "rangeValidation", "autoCorrectParts", "autoSwitchParts", "autoSwitchKeys", "allowCaretMode", "autoFill", "incompleteDateValidation", "twoDigitYearMax", "enableMouseWheel", "value", "spinners", "isPopupOpen", "hasPopup", "ariaInvalidState", "size", "rounded", "fillMode", "inputAttributes"], outputs: ["valueChange", "valueUpdate", "focus", "blur"], exportAs: ["kendo-dateinput"] }, { kind: "component", type: DateInputCustomMessagesComponent, selector: "kendo-dateinput-messages" }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { kind: "component", type: ActionSheetComponent, selector: "kendo-actionsheet", inputs: ["actions", "actionsLayout", "overlayClickClose", "title", "subtitle", "items", "cssClass", "cssStyle", "animation", "expanded", "titleId", "initialFocus"], outputs: ["expandedChange", "action", "expand", "collapse", "itemClick", "overlayClick"], exportAs: ["kendoActionSheet"] }, { kind: "directive", type: ActionSheetTemplateDirective, selector: "[kendoActionSheetTemplate]" }, { 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: "component", type: CalendarComponent, selector: "kendo-calendar", inputs: ["showOtherMonthDays", "id", "focusedDate", "min", "max", "rangeValidation", "weekDaysFormat", "footer", "selection", "allowReverse", "value", "disabled", "tabindex", "tabIndex", "disabledDates", "navigation", "activeView", "bottomView", "topView", "type", "animateNavigation", "weekNumber", "cellTemplate", "monthCellTemplate", "yearCellTemplate", "decadeCellTemplate", "centuryCellTemplate", "weekNumberTemplate", "headerTitleTemplate", "headerTemplate", "footerTemplate", "navigationItemTemplate", "size", "activeRangeEnd"], outputs: ["closePopup", "activeViewChange", "navigate", "activeViewDateChange", "blur", "focus", "valueChange"], exportAs: ["kendo-calendar"] }, { kind: "component", type: CalendarCustomMessagesComponent, selector: "kendo-calendar-messages" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
11210
11298
  }
11211
11299
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DatePickerComponent, decorators: [{
11212
11300
  type: Component,
@@ -11258,6 +11346,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
11258
11346
  pickerType="datepicker"
11259
11347
  hasPopup="grid"
11260
11348
  [isPopupOpen]="show"
11349
+ [ariaInvalidState]="ariaInvalidState"
11261
11350
  [clearButton]="clearButton"
11262
11351
  [disabled]="disabled"
11263
11352
  [readonly]="readonly || readOnlyInput"
@@ -11293,6 +11382,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
11293
11382
  #toggleButton
11294
11383
  type="button"
11295
11384
  class="k-input-button k-button k-icon-button"
11385
+ [class.k-disabled]="disabled"
11296
11386
  [tabindex]="-1"
11297
11387
  [attr.title]="localization.get('toggle')"
11298
11388
  [attr.aria-label]="localization.get('toggle')"
@@ -11356,6 +11446,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
11356
11446
  icon="check"
11357
11447
  themeColor="primary"
11358
11448
  [attr.title]="localization.get('adaptiveCloseButtonTitle')"
11449
+ [attr.aria-label]="localization.get('adaptiveCloseButtonTitle')"
11359
11450
  [svgIcon]="checkIcon"
11360
11451
  fillMode="flat"
11361
11452
  [tabIndex]="-1"
@@ -11656,7 +11747,7 @@ const timeListWrapper = (isAdaptiveEnabled = false, windowSize, isDateTimePicker
11656
11747
  ], 'k-actionsheet-content'),
11657
11748
  div([div('button', 'k-button k-button-lg')], 'k-actions k-actions-stretched k-actions-horizontal k-actionsheet-footer'),
11658
11749
  ], 'k-actionsheet-view'),
11659
- ], `k-actionsheet k-adaptive-actionsheet ${windowSize === 'small' ? 'k-actionsheet-fullscreen' : ''}`, { height: windowSize === 'small' ? '100%' : '60vh', left: '-10000px', position: 'absolute', top: 0 });
11750
+ ], `k-actionsheet k-adaptive-actionsheet ${windowSize === 'small' ? 'k-actionsheet-fullscreen' : 'k-actionsheet-bottom'}`, { height: windowSize === 'small' ? '100%' : '60vh', left: '-10000px', position: 'absolute', top: 0 });
11660
11751
  };
11661
11752
  /**
11662
11753
  * @hidden
@@ -12371,6 +12462,12 @@ class TimeListComponent {
12371
12462
  return this.disabled ? undefined : 0;
12372
12463
  }
12373
12464
  componentClass = true;
12465
+ get hostRole() {
12466
+ return this.roleAttribute;
12467
+ }
12468
+ get hostAriaLabel() {
12469
+ return this.ariaLabel;
12470
+ }
12374
12471
  get isDayPeriod() {
12375
12472
  return this.part?.type === 'dayperiod';
12376
12473
  }
@@ -12578,7 +12675,9 @@ class TimeListComponent {
12578
12675
  bindEvents() {
12579
12676
  this.scrollSubscription = this.virtualization
12580
12677
  .scroll$()
12581
- .pipe(debounceTime(100), map((e) => e.target.scrollTop), map((top) => this.itemOffset(top)), map((itemOffset) => this.virtualization.itemIndex(itemOffset)))
12678
+ .pipe(debounceTime(100), map((e) => e.target.scrollTop),
12679
+ // iOS reports negative scrollTop during rubber-band overscroll - https://github.com/telerik/kendo-angular-private/issues/6747
12680
+ map((top) => this.itemOffset(Math.max(0, top))), map((itemOffset) => this.virtualization.itemIndex(itemOffset)))
12582
12681
  .subscribe(index => {
12583
12682
  this.virtualization.scrollToIndex(index);
12584
12683
  this.handleChange(this.data[index]);
@@ -12587,10 +12686,8 @@ class TimeListComponent {
12587
12686
  this.domEvents.push(this.renderer.listen(element, 'mouseover', () => !this.isActive && this.focus()), this.renderer.listen(element, 'click', () => this.focus()), this.renderer.listen(element, 'blur', () => this.isActive = false), this.renderer.listen(element, 'focus', () => this.isActive = true), this.renderer.listen(element, 'keydown', this.handleKeyDown.bind(this)));
12588
12687
  }
12589
12688
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: TimeListComponent, deps: [{ token: i0.ElementRef }, { token: i0.Injector }, { token: TimePickerDOMService }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
12590
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: TimeListComponent, isStandalone: true, selector: "kendo-timelist", inputs: { min: "min", max: "max", part: "part", step: "step", disabled: "disabled", value: "value", isLast: "isLast", isFirst: "isFirst" }, outputs: { valueChange: "valueChange", tabOutLastPart: "tabOutLastPart", tabOutFirstPart: "tabOutFirstPart" }, host: { properties: { "attr.tabindex": "this.tabIndex", "class.k-time-list": "this.componentClass" } }, viewQueries: [{ propertyName: "virtualization", first: true, predicate: VirtualizationComponent, descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: `
12689
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: TimeListComponent, isStandalone: true, selector: "kendo-timelist", inputs: { min: "min", max: "max", part: "part", step: "step", disabled: "disabled", value: "value", isLast: "isLast", isFirst: "isFirst" }, outputs: { valueChange: "valueChange", tabOutLastPart: "tabOutLastPart", tabOutFirstPart: "tabOutFirstPart" }, host: { properties: { "attr.tabindex": "this.tabIndex", "class.k-time-list": "this.componentClass", "attr.role": "this.hostRole", "attr.aria-label": "this.hostAriaLabel" } }, viewQueries: [{ propertyName: "virtualization", first: true, predicate: VirtualizationComponent, descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: `
12591
12690
  <kendo-virtualization
12592
- [attr.role]="roleAttribute"
12593
- [attr.aria-label]="ariaLabel"
12594
12691
  [skip]="skip"
12595
12692
  [take]="total"
12596
12693
  [total]="total"
@@ -12598,7 +12695,7 @@ class TimeListComponent {
12598
12695
  [maxScrollDifference]="listHeight"
12599
12696
  [topOffset]="topOffset"
12600
12697
  [bottomOffset]="bottomOffset"
12601
- class="k-time-container"
12698
+ class="k-content k-scrollable k-time-container"
12602
12699
  tabindex="-1"
12603
12700
  >
12604
12701
  <ul [ngStyle]="style" class="k-reset"
@@ -12606,7 +12703,7 @@ class TimeListComponent {
12606
12703
  click: handleItemClick
12607
12704
  }"
12608
12705
  [scope]="this"
12609
- [attr.role]="'presentation'"
12706
+ [attr.role]="'none'"
12610
12707
  >
12611
12708
  @for (item of data; track $index; let index = $index) {
12612
12709
  <li class="k-item"
@@ -12619,7 +12716,7 @@ class TimeListComponent {
12619
12716
  }
12620
12717
  </ul>
12621
12718
  </kendo-virtualization>
12622
- `, isInline: true, dependencies: [{ kind: "component", type: VirtualizationComponent, selector: "kendo-virtualization", inputs: ["direction", "itemHeight", "itemWidth", "topOffset", "bottomOffset", "maxScrollDifference", "scrollOffsetSize", "scrollDuration", "skip", "take", "total"], outputs: ["activeIndexChange", "pageChange", "scrollChange"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }] });
12719
+ `, isInline: true, dependencies: [{ kind: "component", type: VirtualizationComponent, selector: "kendo-virtualization", inputs: ["direction", "itemHeight", "itemWidth", "topOffset", "bottomOffset", "maxScrollDifference", "scrollOffsetSize", "scrollDuration", "skip", "take", "total", "role"], outputs: ["activeIndexChange", "pageChange", "scrollChange"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }] });
12623
12720
  }
12624
12721
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: TimeListComponent, decorators: [{
12625
12722
  type: Component,
@@ -12627,8 +12724,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
12627
12724
  selector: 'kendo-timelist',
12628
12725
  template: `
12629
12726
  <kendo-virtualization
12630
- [attr.role]="roleAttribute"
12631
- [attr.aria-label]="ariaLabel"
12632
12727
  [skip]="skip"
12633
12728
  [take]="total"
12634
12729
  [total]="total"
@@ -12636,7 +12731,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
12636
12731
  [maxScrollDifference]="listHeight"
12637
12732
  [topOffset]="topOffset"
12638
12733
  [bottomOffset]="bottomOffset"
12639
- class="k-time-container"
12734
+ class="k-content k-scrollable k-time-container"
12640
12735
  tabindex="-1"
12641
12736
  >
12642
12737
  <ul [ngStyle]="style" class="k-reset"
@@ -12644,7 +12739,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
12644
12739
  click: handleItemClick
12645
12740
  }"
12646
12741
  [scope]="this"
12647
- [attr.role]="'presentation'"
12742
+ [attr.role]="'none'"
12648
12743
  >
12649
12744
  @for (item of data; track $index; let index = $index) {
12650
12745
  <li class="k-item"
@@ -12692,6 +12787,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
12692
12787
  }], componentClass: [{
12693
12788
  type: HostBinding,
12694
12789
  args: ["class.k-time-list"]
12790
+ }], hostRole: [{
12791
+ type: HostBinding,
12792
+ args: ['attr.role']
12793
+ }], hostAriaLabel: [{
12794
+ type: HostBinding,
12795
+ args: ['attr.aria-label']
12695
12796
  }] } });
12696
12797
 
12697
12798
  const isEqualTillMinute = (value, min) => value.getHours() === min.getHours() && value.getMinutes() === min.getMinutes();
@@ -12819,8 +12920,12 @@ class TimePickerMessages extends ComponentMessages {
12819
12920
  * Specifies the title of the **Close** button of the ActionSheet that renders instead of the popup when using small screen devices in adaptive mode.
12820
12921
  */
12821
12922
  adaptiveCloseButtonTitle;
12923
+ /**
12924
+ * Specifies the accessible label of the TimeSelector.
12925
+ */
12926
+ timeSelectorLabel;
12822
12927
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: TimePickerMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });
12823
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.25", type: TimePickerMessages, isStandalone: true, selector: "kendo-timepicker-messages-base", inputs: { accept: "accept", acceptLabel: "acceptLabel", cancel: "cancel", cancelLabel: "cancelLabel", now: "now", nowLabel: "nowLabel", toggle: "toggle", hour: "hour", minute: "minute", second: "second", millisecond: "millisecond", dayperiod: "dayperiod", clearTitle: "clearTitle", adaptiveCloseButtonTitle: "adaptiveCloseButtonTitle" }, usesInheritance: true, ngImport: i0 });
12928
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.25", type: TimePickerMessages, isStandalone: true, selector: "kendo-timepicker-messages-base", inputs: { accept: "accept", acceptLabel: "acceptLabel", cancel: "cancel", cancelLabel: "cancelLabel", now: "now", nowLabel: "nowLabel", toggle: "toggle", hour: "hour", minute: "minute", second: "second", millisecond: "millisecond", dayperiod: "dayperiod", clearTitle: "clearTitle", adaptiveCloseButtonTitle: "adaptiveCloseButtonTitle", timeSelectorLabel: "timeSelectorLabel" }, usesInheritance: true, ngImport: i0 });
12824
12929
  }
12825
12930
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: TimePickerMessages, decorators: [{
12826
12931
  type: Directive,
@@ -12855,6 +12960,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
12855
12960
  type: Input
12856
12961
  }], adaptiveCloseButtonTitle: [{
12857
12962
  type: Input
12963
+ }], timeSelectorLabel: [{
12964
+ type: Input
12858
12965
  }] } });
12859
12966
 
12860
12967
  /**
@@ -12921,6 +13028,12 @@ class TimeSelectorComponent {
12921
13028
  now;
12922
13029
  timeLists;
12923
13030
  timeListWrappers;
13031
+ /**
13032
+ * @hidden
13033
+ */
13034
+ get role() {
13035
+ return 'group';
13036
+ }
12924
13037
  /**
12925
13038
  * @hidden
12926
13039
  */
@@ -13061,7 +13174,10 @@ class TimeSelectorComponent {
13061
13174
  if (this.localization) {
13062
13175
  this.subscriptions.add(this.localization
13063
13176
  .changes
13064
- .subscribe(() => this.cdr.markForCheck()));
13177
+ .subscribe(() => {
13178
+ this.renderer.setAttribute(this.element.nativeElement, 'aria-label', this.localization.get('timeSelectorLabel'));
13179
+ this.cdr.markForCheck();
13180
+ }));
13065
13181
  }
13066
13182
  this.renderer.addClass(this.element.nativeElement, 'k-timeselector');
13067
13183
  this.dom.isAdaptiveEnabled = this.isAdaptiveEnabled;
@@ -13279,7 +13395,7 @@ class TimeSelectorComponent {
13279
13395
  return listIdx;
13280
13396
  }
13281
13397
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: TimeSelectorComponent, deps: [{ token: i1$1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1.IntlService }, { token: TimePickerDOMService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: PickerService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
13282
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: TimeSelectorComponent, isStandalone: true, selector: "kendo-timeselector", inputs: { format: "format", min: "min", max: "max", cancelButton: "cancelButton", setButton: "setButton", nowButton: "nowButton", disabled: "disabled", isAdaptiveEnabled: "isAdaptiveEnabled", isDateTimePicker: "isDateTimePicker", steps: "steps", value: "value" }, outputs: { valueChange: "valueChange", valueReject: "valueReject", tabOutLastPart: "tabOutLastPart", tabOutFirstPart: "tabOutFirstPart", tabOutNow: "tabOutNow" }, host: { properties: { "class.k-disabled": "this.disabledClass" } }, providers: [
13398
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: TimeSelectorComponent, isStandalone: true, selector: "kendo-timeselector", inputs: { format: "format", min: "min", max: "max", cancelButton: "cancelButton", setButton: "setButton", nowButton: "nowButton", disabled: "disabled", isAdaptiveEnabled: "isAdaptiveEnabled", isDateTimePicker: "isDateTimePicker", steps: "steps", value: "value" }, outputs: { valueChange: "valueChange", valueReject: "valueReject", tabOutLastPart: "tabOutLastPart", tabOutFirstPart: "tabOutFirstPart", tabOutNow: "tabOutNow" }, host: { properties: { "attr.role": "this.role", "class.k-disabled": "this.disabledClass" } }, providers: [
13283
13399
  LocalizationService,
13284
13400
  {
13285
13401
  provide: L10N_PREFIX,
@@ -13304,17 +13420,36 @@ class TimeSelectorComponent {
13304
13420
 
13305
13421
  i18n-nowLabel="kendo.timeselector.nowLabel|The label for the Now button in the timeselector component"
13306
13422
  nowLabel="Select now"
13423
+
13424
+ i18n-timeSelectorLabel="kendo.timeselector.timeSelectorLabel|The accessible label for the timeselector component"
13425
+ timeSelectorLabel="Time Selector"
13426
+
13427
+ i18n-hour="kendo.timeselector.hour|The label for the Hour column in the timeselector component"
13428
+ hour="Hour"
13429
+
13430
+ i18n-minute="kendo.timeselector.minute|The label for the Minute column in the timeselector component"
13431
+ minute="Minute"
13432
+
13433
+ i18n-second="kendo.timeselector.second|The label for the Second column in the timeselector component"
13434
+ second="Second"
13435
+
13436
+ i18n-millisecond="kendo.timeselector.millisecond|The label for the Millisecond column in the timeselector component"
13437
+ millisecond="Millisecond"
13438
+
13439
+ i18n-dayperiod="kendo.timeselector.dayperiod|The label for the AM/PM column in the timeselector component"
13440
+ dayperiod="AM/PM"
13307
13441
  >
13308
13442
  </ng-container>
13309
13443
  <div class="k-time-header">
13310
- <span class="k-title k-timeselector-title">
13444
+ <span class="k-title">
13311
13445
  {{ intl.formatDate(current, format) }}
13312
13446
  </span>
13313
13447
  @if (showNowButton) {
13314
13448
  <button
13315
13449
  #now
13316
13450
  type="button"
13317
- class="k-button k-button-flat k-button-primary k-time-now"
13451
+ class="k-button k-button-flat k-time-now"
13452
+ [class.k-button-lg]="isAdaptiveEnabled"
13318
13453
  [attr.title]="localization.get('nowLabel')"
13319
13454
  [attr.aria-label]="localization.get('nowLabel')"
13320
13455
  [kendoEventsOutsideAngular]="{
@@ -13325,7 +13460,7 @@ class TimeSelectorComponent {
13325
13460
  }"
13326
13461
  [scope]="this"
13327
13462
  [disabled]="disabled"
13328
- >{{localization.get('now')}}</button>
13463
+ ><span class="k-button-text">{{localization.get('now')}}</span></button>
13329
13464
  }
13330
13465
  </div>
13331
13466
  <div class="k-time-list-container">
@@ -13337,7 +13472,7 @@ class TimeSelectorComponent {
13337
13472
  class="k-time-list-wrapper"
13338
13473
  role="presentation" tabindex="-1"
13339
13474
  >
13340
- <span class="k-title k-timeselector-title">{{intl.dateFieldName(part)}}</span>
13475
+ <span class="k-title">{{intl.dateFieldName(part)}}</span>
13341
13476
  <kendo-timelist
13342
13477
  [isLast]="idx === dateFormatParts.length - 1"
13343
13478
  [isFirst]="idx === 0"
@@ -13358,7 +13493,7 @@ class TimeSelectorComponent {
13358
13493
  ></kendo-timelist>
13359
13494
  </div>
13360
13495
  }
13361
- @if (part.type === 'literal') {
13496
+ @if (part.type === 'literal' && part.pattern.trim()) {
13362
13497
  <div class="k-time-separator">
13363
13498
  {{part.pattern}}
13364
13499
  </div>
@@ -13382,7 +13517,7 @@ class TimeSelectorComponent {
13382
13517
  }"
13383
13518
  [scope]="this"
13384
13519
  [disabled]="disabled"
13385
- >{{localization.get('accept')}}</button>
13520
+ ><span class="k-button-text">{{localization.get('accept')}}</span></button>
13386
13521
  }
13387
13522
  @if (cancelButton) {
13388
13523
  <button
@@ -13399,7 +13534,7 @@ class TimeSelectorComponent {
13399
13534
  }"
13400
13535
  [scope]="this"
13401
13536
  [disabled]="disabled"
13402
- >{{localization.get('cancel')}}</button>
13537
+ ><span class="k-button-text">{{localization.get('cancel')}}</span></button>
13403
13538
  }
13404
13539
  </div>
13405
13540
  }
@@ -13437,17 +13572,36 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
13437
13572
 
13438
13573
  i18n-nowLabel="kendo.timeselector.nowLabel|The label for the Now button in the timeselector component"
13439
13574
  nowLabel="Select now"
13575
+
13576
+ i18n-timeSelectorLabel="kendo.timeselector.timeSelectorLabel|The accessible label for the timeselector component"
13577
+ timeSelectorLabel="Time Selector"
13578
+
13579
+ i18n-hour="kendo.timeselector.hour|The label for the Hour column in the timeselector component"
13580
+ hour="Hour"
13581
+
13582
+ i18n-minute="kendo.timeselector.minute|The label for the Minute column in the timeselector component"
13583
+ minute="Minute"
13584
+
13585
+ i18n-second="kendo.timeselector.second|The label for the Second column in the timeselector component"
13586
+ second="Second"
13587
+
13588
+ i18n-millisecond="kendo.timeselector.millisecond|The label for the Millisecond column in the timeselector component"
13589
+ millisecond="Millisecond"
13590
+
13591
+ i18n-dayperiod="kendo.timeselector.dayperiod|The label for the AM/PM column in the timeselector component"
13592
+ dayperiod="AM/PM"
13440
13593
  >
13441
13594
  </ng-container>
13442
13595
  <div class="k-time-header">
13443
- <span class="k-title k-timeselector-title">
13596
+ <span class="k-title">
13444
13597
  {{ intl.formatDate(current, format) }}
13445
13598
  </span>
13446
13599
  @if (showNowButton) {
13447
13600
  <button
13448
13601
  #now
13449
13602
  type="button"
13450
- class="k-button k-button-flat k-button-primary k-time-now"
13603
+ class="k-button k-button-flat k-time-now"
13604
+ [class.k-button-lg]="isAdaptiveEnabled"
13451
13605
  [attr.title]="localization.get('nowLabel')"
13452
13606
  [attr.aria-label]="localization.get('nowLabel')"
13453
13607
  [kendoEventsOutsideAngular]="{
@@ -13458,7 +13612,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
13458
13612
  }"
13459
13613
  [scope]="this"
13460
13614
  [disabled]="disabled"
13461
- >{{localization.get('now')}}</button>
13615
+ ><span class="k-button-text">{{localization.get('now')}}</span></button>
13462
13616
  }
13463
13617
  </div>
13464
13618
  <div class="k-time-list-container">
@@ -13470,7 +13624,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
13470
13624
  class="k-time-list-wrapper"
13471
13625
  role="presentation" tabindex="-1"
13472
13626
  >
13473
- <span class="k-title k-timeselector-title">{{intl.dateFieldName(part)}}</span>
13627
+ <span class="k-title">{{intl.dateFieldName(part)}}</span>
13474
13628
  <kendo-timelist
13475
13629
  [isLast]="idx === dateFormatParts.length - 1"
13476
13630
  [isFirst]="idx === 0"
@@ -13491,7 +13645,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
13491
13645
  ></kendo-timelist>
13492
13646
  </div>
13493
13647
  }
13494
- @if (part.type === 'literal') {
13648
+ @if (part.type === 'literal' && part.pattern.trim()) {
13495
13649
  <div class="k-time-separator">
13496
13650
  {{part.pattern}}
13497
13651
  </div>
@@ -13515,7 +13669,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
13515
13669
  }"
13516
13670
  [scope]="this"
13517
13671
  [disabled]="disabled"
13518
- >{{localization.get('accept')}}</button>
13672
+ ><span class="k-button-text">{{localization.get('accept')}}</span></button>
13519
13673
  }
13520
13674
  @if (cancelButton) {
13521
13675
  <button
@@ -13532,7 +13686,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
13532
13686
  }"
13533
13687
  [scope]="this"
13534
13688
  [disabled]="disabled"
13535
- >{{localization.get('cancel')}}</button>
13689
+ ><span class="k-button-text">{{localization.get('cancel')}}</span></button>
13536
13690
  }
13537
13691
  </div>
13538
13692
  }
@@ -13557,6 +13711,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
13557
13711
  }], timeListWrappers: [{
13558
13712
  type: ViewChildren,
13559
13713
  args: ['listWrapper']
13714
+ }], role: [{
13715
+ type: HostBinding,
13716
+ args: ['attr.role']
13560
13717
  }], disabledClass: [{
13561
13718
  type: HostBinding,
13562
13719
  args: ['class.k-disabled']
@@ -13684,8 +13841,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
13684
13841
  const VALUE_DOC_LINK$1 = 'https://www.telerik.com/kendo-angular-ui/components/dateinputs/timepicker#integration-with-json';
13685
13842
  const INTL_DATE_FORMAT = 'https://github.com/telerik/kendo-intl/blob/master/docs/date-formatting/index.md';
13686
13843
  const formatRegExp = new RegExp(`${TIME_PART.hour}|${TIME_PART.minute}|${TIME_PART.second}|${TIME_PART.millisecond}|${TIME_PART.dayperiod}|literal`);
13687
- const ACCEPT_BUTTON_SELECTOR$1 = '.k-button.k-time-accept';
13688
- const CANCEL_BUTTON_SELECTOR = '.k-button.k-time-cancel';
13689
13844
  /**
13690
13845
  * Represents the [Kendo UI TimePicker component for Angular](https://www.telerik.com/kendo-angular-ui/components/dateinputs/timepicker).
13691
13846
  *
@@ -14067,15 +14222,27 @@ class TimePickerComponent extends MultiTabStop {
14067
14222
  get isControlRequired() {
14068
14223
  return isControlRequired(this.control);
14069
14224
  }
14225
+ /**
14226
+ * @hidden
14227
+ */
14228
+ get ariaInvalidState() {
14229
+ const control = this.control?.control;
14230
+ if (!control) {
14231
+ return null;
14232
+ }
14233
+ return control.invalid && (control.touched || control.dirty);
14234
+ }
14070
14235
  /**
14071
14236
  * @hidden
14072
14237
  */
14073
14238
  windowSize;
14239
+ adaptiveAcceptBtnRef;
14240
+ adaptiveCancelBtnRef;
14074
14241
  get adaptiveAcceptButton() {
14075
- return this.actionSheet.element.nativeElement.querySelector(ACCEPT_BUTTON_SELECTOR$1);
14242
+ return this.adaptiveAcceptBtnRef?.nativeElement;
14076
14243
  }
14077
14244
  get adaptiveCancelButton() {
14078
- return this.actionSheet.element.nativeElement.querySelector(CANCEL_BUTTON_SELECTOR);
14245
+ return this.adaptiveCancelBtnRef?.nativeElement;
14079
14246
  }
14080
14247
  get inputElement() {
14081
14248
  return this.wrapper.nativeElement.querySelector('input');
@@ -14149,6 +14316,7 @@ class TimePickerComponent extends MultiTabStop {
14149
14316
  ngAfterViewInit() {
14150
14317
  this.setComponentClasses();
14151
14318
  this.windowSize = this.adaptiveService.size;
14319
+ this.pickerSubscriptions.add(this.control?.control?.statusChanges?.subscribe(() => this.cdr.markForCheck()));
14152
14320
  }
14153
14321
  /**
14154
14322
  * @hidden
@@ -14394,7 +14562,7 @@ class TimePickerComponent extends MultiTabStop {
14394
14562
  * @hidden
14395
14563
  */
14396
14564
  get popupClasses() {
14397
- const popupClasses = ['k-timepicker-popup'];
14565
+ const popupClasses = ['k-timepicker-popup', 'k-list-container'];
14398
14566
  if (!this.popupSettings.popupClass) {
14399
14567
  return popupClasses;
14400
14568
  }
@@ -14662,7 +14830,7 @@ class TimePickerComponent extends MultiTabStop {
14662
14830
  },
14663
14831
  PickerService,
14664
14832
  { provide: KENDO_WEBMCP_HOST, useExisting: forwardRef(() => TimePickerComponent) }
14665
- ], viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef }, { propertyName: "popupTemplate", first: true, predicate: ["popupTemplate"], descendants: true }, { propertyName: "toggleButton", first: true, predicate: ["toggleButton"], descendants: true, static: true }, { propertyName: "actionSheet", first: true, predicate: ["actionSheet"], descendants: true }], exportAs: ["kendo-timepicker"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `
14833
+ ], viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef }, { propertyName: "popupTemplate", first: true, predicate: ["popupTemplate"], descendants: true }, { propertyName: "toggleButton", first: true, predicate: ["toggleButton"], descendants: true, static: true }, { propertyName: "actionSheet", first: true, predicate: ["actionSheet"], descendants: true }, { propertyName: "adaptiveAcceptBtnRef", first: true, predicate: ["adaptiveAcceptBtn"], descendants: true }, { propertyName: "adaptiveCancelBtnRef", first: true, predicate: ["adaptiveCancelBtn"], descendants: true }], exportAs: ["kendo-timepicker"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `
14666
14834
  <ng-container kendoTimePickerLocalizedMessages
14667
14835
  i18n-accept="kendo.timepicker.accept|The Accept button text in the timepicker component"
14668
14836
  accept="Set"
@@ -14705,6 +14873,9 @@ class TimePickerComponent extends MultiTabStop {
14705
14873
 
14706
14874
  i18n-adaptiveCloseButtonTitle="kendo.timepicker.adaptiveCloseButtonTitle|The title of the Close button of the ActionSheet that is rendered instead of the Popup when using small screen devices in adaptive mode"
14707
14875
  adaptiveCloseButtonTitle="Close"
14876
+
14877
+ i18n-timeSelectorLabel="kendo.timepicker.timeSelectorLabel|The accessible label for the time selector in the timepicker component"
14878
+ timeSelectorLabel="Time Selector"
14708
14879
  >
14709
14880
  </ng-container>
14710
14881
  <kendo-dateinput
@@ -14712,6 +14883,7 @@ class TimePickerComponent extends MultiTabStop {
14712
14883
  pickerType="timepicker"
14713
14884
  hasPopup="dialog"
14714
14885
  [isPopupOpen]="show"
14886
+ [ariaInvalidState]="ariaInvalidState"
14715
14887
  [disabled]="disabled"
14716
14888
  [clearButton]="clearButton"
14717
14889
  [readonly]="readonly || readOnlyInput"
@@ -14747,6 +14919,7 @@ class TimePickerComponent extends MultiTabStop {
14747
14919
  type="button"
14748
14920
  tabindex="-1"
14749
14921
  class="k-input-button k-button k-icon-button"
14922
+ [class.k-disabled]="disabled"
14750
14923
  [attr.title]="localization.get('toggle')"
14751
14924
  [attr.aria-label]="localization.get('toggle')"
14752
14925
  [attr.disabled]="disabled ? '' : null"
@@ -14802,8 +14975,10 @@ class TimePickerComponent extends MultiTabStop {
14802
14975
  type="button"
14803
14976
  icon="check"
14804
14977
  [attr.title]="localization.get('adaptiveCloseButtonTitle')"
14978
+ [attr.aria-label]="localization.get('adaptiveCloseButtonTitle')"
14805
14979
  [svgIcon]="checkIcon"
14806
14980
  fillMode="flat"
14981
+ themeColor="primary"
14807
14982
  size="large"
14808
14983
  [tabIndex]="-1"
14809
14984
  (click)="show = false">
@@ -14816,10 +14991,10 @@ class TimePickerComponent extends MultiTabStop {
14816
14991
  </div>
14817
14992
  <div class="k-actions k-actions-stretched k-actions-horizontal k-actionsheet-footer">
14818
14993
  <button kendoButton
14994
+ #adaptiveCancelBtn
14819
14995
  type="button"
14820
14996
  (click)="handleReject()"
14821
14997
  size="large"
14822
- class="k-time-cancel"
14823
14998
  [attr.title]="localization.get('cancelLabel')"
14824
14999
  [attr.aria-label]="localization.get('cancelLabel')"
14825
15000
  >
@@ -14827,10 +15002,10 @@ class TimePickerComponent extends MultiTabStop {
14827
15002
  </button>
14828
15003
 
14829
15004
  <button kendoButton
15005
+ #adaptiveAcceptBtn
14830
15006
  type="button"
14831
15007
  (click)="handleActionSheetAccept()"
14832
15008
  size="large"
14833
- class="k-time-accept"
14834
15009
  themeColor="primary"
14835
15010
  [attr.title]="localization.get('acceptLabel')"
14836
15011
  [attr.aria-label]="localization.get('acceptLabel')"
@@ -14877,11 +15052,12 @@ class TimePickerComponent extends MultiTabStop {
14877
15052
  [second]="localization.get('second')"
14878
15053
  [millisecond]="localization.get('millisecond')"
14879
15054
  [dayperiod]="localization.get('dayperiod')"
15055
+ [timeSelectorLabel]="localization.get('timeSelectorLabel')"
14880
15056
  >
14881
15057
  </kendo-timeselector-messages>
14882
15058
  </kendo-timeselector>
14883
15059
  </ng-template>
14884
- `, isInline: true, dependencies: [{ kind: "directive", type: TimePickerLocalizedMessagesDirective, selector: "[kendoTimePickerLocalizedMessages]" }, { kind: "component", type: DateInputComponent, selector: "kendo-dateinput", inputs: ["focusableId", "pickerType", "clearButton", "disabled", "readonly", "title", "tabindex", "role", "ariaReadOnly", "tabIndex", "isRequired", "format", "formatPlaceholder", "placeholder", "steps", "max", "min", "rangeValidation", "autoCorrectParts", "autoSwitchParts", "autoSwitchKeys", "allowCaretMode", "autoFill", "incompleteDateValidation", "twoDigitYearMax", "enableMouseWheel", "value", "spinners", "isPopupOpen", "hasPopup", "size", "rounded", "fillMode", "inputAttributes"], outputs: ["valueChange", "valueUpdate", "focus", "blur"], exportAs: ["kendo-dateinput"] }, { kind: "component", type: DateInputCustomMessagesComponent, selector: "kendo-dateinput-messages" }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { kind: "component", type: ActionSheetComponent, selector: "kendo-actionsheet", inputs: ["actions", "actionsLayout", "overlayClickClose", "title", "subtitle", "items", "cssClass", "cssStyle", "animation", "expanded", "titleId", "initialFocus"], outputs: ["expandedChange", "action", "expand", "collapse", "itemClick", "overlayClick"], exportAs: ["kendoActionSheet"] }, { kind: "directive", type: ActionSheetTemplateDirective, selector: "[kendoActionSheetTemplate]" }, { 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: "component", type: TimeSelectorComponent, selector: "kendo-timeselector", inputs: ["format", "min", "max", "cancelButton", "setButton", "nowButton", "disabled", "isAdaptiveEnabled", "isDateTimePicker", "steps", "value"], outputs: ["valueChange", "valueReject", "tabOutLastPart", "tabOutFirstPart", "tabOutNow"], exportAs: ["kendo-timeselector"] }, { kind: "component", type: TimeSelectorCustomMessagesComponent, selector: "kendo-timeselector-messages" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
15060
+ `, isInline: true, dependencies: [{ kind: "directive", type: TimePickerLocalizedMessagesDirective, selector: "[kendoTimePickerLocalizedMessages]" }, { kind: "component", type: DateInputComponent, selector: "kendo-dateinput", inputs: ["focusableId", "pickerType", "clearButton", "disabled", "readonly", "title", "tabindex", "role", "ariaReadOnly", "tabIndex", "isRequired", "format", "formatPlaceholder", "placeholder", "steps", "max", "min", "rangeValidation", "autoCorrectParts", "autoSwitchParts", "autoSwitchKeys", "allowCaretMode", "autoFill", "incompleteDateValidation", "twoDigitYearMax", "enableMouseWheel", "value", "spinners", "isPopupOpen", "hasPopup", "ariaInvalidState", "size", "rounded", "fillMode", "inputAttributes"], outputs: ["valueChange", "valueUpdate", "focus", "blur"], exportAs: ["kendo-dateinput"] }, { kind: "component", type: DateInputCustomMessagesComponent, selector: "kendo-dateinput-messages" }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { kind: "component", type: ActionSheetComponent, selector: "kendo-actionsheet", inputs: ["actions", "actionsLayout", "overlayClickClose", "title", "subtitle", "items", "cssClass", "cssStyle", "animation", "expanded", "titleId", "initialFocus"], outputs: ["expandedChange", "action", "expand", "collapse", "itemClick", "overlayClick"], exportAs: ["kendoActionSheet"] }, { kind: "directive", type: ActionSheetTemplateDirective, selector: "[kendoActionSheetTemplate]" }, { 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: "component", type: TimeSelectorComponent, selector: "kendo-timeselector", inputs: ["format", "min", "max", "cancelButton", "setButton", "nowButton", "disabled", "isAdaptiveEnabled", "isDateTimePicker", "steps", "value"], outputs: ["valueChange", "valueReject", "tabOutLastPart", "tabOutFirstPart", "tabOutNow"], exportAs: ["kendo-timeselector"] }, { kind: "component", type: TimeSelectorCustomMessagesComponent, selector: "kendo-timeselector-messages" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
14885
15061
  }
14886
15062
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: TimePickerComponent, decorators: [{
14887
15063
  type: Component,
@@ -14946,6 +15122,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
14946
15122
 
14947
15123
  i18n-adaptiveCloseButtonTitle="kendo.timepicker.adaptiveCloseButtonTitle|The title of the Close button of the ActionSheet that is rendered instead of the Popup when using small screen devices in adaptive mode"
14948
15124
  adaptiveCloseButtonTitle="Close"
15125
+
15126
+ i18n-timeSelectorLabel="kendo.timepicker.timeSelectorLabel|The accessible label for the time selector in the timepicker component"
15127
+ timeSelectorLabel="Time Selector"
14949
15128
  >
14950
15129
  </ng-container>
14951
15130
  <kendo-dateinput
@@ -14953,6 +15132,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
14953
15132
  pickerType="timepicker"
14954
15133
  hasPopup="dialog"
14955
15134
  [isPopupOpen]="show"
15135
+ [ariaInvalidState]="ariaInvalidState"
14956
15136
  [disabled]="disabled"
14957
15137
  [clearButton]="clearButton"
14958
15138
  [readonly]="readonly || readOnlyInput"
@@ -14988,6 +15168,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
14988
15168
  type="button"
14989
15169
  tabindex="-1"
14990
15170
  class="k-input-button k-button k-icon-button"
15171
+ [class.k-disabled]="disabled"
14991
15172
  [attr.title]="localization.get('toggle')"
14992
15173
  [attr.aria-label]="localization.get('toggle')"
14993
15174
  [attr.disabled]="disabled ? '' : null"
@@ -15043,8 +15224,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
15043
15224
  type="button"
15044
15225
  icon="check"
15045
15226
  [attr.title]="localization.get('adaptiveCloseButtonTitle')"
15227
+ [attr.aria-label]="localization.get('adaptiveCloseButtonTitle')"
15046
15228
  [svgIcon]="checkIcon"
15047
15229
  fillMode="flat"
15230
+ themeColor="primary"
15048
15231
  size="large"
15049
15232
  [tabIndex]="-1"
15050
15233
  (click)="show = false">
@@ -15057,10 +15240,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
15057
15240
  </div>
15058
15241
  <div class="k-actions k-actions-stretched k-actions-horizontal k-actionsheet-footer">
15059
15242
  <button kendoButton
15243
+ #adaptiveCancelBtn
15060
15244
  type="button"
15061
15245
  (click)="handleReject()"
15062
15246
  size="large"
15063
- class="k-time-cancel"
15064
15247
  [attr.title]="localization.get('cancelLabel')"
15065
15248
  [attr.aria-label]="localization.get('cancelLabel')"
15066
15249
  >
@@ -15068,10 +15251,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
15068
15251
  </button>
15069
15252
 
15070
15253
  <button kendoButton
15254
+ #adaptiveAcceptBtn
15071
15255
  type="button"
15072
15256
  (click)="handleActionSheetAccept()"
15073
15257
  size="large"
15074
- class="k-time-accept"
15075
15258
  themeColor="primary"
15076
15259
  [attr.title]="localization.get('acceptLabel')"
15077
15260
  [attr.aria-label]="localization.get('acceptLabel')"
@@ -15118,6 +15301,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
15118
15301
  [second]="localization.get('second')"
15119
15302
  [millisecond]="localization.get('millisecond')"
15120
15303
  [dayperiod]="localization.get('dayperiod')"
15304
+ [timeSelectorLabel]="localization.get('timeSelectorLabel')"
15121
15305
  >
15122
15306
  </kendo-timeselector-messages>
15123
15307
  </kendo-timeselector>
@@ -15218,6 +15402,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
15218
15402
  }], disabledClass: [{
15219
15403
  type: HostBinding,
15220
15404
  args: ['class.k-disabled']
15405
+ }], adaptiveAcceptBtnRef: [{
15406
+ type: ViewChild,
15407
+ args: ['adaptiveAcceptBtn', { static: false }]
15408
+ }], adaptiveCancelBtnRef: [{
15409
+ type: ViewChild,
15410
+ args: ['adaptiveCancelBtn', { static: false }]
15221
15411
  }] } });
15222
15412
 
15223
15413
  /**
@@ -15312,8 +15502,16 @@ class DateTimePickerMessages extends ComponentMessages {
15312
15502
  * The title of the Close button of the ActionSheet that is rendered instead of the Popup when using small screen devices in adaptive mode.
15313
15503
  */
15314
15504
  adaptiveCloseButtonTitle;
15505
+ /**
15506
+ * The accessible label of the date and time selector container.
15507
+ */
15508
+ dateTimeSelectorLabel;
15509
+ /**
15510
+ * The accessible label of the time selector element.
15511
+ */
15512
+ timeSelectorLabel;
15315
15513
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DateTimePickerMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });
15316
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.25", type: DateTimePickerMessages, isStandalone: true, selector: "kendo-datetimepicker-messages-base", inputs: { toggle: "toggle", dateTab: "dateTab", dateTabLabel: "dateTabLabel", timeTab: "timeTab", timeTabLabel: "timeTabLabel", accept: "accept", acceptLabel: "acceptLabel", cancel: "cancel", cancelLabel: "cancelLabel", today: "today", now: "now", nowLabel: "nowLabel", prevButtonTitle: "prevButtonTitle", nextButtonTitle: "nextButtonTitle", parentViewButtonTitle: "parentViewButtonTitle", hour: "hour", minute: "minute", second: "second", millisecond: "millisecond", dayperiod: "dayperiod", clearTitle: "clearTitle", adaptiveCloseButtonTitle: "adaptiveCloseButtonTitle" }, usesInheritance: true, ngImport: i0 });
15514
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.25", type: DateTimePickerMessages, isStandalone: true, selector: "kendo-datetimepicker-messages-base", inputs: { toggle: "toggle", dateTab: "dateTab", dateTabLabel: "dateTabLabel", timeTab: "timeTab", timeTabLabel: "timeTabLabel", accept: "accept", acceptLabel: "acceptLabel", cancel: "cancel", cancelLabel: "cancelLabel", today: "today", now: "now", nowLabel: "nowLabel", prevButtonTitle: "prevButtonTitle", nextButtonTitle: "nextButtonTitle", parentViewButtonTitle: "parentViewButtonTitle", hour: "hour", minute: "minute", second: "second", millisecond: "millisecond", dayperiod: "dayperiod", clearTitle: "clearTitle", adaptiveCloseButtonTitle: "adaptiveCloseButtonTitle", dateTimeSelectorLabel: "dateTimeSelectorLabel", timeSelectorLabel: "timeSelectorLabel" }, usesInheritance: true, ngImport: i0 });
15317
15515
  }
15318
15516
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DateTimePickerMessages, decorators: [{
15319
15517
  type: Directive,
@@ -15364,6 +15562,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
15364
15562
  type: Input
15365
15563
  }], adaptiveCloseButtonTitle: [{
15366
15564
  type: Input
15565
+ }], dateTimeSelectorLabel: [{
15566
+ type: Input
15567
+ }], timeSelectorLabel: [{
15568
+ type: Input
15367
15569
  }] } });
15368
15570
 
15369
15571
  /**
@@ -15671,11 +15873,11 @@ class DateTimePickerComponent extends MultiTabStop {
15671
15873
  * ([see example](https://www.telerik.com/kendo-angular-ui/components/dateinputs/datetimepicker/date-time-limits)).
15672
15874
  */
15673
15875
  set min(value) {
15674
- this._min = cloneDate(value);
15876
+ this._min.set(cloneDate(value));
15675
15877
  this.calendarMin = getDate(value || MIN_DATE);
15676
15878
  }
15677
15879
  get min() {
15678
- return this._min;
15880
+ return this._min();
15679
15881
  }
15680
15882
  /**
15681
15883
  * Specifies the biggest valid date.
@@ -15685,11 +15887,11 @@ class DateTimePickerComponent extends MultiTabStop {
15685
15887
  * ([see example](https://www.telerik.com/kendo-angular-ui/components/dateinputs/datetimepicker/date-time-limits)).
15686
15888
  */
15687
15889
  set max(value) {
15688
- this._max = cloneDate(value);
15890
+ this._max.set(cloneDate(value));
15689
15891
  this.calendarMax = lastMillisecondOfDate(value || MAX_DATE);
15690
15892
  }
15691
15893
  get max() {
15692
- return this._max;
15894
+ return this._max();
15693
15895
  }
15694
15896
  /**
15695
15897
  * Determines whether the built-in `min` or `max` validators are enforced when validating a form
@@ -15932,7 +16134,12 @@ class DateTimePickerComponent extends MultiTabStop {
15932
16134
  *
15933
16135
  * Controls whether the Calendar or the TimeSelector will be displayed.
15934
16136
  */
15935
- activeTab = DEFAULT_ACTIVE_TAB;
16137
+ set activeTab(value) {
16138
+ this._activeTab.set(value);
16139
+ }
16140
+ get activeTab() {
16141
+ return this._activeTab();
16142
+ }
15936
16143
  /**
15937
16144
  * @hidden
15938
16145
  *
@@ -16107,16 +16314,27 @@ class DateTimePickerComponent extends MultiTabStop {
16107
16314
  get isControlRequired() {
16108
16315
  return isControlRequired(this.formControl);
16109
16316
  }
16317
+ /**
16318
+ * @hidden
16319
+ */
16320
+ get ariaInvalidState() {
16321
+ const control = this.formControl;
16322
+ if (!control) {
16323
+ return null;
16324
+ }
16325
+ return control.invalid && (control.touched || control.dirty);
16326
+ }
16110
16327
  popupRef;
16111
16328
  _popupSettings = { animate: true };
16112
16329
  _value = null;
16113
16330
  _format = DEFAULT_DATEINPUT_FORMAT;
16114
16331
  _tabindex = 0;
16115
16332
  _defaultTab = DEFAULT_ACTIVE_TAB;
16116
- _min = mergeDateAndTime(MIN_DATE, MIN_TIME);
16117
- _max = mergeDateAndTime(MAX_DATE, MAX_TIME);
16333
+ _min = signal(mergeDateAndTime(MIN_DATE, MIN_TIME), ...(ngDevMode ? [{ debugName: "_min" }] : []));
16334
+ _max = signal(mergeDateAndTime(MAX_DATE, MAX_TIME), ...(ngDevMode ? [{ debugName: "_max" }] : []));
16118
16335
  _disabledDates;
16119
16336
  _isActive = false;
16337
+ _activeTab = signal(DEFAULT_ACTIVE_TAB, ...(ngDevMode ? [{ debugName: "_activeTab" }] : []));
16120
16338
  onControlTouched = noop$2;
16121
16339
  onControlChange = noop$2;
16122
16340
  onValidatorChange = noop$2;
@@ -16169,6 +16387,7 @@ class DateTimePickerComponent extends MultiTabStop {
16169
16387
  ngAfterViewInit() {
16170
16388
  this.setComponentClasses();
16171
16389
  this.windowSize = this.adaptiveService.size;
16390
+ this.subscriptions.add(this.formControl?.statusChanges?.subscribe(() => this.cdr.markForCheck()));
16172
16391
  }
16173
16392
  ngOnChanges(changes) {
16174
16393
  if (isPresent(changes['min']) || isPresent(changes['max'])) {
@@ -16945,6 +17164,12 @@ class DateTimePickerComponent extends MultiTabStop {
16945
17164
 
16946
17165
  i18n-adaptiveCloseButtonTitle="kendo.datetimepicker.adaptiveCloseButtonTitle|The title of the Close button of the ActionSheet that is rendered instead of the Popup when using small screen devices in adaptive mode"
16947
17166
  adaptiveCloseButtonTitle="Close"
17167
+
17168
+ i18n-dateTimeSelectorLabel="kendo.datetimepicker.dateTimeSelectorLabel|The accessible label of the date and time selector container"
17169
+ dateTimeSelectorLabel="Date and time selector"
17170
+
17171
+ i18n-timeSelectorLabel="kendo.datetimepicker.timeSelectorLabel|The accessible label of the time selector element"
17172
+ timeSelectorLabel="Time selector"
16948
17173
  >
16949
17174
  </ng-container>
16950
17175
 
@@ -16977,6 +17202,7 @@ class DateTimePickerComponent extends MultiTabStop {
16977
17202
  hasPopup="dialog"
16978
17203
  [inputAttributes]="inputAttributes"
16979
17204
  [isPopupOpen]="isOpen"
17205
+ [ariaInvalidState]="ariaInvalidState"
16980
17206
  (valueChange)="handleInputValueChange($event)"
16981
17207
  [kendoEventsOutsideAngular]="{
16982
17208
  keydown: handleKeyDown
@@ -16993,6 +17219,7 @@ class DateTimePickerComponent extends MultiTabStop {
16993
17219
  #toggleButton
16994
17220
  type="button"
16995
17221
  class="k-input-button k-button k-icon-button"
17222
+ [class.k-disabled]="disabled"
16996
17223
  [tabindex]="-1"
16997
17224
  [attr.title]="localization.get('toggle')"
16998
17225
  [attr.aria-label]="localization.get('toggle')"
@@ -17062,6 +17289,7 @@ class DateTimePickerComponent extends MultiTabStop {
17062
17289
  type="button"
17063
17290
  icon="check"
17064
17291
  [attr.title]="localization.get('adaptiveCloseButtonTitle')"
17292
+ [attr.aria-label]="localization.get('adaptiveCloseButtonTitle')"
17065
17293
  [svgIcon]="checkIcon"
17066
17294
  fillMode="flat"
17067
17295
  themeColor="primary"
@@ -17110,6 +17338,8 @@ class DateTimePickerComponent extends MultiTabStop {
17110
17338
  <div
17111
17339
  class="k-datetime-wrap k-{{activeTab}}-tab"
17112
17340
  [class.k-datetime-wrap-lg]="isAdaptive"
17341
+ role="group"
17342
+ [attr.aria-label]="localization.get('dateTimeSelectorLabel')"
17113
17343
  [kendoEventsOutsideAngular]="{
17114
17344
  mousedown: preventMouseDown,
17115
17345
  keydown: handleKeyDown
@@ -17205,6 +17435,7 @@ class DateTimePickerComponent extends MultiTabStop {
17205
17435
  [second]="localization.get('second')"
17206
17436
  [millisecond]="localization.get('millisecond')"
17207
17437
  [dayperiod]="localization.get('dayperiod')"
17438
+ [timeSelectorLabel]="localization.get('timeSelectorLabel')"
17208
17439
  >
17209
17440
  </kendo-timeselector-messages>
17210
17441
  </kendo-timeselector>
@@ -17255,7 +17486,7 @@ class DateTimePickerComponent extends MultiTabStop {
17255
17486
  }
17256
17487
  </div>
17257
17488
  </ng-template>
17258
- `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "[kendoDateTimePickerLocalizedMessages]" }, { kind: "component", type: DateInputComponent, selector: "kendo-dateinput", inputs: ["focusableId", "pickerType", "clearButton", "disabled", "readonly", "title", "tabindex", "role", "ariaReadOnly", "tabIndex", "isRequired", "format", "formatPlaceholder", "placeholder", "steps", "max", "min", "rangeValidation", "autoCorrectParts", "autoSwitchParts", "autoSwitchKeys", "allowCaretMode", "autoFill", "incompleteDateValidation", "twoDigitYearMax", "enableMouseWheel", "value", "spinners", "isPopupOpen", "hasPopup", "size", "rounded", "fillMode", "inputAttributes"], outputs: ["valueChange", "valueUpdate", "focus", "blur"], exportAs: ["kendo-dateinput"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { kind: "component", type: DateInputCustomMessagesComponent, selector: "kendo-dateinput-messages" }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { kind: "component", type: ActionSheetComponent, selector: "kendo-actionsheet", inputs: ["actions", "actionsLayout", "overlayClickClose", "title", "subtitle", "items", "cssClass", "cssStyle", "animation", "expanded", "titleId", "initialFocus"], outputs: ["expandedChange", "action", "expand", "collapse", "itemClick", "overlayClick"], exportAs: ["kendoActionSheet"] }, { kind: "directive", type: ActionSheetTemplateDirective, selector: "[kendoActionSheetTemplate]" }, { 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: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: CalendarComponent, selector: "kendo-calendar", inputs: ["showOtherMonthDays", "id", "focusedDate", "min", "max", "rangeValidation", "weekDaysFormat", "footer", "selection", "allowReverse", "value", "disabled", "tabindex", "tabIndex", "disabledDates", "navigation", "activeView", "bottomView", "topView", "type", "animateNavigation", "weekNumber", "cellTemplate", "monthCellTemplate", "yearCellTemplate", "decadeCellTemplate", "centuryCellTemplate", "weekNumberTemplate", "headerTitleTemplate", "headerTemplate", "footerTemplate", "navigationItemTemplate", "size", "activeRangeEnd"], outputs: ["closePopup", "activeViewChange", "navigate", "activeViewDateChange", "blur", "focus", "valueChange"], exportAs: ["kendo-calendar"] }, { kind: "component", type: CalendarCustomMessagesComponent, selector: "kendo-calendar-messages" }, { kind: "component", type: TimeSelectorComponent, selector: "kendo-timeselector", inputs: ["format", "min", "max", "cancelButton", "setButton", "nowButton", "disabled", "isAdaptiveEnabled", "isDateTimePicker", "steps", "value"], outputs: ["valueChange", "valueReject", "tabOutLastPart", "tabOutFirstPart", "tabOutNow"], exportAs: ["kendo-timeselector"] }, { kind: "component", type: TimeSelectorCustomMessagesComponent, selector: "kendo-timeselector-messages" }, { kind: "component", type: SegmentedControlComponent, selector: "kendo-segmented-control", inputs: ["items", "layoutMode", "size", "selected"], outputs: ["selectedChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
17489
+ `, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "[kendoDateTimePickerLocalizedMessages]" }, { kind: "component", type: DateInputComponent, selector: "kendo-dateinput", inputs: ["focusableId", "pickerType", "clearButton", "disabled", "readonly", "title", "tabindex", "role", "ariaReadOnly", "tabIndex", "isRequired", "format", "formatPlaceholder", "placeholder", "steps", "max", "min", "rangeValidation", "autoCorrectParts", "autoSwitchParts", "autoSwitchKeys", "allowCaretMode", "autoFill", "incompleteDateValidation", "twoDigitYearMax", "enableMouseWheel", "value", "spinners", "isPopupOpen", "hasPopup", "ariaInvalidState", "size", "rounded", "fillMode", "inputAttributes"], outputs: ["valueChange", "valueUpdate", "focus", "blur"], exportAs: ["kendo-dateinput"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { kind: "component", type: DateInputCustomMessagesComponent, selector: "kendo-dateinput-messages" }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { kind: "component", type: ActionSheetComponent, selector: "kendo-actionsheet", inputs: ["actions", "actionsLayout", "overlayClickClose", "title", "subtitle", "items", "cssClass", "cssStyle", "animation", "expanded", "titleId", "initialFocus"], outputs: ["expandedChange", "action", "expand", "collapse", "itemClick", "overlayClick"], exportAs: ["kendoActionSheet"] }, { kind: "directive", type: ActionSheetTemplateDirective, selector: "[kendoActionSheetTemplate]" }, { 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: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: CalendarComponent, selector: "kendo-calendar", inputs: ["showOtherMonthDays", "id", "focusedDate", "min", "max", "rangeValidation", "weekDaysFormat", "footer", "selection", "allowReverse", "value", "disabled", "tabindex", "tabIndex", "disabledDates", "navigation", "activeView", "bottomView", "topView", "type", "animateNavigation", "weekNumber", "cellTemplate", "monthCellTemplate", "yearCellTemplate", "decadeCellTemplate", "centuryCellTemplate", "weekNumberTemplate", "headerTitleTemplate", "headerTemplate", "footerTemplate", "navigationItemTemplate", "size", "activeRangeEnd"], outputs: ["closePopup", "activeViewChange", "navigate", "activeViewDateChange", "blur", "focus", "valueChange"], exportAs: ["kendo-calendar"] }, { kind: "component", type: CalendarCustomMessagesComponent, selector: "kendo-calendar-messages" }, { kind: "component", type: TimeSelectorComponent, selector: "kendo-timeselector", inputs: ["format", "min", "max", "cancelButton", "setButton", "nowButton", "disabled", "isAdaptiveEnabled", "isDateTimePicker", "steps", "value"], outputs: ["valueChange", "valueReject", "tabOutLastPart", "tabOutFirstPart", "tabOutNow"], exportAs: ["kendo-timeselector"] }, { kind: "component", type: TimeSelectorCustomMessagesComponent, selector: "kendo-timeselector-messages" }, { kind: "component", type: SegmentedControlComponent, selector: "kendo-segmented-control", inputs: ["items", "layoutMode", "size", "selected"], outputs: ["selectedChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
17259
17490
  }
17260
17491
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DateTimePickerComponent, decorators: [{
17261
17492
  type: Component,
@@ -17343,6 +17574,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
17343
17574
 
17344
17575
  i18n-adaptiveCloseButtonTitle="kendo.datetimepicker.adaptiveCloseButtonTitle|The title of the Close button of the ActionSheet that is rendered instead of the Popup when using small screen devices in adaptive mode"
17345
17576
  adaptiveCloseButtonTitle="Close"
17577
+
17578
+ i18n-dateTimeSelectorLabel="kendo.datetimepicker.dateTimeSelectorLabel|The accessible label of the date and time selector container"
17579
+ dateTimeSelectorLabel="Date and time selector"
17580
+
17581
+ i18n-timeSelectorLabel="kendo.datetimepicker.timeSelectorLabel|The accessible label of the time selector element"
17582
+ timeSelectorLabel="Time selector"
17346
17583
  >
17347
17584
  </ng-container>
17348
17585
 
@@ -17375,6 +17612,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
17375
17612
  hasPopup="dialog"
17376
17613
  [inputAttributes]="inputAttributes"
17377
17614
  [isPopupOpen]="isOpen"
17615
+ [ariaInvalidState]="ariaInvalidState"
17378
17616
  (valueChange)="handleInputValueChange($event)"
17379
17617
  [kendoEventsOutsideAngular]="{
17380
17618
  keydown: handleKeyDown
@@ -17391,6 +17629,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
17391
17629
  #toggleButton
17392
17630
  type="button"
17393
17631
  class="k-input-button k-button k-icon-button"
17632
+ [class.k-disabled]="disabled"
17394
17633
  [tabindex]="-1"
17395
17634
  [attr.title]="localization.get('toggle')"
17396
17635
  [attr.aria-label]="localization.get('toggle')"
@@ -17460,6 +17699,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
17460
17699
  type="button"
17461
17700
  icon="check"
17462
17701
  [attr.title]="localization.get('adaptiveCloseButtonTitle')"
17702
+ [attr.aria-label]="localization.get('adaptiveCloseButtonTitle')"
17463
17703
  [svgIcon]="checkIcon"
17464
17704
  fillMode="flat"
17465
17705
  themeColor="primary"
@@ -17508,6 +17748,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
17508
17748
  <div
17509
17749
  class="k-datetime-wrap k-{{activeTab}}-tab"
17510
17750
  [class.k-datetime-wrap-lg]="isAdaptive"
17751
+ role="group"
17752
+ [attr.aria-label]="localization.get('dateTimeSelectorLabel')"
17511
17753
  [kendoEventsOutsideAngular]="{
17512
17754
  mousedown: preventMouseDown,
17513
17755
  keydown: handleKeyDown
@@ -17603,6 +17845,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
17603
17845
  [second]="localization.get('second')"
17604
17846
  [millisecond]="localization.get('millisecond')"
17605
17847
  [dayperiod]="localization.get('dayperiod')"
17848
+ [timeSelectorLabel]="localization.get('timeSelectorLabel')"
17606
17849
  >
17607
17850
  </kendo-timeselector-messages>
17608
17851
  </kendo-timeselector>
@@ -19068,6 +19311,7 @@ class DateRangePopupComponent {
19068
19311
  type="button"
19069
19312
  icon="check"
19070
19313
  [attr.title]="localization.get('adaptiveCloseButtonTitle')"
19314
+ [attr.aria-label]="localization.get('adaptiveCloseButtonTitle')"
19071
19315
  [svgIcon]="checkIcon"
19072
19316
  fillMode="flat"
19073
19317
  themeColor="primary"
@@ -19230,6 +19474,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
19230
19474
  type="button"
19231
19475
  icon="check"
19232
19476
  [attr.title]="localization.get('adaptiveCloseButtonTitle')"
19477
+ [attr.aria-label]="localization.get('adaptiveCloseButtonTitle')"
19233
19478
  [svgIcon]="checkIcon"
19234
19479
  fillMode="flat"
19235
19480
  themeColor="primary"