@progress/kendo-angular-dateinputs 25.0.0-develop.6 → 25.0.0-develop.8

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.
@@ -36,8 +36,8 @@ const packageMetadata = {
36
36
  productName: 'Kendo UI for Angular',
37
37
  productCode: 'KENDOUIANGULAR',
38
38
  productCodes: ['KENDOUIANGULAR'],
39
- publishDate: 1784041118,
40
- version: '25.0.0-develop.6',
39
+ publishDate: 1784795905,
40
+ version: '25.0.0-develop.8',
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
  }
@@ -5769,7 +5787,7 @@ class VirtualizationComponent {
5769
5787
  return indexOffset < this.containerScrollPosition ? ScrollDirection.Backward : ScrollDirection.Forward;
5770
5788
  }
5771
5789
  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: [{
5790
+ 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
5791
  provide: SCROLLER_FACTORY_TOKEN,
5774
5792
  useValue: DEFAULT_SCROLLER_FACTORY
5775
5793
  }], usesOnChanges: true, ngImport: i0, template: `
@@ -5832,14 +5850,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
5832
5850
  }], scrollChange: [{
5833
5851
  type: Output
5834
5852
  }], wrapperClasses: [{
5835
- type: HostBinding,
5836
- args: ['class.k-flex']
5837
- }, {
5838
5853
  type: HostBinding,
5839
5854
  args: ['class.k-content']
5840
5855
  }, {
5841
5856
  type: HostBinding,
5842
5857
  args: ['class.k-scrollable']
5858
+ }], role: [{
5859
+ type: HostBinding,
5860
+ args: ['attr.role']
5861
+ }, {
5862
+ type: Input
5843
5863
  }], horizontalClass: [{
5844
5864
  type: HostBinding,
5845
5865
  args: ['class.k-scrollable-horizontal']
@@ -5970,6 +5990,7 @@ class NavigationComponent {
5970
5990
  [topOffset]="topOffset"
5971
5991
  [bottomOffset]="bottomOffset"
5972
5992
  [maxScrollDifference]="maxViewHeight"
5993
+ [role]="null"
5973
5994
  (pageChange)="onPageChange($event)"
5974
5995
  (scrollChange)="scrollChange($event)"
5975
5996
  >
@@ -5989,7 +6010,7 @@ class NavigationComponent {
5989
6010
  </li>
5990
6011
  </ul>
5991
6012
  </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 });
6013
+ `, 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
6014
  }
