@progress/kendo-angular-dateinputs 17.0.2-develop.7 → 17.0.2-develop.9

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.
@@ -522,6 +522,7 @@ export declare class DateTimePickerComponent extends MultiTabStop implements OnI
522
522
  private get cancelButtonElement();
523
523
  private get dateTabButton();
524
524
  private get timeTabButton();
525
+ private get todayButton();
525
526
  /**
526
527
  * @hidden
527
528
  */
@@ -629,6 +630,10 @@ export declare class DateTimePickerComponent extends MultiTabStop implements OnI
629
630
  * @hidden
630
631
  */
631
632
  onTabOutLastPart(): void;
633
+ /**
634
+ * @hidden
635
+ */
636
+ onTabOutFirstPart(): void;
632
637
  /**
633
638
  * @hidden
634
639
  */
@@ -194,7 +194,6 @@ export class HeaderComponent {
194
194
  <button
195
195
  kendoButton
196
196
  class="k-calendar-nav-today"
197
- tabindex="-1"
198
197
  fillMode="flat"
199
198
  role="link"
200
199
  [size]="size"
@@ -281,7 +280,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
281
280
  <button
282
281
  kendoButton
283
282
  class="k-calendar-nav-today"
284
- tabindex="-1"
285
283
  fillMode="flat"
286
284
  role="link"
287
285
  [size]="size"
@@ -63,6 +63,7 @@ const ACCEPT_BUTTON_SELECTOR = '.k-button.k-time-accept';
63
63
  const CANCEL_BUTTON_SELECOTR = '.k-button.k-time-cancel';
64
64
  const DATE_TAB_BUTTON_SELECTOR = '.k-button.k-group-start';
65
65
  const TIME_TAB_BUTTON_SELECTOR = '.k-button.k-group-end';
66
+ const TODAY_BUTTON_SELECTOR = '.k-button.k-calendar-nav-today';
66
67
  /**
67
68
  * Represents the [Kendo UI DateTimePicker component for Angular]({% slug overview_datetimepicker %}).
68
69
  */
@@ -723,6 +724,14 @@ export class DateTimePickerComponent extends MultiTabStop {
723
724
  return this.popupRef?.popup.instance.container.nativeElement.querySelector(TIME_TAB_BUTTON_SELECTOR);
724
725
  }
725
726
  }
727
+ get todayButton() {
728
+ if (this.isAdaptive) {
729
+ return this.actionSheet.element.nativeElement.querySelector(TODAY_BUTTON_SELECTOR);
730
+ }
731
+ else {
732
+ return this.popupRef?.popup.instance.container.nativeElement.querySelector(TODAY_BUTTON_SELECTOR);
733
+ }
734
+ }
726
735
  /**
727
736
  * @hidden
728
737
  */
@@ -1008,6 +1017,15 @@ export class DateTimePickerComponent extends MultiTabStop {
1008
1017
  this.dateTabButton.focus();
1009
1018
  }
1010
1019
  }
1020
+ /**
1021
+ * @hidden
1022
+ */
1023
+ onTabOutFirstPart() {
1024
+ if (this.activeTab === 'time') {
1025
+ this.renderer.removeClass(this.timeSelector.timeListWrappers.first.nativeElement, 'k-focus');
1026
+ this.timeSelector.showNowButton ? this.timeSelector.now.nativeElement.focus() : this.timeTabButton.focus();
1027
+ }
1028
+ }
1011
1029
  /**
1012
1030
  * @hidden
1013
1031
  */
@@ -1094,7 +1112,6 @@ export class DateTimePickerComponent extends MultiTabStop {
1094
1112
  break;
1095
1113
  default: return;
1096
1114
  }
1097
- event.preventDefault();
1098
1115
  }
