@progress/kendo-angular-dateinputs 11.4.0-develop.7 → 11.4.0-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.
Files changed (42) hide show
  1. package/calendar/calendar.component.d.ts +18 -1
  2. package/common/adaptive.module.d.ts +18 -0
  3. package/datepicker/datepicker.component.d.ts +57 -6
  4. package/datepicker/datepicker.module.d.ts +2 -1
  5. package/daterange/date-range-popup.component.d.ts +58 -7
  6. package/daterange/date-range-selection.directive.d.ts +12 -2
  7. package/daterange/date-range.module.d.ts +9 -6
  8. package/daterange/localization/daterange-popup-custom-messages.component.d.ts +17 -0
  9. package/daterange/localization/daterange-popup-localized-messages.directive.d.ts +16 -0
  10. package/daterange/localization/messages.d.ts +29 -0
  11. package/datetimepicker/datetimepicker.component.d.ts +58 -5
  12. package/datetimepicker/datetimepicker.module.d.ts +2 -1
  13. package/esm2020/calendar/calendar.component.mjs +34 -2
  14. package/esm2020/calendar/multiview-calendar.component.mjs +2 -1
  15. package/esm2020/common/adaptive.module.mjs +41 -0
  16. package/esm2020/datepicker/datepicker.component.mjs +271 -48
  17. package/esm2020/datepicker/datepicker.module.mjs +7 -3
  18. package/esm2020/daterange/date-range-popup.component.mjs +320 -17
  19. package/esm2020/daterange/date-range-selection.directive.mjs +27 -12
  20. package/esm2020/daterange/date-range.component.mjs +1 -1
  21. package/esm2020/daterange/date-range.module.mjs +16 -5
  22. package/esm2020/daterange/localization/daterange-popup-custom-messages.component.mjs +41 -0
  23. package/esm2020/daterange/localization/daterange-popup-localized-messages.directive.mjs +37 -0
  24. package/esm2020/daterange/localization/messages.mjs +29 -0
  25. package/esm2020/datetimepicker/datetimepicker.component.mjs +306 -49
  26. package/esm2020/datetimepicker/datetimepicker.module.mjs +7 -3
  27. package/esm2020/index.mjs +3 -0
  28. package/esm2020/package-metadata.mjs +2 -2
  29. package/esm2020/timepicker/services/dom.service.mjs +33 -7
  30. package/esm2020/timepicker/timepicker.component.mjs +279 -33
  31. package/esm2020/timepicker/timepicker.module.mjs +5 -2
  32. package/esm2020/timepicker/timeselector.component.mjs +7 -1
  33. package/esm2020/util.mjs +18 -0
  34. package/fesm2015/progress-kendo-angular-dateinputs.mjs +1417 -175
  35. package/fesm2020/progress-kendo-angular-dateinputs.mjs +1417 -175
  36. package/index.d.ts +4 -0
  37. package/package.json +11 -9
  38. package/timepicker/services/dom.service.d.ts +3 -0
  39. package/timepicker/timepicker.component.d.ts +52 -5
  40. package/timepicker/timepicker.module.d.ts +2 -1
  41. package/timepicker/timeselector.component.d.ts +7 -2
  42. package/util.d.ts +12 -0
@@ -8,7 +8,7 @@ import { NG_VALUE_ACCESSOR, NG_VALIDATORS, NgControl } from '@angular/forms';
8
8
  import * as i1$1 from '@progress/kendo-angular-l10n';
9
9
  import { ComponentMessages, LocalizationService, L10N_PREFIX, RTL } from '@progress/kendo-angular-l10n';
10
10
  import { cloneDate, addDays, getDate, isEqual, addDecades, addCenturies, firstDecadeOfCentury, lastDecadeOfCentury, firstYearOfDecade, createDate, lastYearOfDecade, lastMonthOfYear, lastDayOfMonth, durationInCenturies, addYears, durationInDecades, addWeeks, addMonths, firstDayOfMonth, dayOfWeek, durationInMonths, firstMonthOfYear, durationInYears, weekInYear } from '@progress/kendo-date-math';
11
- import * as i6 from '@progress/kendo-angular-common';
11
+ import * as i8 from '@progress/kendo-angular-common';
12
12
  import { isDocumentAvailable, guid, Keys as Keys$1, hasObservers, KendoInput, EventsModule, ResizeSensorModule } from '@progress/kendo-angular-common';
13
13
  import { validatePackage } from '@progress/kendo-licensing';
14
14
  import * as i1 from '@progress/kendo-angular-intl';
@@ -16,15 +16,18 @@ import { IntlModule } from '@progress/kendo-angular-intl';
16
16
  import { Subject, Subscription, ReplaySubject, Observable, combineLatest, of, interval, animationFrameScheduler, fromEvent, EMPTY, from, BehaviorSubject, merge } from 'rxjs';
17
17
  import * as i7 from '@angular/common';
18
18
  import { CommonModule } from '@angular/common';
19
- import { chevronRightIcon, chevronLeftIcon, caretAltUpIcon, caretAltDownIcon, calendarIcon, clockIcon } from '@progress/kendo-svg-icons';
20
- import * as i5 from '@progress/kendo-angular-buttons';
19
+ import { chevronRightIcon, chevronLeftIcon, caretAltUpIcon, caretAltDownIcon, calendarIcon, xIcon, clockIcon } from '@progress/kendo-svg-icons';
20
+ import * as i10 from '@progress/kendo-angular-buttons';
21
21
  import { ButtonModule } from '@progress/kendo-angular-buttons';
22
22
  import { map, scan, takeWhile, debounceTime, tap, filter } from 'rxjs/operators';
23
23
  import * as i7$1 from '@progress/kendo-angular-icons';
24
24
  import { IconsModule } from '@progress/kendo-angular-icons';
25
25
  import * as i1$2 from '@progress/kendo-angular-popup';
26
26
  import { PopupModule } from '@progress/kendo-angular-popup';
27
+ import * as i9 from '@progress/kendo-angular-navigation';
28
+ import { NavigationModule } from '@progress/kendo-angular-navigation';
27
29
  import { touchEnabled } from '@progress/kendo-common';
30
+ import { TextBoxModule } from '@progress/kendo-angular-inputs';
28
31
 
29
32
  /**
30
33
  * @hidden
@@ -33,8 +36,8 @@ const packageMetadata = {
33
36
  name: '@progress/kendo-angular-dateinputs',
34
37
  productName: 'Kendo UI for Angular',
35
38
  productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
36
- publishDate: 1678790166,
37
- version: '11.4.0-develop.7',
39
+ publishDate: 1678800266,
40
+ version: '11.4.0-develop.9',
38
41
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
39
42
  };
40
43
 
@@ -548,6 +551,23 @@ const DEFAULT_SIZE = 'medium';
548
551
  * @hidden
549
552
  */
550
553
  const DEFAULT_FILL_MODE = 'solid';
554
+ /**
555
+ * @hidden
556
+ */
557
+ const windowSize = () => {
558
+ if (!isDocumentAvailable()) {
559
+ return;
560
+ }
561
+ if (window.innerWidth > 768) {
562
+ return 'large';
563
+ }
564
+ else if (window.innerWidth > 500) {
565
+ return 'medium';
566
+ }
567
+ else {
568
+ return 'small';
569
+ }
570
+ };
551
571
 
552
572
  const EMPTY_DATA$3 = [[]];
553
573
  const CELLS_LENGTH$3 = 4;
@@ -1781,7 +1801,7 @@ ViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version:
1781
1801
  </td>
1782
1802
  </ng-container>
1783
1803
  </tr>