5994
6015
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: NavigationComponent, decorators: [{
5995
6016
  type: Component,
@@ -6006,6 +6027,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
6006
6027
  [topOffset]="topOffset"
6007
6028
  [bottomOffset]="bottomOffset"
6008
6029
  [maxScrollDifference]="maxViewHeight"
6030
+ [role]="null"
6009
6031
  (pageChange)="onPageChange($event)"
6010
6032
  (scrollChange)="scrollChange($event)"
6011
6033
  >
@@ -6067,6 +6089,7 @@ class ViewListComponent {
6067
6089
  intl;
6068
6090
  dom;
6069
6091
  renderer;
6092
+ localization;
6070
6093
  allowReverse;
6071
6094
  cellTemplateRef;
6072
6095
  weekNumberTemplateRef;
@@ -6126,6 +6149,9 @@ class ViewListComponent {
6126
6149
  get activeViewValue() {
6127
6150
  return CalendarViewEnum[this.activeView];
6128
6151
  }
6152
+ get weekNumberLabel() {
6153
+ return this.localization.get('weekNumberLabel');
6154
+ }
6129
6155
  service;
6130
6156
  activeDate;
6131
6157
  dates = [];
@@ -6143,12 +6169,13 @@ class ViewListComponent {
6143
6169
  showWeekNumbers;
6144
6170
  minViewsToRender = 1;
6145
6171
  intlSubscription;
6146
- constructor(bus, cdr, intl, dom, renderer) {
6172
+ constructor(bus, cdr, intl, dom, renderer, localization) {
6147
6173
  this.bus = bus;
6148
6174
  this.cdr = cdr;
6149
6175
  this.intl = intl;
6150
6176
  this.dom = dom;
6151
6177
  this.renderer = renderer;
6178
+ this.localization = localization;
6152
6179
  }
6153
6180
  ngOnInit() {
6154
6181
  this.weekNames = this.getWeekNames(this.weekDaysFormat);
@@ -6260,7 +6287,7 @@ class ViewListComponent {
6260
6287
  this.cdr.markForCheck();
6261
6288
  }
6262
6289
  }
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 });
6290
+ 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
6291
  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
6292
  <kendo-calendar-header
6266
6293
  [currentDate]="activeDate"
@@ -6275,11 +6302,17 @@ class ViewListComponent {
6275
6302
  >
6276
6303
  </kendo-calendar-header>
6277
6304
  @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">
6305
+ <table class="k-calendar-weekdays k-calendar-table" [style.table-layout]="'auto'" role="table">
6306
+ <thead class="k-calendar-thead" role="rowgroup">
6307
+ <tr class="k-calendar-tr" role="row">
6281
6308
  @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>
6309
+ <th
6310
+ class="k-calendar-th"
6311
+ [class.k-alt]="weekNumber && i === 0"
6312
+ scope="col"
6313
+ [attr.aria-label]="weekNumber && i === 0 ? weekNumberLabel : wideWeekNames[i]"
6314
+ role="columnheader"
6315
+ >@if (weekNumber && i === 0) {<span class="k-sr-only">{{weekNumberLabel}}</span>}{{name}}</th>
6283
6316
  }
6284
6317
  </tr>
6285
6318
  </thead>
@@ -6345,7 +6378,7 @@ class ViewListComponent {
6345
6378
  [currentDate]="activeDate">
6346
6379
  </kendo-calendar-footer>
6347
6380
  }
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 });
6381
+ `, 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
6382
  }
6350
6383
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ViewListComponent, decorators: [{
6351
6384
  type: Component,
@@ -6366,11 +6399,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
6366
6399
  >
6367
6400
  </kendo-calendar-header>
6368
6401
  @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">
6402
+ <table class="k-calendar-weekdays k-calendar-table" [style.table-layout]="'auto'" role="table">
6403
+ <thead class="k-calendar-thead" role="rowgroup">
6404
+ <tr class="k-calendar-tr" role="row">
6372
6405
  @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>
6406
+ <th
6407
+ class="k-calendar-th"
6408
+ [class.k-alt]="weekNumber && i === 0"
6409
+ scope="col"
6410
+ [attr.aria-label]="weekNumber && i === 0 ? weekNumberLabel : wideWeekNames[i]"
6411
+ role="columnheader"
6412
+ >@if (weekNumber && i === 0) {<span class="k-sr-only">{{weekNumberLabel}}</span>}{{name}}</th>
6374
6413
  }
6375
6414
  </tr>
6376
6415
  </thead>
@@ -6440,7 +6479,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
6440
6479
  standalone: true,
6441
6480
  imports: [HeaderComponent, VirtualizationComponent, KForOf, ViewComponent, FooterComponent]
6442
6481
  }]
6443
- }], ctorParameters: () => [{ type: BusViewService }, { type: i0.ChangeDetectorRef }, { type: i1.IntlService }, { type: CalendarDOMService }, { type: i0.Renderer2 }], propDecorators: { allowReverse: [{
6482
+ }], ctorParameters: () => [{ type: BusViewService }, { type: i0.ChangeDetectorRef }, { type: i1.IntlService }, { type: CalendarDOMService }, { type: i0.Renderer2 }, { type: i1$1.LocalizationService }], propDecorators: { allowReverse: [{
6444
6483
  type: Input
6445
6484
  }], cellTemplateRef: [{
6446
6485
  type: Input
@@ -6729,8 +6768,12 @@ class CalendarMessages extends ComponentMessages {
6729
6768
  * The title of the **Parent View** button in the header of the Calendar.
6730
6769
  */
6731
6770
  parentViewButtonTitle;
6771
+ /**
6772
+ * The label of the week number column in the Calendar.
6773
+ */
6774
+ weekNumberLabel;
6732
6775
  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 });
6776
+ 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
6777
  }
6735
6778
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: CalendarMessages, decorators: [{
6736
6779
  type: Directive,
@@ -6745,6 +6788,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
6745
6788
  type: Input
6746
6789
  }], parentViewButtonTitle: [{
6747
6790
  type: Input
6791
+ }], weekNumberLabel: [{
6792
+ type: Input
6748
6793
  }] } });
6749
6794
 
6750
6795
  /**
@@ -7057,6 +7102,12 @@ class CalendarComponent {
7057
7102
  * @default false
7058
7103
  */
7059
7104
  weekNumber = false;
7105
+ /**
7106
+ * @hidden
7107
+ */
7108
+ get hostWeekNumberClass() {
7109
+ return this.weekNumber && this.type !== 'classic';
7110
+ }
7060
7111
  /**
7061
7112
  * @hidden
7062
7113
  */
@@ -7363,7 +7414,8 @@ class CalendarComponent {
7363
7414
  }
7364
7415
  get ariaDisabled() {
7365
7416
  // in Classic mode, the inner MultiViewCalendar should handle the disabled class and aria attr
7366
- return this.type === 'classic' ? undefined : this.disabled;
7417
+ const isDisabled = this.disabled ? true : null;
7418
+ return this.type === 'classic' ? null : isDisabled;
7367
7419
  }
7368
7420
  domEvents = [];
7369
7421
  control;
@@ -8009,7 +8061,7 @@ class CalendarComponent {
8009
8061
  });
8010
8062
  }
8011
8063
  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: [
8064
+ 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
8065
  BusViewService,
8014
8066
  CALENDAR_VALUE_ACCESSOR,
8015
8067
  CALENDAR_RANGE_VALIDATORS,
@@ -8037,6 +8089,9 @@ class CalendarComponent {
8037
8089
 
8038
8090
  i18n-parentViewButtonTitle="kendo.calendar.parentViewButtonTitle|The title of the parent view button in the calendar header"
8039
8091
  parentViewButtonTitle="Navigate to parent view"
8092
+
8093
+ i18n-weekNumberLabel="kendo.calendar.weekNumberLabel|The label of the week number column in the Calendar"
8094
+ weekNumberLabel="Week number"
8040
8095
  >
8041
8096
  </ng-container>
8042
8097
  @if (type === 'infinite') {
@@ -8181,6 +8236,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
8181
8236
 
8182
8237
  i18n-parentViewButtonTitle="kendo.calendar.parentViewButtonTitle|The title of the parent view button in the calendar header"
8183
8238
  parentViewButtonTitle="Navigate to parent view"
8239
+
8240
+ i18n-weekNumberLabel="kendo.calendar.weekNumberLabel|The label of the week number column in the Calendar"
8241
+ weekNumberLabel="Week number"
8184
8242
  >
8185
8243
  </ng-container>
8186
8244
  @if (type === 'infinite') {
@@ -8338,7 +8396,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
8338
8396
  type: Input
8339
8397
  }], weekNumber: [{
8340
8398
  type: Input
8341
- }, {
8399
+ }], hostWeekNumberClass: [{
8342
8400
  type: HostBinding,
8343
8401
  args: ['class.k-week-number']
8344
8402
  }], closePopup: [{
@@ -8665,7 +8723,7 @@ class DateInputComponent {
8665
8723
  /**
8666
8724
  * @hidden
8667
8725
  */
8668
- role = 'textbox';
8726
+ role = null;
8669
8727
  /**
8670
8728
  * @hidden
8671
8729
  */
@@ -8818,6 +8876,18 @@ class DateInputComponent {
8818
8876
  * @hidden
8819
8877
  */
8820
8878
  hasPopup;
8879
+ /**
8880
+ * @hidden
8881
+ */
8882
+ set ariaInvalidState(value) {
8883
+ this._ariaInvalidState = value;
8884
+ if (value !== null && this.inputElement) {
8885
+ this.setAriaInvalid();
8886
+ }
8887
+ }
8888
+ get ariaInvalidState() {
8889
+ return this._ariaInvalidState;
8890
+ }
8821
8891
  /**
8822
8892
  * Specifies the size of the component. The default value is set by the Kendo theme.
8823
8893
  *
@@ -8990,6 +9060,7 @@ class DateInputComponent {
8990
9060
  _size;
8991
9061
  _rounded;
8992
9062
  _fillMode;
9063
+ _ariaInvalidState = null;
8993
9064
  control;
8994
9065
  subs = new Subscription();
8995
9066
  _inputAttributes;
@@ -9151,15 +9222,13 @@ class DateInputComponent {
9151
9222
  * @hidden
9152
9223
  */
9153
9224
  setAriaInvalid() {
9154
- if (!this.control) {
9225
+ if (this._ariaInvalidState === null && !this.control) {
9155
9226
  return;
9156
9227
  }
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
- }
9228
+ const isInvalid = this._ariaInvalidState !== null
9229
+ ? this._ariaInvalidState
9230
+ : !!(this.control.invalid && (this.control.touched || this.control.dirty));
9231
+ this.renderer.setAttribute(this.inputElement, attributeNames.ariaInvalid, `${isInvalid}`);
9163
9232
  }
9164
9233
  /**
9165
9234
  * @hidden
@@ -9311,6 +9380,7 @@ class DateInputComponent {
9311
9380
  if (hasObservers(this.onBlur) || requiresZoneOnBlur(this.ngControl)) {
9312
9381
  this.ngZone.run(() => {
9313
9382
  this.onControlTouched();
9383
+ this.setAriaInvalid();
9314
9384
  this.emitBlur(args.event);
9315
9385
  this.cdr.markForCheck();
9316
9386
  });
@@ -9385,7 +9455,7 @@ class DateInputComponent {
9385
9455
  setHTMLAttributes(attributesToRender, this.renderer, this.dateInput.nativeElement, this.injector);
9386
9456
  }
9387
9457
  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: [
9458
+ 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
9459
  { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DateInputComponent), multi: true },
9390
9460
  { provide: NG_VALIDATORS, useExisting: forwardRef(() => DateInputComponent), multi: true },
9391
9461
  { provide: L10N_PREFIX, useValue: 'kendo.dateinput' },
@@ -9411,7 +9481,7 @@ class DateInputComponent {
9411
9481
  autocapitalize="off"
9412
9482
  spellcheck="false"
9413
9483
  [attr.role]="role"
9414
- [attr.aria-readonly]="ariaReadOnly"
9484
+ [attr.aria-readonly]="ariaReadOnly || null"
9415
9485
  [id]="focusableId"
9416
9486
  [title]="title"
9417
9487
  [tabindex]="tabindex"
@@ -9517,7 +9587,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
9517
9587
  autocapitalize="off"
9518
9588
  spellcheck="false"
9519
9589
  [attr.role]="role"
9520
- [attr.aria-readonly]="ariaReadOnly"
9590
+ [attr.aria-readonly]="ariaReadOnly || null"
9521
9591
  [id]="focusableId"
9522
9592
  [title]="title"
9523
9593
  [tabindex]="tabindex"
@@ -9657,6 +9727,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
9657
9727
  type: Input
9658
9728
  }], hasPopup: [{
9659
9729
  type: Input
9730
+ }], ariaInvalidState: [{
9731
+ type: Input
9660
9732
  }], size: [{
9661
9733
  type: Input
9662
9734
  }], rounded: [{
@@ -10468,6 +10540,16 @@ class DatePickerComponent extends MultiTabStop {
10468
10540
  get isControlRequired() {
10469
10541
  return isControlRequired(this.control);
10470
10542
  }
10543
+ /**
10544
+ * @hidden
10545
+ */
10546
+ get ariaInvalidState() {
10547
+ const control = this.control?.control;
10548
+ if (!control) {
10549
+ return null;
10550
+ }
10551
+ return control.invalid && (control.touched || control.dirty);
10552
+ }
10471
10553
  _popupSettings = { animate: true };
10472
10554
  _show = false;
10473
10555
  _value = null;
@@ -10539,6 +10621,7 @@ class DatePickerComponent extends MultiTabStop {
10539
10621
  ngAfterViewInit() {
10540
10622
  this.setComponentClasses();
10541
10623
  this.windowSize = this.adaptiveService.size;
10624
+ this.pickerSubscriptions.add(this.control?.control?.statusChanges?.subscribe(() => this.cdr.markForCheck()));
10542
10625
  }
10543
10626
  /**
10544
10627
  * @hidden
@@ -10976,8 +11059,8 @@ class DatePickerComponent extends MultiTabStop {
10976
11059
  blurComponent() {
10977
11060
  this.isActive = false;
10978
11061
  this.show = false;
10979
- this.cdr.detectChanges();
10980
11062
  this.onControlTouched();
11063
+ this.cdr.detectChanges();
10981
11064
  this.onBlur.emit();
10982
11065
  }
10983
11066
  handleSameSelection() {
@@ -11047,6 +11130,7 @@ class DatePickerComponent extends MultiTabStop {
11047
11130
  pickerType="datepicker"
11048
11131
  hasPopup="grid"
11049
11132
  [isPopupOpen]="show"
11133
+ [ariaInvalidState]="ariaInvalidState"
11050
11134
  [clearButton]="clearButton"
11051
11135
  [disabled]="disabled"
11052
11136
  [readonly]="readonly || readOnlyInput"
@@ -11082,6 +11166,7 @@ class DatePickerComponent extends MultiTabStop {
11082
11166
  #toggleButton
11083
11167
  type="button"
11084
11168
  class="k-input-button k-button k-icon-button"
11169
+ [class.k-disabled]="disabled"
11085
11170
  [tabindex]="-1"
11086
11171
  [attr.title]="localization.get('toggle')"
11087
11172
  [attr.aria-label]="localization.get('toggle')"
@@ -11145,6 +11230,7 @@ class DatePickerComponent extends MultiTabStop {
11145
11230
  icon="check"
11146
11231
  themeColor="primary"
11147
11232
  [attr.title]="localization.get('adaptiveCloseButtonTitle')"
11233
+ [attr.aria-label]="localization.get('adaptiveCloseButtonTitle')"
11148
11234
  [svgIcon]="checkIcon"
11149
11235
  fillMode="flat"
11150
11236
  [tabIndex]="-1"
@@ -11206,7 +11292,7 @@ class DatePickerComponent extends MultiTabStop {
11206
11292
  </kendo-calendar-messages>
11207
11293
  </kendo-calendar>
11208
11294
  </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 });
11295
+ `, 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
11296
  }
11211
11297
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DatePickerComponent, decorators: [{
11212
11298
  type: Component,
@@ -11258,6 +11344,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
11258
11344
  pickerType="datepicker"
11259
11345
  hasPopup="grid"
11260
11346
  [isPopupOpen]="show"
11347
+ [ariaInvalidState]="ariaInvalidState"
11261
11348
  [clearButton]="clearButton"
11262
11349
  [disabled]="disabled"
11263
11350
  [readonly]="readonly || readOnlyInput"
@@ -11293,6 +11380,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
11293
11380
  #toggleButton
11294
11381
  type="button"
11295
11382
  class="k-input-button k-button k-icon-button"
11383
+ [class.k-disabled]="disabled"
11296
11384
  [tabindex]="-1"
11297
11385
  [attr.title]="localization.get('toggle')"
11298
11386
  [attr.aria-label]="localization.get('toggle')"
@@ -11356,6 +11444,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
11356
11444
  icon="check"
11357
11445
  themeColor="primary"
11358
11446
  [attr.title]="localization.get('adaptiveCloseButtonTitle')"
11447
+ [attr.aria-label]="localization.get('adaptiveCloseButtonTitle')"
11359
11448
  [svgIcon]="checkIcon"
11360
11449
  fillMode="flat"
11361
11450
  [tabIndex]="-1"
@@ -11656,7 +11745,7 @@ const timeListWrapper = (isAdaptiveEnabled = false, windowSize, isDateTimePicker
11656
11745
  ], 'k-actionsheet-content'),
11657
11746
  div([div('button', 'k-button k-button-lg')], 'k-actions k-actions-stretched k-actions-horizontal k-actionsheet-footer'),
11658
11747
  ], '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 });
11748
+ ], `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
11749
  };
11661
11750
  /**
11662
11751
  * @hidden
@@ -12371,6 +12460,12 @@ class TimeListComponent {
12371
12460
  return this.disabled ? undefined : 0;
12372
12461
  }
12373
12462
  componentClass = true;
12463
+ get hostRole() {
12464
+ return this.roleAttribute;
12465
+ }
12466
+ get hostAriaLabel() {
12467
+ return this.ariaLabel;
12468
+ }
12374
12469
  get isDayPeriod() {
12375
12470
  return this.part?.type === 'dayperiod';
12376
12471
  }
@@ -12587,10 +12682,8 @@ class TimeListComponent {
12587
12682
  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
12683
  }
12589
12684
  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: `
