@progress/kendo-angular-dateinputs 17.0.1 → 17.0.2-develop.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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"
@@ -767,7 +767,8 @@ export class DateInputComponent {
767
767
  */
768
768
  triggerChange() {
769
769
  const value = this.kendoDate.value;
770
- if (+value !== +this.value) {
770
+ const oneValuePresent = isPresent(value) !== isPresent(this.value);
771
+ if (+value !== +this.value || oneValuePresent) {
771
772
  this.value = cloneDate(value);
772
773
  this.notify();
773
774
  }
@@ -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: 1731430686,
13
- version: '17.0.1',
12
+ publishDate: 1731943998,
13
+ version: '17.0.2-develop.10',
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: 1731430686,
37
- version: '17.0.1',
36
+ publishDate: 1731943998,
37
+ version: '17.0.2-develop.10',
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"
@@ -9208,7 +9206,8 @@ class DateInputComponent {
9208
9206
  */
9209
9207
  triggerChange() {
9210
9208
  const value = this.kendoDate.value;
9211
- if (+value !== +this.value) {
9209
+ const oneValuePresent = isPresent(value) !== isPresent(this.value);
9210
+ if (+value !== +this.value || oneValuePresent) {
9212
9211
  this.value = cloneDate(value);
9213
9212
  this.notify();
9214
9213
  }
@@ -12332,15 +12331,11 @@ class TimeListComponent {
12332
12331
  disabled = false;
12333
12332
  value;
12334
12333
  isLast = false;
12334
+ isFirst = false;
12335
12335
  valueChange = new EventEmitter();
12336
12336
  tabOutLastPart = new EventEmitter();
12337
+ tabOutFirstPart = new EventEmitter();
12337
12338
  virtualization;
12338
- get roleAttribute() {
12339
- return 'listbox';
12340
- }
12341
- get ariaLabel() {
12342
- return this.localization.get(this.part?.type);
12343
- }
12344
12339
  get tabIndex() {
12345
12340
  return this.disabled ? undefined : 0;
12346
12341
  }
@@ -12351,6 +12346,12 @@ class TimeListComponent {
12351
12346
  get currentSelectedIndex() {
12352
12347
  return this.selectedIndex(this.value);
12353
12348
  }
12349
+ get roleAttribute() {
12350
+ return 'listbox';
12351
+ }
12352
+ get ariaLabel() {
12353
+ return this.localization.get(this.part?.type);
12354
+ }
12354
12355
  animateToIndex = true;
12355
12356
  isActive = false;
12356
12357
  skip = 0;
@@ -12531,6 +12532,10 @@ class TimeListComponent {
12531
12532
  e.preventDefault();
12532
12533
  this.tabOutLastPart.emit();
12533
12534
  }
12535
+ if (e.keyCode === Keys$1.Tab && e.shiftKey && this.isFirst) {
12536
+ e.preventDefault();
12537
+ this.tabOutFirstPart.emit();
12538
+ }
12534
12539
  const getter = getters[e.keyCode] || nil;
12535
12540
  const dataItem = getter(this.data, this.service.selectedIndex(this.value));
12536
12541
  if (dataItem) {
@@ -12550,8 +12555,10 @@ class TimeListComponent {
12550
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)));
12551
12556
  }
12552
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 });
12553
- 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: `
12554
12559
  <kendo-virtualization
12560
+ [attr.role]="roleAttribute"
12561
+ [attr.aria-label]="ariaLabel"
12555
12562
  [skip]="skip"
12556
12563
  [take]="total"
12557
12564
  [total]="total"
@@ -12560,7 +12567,7 @@ class TimeListComponent {
12560
12567
  [topOffset]="topOffset"
12561
12568
  [bottomOffset]="bottomOffset"
12562
12569
  class="k-time-container"
12563
- role="presentation"
12570
+ tabindex="-1"
12564
12571
  >
12565
12572
  <ul [ngStyle]="style" class="k-reset"
12566
12573
  [kendoEventsOutsideAngular]="{
@@ -12586,6 +12593,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
12586
12593
  selector: 'kendo-timelist',
12587
12594
  template: `
12588
12595
  <kendo-virtualization
12596
+ [attr.role]="roleAttribute"
12597
+ [attr.aria-label]="ariaLabel"
12589
12598
  [skip]="skip"
12590
12599
  [take]="total"
12591
12600
  [total]="total"
@@ -12594,7 +12603,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
12594
12603
  [topOffset]="topOffset"
12595
12604
  [bottomOffset]="bottomOffset"
12596
12605
  class="k-time-container"
12597
- role="presentation"
12606
+ tabindex="-1"
12598
12607
  >
12599
12608
  <ul [ngStyle]="style" class="k-reset"
12600
12609
  [kendoEventsOutsideAngular]="{
@@ -12630,19 +12639,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
12630
12639
  type: Input
12631
12640
  }], isLast: [{
12632
12641
  type: Input
12642
+ }], isFirst: [{
12643
+ type: Input
12633
12644
  }], valueChange: [{
12634
12645
  type: Output
12635
12646
  }], tabOutLastPart: [{
12636
12647
  type: Output
12648
+ }], tabOutFirstPart: [{
12649
+ type: Output
12637
12650
  }], virtualization: [{
12638
12651
  type: ViewChild,
12639
12652
  args: [VirtualizationComponent, { static: true }]
12640
- }], roleAttribute: [{
12641
- type: HostBinding,
12642
- args: ["attr.role"]
12643
- }], ariaLabel: [{
12644
- type: HostBinding,
12645
- args: ["attr.aria-label"]
12646
12653
  }], tabIndex: [{
12647
12654
  type: HostBinding,
12648
12655
  args: ["attr.tabindex"]
@@ -12956,6 +12963,7 @@ class TimeSelectorComponent {
12956
12963
  */
12957
12964
  valueReject = new EventEmitter();
12958
12965
  tabOutLastPart = new EventEmitter();
12966
+ tabOutFirstPart = new EventEmitter();
12959
12967
  tabOutNow = new EventEmitter();
12960
12968
  dateFormatParts;
12961
12969
  isActive = false;
@@ -13025,22 +13033,6 @@ class TimeSelectorComponent {
13025
13033
  this.init();
13026
13034
  this.bindEvents();
13027
13035
  }
13028
- ngAfterViewInit() {
13029
- this.subscriptions.add(fromEvent(this.timeListWrappers.first.nativeElement, 'keydown').subscribe((event) => {
13030
- const { keyCode, shiftKey } = event;
13031
- if (keyCode === Keys$1.Tab && shiftKey) {
13032
- event.preventDefault();
13033
- this.renderer.removeClass(this.timeListWrappers.first.nativeElement, 'k-focus');
13034
- this.now ? this.now.nativeElement.focus() : this.cancel.nativeElement.focus();
13035
- }
13036
- }));
13037
- this.subscriptions.add(fromEvent(this.timeListWrappers.last.nativeElement, 'keydown').subscribe((event) => {
13038
- const { keyCode, shiftKey } = event;
13039
- if (keyCode === Keys$1.Tab && !shiftKey) {
13040
- this.renderer.removeClass(this.timeListWrappers.last.nativeElement, 'k-focus');
13041
- }
13042
- }));
13043
- }
13044
13036
  /**
13045
13037
  * @hidden
13046
13038
  */
@@ -13163,7 +13155,12 @@ class TimeSelectorComponent {
13163
13155
  if (keyCode === Keys$1.Tab && !shiftKey && event.target !== this.now?.nativeElement) {
13164
13156
  event.preventDefault();
13165
13157
  if (document.activeElement === this.accept.nativeElement) {
13166
- 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
+ }
13167
13164
  }
13168
13165
  else {
13169
13166
  this.now ? this.now.nativeElement.focus() : this.timeLists.first.focus();
@@ -13256,7 +13253,7 @@ class TimeSelectorComponent {
13256
13253
  return listIdx;
13257
13254
  }
13258
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 });
13259
- 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: [
13260
13257
  LocalizationService,
13261
13258
  {
13262
13259
  provide: L10N_PREFIX,
@@ -13316,6 +13313,7 @@ class TimeSelectorComponent {
13316
13313
  <span class="k-title k-timeselector-title">{{intl.dateFieldName(part)}}</span>
13317
13314
  <kendo-timelist
13318
13315
  [isLast]="idx === dateFormatParts.length - 1"
13316
+ [isFirst]="idx === 0"
13319
13317
  [min]="min"
13320
13318
  [max]="max"
13321
13319
  [part]="part"
@@ -13323,6 +13321,7 @@ class TimeSelectorComponent {
13323
13321
  [disabled]="disabled"
13324
13322
  [(value)]="current"
13325
13323
  (tabOutLastPart)="tabOutLastPart.emit()"
13324
+ (tabOutFirstPart)="tabOutFirstPart.emit()"
13326
13325
  [kendoEventsOutsideAngular]="{
13327
13326
  focus: handleListFocus,
13328
13327
  blur: handleBlur
@@ -13370,7 +13369,7 @@ class TimeSelectorComponent {
13370
13369
  [disabled]="disabled"
13371
13370
  >{{localization.get('cancel')}}</button>
13372
13371
  </div>
13373
- `, 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 });
13374
13373
  }
13375
13374
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TimeSelectorComponent, decorators: [{
13376
13375
  type: Component,
@@ -13439,6 +13438,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
13439
13438
  <span class="k-title k-timeselector-title">{{intl.dateFieldName(part)}}</span>
13440
13439
  <kendo-timelist
13441
13440
  [isLast]="idx === dateFormatParts.length - 1"
13441
+ [isFirst]="idx === 0"
13442
13442
  [min]="min"
13443
13443
  [max]="max"
13444
13444
  [part]="part"
@@ -13446,6 +13446,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
13446
13446
  [disabled]="disabled"
13447
13447
  [(value)]="current"
13448
13448
  (tabOutLastPart)="tabOutLastPart.emit()"
13449
+ (tabOutFirstPart)="tabOutFirstPart.emit()"
13449
13450
  [kendoEventsOutsideAngular]="{
13450
13451
  focus: handleListFocus,
13451
13452
  blur: handleBlur
@@ -13545,6 +13546,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
13545
13546
  type: Output
13546
13547
  }], tabOutLastPart: [{
13547
13548
  type: Output
13549
+ }], tabOutFirstPart: [{
13550
+ type: Output
13548
13551
  }], tabOutNow: [{
13549
13552
  type: Output
13550
13553
  }] } });
@@ -14378,6 +14381,16 @@ class TimePickerComponent extends MultiTabStop {
14378
14381
  this.show = true;
14379
14382
  }
14380
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
+ }
14381
14394
  /**
14382
14395
  * @hidden
14383
14396
  */
@@ -14450,6 +14463,7 @@ class TimePickerComponent extends MultiTabStop {
14450
14463
  * @hidden
14451
14464
  */
14452
14465
  onTabOutLastPart() {
14466
+ this.renderer.removeClass(this.timeSelector.timeListWrappers.last.nativeElement, 'k-focus');
14453
14467
  if (this.isAdaptive) {
14454
14468
  this.cancelButton ? this.adaptiveCancelButton.focus() : this.adaptiveAcceptButton.focus();
14455
14469
  }
@@ -14457,6 +14471,18 @@ class TimePickerComponent extends MultiTabStop {
14457
14471
  this.timeSelector.accept.nativeElement.focus();
14458
14472
  }
14459
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
+ }
14460
14486
  toggleTimeSelector(show) {
14461
14487
  this.windowSize = windowSize();
14462
14488
  if (this.isAdaptive) {
@@ -14845,6 +14871,8 @@ class TimePickerComponent extends MultiTabStop {
14845
14871
  (valueChange)="handleChange($event)"
14846
14872
  (valueReject)="handleReject()"
14847
14873
  (tabOutLastPart)="onTabOutLastPart()"
14874
+ (tabOutFirstPart)="onTabOutFirstPart()"
14875
+ (tabOutNow)="onTabOutNow()"
14848
14876
  >
14849
14877
  <kendo-timeselector-messages
14850
14878
  [acceptLabel]="localization.get('acceptLabel')"
@@ -14862,7 +14890,7 @@ class TimePickerComponent extends MultiTabStop {
14862
14890
  </kendo-timeselector-messages>
14863
14891
  </kendo-timeselector>
14864
14892
  </ng-template>
14865
- `, 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 });
14866
14894
  }
14867
14895
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TimePickerComponent, decorators: [{
14868
14896
  type: Component,
@@ -15070,6 +15098,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
15070
15098
  (valueChange)="handleChange($event)"
15071
15099
  (valueReject)="handleReject()"
15072
15100
  (tabOutLastPart)="onTabOutLastPart()"
15101
+ (tabOutFirstPart)="onTabOutFirstPart()"
15102
+ (tabOutNow)="onTabOutNow()"
15073
15103
  >
15074
15104
  <kendo-timeselector-messages
15075
15105
  [acceptLabel]="localization.get('acceptLabel')"
@@ -15374,6 +15404,7 @@ const ACCEPT_BUTTON_SELECTOR = '.k-button.k-time-accept';
15374
15404
  const CANCEL_BUTTON_SELECOTR = '.k-button.k-time-cancel';
15375
15405
  const DATE_TAB_BUTTON_SELECTOR = '.k-button.k-group-start';
15376
15406
  const TIME_TAB_BUTTON_SELECTOR = '.k-button.k-group-end';
15407
+ const TODAY_BUTTON_SELECTOR = '.k-button.k-calendar-nav-today';
15377
15408
  /**
15378
15409
  * Represents the [Kendo UI DateTimePicker component for Angular]({% slug overview_datetimepicker %}).
15379
15410
  */
@@ -16034,6 +16065,14 @@ class DateTimePickerComponent extends MultiTabStop {
16034
16065
  return this.popupRef?.popup.instance.container.nativeElement.querySelector(TIME_TAB_BUTTON_SELECTOR);
16035
16066
  }
16036
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
+ }
16037
16076
  /**
16038
16077
  * @hidden
16039
16078
  */
@@ -16319,6 +16358,15 @@ class DateTimePickerComponent extends MultiTabStop {
16319
16358
  this.dateTabButton.focus();
16320
16359
  }
16321
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
+ }
16322
16370
  /**
16323
16371
  * @hidden
16324
16372
  */
@@ -16405,7 +16453,6 @@ class DateTimePickerComponent extends MultiTabStop {
16405
16453
  break;
16406
16454
  default: return;
16407
16455
  }
16408
- event.preventDefault();
16409
16456
  }
16410
16457
  /**
16411
16458
  * @hidden
@@ -16422,6 +16469,9 @@ class DateTimePickerComponent extends MultiTabStop {
16422
16469
  if (this.activeTab === 'date') {
16423
16470
  this.calendar.monthView.list.nativeElement.focus();
16424
16471
  }
16472
+ else {
16473
+ this.timeSelector.timeLists.last.focus();
16474
+ }
16425
16475
  }
16426
16476
  break;
16427
16477
  case this.cancelButtonElement:
@@ -16433,6 +16483,9 @@ class DateTimePickerComponent extends MultiTabStop {
16433
16483
  if (this.activeTab === 'date') {
16434
16484
  this.calendar.monthView.list.nativeElement.focus();
16435
16485
  }
16486
+ else {
16487
+ this.timeSelector.timeLists.last.focus();
16488
+ }
16436
16489
  }
16437
16490
  else {
16438
16491
  this.dateTabButton.focus();
@@ -16455,6 +16508,16 @@ class DateTimePickerComponent extends MultiTabStop {
16455
16508
  }
16456
16509
  }
16457
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;
16458
16521
  default:
16459
16522
  break;
16460
16523
  }
@@ -16649,9 +16712,17 @@ class DateTimePickerComponent extends MultiTabStop {
16649
16712
  if (this.calendar.type === 'infinite') {
16650
16713
  this.subscriptions.add(fromEvent(this.calendar.monthView.list.nativeElement, 'keydown').subscribe((event) => {
16651
16714
  const { keyCode, shiftKey } = event;
16652
- if (keyCode === Keys$1.Tab && !shiftKey && !this.cancelButton && !this.calendarValue) {
16715
+ if (keyCode === Keys$1.Tab && !shiftKey) {
16653
16716
  event.preventDefault();
16654
- 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
+ }
16655
16726
  }
16656
16727
  }));
16657
16728
  }
@@ -17013,8 +17084,11 @@ class DateTimePickerComponent extends MultiTabStop {
17013
17084
  [attr.title]="localization.get('timeTabLabel')"
17014
17085
  [attr.aria-label]="localization.get('timeTabLabel')"
17015
17086
  [kendoEventsOutsideAngular]="{
17016
- click: changeActiveTab.bind(this, 'time')
17087
+ click: changeActiveTab.bind(this, 'time'),
17088
+ 'keydown.tab': handleTab
17017
17089
  }"
17090
+ [scope]="this"
17091
+
17018
17092
  >
17019
17093
  {{localization.get('timeTab')}}
17020
17094
  </button>
@@ -17079,6 +17153,7 @@ class DateTimePickerComponent extends MultiTabStop {
17079
17153
  [isAdaptiveEnabled]="isAdaptiveModeEnabled"
17080
17154
  [isDateTimePicker]="true"
17081
17155
  (tabOutLastPart)="onTabOutLastPart()"
17156
+ (tabOutFirstPart)="onTabOutFirstPart()"
17082
17157
  (tabOutNow)="onTabOutNow()"
17083
17158
  >
17084
17159
  <kendo-timeselector-messages
@@ -17116,7 +17191,8 @@ class DateTimePickerComponent extends MultiTabStop {
17116
17191
  [disabled]="!calendarValue"
17117
17192
  [kendoEventsOutsideAngular]="{
17118
17193
  click: handleAccept,
17119
- 'keydown.tab': handleTab
17194
+ 'keydown.tab': handleTab,
17195
+ 'keydown.shift.tab': handleTab
17120
17196
  }"
17121
17197
  [scope]="this"
17122
17198
  >
@@ -17132,7 +17208,8 @@ class DateTimePickerComponent extends MultiTabStop {
17132
17208
  [attr.aria-label]="localization.get('cancelLabel')"
17133
17209
  [kendoEventsOutsideAngular]="{
17134
17210
  click: handleCancel,
17135
- 'keydown.tab': handleTab
17211
+ 'keydown.tab': handleTab,
17212
+ 'keydown.shift.tab': handleTab
17136
17213
  }"
17137
17214
  [scope]="this"
17138
17215
  >
@@ -17141,7 +17218,7 @@ class DateTimePickerComponent extends MultiTabStop {
17141
17218
  </div>
17142
17219
  </div>
17143
17220
  </ng-template>
17144
- `, 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 });
17145
17222
  }
17146
17223
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DateTimePickerComponent, decorators: [{
17147
17224
  type: Component,
@@ -17417,8 +17494,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
17417
17494
  [attr.title]="localization.get('timeTabLabel')"
17418
17495
  [attr.aria-label]="localization.get('timeTabLabel')"
17419
17496
  [kendoEventsOutsideAngular]="{
17420
- click: changeActiveTab.bind(this, 'time')
17497
+ click: changeActiveTab.bind(this, 'time'),
17498
+ 'keydown.tab': handleTab
17421
17499
  }"
17500
+ [scope]="this"
17501
+
17422
17502
  >
17423
17503
  {{localization.get('timeTab')}}
17424
17504
  </button>
@@ -17483,6 +17563,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
17483
17563
  [isAdaptiveEnabled]="isAdaptiveModeEnabled"
17484
17564
  [isDateTimePicker]="true"
17485
17565
  (tabOutLastPart)="onTabOutLastPart()"
17566
+ (tabOutFirstPart)="onTabOutFirstPart()"
17486
17567
  (tabOutNow)="onTabOutNow()"
17487
17568
  >
17488
17569
  <kendo-timeselector-messages
@@ -17520,7 +17601,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
17520
17601
  [disabled]="!calendarValue"
17521
17602
  [kendoEventsOutsideAngular]="{
17522
17603
  click: handleAccept,
17523
- 'keydown.tab': handleTab
17604
+ 'keydown.tab': handleTab,
17605
+ 'keydown.shift.tab': handleTab
17524
17606
  }"
17525
17607
  [scope]="this"
17526
17608
  >
@@ -17536,7 +17618,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
17536
17618
  [attr.aria-label]="localization.get('cancelLabel')"
17537
17619
  [kendoEventsOutsideAngular]="{
17538
17620
  click: handleCancel,
17539
- 'keydown.tab': handleTab
17621
+ 'keydown.tab': handleTab,
17622
+ 'keydown.shift.tab': handleTab
17540
17623
  }"
17541
17624
  [scope]="this"
17542
17625
  >
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@progress/kendo-angular-dateinputs",
3
- "version": "17.0.1",
3
+ "version": "17.0.2-develop.10",
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.1",
38
- "@progress/kendo-angular-common": "17.0.1",
39
- "@progress/kendo-angular-intl": "17.0.1",
40
- "@progress/kendo-angular-l10n": "17.0.1",
41
- "@progress/kendo-angular-icons": "17.0.1",
42
- "@progress/kendo-angular-popup": "17.0.1",
43
- "@progress/kendo-angular-navigation": "17.0.1",
37
+ "@progress/kendo-angular-buttons": "17.0.2-develop.10",
38
+ "@progress/kendo-angular-common": "17.0.2-develop.10",
39
+ "@progress/kendo-angular-intl": "17.0.2-develop.10",
40
+ "@progress/kendo-angular-l10n": "17.0.2-develop.10",
41
+ "@progress/kendo-angular-icons": "17.0.2-develop.10",
42
+ "@progress/kendo-angular-popup": "17.0.2-develop.10",
43
+ "@progress/kendo-angular-navigation": "17.0.2-develop.10",
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.1",
48
+ "@progress/kendo-angular-schematics": "17.0.2-develop.10",
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
  }