1784
- `, isInline: true, directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: KForOf, selector: "[kFor][kForOf]", inputs: ["kForOf", "kForTrackBy", "kForTemplate"] }, { type: i6.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
1804
+ `, isInline: true, directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: KForOf, selector: "[kFor][kForOf]", inputs: ["kForOf", "kForTrackBy", "kForTemplate"] }, { type: i8.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
1785
1805
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ViewComponent, decorators: [{
1786
1806
  type: Component,
1787
1807
  args: [{
@@ -2571,7 +2591,7 @@ HeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", versio
2571
2591
  >
2572
2592
  </button>
2573
2593
  </span>
2574
- `, isInline: true, components: [{ type: i5.Button, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }], directives: [{ type: i6.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
2594
+ `, isInline: true, components: [{ type: i10.Button, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }], directives: [{ type: i8.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
2575
2595
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: HeaderComponent, decorators: [{
2576
2596
  type: Component,
2577
2597
  args: [{
@@ -3706,7 +3726,8 @@ class MultiViewCalendarComponent {
3706
3726
  if (!this.element) {
3707
3727
  return;
3708
3728
  }
3709
- this.element.nativeElement.querySelector('.k-calendar-view').focus();
3729
+ // Prevent the content from auto-scrolling when daterange is in adaptive mode
3730
+ this.element.nativeElement.querySelector('.k-calendar-view').focus({ preventScroll: true });
3710
3731
  }
3711
3732
  /**
3712
3733
  * Blurs the Calendar component.
@@ -4606,7 +4627,7 @@ class VirtualizationComponent {
4606
4627
  return indexOffset < this.containerScrollPosition ? ScrollDirection.Backward : ScrollDirection.Forward;
4607
4628
  }
4608
4629
  }
4609
- VirtualizationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: VirtualizationComponent, deps: [{ token: SCROLLER_FACTORY_TOKEN }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i6.ScrollbarWidthService }], target: i0.ɵɵFactoryTarget.Component });
4630
+ VirtualizationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: VirtualizationComponent, deps: [{ token: SCROLLER_FACTORY_TOKEN }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i8.ScrollbarWidthService }], target: i0.ɵɵFactoryTarget.Component });
4610
4631
  VirtualizationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: VirtualizationComponent, selector: "kendo-virtualization", inputs: { direction: "direction", itemHeight: "itemHeight", itemWidth: "itemWidth", topOffset: "topOffset", bottomOffset: "bottomOffset", maxScrollDifference: "maxScrollDifference", scrollOffsetSize: "scrollOffsetSize", scrollDuration: "scrollDuration", skip: "skip", take: "take", total: "total" }, outputs: { activeIndexChange: "activeIndexChange", pageChange: "pageChange", scrollChange: "scrollChange" }, host: { properties: { "class.k-flex": "this.wrapperClasses", "class.k-content": "this.wrapperClasses", "class.k-scrollable": "this.wrapperClasses", "class.k-scrollable-horizontal": "this.horizontalClass" } }, providers: [{
4611
4632
  provide: SCROLLER_FACTORY_TOKEN,
4612
4633
  useValue: DEFAULT_SCROLLER_FACTORY
@@ -4639,7 +4660,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
4639
4660
  return [{ type: undefined, decorators: [{
4640
4661
  type: Inject,
4641
4662
  args: [SCROLLER_FACTORY_TOKEN]
4642
- }] }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i6.ScrollbarWidthService }];
4663
+ }] }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i8.ScrollbarWidthService }];
4643
4664
  }, propDecorators: { direction: [{
4644
4665
  type: Input
4645
4666
  }], itemHeight: [{
@@ -4971,7 +4992,7 @@ NavigationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
4971
4992
  </li>
4972
4993
  </ul>
4973
4994
  </kendo-virtualization>
4974
- `, isInline: true, components: [{ type: VirtualizationComponent, selector: "kendo-virtualization", inputs: ["direction", "itemHeight", "itemWidth", "topOffset", "bottomOffset", "maxScrollDifference", "scrollOffsetSize", "scrollDuration", "skip", "take", "total"], outputs: ["activeIndexChange", "pageChange", "scrollChange"] }], directives: [{ type: i6.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { type: KForOf, selector: "[kFor][kForOf]", inputs: ["kForOf", "kForTrackBy", "kForTemplate"] }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
4995
+ `, isInline: true, components: [{ type: VirtualizationComponent, selector: "kendo-virtualization", inputs: ["direction", "itemHeight", "itemWidth", "topOffset", "bottomOffset", "maxScrollDifference", "scrollOffsetSize", "scrollDuration", "skip", "take", "total"], outputs: ["activeIndexChange", "pageChange", "scrollChange"] }], directives: [{ type: i8.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { type: KForOf, selector: "[kFor][kForOf]", inputs: ["kForOf", "kForTrackBy", "kForTemplate"] }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
4975
4996
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: NavigationComponent, decorators: [{
4976
4997
  type: Component,
4977
4998
  args: [{
@@ -5758,6 +5779,7 @@ class CalendarComponent {
5758
5779
  * ([more information and example]({% slug overview_calendar %}#toc-events)).
5759
5780
  */
5760
5781
  this.valueChange = new EventEmitter();
5782
+ this._size = DEFAULT_SIZE;
5761
5783
  this.isActive = false;
5762
5784
  this.cellUID = guid();
5763
5785
  this.selectedDates = [];
@@ -5994,6 +6016,31 @@ class CalendarComponent {
5994
6016
  get navigationItemTemplateRef() {
5995
6017
  return this._navigationItemTemplateRef || this.navigationItemTemplate;
5996
6018
  }
6019
+ /**
6020
+ * @hidden
6021
+ *
6022
+ * TODO: Make visible when true sizing of all calendar elements is implemented
6023
+ * Sets the size of the component.
6024
+ *
6025
+ * The possible values are:
6026
+ * * `small`
6027
+ * * `medium` (Default)
6028
+ * * `large`
6029
+ * * `none`
6030
+ *
6031
+ */
6032
+ set size(size) {
6033
+ const element = this.type === 'infinite' ? this.element : this.multiViewCalendar.element;
6034
+ this.renderer.removeClass(element.nativeElement, getSizeClass('calendar', this.size));
6035
+ const newSize = size ? size : DEFAULT_SIZE;
6036
+ if (newSize !== 'none') {
6037
+ this.renderer.addClass(element.nativeElement, getSizeClass('calendar', newSize));
6038
+ }
6039
+ this._size = newSize;
6040
+ }
6041
+ get size() {
6042
+ return this._size;
6043
+ }
5997
6044
  get activeViewEnum() {
5998
6045
  const activeView = CalendarViewEnum[this.activeView];
5999
6046
  return activeView < this.bottomViewEnum ? this.bottomViewEnum : activeView;
@@ -6044,6 +6091,10 @@ class CalendarComponent {
6044
6091
  }
6045
6092
  ngAfterViewInit() {
6046
6093
  this.setAriaActivedescendant();
6094
+ if (this.size !== 'none') {
6095
+ const element = this.type === 'infinite' ? this.element : this.multiViewCalendar.element;
6096
+ this.renderer.addClass(element.nativeElement, getSizeClass('calendar', this.size));
6097
+ }
6047
6098
  }
6048
6099
  ngAfterViewChecked() {
6049
6100
  if (!this.syncNavigation) {
@@ -6482,7 +6533,7 @@ class CalendarComponent {
6482
6533
  }
6483
6534
  }
6484
6535
  CalendarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CalendarComponent, deps: [{ token: BusViewService }, { token: CalendarDOMService }, { token: i0.ElementRef }, { token: NavigationService }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i0.Injector }, { token: ScrollSyncService }, { token: DisabledDatesService }, { token: i1$1.LocalizationService }, { token: SelectionService }, { token: PickerService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
6485
- CalendarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: CalendarComponent, selector: "kendo-calendar", inputs: { id: "id", focusedDate: "focusedDate", min: "min", max: "max", rangeValidation: "rangeValidation", selection: "selection", value: "value", disabled: "disabled", tabindex: "tabindex", tabIndex: "tabIndex", disabledDates: "disabledDates", navigation: "navigation", activeView: "activeView", bottomView: "bottomView", topView: "topView", type: "type", animateNavigation: "animateNavigation", weekNumber: "weekNumber", cellTemplateRef: ["cellTemplate", "cellTemplateRef"], monthCellTemplateRef: ["monthCellTemplate", "monthCellTemplateRef"], yearCellTemplateRef: ["yearCellTemplate", "yearCellTemplateRef"], decadeCellTemplateRef: ["decadeCellTemplate", "decadeCellTemplateRef"], centuryCellTemplateRef: ["centuryCellTemplate", "centuryCellTemplateRef"], weekNumberTemplateRef: ["weekNumberTemplate", "weekNumberTemplateRef"], headerTitleTemplateRef: ["headerTitleTemplate", "headerTitleTemplateRef"], navigationItemTemplateRef: ["navigationItemTemplate", "navigationItemTemplateRef"] }, outputs: { activeViewChange: "activeViewChange", navigate: "navigate", activeViewDateChange: "activeViewDateChange", onBlur: "blur", onFocus: "focus", valueChange: "valueChange" }, host: { properties: { "class.k-week-number": "this.weekNumber", "attr.id": "this.widgetId", "attr.aria-disabled": "this.ariaDisabled", "class.k-disabled": "this.ariaDisabled" } }, providers: [
6536
+ CalendarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: CalendarComponent, selector: "kendo-calendar", inputs: { id: "id", focusedDate: "focusedDate", min: "min", max: "max", rangeValidation: "rangeValidation", selection: "selection", value: "value", disabled: "disabled", tabindex: "tabindex", tabIndex: "tabIndex", disabledDates: "disabledDates", navigation: "navigation", activeView: "activeView", bottomView: "bottomView", topView: "topView", type: "type", animateNavigation: "animateNavigation", weekNumber: "weekNumber", cellTemplateRef: ["cellTemplate", "cellTemplateRef"], monthCellTemplateRef: ["monthCellTemplate", "monthCellTemplateRef"], yearCellTemplateRef: ["yearCellTemplate", "yearCellTemplateRef"], decadeCellTemplateRef: ["decadeCellTemplate", "decadeCellTemplateRef"], centuryCellTemplateRef: ["centuryCellTemplate", "centuryCellTemplateRef"], weekNumberTemplateRef: ["weekNumberTemplate", "weekNumberTemplateRef"], headerTitleTemplateRef: ["headerTitleTemplate", "headerTitleTemplateRef"], navigationItemTemplateRef: ["navigationItemTemplate", "navigationItemTemplateRef"], size: "size" }, outputs: { activeViewChange: "activeViewChange", navigate: "navigate", activeViewDateChange: "activeViewDateChange", onBlur: "blur", onFocus: "focus", valueChange: "valueChange" }, host: { properties: { "class.k-week-number": "this.weekNumber", "attr.id": "this.widgetId", "attr.aria-disabled": "this.ariaDisabled", "class.k-disabled": "this.ariaDisabled" } }, providers: [
6486
6537
  BusViewService,
6487
6538
  CALENDAR_VALUE_ACCESSOR,
6488
6539
  CALENDAR_RANGE_VALIDATORS,
@@ -6595,7 +6646,7 @@ CalendarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
6595
6646
  </kendo-multiviewcalendar-messages>
6596
6647
  </kendo-multiviewcalendar>
6597
6648
  </ng-container>
6598
- `, isInline: true, components: [{ type: NavigationComponent, selector: "kendo-calendar-navigation", inputs: ["activeView", "min", "max", "focusedDate", "templateRef"], outputs: ["valueChange", "pageChange"] }, { type: ViewListComponent, selector: "kendo-calendar-viewlist", inputs: ["cellTemplateRef", "weekNumberTemplateRef", "headerTitleTemplateRef", "activeView", "cellUID", "focusedDate", "isActive", "min", "max", "selectedDates", "tabIndex", "disabled", "id", "weekNumber"], outputs: ["cellClick", "weekNumberCellClick", "activeDateChange", "todayButtonClick", "pageChange", "focusCalendar", "blurCalendar", "focusedCellChange"] }, { type: i6.ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { type: MultiViewCalendarComponent, selector: "kendo-multiviewcalendar", inputs: ["id", "focusedDate", "min", "max", "rangeValidation", "disabledDatesRangeValidation", "selection", "value", "disabled", "tabindex", "tabIndex", "isActive", "disabledDates", "activeView", "bottomView", "topView", "showViewHeader", "animateNavigation", "weekNumber", "activeRangeEnd", "selectionRange", "views", "orientation", "cellTemplate", "monthCellTemplate", "yearCellTemplate", "decadeCellTemplate", "centuryCellTemplate", "weekNumberTemplate", "headerTitleTemplate"], outputs: ["activeViewChange", "navigate", "cellEnter", "cellLeave", "valueChange", "blur", "focus", "focusCalendar"], exportAs: ["kendo-multiviewcalendar"] }, { type: MultiViewCalendarCustomMessagesComponent, selector: "kendo-multiviewcalendar-messages" }], directives: [{ type: CalendarLocalizedMessagesDirective, selector: "[kendoCalendarLocalizedMessages]" }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
6649
+ `, isInline: true, components: [{ type: NavigationComponent, selector: "kendo-calendar-navigation", inputs: ["activeView", "min", "max", "focusedDate", "templateRef"], outputs: ["valueChange", "pageChange"] }, { type: ViewListComponent, selector: "kendo-calendar-viewlist", inputs: ["cellTemplateRef", "weekNumberTemplateRef", "headerTitleTemplateRef", "activeView", "cellUID", "focusedDate", "isActive", "min", "max", "selectedDates", "tabIndex", "disabled", "id", "weekNumber"], outputs: ["cellClick", "weekNumberCellClick", "activeDateChange", "todayButtonClick", "pageChange", "focusCalendar", "blurCalendar", "focusedCellChange"] }, { type: i8.ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { type: MultiViewCalendarComponent, selector: "kendo-multiviewcalendar", inputs: ["id", "focusedDate", "min", "max", "rangeValidation", "disabledDatesRangeValidation", "selection", "value", "disabled", "tabindex", "tabIndex", "isActive", "disabledDates", "activeView", "bottomView", "topView", "showViewHeader", "animateNavigation", "weekNumber", "activeRangeEnd", "selectionRange", "views", "orientation", "cellTemplate", "monthCellTemplate", "yearCellTemplate", "decadeCellTemplate", "centuryCellTemplate", "weekNumberTemplate", "headerTitleTemplate"], outputs: ["activeViewChange", "navigate", "cellEnter", "cellLeave", "valueChange", "blur", "focus", "focusCalendar"], exportAs: ["kendo-multiviewcalendar"] }, { type: MultiViewCalendarCustomMessagesComponent, selector: "kendo-multiviewcalendar-messages" }], directives: [{ type: CalendarLocalizedMessagesDirective, selector: "[kendoCalendarLocalizedMessages]" }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
6599
6650
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CalendarComponent, decorators: [{
6600
6651
  type: Component,
6601
6652
  args: [{
@@ -6823,6 +6874,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
6823
6874
  }], navigationItemTemplateRef: [{
6824
6875
  type: Input,
6825
6876
  args: ['navigationItemTemplate']
6877
+ }], size: [{
6878
+ type: Input
6826
6879
  }], navigationView: [{
6827
6880
  type: ViewChild,
6828
6881
  args: [NavigationComponent, { static: false }]
@@ -8399,7 +8452,7 @@ DateInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ver
8399
8452
  </kendo-icon-wrapper>
8400
8453
  </button>
8401
8454
  </span>
8402
- `, isInline: true, components: [{ type: i7$1.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass"], exportAs: ["kendoIconWrapper"] }], directives: [{ type: DateInputLocalizedMessagesDirective, selector: "[kendoDateInputLocalizedMessages]" }, { type: i6.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
8455
+ `, isInline: true, components: [{ type: i7$1.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass"], exportAs: ["kendoIconWrapper"] }], directives: [{ type: DateInputLocalizedMessagesDirective, selector: "[kendoDateInputLocalizedMessages]" }, { type: i8.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
8403
8456
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DateInputComponent, decorators: [{
8404
8457
  type: Component,
8405
8458
  args: [{
@@ -8784,12 +8837,7 @@ class DatePickerComponent {
8784
8837
  * the input will be rendered in a read-only state regardless of the `readOnlyInput` value.
8785
8838
  */
8786
8839
  this.readOnlyInput = false;
8787
- /**
8788
- * Sets or gets the `navigation` property of the Calendar
8789
- * and determines whether the navigation side-bar is displayed.
8790
- * ([see example]({% slug sidebar_datepicker %})).
8791
- */
8792
- this.navigation = true;
8840
+ this._navigation = true;
8793
8841
  /**
8794
8842
  * Specifies the smallest valid date
8795
8843
  * ([see example]({% slug dateranges_datepicker %})).
@@ -8849,7 +8897,8 @@ class DatePickerComponent {
8849
8897
  */
8850
8898
  this.tabindex = 0;
8851
8899
  /**
8852
- * Sets the title of the input element of the DatePicker.
8900
+ * Sets the title of the input element of the DatePicker and the title text rendered
8901
+ * in the header of the popup(action sheet). Applicable only when [`AdaptiveMode` is set to `auto`](slug:api_dateinputs_adaptivemode).
8853
8902
  */
8854
8903
  this.title = "";
8855
8904
  /**
@@ -8867,6 +8916,10 @@ class DatePickerComponent {
8867
8916
  * ([see example]({% slug calendar_type_datepicker %}#toc-week-number-column)).
8868
8917
  */
8869
8918
  this.weekNumber = false;
8919
+ /**
8920
+ * Enables or disables the adaptive mode. By default the adaptive rendering is disabled.
8921
+ */
8922
+ this.adaptiveMode = 'none';
8870
8923
  /**
8871
8924
  * Fires each time the user selects a new value
8872
8925
  * ([more information and example]({% slug overview_datepicker %}#toc-events)).
@@ -8932,6 +8985,10 @@ class DatePickerComponent {
8932
8985
  * @hidden
8933
8986
  */
8934
8987
  this.wrapperClasses = true;
8988
+ /**
8989
+ * @hidden
8990
+ */
8991
+ this.xIcon = xIcon;
8935
8992
  this._popupSettings = { animate: true };
8936
8993
  this._show = false;
8937
8994
  this._value = null;
@@ -9016,6 +9073,21 @@ class DatePickerComponent {
9016
9073
  get popupSettings() {
9017
9074
  return this._popupSettings;
9018
9075
  }
9076
+ /**
9077
+ * Sets or gets the `navigation` property of the Calendar
9078
+ * and determines whether the navigation side-bar is displayed.
9079
+ * ([see example]({% slug sidebar_datepicker %})).
9080
+ */
9081
+ set navigation(state) {
9082
+ this._navigation = state;
9083
+ }
9084
+ ;
9085
+ get navigation() {
9086
+ if (this.isAdaptive) {
9087
+ return;
9088
+ }
9089
+ return this._navigation;
9090
+ }
9019
9091
  /**
9020
9092
  * Specifies the value of the DatePicker component.
9021
9093
  *
@@ -9049,6 +9121,16 @@ class DatePickerComponent {
9049
9121
  get disabledDates() {
9050
9122
  return this._disabledDates;
9051
9123
  }
9124
+ /**
9125
+ * Sets the subtitle text rendered in the header of the popup(action sheet).
9126
+ * Applicable only when [`AdaptiveMode` is set to `auto`](slug:api_dateinputs_adaptivemode).
9127
+ */
9128
+ set subtitle(subtitle) {
9129
+ this._subtitle = subtitle;
9130
+ }
9131
+ get subtitle() {
9132
+ return this._subtitle || this.placeholder;
9133
+ }
9052
9134
  /**
9053
9135
  * Sets the size of the component.
9054
9136
  *
@@ -9153,14 +9235,24 @@ class DatePickerComponent {
9153
9235
  if (show && (this.disabled || this.readonly)) {
9154
9236
  return;
9155
9237
  }
9156
- const skipZone = !show && (!this._show || !hasObservers(this.close));
9238
+ const skipZone = !show && (!this._show || (!hasObservers(this.close) && !hasObservers(this.open)));
9157
9239
  if (!skipZone) {
9158
9240
  this.zone.run(() => {
9159
- this.togglePopup(show);
9241
+ const event = new PreventableEvent();
9242
+ if (!this._show && show) {
9243
+ this.open.emit(event);
9244
+ }
9245
+ else if (this._show && !show) {
9246
+ this.close.emit(event);
9247
+ }
9248
+ if (event.isDefaultPrevented()) {
9249
+ return;
9250
+ }
9251
+ this.toggleCalendar(show);
9160
9252
  });
9161
9253
  }
9162
9254
  else {
9163
- this.togglePopup(show);
9255
+ this.toggleCalendar(show);
9164
9256
  }
9165
9257
  }
9166
9258
  /**
@@ -9187,6 +9279,7 @@ class DatePickerComponent {
9187
9279
  }
9188
9280
  ngAfterViewInit() {
9189
9281
  this.setComponentClasses();
9282
+ this.renderer.setAttribute(this.actionSheet.element.nativeElement, 'style', '--kendo-actionsheet-height: 60vh; --kendo-actionsheet-max-height: none');
9190
9283
  }
9191
9284
  /**
9192
9285
  * @hidden
@@ -9217,7 +9310,7 @@ class DatePickerComponent {
9217
9310
  this.pickerSubscriptions.unsubscribe();
9218
9311
  }
9219
9312
  /**
9220
- * Returns the current open state of the popup.
9313
+ * Indicates whether the component is currently open. That is when the popup or actionSheet is open.
9221
9314
  */
9222
9315
  get isOpen() {
9223
9316
  return this.show;
@@ -9265,6 +9358,19 @@ class DatePickerComponent {
9265
9358
  registerOnValidatorChange(fn) {
9266
9359
  this.onValidatorChange = fn;
9267
9360
  }
9361
+ /**
9362
+ * @hidden
9363
+ */
9364
+ handleActionSheetCollapse() {
9365
+ // If not handled, the actionsheet expanded state does not get updated when overlay is clicked
9366
+ this.cdr.markForCheck();
9367
+ }
9368
+ /**
9369
+ * @hidden
9370
+ */
9371
+ handleActionSheetClick(e) {
9372
+ e.preventDefault();
9373
+ }
9268
9374
  /**
9269
9375
  * Focuses the DatePicker component.
9270
9376
  *
@@ -9290,7 +9396,8 @@ class DatePickerComponent {
9290
9396
  (this.calendar || this.input)['blur']();
9291
9397
  }
9292
9398
  /**
9293
- * Toggles the visibility of the popup. If you use the `toggle` method to show or hide the popup,
9399
+ * Toggles the visibility of the popup or actionSheet.
9400
+ * If you use the `toggle` method to show or hide the popup or actionSheet,
9294
9401
  * the `open` and `close` events do not fire.
9295
9402
  *
9296
9403
  * @param show - The state of the popup.
@@ -9300,7 +9407,7 @@ class DatePickerComponent {
9300
9407
  return;
9301
9408
  }
9302
9409
  this.resolvedPromise.then(() => {
9303
- this._toggle((show === undefined) ? !this.show : show);
9410
+ this.toggleCalendar((show === undefined) ? !this.show : show);
9304
9411
  });
9305
9412
  }
9306
9413
  /**
@@ -9318,6 +9425,15 @@ class DatePickerComponent {
9318
9425
  this.show = !this.show;
9319
9426
  this.cdr.markForCheck();
9320
9427
  }
9428
+ /**
9429
+ * @hidden
9430
+ */
9431
+ handleDateInputClick() {
9432
+ this.windowSize = windowSize();
9433
+ if (this.isAdaptive) {
9434
+ this.show = true;
9435
+ }
9436
+ }
9321
9437
  /**
9322
9438
  * @hidden
9323
9439
  */
@@ -9367,6 +9483,34 @@ class DatePickerComponent {
9367
9483
  get calendar() {
9368
9484
  return this.pickerService.calendar;
9369
9485
  }
9486
+ /**
9487
+ * @hidden
9488
+ */
9489
+ get isAdaptiveModeEnabled() {
9490
+ return this.adaptiveMode === 'auto';
9491
+ }
9492
+ /**
9493
+ * @hidden
9494
+ */
9495
+ get isAdaptive() {
9496
+ return this.isAdaptiveModeEnabled && this.windowSize !== 'large';
9497
+ }
9498
+ /**
9499
+ * @hidden
9500
+ */
9501
+ onResize() {
9502
+ if (!this.isOpen || this.windowSize === windowSize()) {
9503
+ return;
9504
+ }
9505
+ ;
9506
+ if (this.actionSheet.expanded) {
9507
+ this.toggleActionSheet(false);
9508
+ }
9509
+ else {
9510
+ this.togglePopup(false);
9511
+ }
9512
+ this.windowSize = windowSize();
9513
+ }
9370
9514
  /**
9371
9515
  * @hidden
9372
9516
  */
@@ -9394,21 +9538,17 @@ class DatePickerComponent {
9394
9538
  this.show = false;
9395
9539
  }
9396
9540
  }
9397
- togglePopup(show) {
9398
- const event = new PreventableEvent();
9399
- if (!this._show && show) {
9400
- this.open.emit(event);
9401
- }
9402
- else if (this._show && !show) {
9403
- this.close.emit(event);
9541
+ toggleCalendar(show) {
9542
+ this.windowSize = windowSize();
9543
+ if (this.isAdaptive) {
9544
+ this.toggleActionSheet(show);
9404
9545
  }
9405
- if (event.isDefaultPrevented()) {
9406
- return;
9546
+ else {
9547
+ this.togglePopup(show);
9407
9548
  }
9408
- this._toggle(show);
9409
9549
  this.toggleFocus();
9410
9550
  }
9411
- _toggle(show) {
9551
+ togglePopup(show) {
9412
9552
  if (show === this._show) {
9413
9553
  return;
9414
9554
  }
@@ -9426,16 +9566,7 @@ class DatePickerComponent {
9426
9566
  popupClass: this.popupClasses,
9427
9567
  positionMode: 'absolute'
9428
9568
  });
9429
- if (this.calendar.type === 'infinite') {
9430
- this.pickerSubscriptions.add(this.calendar.monthView.focusedCellChange.subscribe((id) => {
9431
- this.renderer.setAttribute(inputElement, attributeNames.ariaActiveDescendant, id);
9432
- }));
9433
- }
9434
- else {
9435
- this.pickerSubscriptions.add(this.calendar.multiViewCalendar.viewList.focusedCellChange.subscribe((id) => {
9436
- this.renderer.setAttribute(inputElement, attributeNames.ariaActiveDescendant, id);
9437
- }));
9438
- }
9569
+ this.setAriaActiveDescendant();
9439
9570
  this.popupRef.popupElement.setAttribute('id', this.popupUID);
9440
9571
  this.renderer.setAttribute(inputElement, attributeNames.ariaControls, this.popupUID);
9441
9572
  this.subscription = this.popupRef.popupAnchorViewportLeave.subscribe(() => this.show = false);
@@ -9444,11 +9575,53 @@ class DatePickerComponent {
9444
9575
  this.popupRef.close();
9445
9576
  this.popupRef = null;
9446
9577
  this.subscription.unsubscribe();
9578
+ this.ariaActiveDescendantSubscription.unsubscribe();
9447
9579
  this.renderer.removeAttribute(inputElement, attributeNames.ariaControls);
9448
9580
  this.renderer.removeAttribute(inputElement, attributeNames.ariaActiveDescendant);
9449
9581
  this.cdr.detectChanges();
9450
9582
  }
9451
9583
  }
9584
+ toggleActionSheet(show) {
9585
+ if (show === this._show) {
9586
+ return;
9587
+ }
9588
+ if (show && !this.isOpen) {
9589
+ this.actionSheet.toggle();
9590
+ this.updateActionSheetAdaptiveAppearance();
9591
+ this.setAriaActiveDescendant();
9592
+ }
9593
+ else if (!show && this.isOpen) {
9594
+ this.actionSheet.toggle();
9595
+ this.ariaActiveDescendantSubscription.unsubscribe();
9596
+ this.renderer.removeAttribute(this.input.inputElement, attributeNames.ariaActiveDescendant);
9597
+ }
9598
+ this._show = show;
9599
+ }
9600
+ updateActionSheetAdaptiveAppearance() {
9601
+ let element;
9602
+ let animationContainer;
9603
+ if (this.actionSheet) {
9604
+ element = this.actionSheet['element'].nativeElement.querySelector('.k-actionsheet');
9605
+ animationContainer = this.actionSheet['element'].nativeElement.querySelector('.k-child-animation-container');
9606
+ if (this.windowSize === 'medium') {
9607
+ this.renderer.removeClass(element, 'k-actionsheet-fullscreen');
9608
+ this.renderer.removeStyle(animationContainer, 'height');
9609
+ }
9610
+ else if (this.windowSize === 'small') {
9611
+ this.renderer.addClass(element, 'k-actionsheet-fullscreen');
9612
+ this.renderer.setStyle(animationContainer, 'height', '100%');
9613
+ }
9614
+ this.renderer.addClass(element, 'k-adaptive-actionsheet');
9615
+ this.renderer.addClass(element, 'k-actionsheet-bottom');
9616
+ this.renderer.setStyle(animationContainer, 'bottom', '0px');
9617
+ }
9618
+ }
9619
+ setAriaActiveDescendant() {
9620
+ const focusedCellChangeEvent = this.calendar.type === 'infinite' ?
9621
+ this.calendar.monthView.focusedCellChange :
9622
+ this.calendar.multiViewCalendar.viewList.focusedCellChange;
9623
+ this.ariaActiveDescendantSubscription = focusedCellChangeEvent.subscribe((id) => this.renderer.setAttribute(this.input.inputElement, attributeNames.ariaActiveDescendant, id));
9624
+ }
9452
9625
  focusInput() {
9453
9626
  if (this.touchEnabled) {
9454
9627
  return;
@@ -9509,15 +9682,17 @@ class DatePickerComponent {
9509
9682
  }
9510
9683
  }
9511
9684
  handleWindowBlur() {
9512
- if (!this.isOpen) {
9685
+ if (!this.isOpen || this.actionSheet.expanded) {
9513
9686
  return;
9514
9687
  }
9515
9688
  this.show = false;
9516
9689
  }
9517
9690
  handleBlur(args) {
9518
9691
  const currentTarget = args && currentFocusTarget(args);
9692
+ const target = args && args.target;
9693
+ const isInsideActionSheet = this.actionSheet && (this.actionSheet.element.nativeElement.contains(target) || this.actionSheet.element.nativeElement.contains(currentTarget));
9519
9694
  if (currentTarget && (this.input.containsElement(currentTarget) ||
9520
- (this.calendar && this.calendar.containsElement(currentTarget)))) {
9695
+ (this.calendar && this.calendar.containsElement(currentTarget)) || isInsideActionSheet)) {
9521
9696
  return;
9522
9697
  }
9523
9698
  if (hasObservers(this.onBlur) || (this.show && hasObservers(this.close)) || requiresZoneOnBlur(this.control)) {
@@ -9563,7 +9738,7 @@ class DatePickerComponent {
9563
9738
  }
9564
9739
  }
9565
9740
  DatePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DatePickerComponent, deps: [{ token: i0.NgZone }, { token: i1$1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: i1$2.PopupService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.Injector }, { token: PickerService }, { token: DisabledDatesService }, { token: TOUCH_ENABLED, optional: true }], target: i0.ɵɵFactoryTarget.Component });
9566
- DatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: DatePickerComponent, selector: "kendo-datepicker", inputs: { focusableId: "focusableId", cellTemplateRef: ["cellTemplate", "cellTemplateRef"], monthCellTemplateRef: ["monthCellTemplate", "monthCellTemplateRef"], yearCellTemplateRef: ["yearCellTemplate", "yearCellTemplateRef"], decadeCellTemplateRef: ["decadeCellTemplate", "decadeCellTemplateRef"], centuryCellTemplateRef: ["centuryCellTemplate", "centuryCellTemplateRef"], weekNumberTemplateRef: ["weekNumberTemplate", "weekNumberTemplateRef"], headerTitleTemplateRef: ["headerTitleTemplate", "headerTitleTemplateRef"], navigationItemTemplateRef: ["navigationItemTemplate", "navigationItemTemplateRef"], activeView: "activeView", bottomView: "bottomView", topView: "topView", calendarType: "calendarType", animateCalendarNavigation: "animateCalendarNavigation", disabled: "disabled", readonly: "readonly", readOnlyInput: "readOnlyInput", popupSettings: "popupSettings", navigation: "navigation", min: "min", max: "max", incompleteDateValidation: "incompleteDateValidation", focusedDate: "focusedDate", value: "value", format: "format", twoDigitYearMax: "twoDigitYearMax", formatPlaceholder: "formatPlaceholder", placeholder: "placeholder", tabindex: "tabindex", tabIndex: "tabIndex", disabledDates: "disabledDates", title: "title", rangeValidation: "rangeValidation", disabledDatesValidation: "disabledDatesValidation", weekNumber: "weekNumber", size: "size", rounded: "rounded", fillMode: "fillMode" }, outputs: { valueChange: "valueChange", onFocus: "focus", onBlur: "blur", open: "open", close: "close" }, host: { properties: { "class.k-datepicker": "this.wrapperClasses", "class.k-input": "this.wrapperClasses", "class.k-disabled": "this.disabledClass" } }, providers: [
9741
+ DatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: DatePickerComponent, selector: "kendo-datepicker", inputs: { focusableId: "focusableId", cellTemplateRef: ["cellTemplate", "cellTemplateRef"], monthCellTemplateRef: ["monthCellTemplate", "monthCellTemplateRef"], yearCellTemplateRef: ["yearCellTemplate", "yearCellTemplateRef"], decadeCellTemplateRef: ["decadeCellTemplate", "decadeCellTemplateRef"], centuryCellTemplateRef: ["centuryCellTemplate", "centuryCellTemplateRef"], weekNumberTemplateRef: ["weekNumberTemplate", "weekNumberTemplateRef"], headerTitleTemplateRef: ["headerTitleTemplate", "headerTitleTemplateRef"], navigationItemTemplateRef: ["navigationItemTemplate", "navigationItemTemplateRef"], activeView: "activeView", bottomView: "bottomView", topView: "topView", calendarType: "calendarType", animateCalendarNavigation: "animateCalendarNavigation", disabled: "disabled", readonly: "readonly", readOnlyInput: "readOnlyInput", popupSettings: "popupSettings", navigation: "navigation", min: "min", max: "max", incompleteDateValidation: "incompleteDateValidation", focusedDate: "focusedDate", value: "value", format: "format", twoDigitYearMax: "twoDigitYearMax", formatPlaceholder: "formatPlaceholder", placeholder: "placeholder", tabindex: "tabindex", tabIndex: "tabIndex", disabledDates: "disabledDates", title: "title", subtitle: "subtitle", rangeValidation: "rangeValidation", disabledDatesValidation: "disabledDatesValidation", weekNumber: "weekNumber", size: "size", rounded: "rounded", fillMode: "fillMode", adaptiveMode: "adaptiveMode" }, outputs: { valueChange: "valueChange", onFocus: "focus", onBlur: "blur", open: "open", close: "close" }, host: { properties: { "class.k-datepicker": "this.wrapperClasses", "class.k-input": "this.wrapperClasses", "class.k-disabled": "this.disabledClass" } }, providers: [
9567
9742
  { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DatePickerComponent), multi: true },
9568
9743
  { provide: NG_VALIDATORS, useExisting: forwardRef(() => DatePickerComponent), multi: true },
9569
9744
  { provide: KendoInput, useExisting: forwardRef(() => DatePickerComponent) },
@@ -9574,7 +9749,7 @@ DatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
9574
9749
  provide: L10N_PREFIX,
9575
9750
  useValue: 'kendo.datepicker'
9576
9751
  }
9577
- ], queries: [{ propertyName: "cellTemplate", first: true, predicate: CellTemplateDirective, descendants: true }, { propertyName: "monthCellTemplate", first: true, predicate: MonthCellTemplateDirective, descendants: true }, { propertyName: "yearCellTemplate", first: true, predicate: YearCellTemplateDirective, descendants: true }, { propertyName: "decadeCellTemplate", first: true, predicate: DecadeCellTemplateDirective, descendants: true }, { propertyName: "centuryCellTemplate", first: true, predicate: CenturyCellTemplateDirective, descendants: true }, { propertyName: "weekNumberTemplate", first: true, predicate: WeekNumberCellTemplateDirective, descendants: true }, { propertyName: "headerTitleTemplate", first: true, predicate: HeaderTitleTemplateDirective, descendants: true }, { propertyName: "navigationItemTemplate", first: true, predicate: NavigationItemTemplateDirective, descendants: true }], viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "popupTemplate", first: true, predicate: ["popupTemplate"], descendants: true, static: true }, { propertyName: "toggleButton", first: true, predicate: ["toggleButton"], descendants: true, static: true }], exportAs: ["kendo-datepicker"], usesOnChanges: true, ngImport: i0, template: `
9752
+ ], queries: [{ propertyName: "cellTemplate", first: true, predicate: CellTemplateDirective, descendants: true }, { propertyName: "monthCellTemplate", first: true, predicate: MonthCellTemplateDirective, descendants: true }, { propertyName: "yearCellTemplate", first: true, predicate: YearCellTemplateDirective, descendants: true }, { propertyName: "decadeCellTemplate", first: true, predicate: DecadeCellTemplateDirective, descendants: true }, { propertyName: "centuryCellTemplate", first: true, predicate: CenturyCellTemplateDirective, descendants: true }, { propertyName: "weekNumberTemplate", first: true, predicate: WeekNumberCellTemplateDirective, descendants: true }, { propertyName: "headerTitleTemplate", first: true, predicate: HeaderTitleTemplateDirective, descendants: true }, { propertyName: "navigationItemTemplate", first: true, predicate: NavigationItemTemplateDirective, descendants: true }], viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "popupTemplate", first: true, predicate: ["popupTemplate"], descendants: true, static: true }, { propertyName: "toggleButton", first: true, predicate: ["toggleButton"], descendants: true, static: true }, { propertyName: "actionSheet", first: true, predicate: ["actionSheet"], descendants: true }], exportAs: ["kendo-datepicker"], usesOnChanges: true, ngImport: i0, template: `
9578
9753
  <ng-container kendoDatePickerLocalizedMessages
9579
9754
  i18n-today="kendo.datepicker.today|The label for the today button in the calendar header"
9580
9755
  today="Today"
@@ -9613,6 +9788,7 @@ DatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
9613
9788
  size="none"
9614
9789
  [value]="value"
9615
9790
  (valueChange)="handleInputChange($event)"
9791
+ (click)="handleDateInputClick()"
9616
9792
  ></kendo-dateinput>
9617
9793
  <button
9618
9794
  #toggleButton
@@ -9634,10 +9810,54 @@ DatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
9634
9810
  >
9635
9811
  </kendo-icon-wrapper>
9636
9812
  </button>
9813
+
9637
9814
  <ng-container #container></ng-container>
9815
+
9638
9816
  <ng-template #popupTemplate>
9817
+ <ng-container *ngTemplateOutlet="calendarTemplate"></ng-container>
9818
+ </ng-template>
9819
+
9820
+ <kendo-resize-sensor *ngIf="isAdaptiveModeEnabled" (resize)="onResize()"></kendo-resize-sensor>
9821
+ <kendo-actionsheet
9822
+ #actionSheet
9823
+ (overlayClick)="show=false"
9824
+ [kendoEventsOutsideAngular]="{
9825
+ click: handleActionSheetClick
9826
+ }"
9827
+ [scope]="this"
9828
+ (collapse)="handleActionSheetCollapse()"
9829
+ >
9830
+ <ng-template kendoActionSheetTemplate>
9831
+ <div class="k-actionsheet-titlebar">
9832
+ <div class="k-actionsheet-titlebar-group k-hbox">
9833
+ <div class="k-actionsheet-title">
9834
+ <div class="k-text-center">{{ title }}</div>
9835
+ <div class="k-actionsheet-subtitle k-text-center">{{ subtitle }}</div>
9836
+ </div>
9837
+ <div class="k-actionsheet-actions">
9838
+ <button
9839
+ kendoButton
9840
+ icon="x"
9841
+ [attr.title]="localization.get('clearTitle')"
9842
+ [svgIcon]="xIcon"
9843
+ fillMode="flat"
9844
+ size="large"
9845
+ innerCssClass="k-button-icon"
9846
+ (click)="show = false">
9847
+ </button>
9848
+ </div>
9849
+ </div>
9850
+ </div>
9851
+ <div class="k-actionsheet-content !k-overflow-hidden">
9852
+ <ng-container *ngTemplateOutlet="calendarTemplate"></ng-container>
9853
+ </div>
9854
+ </ng-template>
9855
+ </kendo-actionsheet>
9856
+
9857
+ <ng-template #calendarTemplate>
9639
9858
  <kendo-calendar
9640
9859
  #calendar
9860
+ [size]="isAdaptive ? 'large' : 'medium'"
9641
9861
  [type]="calendarType"
9642
9862
  [min]="min"
9643
9863
  [max]="max"
@@ -9671,8 +9891,8 @@ DatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
9671
9891
  >
9672
9892
  </kendo-calendar-messages>
9673
9893
  </kendo-calendar>
9674
- <ng-template>
9675
- `, isInline: true, components: [{ type: DateInputComponent, selector: "kendo-dateinput", inputs: ["focusableId", "pickerType", "disabled", "readonly", "title", "tabindex", "role", "ariaReadOnly", "tabIndex", "format", "formatPlaceholder", "placeholder", "steps", "max", "min", "rangeValidation", "autoCorrect", "incompleteDateValidation", "twoDigitYearMax", "value", "spinners", "isPopupOpen", "hasPopup", "size", "rounded", "fillMode"], outputs: ["valueChange", "valueUpdate", "focus", "blur"], exportAs: ["kendo-dateinput"] }, { type: i7$1.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass"], exportAs: ["kendoIconWrapper"] }, { type: CalendarComponent, selector: "kendo-calendar", inputs: ["id", "focusedDate", "min", "max", "rangeValidation", "selection", "value", "disabled", "tabindex", "tabIndex", "disabledDates", "navigation", "activeView", "bottomView", "topView", "type", "animateNavigation", "weekNumber", "cellTemplate", "monthCellTemplate", "yearCellTemplate", "decadeCellTemplate", "centuryCellTemplate", "weekNumberTemplate", "headerTitleTemplate", "navigationItemTemplate"], outputs: ["activeViewChange", "navigate", "activeViewDateChange", "blur", "focus", "valueChange"], exportAs: ["kendo-calendar"] }, { type: CalendarCustomMessagesComponent, selector: "kendo-calendar-messages" }], directives: [{ type: DatePickerLocalizedMessagesDirective, selector: "[kendoDatePickerLocalizedMessages]" }, { type: i6.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
9894
+ </ng-template>
9895
+ `, isInline: true, components: [{ type: DateInputComponent, selector: "kendo-dateinput", inputs: ["focusableId", "pickerType", "disabled", "readonly", "title", "tabindex", "role", "ariaReadOnly", "tabIndex", "format", "formatPlaceholder", "placeholder", "steps", "max", "min", "rangeValidation", "autoCorrect", "incompleteDateValidation", "twoDigitYearMax", "value", "spinners", "isPopupOpen", "hasPopup", "size", "rounded", "fillMode"], outputs: ["valueChange", "valueUpdate", "focus", "blur"], exportAs: ["kendo-dateinput"] }, { type: i7$1.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass"], exportAs: ["kendoIconWrapper"] }, { type: i8.ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { type: i9.ActionSheetComponent, selector: "kendo-actionsheet", inputs: ["title", "subtitle", "items", "cssClass", "animation", "expanded"], outputs: ["expandedChange", "expand", "collapse", "itemClick", "overlayClick"], exportAs: ["kendoActionSheet"] }, { type: i10.Button, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { type: CalendarComponent, selector: "kendo-calendar", inputs: ["id", "focusedDate", "min", "max", "rangeValidation", "selection", "value", "disabled", "tabindex", "tabIndex", "disabledDates", "navigation", "activeView", "bottomView", "topView", "type", "animateNavigation", "weekNumber", "cellTemplate", "monthCellTemplate", "yearCellTemplate", "decadeCellTemplate", "centuryCellTemplate", "weekNumberTemplate", "headerTitleTemplate", "navigationItemTemplate", "size"], outputs: ["activeViewChange", "navigate", "activeViewDateChange", "blur", "focus", "valueChange"], exportAs: ["kendo-calendar"] }, { type: CalendarCustomMessagesComponent, selector: "kendo-calendar-messages" }], directives: [{ type: DatePickerLocalizedMessagesDirective, selector: "[kendoDatePickerLocalizedMessages]" }, { type: i8.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.ActionSheetTemplateDirective, selector: "[kendoActionSheetTemplate]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
9676
9896
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DatePickerComponent, decorators: [{
9677
9897
  type: Component,
9678
9898
  args: [{
@@ -9730,6 +9950,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
9730
9950
  size="none"
9731
9951
  [value]="value"
9732
9952
  (valueChange)="handleInputChange($event)"
9953
+ (click)="handleDateInputClick()"
9733
9954
  ></kendo-dateinput>
9734
9955
  <button
9735
9956
  #toggleButton
@@ -9751,10 +9972,54 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
9751
9972
  >
9752
9973
  </kendo-icon-wrapper>
9753
9974
  </button>
9975
+
9754
9976
  <ng-container #container></ng-container>
9977
+
9755
9978
  <ng-template #popupTemplate>
9979
+ <ng-container *ngTemplateOutlet="calendarTemplate"></ng-container>
9980
+ </ng-template>
9981
+
9982
+ <kendo-resize-sensor *ngIf="isAdaptiveModeEnabled" (resize)="onResize()"></kendo-resize-sensor>
9983
+ <kendo-actionsheet
9984
+ #actionSheet
9985
+ (overlayClick)="show=false"
9986
+ [kendoEventsOutsideAngular]="{
9987
+ click: handleActionSheetClick
9988
+ }"
9989
+ [scope]="this"
9990
+ (collapse)="handleActionSheetCollapse()"
9991
+ >
9992
+ <ng-template kendoActionSheetTemplate>
9993
+ <div class="k-actionsheet-titlebar">
9994
+ <div class="k-actionsheet-titlebar-group k-hbox">
9995
+ <div class="k-actionsheet-title">
9996
+ <div class="k-text-center">{{ title }}</div>
9997
+ <div class="k-actionsheet-subtitle k-text-center">{{ subtitle }}</div>
9998
+ </div>
9999
+ <div class="k-actionsheet-actions">
10000
+ <button
10001
+ kendoButton
10002
+ icon="x"
10003
+ [attr.title]="localization.get('clearTitle')"
10004
+ [svgIcon]="xIcon"
10005
+ fillMode="flat"
10006
+ size="large"
10007
+ innerCssClass="k-button-icon"
10008
+ (click)="show = false">
10009
+ </button>
10010
+ </div>
10011
+ </div>
10012
+ </div>
10013
+ <div class="k-actionsheet-content !k-overflow-hidden">
10014
+ <ng-container *ngTemplateOutlet="calendarTemplate"></ng-container>
10015
+ </div>
10016
+ </ng-template>
10017
+ </kendo-actionsheet>
10018
+
10019
+ <ng-template #calendarTemplate>
9756
10020
  <kendo-calendar
9757
10021
  #calendar
10022
+ [size]="isAdaptive ? 'large' : 'medium'"
9758
10023
  [type]="calendarType"
9759
10024
  [min]="min"
9760
10025
  [max]="max"
@@ -9788,7 +10053,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
9788
10053
  >
9789
10054
  </kendo-calendar-messages>
9790
10055
  </kendo-calendar>
9791
- <ng-template>
10056
+ </ng-template>
9792
10057
  `
9793
10058
  }]
9794
10059
  }], ctorParameters: function () {
@@ -9807,6 +10072,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
9807
10072
  }], toggleButton: [{
9808
10073
  type: ViewChild,
9809
10074
  args: ['toggleButton', { static: true }]
10075
+ }], actionSheet: [{
10076
+ type: ViewChild,
10077
+ args: ['actionSheet']
9810
10078
  }], focusableId: [{
9811
10079
  type: Input
9812
10080
  }], cellTemplate: [{
@@ -9903,6 +10171,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
9903
10171
  type: Input
9904
10172
  }], title: [{
9905
10173
  type: Input
10174
+ }], subtitle: [{
10175
+ type: Input
9906
10176
  }], rangeValidation: [{
9907
10177
  type: Input
9908
10178
  }], disabledDatesValidation: [{
@@ -9915,6 +10185,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
9915
10185
  type: Input
9916
10186
  }], fillMode: [{
9917
10187
  type: Input
10188
+ }], adaptiveMode: [{
10189
+ type: Input
9918
10190
  }], valueChange: [{
9919
10191
  type: Output
9920
10192
  }], onFocus: [{
@@ -10537,17 +10809,35 @@ const listTitle = () => span('hour', 'k-title k-timeselector-title');
10537
10809
  const listItem = () => li('<span>02</span>', 'k-item');
10538
10810
  const list = () => ul([listItem()], 'k-reset');
10539
10811
  const scrollable = () => (div([list()], 'k-time-container k-flex k-content k-scrollable'));
10540
- const timeListWrapper = () => {
10812
+ const actionSheetContent = (isDateTimePicker) => ([
10813
+ isDateTimePicker ? div([div('button', 'k-button k-button-lg')], 'k-datetime-buttongroup') : null,
10814
+ div([
10815
+ div([span('title', 'k-title')], 'k-time-header'),
10816
+ div([listTitle(), div([scrollable()], 'k-time-list')], 'k-time-list-wrapper')
10817
+ ], 'k-timeselector k-timeselector-lg')
10818
+ ]);
10819
+ const timeListWrapper = (isAdaptiveEnabled = false, windowSize, isDateTimePicker) => {
10541
10820
  if (!isDocumentAvailable()) {
10542
10821
  return null;
10543
10822
  }
10544
- return div([listTitle(), div([scrollable()], 'k-time-list')], 'k-time-list-wrapper', { left: '-10000px', position: 'absolute' });
10823
+ if (!isAdaptiveEnabled) {
10824
+ return div([listTitle(), div([scrollable()], 'k-time-list')], 'k-time-list-wrapper', { left: '-10000px', position: 'absolute' });
10825
+ }
10826
+ return div([div([div([div([div([], 'k-i-x k-button-icon k-icon')], 'k-icon-wrapper-host')], 'k-button k-icon-button k-button-lg')], 'k-actionsheet-titlebar'),
10827
+ div([
10828
+ isDateTimePicker ? div([...actionSheetContent(isDateTimePicker)], 'k-datetime-wrap k-time-tab') : actionSheetContent(isDateTimePicker)[1]
10829
+ ], 'k-actionsheet-content'),
10830
+ div([
10831
+ div('button', 'k-button k-button-lg')
10832
+ ], 'k-adaptive-actionsheet k-actionsheet-footer')], `k-actionsheet k-adaptive-actionsheet ${windowSize === 'small' ? 'k-actionsheet-fullscreen' : ''}`, { height: windowSize === 'small' ? '100%' : '60vh', left: '-10000px', position: 'absolute', top: 0 });
10545
10833
  };
10546
- const TIMELIST_WRAPPER = timeListWrapper();
10547
10834
  /**
10548
10835
  * @hidden
10549
10836
  */
10550
10837
  class TimePickerDOMService {
10838
+ get windowSize() {
10839
+ return windowSize();
10840
+ }
10551
10841
  ensureHeights() {
10552
10842
  if (this.timeListHeight !== undefined) {
10553
10843
  return;
@@ -10558,9 +10848,17 @@ class TimePickerDOMService {
10558
10848
  if (!isDocumentAvailable()) {
10559
10849
  return;
10560
10850
  }
10561
- const listContainer = container && container.querySelector('.k-time-list-container');
10562
- const hostContainer = listContainer || document.body;
10563
- const wrapper = hostContainer.appendChild(TIMELIST_WRAPPER);
10851
+ let wrapper;
10852
+ let hostContainer;
10853
+ if (!this.isAdaptiveEnabled || this.windowSize === 'large') { // not adaptive
10854
+ const listContainer = container && container.querySelector('.k-time-list-container');
10855
+ hostContainer = listContainer || document.body;
10856
+ wrapper = hostContainer.appendChild(timeListWrapper());
10857
+ }
10858
+ else { // adaptive mode
10859
+ hostContainer = document.body;
10860
+ wrapper = hostContainer.appendChild(timeListWrapper(true, this.windowSize, this.isDateTimePicker));
10861
+ }
10564
10862
  this.timeListHeight = wrapper.querySelector('.k-scrollable').getBoundingClientRect().height;
10565
10863
  this.itemHeight = wrapper.querySelector('li').getBoundingClientRect().height;
10566
10864
  hostContainer.removeChild(wrapper);
@@ -10838,7 +11136,7 @@ TimeListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
10838
11136
  </li>
10839
11137
  </ul>
10840
11138
  </kendo-virtualization>
10841
- `, isInline: true, components: [{ type: VirtualizationComponent, selector: "kendo-virtualization", inputs: ["direction", "itemHeight", "itemWidth", "topOffset", "bottomOffset", "maxScrollDifference", "scrollOffsetSize", "scrollDuration", "skip", "take", "total"], outputs: ["activeIndexChange", "pageChange", "scrollChange"] }], directives: [{ type: i7.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i6.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
11139
+ `, isInline: true, components: [{ type: VirtualizationComponent, selector: "kendo-virtualization", inputs: ["direction", "itemHeight", "itemWidth", "topOffset", "bottomOffset", "maxScrollDifference", "scrollOffsetSize", "scrollDuration", "skip", "take", "total"], outputs: ["activeIndexChange", "pageChange", "scrollChange"] }], directives: [{ type: i7.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i8.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
10842
11140
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TimeListComponent, decorators: [{
10843
11141
  type: Component,
10844
11142
  args: [{
@@ -11192,6 +11490,8 @@ class TimeSelectorComponent {
11192
11490
  .subscribe(() => this.cdr.markForCheck()));
11193
11491
  }
11194
11492
  this.renderer.addClass(this.element.nativeElement, 'k-timeselector');
11493
+ this.dom.isAdaptiveEnabled = this.isAdaptiveEnabled;
11494
+ this.dom.isDateTimePicker = this.isDateTimePicker;
11195
11495
  this.dom.calculateHeights(this.element.nativeElement);
11196
11496
  this.init();
11197
11497
  this.bindEvents();
@@ -11387,7 +11687,7 @@ class TimeSelectorComponent {
11387
11687
  }
11388
11688
  }
11389
11689
  TimeSelectorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.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 });
11390
- TimeSelectorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: TimeSelectorComponent, selector: "kendo-timeselector", inputs: { format: "format", min: "min", max: "max", cancelButton: "cancelButton", setButton: "setButton", nowButton: "nowButton", disabled: "disabled", steps: "steps", value: "value" }, outputs: { valueChange: "valueChange", valueReject: "valueReject" }, host: { properties: { "class.k-disabled": "this.disabledClass" } }, providers: [
11690
+ TimeSelectorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: TimeSelectorComponent, 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" }, host: { properties: { "class.k-disabled": "this.disabledClass" } }, providers: [
11391
11691
  LocalizationService,
11392
11692
  {
11393
11693
  provide: L10N_PREFIX,
@@ -11496,7 +11796,7 @@ TimeSelectorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
11496
11796
  [disabled]="disabled"
11497
11797
  >{{localization.get('accept')}}</button>
11498
11798
  </div>
11499
- `, isInline: true, components: [{ type: TimeListComponent, selector: "kendo-timelist", inputs: ["min", "max", "part", "step", "disabled", "value"], outputs: ["valueChange"] }], directives: [{ type: TimeSelectorLocalizedMessagesDirective, selector: "[kendoTimeSelectorLocalizedMessages]" }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
11799
+ `, isInline: true, components: [{ type: TimeListComponent, selector: "kendo-timelist", inputs: ["min", "max", "part", "step", "disabled", "value"], outputs: ["valueChange"] }], directives: [{ type: TimeSelectorLocalizedMessagesDirective, selector: "[kendoTimeSelectorLocalizedMessages]" }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
11500
11800
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TimeSelectorComponent, decorators: [{
11501
11801
  type: Component,
11502
11802
  args: [{
@@ -11651,6 +11951,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
11651
11951
  type: Input
11652
11952
  }], disabled: [{
11653
11953
  type: Input
11954
+ }], isAdaptiveEnabled: [{
11955
+ type: Input
11956
+ }], isDateTimePicker: [{
11957
+ type: Input
11654
11958
  }], steps: [{
11655
11959
  type: Input
11656
11960
  }], value: [{
@@ -11808,13 +12112,18 @@ class TimePickerComponent {
11808
12112
  */
11809
12113
  this.tabindex = 0;
11810
12114
  /**
11811
- * Sets the title of the input element of the TimePicker.
12115
+ * Sets the title of the input element of the TimePicker and the title text rendered
12116
+ * in the header of the popup(action sheet). Applicable only when [`AdaptiveMode` is set to `auto`](slug:api_dateinputs_adaptivemode).
11812
12117
  */
11813
12118
  this.title = "";
11814
12119
  /**
11815
12120
  * Determines whether the built-in min or max validators are enforced when a form is being validated.
11816
12121
  */
11817
12122
  this.rangeValidation = true;
12123
+ /**
12124
+ * Enables or disables the adaptive mode. By default the adaptive rendering is disabled.
12125
+ */
12126
+ this.adaptiveMode = 'none';
11818
12127
  /**
11819
12128
  * Fires each time the user selects a new value.
11820
12129
  * For more information, refer to the section on
@@ -11885,6 +12194,10 @@ class TimePickerComponent {
11885
12194
  * @hidden
11886
12195
  */
11887
12196
  this.wrapperClasses = true;
12197
+ /**
12198
+ * @hidden
12199
+ */
12200
+ this.xIcon = xIcon;
11888
12201
  this.onControlChange = noop$2;
11889
12202
  this.onControlTouched = noop$2;
11890
12203
  this.onValidatorChange = noop$2;
@@ -11977,6 +12290,16 @@ class TimePickerComponent {
11977
12290
  get tabIndex() {
11978
12291
  return this.tabindex;
11979
12292
  }
12293
+ /**
12294
+ * Sets the subtitle text rendered in the header of the popup(action sheet).
12295
+ * Applicable only when [`AdaptiveMode` is set to `auto`](slug:api_dateinputs_adaptivemode).
12296
+ */
12297
+ set subtitle(subtitle) {
12298
+ this._subtitle = subtitle;
12299
+ }
12300
+ get subtitle() {
12301
+ return this._subtitle || this.placeholder;
12302
+ }
11980
12303
  /**
11981
12304
  * Specifies the value of the TimePicker component.
11982
12305
  */
@@ -12090,14 +12413,24 @@ class TimePickerComponent {
12090
12413
  if (show && (this.disabled || this.readonly)) {
12091
12414
  return;
12092
12415
  }
12093
- const skipZone = !show && (!this._show || !hasObservers(this.close));
12416
+ const skipZone = !show && (!this._show || (!hasObservers(this.close) && !hasObservers(this.open)));
12094
12417
  if (!skipZone) {
12095
12418
  this.zone.run(() => {
12096
- this.togglePopup(show);
12419
+ const event = new PreventableEvent();
12420
+ if (!this._show && show) {
12421
+ this.open.emit(event);
12422
+ }
12423
+ else if (this._show && !show) {
12424
+ this.close.emit(event);
12425
+ }
12426
+ if (event.isDefaultPrevented()) {
12427
+ return;
12428
+ }
12429
+ this.toggleTimeSelector(show);
12097
12430
  });
12098
12431
  }
12099
12432
  else {
12100
- this.togglePopup(show);
12433
+ this.toggleTimeSelector(show);
12101
12434
  }
12102
12435
  }
12103
12436
  get input() {
@@ -12132,6 +12465,7 @@ class TimePickerComponent {
12132
12465
  */
12133
12466
  ngAfterViewInit() {
12134
12467
  this.setComponentClasses();
12468
+ this.renderer.setAttribute(this.actionSheet.element.nativeElement, 'style', '--kendo-actionsheet-height: 60vh; --kendo-actionsheet-max-height: none');
12135
12469
  }
12136
12470
  /**
12137
12471
  * @hidden
@@ -12251,7 +12585,8 @@ class TimePickerComponent {
12251
12585
  (this.timeSelector || this.input)['blur']();
12252
12586
  }
12253
12587
  /**
12254
- * Toggles the visibility of the popup. If you use the `toggle` method to show or hide the popup,
12588
+ * Toggles the visibility of the popup or actionSheet.
12589
+ * If you use the `toggle` method to show or hide the popup or actionSheet,
12255
12590
  * the `open` and `close` events do not fire.
12256
12591
  *
12257
12592
  * @param show - The state of the popup.
@@ -12261,11 +12596,11 @@ class TimePickerComponent {
12261
12596
  return;
12262
12597
  }
12263
12598
  this.resolvedPromise.then(() => {
12264
- this._toggle((show === undefined) ? !this.show : show);
12599
+ this.toggleTimeSelector((show === undefined) ? !this.show : show);
12265
12600
  });
12266
12601
  }
12267
12602
  /**
12268
- * Returns the current open state of the popup.
12603
+ * Indicates whether the component is currently open. That is when the popup or actionSheet is open.
12269
12604
  */
12270
12605
  get isOpen() {
12271
12606
  return this.show;
@@ -12297,6 +12632,19 @@ class TimePickerComponent {
12297
12632
  this.valueChange.emit(cloneDate(value));
12298
12633
  });
12299
12634
  }
12635
+ /**
12636
+ * @hidden
12637
+ */
12638
+ handleActionSheetAccept() {
12639
+ this.timeSelector.handleAccept();
12640
+ }
12641
+ /**
12642
+ * @hidden
12643
+ */
12644
+ handleActionSheetCollapse() {
12645
+ // If not handled, the actionsheet expanded state does not get updated when overlay is clicked
12646
+ this.cdr.markForCheck();
12647
+ }
12300
12648
  /**
12301
12649
  * @hidden
12302
12650
  */
@@ -12310,6 +12658,15 @@ class TimePickerComponent {
12310
12658
  const val = this.input.formatSections['date'] ? value : this.mergeTime(value);
12311
12659
  this.handleChange(val);
12312
12660
  }
12661
+ /**
12662
+ * @hidden
12663
+ */
12664
+ handleDateInputClick() {
12665
+ this.windowSize = windowSize();
12666
+ if (this.isAdaptive) {
12667
+ this.show = true;
12668
+ }
12669
+ }
12313
12670
  /**
12314
12671
  * @hidden
12315
12672
  */
@@ -12340,6 +12697,18 @@ class TimePickerComponent {
12340
12697
  'k-reset'
12341
12698
  ].concat(this.popupSettings.popupClass || []);
12342
12699
  }
12700
+ /**
12701
+ * @hidden
12702
+ */
12703
+ get isAdaptiveModeEnabled() {
12704
+ return this.adaptiveMode === 'auto';
12705
+ }
12706
+ /**
12707
+ * @hidden
12708
+ */
12709
+ get isAdaptive() {
12710
+ return this.isAdaptiveModeEnabled && this.windowSize !== 'large';
12711
+ }
12343
12712
  /**
12344
12713
  * @hidden
12345
12714
  */
@@ -12352,21 +12721,48 @@ class TimePickerComponent {
12352
12721
  mergeTime(value) {
12353
12722
  return this.value && value ? setTime(this.value, value) : value;
12354
12723
  }
12355
- togglePopup(show) {
12356
- const event = new PreventableEvent();
12357
- if (!this._show && show) {
12358
- this.open.emit(event);
12724
+ /**
12725
+ * @hidden
12726
+ */
12727
+ onResize() {
12728
+ if (!this.isOpen || this.windowSize === windowSize()) {
12729
+ return;
12359
12730
  }
12360
- else if (this._show && !show) {
12361
- this.close.emit(event);
12731
+ ;
12732
+ if (this.actionSheet.expanded) {
12733
+ this.toggleActionSheet(false);
12362
12734
  }
12363
- if (event.isDefaultPrevented()) {
12364
- return;
12735
+ else {
12736
+ this.togglePopup(false);
12737
+ }
12738
+ this.windowSize = windowSize();
12739
+ }
12740
+ toggleTimeSelector(show) {
12741
+ this.windowSize = windowSize();
12742
+ if (this.isAdaptive) {
12743
+ this.toggleActionSheet(show);
12744
+ }
12745
+ else {
12746
+ this.togglePopup(show);
12365
12747
  }
12366
- this._toggle(show);
12367
12748
  this.toggleFocus();
12368
12749
  }
12369
- _toggle(show) {
12750
+ toggleActionSheet(show) {
12751
+ if (show === this._show) {
12752
+ return;
12753
+ }
12754
+ if (show && !this.isOpen) {
12755
+ this.actionSheet.toggle();
12756
+ this.updateActionSheetAdaptiveAppearance();
12757
+ }
12758
+ else if (!show && this.isOpen) {
12759
+ // Need to disable the pointer events to avoid triggering focus on the timelist when acionsheet close down animation starts
12760
+ this.renderer.setStyle(this.timeSelector.element.nativeElement, 'pointer-events', 'none');
12761
+ this.actionSheet.toggle();
12762
+ }
12763
+ this._show = show;
12764
+ }
12765
+ togglePopup(show) {
12370
12766
  if (show === this.isOpen) {
12371
12767
  return;
12372
12768
  }
@@ -12395,6 +12791,25 @@ class TimePickerComponent {
12395
12791
  this.renderer.removeAttribute(inputElement, attributeNames.ariaControls);
12396
12792
  }
12397
12793
  }
12794
+ updateActionSheetAdaptiveAppearance() {
12795
+ let element;
12796
+ let animationContainer;
12797
+ if (this.actionSheet) {
12798
+ element = this.actionSheet['element'].nativeElement.querySelector('.k-actionsheet');
12799
+ animationContainer = this.actionSheet['element'].nativeElement.querySelector('.k-child-animation-container');
12800
+ if (this.windowSize === 'medium') {
12801
+ this.renderer.removeClass(element, 'k-actionsheet-fullscreen');
12802
+ this.renderer.removeStyle(animationContainer, 'height');
12803
+ }
12804
+ else if (this.windowSize === 'small') {
12805
+ this.renderer.addClass(element, 'k-actionsheet-fullscreen');
12806
+ this.renderer.setStyle(animationContainer, 'height', '100%');
12807
+ }
12808
+ this.renderer.addClass(element, 'k-adaptive-actionsheet');
12809
+ this.renderer.addClass(element, 'k-actionsheet-bottom');
12810
+ this.renderer.setStyle(animationContainer, 'bottom', '0px');
12811
+ }
12812
+ }
12398
12813
  focusInput() {
12399
12814
  if (this.touchEnabled) {
12400
12815
  return;
@@ -12445,7 +12860,7 @@ class TimePickerComponent {
12445
12860
  }
12446
12861
  }
12447
12862
  handleWindowBlur() {
12448
- if (!this.isOpen) {
12863
+ if (!this.isOpen || this.actionSheet.expanded) {
12449
12864
  return;
12450
12865
  }
12451
12866
  this.show = false;
@@ -12462,9 +12877,11 @@ class TimePickerComponent {
12462
12877
  }
12463
12878
  }
12464
12879
  handleBlur(args) {
12465
- const currentTarget = args && currentFocusTarget(args);
12880
+ const currentTarget = args && currentFocusTarget(args); // relatedTarget || activeElement
12881
+ const target = args && args.target;
12882
+ const isInsideActionSheet = this.actionSheet && (this.actionSheet.element.nativeElement.contains(target) || this.actionSheet.element.nativeElement.contains(currentTarget));
12466
12883
  if (currentTarget && (this.input.containsElement(currentTarget) ||
12467
- (this.timeSelector && this.timeSelector.containsElement(currentTarget)))) {
12884
+ (this.timeSelector && this.timeSelector.containsElement(currentTarget)) || isInsideActionSheet)) {
12468
12885
  return;
12469
12886
  }
12470
12887
  if (hasObservers(this.onBlur) || (this.show && hasObservers(this.close)) || requiresZoneOnBlur(this.control)) {
@@ -12504,7 +12921,7 @@ class TimePickerComponent {
12504
12921
  }
12505
12922
  }
12506
12923
  TimePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TimePickerComponent, deps: [{ token: BusViewService }, { token: i0.NgZone }, { token: i1$1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: i1$2.PopupService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.Injector }, { token: PickerService }, { token: i1.IntlService }, { token: TOUCH_ENABLED, optional: true }], target: i0.ɵɵFactoryTarget.Component });
12507
- TimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: TimePickerComponent, selector: "kendo-timepicker", inputs: { focusableId: "focusableId", disabled: "disabled", readonly: "readonly", readOnlyInput: "readOnlyInput", format: "format", formatPlaceholder: "formatPlaceholder", placeholder: "placeholder", min: "min", max: "max", incompleteDateValidation: "incompleteDateValidation", cancelButton: "cancelButton", nowButton: "nowButton", steps: "steps", popupSettings: "popupSettings", tabindex: "tabindex", tabIndex: "tabIndex", title: "title", rangeValidation: "rangeValidation", value: "value", size: "size", rounded: "rounded", fillMode: "fillMode" }, outputs: { valueChange: "valueChange", onFocus: "focus", onBlur: "blur", open: "open", close: "close" }, host: { properties: { "class.k-timepicker": "this.wrapperClasses", "class.k-input": "this.wrapperClasses", "class.k-disabled": "this.disabledClass" } }, providers: [
12924
+ TimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: TimePickerComponent, selector: "kendo-timepicker", inputs: { focusableId: "focusableId", disabled: "disabled", readonly: "readonly", readOnlyInput: "readOnlyInput", format: "format", formatPlaceholder: "formatPlaceholder", placeholder: "placeholder", min: "min", max: "max", incompleteDateValidation: "incompleteDateValidation", cancelButton: "cancelButton", nowButton: "nowButton", steps: "steps", popupSettings: "popupSettings", tabindex: "tabindex", tabIndex: "tabIndex", title: "title", subtitle: "subtitle", rangeValidation: "rangeValidation", adaptiveMode: "adaptiveMode", value: "value", size: "size", rounded: "rounded", fillMode: "fillMode" }, outputs: { valueChange: "valueChange", onFocus: "focus", onBlur: "blur", open: "open", close: "close" }, host: { properties: { "class.k-timepicker": "this.wrapperClasses", "class.k-input": "this.wrapperClasses", "class.k-disabled": "this.disabledClass" } }, providers: [
12508
12925
  { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => TimePickerComponent), multi: true },
12509
12926
  { provide: NG_VALIDATORS, useExisting: forwardRef(() => TimePickerComponent), multi: true },
12510
12927
  { provide: KendoInput, useExisting: forwardRef(() => TimePickerComponent) },
@@ -12515,7 +12932,7 @@ TimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
12515
12932
  useValue: 'kendo.timepicker'
12516
12933
  },
12517
12934
  PickerService
12518
- ], viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef }, { propertyName: "popupTemplate", first: true, predicate: ["popupTemplate"], descendants: true }, { propertyName: "toggleButton", first: true, predicate: ["toggleButton"], descendants: true, static: true }], exportAs: ["kendo-timepicker"], usesOnChanges: true, ngImport: i0, template: `
12935
+ ], viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef }, { propertyName: "popupTemplate", first: true, predicate: ["popupTemplate"], descendants: true }, { propertyName: "toggleButton", first: true, predicate: ["toggleButton"], descendants: true, static: true }, { propertyName: "actionSheet", first: true, predicate: ["actionSheet"], descendants: true }], exportAs: ["kendo-timepicker"], usesOnChanges: true, ngImport: i0, template: `
12519
12936
  <ng-container kendoTimePickerLocalizedMessages
12520
12937
  i18n-accept="kendo.timepicker.accept|The Accept button text in the timepicker component"
12521
12938
  accept="Set"
@@ -12578,6 +12995,7 @@ TimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
12578
12995
  [title]="title"
12579
12996
  [value]="value"
12580
12997
  (valueChange)="handleInputChange($event)"
12998
+ (click)="handleDateInputClick()"
12581
12999
  ></kendo-dateinput>
12582
13000
  <button
12583
13001
  #toggleButton
@@ -12600,15 +13018,76 @@ TimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
12600
13018
  </kendo-icon-wrapper>
12601
13019
  </button>
12602
13020
  <ng-template #popupTemplate>
13021
+ <ng-container *ngTemplateOutlet="timeSelectorTemplate"></ng-container>
13022
+ </ng-template>
13023
+ <ng-container #container></ng-container>
13024
+
13025
+ <kendo-resize-sensor *ngIf="isAdaptiveModeEnabled" (resize)="onResize()"></kendo-resize-sensor>
13026
+ <kendo-actionsheet
13027
+ #actionSheet
13028
+ (overlayClick)="show=false"
13029
+ (collapse)="handleActionSheetCollapse()"
13030
+ >
13031
+ <ng-template kendoActionSheetTemplate>
13032
+ <div class="k-actionsheet-titlebar">
13033
+ <div class="k-actionsheet-titlebar-group k-hbox">
13034
+ <div class="k-actionsheet-title">
13035
+ <div class="k-text-center">{{ title }}</div>
13036
+ <div class="k-actionsheet-subtitle k-text-center">{{ subtitle }}</div>
13037
+ </div>
13038
+ <div class="k-actionsheet-actions">
13039
+ <button
13040
+ kendoButton
13041
+ icon="x"
13042
+ [attr.title]="localization.get('clearTitle')"
13043
+ [svgIcon]="xIcon"
13044
+ fillMode="flat"
13045
+ size="large"
13046
+ innerCssClass="k-button-icon"
13047
+ (click)="show = false">
13048
+ </button>
13049
+ </div>
13050
+ </div>
13051
+ </div>
13052
+ <div class="k-actionsheet-content !k-overflow-hidden">
13053
+ <ng-container *ngTemplateOutlet="timeSelectorTemplate"></ng-container>
13054
+ </div>
13055
+ <div class="k-actions k-actions-stretched k-actions-horizontal k-actionsheet-footer">
13056
+ <button kendoButton
13057
+ (click)="handleReject()"
13058
+ size="large"
13059
+ [attr.title]="localization.get('cancelLabel')"
13060
+ [attr.aria-label]="localization.get('cancelLabel')"
13061
+ >
13062
+ {{localization.get('cancel')}}
13063
+ </button>
13064
+
13065
+ <button kendoButton
13066
+ (click)="handleActionSheetAccept()"
13067
+ size="large"
13068
+ themeColor="primary"
13069
+ [attr.title]="localization.get('acceptLabel')"
13070
+ [attr.aria-label]="localization.get('acceptLabel')"
13071
+ >
13072
+ {{localization.get('accept')}}
13073
+ </button>
13074
+ </div>
13075
+ </ng-template>
13076
+ </kendo-actionsheet>
13077
+
13078
+ <ng-template #timeSelectorTemplate>
12603
13079
  <kendo-timeselector
12604
13080
  #timeSelector
12605
- [cancelButton]="cancelButton"
13081
+ [class.k-timeselector-lg]="isAdaptive"
13082
+ [cancelButton]="cancelButton && !this.isAdaptive"
13083
+ [setButton]="!isAdaptive"
12606
13084
  [nowButton]="nowButton"
12607
13085
  [format]="format"
12608
13086
  [min]="min"
12609
13087
  [max]="max"
12610
13088
  [steps]="steps"
12611
13089
  [value]="value"
13090
+ [isAdaptiveEnabled]="isAdaptiveModeEnabled"
12612
13091
  [kendoEventsOutsideAngular]="{
12613
13092
  keydown: handleKeydown,
12614
13093
  mousedown: handleMousedown
@@ -12633,8 +13112,7 @@ TimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
12633
13112
  </kendo-timeselector-messages>
12634
13113
  </kendo-timeselector>
12635
13114
  </ng-template>
12636
- <ng-container #container></ng-container>
12637
- `, isInline: true, components: [{ type: DateInputComponent, selector: "kendo-dateinput", inputs: ["focusableId", "pickerType", "disabled", "readonly", "title", "tabindex", "role", "ariaReadOnly", "tabIndex", "format", "formatPlaceholder", "placeholder", "steps", "max", "min", "rangeValidation", "autoCorrect", "incompleteDateValidation", "twoDigitYearMax", "value", "spinners", "isPopupOpen", "hasPopup", "size", "rounded", "fillMode"], outputs: ["valueChange", "valueUpdate", "focus", "blur"], exportAs: ["kendo-dateinput"] }, { type: i7$1.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass"], exportAs: ["kendoIconWrapper"] }, { type: TimeSelectorComponent, selector: "kendo-timeselector", inputs: ["format", "min", "max", "cancelButton", "setButton", "nowButton", "disabled", "steps", "value"], outputs: ["valueChange", "valueReject"], exportAs: ["kendo-timeselector"] }, { type: TimeSelectorCustomMessagesComponent, selector: "kendo-timeselector-messages" }], directives: [{ type: TimePickerLocalizedMessagesDirective, selector: "[kendoTimePickerLocalizedMessages]" }, { type: i6.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
13115
+ `, isInline: true, components: [{ type: DateInputComponent, selector: "kendo-dateinput", inputs: ["focusableId", "pickerType", "disabled", "readonly", "title", "tabindex", "role", "ariaReadOnly", "tabIndex", "format", "formatPlaceholder", "placeholder", "steps", "max", "min", "rangeValidation", "autoCorrect", "incompleteDateValidation", "twoDigitYearMax", "value", "spinners", "isPopupOpen", "hasPopup", "size", "rounded", "fillMode"], outputs: ["valueChange", "valueUpdate", "focus", "blur"], exportAs: ["kendo-dateinput"] }, { type: i7$1.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass"], exportAs: ["kendoIconWrapper"] }, { type: i8.ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { type: i9.ActionSheetComponent, selector: "kendo-actionsheet", inputs: ["title", "subtitle", "items", "cssClass", "animation", "expanded"], outputs: ["expandedChange", "expand", "collapse", "itemClick", "overlayClick"], exportAs: ["kendoActionSheet"] }, { type: i10.Button, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { type: TimeSelectorComponent, selector: "kendo-timeselector", inputs: ["format", "min", "max", "cancelButton", "setButton", "nowButton", "disabled", "isAdaptiveEnabled", "isDateTimePicker", "steps", "value"], outputs: ["valueChange", "valueReject"], exportAs: ["kendo-timeselector"] }, { type: TimeSelectorCustomMessagesComponent, selector: "kendo-timeselector-messages" }], directives: [{ type: TimePickerLocalizedMessagesDirective, selector: "[kendoTimePickerLocalizedMessages]" }, { type: i8.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.ActionSheetTemplateDirective, selector: "[kendoActionSheetTemplate]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
12638
13116
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TimePickerComponent, decorators: [{
12639
13117
  type: Component,
12640
13118
  args: [{
@@ -12716,6 +13194,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
12716
13194
  [title]="title"
12717
13195
  [value]="value"
12718
13196
  (valueChange)="handleInputChange($event)"
13197
+ (click)="handleDateInputClick()"
12719
13198
  ></kendo-dateinput>
12720
13199
  <button
12721
13200
  #toggleButton
@@ -12738,15 +13217,76 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
12738
13217
  </kendo-icon-wrapper>
12739
13218
  </button>
12740
13219
  <ng-template #popupTemplate>
12741
- <kendo-timeselector
12742
- #timeSelector
12743
- [cancelButton]="cancelButton"
12744
- [nowButton]="nowButton"
12745
- [format]="format"
12746
- [min]="min"
12747
- [max]="max"
13220
+ <ng-container *ngTemplateOutlet="timeSelectorTemplate"></ng-container>
13221
+ </ng-template>
13222
+ <ng-container #container></ng-container>
13223
+
13224
+ <kendo-resize-sensor *ngIf="isAdaptiveModeEnabled" (resize)="onResize()"></kendo-resize-sensor>
13225
+ <kendo-actionsheet
13226
+ #actionSheet
13227
+ (overlayClick)="show=false"
13228
+ (collapse)="handleActionSheetCollapse()"
13229
+ >
13230
+ <ng-template kendoActionSheetTemplate>
13231
+ <div class="k-actionsheet-titlebar">
13232
+ <div class="k-actionsheet-titlebar-group k-hbox">
13233
+ <div class="k-actionsheet-title">
13234
+ <div class="k-text-center">{{ title }}</div>
13235
+ <div class="k-actionsheet-subtitle k-text-center">{{ subtitle }}</div>
13236
+ </div>
13237
+ <div class="k-actionsheet-actions">
13238
+ <button
13239
+ kendoButton
13240
+ icon="x"
13241
+ [attr.title]="localization.get('clearTitle')"
13242
+ [svgIcon]="xIcon"
13243
+ fillMode="flat"
13244
+ size="large"
13245
+ innerCssClass="k-button-icon"
13246
+ (click)="show = false">
13247
+ </button>
13248
+ </div>
13249
+ </div>
13250
+ </div>
13251
+ <div class="k-actionsheet-content !k-overflow-hidden">
13252
+ <ng-container *ngTemplateOutlet="timeSelectorTemplate"></ng-container>
13253
+ </div>
13254
+ <div class="k-actions k-actions-stretched k-actions-horizontal k-actionsheet-footer">
13255
+ <button kendoButton
13256
+ (click)="handleReject()"
13257
+ size="large"
13258
+ [attr.title]="localization.get('cancelLabel')"
13259
+ [attr.aria-label]="localization.get('cancelLabel')"
13260
+ >
13261
+ {{localization.get('cancel')}}
13262
+ </button>
13263
+
13264
+ <button kendoButton
13265
+ (click)="handleActionSheetAccept()"
13266
+ size="large"
13267
+ themeColor="primary"
13268
+ [attr.title]="localization.get('acceptLabel')"
13269
+ [attr.aria-label]="localization.get('acceptLabel')"
13270
+ >
13271
+ {{localization.get('accept')}}
13272
+ </button>
13273
+ </div>
13274
+ </ng-template>
13275
+ </kendo-actionsheet>
13276
+
13277
+ <ng-template #timeSelectorTemplate>
13278
+ <kendo-timeselector
13279
+ #timeSelector
13280
+ [class.k-timeselector-lg]="isAdaptive"
13281
+ [cancelButton]="cancelButton && !this.isAdaptive"
13282
+ [setButton]="!isAdaptive"
13283
+ [nowButton]="nowButton"
13284
+ [format]="format"
13285
+ [min]="min"
13286
+ [max]="max"
12748
13287
  [steps]="steps"
12749
13288
  [value]="value"
13289
+ [isAdaptiveEnabled]="isAdaptiveModeEnabled"
12750
13290
  [kendoEventsOutsideAngular]="{
12751
13291
  keydown: handleKeydown,
12752
13292
  mousedown: handleMousedown
@@ -12771,7 +13311,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
12771
13311
  </kendo-timeselector-messages>
12772
13312
  </kendo-timeselector>
12773
13313
  </ng-template>
12774
- <ng-container #container></ng-container>
12775
13314
  `
12776
13315
  }]
12777
13316
  }], ctorParameters: function () {
@@ -12790,6 +13329,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
12790
13329
  }], toggleButton: [{
12791
13330
  type: ViewChild,
12792
13331
  args: ['toggleButton', { static: true }]
13332
+ }], actionSheet: [{
13333
+ type: ViewChild,
13334
+ args: ['actionSheet']
12793
13335
  }], focusableId: [{
12794
13336
  type: Input
12795
13337
  }], disabled: [{
@@ -12824,8 +13366,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
12824
13366
  type: Input
12825
13367
  }], title: [{
12826
13368
  type: Input
13369
+ }], subtitle: [{
13370
+ type: Input
12827
13371
  }], rangeValidation: [{
12828
13372
  type: Input
13373
+ }], adaptiveMode: [{
13374
+ type: Input
12829
13375
  }], value: [{
12830
13376
  type: Input
12831
13377
  }], size: [{
@@ -12972,7 +13518,8 @@ class DateTimePickerComponent {
12972
13518
  */
12973
13519
  this.twoDigitYearMax = TWO_DIGIT_YEAR_MAX;
12974
13520
  /**
12975
- * Sets the title of the input element of the DateTimePicker.
13521
+ * Sets the title of the input element of the DateTimePicker and the title text rendered
13522
+ * in the header of the popup(action sheet). Applicable only when [`AdaptiveMode` is set to `auto`](slug:api_dateinputs_adaptivemode).
12976
13523
  */
12977
13524
  this.title = '';
12978
13525
  /**
@@ -13041,6 +13588,10 @@ class DateTimePickerComponent {
13041
13588
  * Determines whether the built-in validation for incomplete dates is to be enforced when a form is being validated.
13042
13589
  */
13043
13590
  this.incompleteDateValidation = false;
13591
+ /**
13592
+ * Enables or disables the adaptive mode. By default the adaptive rendering is disabled.
13593
+ */
13594
+ this.adaptiveMode = 'none';
13044
13595
  /**
13045
13596
  * Fires each time the user selects a new value.
13046
13597
  * ([more information and example]({% slug overview_datetimepicker %}#toc-methods-and-events)).
@@ -13101,6 +13652,10 @@ class DateTimePickerComponent {
13101
13652
  * @hidden
13102
13653
  */
13103
13654
  this.calendarMax = lastMillisecondOfDate(MAX_DATE);
13655
+ /**
13656
+ * @hidden
13657
+ */
13658
+ this.xIcon = xIcon;
13104
13659
  this._popupSettings = { animate: true };
13105
13660
  this._value = null;
13106
13661
  this._format = DEFAULT_DATEINPUT_FORMAT;
@@ -13221,6 +13776,16 @@ class DateTimePickerComponent {
13221
13776
  get popupSettings() {
13222
13777
  return this._popupSettings;
13223
13778
  }
13779
+ /**
13780
+ * Sets the subtitle text rendered in the header of the popup(action sheet).
13781
+ * Applicable only when [`AdaptiveMode` is set to `auto`](slug:api_dateinputs_adaptivemode).
13782
+ */
13783
+ set subtitle(subtitle) {
13784
+ this._subtitle = subtitle;
13785
+ }
13786
+ get subtitle() {
13787
+ return this._subtitle || this.placeholder;
13788
+ }
13224
13789
  /**
13225
13790
  * Specifies the smallest valid date.
13226
13791
  * The Calendar will not display dates before this value.
@@ -13256,10 +13821,13 @@ class DateTimePickerComponent {
13256
13821
  return this._max;
13257
13822
  }
13258
13823
  /**
13259
- * Indicates whether the component is currently open.
13824
+ * Indicates whether the component is currently open. That is when the popup or actionSheet is open.
13260
13825
  */
13261
13826
  get isOpen() {
13262
- return isPresent(this.popupRef);
13827
+ if (!this.isAdaptive) {
13828
+ return isPresent(this.popupRef);
13829
+ }
13830
+ return this.actionSheet && this.actionSheet.expanded;
13263
13831
  }
13264
13832
  /**
13265
13833
  * Indicates whether the component or its popup content is focused.
@@ -13387,6 +13955,34 @@ class DateTimePickerComponent {
13387
13955
  get disableTimeSelector() {
13388
13956
  return this.activeTab !== 'time' && !this.timeSelector.isActive;
13389
13957
  }
13958
+ /**
13959
+ * @hidden
13960
+ */
13961
+ get isAdaptiveModeEnabled() {
13962
+ return this.adaptiveMode === 'auto';
13963
+ }
13964
+ /**
13965
+ * @hidden
13966
+ */
13967
+ get isAdaptive() {
13968
+ return this.isAdaptiveModeEnabled && this.windowSize !== 'large';
13969
+ }
13970
+ /**
13971
+ * @hidden
13972
+ */
13973
+ onResize() {
13974
+ if (!this.isOpen || this.windowSize === windowSize()) {
13975
+ return;
13976
+ }
13977
+ ;
13978
+ if (this.actionSheet.expanded) {
13979
+ this.toggleActionSheet(false);
13980
+ }
13981
+ else {
13982
+ this._togglePopup(false);
13983
+ }
13984
+ this.windowSize = windowSize();
13985
+ }
13390
13986
  get activeTabComponent() {
13391
13987
  if (!this.isOpen) {
13392
13988
  return;
@@ -13418,11 +14014,16 @@ class DateTimePickerComponent {
13418
14014
  this.subscriptions.add(this.localization.changes.subscribe(() => this.cdr.markForCheck()));
13419
14015
  this.subscriptions.add(this.pickerService.dateCompletenessChange.subscribe(this.handleDateCompletenessChange.bind(this)));
13420
14016
  if (isWindowAvailable()) {
13421
- this.subscriptions.add(this.ngZone.runOutsideAngular(() => fromEvent(window, 'blur').subscribe(this.handleCancel.bind(this))));
14017
+ this.subscriptions.add(this.ngZone.runOutsideAngular(() => fromEvent(window, 'blur').subscribe(() => {
14018
+ if (!this.isAdaptive) {
14019
+ this.handleCancel();
14020
+ }
14021
+ })));
13422
14022
  }
13423
14023
  }
13424
14024
  ngAfterViewInit() {
13425
14025
  this.setComponentClasses();
14026
+ this.renderer.setAttribute(this.actionSheet.element.nativeElement, 'style', '--kendo-actionsheet-height: 60vh; --kendo-actionsheet-max-height: none');
13426
14027
  }
13427
14028
  ngOnChanges(changes) {
13428
14029
  if (isPresent(changes['min']) || isPresent(changes['max'])) {
@@ -13469,7 +14070,8 @@ class DateTimePickerComponent {
13469
14070
  }
13470
14071
  }
13471
14072
  /**
13472
- * Toggles the visibility of the popup. If you use the `toggle` method to show or hide the popup,
14073
+ * Toggles the visibility of the popup or actionSheet.
14074
+ * If you use the `toggle` method to show or hide the popup or actionSheet,
13473
14075
  * the `open` and `close` events do not fire.
13474
14076
  * ([more information and example]({% slug overview_datetimepicker %}#toc-methods-and-events)).
13475
14077
  *
@@ -13479,17 +14081,12 @@ class DateTimePickerComponent {
13479
14081
  if (this.disabled || this.readonly || show === this.isOpen) {
13480
14082
  return;
13481
14083
  }
13482
- const shouldOpen = isPresent(show) ? show : !this.isOpen;
13483
- if (shouldOpen) {
13484
- this.openPopup();
14084
+ this.windowSize = windowSize();
14085
+ if (this.isAdaptive) {
14086
+ this.toggleActionSheet(show);
13485
14087
  }
13486
14088
  else {
13487
- this.closePopup();
13488
- // Changes the tab and the calendar or clock icon to the designated default.
13489
- if (this.activeTab !== this.defaultTab) {
13490
- this.activeTab = this.defaultTab;
13491
- this.cdr.detectChanges();
13492
- }
14089
+ this._togglePopup(show);
13493
14090
  }
13494
14091
  }
13495
14092
  /**
@@ -13551,7 +14148,7 @@ class DateTimePickerComponent {
13551
14148
  const shouldOpen = !this.isOpen;
13552
14149
  // handle focus first to maintain correct event order `focus` => `open`
13553
14150
  this.handleFocus();
13554
- this.togglePopup(shouldOpen);
14151
+ this.toggleDateTime(shouldOpen);
13555
14152
  this.switchFocus();
13556
14153
  });
13557
14154
  }
@@ -13580,7 +14177,7 @@ class DateTimePickerComponent {
13580
14177
  this.run(runInZone, () => {
13581
14178
  this.onBlur.emit();
13582
14179
  this.onControlTouched();
13583
- this.togglePopup(false);
14180
+ this.toggleDateTime(false);
13584
14181
  this.cdr.markForCheck();
13585
14182
  });
13586
14183
  }
@@ -13624,7 +14221,7 @@ class DateTimePickerComponent {
13624
14221
  const runInZone = valueChangePresent || hasObservers(this.close);
13625
14222
  this.run(runInZone, () => {
13626
14223
  this.handleValueChange(candidate);
13627
- this.togglePopup(false);
14224
+ this.toggleDateTime(false);
13628
14225
  });
13629
14226
  }
13630
14227
  /**
@@ -13635,7 +14232,7 @@ class DateTimePickerComponent {
13635
14232
  return;
13636
14233
  }
13637
14234
  const runInZone = hasObservers(this.close);
13638
- this.run(runInZone, () => this.togglePopup(false));
14235
+ this.run(runInZone, () => this.toggleDateTime(false));
13639
14236
  }
13640
14237
  /**
13641
14238
  * @hidden
@@ -13643,7 +14240,16 @@ class DateTimePickerComponent {
13643
14240
  handleInputValueChange(value) {
13644
14241
  this.handleValueChange(value);
13645
14242
  if (this.isOpen) {
13646
- this.togglePopup(false);
14243
+ this.toggleDateTime(false);
14244
+ }
14245
+ }
14246
+ /**
14247
+ * @hidden
14248
+ */
14249
+ handleDateInputClick() {
14250
+ this.windowSize = windowSize();
14251
+ if (this.isAdaptive) {
14252
+ this.toggleDateTime(true);
13647
14253
  }
13648
14254
  }
13649
14255
  /**
@@ -13667,7 +14273,7 @@ class DateTimePickerComponent {
13667
14273
  this.handleCancel();
13668
14274
  break;
13669
14275
  case !this.isOpen && altKey && Keys$1.ArrowDown:
13670
- this.ngZone.run(() => this.togglePopup(true));
14276
+ this.ngZone.run(() => this.toggleDateTime(true));
13671
14277
  break;
13672
14278
  case altKey && Keys$1.ArrowRight:
13673
14279
  this.changeActiveTab('time');
@@ -13703,12 +14309,22 @@ class DateTimePickerComponent {
13703
14309
  this.input.focus();
13704
14310
  }
13705
14311
  }
14312
+ /**
14313
+ * @hidden
14314
+ */
14315
+ handleActionSheetCollapse() {
14316
+ // If not handled, the actionsheet expanded state does not get updated when overlay is clicked
14317
+ this.cdr.markForCheck();
14318
+ // Reset tabs after actionsheet is collapsed, otherwise the tab change can be seen during the animation
14319
+ this.resetActiveTab();
14320
+ }
13706
14321
  /**
13707
14322
  * @hidden
13708
14323
  */
13709
14324
  popupButtonsClasses(type) {
13710
14325
  const buttonType = type ? type : 'base';
13711
- return `${this.size ? getSizeClass('button', this.size) : ''} ${this.rounded ? getRoundedClass(this.rounded) : ''} ${this.fillMode ? 'k-button-' + this.fillMode + ' ' + 'k-button-' + this.fillMode + '-' + buttonType : ''}`;
14326
+ const sizeClass = `${this.isAdaptive ? getSizeClass('button', 'large') : this.size ? getSizeClass('button', this.size) : ''}`;
14327
+ return `${sizeClass} ${this.rounded ? getRoundedClass(this.rounded) : ''} ${this.fillMode ? 'k-button-' + this.fillMode + ' ' + 'k-button-' + this.fillMode + '-' + buttonType : ''}`;
13712
14328
  }
13713
14329
  /**
13714
14330
  * @hidden
@@ -13718,6 +14334,55 @@ class DateTimePickerComponent {
13718
14334
  preventMouseDown(event) {
13719
14335
  event.preventDefault();
13720
14336
  }
14337
+ _togglePopup(show) {
14338
+ const shouldOpen = isPresent(show) ? show : !this.isOpen;
14339
+ if (shouldOpen) {
14340
+ this.openPopup();
14341
+ return;
14342
+ }
14343
+ this.closePopup();
14344
+ this.resetActiveTab();
14345
+ }
14346
+ toggleActionSheet(show) {
14347
+ if (isPresent(show) && show && !this.isOpen) {
14348
+ this.actionSheet.toggle();
14349
+ this.updateActionSheetAdaptiveAppearance();
14350
+ this.setAriaActiveDescendant();
14351
+ }
14352
+ else if (isPresent(show) && !show && this.isOpen) {
14353
+ this.actionSheet.toggle();
14354
+ this.ariaActiveDescendantSubscription.unsubscribe();
14355
+ this.renderer.removeAttribute(this.input.inputElement, attributeNames.ariaActiveDescendant);
14356
+ }
14357
+ }
14358
+ updateActionSheetAdaptiveAppearance() {
14359
+ let element;
14360
+ let animationContainer;
14361
+ if (this.actionSheet) {
14362
+ element = this.actionSheet['element'].nativeElement.querySelector('.k-actionsheet');
14363
+ animationContainer = this.actionSheet['element'].nativeElement.querySelector('.k-child-animation-container');
14364
+ if (this.windowSize === 'medium') {
14365
+ this.renderer.removeClass(element, 'k-actionsheet-fullscreen');
14366
+ this.renderer.removeStyle(animationContainer, 'height');
14367
+ }
14368
+ else if (this.windowSize === 'small') {
14369
+ this.renderer.addClass(element, 'k-actionsheet-fullscreen');
14370
+ this.renderer.setStyle(animationContainer, 'height', '100%');
14371
+ }
14372
+ this.renderer.addClass(element, 'k-adaptive-actionsheet');
14373
+ this.renderer.addClass(element, 'k-actionsheet-bottom');
14374
+ this.renderer.setStyle(animationContainer, 'bottom', '0px');
14375
+ }
14376
+ }
14377
+ /**
14378
+ * Changes the tab and the calendar or clock icon to the designated default.
14379
+ */
14380
+ resetActiveTab() {
14381
+ if (this.activeTab !== this.defaultTab) {
14382
+ this.activeTab = this.defaultTab;
14383
+ this.cdr.detectChanges();
14384
+ }
14385
+ }
13721
14386
  verifyValue(value) {
13722
14387
  if (!isDevMode()) {
13723
14388
  return;
@@ -13774,7 +14439,10 @@ class DateTimePickerComponent {
13774
14439
  }
13775
14440
  return timeFormatRegExp.test(part.type);
13776
14441
  }
13777
- togglePopup(open) {
14442
+ /**
14443
+ * @hidden
14444
+ */
14445
+ toggleDateTime(open) {
13778
14446
  if (open === this.isOpen) {
13779
14447
  return;
13780
14448
  }
@@ -13821,24 +14489,20 @@ class DateTimePickerComponent {
13821
14489
  });
13822
14490
  this.popupRef.popupElement.setAttribute('id', this.popupUID);
13823
14491
  this.renderer.setAttribute(this.inputElement, attributeNames.ariaControls, this.popupUID);
13824
- if (this.activeTab === 'date') {
13825
- if (this.calendar.type === 'infinite') {
13826
- this.subscriptions.add(this.calendar.monthView.focusedCellChange.subscribe((id) => {
13827
- this.renderer.setAttribute(this.inputElement, attributeNames.ariaActiveDescendant, id);
13828
- }));
13829
- }
13830
- else {
13831
- this.subscriptions.add(this.calendar.multiViewCalendar.viewList.focusedCellChange.subscribe((id) => {
13832
- this.renderer.setAttribute(this.inputElement, attributeNames.ariaActiveDescendant, id);
13833
- }));
13834
- }
13835
- }
14492
+ this.setAriaActiveDescendant();
13836
14493
  this.popupRef.popupAnchorViewportLeave.subscribe(() => this.handleCancel());
13837
14494
  }
14495
+ setAriaActiveDescendant() {
14496
+ const focusedCellChangeEvent = this.calendar.type === 'infinite' ?
14497
+ this.calendar.monthView.focusedCellChange :
14498
+ this.calendar.multiViewCalendar.viewList.focusedCellChange;
14499
+ this.ariaActiveDescendantSubscription = focusedCellChangeEvent.subscribe((id) => this.renderer.setAttribute(this.input.inputElement, attributeNames.ariaActiveDescendant, id));
14500
+ }
13838
14501
  closePopup() {
13839
14502
  if (!this.isOpen) {
13840
14503
  return;
13841
14504
  }
14505
+ this.ariaActiveDescendantSubscription.unsubscribe();
13842
14506
  this.renderer.removeAttribute(this.inputElement, attributeNames.ariaControls);
13843
14507
  this.renderer.removeAttribute(this.inputElement, attributeNames.ariaActiveDescendant);
13844
14508
  this.popupRef.close();
@@ -13863,7 +14527,8 @@ class DateTimePickerComponent {
13863
14527
  const relatedTarget = event.relatedTarget || document.activeElement;
13864
14528
  const focusInPopup = isPresent(this.popupRef) && this.popupRef.popupElement.contains(relatedTarget);
13865
14529
  const focusInWrapper = this.wrapper.nativeElement.contains(relatedTarget);
13866
- return focusInPopup || focusInWrapper;
14530
+ const isInsideActionSheet = this.actionSheet && (this.actionSheet.element.nativeElement.contains(event.target) || this.actionSheet.element.nativeElement.contains(relatedTarget));
14531
+ return focusInPopup || focusInWrapper || isInsideActionSheet;
13867
14532
  }
13868
14533
  setTimeSelectorMinMax(selectedDate) {
13869
14534
  const minDateSelected = isPresent(selectedDate) && isEqual(getDate(selectedDate), getDate(this.min));
@@ -13879,7 +14544,7 @@ class DateTimePickerComponent {
13879
14544
  * If the popup is available, runs a popup change detection.
13880
14545
  */
13881
14546
  detectPopupChanges() {
13882
- if (!this.isOpen) {
14547
+ if (!this.isOpen || this.isAdaptive) {
13883
14548
  return;
13884
14549
  }
13885
14550
  this.popupRef.popup.changeDetectorRef.detectChanges();
@@ -13916,7 +14581,7 @@ class DateTimePickerComponent {
13916
14581
  }
13917
14582
  }
13918
14583
  DateTimePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DateTimePickerComponent, deps: [{ token: i1$2.PopupService }, { token: i1.IntlService }, { token: i0.ChangeDetectorRef }, { token: PickerService }, { token: i0.NgZone }, { token: i0.ElementRef }, { token: TOUCH_ENABLED }, { token: i1$1.LocalizationService }, { token: DisabledDatesService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
13919
- DateTimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: DateTimePickerComponent, selector: "kendo-datetimepicker", inputs: { focusableId: "focusableId", value: "value", format: "format", twoDigitYearMax: "twoDigitYearMax", tabindex: "tabindex", disabledDates: "disabledDates", popupSettings: "popupSettings", title: "title", disabled: "disabled", readonly: "readonly", readOnlyInput: "readOnlyInput", cancelButton: "cancelButton", formatPlaceholder: "formatPlaceholder", placeholder: "placeholder", steps: "steps", focusedDate: "focusedDate", calendarType: "calendarType", animateCalendarNavigation: "animateCalendarNavigation", weekNumber: "weekNumber", min: "min", max: "max", rangeValidation: "rangeValidation", disabledDatesValidation: "disabledDatesValidation", incompleteDateValidation: "incompleteDateValidation", defaultTab: "defaultTab", size: "size", rounded: "rounded", fillMode: "fillMode" }, outputs: { valueChange: "valueChange", open: "open", close: "close", onFocus: "focus", onBlur: "blur" }, host: { properties: { "class.k-datetimepicker": "this.hostClasses", "class.k-input": "this.hostClasses", "class.k-disabled": "this.disabledClass" } }, providers: [
14584
+ DateTimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: DateTimePickerComponent, selector: "kendo-datetimepicker", inputs: { focusableId: "focusableId", value: "value", format: "format", twoDigitYearMax: "twoDigitYearMax", tabindex: "tabindex", disabledDates: "disabledDates", popupSettings: "popupSettings", title: "title", subtitle: "subtitle", disabled: "disabled", readonly: "readonly", readOnlyInput: "readOnlyInput", cancelButton: "cancelButton", formatPlaceholder: "formatPlaceholder", placeholder: "placeholder", steps: "steps", focusedDate: "focusedDate", calendarType: "calendarType", animateCalendarNavigation: "animateCalendarNavigation", weekNumber: "weekNumber", min: "min", max: "max", rangeValidation: "rangeValidation", disabledDatesValidation: "disabledDatesValidation", incompleteDateValidation: "incompleteDateValidation", adaptiveMode: "adaptiveMode", defaultTab: "defaultTab", size: "size", rounded: "rounded", fillMode: "fillMode" }, outputs: { valueChange: "valueChange", open: "open", close: "close", onFocus: "focus", onBlur: "blur" }, host: { properties: { "class.k-datetimepicker": "this.hostClasses", "class.k-input": "this.hostClasses", "class.k-disabled": "this.disabledClass" } }, providers: [
13920
14585
  PickerService,
13921
14586
  LocalizationService,
13922
14587
  DisabledDatesService,
@@ -13924,7 +14589,7 @@ DateTimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0"
13924
14589
  { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DateTimePickerComponent), multi: true },
13925
14590
  { provide: NG_VALIDATORS, useExisting: forwardRef(() => DateTimePickerComponent), multi: true },
13926
14591
  { provide: KendoInput, useExisting: forwardRef(() => DateTimePickerComponent) }
13927
- ], queries: [{ propertyName: "cellTemplate", first: true, predicate: CellTemplateDirective, descendants: true }, { propertyName: "monthCellTemplate", first: true, predicate: MonthCellTemplateDirective, descendants: true }, { propertyName: "yearCellTemplate", first: true, predicate: YearCellTemplateDirective, descendants: true }, { propertyName: "decadeCellTemplate", first: true, predicate: DecadeCellTemplateDirective, descendants: true }, { propertyName: "centuryCellTemplate", first: true, predicate: CenturyCellTemplateDirective, descendants: true }, { propertyName: "weekNumberTemplate", first: true, predicate: WeekNumberCellTemplateDirective, descendants: true }, { propertyName: "headerTitleTemplate", first: true, predicate: HeaderTitleTemplateDirective, descendants: true }], viewQueries: [{ propertyName: "toggleButton", first: true, predicate: ["toggleButton"], descendants: true, static: true }, { propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "popupTemplate", first: true, predicate: ["popupTemplate"], descendants: true, read: TemplateRef, static: true }], exportAs: ["kendo-datetimepicker"], usesOnChanges: true, ngImport: i0, template: `
14592
+ ], queries: [{ propertyName: "cellTemplate", first: true, predicate: CellTemplateDirective, descendants: true }, { propertyName: "monthCellTemplate", first: true, predicate: MonthCellTemplateDirective, descendants: true }, { propertyName: "yearCellTemplate", first: true, predicate: YearCellTemplateDirective, descendants: true }, { propertyName: "decadeCellTemplate", first: true, predicate: DecadeCellTemplateDirective, descendants: true }, { propertyName: "centuryCellTemplate", first: true, predicate: CenturyCellTemplateDirective, descendants: true }, { propertyName: "weekNumberTemplate", first: true, predicate: WeekNumberCellTemplateDirective, descendants: true }, { propertyName: "headerTitleTemplate", first: true, predicate: HeaderTitleTemplateDirective, descendants: true }], viewQueries: [{ propertyName: "toggleButton", first: true, predicate: ["toggleButton"], descendants: true, static: true }, { propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "popupTemplate", first: true, predicate: ["popupTemplate"], descendants: true, read: TemplateRef, static: true }, { propertyName: "actionSheet", first: true, predicate: ["actionSheet"], descendants: true }], exportAs: ["kendo-datetimepicker"], usesOnChanges: true, ngImport: i0, template: `
13928
14593
  <ng-container
13929
14594
  kendoDateTimePickerLocalizedMessages
13930
14595
 
@@ -14000,6 +14665,7 @@ DateTimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0"
14000
14665
  [fillMode]="fillMode"
14001
14666
  [rounded]="rounded"
14002
14667
  [size]="size"
14668
+ (click)="handleDateInputClick()"
14003
14669
  >
14004
14670
  </kendo-dateinput>
14005
14671
  <button
@@ -14034,6 +14700,64 @@ DateTimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0"
14034
14700
  <ng-container #container></ng-container>
14035
14701
 
14036
14702
  <ng-template #popupTemplate>
14703
+ <ng-container *ngTemplateOutlet="dateTimeTemplate"></ng-container>
14704
+ </ng-template>
14705
+
14706
+ <kendo-resize-sensor *ngIf="isAdaptiveModeEnabled" (resize)="onResize()"></kendo-resize-sensor>
14707
+
14708
+ <kendo-actionsheet
14709
+ #actionSheet
14710
+ (overlayClick)="toggleDateTime(false)"
14711
+ (collapse)="handleActionSheetCollapse()"
14712
+ >
14713
+ <ng-template kendoActionSheetTemplate>
14714
+ <div class="k-actionsheet-titlebar">
14715
+ <div class="k-actionsheet-titlebar-group k-hbox">
14716
+ <div class="k-actionsheet-title">
14717
+ <div class="k-text-center">{{ title }}</div>
14718
+ <div class="k-actionsheet-subtitle k-text-center">{{ subtitle }}</div>
14719
+ </div>
14720
+ <div class="k-actionsheet-actions">
14721
+ <button
14722
+ kendoButton
14723
+ icon="x"
14724
+ [attr.title]="localization.get('clearTitle')"
14725
+ [svgIcon]="xIcon"
14726
+ fillMode="flat"
14727
+ size="large"
14728
+ innerCssClass="k-button-icon"
14729
+ (click)="toggleDateTime(false)">
14730
+ </button>
14731
+ </div>
14732
+ </div>
14733
+ </div>
14734
+ <div class="k-actionsheet-content !k-overflow-hidden">
14735
+ <ng-container *ngTemplateOutlet="dateTimeTemplate"></ng-container>
14736
+ </div>
14737
+ <div class="k-actions k-actions-stretched k-actions-horizontal k-actionsheet-footer">
14738
+ <button kendoButton
14739
+ (click)="handleCancel()"
14740
+ size="large"
14741
+ [attr.title]="localization.get('cancelLabel')"
14742
+ [attr.aria-label]="localization.get('cancelLabel')"
14743
+ >
14744
+ {{localization.get('cancel')}}
14745
+ </button>
14746
+
14747
+ <button kendoButton
14748
+ (click)="handleAccept()"
14749
+ size="large"
14750
+ themeColor="primary"
14751
+ [attr.title]="localization.get('acceptLabel')"
14752
+ [attr.aria-label]="localization.get('acceptLabel')"
14753
+ >
14754
+ {{localization.get('accept')}}
14755
+ </button>
14756
+ </div>
14757
+ </ng-template>
14758
+ </kendo-actionsheet>
14759
+
14760
+ <ng-template #dateTimeTemplate>
14037
14761
  <div
14038
14762
  class="k-datetime-wrap k-{{activeTab}}-tab"
14039
14763
  [kendoEventsOutsideAngular]="{
@@ -14092,6 +14816,7 @@ DateTimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0"
14092
14816
  >
14093
14817
  <div class="k-datetime-calendar-wrap">
14094
14818
  <kendo-calendar
14819
+ [ngClass]="{'k-calendar-lg': isAdaptive}"
14095
14820
  [focusedDate]="focusedDate"
14096
14821
  [(value)]="calendarValue"
14097
14822
  [type]="calendarType"
@@ -14121,6 +14846,7 @@ DateTimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0"
14121
14846
  </div>
14122
14847
  <div class="k-datetime-time-wrap">
14123
14848
  <kendo-timeselector
14849
+ [ngClass]="{'k-timeselector-lg': isAdaptive}"
14124
14850
  [value]="value"
14125
14851
  [format]="timeSelectorFormat"
14126
14852
  [min]="timeSelectorMin"
@@ -14129,6 +14855,8 @@ DateTimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0"
14129
14855
  [cancelButton]="false"
14130
14856
  [steps]="steps"
14131
14857
  [disabled]="disableTimeSelector"
14858
+ [isAdaptiveEnabled]="isAdaptiveModeEnabled"
14859
+ [isDateTimePicker]="true"
14132
14860
  >
14133
14861
  <kendo-timeselector-messages
14134
14862
  [now]="localization.get('now')"
@@ -14139,6 +14867,7 @@ DateTimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0"
14139
14867
  </div>
14140
14868
  </div>
14141
14869
  <div
14870
+ *ngIf="!isAdaptive"
14142
14871
  class="k-datetime-footer k-action-buttons k-actions k-hstack k-justify-content-stretch"
14143
14872
  [kendoEventsOutsideAngular]="{
14144
14873
  keydown: handleTabOut,
@@ -14178,7 +14907,7 @@ DateTimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0"
14178
14907
  </div>
14179
14908
  </div>
14180
14909
  </ng-template>
14181
- `, isInline: true, components: [{ type: DateInputComponent, selector: "kendo-dateinput", inputs: ["focusableId", "pickerType", "disabled", "readonly", "title", "tabindex", "role", "ariaReadOnly", "tabIndex", "format", "formatPlaceholder", "placeholder", "steps", "max", "min", "rangeValidation", "autoCorrect", "incompleteDateValidation", "twoDigitYearMax", "value", "spinners", "isPopupOpen", "hasPopup", "size", "rounded", "fillMode"], outputs: ["valueChange", "valueUpdate", "focus", "blur"], exportAs: ["kendo-dateinput"] }, { type: i7$1.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass"], exportAs: ["kendoIconWrapper"] }, { type: CalendarComponent, selector: "kendo-calendar", inputs: ["id", "focusedDate", "min", "max", "rangeValidation", "selection", "value", "disabled", "tabindex", "tabIndex", "disabledDates", "navigation", "activeView", "bottomView", "topView", "type", "animateNavigation", "weekNumber", "cellTemplate", "monthCellTemplate", "yearCellTemplate", "decadeCellTemplate", "centuryCellTemplate", "weekNumberTemplate", "headerTitleTemplate", "navigationItemTemplate"], outputs: ["activeViewChange", "navigate", "activeViewDateChange", "blur", "focus", "valueChange"], exportAs: ["kendo-calendar"] }, { type: CalendarCustomMessagesComponent, selector: "kendo-calendar-messages" }, { type: TimeSelectorComponent, selector: "kendo-timeselector", inputs: ["format", "min", "max", "cancelButton", "setButton", "nowButton", "disabled", "steps", "value"], outputs: ["valueChange", "valueReject"], exportAs: ["kendo-timeselector"] }, { type: TimeSelectorCustomMessagesComponent, selector: "kendo-timeselector-messages" }], directives: [{ type: LocalizedMessagesDirective, selector: "[kendoDateTimePickerLocalizedMessages]" }, { type: i6.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
14910
+ `, isInline: true, components: [{ type: DateInputComponent, selector: "kendo-dateinput", inputs: ["focusableId", "pickerType", "disabled", "readonly", "title", "tabindex", "role", "ariaReadOnly", "tabIndex", "format", "formatPlaceholder", "placeholder", "steps", "max", "min", "rangeValidation", "autoCorrect", "incompleteDateValidation", "twoDigitYearMax", "value", "spinners", "isPopupOpen", "hasPopup", "size", "rounded", "fillMode"], outputs: ["valueChange", "valueUpdate", "focus", "blur"], exportAs: ["kendo-dateinput"] }, { type: i7$1.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass"], exportAs: ["kendoIconWrapper"] }, { type: i8.ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { type: i9.ActionSheetComponent, selector: "kendo-actionsheet", inputs: ["title", "subtitle", "items", "cssClass", "animation", "expanded"], outputs: ["expandedChange", "expand", "collapse", "itemClick", "overlayClick"], exportAs: ["kendoActionSheet"] }, { type: i10.Button, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { type: CalendarComponent, selector: "kendo-calendar", inputs: ["id", "focusedDate", "min", "max", "rangeValidation", "selection", "value", "disabled", "tabindex", "tabIndex", "disabledDates", "navigation", "activeView", "bottomView", "topView", "type", "animateNavigation", "weekNumber", "cellTemplate", "monthCellTemplate", "yearCellTemplate", "decadeCellTemplate", "centuryCellTemplate", "weekNumberTemplate", "headerTitleTemplate", "navigationItemTemplate", "size"], outputs: ["activeViewChange", "navigate", "activeViewDateChange", "blur", "focus", "valueChange"], exportAs: ["kendo-calendar"] }, { type: CalendarCustomMessagesComponent, selector: "kendo-calendar-messages" }, { type: TimeSelectorComponent, selector: "kendo-timeselector", inputs: ["format", "min", "max", "cancelButton", "setButton", "nowButton", "disabled", "isAdaptiveEnabled", "isDateTimePicker", "steps", "value"], outputs: ["valueChange", "valueReject"], exportAs: ["kendo-timeselector"] }, { type: TimeSelectorCustomMessagesComponent, selector: "kendo-timeselector-messages" }], directives: [{ type: LocalizedMessagesDirective, selector: "[kendoDateTimePickerLocalizedMessages]" }, { type: i8.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i9.ActionSheetTemplateDirective, selector: "[kendoActionSheetTemplate]" }, { type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
14182
14911
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DateTimePickerComponent, decorators: [{
14183
14912
  type: Component,
14184
14913
  args: [{
@@ -14270,6 +14999,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
14270
14999
  [fillMode]="fillMode"
14271
15000
  [rounded]="rounded"
14272
15001
  [size]="size"
15002
+ (click)="handleDateInputClick()"
14273
15003
  >
14274
15004
  </kendo-dateinput>
14275
15005
  <button
@@ -14304,6 +15034,64 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
14304
15034
  <ng-container #container></ng-container>
14305
15035
 
14306
15036
  <ng-template #popupTemplate>
15037
+ <ng-container *ngTemplateOutlet="dateTimeTemplate"></ng-container>
15038
+ </ng-template>
15039
+
15040
+ <kendo-resize-sensor *ngIf="isAdaptiveModeEnabled" (resize)="onResize()"></kendo-resize-sensor>
15041
+
15042
+ <kendo-actionsheet
15043
+ #actionSheet
15044
+ (overlayClick)="toggleDateTime(false)"
15045
+ (collapse)="handleActionSheetCollapse()"
15046
+ >
15047
+ <ng-template kendoActionSheetTemplate>
15048
+ <div class="k-actionsheet-titlebar">
15049
+ <div class="k-actionsheet-titlebar-group k-hbox">
15050
+ <div class="k-actionsheet-title">
15051
+ <div class="k-text-center">{{ title }}</div>
15052
+ <div class="k-actionsheet-subtitle k-text-center">{{ subtitle }}</div>
15053
+ </div>
15054
+ <div class="k-actionsheet-actions">
15055
+ <button
15056
+ kendoButton
15057
+ icon="x"
15058
+ [attr.title]="localization.get('clearTitle')"
15059
+ [svgIcon]="xIcon"
15060
+ fillMode="flat"
15061
+ size="large"
15062
+ innerCssClass="k-button-icon"
15063
+ (click)="toggleDateTime(false)">
15064
+ </button>
15065
+ </div>
15066
+ </div>
15067
+ </div>
15068
+ <div class="k-actionsheet-content !k-overflow-hidden">
15069
+ <ng-container *ngTemplateOutlet="dateTimeTemplate"></ng-container>
15070
+ </div>
15071
+ <div class="k-actions k-actions-stretched k-actions-horizontal k-actionsheet-footer">
15072
+ <button kendoButton
15073
+ (click)="handleCancel()"
15074
+ size="large"
15075
+ [attr.title]="localization.get('cancelLabel')"
15076
+ [attr.aria-label]="localization.get('cancelLabel')"
15077
+ >
15078
+ {{localization.get('cancel')}}
15079
+ </button>
15080
+
15081
+ <button kendoButton
15082
+ (click)="handleAccept()"
15083
+ size="large"
15084
+ themeColor="primary"
15085
+ [attr.title]="localization.get('acceptLabel')"
15086
+ [attr.aria-label]="localization.get('acceptLabel')"
15087
+ >
15088
+ {{localization.get('accept')}}
15089
+ </button>
15090
+ </div>
15091
+ </ng-template>
15092
+ </kendo-actionsheet>
15093
+
15094
+ <ng-template #dateTimeTemplate>
14307
15095
  <div
14308
15096
  class="k-datetime-wrap k-{{activeTab}}-tab"
14309
15097
  [kendoEventsOutsideAngular]="{
@@ -14362,6 +15150,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
14362
15150
  >
14363
15151
  <div class="k-datetime-calendar-wrap">
14364
15152
  <kendo-calendar
15153
+ [ngClass]="{'k-calendar-lg': isAdaptive}"
14365
15154
  [focusedDate]="focusedDate"
14366
15155
  [(value)]="calendarValue"
14367
15156
  [type]="calendarType"
@@ -14391,6 +15180,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
14391
15180
  </div>
14392
15181
  <div class="k-datetime-time-wrap">
14393
15182
  <kendo-timeselector
15183
+ [ngClass]="{'k-timeselector-lg': isAdaptive}"
14394
15184
  [value]="value"
14395
15185
  [format]="timeSelectorFormat"
14396
15186
  [min]="timeSelectorMin"
@@ -14399,6 +15189,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
14399
15189
  [cancelButton]="false"
14400
15190
  [steps]="steps"
14401
15191
  [disabled]="disableTimeSelector"
15192
+ [isAdaptiveEnabled]="isAdaptiveModeEnabled"
15193
+ [isDateTimePicker]="true"
14402
15194
  >
14403
15195
  <kendo-timeselector-messages
14404
15196
  [now]="localization.get('now')"
@@ -14409,6 +15201,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
14409
15201
  </div>
14410
15202
  </div>
14411
15203
  <div
15204
+ *ngIf="!isAdaptive"
14412
15205
  class="k-datetime-footer k-action-buttons k-actions k-hstack k-justify-content-stretch"
14413
15206
  [kendoEventsOutsideAngular]="{
14414
15207
  keydown: handleTabOut,
@@ -14483,6 +15276,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
14483
15276
  type: Input
14484
15277
  }], title: [{
14485
15278
  type: Input
15279
+ }], subtitle: [{
15280
+ type: Input
14486
15281
  }], disabled: [{
14487
15282
  type: Input
14488
15283
  }], readonly: [{
@@ -14515,6 +15310,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
14515
15310
  type: Input
14516
15311
  }], incompleteDateValidation: [{
14517
15312
  type: Input
15313
+ }], adaptiveMode: [{
15314
+ type: Input
14518
15315
  }], valueChange: [{
14519
15316
  type: Output
14520
15317
  }], open: [{
@@ -14562,6 +15359,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
14562
15359
  }], popupTemplate: [{
14563
15360
  type: ViewChild,
14564
15361
  args: ['popupTemplate', { read: TemplateRef, static: true }]
15362
+ }], actionSheet: [{
15363
+ type: ViewChild,
15364
+ args: ['actionSheet']
14565
15365
  }] } });
14566
15366
 
14567
15367
  /**
@@ -14818,6 +15618,11 @@ class DateRangeSelectionDirective {
14818
15618
  * To disable this behavior, set the `autoCorrectOn` property to `none`.
14819
15619
  */
14820
15620
  this.autoCorrectOn = 'change';
15621
+ /**
15622
+ * @hidden
15623
+ * When in adaptive mode range should not be set automatically on calendar value change but only on accept
15624
+ */
15625
+ this.shouldSetRange = true;
14821
15626
  /**
14822
15627
  * Fires when the active range end is changed. For more information, refer to
14823
15628
  * the section on [events]({% slug overview_multiviewcalendar %}#toc-events).
@@ -14898,6 +15703,25 @@ class DateRangeSelectionDirective {
14898
15703
  ngOnDestroy() {
14899
15704
  this.calendarSubscriptions.unsubscribe();
14900
15705
  }
15706
+ /**
15707
+ * @hidden
15708
+ */
15709
+ handleChange(value) {
15710
+ const service = this.dateRangeService;
15711
+ const autoCorrect = this.autoCorrectOn === 'change' && this.shouldAutoCorrect(value);
15712
+ const activeEnd = this.calendar.activeRangeEnd !== 'end' ? 'end' : (autoCorrect ? 'end' : 'start');
15713
+ this.range = autoCorrect ? clampRange(value) : this.updateRange(value);
15714
+ if (!isEqualRange(service.selectionRange, this.range)) {
15715
+ this.acceptAndEmit(this.range);
15716
+ service.setActiveRangeEnd(activeEnd);
15717
+ if (this.shouldSetRange) {
15718
+ this.setRange();
15719
+ }
15720
+ }
15721
+ }
15722
+ setRange(range) {
15723
+ this.dateRangeService.setRange(this.range ? this.range : range);
15724
+ }
14901
15725
  addSubscriptions(...subscriptions) {
14902
15726
  subscriptions.map(s => this.calendarSubscriptions.add(s));
14903
15727
  }
@@ -14911,17 +15735,6 @@ class DateRangeSelectionDirective {
14911
15735
  this.dateRangeService.setRange(clampRange(start));
14912
15736
  }
14913
15737
  }
14914
- handleChange(value) {
14915
- const service = this.dateRangeService;
14916
- const autoCorrect = this.autoCorrectOn === 'change' && this.shouldAutoCorrect(value);
14917
- const activeEnd = this.calendar.activeRangeEnd !== 'end' ? 'end' : (autoCorrect ? 'end' : 'start');
14918
- const range = autoCorrect ? clampRange(value) : this.updateRange(value);
14919
- if (!isEqualRange(service.selectionRange, range)) {
14920
- this.acceptAndEmit(range);
14921
- service.setActiveRangeEnd(activeEnd);
14922
- service.setRange(range);
14923
- }
14924
- }
14925
15738
  handleHover(value) {
14926
15739
  if (this.hasCompleteRange()) {
14927
15740
  return;
@@ -14966,7 +15779,7 @@ class DateRangeSelectionDirective {
14966
15779
  }
14967
15780
  }
14968
15781
  DateRangeSelectionDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DateRangeSelectionDirective, deps: [{ token: MultiViewCalendarComponent }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: DateRangeService, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
14969
- DateRangeSelectionDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: DateRangeSelectionDirective, selector: "[kendoDateRangeSelection]", inputs: { autoCorrectOn: "autoCorrectOn", selectionRange: "selectionRange", activeRangeEnd: "activeRangeEnd" }, outputs: { activeRangeEndChange: "activeRangeEndChange", selectionRangeChange: "selectionRangeChange" }, ngImport: i0 });
15782
+ DateRangeSelectionDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: DateRangeSelectionDirective, selector: "[kendoDateRangeSelection]", inputs: { autoCorrectOn: "autoCorrectOn", selectionRange: "selectionRange", activeRangeEnd: "activeRangeEnd", shouldSetRange: "shouldSetRange" }, outputs: { activeRangeEndChange: "activeRangeEndChange", selectionRangeChange: "selectionRangeChange" }, ngImport: i0 });
14970
15783
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DateRangeSelectionDirective, decorators: [{
14971
15784
  type: Directive,
14972
15785
  args: [{
@@ -14982,12 +15795,66 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
14982
15795
  type: Input
14983
15796
  }], activeRangeEnd: [{
14984
15797
  type: Input
15798
+ }], shouldSetRange: [{
15799
+ type: Input
14985
15800
  }], activeRangeEndChange: [{
14986
15801
  type: Output
14987
15802
  }], selectionRangeChange: [{
14988
15803
  type: Output
14989
15804
  }] } });
14990
15805
 
15806
+ /**
15807
+ * @hidden
15808
+ */
15809
+ class DateRangePopupMessages extends ComponentMessages {
15810
+ }
15811
+ DateRangePopupMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DateRangePopupMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });
15812
+ DateRangePopupMessages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: DateRangePopupMessages, selector: "kendo-daterangepopup-messages-base", inputs: { accept: "accept", acceptLabel: "acceptLabel", cancel: "cancel", cancelLabel: "cancelLabel" }, usesInheritance: true, ngImport: i0 });
15813
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DateRangePopupMessages, decorators: [{
15814
+ type: Directive,
15815
+ args: [{
15816
+ // eslint-disable-next-line
15817
+ selector: 'kendo-daterangepopup-messages-base'
15818
+ }]
15819
+ }], propDecorators: { accept: [{
15820
+ type: Input
15821
+ }], acceptLabel: [{
15822
+ type: Input
15823
+ }], cancel: [{
15824
+ type: Input
15825
+ }], cancelLabel: [{
15826
+ type: Input
15827
+ }] } });
15828
+
15829
+ /**
15830
+ * @hidden
15831
+ */
15832
+ class DateRangePopupLocalizedMessagesDirective extends DateRangePopupMessages {
15833
+ constructor(service) {
15834
+ super();
15835
+ this.service = service;
15836
+ }
15837
+ }
15838
+ DateRangePopupLocalizedMessagesDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DateRangePopupLocalizedMessagesDirective, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Directive });
15839
+ DateRangePopupLocalizedMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: DateRangePopupLocalizedMessagesDirective, selector: "[kendoDateRangePopupLocalizedMessages]", providers: [
15840
+ {
15841
+ provide: DateRangePopupMessages,
15842
+ useExisting: forwardRef(() => DateRangePopupLocalizedMessagesDirective)
15843
+ }
15844
+ ], usesInheritance: true, ngImport: i0 });
15845
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DateRangePopupLocalizedMessagesDirective, decorators: [{
15846
+ type: Directive,
15847
+ args: [{
15848
+ providers: [
15849
+ {
15850
+ provide: DateRangePopupMessages,
15851
+ useExisting: forwardRef(() => DateRangePopupLocalizedMessagesDirective)
15852
+ }
15853
+ ],
15854
+ selector: '[kendoDateRangePopupLocalizedMessages]'
15855
+ }]
15856
+ }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });
15857
+
14991
15858
  /**
14992
15859
  * Represents the Kendo UI DateRangePopup component for Angular.
14993
15860
  *
@@ -15008,11 +15875,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
15008
15875
  * ```
15009
15876
  */
15010
15877
  class DateRangePopupComponent {
15011
- constructor(popupService, dateRangeService, ref, zone, rtl) {
15878
+ constructor(popupService, dateRangeService, ref, zone, renderer, localization, cdr, rtl) {
15012
15879
  this.popupService = popupService;
15013
15880
  this.dateRangeService = dateRangeService;
15014
15881
  this.ref = ref;
15015
15882
  this.zone = zone;
15883
+ this.renderer = renderer;
15884
+ this.localization = localization;
15885
+ this.cdr = cdr;
15016
15886
  this.rtl = rtl;
15017
15887
  /**
15018
15888
  * Controls the popup animation.
@@ -15027,6 +15897,15 @@ class DateRangePopupComponent {
15027
15897
  * [viewport boundary detection]({% slug viewportboundarydetection_popup %}).
15028
15898
  */
15029
15899
  this.collision = { horizontal: 'fit', vertical: 'flip' };
15900
+ /**
15901
+ * Enables or disables the adaptive mode. By default the adaptive rendering is disabled.
15902
+ */
15903
+ this.adaptiveMode = 'none';
15904
+ /**
15905
+ * Sets the title of the input element of the DateRangePopup and the title text rendered
15906
+ * in the header of the popup(action sheet). Applicable only when [`AdaptiveMode` is set to `auto`](slug:api_dateinputs_adaptivemode).
15907
+ */
15908
+ this.title = "";
15030
15909
  /**
15031
15910
  * Fires each time the popup is about to open.
15032
15911
  * This event is preventable. If you cancel the event, the popup will remain closed.
@@ -15057,10 +15936,25 @@ class DateRangePopupComponent {
15057
15936
  * @hidden
15058
15937
  */
15059
15938
  this.popupUID = guid();
15939
+ /**
15940
+ * @hidden
15941
+ */
15942
+ this.xIcon = xIcon;
15060
15943
  this.calendarSubscriptions = new Subscription();
15061
15944
  this.popupSubscriptions = new Subscription();
15945
+ this.localizationSubscriptions = new Subscription();
15062
15946
  this.resolvedPromise = Promise.resolve();
15063
15947
  }
15948
+ /**
15949
+ * Sets the subtitle text rendered in the header of the popup(action sheet).
15950
+ * Applicable only when [`AdaptiveMode` is set to `auto`](slug:api_dateinputs_adaptivemode).
15951
+ */
15952
+ set subtitle(subtitle) {
15953
+ this._subtitle = subtitle;
15954
+ }
15955
+ get subtitle() {
15956
+ return this._subtitle;
15957
+ }
15064
15958
  /**
15065
15959
  * The active calendar that is visible in the popup.
15066
15960
  *
@@ -15078,7 +15972,23 @@ class DateRangePopupComponent {
15078
15972
  * When the opened calendar is active, returns `true`.
15079
15973
  */
15080
15974
  get isActive() {
15081
- return this.calendar && this.calendar.isActive;
15975
+ // The actionsheet is expanding before the calendar gets activated
15976
+ // and if we only check for calendar.isActive a blur event handler in the date-rage-input.ts will close the actionsheet
15977
+ // TODO: Potentially the entire logic would need refactoring to avoid hacks like this one
15978
+ return (this.calendar && this.calendar.isActive)
15979
+ || (this.actionSheet && this.actionSheet.expanded);
15980
+ }
15981
+ /**
15982
+ * @hidden
15983
+ */
15984
+ get isAdaptiveModeEnabled() {
15985
+ return this.adaptiveMode === 'auto';
15986
+ }
15987
+ /**
15988
+ * @hidden
15989
+ */
15990
+ get isAdaptive() {
15991
+ return this.isAdaptiveModeEnabled && this.windowSize !== 'large';
15082
15992
  }
15083
15993
  /**
15084
15994
  * Gets or sets the visibility state of the component.
@@ -15097,13 +16007,18 @@ class DateRangePopupComponent {
15097
16007
  if (event.isDefaultPrevented()) {
15098
16008
  return;
15099
16009
  }
15100
- this._toggle(show);
16010
+ this.toggleDateRange(show);
15101
16011
  }
15102
16012
  get show() {
15103
16013
  return this._show;
15104
16014
  }
15105
16015
  ngOnInit() {
15106
16016
  this.dateRangeService.registerPopup(this);
16017
+ if (this.localization) {
16018
+ this.localizationSubscriptions.add(this.localization
16019
+ .changes
16020
+ .subscribe(() => this.cdr.markForCheck()));
16021
+ }
15107
16022
  }
15108
16023
  ngAfterViewInit() {
15109
16024
  this.calendarSubscriptions.add(this.contentCalendar.changes.subscribe((changes) => this.calendar = changes.first));
@@ -15111,6 +16026,7 @@ class DateRangePopupComponent {
15111
16026
  if (isWindowAvailable()) {
15112
16027
  this.zone.runOutsideAngular(() => this.windowBlurSubscription = fromEvent(window, 'blur').subscribe(this.handleWindowBlur.bind(this)));
15113
16028
  }
16029
+ this.renderer.setAttribute(this.actionSheet.element.nativeElement, 'style', '--kendo-actionsheet-height: 60vh; --kendo-actionsheet-max-height: none');
15114
16030
  }
15115
16031
  ngOnDestroy() {
15116
16032
  this.destroyPopup();
@@ -15169,15 +16085,15 @@ class DateRangePopupComponent {
15169
16085
  return this.popupRef.popupElement.contains(document.activeElement);
15170
16086
  }
15171
16087
  /**
15172
- * Toggles the visibility of the popup.
15173
- * If you use the `toggle` method to show or hide the popup,
16088
+ * Toggles the visibility of the popup or actionSheet.
16089
+ * If you use the `toggle` method to show or hide the popup or actionSheet,
15174
16090
  * the `open` and `close` events do not fire.
15175
16091
  *
15176
16092
  * @param show The state of the popup.
15177
16093
  */
15178
16094
  toggle(show) {
15179
16095
  this.resolvedPromise.then(() => {
15180
- this._toggle((show === undefined) ? !this.show : show);
16096
+ this.toggleDateRange((show === undefined) ? !this.show : show);
15181
16097
  });
15182
16098
  }
15183
16099
  /**
@@ -15189,8 +16105,31 @@ class DateRangePopupComponent {
15189
16105
  this.show = false;
15190
16106
  this.cancel.emit();
15191
16107
  }
16108
+ /**
16109
+ * @hidden
16110
+ */
16111
+ handleAccept() {
16112
+ this.dateRangeSelectionDirective.setRange(this.dateRangeService.selectionRange);
16113
+ this.show = false;
16114
+ }
16115
+ /**
16116
+ * @hidden
16117
+ */
16118
+ onResize() {
16119
+ if (!this.show || this.windowSize === windowSize()) {
16120
+ return;
16121
+ }
16122
+ ;
16123
+ if (this.actionSheet.expanded) {
16124
+ this.toggleActionSheet(false);
16125
+ }
16126
+ else {
16127
+ this.togglePopup(false);
16128
+ }
16129
+ this.windowSize = windowSize();
16130
+ }
15192
16131
  handleWindowBlur() {
15193
- if (!this.show) {
16132
+ if (!this.show || this.actionSheet.expanded) {
15194
16133
  return;
15195
16134
  }
15196
16135
  if (hasObservers(this.close)) {
@@ -15234,7 +16173,7 @@ class DateRangePopupComponent {
15234
16173
  }
15235
16174
  return appendTo === 'component' ? this.container : appendTo;
15236
16175
  }
15237
- _toggle(show) {
16176
+ togglePopup(show) {
15238
16177
  this._show = show;
15239
16178
  if (this.popupRef) {
15240
16179
  this.destroyPopup();
@@ -15266,28 +16205,238 @@ class DateRangePopupComponent {
15266
16205
  this.popupSubscriptions.unsubscribe();
15267
16206
  }
15268
16207
  }
16208
+ toggleDateRange(show) {
16209
+ this.windowSize = windowSize();
16210
+ if (this.isAdaptive) {
16211
+ this.toggleActionSheet(show);
16212
+ }
16213
+ else {
16214
+ this.togglePopup(show);
16215
+ }
16216
+ }
16217
+ toggleActionSheet(show) {
16218
+ if (show === this._show) {
16219
+ return;
16220
+ }
16221
+ if (show && !this.actionSheet.expanded) {
16222
+ this.actionSheet.toggle();
16223
+ this.updateActionSheetAdaptiveAppearance();
16224
+ }
16225
+ else if (!show && this.actionSheet.expanded) {
16226
+ this.actionSheet.toggle();
16227
+ }
16228
+ this._show = show;
16229
+ }
16230
+ updateActionSheetAdaptiveAppearance() {
16231
+ let element;
16232
+ let animationContainer;
16233
+ if (this.actionSheet) {
16234
+ element = this.actionSheet['element'].nativeElement.querySelector('.k-actionsheet');
16235
+ animationContainer = this.actionSheet['element'].nativeElement.querySelector('.k-child-animation-container');
16236
+ if (this.windowSize === 'medium') {
16237
+ this.renderer.removeClass(element, 'k-actionsheet-fullscreen');
16238
+ this.renderer.removeStyle(animationContainer, 'height');
16239
+ }
16240
+ else if (this.windowSize === 'small') {
16241
+ this.renderer.addClass(element, 'k-actionsheet-fullscreen');
16242
+ this.renderer.setStyle(animationContainer, 'height', '100%');
16243
+ }
16244
+ this.renderer.addClass(element, 'k-adaptive-actionsheet');
16245
+ this.renderer.addClass(element, 'k-actionsheet-bottom');
16246
+ this.renderer.setStyle(animationContainer, 'bottom', '0px');
16247
+ }
16248
+ }
15269
16249
  }
15270
- DateRangePopupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DateRangePopupComponent, deps: [{ token: i1$2.PopupService }, { token: DateRangeService }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: RTL, optional: true }], target: i0.ɵɵFactoryTarget.Component });
15271
- DateRangePopupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: DateRangePopupComponent, selector: "kendo-daterange-popup", inputs: { animate: "animate", anchor: "anchor", anchorAlign: "anchorAlign", appendTo: "appendTo", collision: "collision", popupAlign: "popupAlign", margin: "margin" }, outputs: { open: "open", close: "close", onBlur: "blur", onFocus: "focus", cancel: "cancel" }, queries: [{ propertyName: "contentTemplate", first: true, predicate: DateRangePopupTemplateDirective, descendants: true }, { propertyName: "contentCalendar", predicate: MultiViewCalendarComponent }], viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef }, { propertyName: "defaultTemplate", first: true, predicate: ["defaultTemplate"], descendants: true }, { propertyName: "viewCalendar", predicate: MultiViewCalendarComponent, descendants: true }], exportAs: ["kendo-daterange-popup"], ngImport: i0, template: `
16250
+ DateRangePopupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DateRangePopupComponent, deps: [{ token: i1$2.PopupService }, { token: DateRangeService }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i1$1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: RTL, optional: true }], target: i0.ɵɵFactoryTarget.Component });
16251
+ DateRangePopupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: DateRangePopupComponent, selector: "kendo-daterange-popup", inputs: { animate: "animate", anchor: "anchor", anchorAlign: "anchorAlign", appendTo: "appendTo", collision: "collision", popupAlign: "popupAlign", margin: "margin", adaptiveMode: "adaptiveMode", title: "title", subtitle: "subtitle" }, outputs: { open: "open", close: "close", onBlur: "blur", onFocus: "focus", cancel: "cancel" }, providers: [
16252
+ LocalizationService,
16253
+ {
16254
+ provide: L10N_PREFIX,
16255
+ useValue: 'kendo.daterangepopup'
16256
+ }
16257
+ ], queries: [{ propertyName: "contentTemplate", first: true, predicate: DateRangePopupTemplateDirective, descendants: true }, { propertyName: "contentCalendar", predicate: MultiViewCalendarComponent }], viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef }, { propertyName: "actionSheet", first: true, predicate: ["actionSheet"], descendants: true }, { propertyName: "defaultTemplate", first: true, predicate: ["defaultTemplate"], descendants: true }, { propertyName: "dateRangeSelectionDirective", first: true, predicate: DateRangeSelectionDirective, descendants: true }, { propertyName: "viewCalendar", predicate: MultiViewCalendarComponent, descendants: true }], exportAs: ["kendo-daterange-popup"], ngImport: i0, template: `
16258
+ <ng-container kendoDateRangePopupLocalizedMessages
16259
+ i18n-accept="kendo.daterangepopup.accept|The Accept button text in the timepicker component"
16260
+ accept="Set"
16261
+
16262
+ i18n-acceptLabel="kendo.daterangepopup.acceptLabel|The label for the Accept button in the timepicker component"
16263
+ acceptLabel="Set time"
16264
+
16265
+ i18n-cancel="kendo.daterangepopup.cancel|The Cancel button text in the timepicker component"
16266
+ cancel="Cancel"
16267
+
16268
+ i18n-cancelLabel="kendo.daterangepopup.cancelLabel|The label for the Cancel button in the timepicker component"
16269
+ cancelLabel="Cancel changes"
16270
+ >
16271
+ </ng-container>
15272
16272
  <ng-container #container></ng-container>
15273
16273
  <ng-template #defaultTemplate>
15274
16274
  <kendo-multiviewcalendar kendoDateRangeSelection></kendo-multiviewcalendar>
15275
16275
  </ng-template>
15276
- `, isInline: true, components: [{ type: MultiViewCalendarComponent, selector: "kendo-multiviewcalendar", inputs: ["id", "focusedDate", "min", "max", "rangeValidation", "disabledDatesRangeValidation", "selection", "value", "disabled", "tabindex", "tabIndex", "isActive", "disabledDates", "activeView", "bottomView", "topView", "showViewHeader", "animateNavigation", "weekNumber", "activeRangeEnd", "selectionRange", "views", "orientation", "cellTemplate", "monthCellTemplate", "yearCellTemplate", "decadeCellTemplate", "centuryCellTemplate", "weekNumberTemplate", "headerTitleTemplate"], outputs: ["activeViewChange", "navigate", "cellEnter", "cellLeave", "valueChange", "blur", "focus", "focusCalendar"], exportAs: ["kendo-multiviewcalendar"] }], directives: [{ type: DateRangeSelectionDirective, selector: "[kendoDateRangeSelection]", inputs: ["autoCorrectOn", "selectionRange", "activeRangeEnd"], outputs: ["activeRangeEndChange", "selectionRangeChange"] }] });
16276
+
16277
+ <kendo-actionsheet
16278
+ #actionSheet
16279
+ (overlayClick)="show=false"
16280
+ (collapse)="onBlur.emit()"
16281
+ >
16282
+ <ng-template kendoActionSheetTemplate>
16283
+ <!-- Resize sensor needs to be inside the template because the date-range-popup
16284
+ element itself always has 0x0 size and does not trigger the sensor.
16285
+ Note: The popup in non-adaptive mode closes on window blur -->
16286
+ <kendo-resize-sensor *ngIf="isAdaptiveModeEnabled" (resize)="onResize()"></kendo-resize-sensor>
16287
+ <div class="k-actionsheet-titlebar">
16288
+ <div class="k-actionsheet-titlebar-group k-hbox">
16289
+ <div class="k-actionsheet-title">
16290
+ <div class="k-text-center">{{ title }}</div>
16291
+ <div class="k-actionsheet-subtitle k-text-center">{{ subtitle }}</div>
16292
+ </div>
16293
+ <div class="k-actionsheet-actions">
16294
+ <button
16295
+ kendoButton
16296
+ icon="x"
16297
+ [attr.title]="localization.get('clearTitle')"
16298
+ [svgIcon]="xIcon"
16299
+ fillMode="flat"
16300
+ size="large"
16301
+ innerCssClass="k-button-icon"
16302
+ (click)="show = false">
16303
+ </button>
16304
+ </div>
16305
+ </div>
16306
+ </div>
16307
+ <div class="k-actionsheet-content !k-overflow-hidden">
16308
+ <div class="k-scrollable-wrap">
16309
+ <kendo-multiviewcalendar
16310
+ class="k-calendar-lg"
16311
+ orientation="vertical"
16312
+ #test
16313
+ kendoDateRangeSelection
16314
+ [shouldSetRange]="false">
16315
+ </kendo-multiviewcalendar>
16316
+ </div>
16317
+ </div>
16318
+ <div class="k-actions k-actions-stretched k-actions-horizontal k-actionsheet-footer">
16319
+ <button kendoButton
16320
+ size="large"
16321
+ [attr.title]="localization.get('cancelLabel')"
16322
+ [attr.aria-label]="localization.get('cancelLabel')"
16323
+ (click)="show=false"
16324
+ >
16325
+ {{localization.get('cancel')}}
16326
+ </button>
16327
+
16328
+ <button kendoButton
16329
+ size="large"
16330
+ themeColor="primary"
16331
+ [attr.title]="localization.get('acceptLabel')"
16332
+ [attr.aria-label]="localization.get('acceptLabel')"
16333
+ (click)="handleAccept()"
16334
+ >
16335
+ {{localization.get('accept')}}
16336
+ </button>
16337
+ </div>
16338
+ </ng-template>
16339
+ </kendo-actionsheet>
16340
+ `, isInline: true, components: [{ type: MultiViewCalendarComponent, selector: "kendo-multiviewcalendar", inputs: ["id", "focusedDate", "min", "max", "rangeValidation", "disabledDatesRangeValidation", "selection", "value", "disabled", "tabindex", "tabIndex", "isActive", "disabledDates", "activeView", "bottomView", "topView", "showViewHeader", "animateNavigation", "weekNumber", "activeRangeEnd", "selectionRange", "views", "orientation", "cellTemplate", "monthCellTemplate", "yearCellTemplate", "decadeCellTemplate", "centuryCellTemplate", "weekNumberTemplate", "headerTitleTemplate"], outputs: ["activeViewChange", "navigate", "cellEnter", "cellLeave", "valueChange", "blur", "focus", "focusCalendar"], exportAs: ["kendo-multiviewcalendar"] }, { type: i9.ActionSheetComponent, selector: "kendo-actionsheet", inputs: ["title", "subtitle", "items", "cssClass", "animation", "expanded"], outputs: ["expandedChange", "expand", "collapse", "itemClick", "overlayClick"], exportAs: ["kendoActionSheet"] }, { type: i8.ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { type: i10.Button, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }], directives: [{ type: DateRangePopupLocalizedMessagesDirective, selector: "[kendoDateRangePopupLocalizedMessages]" }, { type: DateRangeSelectionDirective, selector: "[kendoDateRangeSelection]", inputs: ["autoCorrectOn", "selectionRange", "activeRangeEnd", "shouldSetRange"], outputs: ["activeRangeEndChange", "selectionRangeChange"] }, { type: i9.ActionSheetTemplateDirective, selector: "[kendoActionSheetTemplate]" }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
15277
16341
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DateRangePopupComponent, decorators: [{
15278
16342
  type: Component,
15279
16343
  args: [{
15280
16344
  exportAs: 'kendo-daterange-popup',
16345
+ providers: [
16346
+ LocalizationService,
16347
+ {
16348
+ provide: L10N_PREFIX,
16349
+ useValue: 'kendo.daterangepopup'
16350
+ }
16351
+ ],
15281
16352
  selector: 'kendo-daterange-popup',
15282
16353
  template: `
16354
+ <ng-container kendoDateRangePopupLocalizedMessages
16355
+ i18n-accept="kendo.daterangepopup.accept|The Accept button text in the timepicker component"
16356
+ accept="Set"
16357
+
16358
+ i18n-acceptLabel="kendo.daterangepopup.acceptLabel|The label for the Accept button in the timepicker component"
16359
+ acceptLabel="Set time"
16360
+
16361
+ i18n-cancel="kendo.daterangepopup.cancel|The Cancel button text in the timepicker component"
16362
+ cancel="Cancel"
16363
+
16364
+ i18n-cancelLabel="kendo.daterangepopup.cancelLabel|The label for the Cancel button in the timepicker component"
16365
+ cancelLabel="Cancel changes"
16366
+ >
16367
+ </ng-container>
15283
16368
  <ng-container #container></ng-container>
15284
16369
  <ng-template #defaultTemplate>
15285
16370
  <kendo-multiviewcalendar kendoDateRangeSelection></kendo-multiviewcalendar>
15286
16371
  </ng-template>
16372
+
16373
+ <kendo-actionsheet
16374
+ #actionSheet
16375
+ (overlayClick)="show=false"
16376
+ (collapse)="onBlur.emit()"
16377
+ >
16378
+ <ng-template kendoActionSheetTemplate>
16379
+ <!-- Resize sensor needs to be inside the template because the date-range-popup
16380
+ element itself always has 0x0 size and does not trigger the sensor.
16381
+ Note: The popup in non-adaptive mode closes on window blur -->
16382
+ <kendo-resize-sensor *ngIf="isAdaptiveModeEnabled" (resize)="onResize()"></kendo-resize-sensor>
16383
+ <div class="k-actionsheet-titlebar">
16384
+ <div class="k-actionsheet-titlebar-group k-hbox">
16385
+ <div class="k-actionsheet-title">
16386
+ <div class="k-text-center">{{ title }}</div>
16387
+ <div class="k-actionsheet-subtitle k-text-center">{{ subtitle }}</div>
16388
+ </div>
16389
+ <div class="k-actionsheet-actions">
16390
+ <button
16391
+ kendoButton
16392
+ icon="x"
16393
+ [attr.title]="localization.get('clearTitle')"
16394
+ [svgIcon]="xIcon"
16395
+ fillMode="flat"
16396
+ size="large"
16397
+ innerCssClass="k-button-icon"
16398
+ (click)="show = false">
16399
+ </button>
16400
+ </div>
16401
+ </div>
16402
+ </div>
16403
+ <div class="k-actionsheet-content !k-overflow-hidden">
16404
+ <div class="k-scrollable-wrap">
16405
+ <kendo-multiviewcalendar
16406
+ class="k-calendar-lg"
16407
+ orientation="vertical"
16408
+ #test
16409
+ kendoDateRangeSelection
16410
+ [shouldSetRange]="false">
16411
+ </kendo-multiviewcalendar>
16412
+ </div>
16413
+ </div>
16414
+ <div class="k-actions k-actions-stretched k-actions-horizontal k-actionsheet-footer">
16415
+ <button kendoButton
16416
+ size="large"
16417
+ [attr.title]="localization.get('cancelLabel')"
16418
+ [attr.aria-label]="localization.get('cancelLabel')"
16419
+ (click)="show=false"
16420
+ >
16421
+ {{localization.get('cancel')}}
16422
+ </button>
16423
+
16424
+ <button kendoButton
16425
+ size="large"
16426
+ themeColor="primary"
16427
+ [attr.title]="localization.get('acceptLabel')"
16428
+ [attr.aria-label]="localization.get('acceptLabel')"
16429
+ (click)="handleAccept()"
16430
+ >
16431
+ {{localization.get('accept')}}
16432
+ </button>
16433
+ </div>
16434
+ </ng-template>
16435
+ </kendo-actionsheet>
15287
16436
  `
15288
16437
  }]
15289
16438
  }], ctorParameters: function () {
15290
- return [{ type: i1$2.PopupService }, { type: DateRangeService }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: undefined, decorators: [{
16439
+ return [{ type: i1$2.PopupService }, { type: DateRangeService }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i1$1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
15291
16440
  type: Optional
15292
16441
  }, {
15293
16442
  type: Inject,
@@ -15296,12 +16445,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
15296
16445
  }, propDecorators: { container: [{
15297
16446
  type: ViewChild,
15298
16447
  args: ['container', { read: ViewContainerRef, static: false }]
16448
+ }], actionSheet: [{
16449
+ type: ViewChild,
16450
+ args: ['actionSheet']
15299
16451
  }], defaultTemplate: [{
15300
16452
  type: ViewChild,
15301
16453
  args: ['defaultTemplate', { static: false }]
15302
16454
  }], contentTemplate: [{
15303
16455
  type: ContentChild,
15304
16456
  args: [DateRangePopupTemplateDirective, { static: false }]
16457
+ }], dateRangeSelectionDirective: [{
16458
+ type: ViewChild,
16459
+ args: [DateRangeSelectionDirective, { static: false }]
15305
16460
  }], viewCalendar: [{
15306
16461
  type: ViewChildren,
15307
16462
  args: [MultiViewCalendarComponent]
@@ -15322,6 +16477,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
15322
16477
  type: Input
15323
16478
  }], margin: [{
15324
16479
  type: Input
16480
+ }], adaptiveMode: [{
16481
+ type: Input
16482
+ }], title: [{
16483
+ type: Input
16484
+ }], subtitle: [{
16485
+ type: Input
15325
16486
  }], open: [{
15326
16487
  type: Output
15327
16488
  }], close: [{
@@ -15396,7 +16557,7 @@ DateRangeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", versi
15396
16557
  DateRangeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: DateRangeComponent, selector: "kendo-daterange", host: { listeners: { "keydown": "keydown($event)" }, properties: { "class.k-daterangepicker": "this.wrapperClass" } }, providers: [DateRangeService], queries: [{ propertyName: "contentPopup", predicate: DateRangePopupComponent }], ngImport: i0, template: `
15397
16558
  <ng-content></ng-content>
15398
16559
  <kendo-daterange-popup *ngIf="showDefault"></kendo-daterange-popup>
15399
- `, isInline: true, components: [{ type: DateRangePopupComponent, selector: "kendo-daterange-popup", inputs: ["animate", "anchor", "anchorAlign", "appendTo", "collision", "popupAlign", "margin"], outputs: ["open", "close", "blur", "focus", "cancel"], exportAs: ["kendo-daterange-popup"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
16560
+ `, isInline: true, components: [{ type: DateRangePopupComponent, selector: "kendo-daterange-popup", inputs: ["animate", "anchor", "anchorAlign", "appendTo", "collision", "popupAlign", "margin", "adaptiveMode", "title", "subtitle"], outputs: ["open", "close", "blur", "focus", "cancel"], exportAs: ["kendo-daterange-popup"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
15400
16561
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DateRangeComponent, decorators: [{
15401
16562
  type: Component,
15402
16563
  args: [{
@@ -16191,6 +17352,38 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
16191
17352
  }]
16192
17353
  }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });
16193
17354
 
17355
+ const ADAPTIVE_MODULES = [
17356
+ NavigationModule,
17357
+ ResizeSensorModule,
17358
+ ButtonModule,
17359
+ TextBoxModule
17360
+ ];
17361
+ /**
17362
+ * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])
17363
+ * definition for the modules specific to the Adaptive Mode.
17364
+ */
17365
+ class AdaptiveModule {
17366
+ }
17367
+ AdaptiveModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AdaptiveModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
17368
+ AdaptiveModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AdaptiveModule, imports: [NavigationModule,
17369
+ ResizeSensorModule,
17370
+ ButtonModule,
17371
+ TextBoxModule], exports: [NavigationModule,
17372
+ ResizeSensorModule,
17373
+ ButtonModule,
17374
+ TextBoxModule] });
17375
+ AdaptiveModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AdaptiveModule, imports: [[...ADAPTIVE_MODULES], NavigationModule,
17376
+ ResizeSensorModule,
17377
+ ButtonModule,
17378
+ TextBoxModule] });
17379
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AdaptiveModule, decorators: [{
17380
+ type: NgModule,
17381
+ args: [{
17382
+ imports: [...ADAPTIVE_MODULES],
17383
+ exports: [...ADAPTIVE_MODULES]
17384
+ }]
17385
+ }] });
17386
+
16194
17387
  /**
16195
17388
  * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])
16196
17389
  * definition for the DatePicker component.
@@ -16207,7 +17400,8 @@ DatePickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", versio
16207
17400
  PopupModule,
16208
17401
  TemplatesModule,
16209
17402
  EventsModule,
16210
- IconsModule], exports: [DatePickerComponent,
17403
+ IconsModule,
17404
+ AdaptiveModule], exports: [DatePickerComponent,
16211
17405
  DatePickerCustomMessagesComponent,
16212
17406
  DatePickerLocalizedMessagesDirective,
16213
17407
  TemplatesModule] });
@@ -16219,7 +17413,8 @@ DatePickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", versio
16219
17413
  PopupModule,
16220
17414
  TemplatesModule,
16221
17415
  EventsModule,
16222
- IconsModule
17416
+ IconsModule,
17417
+ AdaptiveModule
16223
17418
  ], TemplatesModule] });
16224
17419
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DatePickerModule, decorators: [{
16225
17420
  type: NgModule,
@@ -16243,25 +17438,62 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
16243
17438
  PopupModule,
16244
17439
  TemplatesModule,
16245
17440
  EventsModule,
16246
- IconsModule
17441
+ IconsModule,
17442
+ AdaptiveModule
16247
17443
  ],
16248
17444
  providers: [{ provide: TOUCH_ENABLED, useValue: touchEnabled }]
16249
17445
  }]
16250
17446
  }] });
16251
17447
 
17448
+ /**
17449
+ * Custom component messages override default component messages ([see example]({% slug globalization_dateinputs %}#toc-custom-messages)).
17450
+ */
17451
+ class DateRangePopupCustomMessagesComponent extends DateRangePopupMessages {
17452
+ constructor(service) {
17453
+ super();
17454
+ this.service = service;
17455
+ }
17456
+ get override() {
17457
+ return true;
17458
+ }
17459
+ }
17460
+ DateRangePopupCustomMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DateRangePopupCustomMessagesComponent, deps: [{ token: i1$1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
17461
+ DateRangePopupCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: DateRangePopupCustomMessagesComponent, selector: "kendo-daterange-popup-messages", providers: [
17462
+ {
17463
+ provide: DateRangePopupMessages,
17464
+ useExisting: forwardRef(() => DateRangePopupCustomMessagesComponent)
17465
+ }
17466
+ ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });
17467
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DateRangePopupCustomMessagesComponent, decorators: [{
17468
+ type: Component,
17469
+ args: [{
17470
+ providers: [
17471
+ {
17472
+ provide: DateRangePopupMessages,
17473
+ useExisting: forwardRef(() => DateRangePopupCustomMessagesComponent)
17474
+ }
17475
+ ],
17476
+ selector: 'kendo-daterange-popup-messages',
17477
+ template: ``
17478
+ }]
17479
+ }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });
17480
+
16252
17481
  const COMPONENT_DIRECTIVES$2 = [
16253
17482
  DateRangeComponent,
16254
17483
  DateRangePopupComponent,
16255
17484
  DateRangePopupTemplateDirective,
16256
17485
  DateRangeSelectionDirective,
16257
17486
  DateRangeStartInputDirective,
16258
- DateRangeEndInputDirective
17487
+ DateRangeEndInputDirective,
17488
+ DateRangePopupCustomMessagesComponent,
17489
+ DateRangePopupLocalizedMessagesDirective
16259
17490
  ];
16260
17491
  const COMPONENT_MODULES$2 = [
16261
17492
  MultiViewCalendarModule,
16262
17493
  DateInputModule,
16263
17494
  PopupModule,
16264
- EventsModule
17495
+ EventsModule,
17496
+ AdaptiveModule
16265
17497
  ];
16266
17498
  /**
16267
17499
  * The exported package module.
@@ -16309,15 +17541,20 @@ DateRangeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version
16309
17541
  DateRangePopupTemplateDirective,
16310
17542
  DateRangeSelectionDirective,
16311
17543
  DateRangeStartInputDirective,
16312
- DateRangeEndInputDirective], imports: [CommonModule, MultiViewCalendarModule,
17544
+ DateRangeEndInputDirective,
17545
+ DateRangePopupCustomMessagesComponent,
17546
+ DateRangePopupLocalizedMessagesDirective], imports: [CommonModule, MultiViewCalendarModule,
16313
17547
  DateInputModule,
16314
17548
  PopupModule,
16315
- EventsModule], exports: [DateRangeComponent,
17549
+ EventsModule,
17550
+ AdaptiveModule], exports: [DateRangeComponent,
16316
17551
  DateRangePopupComponent,
16317
17552
  DateRangePopupTemplateDirective,
16318
17553
  DateRangeSelectionDirective,
16319
17554
  DateRangeStartInputDirective,
16320
- DateRangeEndInputDirective] });
17555
+ DateRangeEndInputDirective,
17556
+ DateRangePopupCustomMessagesComponent,
17557
+ DateRangePopupLocalizedMessagesDirective] });
16321
17558
  DateRangeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DateRangeModule, imports: [[CommonModule, COMPONENT_MODULES$2]] });
16322
17559
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DateRangeModule, decorators: [{
16323
17560
  type: NgModule,
@@ -16376,7 +17613,8 @@ const COMPONENT_MODULES$1 = [
16376
17613
  PopupModule,
16377
17614
  VirtualizationModule,
16378
17615
  EventsModule,
16379
- IconsModule
17616
+ IconsModule,
17617
+ AdaptiveModule
16380
17618
  ];
16381
17619
  const providers = [
16382
17620
  TimePickerDOMService,
@@ -16408,7 +17646,8 @@ TimePickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", versio
16408
17646
  PopupModule,
16409
17647
  VirtualizationModule,
16410
17648
  EventsModule,
16411
- IconsModule], exports: [TimePickerLocalizedMessagesDirective,
17649
+ IconsModule,
17650
+ AdaptiveModule], exports: [TimePickerLocalizedMessagesDirective,
16412
17651
  TimeListComponent,
16413
17652
  TimePickerCustomMessagesComponent,
16414
17653
  TimePickerComponent,
@@ -16481,7 +17720,8 @@ DateTimePickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", ve
16481
17720
  PopupModule,
16482
17721
  EventsModule,
16483
17722
  TemplatesModule,
16484
- IconsModule], exports: [DateTimePickerComponent,
17723
+ IconsModule,
17724
+ AdaptiveModule], exports: [DateTimePickerComponent,
16485
17725
  DateTimePickerCustomMessagesComponent,
16486
17726
  LocalizedMessagesDirective, TemplatesModule] });
16487
17727
  DateTimePickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DateTimePickerModule, providers: [
@@ -16495,7 +17735,8 @@ DateTimePickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", ve
16495
17735
  PopupModule,
16496
17736
  EventsModule,
16497
17737
  TemplatesModule,
16498
- IconsModule
17738
+ IconsModule,
17739
+ AdaptiveModule
16499
17740
  ], TemplatesModule] });
16500
17741
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DateTimePickerModule, decorators: [{
16501
17742
  type: NgModule,
@@ -16516,7 +17757,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
16516
17757
  PopupModule,
16517
17758
  EventsModule,
16518
17759
  TemplatesModule,
16519
- IconsModule
17760
+ IconsModule,
17761
+ AdaptiveModule
16520
17762
  ],
16521
17763
  providers: [
16522
17764
  { provide: TOUCH_ENABLED, useValue: touchEnabled }
@@ -16595,5 +17837,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
16595
17837
  * Generated bundle index. Do not edit.
16596
17838
  */
16597
17839
 
16598
- export { CalendarCommonModule, CalendarComponent, CalendarCustomMessagesComponent, CalendarLocalizedMessagesDirective, CalendarModule, CalendarsModule, CellTemplateDirective, CenturyCellTemplateDirective, DateInputComponent, DateInputCustomMessagesComponent, DateInputLocalizedMessagesDirective, DateInputModule, DateInputsModule, DatePickerComponent, DatePickerCustomMessagesComponent, DatePickerLocalizedMessagesDirective, DatePickerModule, DateRangeComponent, DateRangeEndInputDirective, DateRangeModule, DateRangePopupComponent, DateRangePopupTemplateDirective, DateRangeSelectionDirective, DateRangeService, DateRangeStartInputDirective, DateTimePickerComponent, DateTimePickerCustomMessagesComponent, DateTimePickerModule, DecadeCellTemplateDirective, HeaderComponent, HeaderTitleTemplateDirective, HorizontalViewListComponent, KForOf, LocalizedMessagesDirective, MonthCellTemplateDirective, MultiViewCalendarComponent, MultiViewCalendarCustomMessagesComponent, MultiViewCalendarLocalizedMessagesDirective, MultiViewCalendarModule, NavigationComponent, NavigationItemTemplateDirective, PreventableEvent, TemplatesModule, TimeListComponent, TimePickerComponent, TimePickerCustomMessagesComponent, TimePickerLocalizedMessagesDirective, TimePickerModule, TimeSelectorComponent, TimeSelectorCustomMessagesComponent, TimeSelectorLocalizedMessagesDirective, ViewComponent, ViewListComponent, WeekNumberCellTemplateDirective, YearCellTemplateDirective };
17840
+ export { AdaptiveModule, CalendarCommonModule, CalendarComponent, CalendarCustomMessagesComponent, CalendarLocalizedMessagesDirective, CalendarModule, CalendarsModule, CellTemplateDirective, CenturyCellTemplateDirective, DateInputComponent, DateInputCustomMessagesComponent, DateInputLocalizedMessagesDirective, DateInputModule, DateInputsModule, DatePickerComponent, DatePickerCustomMessagesComponent, DatePickerLocalizedMessagesDirective, DatePickerModule, DateRangeComponent, DateRangeEndInputDirective, DateRangeModule, DateRangePopupComponent, DateRangePopupCustomMessagesComponent, DateRangePopupLocalizedMessagesDirective, DateRangePopupTemplateDirective, DateRangeSelectionDirective, DateRangeService, DateRangeStartInputDirective, DateTimePickerComponent, DateTimePickerCustomMessagesComponent, DateTimePickerModule, DecadeCellTemplateDirective, HeaderComponent, HeaderTitleTemplateDirective, HorizontalViewListComponent, KForOf, LocalizedMessagesDirective, MonthCellTemplateDirective, MultiViewCalendarComponent, MultiViewCalendarCustomMessagesComponent, MultiViewCalendarLocalizedMessagesDirective, MultiViewCalendarModule, NavigationComponent, NavigationItemTemplateDirective, PreventableEvent, TemplatesModule, TimeListComponent, TimePickerComponent, TimePickerCustomMessagesComponent, TimePickerLocalizedMessagesDirective, TimePickerModule, TimeSelectorComponent, TimeSelectorCustomMessagesComponent, TimeSelectorLocalizedMessagesDirective, ViewComponent, ViewListComponent, WeekNumberCellTemplateDirective, YearCellTemplateDirective };
16599
17841