12685
+ 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
12686
  <kendo-virtualization
12592
- [attr.role]="roleAttribute"
12593
- [attr.aria-label]="ariaLabel"
12594
12687
  [skip]="skip"
12595
12688
  [take]="total"
12596
12689
  [total]="total"
@@ -12598,7 +12691,7 @@ class TimeListComponent {
12598
12691
  [maxScrollDifference]="listHeight"
12599
12692
  [topOffset]="topOffset"
12600
12693
  [bottomOffset]="bottomOffset"
12601
- class="k-time-container"
12694
+ class="k-content k-scrollable k-time-container"
12602
12695
  tabindex="-1"
12603
12696
  >
12604
12697
  <ul [ngStyle]="style" class="k-reset"
@@ -12606,7 +12699,7 @@ class TimeListComponent {
12606
12699
  click: handleItemClick
12607
12700
  }"
12608
12701
  [scope]="this"
12609
- [attr.role]="'presentation'"
12702
+ [attr.role]="'none'"
12610
12703
  >
12611
12704
  @for (item of data; track $index; let index = $index) {
12612
12705
  <li class="k-item"
@@ -12619,7 +12712,7 @@ class TimeListComponent {
12619
12712
  }
12620
12713
  </ul>
12621
12714
  </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"] }] });
12715
+ `, 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
12716
  }
12624
12717
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: TimeListComponent, decorators: [{
12625
12718
  type: Component,
@@ -12627,8 +12720,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
12627
12720
  selector: 'kendo-timelist',
12628
12721
  template: `
12629
12722
  <kendo-virtualization
12630
- [attr.role]="roleAttribute"
12631
- [attr.aria-label]="ariaLabel"
12632
12723
  [skip]="skip"
12633
12724
  [take]="total"
12634
12725
  [total]="total"
@@ -12636,7 +12727,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
12636
12727
  [maxScrollDifference]="listHeight"
12637
12728
  [topOffset]="topOffset"
12638
12729
  [bottomOffset]="bottomOffset"
12639
- class="k-time-container"
12730
+ class="k-content k-scrollable k-time-container"
12640
12731
  tabindex="-1"
12641
12732
  >
12642
12733
  <ul [ngStyle]="style" class="k-reset"
@@ -12644,7 +12735,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
12644
12735
  click: handleItemClick
12645
12736
  }"
12646
12737
  [scope]="this"
12647
- [attr.role]="'presentation'"
12738
+ [attr.role]="'none'"
12648
12739
  >
12649
12740
  @for (item of data; track $index; let index = $index) {
12650
12741
  <li class="k-item"
@@ -12692,6 +12783,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
12692
12783
  }], componentClass: [{
12693
12784
  type: HostBinding,
12694
12785
  args: ["class.k-time-list"]
12786
+ }], hostRole: [{
12787
+ type: HostBinding,
12788
+ args: ['attr.role']
12789
+ }], hostAriaLabel: [{
12790
+ type: HostBinding,
12791
+ args: ['attr.aria-label']
12695
12792
  }] } });