1099
1116
  /**
1100
1117
  * @hidden
@@ -1111,6 +1128,9 @@ export class DateTimePickerComponent extends MultiTabStop {
1111
1128
  if (this.activeTab === 'date') {
1112
1129
  this.calendar.monthView.list.nativeElement.focus();
1113
1130
  }
1131
+ else {
1132
+ this.timeSelector.timeLists.last.focus();
1133
+ }
1114
1134
  }
1115
1135
  break;
1116
1136
  case this.cancelButtonElement:
@@ -1122,6 +1142,9 @@ export class DateTimePickerComponent extends MultiTabStop {
1122
1142
  if (this.activeTab === 'date') {
1123
1143
  this.calendar.monthView.list.nativeElement.focus();
1124
1144
  }
1145
+ else {
1146
+ this.timeSelector.timeLists.last.focus();
1147
+ }
1125
1148
  }
1126
1149
  else {
1127
1150
  this.dateTabButton.focus();
@@ -1144,6 +1167,16 @@ export class DateTimePickerComponent extends MultiTabStop {
1144
1167
  }
1145
1168
  }
1146
1169
  break;
1170
+ case this.timeTabButton:
1171
+ if (this.activeTab === 'time') {
1172
+ this.timeSelector.showNowButton ?
1173
+ this.timeSelector.now.nativeElement.focus() :
1174
+ this.timeSelector.timeLists.first.focus();
1175
+ }
1176
+ else {
1177
+ this.todayButton.focus();
1178
+ }
1179
+ break;
1147
1180
  default:
1148
1181
  break;
1149
1182
  }
@@ -1338,9 +1371,17 @@ export class DateTimePickerComponent extends MultiTabStop {
1338
1371
  if (this.calendar.type === 'infinite') {
1339
1372
  this.subscriptions.add(fromEvent(this.calendar.monthView.list.nativeElement, 'keydown').subscribe((event) => {
1340
1373
  const { keyCode, shiftKey } = event;
1341
- if (keyCode === Keys.Tab && !shiftKey && !this.cancelButton && !this.calendarValue) {
1374
+ if (keyCode === Keys.Tab && !shiftKey) {
1342
1375
  event.preventDefault();
1343
- this.dateTabButton.focus();
1376
+ if (!this.calendarValue && !this.cancelButton) {
1377
+ this.dateTabButton.focus();
1378
+ }
1379
+ else if (this.calendarValue) {
1380
+ this.acceptButton.focus();
1381
+ }
1382
+ else if (this.cancelButton) {
1383
+ this.cancelButtonElement.focus();
1384
+ }
1344
1385
  }
1345
1386
  }));
1346
1387
  }
@@ -1702,8 +1743,11 @@ export class DateTimePickerComponent extends MultiTabStop {
1702
1743
  [attr.title]="localization.get('timeTabLabel')"
1703
1744
  [attr.aria-label]="localization.get('timeTabLabel')"
1704
1745
  [kendoEventsOutsideAngular]="{
1705
- click: changeActiveTab.bind(this, 'time')
1746
+ click: changeActiveTab.bind(this, 'time'),
1747
+ 'keydown.tab': handleTab
1706
1748
  }"
1749
+ [scope]="this"
1750
+
1707
1751
  >
1708
1752
  {{localization.get('timeTab')}}
1709
1753
  </button>
@@ -1768,6 +1812,7 @@ export class DateTimePickerComponent extends MultiTabStop {
1768
1812
  [isAdaptiveEnabled]="isAdaptiveModeEnabled"
1769
1813
  [isDateTimePicker]="true"
1770
1814
  (tabOutLastPart)="onTabOutLastPart()"
1815
+ (tabOutFirstPart)="onTabOutFirstPart()"
1771
1816
  (tabOutNow)="onTabOutNow()"
1772
1817
  >
1773
1818
  <kendo-timeselector-messages
@@ -1805,7 +1850,8 @@ export class DateTimePickerComponent extends MultiTabStop {
1805
1850
  [disabled]="!calendarValue"
1806
1851
  [kendoEventsOutsideAngular]="{
1807
1852
  click: handleAccept,
1808
- 'keydown.tab': handleTab
1853
+ 'keydown.tab': handleTab,
1854
+ 'keydown.shift.tab': handleTab
1809
1855
  }"
1810
1856
  [scope]="this"
1811
1857
  >
@@ -1821,7 +1867,8 @@ export class DateTimePickerComponent extends MultiTabStop {
1821
1867
  [attr.aria-label]="localization.get('cancelLabel')"
1822
1868
  [kendoEventsOutsideAngular]="{
1823
1869
  click: handleCancel,
1824
- 'keydown.tab': handleTab
1870
+ 'keydown.tab': handleTab,
1871
+ 'keydown.shift.tab': handleTab
1825
1872
  }"
1826
1873
  [scope]="this"
1827
1874
  >
@@ -1830,7 +1877,7 @@ export class DateTimePickerComponent extends MultiTabStop {
1830
1877
  </div>
1831
1878
  </div>
1832
1879
  </ng-template>
1833
- `, 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: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: ["title", "subtitle", "items", "cssClass", "animation", "expanded", "titleId"], outputs: ["expandedChange", "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", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], 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: ["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", "tabOutNow"], exportAs: ["kendo-timeselector"] }, { kind: "component", type: TimeSelectorCustomMessagesComponent, selector: "kendo-timeselector-messages" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1880
+ `, 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: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: ["title", "subtitle", "items", "cssClass", "animation", "expanded", "titleId"], outputs: ["expandedChange", "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", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], 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: ["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" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1834
1881
  }
1835
1882
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DateTimePickerComponent, decorators: [{
1836
1883
  type: Component,
@@ -2106,8 +2153,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2106
2153
  [attr.title]="localization.get('timeTabLabel')"
2107
2154
  [attr.aria-label]="localization.get('timeTabLabel')"
2108
2155
  [kendoEventsOutsideAngular]="{
2109
- click: changeActiveTab.bind(this, 'time')
2156
+ click: changeActiveTab.bind(this, 'time'),
2157
+ 'keydown.tab': handleTab
2110
2158
  }"
2159
+ [scope]="this"
2160
+
2111
2161
  >
2112
2162
  {{localization.get('timeTab')}}
2113
2163
  </button>
@@ -2172,6 +2222,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2172
2222
  [isAdaptiveEnabled]="isAdaptiveModeEnabled"
2173
2223
  [isDateTimePicker]="true"
2174
2224
  (tabOutLastPart)="onTabOutLastPart()"
2225
+ (tabOutFirstPart)="onTabOutFirstPart()"
2175
2226
  (tabOutNow)="onTabOutNow()"
2176
2227
  >
2177
2228
  <kendo-timeselector-messages
@@ -2209,7 +2260,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2209
2260
  [disabled]="!calendarValue"
2210
2261
  [kendoEventsOutsideAngular]="{
2211
2262
  click: handleAccept,
2212
- 'keydown.tab': handleTab
2263
+ 'keydown.tab': handleTab,
2264
+ 'keydown.shift.tab': handleTab
2213
2265
  }"
2214
2266
  [scope]="this"
2215
2267
  >
@@ -2225,7 +2277,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2225
2277
  [attr.aria-label]="localization.get('cancelLabel')"
2226
2278
  [kendoEventsOutsideAngular]="{
2227
2279
  click: handleCancel,
2228
- 'keydown.tab': handleTab
2280
+ 'keydown.tab': handleTab,
2281
+ 'keydown.shift.tab': handleTab
2229
2282
  }"
2230
2283
  [scope]="this"
2231
2284
  >
@@ -9,7 +9,7 @@ export const packageMetadata = {
9
9
  name: '@progress/kendo-angular-dateinputs',
10
10
  productName: 'Kendo UI for Angular',
11
11
  productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
12
- publishDate: 1731668645,
13
- version: '17.0.2-develop.7',
12
+ publishDate: 1731923376,
13
+ version: '17.0.2-develop.9',
14
14
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
15
15
  };
@@ -55,15 +55,11 @@ export class TimeListComponent {
55
55
  disabled = false;
56
56
  value;
57
57
  isLast = false;
58
+ isFirst = false;
58
59
  valueChange = new EventEmitter();
59
60
  tabOutLastPart = new EventEmitter();
61
+ tabOutFirstPart = new EventEmitter();
60
62
  virtualization;
61
- get roleAttribute() {
62
- return 'listbox';
63
- }
64
- get ariaLabel() {
65
- return this.localization.get(this.part?.type);
66
- }
67
63
  get tabIndex() {
68
64
  return this.disabled ? undefined : 0;
69
65
  }
@@ -74,6 +70,12 @@ export class TimeListComponent {
74
70
  get currentSelectedIndex() {
75
71
  return this.selectedIndex(this.value);
76
72
  }
73
+ get roleAttribute() {
74
+ return 'listbox';
75
+ }
76
+ get ariaLabel() {
77
+ return this.localization.get(this.part?.type);
78
+ }
77
79
  animateToIndex = true;
78
80
  isActive = false;
79
81
  skip = 0;
@@ -254,6 +256,10 @@ export class TimeListComponent {
254
256
  e.preventDefault();
255
257
  this.tabOutLastPart.emit();
256
258
  }
259
+ if (e.keyCode === Keys.Tab && e.shiftKey && this.isFirst) {
260
+ e.preventDefault();
261
+ this.tabOutFirstPart.emit();
262
+ }
257
263
  const getter = getters[e.keyCode] || nil;
258
264
  const dataItem = getter(this.data, this.service.selectedIndex(this.value));
259
265
  if (dataItem) {
@@ -273,8 +279,10 @@ export class TimeListComponent {
273
279
  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)));
274
280
  }
275
281
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TimeListComponent, deps: [{ token: i0.ElementRef }, { token: i0.Injector }, { token: i1.TimePickerDOMService }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i2.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
276
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TimeListComponent, isStandalone: true, selector: "kendo-timelist", inputs: { min: "min", max: "max", part: "part", step: "step", disabled: "disabled", value: "value", isLast: "isLast" }, outputs: { valueChange: "valueChange", tabOutLastPart: "tabOutLastPart" }, host: { properties: { "attr.role": "this.roleAttribute", "attr.aria-label": "this.ariaLabel", "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: `
282
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", 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: `
277
283
  <kendo-virtualization
284
+ [attr.role]="roleAttribute"
285
+ [attr.aria-label]="ariaLabel"
278
286
  [skip]="skip"
279
287
  [take]="total"
280
288
  [total]="total"
@@ -283,7 +291,7 @@ export class TimeListComponent {
283
291
  [topOffset]="topOffset"
284
292
  [bottomOffset]="bottomOffset"
285
293
  class="k-time-container"
286
- role="presentation"
294
+ tabindex="-1"
287
295
  >
288
296
  <ul [ngStyle]="style" class="k-reset"
289
297
  [kendoEventsOutsideAngular]="{
@@ -309,6 +317,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
309
317
  selector: 'kendo-timelist',
310
318
  template: `
311
319
  <kendo-virtualization
320
+ [attr.role]="roleAttribute"
321
+ [attr.aria-label]="ariaLabel"
312
322
  [skip]="skip"
313
323
  [take]="total"
314
324
  [total]="total"
@@ -317,7 +327,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
317
327
  [topOffset]="topOffset"
318
328
  [bottomOffset]="bottomOffset"
319
329
  class="k-time-container"
320
- role="presentation"
330
+ tabindex="-1"
321
331
  >
322
332
  <ul [ngStyle]="style" class="k-reset"
323
333
  [kendoEventsOutsideAngular]="{
@@ -353,19 +363,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
353
363
  type: Input
354
364
  }], isLast: [{
355
365
  type: Input
366
+ }], isFirst: [{
367
+ type: Input
356
368
  }], valueChange: [{
357
369
  type: Output
358
370
  }], tabOutLastPart: [{
359
371
  type: Output
372
+ }], tabOutFirstPart: [{
373
+ type: Output
360
374
  }], virtualization: [{
361
375
  type: ViewChild,
362
376
  args: [VirtualizationComponent, { static: true }]
363
- }], roleAttribute: [{
364
- type: HostBinding,
365
- args: ["attr.role"]
366
- }], ariaLabel: [{
367
- type: HostBinding,
368
- args: ["attr.aria-label"]
369
377
  }], tabIndex: [{
370
378
  type: HostBinding,
371
379
  args: ["attr.tabindex"]
@@ -780,6 +780,16 @@ export class TimePickerComponent extends MultiTabStop {
780
780
  this.show = true;
781
781
  }
782
782
  }
783
+ /**
784
+ * @hidden
785
+ */
786
+ onTabOutNow() {
787
+ if (!this.timeSelector.showNowButton) {
788
+ this.cancelButton ?
789
+ this.timeSelector.cancel.nativeElement.focus() :
790
+ this.timeSelector.accept.nativeElement.focus();
791
+ }
792
+ }
783
793
  /**
784
794
  * @hidden
785
795
  */