12696
12793
 
12697
12794
  const isEqualTillMinute = (value, min) => value.getHours() === min.getHours() && value.getMinutes() === min.getMinutes();
@@ -12819,8 +12916,12 @@ class TimePickerMessages extends ComponentMessages {
12819
12916
  * 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
12917
  */
12821
12918
  adaptiveCloseButtonTitle;
12919
+ /**
12920
+ * Specifies the accessible label of the TimeSelector.
12921
+ */
12922
+ timeSelectorLabel;
12822
12923
  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 });
12924
+ 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
12925
  }
12825
12926
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: TimePickerMessages, decorators: [{
12826
12927
  type: Directive,
@@ -12855,6 +12956,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
12855
12956
  type: Input
12856
12957
  }], adaptiveCloseButtonTitle: [{
12857
12958
  type: Input
12959
+ }], timeSelectorLabel: [{
12960
+ type: Input
12858
12961
  }] } });
12859
12962
 
12860
12963
  /**
@@ -12921,6 +13024,12 @@ class TimeSelectorComponent {
12921
13024
  now;
12922
13025
  timeLists;
12923
13026
  timeListWrappers;
13027
+ /**
13028
+ * @hidden
13029
+ */
13030
+ get role() {
13031
+ return 'group';
13032
+ }
12924
13033
  /**
12925
13034
  * @hidden
12926
13035
  */
@@ -13061,7 +13170,10 @@ class TimeSelectorComponent {
13061
13170
  if (this.localization) {
13062
13171
  this.subscriptions.add(this.localization
13063
13172
  .changes
13064
- .subscribe(() => this.cdr.markForCheck()));
13173
+ .subscribe(() => {
13174
+ this.renderer.setAttribute(this.element.nativeElement, 'aria-label', this.localization.get('timeSelectorLabel'));
13175
+ this.cdr.markForCheck();
13176
+ }));
13065
13177
  }
13066
13178
  this.renderer.addClass(this.element.nativeElement, 'k-timeselector');
13067
13179
  this.dom.isAdaptiveEnabled = this.isAdaptiveEnabled;
@@ -13279,7 +13391,7 @@ class TimeSelectorComponent {
13279
13391
  return listIdx;
13280
13392
  }
13281
13393
  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: [
13394
+ 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
13395
  LocalizationService,
13284
13396
  {
13285
13397
  provide: L10N_PREFIX,
@@ -13304,17 +13416,36 @@ class TimeSelectorComponent {
13304
13416
 
13305
13417
  i18n-nowLabel="kendo.timeselector.nowLabel|The label for the Now button in the timeselector component"
13306
13418
  nowLabel="Select now"
13419
+
13420
+ i18n-timeSelectorLabel="kendo.timeselector.timeSelectorLabel|The accessible label for the timeselector component"
13421
+ timeSelectorLabel="Time Selector"
13422
+
13423
+ i18n-hour="kendo.timeselector.hour|The label for the Hour column in the timeselector component"
13424
+ hour="Hour"
13425
+
13426
+ i18n-minute="kendo.timeselector.minute|The label for the Minute column in the timeselector component"
13427
+ minute="Minute"
13428
+
13429
+ i18n-second="kendo.timeselector.second|The label for the Second column in the timeselector component"
13430
+ second="Second"
13431
+
13432
+ i18n-millisecond="kendo.timeselector.millisecond|The label for the Millisecond column in the timeselector component"
13433
+ millisecond="Millisecond"
13434
+
13435
+ i18n-dayperiod="kendo.timeselector.dayperiod|The label for the AM/PM column in the timeselector component"
13436
+ dayperiod="AM/PM"
13307
13437
  >
13308
13438
  </ng-container>
13309
13439
  <div class="k-time-header">
13310
- <span class="k-title k-timeselector-title">
13440
+ <span class="k-title">
13311
13441
  {{ intl.formatDate(current, format) }}
13312
13442
  </span>
13313
13443
  @if (showNowButton) {
13314
13444
  <button
13315
13445
  #now
13316
13446
  type="button"
13317
- class="k-button k-button-flat k-button-primary k-time-now"
13447
+ class="k-button k-button-flat k-time-now"
13448
+ [class.k-button-lg]="isAdaptiveEnabled"
13318
13449
  [attr.title]="localization.get('nowLabel')"
13319
13450
  [attr.aria-label]="localization.get('nowLabel')"
13320
13451
  [kendoEventsOutsideAngular]="{
@@ -13325,7 +13456,7 @@ class TimeSelectorComponent {
13325
13456
  }"
13326
13457
  [scope]="this"
13327
13458
  [disabled]="disabled"
13328
- >{{localization.get('now')}}</button>
13459
+ ><span class="k-button-text">{{localization.get('now')}}</span></button>
13329
13460
  }
13330
13461
  </div>
13331
13462
  <div class="k-time-list-container">
@@ -13337,7 +13468,7 @@ class TimeSelectorComponent {
13337
13468
  class="k-time-list-wrapper"
13338
13469
  role="presentation" tabindex="-1"
13339
13470
  >
13340
- <span class="k-title k-timeselector-title">{{intl.dateFieldName(part)}}</span>
13471
+ <span class="k-title">{{intl.dateFieldName(part)}}</span>
13341
13472
  <kendo-timelist
13342
13473
  [isLast]="idx === dateFormatParts.length - 1"
13343
13474
  [isFirst]="idx === 0"
@@ -13358,7 +13489,7 @@ class TimeSelectorComponent {
13358
13489
  ></kendo-timelist>
13359
13490
  </div>
13360
13491
  }
13361
- @if (part.type === 'literal') {
13492
+ @if (part.type === 'literal' && part.pattern.trim()) {
13362
13493
  <div class="k-time-separator">
13363
13494
  {{part.pattern}}
13364
13495
  </div>
@@ -13382,7 +13513,7 @@ class TimeSelectorComponent {
13382
13513
  }"
13383
13514
  [scope]="this"
13384
13515
  [disabled]="disabled"
13385
- >{{localization.get('accept')}}</button>
13516
+ ><span class="k-button-text">{{localization.get('accept')}}</span></button>
13386
13517
  }
13387
13518
  @if (cancelButton) {
13388
13519
  <button
@@ -13399,7 +13530,7 @@ class TimeSelectorComponent {
13399
13530
  }"
13400
13531
  [scope]="this"
13401
13532
  [disabled]="disabled"
13402
- >{{localization.get('cancel')}}</button>
13533
+ ><span class="k-button-text">{{localization.get('cancel')}}</span></button>
13403
13534
  }
13404
13535
  </div>
13405
13536
  }
@@ -13437,17 +13568,36 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
13437
13568
 
13438
13569
  i18n-nowLabel="kendo.timeselector.nowLabel|The label for the Now button in the timeselector component"
13439
13570
  nowLabel="Select now"
13571
+
13572
+ i18n-timeSelectorLabel="kendo.timeselector.timeSelectorLabel|The accessible label for the timeselector component"
13573
+ timeSelectorLabel="Time Selector"
13574
+
13575
+ i18n-hour="kendo.timeselector.hour|The label for the Hour column in the timeselector component"
13576
+ hour="Hour"
13577
+
13578
+ i18n-minute="kendo.timeselector.minute|The label for the Minute column in the timeselector component"
13579
+ minute="Minute"
13580
+
13581
+ i18n-second="kendo.timeselector.second|The label for the Second column in the timeselector component"
13582
+ second="Second"
13583
+
13584
+ i18n-millisecond="kendo.timeselector.millisecond|The label for the Millisecond column in the timeselector component"
13585
+ millisecond="Millisecond"
13586
+
13587
+ i18n-dayperiod="kendo.timeselector.dayperiod|The label for the AM/PM column in the timeselector component"
13588
+ dayperiod="AM/PM"
13440
13589
  >
13441
13590
  </ng-container>
13442
13591
  <div class="k-time-header">
13443
- <span class="k-title k-timeselector-title">
13592
+ <span class="k-title">
13444
13593
  {{ intl.formatDate(current, format) }}
13445
13594
  </span>
13446
13595
  @if (showNowButton) {
13447
13596
  <button
13448
13597
  #now
13449
13598
  type="button"
13450
- class="k-button k-button-flat k-button-primary k-time-now"
13599
+ class="k-button k-button-flat k-time-now"
13600
+ [class.k-button-lg]="isAdaptiveEnabled"
13451
13601
  [attr.title]="localization.get('nowLabel')"
13452
13602
  [attr.aria-label]="localization.get('nowLabel')"
13453
13603
  [kendoEventsOutsideAngular]="{
@@ -13458,7 +13608,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
13458
13608
  }"
13459
13609
  [scope]="this"
13460
13610
  [disabled]="disabled"
13461
- >{{localization.get('now')}}</button>
13611
+ ><span class="k-button-text">{{localization.get('now')}}</span></button>
13462
13612
  }
13463
13613
  </div>
13464
13614
  <div class="k-time-list-container">
@@ -13470,7 +13620,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
13470
13620
  class="k-time-list-wrapper"
13471
13621
  role="presentation" tabindex="-1"
13472
13622
  >
13473
- <span class="k-title k-timeselector-title">{{intl.dateFieldName(part)}}</span>
13623
+ <span class="k-title">{{intl.dateFieldName(part)}}</span>
13474
13624
  <kendo-timelist
13475
13625
  [isLast]="idx === dateFormatParts.length - 1"
13476
13626
  [isFirst]="idx === 0"
@@ -13491,7 +13641,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
13491
13641
  ></kendo-timelist>
13492
13642
  </div>
13493
13643
  }
13494
- @if (part.type === 'literal') {
13644
+ @if (part.type === 'literal' && part.pattern.trim()) {
13495
13645
  <div class="k-time-separator">
13496
13646
  {{part.pattern}}
13497
13647
  </div>
@@ -13515,7 +13665,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
13515
13665
  }"
13516
13666
  [scope]="this"
13517
13667
  [disabled]="disabled"
13518
- >{{localization.get('accept')}}</button>
13668
+ ><span class="k-button-text">{{localization.get('accept')}}</span></button>
13519
13669
  }
13520
13670
  @if (cancelButton) {
13521
13671
  <button
@@ -13532,7 +13682,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
13532
13682
  }"
13533
13683
  [scope]="this"
13534
13684
  [disabled]="disabled"
13535
- >{{localization.get('cancel')}}</button>
13685
+ ><span class="k-button-text">{{localization.get('cancel')}}</span></button>
13536
13686
  }
13537
13687
  </div>
13538
13688
  }