@@ -852,6 +862,7 @@ export class TimePickerComponent extends MultiTabStop {
852
862
  * @hidden
853
863
  */
854
864
  onTabOutLastPart() {
865
+ this.renderer.removeClass(this.timeSelector.timeListWrappers.last.nativeElement, 'k-focus');
855
866
  if (this.isAdaptive) {
856
867
  this.cancelButton ? this.adaptiveCancelButton.focus() : this.adaptiveAcceptButton.focus();
857
868
  }
@@ -859,6 +870,18 @@ export class TimePickerComponent extends MultiTabStop {
859
870
  this.timeSelector.accept.nativeElement.focus();
860
871
  }
861
872
  }
873
+ /**
874
+ * @hidden
875
+ */
876
+ onTabOutFirstPart() {
877
+ this.renderer.removeClass(this.timeSelector.timeListWrappers.first.nativeElement, 'k-focus');
878
+ if (this.timeSelector.showNowButton) {
879
+ this.timeSelector.now.nativeElement.focus();
880
+ }
881
+ else {
882
+ this.cancelButton ? this.timeSelector.cancel.nativeElement.focus() : this.timeSelector.accept.nativeElement.focus();
883
+ }
884
+ }
862
885
  toggleTimeSelector(show) {
863
886
  this.windowSize = windowSize();
864
887
  if (this.isAdaptive) {
@@ -1247,6 +1270,8 @@ export class TimePickerComponent extends MultiTabStop {
1247
1270
  (valueChange)="handleChange($event)"
1248
1271
  (valueReject)="handleReject()"
1249
1272
  (tabOutLastPart)="onTabOutLastPart()"
1273
+ (tabOutFirstPart)="onTabOutFirstPart()"
1274
+ (tabOutNow)="onTabOutNow()"
1250
1275
  >
1251
1276
  <kendo-timeselector-messages
1252
1277
  [acceptLabel]="localization.get('acceptLabel')"
@@ -1264,7 +1289,7 @@ export class TimePickerComponent extends MultiTabStop {
1264
1289
  </kendo-timeselector-messages>
1265
1290
  </kendo-timeselector>
1266
1291
  </ng-template>
1267
- `, 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: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { kind: "component", type: ActionSheetComponent, selector: "kendo-actionsheet", inputs: ["title", "subtitle", "items", "cssClass", "animation", "expanded", "titleId"], outputs: ["expandedChange", "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", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], 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", "tabOutNow"], exportAs: ["kendo-timeselector"] }, { kind: "component", type: TimeSelectorCustomMessagesComponent, selector: "kendo-timeselector-messages" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1292
+ `, 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: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { kind: "component", type: ActionSheetComponent, selector: "kendo-actionsheet", inputs: ["title", "subtitle", "items", "cssClass", "animation", "expanded", "titleId"], outputs: ["expandedChange", "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", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], 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 });
1268
1293
  }
1269
1294
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TimePickerComponent, decorators: [{
1270
1295
  type: Component,
@@ -1472,6 +1497,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1472
1497
  (valueChange)="handleChange($event)"
1473
1498
  (valueReject)="handleReject()"
1474
1499
  (tabOutLastPart)="onTabOutLastPart()"
1500
+ (tabOutFirstPart)="onTabOutFirstPart()"
1501
+ (tabOutNow)="onTabOutNow()"
1475
1502
  >
1476
1503
  <kendo-timeselector-messages
1477
1504
  [acceptLabel]="localization.get('acceptLabel')"
@@ -12,7 +12,6 @@ import { TimeListComponent } from './timelist.component';
12
12
  import { TimePickerDOMService } from './services/dom.service';
13
13
  import { getNow, hasChange, isInTimeRange, timeInRange } from '../util';
14
14
  import { generateGetters, generateSnappers, snapTime, valueMerger } from './util';
15
- import { fromEvent } from 'rxjs';
16
15
  import { PickerService } from '../common/picker.service';
17
16
  import { closest } from '../common/dom-queries';
18
17
  import { currentFocusTarget, isPresent } from '../common/utils';
@@ -139,6 +138,7 @@ export class TimeSelectorComponent {
139
138
  */
140
139
  valueReject = new EventEmitter();
141
140
  tabOutLastPart = new EventEmitter();
141
+ tabOutFirstPart = new EventEmitter();
142
142
  tabOutNow = new EventEmitter();
143
143
  dateFormatParts;
144
144
  isActive = false;
@@ -208,22 +208,6 @@ export class TimeSelectorComponent {
208
208
  this.init();
209
209
  this.bindEvents();
210
210
  }
211
- ngAfterViewInit() {
212
- this.subscriptions.add(fromEvent(this.timeListWrappers.first.nativeElement, 'keydown').subscribe((event) => {
213
- const { keyCode, shiftKey } = event;
214
- if (keyCode === Keys.Tab && shiftKey) {
215
- event.preventDefault();
216
- this.renderer.removeClass(this.timeListWrappers.first.nativeElement, 'k-focus');
217
- this.now ? this.now.nativeElement.focus() : this.cancel.nativeElement.focus();
218
- }
219
- }));
220
- this.subscriptions.add(fromEvent(this.timeListWrappers.last.nativeElement, 'keydown').subscribe((event) => {
221
- const { keyCode, shiftKey } = event;
222
- if (keyCode === Keys.Tab && !shiftKey) {
223
- this.renderer.removeClass(this.timeListWrappers.last.nativeElement, 'k-focus');
224
- }
225
- }));
226
- }
227
211
  /**
228
212
  * @hidden
229
213
  */
@@ -346,7 +330,12 @@ export class TimeSelectorComponent {
346
330
  if (keyCode === Keys.Tab && !shiftKey && event.target !== this.now?.nativeElement) {
347
331
  event.preventDefault();
348
332
  if (document.activeElement === this.accept.nativeElement) {
349
- this.cancel ? this.cancel.nativeElement.focus() : this.now?.nativeElement.focus();
333
+ if (this.cancel) {
334
+ this.cancel.nativeElement.focus();
335
+ }
336
+ else {
337
+ this.now ? this.now.nativeElement.focus() : this.timeLists.first.focus();
338
+ }
350
339
  }
351
340
  else {
352
341
  this.now ? this.now.nativeElement.focus() : this.timeLists.first.focus();
@@ -439,7 +428,7 @@ export class TimeSelectorComponent {
439
428
  return listIdx;
440
429
  }
441
430
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TimeSelectorComponent, deps: [{ token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i2.IntlService }, { token: i3.TimePickerDOMService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i4.PickerService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
442
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", 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", tabOutNow: "tabOutNow" }, host: { properties: { "class.k-disabled": "this.disabledClass" } }, providers: [
431
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", 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: [
443
432
  LocalizationService,
444
433
  {
445
434
  provide: L10N_PREFIX,
@@ -499,6 +488,7 @@ export class TimeSelectorComponent {
499
488
  <span class="k-title k-timeselector-title">{{intl.dateFieldName(part)}}</span>
500
489
  <kendo-timelist
501
490
  [isLast]="idx === dateFormatParts.length - 1"
491
+ [isFirst]="idx === 0"
502
492
  [min]="min"
503
493
  [max]="max"
504
494
  [part]="part"
@@ -506,6 +496,7 @@ export class TimeSelectorComponent {
506
496
  [disabled]="disabled"
507
497
  [(value)]="current"
508
498
  (tabOutLastPart)="tabOutLastPart.emit()"
499
+ (tabOutFirstPart)="tabOutFirstPart.emit()"
509
500
  [kendoEventsOutsideAngular]="{
510
501
  focus: handleListFocus,
511
502
  blur: handleBlur
@@ -553,7 +544,7 @@ export class TimeSelectorComponent {
553
544
  [disabled]="disabled"
554
545
  >{{localization.get('cancel')}}</button>
555
546
  </div>
556
- `, isInline: true, dependencies: [{ kind: "directive", type: TimeSelectorLocalizedMessagesDirective, selector: "[kendoTimeSelectorLocalizedMessages]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: TimeListComponent, selector: "kendo-timelist", inputs: ["min", "max", "part", "step", "disabled", "value", "isLast"], outputs: ["valueChange", "tabOutLastPart"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
547
+ `, isInline: true, dependencies: [{ kind: "directive", type: TimeSelectorLocalizedMessagesDirective, selector: "[kendoTimeSelectorLocalizedMessages]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: TimeListComponent, selector: "kendo-timelist", inputs: ["min", "max", "part", "step", "disabled", "value", "isLast", "isFirst"], outputs: ["valueChange", "tabOutLastPart", "tabOutFirstPart"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
557
548
  }
558
549
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TimeSelectorComponent, decorators: [{
559
550
  type: Component,
@@ -622,6 +613,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
622
613
  <span class="k-title k-timeselector-title">{{intl.dateFieldName(part)}}</span>
623
614
  <kendo-timelist
624
615
  [isLast]="idx === dateFormatParts.length - 1"
616
+ [isFirst]="idx === 0"
625
617
  [min]="min"
626
618
  [max]="max"
627
619
  [part]="part"
@@ -629,6 +621,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
629
621
  [disabled]="disabled"
630
622
  [(value)]="current"
631
623
  (tabOutLastPart)="tabOutLastPart.emit()"
624
+ (tabOutFirstPart)="tabOutFirstPart.emit()"
632
625
  [kendoEventsOutsideAngular]="{
633
626
  focus: handleListFocus,
634
627
  blur: handleBlur
@@ -728,6 +721,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
728
721
  type: Output
729
722
  }], tabOutLastPart: [{
730
723
  type: Output
724
+ }], tabOutFirstPart: [{
725
+ type: Output
731
726
  }], tabOutNow: [{
732
727
  type: Output
733
728
  }] } });
@@ -33,8 +33,8 @@ const packageMetadata = {
33
33
  name: '@progress/kendo-angular-dateinputs',
34
34
  productName: 'Kendo UI for Angular',
35
35
  productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
36
- publishDate: 1731668645,
37
- version: '17.0.2-develop.7',
36
+ publishDate: 1731923376,
37
+ version: '17.0.2-develop.9',
38
38
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
39
39
  };
40
40
 
@@ -2777,7 +2777,6 @@ class HeaderComponent {
2777
2777
  <button
2778
2778
  kendoButton
2779
2779
  class="k-calendar-nav-today"
2780
- tabindex="-1"
2781
2780
  fillMode="flat"
2782
2781
  role="link"
2783
2782
  [size]="size"
@@ -2864,7 +2863,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
2864
2863
  <button
2865
2864
  kendoButton
2866
2865
  class="k-calendar-nav-today"
2867
- tabindex="-1"
2868
2866
  fillMode="flat"
2869
2867
  role="link"
2870
2868
  [size]="size"
@@ -12333,15 +12331,11 @@ class TimeListComponent {
12333
12331
  disabled = false;
12334
12332
  value;
12335
12333
  isLast = false;
12334
+ isFirst = false;
12336
12335
  valueChange = new EventEmitter();
12337
12336
  tabOutLastPart = new EventEmitter();
12337
+ tabOutFirstPart = new EventEmitter();
12338
12338
  virtualization;
12339
- get roleAttribute() {
12340
- return 'listbox';
12341
- }
12342
- get ariaLabel() {
12343
- return this.localization.get(this.part?.type);
12344
- }
12345
12339
  get tabIndex() {
12346
12340
  return this.disabled ? undefined : 0;
12347
12341
  }
@@ -12352,6 +12346,12 @@ class TimeListComponent {
12352
12346
  get currentSelectedIndex() {
12353
12347
  return this.selectedIndex(this.value);
12354
12348
  }
12349
+ get roleAttribute() {
12350
+ return 'listbox';
12351
+ }
12352
+ get ariaLabel() {
12353
+ return this.localization.get(this.part?.type);
12354
+ }
12355
12355
  animateToIndex = true;
12356
12356
  isActive = false;
12357
12357
  skip = 0;
@@ -12532,6 +12532,10 @@ class TimeListComponent {
12532
12532
  e.preventDefault();
12533
12533
  this.tabOutLastPart.emit();
12534
12534
  }
12535
+ if (e.keyCode === Keys$1.Tab && e.shiftKey && this.isFirst) {
12536
+ e.preventDefault();
12537
+ this.tabOutFirstPart.emit();
12538
+ }
12535
12539
  const getter = getters[e.keyCode] || nil;
12536
12540
  const dataItem = getter(this.data, this.service.selectedIndex(this.value));
12537
12541
  if (dataItem) {
@@ -12551,8 +12555,10 @@ class TimeListComponent {
12551
12555
  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)));
12552
12556
  }
12553
12557
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", 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 });
12554
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TimeListComponent, isStandalone: true, selector: "kendo-timelist", inputs: { min: "min", max: "max", part: "part", step: "step", disabled: "disabled", value: "value", isLast: "isLast" }, outputs: { valueChange: "valueChange", tabOutLastPart: "tabOutLastPart" }, host: { properties: { "attr.role": "this.roleAttribute", "attr.aria-label": "this.ariaLabel", "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: `
12558
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", 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: `
12555
12559
  <kendo-virtualization
12560
+ [attr.role]="roleAttribute"
12561
+ [attr.aria-label]="ariaLabel"
12556
12562
  [skip]="skip"
12557
12563
  [take]="total"
12558
12564
  [total]="total"
@@ -12561,7 +12567,7 @@ class TimeListComponent {
12561
12567
  [topOffset]="topOffset"
12562
12568
  [bottomOffset]="bottomOffset"
12563
12569
  class="k-time-container"
12564
- role="presentation"
12570
+ tabindex="-1"
12565
12571
  >
12566
12572
  <ul [ngStyle]="style" class="k-reset"
12567
12573
  [kendoEventsOutsideAngular]="{
@@ -12587,6 +12593,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
12587
12593
  selector: 'kendo-timelist',
12588
12594
  template: `
12589
12595
  <kendo-virtualization
12596
+ [attr.role]="roleAttribute"
12597
+ [attr.aria-label]="ariaLabel"
12590
12598
  [skip]="skip"
12591
12599
  [take]="total"
12592
12600
  [total]="total"
@@ -12595,7 +12603,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
12595
12603
  [topOffset]="topOffset"
12596
12604
  [bottomOffset]="bottomOffset"
12597
12605
  class="k-time-container"
12598
- role="presentation"
12606
+ tabindex="-1"
12599
12607
  >
12600
12608
  <ul [ngStyle]="style" class="k-reset"
12601
12609
  [kendoEventsOutsideAngular]="{
@@ -12631,19 +12639,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
12631
12639
  type: Input
12632
12640
  }], isLast: [{
12633
12641
  type: Input
12642
+ }], isFirst: [{
12643
+ type: Input
12634
12644
  }], valueChange: [{
12635
12645
  type: Output
12636
12646
  }], tabOutLastPart: [{
12637
12647
  type: Output
12648
+ }], tabOutFirstPart: [{
12649
+ type: Output
12638
12650
  }], virtualization: [{
12639
12651
  type: ViewChild,
12640
12652
  args: [VirtualizationComponent, { static: true }]
12641
- }], roleAttribute: [{
12642
- type: HostBinding,
12643
- args: ["attr.role"]
12644
- }], ariaLabel: [{
12645
- type: HostBinding,
12646
- args: ["attr.aria-label"]
12647
12653
  }], tabIndex: [{
12648
12654
  type: HostBinding,
12649
12655
  args: ["attr.tabindex"]
@@ -12957,6 +12963,7 @@ class TimeSelectorComponent {
12957
12963
  */
12958
12964
  valueReject = new EventEmitter();
12959
12965
  tabOutLastPart = new EventEmitter();
12966
+ tabOutFirstPart = new EventEmitter();
12960
12967
  tabOutNow = new EventEmitter();
12961
12968
  dateFormatParts;
12962
12969
  isActive = false;
@@ -13026,22 +13033,6 @@ class TimeSelectorComponent {
13026
13033
  this.init();
13027
13034
  this.bindEvents();
13028
13035
  }
13029
- ngAfterViewInit() {
13030
- this.subscriptions.add(fromEvent(this.timeListWrappers.first.nativeElement, 'keydown').subscribe((event) => {
13031
- const { keyCode, shiftKey } = event;
13032
- if (keyCode === Keys$1.Tab && shiftKey) {
13033
- event.preventDefault();
13034
- this.renderer.removeClass(this.timeListWrappers.first.nativeElement, 'k-focus');
13035
- this.now ? this.now.nativeElement.focus() : this.cancel.nativeElement.focus();
13036
- }
13037
- }));
13038
- this.subscriptions.add(fromEvent(this.timeListWrappers.last.nativeElement, 'keydown').subscribe((event) => {
13039
- const { keyCode, shiftKey } = event;
13040
- if (keyCode === Keys$1.Tab && !shiftKey) {
13041
- this.renderer.removeClass(this.timeListWrappers.last.nativeElement, 'k-focus');
13042
- }
13043
- }));
13044
- }
13045
13036
  /**
13046
13037
  * @hidden
13047
13038
  */
@@ -13164,7 +13155,12 @@ class TimeSelectorComponent {
13164
13155
  if (keyCode === Keys$1.Tab && !shiftKey && event.target !== this.now?.nativeElement) {
13165
13156
  event.preventDefault();
13166
13157
  if (document.activeElement === this.accept.nativeElement) {
13167
- this.cancel ? this.cancel.nativeElement.focus() : this.now?.nativeElement.focus();
13158
+ if (this.cancel) {
13159
+ this.cancel.nativeElement.focus();
13160
+ }
13161
+ else {
13162
+ this.now ? this.now.nativeElement.focus() : this.timeLists.first.focus();
13163
+ }
13168
13164
  }
13169
13165
  else {
13170
13166
  this.now ? this.now.nativeElement.focus() : this.timeLists.first.focus();
@@ -13257,7 +13253,7 @@ class TimeSelectorComponent {
13257
13253
  return listIdx;
13258
13254
  }
13259
13255
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", 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 });
13260
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", 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", tabOutNow: "tabOutNow" }, host: { properties: { "class.k-disabled": "this.disabledClass" } }, providers: [
13256
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", 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: [
13261
13257
  LocalizationService,
13262
13258
  {
13263
13259
  provide: L10N_PREFIX,
@@ -13317,6 +13313,7 @@ class TimeSelectorComponent {
13317
13313
  <span class="k-title k-timeselector-title">{{intl.dateFieldName(part)}}</span>
13318
13314
  <kendo-timelist
13319
13315
  [isLast]="idx === dateFormatParts.length - 1"
13316
+ [isFirst]="idx === 0"
13320
13317
  [min]="min"
13321
13318
  [max]="max"
13322
13319
  [part]="part"
@@ -13324,6 +13321,7 @@ class TimeSelectorComponent {
13324
13321
  [disabled]="disabled"
13325
13322
  [(value)]="current"
13326
13323
  (tabOutLastPart)="tabOutLastPart.emit()"
13324
+ (tabOutFirstPart)="tabOutFirstPart.emit()"
13327
13325
  [kendoEventsOutsideAngular]="{
13328
13326
  focus: handleListFocus,
13329
13327
  blur: handleBlur
@@ -13371,7 +13369,7 @@ class TimeSelectorComponent {
13371
13369
  [disabled]="disabled"
13372
13370
  >{{localization.get('cancel')}}</button>
13373
13371
  </div>
13374
- `, isInline: true, dependencies: [{ kind: "directive", type: TimeSelectorLocalizedMessagesDirective, selector: "[kendoTimeSelectorLocalizedMessages]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: TimeListComponent, selector: "kendo-timelist", inputs: ["min", "max", "part", "step", "disabled", "value", "isLast"], outputs: ["valueChange", "tabOutLastPart"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
13372
+ `, isInline: true, dependencies: [{ kind: "directive", type: TimeSelectorLocalizedMessagesDirective, selector: "[kendoTimeSelectorLocalizedMessages]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: TimeListComponent, selector: "kendo-timelist", inputs: ["min", "max", "part", "step", "disabled", "value", "isLast", "isFirst"], outputs: ["valueChange", "tabOutLastPart", "tabOutFirstPart"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
13375
13373
  }
13376
13374
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TimeSelectorComponent, decorators: [{
13377
13375
  type: Component,
@@ -13440,6 +13438,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
13440
13438
  <span class="k-title k-timeselector-title">{{intl.dateFieldName(part)}}</span>
13441
13439
  <kendo-timelist
13442
13440
  [isLast]="idx === dateFormatParts.length - 1"
13441
+ [isFirst]="idx === 0"
13443
13442
  [min]="min"
13444
13443
  [max]="max"
13445
13444
  [part]="part"
@@ -13447,6 +13446,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
13447
13446
  [disabled]="disabled"
13448
13447
  [(value)]="current"
13449
13448
  (tabOutLastPart)="tabOutLastPart.emit()"
13449
+ (tabOutFirstPart)="tabOutFirstPart.emit()"
13450
13450
  [kendoEventsOutsideAngular]="{
13451
13451
  focus: handleListFocus,
13452
13452
  blur: handleBlur
@@ -13546,6 +13546,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
13546
13546
  type: Output
13547
13547
  }], tabOutLastPart: [{
13548
13548
  type: Output
13549
+ }], tabOutFirstPart: [{
13550
+ type: Output
13549
13551
  }], tabOutNow: [{
13550
13552
  type: Output
13551
13553
  }] } });
@@ -14379,6 +14381,16 @@ class TimePickerComponent extends MultiTabStop {
14379
14381
  this.show = true;
14380
14382
  }
14381
14383
  }
14384
+ /**
14385
+ * @hidden
14386
+ */
14387
+ onTabOutNow() {
14388
+ if (!this.timeSelector.showNowButton) {
14389
+ this.cancelButton ?
14390
+ this.timeSelector.cancel.nativeElement.focus() :
14391
+ this.timeSelector.accept.nativeElement.focus();
14392
+ }
14393
+ }
14382
14394
  /**
14383
14395
  * @hidden
14384
14396
  */
@@ -14451,6 +14463,7 @@ class TimePickerComponent extends MultiTabStop {
14451
14463
  * @hidden
14452
14464
  */
14453
14465
  onTabOutLastPart() {
14466
+ this.renderer.removeClass(this.timeSelector.timeListWrappers.last.nativeElement, 'k-focus');
14454
14467
  if (this.isAdaptive) {
14455
14468
  this.cancelButton ? this.adaptiveCancelButton.focus() : this.adaptiveAcceptButton.focus();
14456
14469
  }
@@ -14458,6 +14471,18 @@ class TimePickerComponent extends MultiTabStop {
14458
14471
  this.timeSelector.accept.nativeElement.focus();
14459
14472
  }
14460
14473
  }
14474
+ /**
14475
+ * @hidden
14476
+ */
14477
+ onTabOutFirstPart() {
14478
+ this.renderer.removeClass(this.timeSelector.timeListWrappers.first.nativeElement, 'k-focus');
14479
+ if (this.timeSelector.showNowButton) {
14480
+ this.timeSelector.now.nativeElement.focus();
14481
+ }
14482
+ else {
14483
+ this.cancelButton ? this.timeSelector.cancel.nativeElement.focus() : this.timeSelector.accept.nativeElement.focus();
14484
+ }
14485
+ }
14461
14486
  toggleTimeSelector(show) {
14462
14487
  this.windowSize = windowSize();
14463
14488
  if (this.isAdaptive) {
@@ -14846,6 +14871,8 @@ class TimePickerComponent extends MultiTabStop {
14846
14871
  (valueChange)="handleChange($event)"
14847
14872
  (valueReject)="handleReject()"
14848
14873
  (tabOutLastPart)="onTabOutLastPart()"
14874
+ (tabOutFirstPart)="onTabOutFirstPart()"
14875
+ (tabOutNow)="onTabOutNow()"
14849
14876
  >
14850
14877
  <kendo-timeselector-messages
14851
14878
  [acceptLabel]="localization.get('acceptLabel')"
@@ -14863,7 +14890,7 @@ class TimePickerComponent extends MultiTabStop {
14863
14890
  </kendo-timeselector-messages>
14864
14891
  </kendo-timeselector>
14865
14892
  </ng-template>
14866
- `, 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: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { kind: "component", type: ActionSheetComponent, selector: "kendo-actionsheet", inputs: ["title", "subtitle", "items", "cssClass", "animation", "expanded", "titleId"], outputs: ["expandedChange", "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", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], 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", "tabOutNow"], exportAs: ["kendo-timeselector"] }, { kind: "component", type: TimeSelectorCustomMessagesComponent, selector: "kendo-timeselector-messages" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
14893
+ `, 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: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { kind: "component", type: ActionSheetComponent, selector: "kendo-actionsheet", inputs: ["title", "subtitle", "items", "cssClass", "animation", "expanded", "titleId"], outputs: ["expandedChange", "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", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], 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 });
14867
14894
  }
14868
14895
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TimePickerComponent, decorators: [{
14869
14896
  type: Component,
@@ -15071,6 +15098,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
15071
15098
  (valueChange)="handleChange($event)"
15072
15099
  (valueReject)="handleReject()"
15073
15100
  (tabOutLastPart)="onTabOutLastPart()"
15101
+ (tabOutFirstPart)="onTabOutFirstPart()"
15102
+ (tabOutNow)="onTabOutNow()"
15074
15103
  >
15075
15104
  <kendo-timeselector-messages
15076
15105
  [acceptLabel]="localization.get('acceptLabel')"
@@ -15375,6 +15404,7 @@ const ACCEPT_BUTTON_SELECTOR = '.k-button.k-time-accept';
15375
15404
  const CANCEL_BUTTON_SELECOTR = '.k-button.k-time-cancel';
15376
15405
  const DATE_TAB_BUTTON_SELECTOR = '.k-button.k-group-start';
15377
15406
  const TIME_TAB_BUTTON_SELECTOR = '.k-button.k-group-end';
15407
+ const TODAY_BUTTON_SELECTOR = '.k-button.k-calendar-nav-today';
15378
15408
  /**
15379
15409
  * Represents the [Kendo UI DateTimePicker component for Angular]({% slug overview_datetimepicker %}).
15380
15410
  */
@@ -16035,6 +16065,14 @@ class DateTimePickerComponent extends MultiTabStop {
16035
16065
  return this.popupRef?.popup.instance.container.nativeElement.querySelector(TIME_TAB_BUTTON_SELECTOR);
16036
16066
  }
16037
16067
  }
16068
+ get todayButton() {
16069
+ if (this.isAdaptive) {
16070
+ return this.actionSheet.element.nativeElement.querySelector(TODAY_BUTTON_SELECTOR);
16071
+ }
16072
+ else {
16073
+ return this.popupRef?.popup.instance.container.nativeElement.querySelector(TODAY_BUTTON_SELECTOR);
16074
+ }
16075
+ }
16038
16076
  /**
16039
16077
  * @hidden
16040
16078
  */
@@ -16320,6 +16358,15 @@ class DateTimePickerComponent extends MultiTabStop {
16320
16358
  this.dateTabButton.focus();
16321
16359
  }
16322
16360
  }
16361
+ /**
16362
+ * @hidden
16363
+ */
16364
+ onTabOutFirstPart() {
16365
+ if (this.activeTab === 'time') {
16366
+ this.renderer.removeClass(this.timeSelector.timeListWrappers.first.nativeElement, 'k-focus');
16367
+ this.timeSelector.showNowButton ? this.timeSelector.now.nativeElement.focus() : this.timeTabButton.focus();
16368
+ }
16369
+ }
16323
16370
  /**
16324
16371
  * @hidden
16325
16372
  */
@@ -16406,7 +16453,6 @@ class DateTimePickerComponent extends MultiTabStop {
16406
16453
  break;
16407
16454
  default: return;
16408
16455
  }
16409
- event.preventDefault();
16410
16456
  }
16411
16457
  /**
16412
16458
  * @hidden
@@ -16423,6 +16469,9 @@ class DateTimePickerComponent extends MultiTabStop {
16423
16469
  if (this.activeTab === 'date') {
16424
16470
  this.calendar.monthView.list.nativeElement.focus();
16425
16471
  }
16472
+ else {
16473
+ this.timeSelector.timeLists.last.focus();
16474
+ }
16426
16475
  }
16427
16476
  break;
16428
16477
  case this.cancelButtonElement:
@@ -16434,6 +16483,9 @@ class DateTimePickerComponent extends MultiTabStop {
16434
16483
  if (this.activeTab === 'date') {
16435
16484
  this.calendar.monthView.list.nativeElement.focus();
16436
16485
  }
16486
+ else {
16487
+ this.timeSelector.timeLists.last.focus();
16488
+ }
16437
16489
  }
16438
16490
  else {
16439
16491
  this.dateTabButton.focus();
@@ -16456,6 +16508,16 @@ class DateTimePickerComponent extends MultiTabStop {
16456
16508
  }
16457
16509
  }
16458
16510
  break;
16511
+ case this.timeTabButton:
16512
+ if (this.activeTab === 'time') {
16513
+ this.timeSelector.showNowButton ?
16514
+ this.timeSelector.now.nativeElement.focus() :
16515
+ this.timeSelector.timeLists.first.focus();
16516
+ }
16517
+ else {
16518
+ this.todayButton.focus();
16519
+ }
16520
+ break;
16459
16521
  default:
16460
16522
  break;
16461
16523
  }
@@ -16650,9 +16712,17 @@ class DateTimePickerComponent extends MultiTabStop {
16650
16712
  if (this.calendar.type === 'infinite') {
16651
16713
  this.subscriptions.add(fromEvent(this.calendar.monthView.list.nativeElement, 'keydown').subscribe((event) => {
16652
16714
  const { keyCode, shiftKey } = event;
16653
- if (keyCode === Keys$1.Tab && !shiftKey && !this.cancelButton && !this.calendarValue) {
16715
+ if (keyCode === Keys$1.Tab && !shiftKey) {
16654
16716
  event.preventDefault();
16655
- this.dateTabButton.focus();
16717
+ if (!this.calendarValue && !this.cancelButton) {
16718
+ this.dateTabButton.focus();
16719
+ }
16720
+ else if (this.calendarValue) {
16721
+ this.acceptButton.focus();
16722
+ }
16723
+ else if (this.cancelButton) {
16724
+ this.cancelButtonElement.focus();
16725
+ }
16656
16726
  }
16657
16727
  }));
16658
16728
  }
@@ -17014,8 +17084,11 @@ class DateTimePickerComponent extends MultiTabStop {
17014
17084
  [attr.title]="localization.get('timeTabLabel')"
17015
17085
  [attr.aria-label]="localization.get('timeTabLabel')"
17016
17086
  [kendoEventsOutsideAngular]="{
17017
- click: changeActiveTab.bind(this, 'time')
17087
+ click: changeActiveTab.bind(this, 'time'),
17088
+ 'keydown.tab': handleTab
17018
17089
  }"
17090
+ [scope]="this"
17091
+
17019
17092
  >
17020
17093
  {{localization.get('timeTab')}}
17021
17094
  </button>
@@ -17080,6 +17153,7 @@ class DateTimePickerComponent extends MultiTabStop {
17080
17153
  [isAdaptiveEnabled]="isAdaptiveModeEnabled"
17081
17154
  [isDateTimePicker]="true"
17082
17155
  (tabOutLastPart)="onTabOutLastPart()"
17156
+ (tabOutFirstPart)="onTabOutFirstPart()"
17083
17157
  (tabOutNow)="onTabOutNow()"
17084
17158
  >
17085
17159
  <kendo-timeselector-messages
@@ -17117,7 +17191,8 @@ class DateTimePickerComponent extends MultiTabStop {
17117
17191
  [disabled]="!calendarValue"
17118
17192
  [kendoEventsOutsideAngular]="{
17119
17193
  click: handleAccept,
17120
- 'keydown.tab': handleTab
17194
+ 'keydown.tab': handleTab,
17195
+ 'keydown.shift.tab': handleTab
17121
17196
  }"
17122
17197
  [scope]="this"
17123
17198
  >
@@ -17133,7 +17208,8 @@ class DateTimePickerComponent extends MultiTabStop {
17133
17208
  [attr.aria-label]="localization.get('cancelLabel')"
17134
17209
  [kendoEventsOutsideAngular]="{
17135
17210
  click: handleCancel,
17136
- 'keydown.tab': handleTab
17211
+ 'keydown.tab': handleTab,
17212
+ 'keydown.shift.tab': handleTab
17137
17213
  }"
17138
17214
  [scope]="this"
17139
17215
  >
@@ -17142,7 +17218,7 @@ class DateTimePickerComponent extends MultiTabStop {
17142
17218
  </div>
17143
17219
  </div>
17144
17220
  </ng-template>
17145
- `, 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: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: ["title", "subtitle", "items", "cssClass", "animation", "expanded", "titleId"], outputs: ["expandedChange", "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", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], 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: ["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", "tabOutNow"], exportAs: ["kendo-timeselector"] }, { kind: "component", type: TimeSelectorCustomMessagesComponent, selector: "kendo-timeselector-messages" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
17221
+ `, 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: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: ["title", "subtitle", "items", "cssClass", "animation", "expanded", "titleId"], outputs: ["expandedChange", "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", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], 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: ["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" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
17146
17222
  }
17147
17223
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DateTimePickerComponent, decorators: [{
17148
17224
  type: Component,
@@ -17418,8 +17494,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
17418
17494
  [attr.title]="localization.get('timeTabLabel')"
17419
17495
  [attr.aria-label]="localization.get('timeTabLabel')"
17420
17496
  [kendoEventsOutsideAngular]="{
17421
- click: changeActiveTab.bind(this, 'time')
17497
+ click: changeActiveTab.bind(this, 'time'),
17498
+ 'keydown.tab': handleTab
17422
17499
  }"
17500
+ [scope]="this"
17501
+
17423
17502
  >
17424
17503
  {{localization.get('timeTab')}}
17425
17504
  </button>
@@ -17484,6 +17563,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
17484
17563
  [isAdaptiveEnabled]="isAdaptiveModeEnabled"
17485
17564
  [isDateTimePicker]="true"
17486
17565
  (tabOutLastPart)="onTabOutLastPart()"
17566
+ (tabOutFirstPart)="onTabOutFirstPart()"
17487
17567
  (tabOutNow)="onTabOutNow()"
17488
17568
  >
17489
17569
  <kendo-timeselector-messages
@@ -17521,7 +17601,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
17521
17601
  [disabled]="!calendarValue"
17522
17602
  [kendoEventsOutsideAngular]="{
17523
17603
  click: handleAccept,
17524
- 'keydown.tab': handleTab
17604
+ 'keydown.tab': handleTab,
17605
+ 'keydown.shift.tab': handleTab
17525
17606
  }"
17526
17607
  [scope]="this"
17527
17608
  >
@@ -17537,7 +17618,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
17537
17618
  [attr.aria-label]="localization.get('cancelLabel')"
17538
17619
  [kendoEventsOutsideAngular]="{
17539
17620
  click: handleCancel,
17540
- 'keydown.tab': handleTab
17621
+ 'keydown.tab': handleTab,
17622
+ 'keydown.shift.tab': handleTab
17541
17623
  }"
17542
17624
  [scope]="this"
17543
17625
  >
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@progress/kendo-angular-dateinputs",
3
- "version": "17.0.2-develop.7",
3
+ "version": "17.0.2-develop.9",
4
4
  "description": "Kendo UI for Angular Date Inputs Package - Everything you need to add date selection functionality to apps (DatePicker, TimePicker, DateInput, DateRangePicker, DateTimePicker, Calendar, and MultiViewCalendar).",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "author": "Progress",
@@ -34,18 +34,18 @@
34
34
  "@angular/forms": "16 - 18",
35
35
  "@angular/platform-browser": "16 - 18",
36
36
  "@progress/kendo-licensing": "^1.0.2",
37
- "@progress/kendo-angular-buttons": "17.0.2-develop.7",
38
- "@progress/kendo-angular-common": "17.0.2-develop.7",
39
- "@progress/kendo-angular-intl": "17.0.2-develop.7",
40
- "@progress/kendo-angular-l10n": "17.0.2-develop.7",
41
- "@progress/kendo-angular-icons": "17.0.2-develop.7",
42
- "@progress/kendo-angular-popup": "17.0.2-develop.7",
43
- "@progress/kendo-angular-navigation": "17.0.2-develop.7",
37
+ "@progress/kendo-angular-buttons": "17.0.2-develop.9",
38
+ "@progress/kendo-angular-common": "17.0.2-develop.9",
39
+ "@progress/kendo-angular-intl": "17.0.2-develop.9",
40
+ "@progress/kendo-angular-l10n": "17.0.2-develop.9",
41
+ "@progress/kendo-angular-icons": "17.0.2-develop.9",
42
+ "@progress/kendo-angular-popup": "17.0.2-develop.9",
43
+ "@progress/kendo-angular-navigation": "17.0.2-develop.9",
44
44
  "rxjs": "^6.5.3 || ^7.0.0"
45
45
  },
46
46
  "dependencies": {
47
47
  "tslib": "^2.3.1",
48
- "@progress/kendo-angular-schematics": "17.0.2-develop.7",
48
+ "@progress/kendo-angular-schematics": "17.0.2-develop.9",
49
49
  "@progress/kendo-common": "^1.0.1",
50
50
  "@progress/kendo-date-math": "^1.1.0",
51
51
  "@progress/kendo-dateinputs-common": "^0.4.0"
@@ -27,15 +27,17 @@ export declare class TimeListComponent implements OnChanges, OnInit, OnDestroy {
27
27
  disabled: boolean;
28
28
  value: Date;
29
29
  isLast: boolean;
30
+ isFirst: boolean;
30
31
  valueChange: EventEmitter<Date>;
31
32
  tabOutLastPart: EventEmitter<any>;
33
+ tabOutFirstPart: EventEmitter<any>;
32
34
  virtualization: VirtualizationComponent;
33
- get roleAttribute(): string;
34
- get ariaLabel(): string;
35
35
  get tabIndex(): number;
36
36
  componentClass: boolean;
37
37
  get isDayPeriod(): boolean;
38
38
  get currentSelectedIndex(): number;
39
+ get roleAttribute(): string;
40
+ get ariaLabel(): string;
39
41
  animateToIndex: boolean;
40
42
  isActive: boolean;
41
43
  skip: number;
@@ -90,5 +92,5 @@ export declare class TimeListComponent implements OnChanges, OnInit, OnDestroy {
90
92
  private handleKeyDown;
91
93
  private bindEvents;
92
94
  static ɵfac: i0.ɵɵFactoryDeclaration<TimeListComponent, never>;
93
- static ɵcmp: i0.ɵɵComponentDeclaration<TimeListComponent, "kendo-timelist", never, { "min": { "alias": "min"; "required": false; }; "max": { "alias": "max"; "required": false; }; "part": { "alias": "part"; "required": false; }; "step": { "alias": "step"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "value": { "alias": "value"; "required": false; }; "isLast": { "alias": "isLast"; "required": false; }; }, { "valueChange": "valueChange"; "tabOutLastPart": "tabOutLastPart"; }, never, never, true, never>;
95
+ static ɵcmp: i0.ɵɵComponentDeclaration<TimeListComponent, "kendo-timelist", never, { "min": { "alias": "min"; "required": false; }; "max": { "alias": "max"; "required": false; }; "part": { "alias": "part"; "required": false; }; "step": { "alias": "step"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "value": { "alias": "value"; "required": false; }; "isLast": { "alias": "isLast"; "required": false; }; "isFirst": { "alias": "isFirst"; "required": false; }; }, { "valueChange": "valueChange"; "tabOutLastPart": "tabOutLastPart"; "tabOutFirstPart": "tabOutFirstPart"; }, never, never, true, never>;
94
96
  }
@@ -495,6 +495,10 @@ export declare class TimePickerComponent extends MultiTabStop implements Control
495
495
  * @hidden
496
496
  */
497
497
  handleDateInputClick(): void;
498
+ /**
499
+ * @hidden
500
+ */
501
+ onTabOutNow(): void;
498
502
  /**
499
503
  * @hidden
500
504
  */
@@ -531,6 +535,10 @@ export declare class TimePickerComponent extends MultiTabStop implements Control
531
535
  * @hidden
532
536
  */
533
537
  onTabOutLastPart(): void;
538
+ /**
539
+ * @hidden
540
+ */
541
+ onTabOutFirstPart(): void;
534
542
  private toggleTimeSelector;
535
543
  private toggleActionSheet;
536
544
  private togglePopup;
@@ -2,7 +2,7 @@
2
2
  * Copyright © 2024 Progress Software Corporation. All rights reserved.
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
- import { ChangeDetectorRef, ElementRef, EventEmitter, NgZone, QueryList, OnInit, OnChanges, OnDestroy, Renderer2, AfterViewInit } from '@angular/core';
5
+ import { ChangeDetectorRef, ElementRef, EventEmitter, NgZone, QueryList, OnInit, OnChanges, OnDestroy, Renderer2 } from '@angular/core';
6
6
  import { LocalizationService } from '@progress/kendo-angular-l10n';
7
7
  import { IntlService } from '@progress/kendo-angular-intl';
8
8
  import { TimeListComponent } from './timelist.component';
@@ -15,7 +15,7 @@ import * as i0 from "@angular/core";
15
15
  *
16
16
  * Represents the Kendo UI TimeSelector component for Angular.
17
17
  */
18
- export declare class TimeSelectorComponent implements OnChanges, OnInit, OnDestroy, AfterViewInit {
18
+ export declare class TimeSelectorComponent implements OnChanges, OnInit, OnDestroy {
19
19
  localization: LocalizationService;
20
20
  private cdr;
21
21
  element: ElementRef;
@@ -106,6 +106,7 @@ export declare class TimeSelectorComponent implements OnChanges, OnInit, OnDestr
106
106
  */
107
107
  valueReject: EventEmitter<any>;
108
108
  tabOutLastPart: EventEmitter<any>;
109
+ tabOutFirstPart: EventEmitter<any>;
109
110
  tabOutNow: EventEmitter<any>;
110
111
  dateFormatParts: any[];
111
112
  isActive: boolean;
@@ -126,7 +127,6 @@ export declare class TimeSelectorComponent implements OnChanges, OnInit, OnDestr
126
127
  * @hidden
127
128
  */
128
129
  ngOnInit(): void;
129
- ngAfterViewInit(): void;
130
130
  /**
131
131
  * @hidden
132
132
  */
@@ -197,5 +197,5 @@ export declare class TimeSelectorComponent implements OnChanges, OnInit, OnDestr
197
197
  private emitFocus;
198
198
  private listIndex;
199
199
  static ɵfac: i0.ɵɵFactoryDeclaration<TimeSelectorComponent, [null, null, null, null, null, null, null, { optional: true; }]>;
200
- static ɵcmp: i0.ɵɵComponentDeclaration<TimeSelectorComponent, "kendo-timeselector", ["kendo-timeselector"], { "format": { "alias": "format"; "required": false; }; "min": { "alias": "min"; "required": false; }; "max": { "alias": "max"; "required": false; }; "cancelButton": { "alias": "cancelButton"; "required": false; }; "setButton": { "alias": "setButton"; "required": false; }; "nowButton": { "alias": "nowButton"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "isAdaptiveEnabled": { "alias": "isAdaptiveEnabled"; "required": false; }; "isDateTimePicker": { "alias": "isDateTimePicker"; "required": false; }; "steps": { "alias": "steps"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, { "valueChange": "valueChange"; "valueReject": "valueReject"; "tabOutLastPart": "tabOutLastPart"; "tabOutNow": "tabOutNow"; }, never, never, true, never>;
200
+ static ɵcmp: i0.ɵɵComponentDeclaration<TimeSelectorComponent, "kendo-timeselector", ["kendo-timeselector"], { "format": { "alias": "format"; "required": false; }; "min": { "alias": "min"; "required": false; }; "max": { "alias": "max"; "required": false; }; "cancelButton": { "alias": "cancelButton"; "required": false; }; "setButton": { "alias": "setButton"; "required": false; }; "nowButton": { "alias": "nowButton"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "isAdaptiveEnabled": { "alias": "isAdaptiveEnabled"; "required": false; }; "isDateTimePicker": { "alias": "isDateTimePicker"; "required": false; }; "steps": { "alias": "steps"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, { "valueChange": "valueChange"; "valueReject": "valueReject"; "tabOutLastPart": "tabOutLastPart"; "tabOutFirstPart": "tabOutFirstPart"; "tabOutNow": "tabOutNow"; }, never, never, true, never>;
201
201
  }