@@ -13557,6 +13707,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
13557
13707
  }], timeListWrappers: [{
13558
13708
  type: ViewChildren,
13559
13709
  args: ['listWrapper']
13710
+ }], role: [{
13711
+ type: HostBinding,
13712
+ args: ['attr.role']
13560
13713
  }], disabledClass: [{
13561
13714
  type: HostBinding,
13562
13715
  args: ['class.k-disabled']
@@ -13684,8 +13837,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
13684
13837
  const VALUE_DOC_LINK$1 = 'https://www.telerik.com/kendo-angular-ui/components/dateinputs/timepicker#integration-with-json';
13685
13838
  const INTL_DATE_FORMAT = 'https://github.com/telerik/kendo-intl/blob/master/docs/date-formatting/index.md';
13686
13839
  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
13840
  /**
13690
13841
  * Represents the [Kendo UI TimePicker component for Angular](https://www.telerik.com/kendo-angular-ui/components/dateinputs/timepicker).
13691
13842
  *
@@ -14067,15 +14218,27 @@ class TimePickerComponent extends MultiTabStop {
14067
14218
  get isControlRequired() {
14068
14219
  return isControlRequired(this.control);
14069
14220
  }
14221
+ /**
14222
+ * @hidden
14223
+ */
14224
+ get ariaInvalidState() {
14225
+ const control = this.control?.control;
14226
+ if (!control) {
14227
+ return null;
14228
+ }
14229
+ return control.invalid && (control.touched || control.dirty);
14230
+ }
14070
14231
  /**
14071
14232
  * @hidden
14072
14233
  */
14073
14234
  windowSize;
14235
+ adaptiveAcceptBtnRef;
14236
+ adaptiveCancelBtnRef;
14074
14237
  get adaptiveAcceptButton() {
14075
- return this.actionSheet.element.nativeElement.querySelector(ACCEPT_BUTTON_SELECTOR$1);
14238
+ return this.adaptiveAcceptBtnRef?.nativeElement;
14076
14239
  }
14077
14240
  get adaptiveCancelButton() {
14078
- return this.actionSheet.element.nativeElement.querySelector(CANCEL_BUTTON_SELECTOR);
14241
+ return this.adaptiveCancelBtnRef?.nativeElement;
14079
14242
  }
14080
14243
  get inputElement() {
14081
14244
  return this.wrapper.nativeElement.querySelector('input');
@@ -14149,6 +14312,7 @@ class TimePickerComponent extends MultiTabStop {
14149
14312
  ngAfterViewInit() {
14150
14313
  this.setComponentClasses();
14151
14314
  this.windowSize = this.adaptiveService.size;
14315
+ this.pickerSubscriptions.add(this.control?.control?.statusChanges?.subscribe(() => this.cdr.markForCheck()));
14152
14316
  }
14153
14317
  /**
14154
14318
  * @hidden
@@ -14394,7 +14558,7 @@ class TimePickerComponent extends MultiTabStop {
14394
14558
  * @hidden
14395
14559
  */
14396
14560
  get popupClasses() {
14397
- const popupClasses = ['k-timepicker-popup'];
14561
+ const popupClasses = ['k-timepicker-popup', 'k-list-container'];
14398
14562
  if (!this.popupSettings.popupClass) {
14399
14563
  return popupClasses;
14400
14564
  }
@@ -14662,7 +14826,7 @@ class TimePickerComponent extends MultiTabStop {
14662
14826
  },
14663
14827
  PickerService,
14664
14828
  { 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: `
14829
+ ], 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
14830
  <ng-container kendoTimePickerLocalizedMessages
14667
14831
  i18n-accept="kendo.timepicker.accept|The Accept button text in the timepicker component"
14668
14832
  accept="Set"
@@ -14705,6 +14869,9 @@ class TimePickerComponent extends MultiTabStop {
14705
14869
 
14706
14870
  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
14871
  adaptiveCloseButtonTitle="Close"
14872
+
14873
+ i18n-timeSelectorLabel="kendo.timepicker.timeSelectorLabel|The accessible label for the time selector in the timepicker component"
14874
+ timeSelectorLabel="Time Selector"
14708
14875
  >
14709
14876
  </ng-container>
14710
14877
  <kendo-dateinput
@@ -14712,6 +14879,7 @@ class TimePickerComponent extends MultiTabStop {
14712
14879
  pickerType="timepicker"
14713
14880
  hasPopup="dialog"
14714
14881
  [isPopupOpen]="show"
14882
+ [ariaInvalidState]="ariaInvalidState"
14715
14883
  [disabled]="disabled"
14716
14884
  [clearButton]="clearButton"
14717
14885
  [readonly]="readonly || readOnlyInput"
@@ -14747,6 +14915,7 @@ class TimePickerComponent extends MultiTabStop {
14747
14915
  type="button"
14748
14916
  tabindex="-1"
14749
14917
  class="k-input-button k-button k-icon-button"
14918
+ [class.k-disabled]="disabled"
14750
14919
  [attr.title]="localization.get('toggle')"
14751
14920
  [attr.aria-label]="localization.get('toggle')"
14752
14921
  [attr.disabled]="disabled ? '' : null"
@@ -14802,8 +14971,10 @@ class TimePickerComponent extends MultiTabStop {
14802
14971
  type="button"
14803
14972
  icon="check"
14804
14973
  [attr.title]="localization.get('adaptiveCloseButtonTitle')"
14974
+ [attr.aria-label]="localization.get('adaptiveCloseButtonTitle')"
14805
14975
  [svgIcon]="checkIcon"
14806
14976
  fillMode="flat"
14977
+ themeColor="primary"
14807
14978
  size="large"
14808
14979
  [tabIndex]="-1"
14809
14980
  (click)="show = false">
@@ -14816,10 +14987,10 @@ class TimePickerComponent extends MultiTabStop {
14816
14987
  </div>
14817
14988
  <div class="k-actions k-actions-stretched k-actions-horizontal k-actionsheet-footer">
14818
14989
  <button kendoButton
14990
+ #adaptiveCancelBtn
14819
14991
  type="button"
14820
14992
  (click)="handleReject()"
14821
14993
  size="large"
14822
- class="k-time-cancel"
14823
14994
  [attr.title]="localization.get('cancelLabel')"
14824
14995
  [attr.aria-label]="localization.get('cancelLabel')"
14825
14996
  >
@@ -14827,10 +14998,10 @@ class TimePickerComponent extends MultiTabStop {
14827
14998
  </button>
14828
14999
 
14829
15000
  <button kendoButton
15001
+ #adaptiveAcceptBtn
14830
15002
  type="button"
14831
15003
  (click)="handleActionSheetAccept()"
14832
15004
  size="large"
14833
- class="k-time-accept"
14834
15005
  themeColor="primary"
14835
15006
  [attr.title]="localization.get('acceptLabel')"
14836
15007
  [attr.aria-label]="localization.get('acceptLabel')"
@@ -14877,11 +15048,12 @@ class TimePickerComponent extends MultiTabStop {
14877
15048
  [second]="localization.get('second')"
14878
15049
  [millisecond]="localization.get('millisecond')"
14879
15050
  [dayperiod]="localization.get('dayperiod')"
15051
+ [timeSelectorLabel]="localization.get('timeSelectorLabel')"
14880
15052
  >
14881
15053
  </kendo-timeselector-messages>
14882
15054
  </kendo-timeselector>
14883
15055
  </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 });
15056
+ `, 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
15057
  }
14886
15058
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: TimePickerComponent, decorators: [{
14887
15059
  type: Component,
@@ -14946,6 +15118,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
14946
15118
 
14947
15119
  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
15120
  adaptiveCloseButtonTitle="Close"
15121
+
15122
+ i18n-timeSelectorLabel="kendo.timepicker.timeSelectorLabel|The accessible label for the time selector in the timepicker component"
15123
+ timeSelectorLabel="Time Selector"
14949
15124
  >
14950
15125
  </ng-container>
14951
15126
  <kendo-dateinput
@@ -14953,6 +15128,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
14953
15128
  pickerType="timepicker"
14954
15129
  hasPopup="dialog"
14955
15130
  [isPopupOpen]="show"
15131
+ [ariaInvalidState]="ariaInvalidState"
14956
15132
  [disabled]="disabled"
14957
15133
  [clearButton]="clearButton"
14958
15134
  [readonly]="readonly || readOnlyInput"
@@ -14988,6 +15164,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
14988
15164
  type="button"
14989
15165
  tabindex="-1"
14990
15166
  class="k-input-button k-button k-icon-button"
15167
+ [class.k-disabled]="disabled"
14991
15168
  [attr.title]="localization.get('toggle')"
14992
15169
  [attr.aria-label]="localization.get('toggle')"
14993
15170
  [attr.disabled]="disabled ? '' : null"
@@ -15043,8 +15220,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
15043
15220
  type="button"
15044
15221
  icon="check"
15045
15222
  [attr.title]="localization.get('adaptiveCloseButtonTitle')"
15223
+ [attr.aria-label]="localization.get('adaptiveCloseButtonTitle')"
15046
15224
  [svgIcon]="checkIcon"
15047
15225
  fillMode="flat"
15226
+ themeColor="primary"
15048
15227
  size="large"
15049
15228
  [tabIndex]="-1"
15050
15229
  (click)="show = false">
@@ -15057,10 +15236,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
15057
15236
  </div>
15058
15237
  <div class="k-actions k-actions-stretched k-actions-horizontal k-actionsheet-footer">
15059
15238
  <button kendoButton
15239
+ #adaptiveCancelBtn
15060
15240
  type="button"
15061
15241
  (click)="handleReject()"
15062
15242
  size="large"
15063
- class="k-time-cancel"
15064
15243
  [attr.title]="localization.get('cancelLabel')"
15065
15244
  [attr.aria-label]="localization.get('cancelLabel')"
15066
15245
  >
@@ -15068,10 +15247,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
15068
15247
  </button>
15069
15248
 
15070
15249
  <button kendoButton
15250
+ #adaptiveAcceptBtn
15071
15251
  type="button"
15072
15252
  (click)="handleActionSheetAccept()"
15073
15253
  size="large"
15074
- class="k-time-accept"
15075
15254
  themeColor="primary"
15076
15255
  [attr.title]="localization.get('acceptLabel')"
15077
15256
  [attr.aria-label]="localization.get('acceptLabel')"
@@ -15118,6 +15297,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
15118
15297
  [second]="localization.get('second')"
15119
15298
  [millisecond]="localization.get('millisecond')"
15120
15299
  [dayperiod]="localization.get('dayperiod')"
15300
+ [timeSelectorLabel]="localization.get('timeSelectorLabel')"
15121
15301
  >
15122
15302
  </kendo-timeselector-messages>
15123
15303
  </kendo-timeselector>
@@ -15218,6 +15398,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
15218
15398
  }], disabledClass: [{
15219
15399
  type: HostBinding,
15220
15400
  args: ['class.k-disabled']
15401
+ }], adaptiveAcceptBtnRef: [{
15402
+ type: ViewChild,
15403
+ args: ['adaptiveAcceptBtn', { static: false }]
15404
+ }], adaptiveCancelBtnRef: [{
15405
+ type: ViewChild,
15406
+ args: ['adaptiveCancelBtn', { static: false }]
15221
15407
  }] } });
15222
15408
 
15223
15409
  /**
@@ -15312,8 +15498,16 @@ class DateTimePickerMessages extends ComponentMessages {
15312
15498
  * 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
15499
  */
15314
15500
  adaptiveCloseButtonTitle;
15501
+ /**
15502
+ * The accessible label of the date and time selector container.
15503
+ */
15504
+ dateTimeSelectorLabel;
15505
+ /**
15506
+ * The accessible label of the time selector element.
15507
+ */
15508
+ timeSelectorLabel;
15315
15509
  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 });
15510
+ 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
15511
  }
15318
15512
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DateTimePickerMessages, decorators: [{
15319
15513
  type: Directive,
@@ -15364,6 +15558,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
15364
15558
  type: Input
15365
15559
  }], adaptiveCloseButtonTitle: [{
15366
15560
  type: Input
15561
+ }], dateTimeSelectorLabel: [{
15562
+ type: Input
15563
+ }], timeSelectorLabel: [{
15564
+ type: Input
15367
15565
  }] } });
15368
15566
 
15369
15567
  /**
@@ -16112,6 +16310,16 @@ class DateTimePickerComponent extends MultiTabStop {
16112
16310
  get isControlRequired() {
16113
16311
  return isControlRequired(this.formControl);
16114
16312
  }
16313
+ /**
16314
+ * @hidden
16315
+ */
16316
+ get ariaInvalidState() {
16317
+ const control = this.formControl;
16318
+ if (!control) {
16319
+ return null;
16320
+ }
16321
+ return control.invalid && (control.touched || control.dirty);
16322
+ }
16115
16323
  popupRef;
16116
16324
  _popupSettings = { animate: true };
16117
16325
  _value = null;
@@ -16175,6 +16383,7 @@ class DateTimePickerComponent extends MultiTabStop {
16175
16383
  ngAfterViewInit() {
16176
16384
  this.setComponentClasses();
16177
16385
  this.windowSize = this.adaptiveService.size;
16386
+ this.subscriptions.add(this.formControl?.statusChanges?.subscribe(() => this.cdr.markForCheck()));
16178
16387
  }
16179
16388
  ngOnChanges(changes) {
16180
16389
  if (isPresent(changes['min']) || isPresent(changes['max'])) {
@@ -16951,6 +17160,12 @@ class DateTimePickerComponent extends MultiTabStop {
16951
17160
 
16952
17161
  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"
16953
17162
  adaptiveCloseButtonTitle="Close"
17163
+
17164
+ i18n-dateTimeSelectorLabel="kendo.datetimepicker.dateTimeSelectorLabel|The accessible label of the date and time selector container"
17165
+ dateTimeSelectorLabel="Date and time selector"
17166
+
17167
+ i18n-timeSelectorLabel="kendo.datetimepicker.timeSelectorLabel|The accessible label of the time selector element"
17168
+ timeSelectorLabel="Time selector"
16954
17169
  >
16955
17170
  </ng-container>
16956
17171
 
@@ -16983,6 +17198,7 @@ class DateTimePickerComponent extends MultiTabStop {
16983
17198
  hasPopup="dialog"
16984
17199
  [inputAttributes]="inputAttributes"
16985
17200
  [isPopupOpen]="isOpen"
17201
+ [ariaInvalidState]="ariaInvalidState"
16986
17202
  (valueChange)="handleInputValueChange($event)"
16987
17203
  [kendoEventsOutsideAngular]="{
16988
17204
  keydown: handleKeyDown
@@ -16999,6 +17215,7 @@ class DateTimePickerComponent extends MultiTabStop {
16999
17215
  #toggleButton
17000
17216
  type="button"
17001
17217
  class="k-input-button k-button k-icon-button"
17218
+ [class.k-disabled]="disabled"
17002
17219
  [tabindex]="-1"
17003
17220
  [attr.title]="localization.get('toggle')"
17004
17221
  [attr.aria-label]="localization.get('toggle')"
@@ -17068,6 +17285,7 @@ class DateTimePickerComponent extends MultiTabStop {
17068
17285
  type="button"
17069
17286
  icon="check"
17070
17287
  [attr.title]="localization.get('adaptiveCloseButtonTitle')"
17288
+ [attr.aria-label]="localization.get('adaptiveCloseButtonTitle')"
17071
17289
  [svgIcon]="checkIcon"
17072
17290
  fillMode="flat"
17073
17291
  themeColor="primary"
@@ -17116,6 +17334,8 @@ class DateTimePickerComponent extends MultiTabStop {
17116
17334
  <div
17117
17335
  class="k-datetime-wrap k-{{activeTab}}-tab"
17118
17336
  [class.k-datetime-wrap-lg]="isAdaptive"
17337
+ role="group"
17338
+ [attr.aria-label]="localization.get('dateTimeSelectorLabel')"
17119
17339
  [kendoEventsOutsideAngular]="{
17120
17340
  mousedown: preventMouseDown,
17121
17341
  keydown: handleKeyDown
@@ -17211,6 +17431,7 @@ class DateTimePickerComponent extends MultiTabStop {
17211
17431
  [second]="localization.get('second')"
17212
17432
  [millisecond]="localization.get('millisecond')"
17213
17433
  [dayperiod]="localization.get('dayperiod')"
17434
+ [timeSelectorLabel]="localization.get('timeSelectorLabel')"
17214
17435
  >
17215
17436
  </kendo-timeselector-messages>
17216
17437
  </kendo-timeselector>
@@ -17261,7 +17482,7 @@ class DateTimePickerComponent extends MultiTabStop {
17261
17482
  }
17262
17483
  </div>
17263
17484
  </ng-template>
17264
- `, 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 });
17485
+ `, 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 });
17265
17486
  }
17266
17487
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DateTimePickerComponent, decorators: [{
17267
17488
  type: Component,
@@ -17349,6 +17570,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
17349
17570
 
17350
17571
  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"
17351
17572
  adaptiveCloseButtonTitle="Close"
17573
+
17574
+ i18n-dateTimeSelectorLabel="kendo.datetimepicker.dateTimeSelectorLabel|The accessible label of the date and time selector container"
17575
+ dateTimeSelectorLabel="Date and time selector"
17576
+
17577
+ i18n-timeSelectorLabel="kendo.datetimepicker.timeSelectorLabel|The accessible label of the time selector element"
17578
+ timeSelectorLabel="Time selector"
17352
17579
  >
17353
17580
  </ng-container>
17354
17581
 
@@ -17381,6 +17608,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
17381
17608
  hasPopup="dialog"
17382
17609
  [inputAttributes]="inputAttributes"
17383
17610
  [isPopupOpen]="isOpen"
17611
+ [ariaInvalidState]="ariaInvalidState"
17384
17612
  (valueChange)="handleInputValueChange($event)"
17385
17613
  [kendoEventsOutsideAngular]="{
17386
17614
  keydown: handleKeyDown
@@ -17397,6 +17625,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
17397
17625
  #toggleButton
17398
17626
  type="button"
17399
17627
  class="k-input-button k-button k-icon-button"
17628
+ [class.k-disabled]="disabled"
17400
17629
  [tabindex]="-1"
17401
17630
  [attr.title]="localization.get('toggle')"
17402
17631
  [attr.aria-label]="localization.get('toggle')"
@@ -17466,6 +17695,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
17466
17695
  type="button"
17467
17696
  icon="check"
17468
17697
  [attr.title]="localization.get('adaptiveCloseButtonTitle')"
17698
+ [attr.aria-label]="localization.get('adaptiveCloseButtonTitle')"
17469
17699
  [svgIcon]="checkIcon"
17470
17700
  fillMode="flat"
17471
17701
  themeColor="primary"
@@ -17514,6 +17744,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
17514
17744
  <div
17515
17745
  class="k-datetime-wrap k-{{activeTab}}-tab"
17516
17746
  [class.k-datetime-wrap-lg]="isAdaptive"
17747
+ role="group"
17748
+ [attr.aria-label]="localization.get('dateTimeSelectorLabel')"
17517
17749
  [kendoEventsOutsideAngular]="{
17518
17750
  mousedown: preventMouseDown,
17519
17751
  keydown: handleKeyDown
@@ -17609,6 +17841,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
17609
17841
  [second]="localization.get('second')"
17610
17842
  [millisecond]="localization.get('millisecond')"
17611
17843
  [dayperiod]="localization.get('dayperiod')"
17844
+ [timeSelectorLabel]="localization.get('timeSelectorLabel')"
17612
17845
  >
17613
17846
  </kendo-timeselector-messages>
17614
17847
  </kendo-timeselector>
@@ -19074,6 +19307,7 @@ class DateRangePopupComponent {
19074
19307
  type="button"
19075
19308
  icon="check"
19076
19309
  [attr.title]="localization.get('adaptiveCloseButtonTitle')"
19310
+ [attr.aria-label]="localization.get('adaptiveCloseButtonTitle')"
19077
19311
  [svgIcon]="checkIcon"
19078
19312
  fillMode="flat"
19079
19313
  themeColor="primary"
@@ -19236,6 +19470,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
19236
19470
  type="button"
19237
19471
  icon="check"
19238
19472
  [attr.title]="localization.get('adaptiveCloseButtonTitle')"
19473
+ [attr.aria-label]="localization.get('adaptiveCloseButtonTitle')"
19239
19474
  [svgIcon]="checkIcon"
19240
19475
  fillMode="flat"
19241
19476
  themeColor="primary"