@progress/kendo-angular-dateinputs 11.4.0-develop.8 → 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: 1678794156,
37
- version: '11.4.0-develop.8',
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
 
@@ -535,6 +538,23 @@ const DEFAULT_SIZE = 'medium';
535
538
  * @hidden
536
539
  */
537
540
  const DEFAULT_FILL_MODE = 'solid';
541
+ /**
542
+ * @hidden
543
+ */
544
+ const windowSize = () => {
545
+ if (!isDocumentAvailable()) {
546
+ return;
547
+ }
548
+ if (window.innerWidth > 768) {
549
+ return 'large';
550
+ }
551
+ else if (window.innerWidth > 500) {
552
+ return 'medium';
553
+ }
554
+ else {
555
+ return 'small';
556
+ }
557
+ };
538
558
 
539
559
  const EMPTY_DATA$3 = [[]];
540
560
  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.
@@ -4771,7 +4792,7 @@ class VirtualizationComponent {
4771
4792
  return indexOffset < this.containerScrollPosition ? ScrollDirection.Backward : ScrollDirection.Forward;
4772
4793
  }
4773
4794
  }
4774
- 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 });
4795
+ 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 });
4775
4796
  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: [{
4776
4797
  provide: SCROLLER_FACTORY_TOKEN,
4777
4798
  useValue: DEFAULT_SCROLLER_FACTORY
@@ -4803,7 +4824,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
4803
4824
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
4804
4825
  type: Inject,
4805
4826
  args: [SCROLLER_FACTORY_TOKEN]
4806
- }] }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i6.ScrollbarWidthService }]; }, propDecorators: { direction: [{
4827
+ }] }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i8.ScrollbarWidthService }]; }, propDecorators: { direction: [{
4807
4828
  type: Input
4808
4829
  }], itemHeight: [{
4809
4830
  type: Input
@@ -4969,7 +4990,7 @@ NavigationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
4969
4990
  </li>
4970
4991
  </ul>
4971
4992
  </kendo-virtualization>
4972
- `, 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 });
4993
+ `, 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 });
4973
4994
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: NavigationComponent, decorators: [{
4974
4995
  type: Component,
4975
4996
  args: [{
@@ -5756,6 +5777,7 @@ class CalendarComponent {
5756
5777
  * ([more information and example]({% slug overview_calendar %}#toc-events)).
5757
5778
  */
5758
5779
  this.valueChange = new EventEmitter();
5780
+ this._size = DEFAULT_SIZE;
5759
5781
  this.isActive = false;
5760
5782
  this.cellUID = guid();
5761
5783
  this.selectedDates = [];
@@ -5992,6 +6014,31 @@ class CalendarComponent {
5992
6014
  get navigationItemTemplateRef() {
5993
6015
  return this._navigationItemTemplateRef || this.navigationItemTemplate;
5994
6016
  }
6017
+ /**
6018
+ * @hidden
6019
+ *
6020
+ * TODO: Make visible when true sizing of all calendar elements is implemented
6021
+ * Sets the size of the component.
6022
+ *
6023
+ * The possible values are:
6024
+ * * `small`
6025
+ * * `medium` (Default)
6026
+ * * `large`
6027
+ * * `none`
6028
+ *
6029
+ */
6030
+ set size(size) {
6031
+ const element = this.type === 'infinite' ? this.element : this.multiViewCalendar.element;
6032
+ this.renderer.removeClass(element.nativeElement, getSizeClass('calendar', this.size));
6033
+ const newSize = size ? size : DEFAULT_SIZE;
6034
+ if (newSize !== 'none') {
6035
+ this.renderer.addClass(element.nativeElement, getSizeClass('calendar', newSize));
6036
+ }
6037
+ this._size = newSize;
6038
+ }
6039
+ get size() {
6040
+ return this._size;
6041
+ }
5995
6042
  get activeViewEnum() {
5996
6043
  const activeView = CalendarViewEnum[this.activeView];
5997
6044
  return activeView < this.bottomViewEnum ? this.bottomViewEnum : activeView;
@@ -6042,6 +6089,10 @@ class CalendarComponent {
6042
6089
  }
6043
6090
  ngAfterViewInit() {
6044
6091
  this.setAriaActivedescendant();
6092
+ if (this.size !== 'none') {
6093
+ const element = this.type === 'infinite' ? this.element : this.multiViewCalendar.element;
6094
+ this.renderer.addClass(element.nativeElement, getSizeClass('calendar', this.size));
6095
+ }
6045
6096
  }
6046
6097
  ngAfterViewChecked() {
6047
6098
  if (!this.syncNavigation) {
@@ -6478,7 +6529,7 @@ class CalendarComponent {
6478
6529
  }
6479
6530
  }
6480
6531
  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 });
6481
- 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: [
6532
+ 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: [
6482
6533
  BusViewService,
6483
6534
  CALENDAR_VALUE_ACCESSOR,
6484
6535
  CALENDAR_RANGE_VALIDATORS,
@@ -6591,7 +6642,7 @@ CalendarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
6591
6642
  </kendo-multiviewcalendar-messages>
6592
6643
  </kendo-multiviewcalendar>
6593
6644
  </ng-container>
6594
- `, 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 });
6645
+ `, 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 });
6595
6646
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CalendarComponent, decorators: [{
6596
6647
  type: Component,
6597
6648
  args: [{
@@ -6817,6 +6868,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
6817
6868
  }], navigationItemTemplateRef: [{
6818
6869
  type: Input,
6819
6870
  args: ['navigationItemTemplate']
6871
+ }], size: [{
6872
+ type: Input
6820
6873
  }], navigationView: [{
6821
6874
  type: ViewChild,
6822
6875
  args: [NavigationComponent, { static: false }]
@@ -8392,7 +8445,7 @@ DateInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ver
8392
8445
  </kendo-icon-wrapper>
8393
8446
  </button>
8394
8447
  </span>
8395
- `, 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 });
8448
+ `, 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 });
8396
8449
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DateInputComponent, decorators: [{
8397
8450
  type: Component,
8398
8451
  args: [{
@@ -8775,12 +8828,7 @@ class DatePickerComponent {
8775
8828
  * the input will be rendered in a read-only state regardless of the `readOnlyInput` value.
8776
8829
  */
8777
8830
  this.readOnlyInput = false;
8778
- /**
8779
- * Sets or gets the `navigation` property of the Calendar
8780
- * and determines whether the navigation side-bar is displayed.
8781
- * ([see example]({% slug sidebar_datepicker %})).
8782
- */
8783
- this.navigation = true;
8831
+ this._navigation = true;
8784
8832
  /**
8785
8833
  * Specifies the smallest valid date
8786
8834
  * ([see example]({% slug dateranges_datepicker %})).
@@ -8840,7 +8888,8 @@ class DatePickerComponent {
8840
8888
  */
8841
8889
  this.tabindex = 0;
8842
8890
  /**
8843
- * Sets the title of the input element of the DatePicker.
8891
+ * Sets the title of the input element of the DatePicker and the title text rendered
8892
+ * in the header of the popup(action sheet). Applicable only when [`AdaptiveMode` is set to `auto`](slug:api_dateinputs_adaptivemode).
8844
8893
  */
8845
8894
  this.title = "";
8846
8895
  /**
@@ -8858,6 +8907,10 @@ class DatePickerComponent {
8858
8907
  * ([see example]({% slug calendar_type_datepicker %}#toc-week-number-column)).
8859
8908
  */
8860
8909
  this.weekNumber = false;
8910
+ /**
8911
+ * Enables or disables the adaptive mode. By default the adaptive rendering is disabled.
8912
+ */
8913
+ this.adaptiveMode = 'none';
8861
8914
  /**
8862
8915
  * Fires each time the user selects a new value
8863
8916
  * ([more information and example]({% slug overview_datepicker %}#toc-events)).
@@ -8923,6 +8976,10 @@ class DatePickerComponent {
8923
8976
  * @hidden
8924
8977
  */
8925
8978
  this.wrapperClasses = true;
8979
+ /**
8980
+ * @hidden
8981
+ */
8982
+ this.xIcon = xIcon;
8926
8983
  this._popupSettings = { animate: true };
8927
8984
  this._show = false;
8928
8985
  this._value = null;
@@ -9007,6 +9064,21 @@ class DatePickerComponent {
9007
9064
  get popupSettings() {
9008
9065
  return this._popupSettings;
9009
9066
  }
9067
+ /**
9068
+ * Sets or gets the `navigation` property of the Calendar
9069
+ * and determines whether the navigation side-bar is displayed.
9070
+ * ([see example]({% slug sidebar_datepicker %})).
9071
+ */
9072
+ set navigation(state) {
9073
+ this._navigation = state;
9074
+ }
9075
+ ;
9076
+ get navigation() {
9077
+ if (this.isAdaptive) {
9078
+ return;
9079
+ }
9080
+ return this._navigation;
9081
+ }
9010
9082
  /**
9011
9083
  * Specifies the value of the DatePicker component.
9012
9084
  *
@@ -9040,6 +9112,16 @@ class DatePickerComponent {
9040
9112
  get disabledDates() {
9041
9113
  return this._disabledDates;
9042
9114
  }
9115
+ /**
9116
+ * Sets the subtitle text rendered in the header of the popup(action sheet).
9117
+ * Applicable only when [`AdaptiveMode` is set to `auto`](slug:api_dateinputs_adaptivemode).
9118
+ */
9119
+ set subtitle(subtitle) {
9120
+ this._subtitle = subtitle;
9121
+ }
9122
+ get subtitle() {
9123
+ return this._subtitle || this.placeholder;
9124
+ }
9043
9125
  /**
9044
9126
  * Sets the size of the component.
9045
9127
  *
@@ -9143,14 +9225,24 @@ class DatePickerComponent {
9143
9225
  if (show && (this.disabled || this.readonly)) {
9144
9226
  return;
9145
9227
  }
9146
- const skipZone = !show && (!this._show || !hasObservers(this.close));
9228
+ const skipZone = !show && (!this._show || (!hasObservers(this.close) && !hasObservers(this.open)));
9147
9229
  if (!skipZone) {
9148
9230
  this.zone.run(() => {
9149
- this.togglePopup(show);
9231
+ const event = new PreventableEvent();
9232
+ if (!this._show && show) {
9233
+ this.open.emit(event);
9234
+ }
9235
+ else if (this._show && !show) {
9236
+ this.close.emit(event);
9237
+ }
9238
+ if (event.isDefaultPrevented()) {
9239
+ return;
9240
+ }
9241
+ this.toggleCalendar(show);
9150
9242
  });
9151
9243
  }
9152
9244
  else {
9153
- this.togglePopup(show);
9245
+ this.toggleCalendar(show);
9154
9246
  }
9155
9247
  }
9156
9248
  /**
@@ -9177,6 +9269,7 @@ class DatePickerComponent {
9177
9269
  }
9178
9270
  ngAfterViewInit() {
9179
9271
  this.setComponentClasses();
9272
+ this.renderer.setAttribute(this.actionSheet.element.nativeElement, 'style', '--kendo-actionsheet-height: 60vh; --kendo-actionsheet-max-height: none');
9180
9273
  }
9181
9274
  /**
9182
9275
  * @hidden
@@ -9207,7 +9300,7 @@ class DatePickerComponent {
9207
9300
  this.pickerSubscriptions.unsubscribe();
9208
9301
  }
9209
9302
  /**
9210
- * Returns the current open state of the popup.
9303
+ * Indicates whether the component is currently open. That is when the popup or actionSheet is open.
9211
9304
  */
9212
9305
  get isOpen() {
9213
9306
  return this.show;
@@ -9255,6 +9348,19 @@ class DatePickerComponent {
9255
9348
  registerOnValidatorChange(fn) {
9256
9349
  this.onValidatorChange = fn;
9257
9350
  }
9351
+ /**
9352
+ * @hidden
9353
+ */
9354
+ handleActionSheetCollapse() {
9355
+ // If not handled, the actionsheet expanded state does not get updated when overlay is clicked
9356
+ this.cdr.markForCheck();
9357
+ }
9358
+ /**
9359
+ * @hidden
9360
+ */
9361
+ handleActionSheetClick(e) {
9362
+ e.preventDefault();
9363
+ }
9258
9364
  /**
9259
9365
  * Focuses the DatePicker component.
9260
9366
  *
@@ -9280,7 +9386,8 @@ class DatePickerComponent {
9280
9386
  (this.calendar || this.input)['blur']();
9281
9387
  }
9282
9388
  /**
9283
- * Toggles the visibility of the popup. If you use the `toggle` method to show or hide the popup,
9389
+ * Toggles the visibility of the popup or actionSheet.
9390
+ * If you use the `toggle` method to show or hide the popup or actionSheet,
9284
9391
  * the `open` and `close` events do not fire.
9285
9392
  *
9286
9393
  * @param show - The state of the popup.
@@ -9290,7 +9397,7 @@ class DatePickerComponent {
9290
9397
  return;
9291
9398
  }
9292
9399
  this.resolvedPromise.then(() => {
9293
- this._toggle((show === undefined) ? !this.show : show);
9400
+ this.toggleCalendar((show === undefined) ? !this.show : show);
9294
9401
  });
9295
9402
  }
9296
9403
  /**
@@ -9308,6 +9415,15 @@ class DatePickerComponent {
9308
9415
  this.show = !this.show;
9309
9416
  this.cdr.markForCheck();
9310
9417
  }
9418
+ /**
9419
+ * @hidden
9420
+ */
9421
+ handleDateInputClick() {
9422
+ this.windowSize = windowSize();
9423
+ if (this.isAdaptive) {
9424
+ this.show = true;
9425
+ }
9426
+ }
9311
9427
  /**
9312
9428
  * @hidden
9313
9429
  */
@@ -9357,6 +9473,34 @@ class DatePickerComponent {
9357
9473
  get calendar() {
9358
9474
  return this.pickerService.calendar;
9359
9475
  }
9476
+ /**
9477
+ * @hidden
9478
+ */
9479
+ get isAdaptiveModeEnabled() {
9480
+ return this.adaptiveMode === 'auto';
9481
+ }
9482
+ /**
9483
+ * @hidden
9484
+ */
9485
+ get isAdaptive() {
9486
+ return this.isAdaptiveModeEnabled && this.windowSize !== 'large';
9487
+ }
9488
+ /**
9489
+ * @hidden
9490
+ */
9491
+ onResize() {
9492
+ if (!this.isOpen || this.windowSize === windowSize()) {
9493
+ return;
9494
+ }
9495
+ ;
9496
+ if (this.actionSheet.expanded) {
9497
+ this.toggleActionSheet(false);
9498
+ }
9499
+ else {
9500
+ this.togglePopup(false);
9501
+ }
9502
+ this.windowSize = windowSize();
9503
+ }
9360
9504
  /**
9361
9505
  * @hidden
9362
9506
  */
@@ -9384,21 +9528,17 @@ class DatePickerComponent {
9384
9528
  this.show = false;
9385
9529
  }
9386
9530
  }
9387
- togglePopup(show) {
9388
- const event = new PreventableEvent();
9389
- if (!this._show && show) {
9390
- this.open.emit(event);
9391
- }
9392
- else if (this._show && !show) {
9393
- this.close.emit(event);
9531
+ toggleCalendar(show) {
9532
+ this.windowSize = windowSize();
9533
+ if (this.isAdaptive) {
9534
+ this.toggleActionSheet(show);
9394
9535
  }
9395
- if (event.isDefaultPrevented()) {
9396
- return;
9536
+ else {
9537
+ this.togglePopup(show);
9397
9538
  }
9398
- this._toggle(show);
9399
9539
  this.toggleFocus();
9400
9540
  }
9401
- _toggle(show) {
9541
+ togglePopup(show) {
9402
9542
  if (show === this._show) {
9403
9543
  return;
9404
9544
  }
@@ -9416,16 +9556,7 @@ class DatePickerComponent {
9416
9556
  popupClass: this.popupClasses,
9417
9557
  positionMode: 'absolute'
9418
9558
  });
9419
- if (this.calendar.type === 'infinite') {
9420
- this.pickerSubscriptions.add(this.calendar.monthView.focusedCellChange.subscribe((id) => {
9421
- this.renderer.setAttribute(inputElement, attributeNames.ariaActiveDescendant, id);
9422
- }));
9423
- }
9424
- else {
9425
- this.pickerSubscriptions.add(this.calendar.multiViewCalendar.viewList.focusedCellChange.subscribe((id) => {
9426
- this.renderer.setAttribute(inputElement, attributeNames.ariaActiveDescendant, id);
9427
- }));
9428
- }
9559
+ this.setAriaActiveDescendant();
9429
9560
  this.popupRef.popupElement.setAttribute('id', this.popupUID);
9430
9561
  this.renderer.setAttribute(inputElement, attributeNames.ariaControls, this.popupUID);
9431
9562
  this.subscription = this.popupRef.popupAnchorViewportLeave.subscribe(() => this.show = false);
@@ -9434,11 +9565,53 @@ class DatePickerComponent {
9434
9565
  this.popupRef.close();
9435
9566
  this.popupRef = null;
9436
9567
  this.subscription.unsubscribe();
9568
+ this.ariaActiveDescendantSubscription.unsubscribe();
9437
9569
  this.renderer.removeAttribute(inputElement, attributeNames.ariaControls);
9438
9570
  this.renderer.removeAttribute(inputElement, attributeNames.ariaActiveDescendant);
9439
9571
  this.cdr.detectChanges();
9440
9572
  }
9441
9573
  }
9574
+ toggleActionSheet(show) {
9575
+ if (show === this._show) {
9576
+ return;
9577
+ }
9578
+ if (show && !this.isOpen) {
9579
+ this.actionSheet.toggle();
9580
+ this.updateActionSheetAdaptiveAppearance();
9581
+ this.setAriaActiveDescendant();
9582
+ }
9583
+ else if (!show && this.isOpen) {
9584
+ this.actionSheet.toggle();
9585
+ this.ariaActiveDescendantSubscription.unsubscribe();
9586
+ this.renderer.removeAttribute(this.input.inputElement, attributeNames.ariaActiveDescendant);
9587
+ }
9588
+ this._show = show;
9589
+ }
9590
+ updateActionSheetAdaptiveAppearance() {
9591
+ let element;
9592
+ let animationContainer;
9593
+ if (this.actionSheet) {
9594
+ element = this.actionSheet['element'].nativeElement.querySelector('.k-actionsheet');
9595
+ animationContainer = this.actionSheet['element'].nativeElement.querySelector('.k-child-animation-container');
9596
+ if (this.windowSize === 'medium') {
9597
+ this.renderer.removeClass(element, 'k-actionsheet-fullscreen');
9598
+ this.renderer.removeStyle(animationContainer, 'height');
9599
+ }
9600
+ else if (this.windowSize === 'small') {
9601
+ this.renderer.addClass(element, 'k-actionsheet-fullscreen');
9602
+ this.renderer.setStyle(animationContainer, 'height', '100%');
9603
+ }
9604
+ this.renderer.addClass(element, 'k-adaptive-actionsheet');
9605
+ this.renderer.addClass(element, 'k-actionsheet-bottom');
9606
+ this.renderer.setStyle(animationContainer, 'bottom', '0px');
9607
+ }
9608
+ }
9609
+ setAriaActiveDescendant() {
9610
+ const focusedCellChangeEvent = this.calendar.type === 'infinite' ?
9611
+ this.calendar.monthView.focusedCellChange :
9612
+ this.calendar.multiViewCalendar.viewList.focusedCellChange;
9613
+ this.ariaActiveDescendantSubscription = focusedCellChangeEvent.subscribe((id) => this.renderer.setAttribute(this.input.inputElement, attributeNames.ariaActiveDescendant, id));
9614
+ }
9442
9615
  focusInput() {
9443
9616
  if (this.touchEnabled) {
9444
9617
  return;
@@ -9499,15 +9672,17 @@ class DatePickerComponent {
9499
9672
  }
9500
9673
  }
9501
9674
  handleWindowBlur() {
9502
- if (!this.isOpen) {
9675
+ if (!this.isOpen || this.actionSheet.expanded) {
9503
9676
  return;
9504
9677
  }
9505
9678
  this.show = false;
9506
9679
  }
9507
9680
  handleBlur(args) {
9508
9681
  const currentTarget = args && currentFocusTarget(args);
9682
+ const target = args && args.target;
9683
+ const isInsideActionSheet = this.actionSheet && (this.actionSheet.element.nativeElement.contains(target) || this.actionSheet.element.nativeElement.contains(currentTarget));
9509
9684
  if (currentTarget && (this.input.containsElement(currentTarget) ||
9510
- (this.calendar && this.calendar.containsElement(currentTarget)))) {
9685
+ (this.calendar && this.calendar.containsElement(currentTarget)) || isInsideActionSheet)) {
9511
9686
  return;
9512
9687
  }
9513
9688
  if (hasObservers(this.onBlur) || (this.show && hasObservers(this.close)) || requiresZoneOnBlur(this.control)) {
@@ -9553,7 +9728,7 @@ class DatePickerComponent {
9553
9728
  }
9554
9729
  }
9555
9730
  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 });
9556
- 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: [
9731
+ 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: [
9557
9732
  { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DatePickerComponent), multi: true },
9558
9733
  { provide: NG_VALIDATORS, useExisting: forwardRef(() => DatePickerComponent), multi: true },
9559
9734
  { provide: KendoInput, useExisting: forwardRef(() => DatePickerComponent) },
@@ -9564,7 +9739,7 @@ DatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
9564
9739
  provide: L10N_PREFIX,
9565
9740
  useValue: 'kendo.datepicker'
9566
9741
  }
9567
- ], 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: `
9742
+ ], 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: `
9568
9743
  <ng-container kendoDatePickerLocalizedMessages
9569
9744
  i18n-today="kendo.datepicker.today|The label for the today button in the calendar header"
9570
9745
  today="Today"
@@ -9603,6 +9778,7 @@ DatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
9603
9778
  size="none"
9604
9779
  [value]="value"
9605
9780
  (valueChange)="handleInputChange($event)"
9781
+ (click)="handleDateInputClick()"
9606
9782
  ></kendo-dateinput>
9607
9783
  <button
9608
9784
  #toggleButton
@@ -9624,10 +9800,54 @@ DatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
9624
9800
  >
9625
9801
  </kendo-icon-wrapper>
9626
9802
  </button>
9803
+
9627
9804
  <ng-container #container></ng-container>
9805
+
9628
9806
  <ng-template #popupTemplate>
9807
+ <ng-container *ngTemplateOutlet="calendarTemplate"></ng-container>
9808
+ </ng-template>
9809
+
9810
+ <kendo-resize-sensor *ngIf="isAdaptiveModeEnabled" (resize)="onResize()"></kendo-resize-sensor>
9811
+ <kendo-actionsheet
9812
+ #actionSheet
9813
+ (overlayClick)="show=false"
9814
+ [kendoEventsOutsideAngular]="{
9815
+ click: handleActionSheetClick
9816
+ }"
9817
+ [scope]="this"
9818
+ (collapse)="handleActionSheetCollapse()"
9819
+ >
9820
+ <ng-template kendoActionSheetTemplate>
9821
+ <div class="k-actionsheet-titlebar">
9822
+ <div class="k-actionsheet-titlebar-group k-hbox">
9823
+ <div class="k-actionsheet-title">
9824
+ <div class="k-text-center">{{ title }}</div>
9825
+ <div class="k-actionsheet-subtitle k-text-center">{{ subtitle }}</div>
9826
+ </div>
9827
+ <div class="k-actionsheet-actions">
9828
+ <button
9829
+ kendoButton
9830
+ icon="x"
9831
+ [attr.title]="localization.get('clearTitle')"
9832
+ [svgIcon]="xIcon"
9833
+ fillMode="flat"
9834
+ size="large"
9835
+ innerCssClass="k-button-icon"
9836
+ (click)="show = false">
9837
+ </button>
9838
+ </div>
9839
+ </div>
9840
+ </div>
9841
+ <div class="k-actionsheet-content !k-overflow-hidden">
9842
+ <ng-container *ngTemplateOutlet="calendarTemplate"></ng-container>
9843
+ </div>
9844
+ </ng-template>
9845
+ </kendo-actionsheet>
9846
+
9847
+ <ng-template #calendarTemplate>
9629
9848
  <kendo-calendar
9630
9849
  #calendar
9850
+ [size]="isAdaptive ? 'large' : 'medium'"
9631
9851
  [type]="calendarType"
9632
9852
  [min]="min"
9633
9853
  [max]="max"
@@ -9661,8 +9881,8 @@ DatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
9661
9881
  >
9662
9882
  </kendo-calendar-messages>
9663
9883
  </kendo-calendar>
9664
- <ng-template>
9665
- `, 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 });
9884
+ </ng-template>
9885
+ `, 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 });
9666
9886
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DatePickerComponent, decorators: [{
9667
9887
  type: Component,
9668
9888
  args: [{
@@ -9720,6 +9940,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
9720
9940
  size="none"
9721
9941
  [value]="value"
9722
9942
  (valueChange)="handleInputChange($event)"
9943
+ (click)="handleDateInputClick()"
9723
9944
  ></kendo-dateinput>
9724
9945
  <button
9725
9946
  #toggleButton
@@ -9741,10 +9962,54 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
9741
9962
  >
9742
9963
  </kendo-icon-wrapper>
9743
9964
  </button>
9965
+
9744
9966
  <ng-container #container></ng-container>
9967
+
9745
9968
  <ng-template #popupTemplate>
9969
+ <ng-container *ngTemplateOutlet="calendarTemplate"></ng-container>
9970
+ </ng-template>
9971
+
9972
+ <kendo-resize-sensor *ngIf="isAdaptiveModeEnabled" (resize)="onResize()"></kendo-resize-sensor>
9973
+ <kendo-actionsheet
9974
+ #actionSheet
9975
+ (overlayClick)="show=false"
9976
+ [kendoEventsOutsideAngular]="{
9977
+ click: handleActionSheetClick
9978
+ }"
9979
+ [scope]="this"
9980
+ (collapse)="handleActionSheetCollapse()"
9981
+ >
9982
+ <ng-template kendoActionSheetTemplate>
9983
+ <div class="k-actionsheet-titlebar">
9984
+ <div class="k-actionsheet-titlebar-group k-hbox">
9985
+ <div class="k-actionsheet-title">
9986
+ <div class="k-text-center">{{ title }}</div>
9987
+ <div class="k-actionsheet-subtitle k-text-center">{{ subtitle }}</div>
9988
+ </div>
9989
+ <div class="k-actionsheet-actions">
9990
+ <button
9991
+ kendoButton
9992
+ icon="x"
9993
+ [attr.title]="localization.get('clearTitle')"
9994
+ [svgIcon]="xIcon"
9995
+ fillMode="flat"
9996
+ size="large"
9997
+ innerCssClass="k-button-icon"
9998
+ (click)="show = false">
9999
+ </button>
10000
+ </div>
10001
+ </div>
10002
+ </div>
10003
+ <div class="k-actionsheet-content !k-overflow-hidden">
10004
+ <ng-container *ngTemplateOutlet="calendarTemplate"></ng-container>
10005
+ </div>
10006
+ </ng-template>
10007
+ </kendo-actionsheet>
10008
+
10009
+ <ng-template #calendarTemplate>
9746
10010
  <kendo-calendar
9747
10011
  #calendar
10012
+ [size]="isAdaptive ? 'large' : 'medium'"
9748
10013
  [type]="calendarType"
9749
10014
  [min]="min"
9750
10015
  [max]="max"
@@ -9778,7 +10043,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
9778
10043
  >
9779
10044
  </kendo-calendar-messages>
9780
10045
  </kendo-calendar>
9781
- <ng-template>
10046
+ </ng-template>
9782
10047
  `
9783
10048
  }]
9784
10049
  }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1$1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: i1$2.PopupService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.Injector }, { type: PickerService }, { type: DisabledDatesService }, { type: undefined, decorators: [{
@@ -9795,6 +10060,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
9795
10060
  }], toggleButton: [{
9796
10061
  type: ViewChild,
9797
10062
  args: ['toggleButton', { static: true }]
10063
+ }], actionSheet: [{
10064
+ type: ViewChild,
10065
+ args: ['actionSheet']
9798
10066
  }], focusableId: [{
9799
10067
  type: Input
9800
10068
  }], cellTemplate: [{
@@ -9891,6 +10159,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
9891
10159
  type: Input
9892
10160
  }], title: [{
9893
10161
  type: Input
10162
+ }], subtitle: [{
10163
+ type: Input
9894
10164
  }], rangeValidation: [{
9895
10165
  type: Input
9896
10166
  }], disabledDatesValidation: [{
@@ -9903,6 +10173,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
9903
10173
  type: Input
9904
10174
  }], fillMode: [{
9905
10175
  type: Input
10176
+ }], adaptiveMode: [{
10177
+ type: Input
9906
10178
  }], valueChange: [{
9907
10179
  type: Output
9908
10180
  }], onFocus: [{
@@ -9964,17 +10236,35 @@ const listTitle = () => span('hour', 'k-title k-timeselector-title');
9964
10236
  const listItem = () => li('<span>02</span>', 'k-item');
9965
10237
  const list = () => ul([listItem()], 'k-reset');
9966
10238
  const scrollable = () => (div([list()], 'k-time-container k-flex k-content k-scrollable'));
9967
- const timeListWrapper = () => {
10239
+ const actionSheetContent = (isDateTimePicker) => ([
10240
+ isDateTimePicker ? div([div('button', 'k-button k-button-lg')], 'k-datetime-buttongroup') : null,
10241
+ div([
10242
+ div([span('title', 'k-title')], 'k-time-header'),
10243
+ div([listTitle(), div([scrollable()], 'k-time-list')], 'k-time-list-wrapper')
10244
+ ], 'k-timeselector k-timeselector-lg')
10245
+ ]);
10246
+ const timeListWrapper = (isAdaptiveEnabled = false, windowSize, isDateTimePicker) => {
9968
10247
  if (!isDocumentAvailable()) {
9969
10248
  return null;
9970
10249
  }
9971
- return div([listTitle(), div([scrollable()], 'k-time-list')], 'k-time-list-wrapper', { left: '-10000px', position: 'absolute' });
10250
+ if (!isAdaptiveEnabled) {
10251
+ return div([listTitle(), div([scrollable()], 'k-time-list')], 'k-time-list-wrapper', { left: '-10000px', position: 'absolute' });
10252
+ }
10253
+ 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'),
10254
+ div([
10255
+ isDateTimePicker ? div([...actionSheetContent(isDateTimePicker)], 'k-datetime-wrap k-time-tab') : actionSheetContent(isDateTimePicker)[1]
10256
+ ], 'k-actionsheet-content'),
10257
+ div([
10258
+ div('button', 'k-button k-button-lg')
10259
+ ], '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 });
9972
10260
  };
9973
- const TIMELIST_WRAPPER = timeListWrapper();
9974
10261
  /**
9975
10262
  * @hidden
9976
10263
  */
9977
10264
  class TimePickerDOMService {
10265
+ get windowSize() {
10266
+ return windowSize();
10267
+ }
9978
10268
  ensureHeights() {
9979
10269
  if (this.timeListHeight !== undefined) {
9980
10270
  return;
@@ -9985,9 +10275,17 @@ class TimePickerDOMService {
9985
10275
  if (!isDocumentAvailable()) {
9986
10276
  return;
9987
10277
  }
9988
- const listContainer = container && container.querySelector('.k-time-list-container');
9989
- const hostContainer = listContainer || document.body;
9990
- const wrapper = hostContainer.appendChild(TIMELIST_WRAPPER);
10278
+ let wrapper;
10279
+ let hostContainer;
10280
+ if (!this.isAdaptiveEnabled || this.windowSize === 'large') { // not adaptive
10281
+ const listContainer = container && container.querySelector('.k-time-list-container');
10282
+ hostContainer = listContainer || document.body;
10283
+ wrapper = hostContainer.appendChild(timeListWrapper());
10284
+ }
10285
+ else { // adaptive mode
10286
+ hostContainer = document.body;
10287
+ wrapper = hostContainer.appendChild(timeListWrapper(true, this.windowSize, this.isDateTimePicker));
10288
+ }
9991
10289
  this.timeListHeight = wrapper.querySelector('.k-scrollable').getBoundingClientRect().height;
9992
10290
  this.itemHeight = wrapper.querySelector('li').getBoundingClientRect().height;
9993
10291
  hostContainer.removeChild(wrapper);
@@ -10824,7 +11122,7 @@ TimeListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
10824
11122
  </li>
10825
11123
  </ul>
10826
11124
  </kendo-virtualization>
10827
- `, 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"] }] });
11125
+ `, 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"] }] });
10828
11126
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TimeListComponent, decorators: [{
10829
11127
  type: Component,
10830
11128
  args: [{
@@ -11178,6 +11476,8 @@ class TimeSelectorComponent {
11178
11476
  .subscribe(() => this.cdr.markForCheck()));
11179
11477
  }
11180
11478
  this.renderer.addClass(this.element.nativeElement, 'k-timeselector');
11479
+ this.dom.isAdaptiveEnabled = this.isAdaptiveEnabled;
11480
+ this.dom.isDateTimePicker = this.isDateTimePicker;
11181
11481
  this.dom.calculateHeights(this.element.nativeElement);
11182
11482
  this.init();
11183
11483
  this.bindEvents();
@@ -11373,7 +11673,7 @@ class TimeSelectorComponent {
11373
11673
  }
11374
11674
  }
11375
11675
  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 });
11376
- 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: [
11676
+ 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: [
11377
11677
  LocalizationService,
11378
11678
  {
11379
11679
  provide: L10N_PREFIX,
@@ -11482,7 +11782,7 @@ TimeSelectorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
11482
11782
  [disabled]="disabled"
11483
11783
  >{{localization.get('accept')}}</button>
11484
11784
  </div>
11485
- `, 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 });
11785
+ `, 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 });
11486
11786
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TimeSelectorComponent, decorators: [{
11487
11787
  type: Component,
11488
11788
  args: [{
@@ -11635,6 +11935,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
11635
11935
  type: Input
11636
11936
  }], disabled: [{
11637
11937
  type: Input
11938
+ }], isAdaptiveEnabled: [{
11939
+ type: Input
11940
+ }], isDateTimePicker: [{
11941
+ type: Input
11638
11942
  }], steps: [{
11639
11943
  type: Input
11640
11944
  }], value: [{
@@ -11792,13 +12096,18 @@ class TimePickerComponent {
11792
12096
  */
11793
12097
  this.tabindex = 0;
11794
12098
  /**
11795
- * Sets the title of the input element of the TimePicker.
12099
+ * Sets the title of the input element of the TimePicker and the title text rendered
12100
+ * in the header of the popup(action sheet). Applicable only when [`AdaptiveMode` is set to `auto`](slug:api_dateinputs_adaptivemode).
11796
12101
  */
11797
12102
  this.title = "";
11798
12103
  /**
11799
12104
  * Determines whether the built-in min or max validators are enforced when a form is being validated.
11800
12105
  */
11801
12106
  this.rangeValidation = true;
12107
+ /**
12108
+ * Enables or disables the adaptive mode. By default the adaptive rendering is disabled.
12109
+ */
12110
+ this.adaptiveMode = 'none';
11802
12111
  /**
11803
12112
  * Fires each time the user selects a new value.
11804
12113
  * For more information, refer to the section on
@@ -11869,6 +12178,10 @@ class TimePickerComponent {
11869
12178
  * @hidden
11870
12179
  */
11871
12180
  this.wrapperClasses = true;
12181
+ /**
12182
+ * @hidden
12183
+ */
12184
+ this.xIcon = xIcon;
11872
12185
  this.onControlChange = noop$2;
11873
12186
  this.onControlTouched = noop$2;
11874
12187
  this.onValidatorChange = noop$2;
@@ -11961,6 +12274,16 @@ class TimePickerComponent {
11961
12274
  get tabIndex() {
11962
12275
  return this.tabindex;
11963
12276
  }
12277
+ /**
12278
+ * Sets the subtitle text rendered in the header of the popup(action sheet).
12279
+ * Applicable only when [`AdaptiveMode` is set to `auto`](slug:api_dateinputs_adaptivemode).
12280
+ */
12281
+ set subtitle(subtitle) {
12282
+ this._subtitle = subtitle;
12283
+ }
12284
+ get subtitle() {
12285
+ return this._subtitle || this.placeholder;
12286
+ }
11964
12287
  /**
11965
12288
  * Specifies the value of the TimePicker component.
11966
12289
  */
@@ -12074,14 +12397,24 @@ class TimePickerComponent {
12074
12397
  if (show && (this.disabled || this.readonly)) {
12075
12398
  return;
12076
12399
  }
12077
- const skipZone = !show && (!this._show || !hasObservers(this.close));
12400
+ const skipZone = !show && (!this._show || (!hasObservers(this.close) && !hasObservers(this.open)));
12078
12401
  if (!skipZone) {
12079
12402
  this.zone.run(() => {
12080
- this.togglePopup(show);
12403
+ const event = new PreventableEvent();
12404
+ if (!this._show && show) {
12405
+ this.open.emit(event);
12406
+ }
12407
+ else if (this._show && !show) {
12408
+ this.close.emit(event);
12409
+ }
12410
+ if (event.isDefaultPrevented()) {
12411
+ return;
12412
+ }
12413
+ this.toggleTimeSelector(show);
12081
12414
  });
12082
12415
  }
12083
12416
  else {
12084
- this.togglePopup(show);
12417
+ this.toggleTimeSelector(show);
12085
12418
  }
12086
12419
  }
12087
12420
  get input() {
@@ -12116,6 +12449,7 @@ class TimePickerComponent {
12116
12449
  */
12117
12450
  ngAfterViewInit() {
12118
12451
  this.setComponentClasses();
12452
+ this.renderer.setAttribute(this.actionSheet.element.nativeElement, 'style', '--kendo-actionsheet-height: 60vh; --kendo-actionsheet-max-height: none');
12119
12453
  }
12120
12454
  /**
12121
12455
  * @hidden
@@ -12235,7 +12569,8 @@ class TimePickerComponent {
12235
12569
  (this.timeSelector || this.input)['blur']();
12236
12570
  }
12237
12571
  /**
12238
- * Toggles the visibility of the popup. If you use the `toggle` method to show or hide the popup,
12572
+ * Toggles the visibility of the popup or actionSheet.
12573
+ * If you use the `toggle` method to show or hide the popup or actionSheet,
12239
12574
  * the `open` and `close` events do not fire.
12240
12575
  *
12241
12576
  * @param show - The state of the popup.
@@ -12245,11 +12580,11 @@ class TimePickerComponent {
12245
12580
  return;
12246
12581
  }
12247
12582
  this.resolvedPromise.then(() => {
12248
- this._toggle((show === undefined) ? !this.show : show);
12583
+ this.toggleTimeSelector((show === undefined) ? !this.show : show);
12249
12584
  });
12250
12585
  }
12251
12586
  /**
12252
- * Returns the current open state of the popup.
12587
+ * Indicates whether the component is currently open. That is when the popup or actionSheet is open.
12253
12588
  */
12254
12589
  get isOpen() {
12255
12590
  return this.show;
@@ -12281,6 +12616,19 @@ class TimePickerComponent {
12281
12616
  this.valueChange.emit(cloneDate(value));
12282
12617
  });
12283
12618
  }
12619
+ /**
12620
+ * @hidden
12621
+ */
12622
+ handleActionSheetAccept() {
12623
+ this.timeSelector.handleAccept();
12624
+ }
12625
+ /**
12626
+ * @hidden
12627
+ */
12628
+ handleActionSheetCollapse() {
12629
+ // If not handled, the actionsheet expanded state does not get updated when overlay is clicked
12630
+ this.cdr.markForCheck();
12631
+ }
12284
12632
  /**
12285
12633
  * @hidden
12286
12634
  */
@@ -12294,6 +12642,15 @@ class TimePickerComponent {
12294
12642
  const val = this.input.formatSections['date'] ? value : this.mergeTime(value);
12295
12643
  this.handleChange(val);
12296
12644
  }
12645
+ /**
12646
+ * @hidden
12647
+ */
12648
+ handleDateInputClick() {
12649
+ this.windowSize = windowSize();
12650
+ if (this.isAdaptive) {
12651
+ this.show = true;
12652
+ }
12653
+ }
12297
12654
  /**
12298
12655
  * @hidden
12299
12656
  */
@@ -12324,6 +12681,18 @@ class TimePickerComponent {
12324
12681
  'k-reset'
12325
12682
  ].concat(this.popupSettings.popupClass || []);
12326
12683
  }
12684
+ /**
12685
+ * @hidden
12686
+ */
12687
+ get isAdaptiveModeEnabled() {
12688
+ return this.adaptiveMode === 'auto';
12689
+ }
12690
+ /**
12691
+ * @hidden
12692
+ */
12693
+ get isAdaptive() {
12694
+ return this.isAdaptiveModeEnabled && this.windowSize !== 'large';
12695
+ }
12327
12696
  /**
12328
12697
  * @hidden
12329
12698
  */
@@ -12336,21 +12705,48 @@ class TimePickerComponent {
12336
12705
  mergeTime(value) {
12337
12706
  return this.value && value ? setTime(this.value, value) : value;
12338
12707
  }
12339
- togglePopup(show) {
12340
- const event = new PreventableEvent();
12341
- if (!this._show && show) {
12342
- this.open.emit(event);
12708
+ /**
12709
+ * @hidden
12710
+ */
12711
+ onResize() {
12712
+ if (!this.isOpen || this.windowSize === windowSize()) {
12713
+ return;
12343
12714
  }
12344
- else if (this._show && !show) {
12345
- this.close.emit(event);
12715
+ ;
12716
+ if (this.actionSheet.expanded) {
12717
+ this.toggleActionSheet(false);
12346
12718
  }
12347
- if (event.isDefaultPrevented()) {
12348
- return;
12719
+ else {
12720
+ this.togglePopup(false);
12721
+ }
12722
+ this.windowSize = windowSize();
12723
+ }
12724
+ toggleTimeSelector(show) {
12725
+ this.windowSize = windowSize();
12726
+ if (this.isAdaptive) {
12727
+ this.toggleActionSheet(show);
12728
+ }
12729
+ else {
12730
+ this.togglePopup(show);
12349
12731
  }
12350
- this._toggle(show);
12351
12732
  this.toggleFocus();
12352
12733
  }
12353
- _toggle(show) {
12734
+ toggleActionSheet(show) {
12735
+ if (show === this._show) {
12736
+ return;
12737
+ }
12738
+ if (show && !this.isOpen) {
12739
+ this.actionSheet.toggle();
12740
+ this.updateActionSheetAdaptiveAppearance();
12741
+ }
12742
+ else if (!show && this.isOpen) {
12743
+ // Need to disable the pointer events to avoid triggering focus on the timelist when acionsheet close down animation starts
12744
+ this.renderer.setStyle(this.timeSelector.element.nativeElement, 'pointer-events', 'none');
12745
+ this.actionSheet.toggle();
12746
+ }
12747
+ this._show = show;
12748
+ }
12749
+ togglePopup(show) {
12354
12750
  if (show === this.isOpen) {
12355
12751
  return;
12356
12752
  }
@@ -12379,6 +12775,25 @@ class TimePickerComponent {
12379
12775
  this.renderer.removeAttribute(inputElement, attributeNames.ariaControls);
12380
12776
  }
12381
12777
  }
12778
+ updateActionSheetAdaptiveAppearance() {
12779
+ let element;
12780
+ let animationContainer;
12781
+ if (this.actionSheet) {
12782
+ element = this.actionSheet['element'].nativeElement.querySelector('.k-actionsheet');
12783
+ animationContainer = this.actionSheet['element'].nativeElement.querySelector('.k-child-animation-container');
12784
+ if (this.windowSize === 'medium') {
12785
+ this.renderer.removeClass(element, 'k-actionsheet-fullscreen');
12786
+ this.renderer.removeStyle(animationContainer, 'height');
12787
+ }
12788
+ else if (this.windowSize === 'small') {
12789
+ this.renderer.addClass(element, 'k-actionsheet-fullscreen');
12790
+ this.renderer.setStyle(animationContainer, 'height', '100%');
12791
+ }
12792
+ this.renderer.addClass(element, 'k-adaptive-actionsheet');
12793
+ this.renderer.addClass(element, 'k-actionsheet-bottom');
12794
+ this.renderer.setStyle(animationContainer, 'bottom', '0px');
12795
+ }
12796
+ }
12382
12797
  focusInput() {
12383
12798
  if (this.touchEnabled) {
12384
12799
  return;
@@ -12429,7 +12844,7 @@ class TimePickerComponent {
12429
12844
  }
12430
12845
  }
12431
12846
  handleWindowBlur() {
12432
- if (!this.isOpen) {
12847
+ if (!this.isOpen || this.actionSheet.expanded) {
12433
12848
  return;
12434
12849
  }
12435
12850
  this.show = false;
@@ -12446,9 +12861,11 @@ class TimePickerComponent {
12446
12861
  }
12447
12862
  }
12448
12863
  handleBlur(args) {
12449
- const currentTarget = args && currentFocusTarget(args);
12864
+ const currentTarget = args && currentFocusTarget(args); // relatedTarget || activeElement
12865
+ const target = args && args.target;
12866
+ const isInsideActionSheet = this.actionSheet && (this.actionSheet.element.nativeElement.contains(target) || this.actionSheet.element.nativeElement.contains(currentTarget));
12450
12867
  if (currentTarget && (this.input.containsElement(currentTarget) ||
12451
- (this.timeSelector && this.timeSelector.containsElement(currentTarget)))) {
12868
+ (this.timeSelector && this.timeSelector.containsElement(currentTarget)) || isInsideActionSheet)) {
12452
12869
  return;
12453
12870
  }
12454
12871
  if (hasObservers(this.onBlur) || (this.show && hasObservers(this.close)) || requiresZoneOnBlur(this.control)) {
@@ -12488,7 +12905,7 @@ class TimePickerComponent {
12488
12905
  }
12489
12906
  }
12490
12907
  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 });
12491
- 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: [
12908
+ 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: [
12492
12909
  { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => TimePickerComponent), multi: true },
12493
12910
  { provide: NG_VALIDATORS, useExisting: forwardRef(() => TimePickerComponent), multi: true },
12494
12911
  { provide: KendoInput, useExisting: forwardRef(() => TimePickerComponent) },
@@ -12499,7 +12916,7 @@ TimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
12499
12916
  useValue: 'kendo.timepicker'
12500
12917
  },
12501
12918
  PickerService
12502
- ], 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: `
12919
+ ], 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: `
12503
12920
  <ng-container kendoTimePickerLocalizedMessages
12504
12921
  i18n-accept="kendo.timepicker.accept|The Accept button text in the timepicker component"
12505
12922
  accept="Set"
@@ -12562,6 +12979,7 @@ TimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
12562
12979
  [title]="title"
12563
12980
  [value]="value"
12564
12981
  (valueChange)="handleInputChange($event)"
12982
+ (click)="handleDateInputClick()"
12565
12983
  ></kendo-dateinput>
12566
12984
  <button
12567
12985
  #toggleButton
@@ -12584,15 +13002,76 @@ TimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
12584
13002
  </kendo-icon-wrapper>
12585
13003
  </button>
12586
13004
  <ng-template #popupTemplate>
13005
+ <ng-container *ngTemplateOutlet="timeSelectorTemplate"></ng-container>
13006
+ </ng-template>
13007
+ <ng-container #container></ng-container>
13008
+
13009
+ <kendo-resize-sensor *ngIf="isAdaptiveModeEnabled" (resize)="onResize()"></kendo-resize-sensor>
13010
+ <kendo-actionsheet
13011
+ #actionSheet
13012
+ (overlayClick)="show=false"
13013
+ (collapse)="handleActionSheetCollapse()"
13014
+ >
13015
+ <ng-template kendoActionSheetTemplate>
13016
+ <div class="k-actionsheet-titlebar">
13017
+ <div class="k-actionsheet-titlebar-group k-hbox">
13018
+ <div class="k-actionsheet-title">
13019
+ <div class="k-text-center">{{ title }}</div>
13020
+ <div class="k-actionsheet-subtitle k-text-center">{{ subtitle }}</div>
13021
+ </div>
13022
+ <div class="k-actionsheet-actions">
13023
+ <button
13024
+ kendoButton
13025
+ icon="x"
13026
+ [attr.title]="localization.get('clearTitle')"
13027
+ [svgIcon]="xIcon"
13028
+ fillMode="flat"
13029
+ size="large"
13030
+ innerCssClass="k-button-icon"
13031
+ (click)="show = false">
13032
+ </button>
13033
+ </div>
13034
+ </div>
13035
+ </div>
13036
+ <div class="k-actionsheet-content !k-overflow-hidden">
13037
+ <ng-container *ngTemplateOutlet="timeSelectorTemplate"></ng-container>
13038
+ </div>
13039
+ <div class="k-actions k-actions-stretched k-actions-horizontal k-actionsheet-footer">
13040
+ <button kendoButton
13041
+ (click)="handleReject()"
13042
+ size="large"
13043
+ [attr.title]="localization.get('cancelLabel')"
13044
+ [attr.aria-label]="localization.get('cancelLabel')"
13045
+ >
13046
+ {{localization.get('cancel')}}
13047
+ </button>
13048
+
13049
+ <button kendoButton
13050
+ (click)="handleActionSheetAccept()"
13051
+ size="large"
13052
+ themeColor="primary"
13053
+ [attr.title]="localization.get('acceptLabel')"
13054
+ [attr.aria-label]="localization.get('acceptLabel')"
13055
+ >
13056
+ {{localization.get('accept')}}
13057
+ </button>
13058
+ </div>
13059
+ </ng-template>
13060
+ </kendo-actionsheet>
13061
+
13062
+ <ng-template #timeSelectorTemplate>
12587
13063
  <kendo-timeselector
12588
13064
  #timeSelector
12589
- [cancelButton]="cancelButton"
13065
+ [class.k-timeselector-lg]="isAdaptive"
13066
+ [cancelButton]="cancelButton && !this.isAdaptive"
13067
+ [setButton]="!isAdaptive"
12590
13068
  [nowButton]="nowButton"
12591
13069
  [format]="format"
12592
13070
  [min]="min"
12593
13071
  [max]="max"
12594
13072
  [steps]="steps"
12595
13073
  [value]="value"
13074
+ [isAdaptiveEnabled]="isAdaptiveModeEnabled"
12596
13075
  [kendoEventsOutsideAngular]="{
12597
13076
  keydown: handleKeydown,
12598
13077
  mousedown: handleMousedown
@@ -12617,8 +13096,7 @@ TimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
12617
13096
  </kendo-timeselector-messages>
12618
13097
  </kendo-timeselector>
12619
13098
  </ng-template>
12620
- <ng-container #container></ng-container>
12621
- `, 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 });
13099
+ `, 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 });
12622
13100
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TimePickerComponent, decorators: [{
12623
13101
  type: Component,
12624
13102
  args: [{
@@ -12700,6 +13178,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
12700
13178
  [title]="title"
12701
13179
  [value]="value"
12702
13180
  (valueChange)="handleInputChange($event)"
13181
+ (click)="handleDateInputClick()"
12703
13182
  ></kendo-dateinput>
12704
13183
  <button
12705
13184
  #toggleButton
@@ -12722,15 +13201,76 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
12722
13201
  </kendo-icon-wrapper>
12723
13202
  </button>
12724
13203
  <ng-template #popupTemplate>
12725
- <kendo-timeselector
12726
- #timeSelector
12727
- [cancelButton]="cancelButton"
12728
- [nowButton]="nowButton"
12729
- [format]="format"
12730
- [min]="min"
12731
- [max]="max"
13204
+ <ng-container *ngTemplateOutlet="timeSelectorTemplate"></ng-container>
13205
+ </ng-template>
13206
+ <ng-container #container></ng-container>
13207
+
13208
+ <kendo-resize-sensor *ngIf="isAdaptiveModeEnabled" (resize)="onResize()"></kendo-resize-sensor>
13209
+ <kendo-actionsheet
13210
+ #actionSheet
13211
+ (overlayClick)="show=false"
13212
+ (collapse)="handleActionSheetCollapse()"
13213
+ >
13214
+ <ng-template kendoActionSheetTemplate>
13215
+ <div class="k-actionsheet-titlebar">
13216
+ <div class="k-actionsheet-titlebar-group k-hbox">
13217
+ <div class="k-actionsheet-title">
13218
+ <div class="k-text-center">{{ title }}</div>
13219
+ <div class="k-actionsheet-subtitle k-text-center">{{ subtitle }}</div>
13220
+ </div>
13221
+ <div class="k-actionsheet-actions">
13222
+ <button
13223
+ kendoButton
13224
+ icon="x"
13225
+ [attr.title]="localization.get('clearTitle')"
13226
+ [svgIcon]="xIcon"
13227
+ fillMode="flat"
13228
+ size="large"
13229
+ innerCssClass="k-button-icon"
13230
+ (click)="show = false">
13231
+ </button>
13232
+ </div>
13233
+ </div>
13234
+ </div>
13235
+ <div class="k-actionsheet-content !k-overflow-hidden">
13236
+ <ng-container *ngTemplateOutlet="timeSelectorTemplate"></ng-container>
13237
+ </div>
13238
+ <div class="k-actions k-actions-stretched k-actions-horizontal k-actionsheet-footer">
13239
+ <button kendoButton
13240
+ (click)="handleReject()"
13241
+ size="large"
13242
+ [attr.title]="localization.get('cancelLabel')"
13243
+ [attr.aria-label]="localization.get('cancelLabel')"
13244
+ >
13245
+ {{localization.get('cancel')}}
13246
+ </button>
13247
+
13248
+ <button kendoButton
13249
+ (click)="handleActionSheetAccept()"
13250
+ size="large"
13251
+ themeColor="primary"
13252
+ [attr.title]="localization.get('acceptLabel')"
13253
+ [attr.aria-label]="localization.get('acceptLabel')"
13254
+ >
13255
+ {{localization.get('accept')}}
13256
+ </button>
13257
+ </div>
13258
+ </ng-template>
13259
+ </kendo-actionsheet>
13260
+
13261
+ <ng-template #timeSelectorTemplate>
13262
+ <kendo-timeselector
13263
+ #timeSelector
13264
+ [class.k-timeselector-lg]="isAdaptive"
13265
+ [cancelButton]="cancelButton && !this.isAdaptive"
13266
+ [setButton]="!isAdaptive"
13267
+ [nowButton]="nowButton"
13268
+ [format]="format"
13269
+ [min]="min"
13270
+ [max]="max"
12732
13271
  [steps]="steps"
12733
13272
  [value]="value"
13273
+ [isAdaptiveEnabled]="isAdaptiveModeEnabled"
12734
13274
  [kendoEventsOutsideAngular]="{
12735
13275
  keydown: handleKeydown,
12736
13276
  mousedown: handleMousedown
@@ -12755,7 +13295,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
12755
13295
  </kendo-timeselector-messages>
12756
13296
  </kendo-timeselector>
12757
13297
  </ng-template>
12758
- <ng-container #container></ng-container>
12759
13298
  `
12760
13299
  }]
12761
13300
  }], ctorParameters: function () { return [{ type: BusViewService }, { type: i0.NgZone }, { type: i1$1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: i1$2.PopupService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.Injector }, { type: PickerService }, { type: i1.IntlService }, { type: undefined, decorators: [{
@@ -12772,6 +13311,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
12772
13311
  }], toggleButton: [{
12773
13312
  type: ViewChild,
12774
13313
  args: ['toggleButton', { static: true }]
13314
+ }], actionSheet: [{
13315
+ type: ViewChild,
13316
+ args: ['actionSheet']
12775
13317
  }], focusableId: [{
12776
13318
  type: Input
12777
13319
  }], disabled: [{
@@ -12806,8 +13348,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
12806
13348
  type: Input
12807
13349
  }], title: [{
12808
13350
  type: Input
13351
+ }], subtitle: [{
13352
+ type: Input
12809
13353
  }], rangeValidation: [{
12810
13354
  type: Input
13355
+ }], adaptiveMode: [{
13356
+ type: Input
12811
13357
  }], value: [{
12812
13358
  type: Input
12813
13359
  }], size: [{
@@ -12954,7 +13500,8 @@ class DateTimePickerComponent {
12954
13500
  */
12955
13501
  this.twoDigitYearMax = TWO_DIGIT_YEAR_MAX;
12956
13502
  /**
12957
- * Sets the title of the input element of the DateTimePicker.
13503
+ * Sets the title of the input element of the DateTimePicker and the title text rendered
13504
+ * in the header of the popup(action sheet). Applicable only when [`AdaptiveMode` is set to `auto`](slug:api_dateinputs_adaptivemode).
12958
13505
  */
12959
13506
  this.title = '';
12960
13507
  /**
@@ -13023,6 +13570,10 @@ class DateTimePickerComponent {
13023
13570
  * Determines whether the built-in validation for incomplete dates is to be enforced when a form is being validated.
13024
13571
  */
13025
13572
  this.incompleteDateValidation = false;
13573
+ /**
13574
+ * Enables or disables the adaptive mode. By default the adaptive rendering is disabled.
13575
+ */
13576
+ this.adaptiveMode = 'none';
13026
13577
  /**
13027
13578
  * Fires each time the user selects a new value.
13028
13579
  * ([more information and example]({% slug overview_datetimepicker %}#toc-methods-and-events)).
@@ -13083,6 +13634,10 @@ class DateTimePickerComponent {
13083
13634
  * @hidden
13084
13635
  */
13085
13636
  this.calendarMax = lastMillisecondOfDate(MAX_DATE);
13637
+ /**
13638
+ * @hidden
13639
+ */
13640
+ this.xIcon = xIcon;
13086
13641
  this._popupSettings = { animate: true };
13087
13642
  this._value = null;
13088
13643
  this._format = DEFAULT_DATEINPUT_FORMAT;
@@ -13203,6 +13758,16 @@ class DateTimePickerComponent {
13203
13758
  get popupSettings() {
13204
13759
  return this._popupSettings;
13205
13760
  }
13761
+ /**
13762
+ * Sets the subtitle text rendered in the header of the popup(action sheet).
13763
+ * Applicable only when [`AdaptiveMode` is set to `auto`](slug:api_dateinputs_adaptivemode).
13764
+ */
13765
+ set subtitle(subtitle) {
13766
+ this._subtitle = subtitle;
13767
+ }
13768
+ get subtitle() {
13769
+ return this._subtitle || this.placeholder;
13770
+ }
13206
13771
  /**
13207
13772
  * Specifies the smallest valid date.
13208
13773
  * The Calendar will not display dates before this value.
@@ -13238,10 +13803,13 @@ class DateTimePickerComponent {
13238
13803
  return this._max;
13239
13804
  }
13240
13805
  /**
13241
- * Indicates whether the component is currently open.
13806
+ * Indicates whether the component is currently open. That is when the popup or actionSheet is open.
13242
13807
  */
13243
13808
  get isOpen() {
13244
- return isPresent(this.popupRef);
13809
+ if (!this.isAdaptive) {
13810
+ return isPresent(this.popupRef);
13811
+ }
13812
+ return this.actionSheet && this.actionSheet.expanded;
13245
13813
  }
13246
13814
  /**
13247
13815
  * Indicates whether the component or its popup content is focused.
@@ -13369,6 +13937,34 @@ class DateTimePickerComponent {
13369
13937
  get disableTimeSelector() {
13370
13938
  return this.activeTab !== 'time' && !this.timeSelector.isActive;
13371
13939
  }
13940
+ /**
13941
+ * @hidden
13942
+ */
13943
+ get isAdaptiveModeEnabled() {
13944
+ return this.adaptiveMode === 'auto';
13945
+ }
13946
+ /**
13947
+ * @hidden
13948
+ */
13949
+ get isAdaptive() {
13950
+ return this.isAdaptiveModeEnabled && this.windowSize !== 'large';
13951
+ }
13952
+ /**
13953
+ * @hidden
13954
+ */
13955
+ onResize() {
13956
+ if (!this.isOpen || this.windowSize === windowSize()) {
13957
+ return;
13958
+ }
13959
+ ;
13960
+ if (this.actionSheet.expanded) {
13961
+ this.toggleActionSheet(false);
13962
+ }
13963
+ else {
13964
+ this._togglePopup(false);
13965
+ }
13966
+ this.windowSize = windowSize();
13967
+ }
13372
13968
  get activeTabComponent() {
13373
13969
  if (!this.isOpen) {
13374
13970
  return;
@@ -13399,11 +13995,16 @@ class DateTimePickerComponent {
13399
13995
  this.subscriptions.add(this.localization.changes.subscribe(() => this.cdr.markForCheck()));
13400
13996
  this.subscriptions.add(this.pickerService.dateCompletenessChange.subscribe(this.handleDateCompletenessChange.bind(this)));
13401
13997
  if (isWindowAvailable()) {
13402
- this.subscriptions.add(this.ngZone.runOutsideAngular(() => fromEvent(window, 'blur').subscribe(this.handleCancel.bind(this))));
13998
+ this.subscriptions.add(this.ngZone.runOutsideAngular(() => fromEvent(window, 'blur').subscribe(() => {
13999
+ if (!this.isAdaptive) {
14000
+ this.handleCancel();
14001
+ }
14002
+ })));
13403
14003
  }
13404
14004
  }
13405
14005
  ngAfterViewInit() {
13406
14006
  this.setComponentClasses();
14007
+ this.renderer.setAttribute(this.actionSheet.element.nativeElement, 'style', '--kendo-actionsheet-height: 60vh; --kendo-actionsheet-max-height: none');
13407
14008
  }
13408
14009
  ngOnChanges(changes) {
13409
14010
  if (isPresent(changes['min']) || isPresent(changes['max'])) {
@@ -13450,7 +14051,8 @@ class DateTimePickerComponent {
13450
14051
  }
13451
14052
  }
13452
14053
  /**
13453
- * Toggles the visibility of the popup. If you use the `toggle` method to show or hide the popup,
14054
+ * Toggles the visibility of the popup or actionSheet.
14055
+ * If you use the `toggle` method to show or hide the popup or actionSheet,
13454
14056
  * the `open` and `close` events do not fire.
13455
14057
  * ([more information and example]({% slug overview_datetimepicker %}#toc-methods-and-events)).
13456
14058
  *
@@ -13460,17 +14062,12 @@ class DateTimePickerComponent {
13460
14062
  if (this.disabled || this.readonly || show === this.isOpen) {
13461
14063
  return;
13462
14064
  }
13463
- const shouldOpen = isPresent(show) ? show : !this.isOpen;
13464
- if (shouldOpen) {
13465
- this.openPopup();
14065
+ this.windowSize = windowSize();
14066
+ if (this.isAdaptive) {
14067
+ this.toggleActionSheet(show);
13466
14068
  }
13467
14069
  else {
13468
- this.closePopup();
13469
- // Changes the tab and the calendar or clock icon to the designated default.
13470
- if (this.activeTab !== this.defaultTab) {
13471
- this.activeTab = this.defaultTab;
13472
- this.cdr.detectChanges();
13473
- }
14070
+ this._togglePopup(show);
13474
14071
  }
13475
14072
  }
13476
14073
  /**
@@ -13532,7 +14129,7 @@ class DateTimePickerComponent {
13532
14129
  const shouldOpen = !this.isOpen;
13533
14130
  // handle focus first to maintain correct event order `focus` => `open`
13534
14131
  this.handleFocus();
13535
- this.togglePopup(shouldOpen);
14132
+ this.toggleDateTime(shouldOpen);
13536
14133
  this.switchFocus();
13537
14134
  });
13538
14135
  }
@@ -13561,7 +14158,7 @@ class DateTimePickerComponent {
13561
14158
  this.run(runInZone, () => {
13562
14159
  this.onBlur.emit();
13563
14160
  this.onControlTouched();
13564
- this.togglePopup(false);
14161
+ this.toggleDateTime(false);
13565
14162
  this.cdr.markForCheck();
13566
14163
  });
13567
14164
  }
@@ -13605,7 +14202,7 @@ class DateTimePickerComponent {
13605
14202
  const runInZone = valueChangePresent || hasObservers(this.close);
13606
14203
  this.run(runInZone, () => {
13607
14204
  this.handleValueChange(candidate);
13608
- this.togglePopup(false);
14205
+ this.toggleDateTime(false);
13609
14206
  });
13610
14207
  }
13611
14208
  /**
@@ -13616,7 +14213,7 @@ class DateTimePickerComponent {
13616
14213
  return;
13617
14214
  }
13618
14215
  const runInZone = hasObservers(this.close);
13619
- this.run(runInZone, () => this.togglePopup(false));
14216
+ this.run(runInZone, () => this.toggleDateTime(false));
13620
14217
  }
13621
14218
  /**
13622
14219
  * @hidden
@@ -13624,7 +14221,16 @@ class DateTimePickerComponent {
13624
14221
  handleInputValueChange(value) {
13625
14222
  this.handleValueChange(value);
13626
14223
  if (this.isOpen) {
13627
- this.togglePopup(false);
14224
+ this.toggleDateTime(false);
14225
+ }
14226
+ }
14227
+ /**
14228
+ * @hidden
14229
+ */
14230
+ handleDateInputClick() {
14231
+ this.windowSize = windowSize();
14232
+ if (this.isAdaptive) {
14233
+ this.toggleDateTime(true);
13628
14234
  }
13629
14235
  }
13630
14236
  /**
@@ -13648,7 +14254,7 @@ class DateTimePickerComponent {
13648
14254
  this.handleCancel();
13649
14255
  break;
13650
14256
  case !this.isOpen && altKey && Keys$1.ArrowDown:
13651
- this.ngZone.run(() => this.togglePopup(true));
14257
+ this.ngZone.run(() => this.toggleDateTime(true));
13652
14258
  break;
13653
14259
  case altKey && Keys$1.ArrowRight:
13654
14260
  this.changeActiveTab('time');
@@ -13684,12 +14290,22 @@ class DateTimePickerComponent {
13684
14290
  this.input.focus();
13685
14291
  }
13686
14292
  }
14293
+ /**
14294
+ * @hidden
14295
+ */
14296
+ handleActionSheetCollapse() {
14297
+ // If not handled, the actionsheet expanded state does not get updated when overlay is clicked
14298
+ this.cdr.markForCheck();
14299
+ // Reset tabs after actionsheet is collapsed, otherwise the tab change can be seen during the animation
14300
+ this.resetActiveTab();
14301
+ }
13687
14302
  /**
13688
14303
  * @hidden
13689
14304
  */
13690
14305
  popupButtonsClasses(type) {
13691
14306
  const buttonType = type ? type : 'base';
13692
- return `${this.size ? getSizeClass('button', this.size) : ''} ${this.rounded ? getRoundedClass(this.rounded) : ''} ${this.fillMode ? 'k-button-' + this.fillMode + ' ' + 'k-button-' + this.fillMode + '-' + buttonType : ''}`;
14307
+ const sizeClass = `${this.isAdaptive ? getSizeClass('button', 'large') : this.size ? getSizeClass('button', this.size) : ''}`;
14308
+ return `${sizeClass} ${this.rounded ? getRoundedClass(this.rounded) : ''} ${this.fillMode ? 'k-button-' + this.fillMode + ' ' + 'k-button-' + this.fillMode + '-' + buttonType : ''}`;
13693
14309
  }
13694
14310
  /**
13695
14311
  * @hidden
@@ -13699,6 +14315,55 @@ class DateTimePickerComponent {
13699
14315
  preventMouseDown(event) {
13700
14316
  event.preventDefault();
13701
14317
  }
14318
+ _togglePopup(show) {
14319
+ const shouldOpen = isPresent(show) ? show : !this.isOpen;
14320
+ if (shouldOpen) {
14321
+ this.openPopup();
14322
+ return;
14323
+ }
14324
+ this.closePopup();
14325
+ this.resetActiveTab();
14326
+ }
14327
+ toggleActionSheet(show) {
14328
+ if (isPresent(show) && show && !this.isOpen) {
14329
+ this.actionSheet.toggle();
14330
+ this.updateActionSheetAdaptiveAppearance();
14331
+ this.setAriaActiveDescendant();
14332
+ }
14333
+ else if (isPresent(show) && !show && this.isOpen) {
14334
+ this.actionSheet.toggle();
14335
+ this.ariaActiveDescendantSubscription.unsubscribe();
14336
+ this.renderer.removeAttribute(this.input.inputElement, attributeNames.ariaActiveDescendant);
14337
+ }
14338
+ }
14339
+ updateActionSheetAdaptiveAppearance() {
14340
+ let element;
14341
+ let animationContainer;
14342
+ if (this.actionSheet) {
14343
+ element = this.actionSheet['element'].nativeElement.querySelector('.k-actionsheet');
14344
+ animationContainer = this.actionSheet['element'].nativeElement.querySelector('.k-child-animation-container');
14345
+ if (this.windowSize === 'medium') {
14346
+ this.renderer.removeClass(element, 'k-actionsheet-fullscreen');
14347
+ this.renderer.removeStyle(animationContainer, 'height');
14348
+ }
14349
+ else if (this.windowSize === 'small') {
14350
+ this.renderer.addClass(element, 'k-actionsheet-fullscreen');
14351
+ this.renderer.setStyle(animationContainer, 'height', '100%');
14352
+ }
14353
+ this.renderer.addClass(element, 'k-adaptive-actionsheet');
14354
+ this.renderer.addClass(element, 'k-actionsheet-bottom');
14355
+ this.renderer.setStyle(animationContainer, 'bottom', '0px');
14356
+ }
14357
+ }
14358
+ /**
14359
+ * Changes the tab and the calendar or clock icon to the designated default.
14360
+ */
14361
+ resetActiveTab() {
14362
+ if (this.activeTab !== this.defaultTab) {
14363
+ this.activeTab = this.defaultTab;
14364
+ this.cdr.detectChanges();
14365
+ }
14366
+ }
13702
14367
  verifyValue(value) {
13703
14368
  if (!isDevMode()) {
13704
14369
  return;
@@ -13755,7 +14420,10 @@ class DateTimePickerComponent {
13755
14420
  }
13756
14421
  return timeFormatRegExp.test(part.type);
13757
14422
  }
13758
- togglePopup(open) {
14423
+ /**
14424
+ * @hidden
14425
+ */
14426
+ toggleDateTime(open) {
13759
14427
  if (open === this.isOpen) {
13760
14428
  return;
13761
14429
  }
@@ -13802,24 +14470,20 @@ class DateTimePickerComponent {
13802
14470
  });
13803
14471
  this.popupRef.popupElement.setAttribute('id', this.popupUID);
13804
14472
  this.renderer.setAttribute(this.inputElement, attributeNames.ariaControls, this.popupUID);
13805
- if (this.activeTab === 'date') {
13806
- if (this.calendar.type === 'infinite') {
13807
- this.subscriptions.add(this.calendar.monthView.focusedCellChange.subscribe((id) => {
13808
- this.renderer.setAttribute(this.inputElement, attributeNames.ariaActiveDescendant, id);
13809
- }));
13810
- }
13811
- else {
13812
- this.subscriptions.add(this.calendar.multiViewCalendar.viewList.focusedCellChange.subscribe((id) => {
13813
- this.renderer.setAttribute(this.inputElement, attributeNames.ariaActiveDescendant, id);
13814
- }));
13815
- }
13816
- }
14473
+ this.setAriaActiveDescendant();
13817
14474
  this.popupRef.popupAnchorViewportLeave.subscribe(() => this.handleCancel());
13818
14475
  }
14476
+ setAriaActiveDescendant() {
14477
+ const focusedCellChangeEvent = this.calendar.type === 'infinite' ?
14478
+ this.calendar.monthView.focusedCellChange :
14479
+ this.calendar.multiViewCalendar.viewList.focusedCellChange;
14480
+ this.ariaActiveDescendantSubscription = focusedCellChangeEvent.subscribe((id) => this.renderer.setAttribute(this.input.inputElement, attributeNames.ariaActiveDescendant, id));
14481
+ }
13819
14482
  closePopup() {
13820
14483
  if (!this.isOpen) {
13821
14484
  return;
13822
14485
  }
14486
+ this.ariaActiveDescendantSubscription.unsubscribe();
13823
14487
  this.renderer.removeAttribute(this.inputElement, attributeNames.ariaControls);
13824
14488
  this.renderer.removeAttribute(this.inputElement, attributeNames.ariaActiveDescendant);
13825
14489
  this.popupRef.close();
@@ -13844,7 +14508,8 @@ class DateTimePickerComponent {
13844
14508
  const relatedTarget = event.relatedTarget || document.activeElement;
13845
14509
  const focusInPopup = isPresent(this.popupRef) && this.popupRef.popupElement.contains(relatedTarget);
13846
14510
  const focusInWrapper = this.wrapper.nativeElement.contains(relatedTarget);
13847
- return focusInPopup || focusInWrapper;
14511
+ const isInsideActionSheet = this.actionSheet && (this.actionSheet.element.nativeElement.contains(event.target) || this.actionSheet.element.nativeElement.contains(relatedTarget));
14512
+ return focusInPopup || focusInWrapper || isInsideActionSheet;
13848
14513
  }
13849
14514
  setTimeSelectorMinMax(selectedDate) {
13850
14515
  const minDateSelected = isPresent(selectedDate) && isEqual(getDate(selectedDate), getDate(this.min));
@@ -13860,7 +14525,7 @@ class DateTimePickerComponent {
13860
14525
  * If the popup is available, runs a popup change detection.
13861
14526
  */
13862
14527
  detectPopupChanges() {
13863
- if (!this.isOpen) {
14528
+ if (!this.isOpen || this.isAdaptive) {
13864
14529
  return;
13865
14530
  }
13866
14531
  this.popupRef.popup.changeDetectorRef.detectChanges();
@@ -13897,7 +14562,7 @@ class DateTimePickerComponent {
13897
14562
  }
13898
14563
  }
13899
14564
  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 });
13900
- 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: [
14565
+ 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: [
13901
14566
  PickerService,
13902
14567
  LocalizationService,
13903
14568
  DisabledDatesService,
@@ -13905,7 +14570,7 @@ DateTimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0"
13905
14570
  { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DateTimePickerComponent), multi: true },
13906
14571
  { provide: NG_VALIDATORS, useExisting: forwardRef(() => DateTimePickerComponent), multi: true },
13907
14572
  { provide: KendoInput, useExisting: forwardRef(() => DateTimePickerComponent) }
13908
- ], 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: `
14573
+ ], 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: `
13909
14574
  <ng-container
13910
14575
  kendoDateTimePickerLocalizedMessages
13911
14576
 
@@ -13981,6 +14646,7 @@ DateTimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0"
13981
14646
  [fillMode]="fillMode"
13982
14647
  [rounded]="rounded"
13983
14648
  [size]="size"
14649
+ (click)="handleDateInputClick()"
13984
14650
  >
13985
14651
  </kendo-dateinput>
13986
14652
  <button
@@ -14015,6 +14681,64 @@ DateTimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0"
14015
14681
  <ng-container #container></ng-container>
14016
14682
 
14017
14683
  <ng-template #popupTemplate>
14684
+ <ng-container *ngTemplateOutlet="dateTimeTemplate"></ng-container>
14685
+ </ng-template>
14686
+
14687
+ <kendo-resize-sensor *ngIf="isAdaptiveModeEnabled" (resize)="onResize()"></kendo-resize-sensor>
14688
+
14689
+ <kendo-actionsheet
14690
+ #actionSheet
14691
+ (overlayClick)="toggleDateTime(false)"
14692
+ (collapse)="handleActionSheetCollapse()"
14693
+ >
14694
+ <ng-template kendoActionSheetTemplate>
14695
+ <div class="k-actionsheet-titlebar">
14696
+ <div class="k-actionsheet-titlebar-group k-hbox">
14697
+ <div class="k-actionsheet-title">
14698
+ <div class="k-text-center">{{ title }}</div>
14699
+ <div class="k-actionsheet-subtitle k-text-center">{{ subtitle }}</div>
14700
+ </div>
14701
+ <div class="k-actionsheet-actions">
14702
+ <button
14703
+ kendoButton
14704
+ icon="x"
14705
+ [attr.title]="localization.get('clearTitle')"
14706
+ [svgIcon]="xIcon"
14707
+ fillMode="flat"
14708
+ size="large"
14709
+ innerCssClass="k-button-icon"
14710
+ (click)="toggleDateTime(false)">
14711
+ </button>
14712
+ </div>
14713
+ </div>
14714
+ </div>
14715
+ <div class="k-actionsheet-content !k-overflow-hidden">
14716
+ <ng-container *ngTemplateOutlet="dateTimeTemplate"></ng-container>
14717
+ </div>
14718
+ <div class="k-actions k-actions-stretched k-actions-horizontal k-actionsheet-footer">
14719
+ <button kendoButton
14720
+ (click)="handleCancel()"
14721
+ size="large"
14722
+ [attr.title]="localization.get('cancelLabel')"
14723
+ [attr.aria-label]="localization.get('cancelLabel')"
14724
+ >
14725
+ {{localization.get('cancel')}}
14726
+ </button>
14727
+
14728
+ <button kendoButton
14729
+ (click)="handleAccept()"
14730
+ size="large"
14731
+ themeColor="primary"
14732
+ [attr.title]="localization.get('acceptLabel')"
14733
+ [attr.aria-label]="localization.get('acceptLabel')"
14734
+ >
14735
+ {{localization.get('accept')}}
14736
+ </button>
14737
+ </div>
14738
+ </ng-template>
14739
+ </kendo-actionsheet>
14740
+
14741
+ <ng-template #dateTimeTemplate>
14018
14742
  <div
14019
14743
  class="k-datetime-wrap k-{{activeTab}}-tab"
14020
14744
  [kendoEventsOutsideAngular]="{
@@ -14073,6 +14797,7 @@ DateTimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0"
14073
14797
  >
14074
14798
  <div class="k-datetime-calendar-wrap">
14075
14799
  <kendo-calendar
14800
+ [ngClass]="{'k-calendar-lg': isAdaptive}"
14076
14801
  [focusedDate]="focusedDate"
14077
14802
  [(value)]="calendarValue"
14078
14803
  [type]="calendarType"
@@ -14102,6 +14827,7 @@ DateTimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0"
14102
14827
  </div>
14103
14828
  <div class="k-datetime-time-wrap">
14104
14829
  <kendo-timeselector
14830
+ [ngClass]="{'k-timeselector-lg': isAdaptive}"
14105
14831
  [value]="value"
14106
14832
  [format]="timeSelectorFormat"
14107
14833
  [min]="timeSelectorMin"
@@ -14110,6 +14836,8 @@ DateTimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0"
14110
14836
  [cancelButton]="false"
14111
14837
  [steps]="steps"
14112
14838
  [disabled]="disableTimeSelector"
14839
+ [isAdaptiveEnabled]="isAdaptiveModeEnabled"
14840
+ [isDateTimePicker]="true"
14113
14841
  >
14114
14842
  <kendo-timeselector-messages
14115
14843
  [now]="localization.get('now')"
@@ -14120,6 +14848,7 @@ DateTimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0"
14120
14848
  </div>
14121
14849
  </div>
14122
14850
  <div
14851
+ *ngIf="!isAdaptive"
14123
14852
  class="k-datetime-footer k-action-buttons k-actions k-hstack k-justify-content-stretch"
14124
14853
  [kendoEventsOutsideAngular]="{
14125
14854
  keydown: handleTabOut,
@@ -14159,7 +14888,7 @@ DateTimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0"
14159
14888
  </div>
14160
14889
  </div>
14161
14890
  </ng-template>
14162
- `, 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 });
14891
+ `, 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 });
14163
14892
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DateTimePickerComponent, decorators: [{
14164
14893
  type: Component,
14165
14894
  args: [{
@@ -14251,6 +14980,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
14251
14980
  [fillMode]="fillMode"
14252
14981
  [rounded]="rounded"
14253
14982
  [size]="size"
14983
+ (click)="handleDateInputClick()"
14254
14984
  >
14255
14985
  </kendo-dateinput>
14256
14986
  <button
@@ -14285,6 +15015,64 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
14285
15015
  <ng-container #container></ng-container>
14286
15016
 
14287
15017
  <ng-template #popupTemplate>
15018
+ <ng-container *ngTemplateOutlet="dateTimeTemplate"></ng-container>
15019
+ </ng-template>
15020
+
15021
+ <kendo-resize-sensor *ngIf="isAdaptiveModeEnabled" (resize)="onResize()"></kendo-resize-sensor>
15022
+
15023
+ <kendo-actionsheet
15024
+ #actionSheet
15025
+ (overlayClick)="toggleDateTime(false)"
15026
+ (collapse)="handleActionSheetCollapse()"
15027
+ >
15028
+ <ng-template kendoActionSheetTemplate>
15029
+ <div class="k-actionsheet-titlebar">
15030
+ <div class="k-actionsheet-titlebar-group k-hbox">
15031
+ <div class="k-actionsheet-title">
15032
+ <div class="k-text-center">{{ title }}</div>
15033
+ <div class="k-actionsheet-subtitle k-text-center">{{ subtitle }}</div>
15034
+ </div>
15035
+ <div class="k-actionsheet-actions">
15036
+ <button
15037
+ kendoButton
15038
+ icon="x"
15039
+ [attr.title]="localization.get('clearTitle')"
15040
+ [svgIcon]="xIcon"
15041
+ fillMode="flat"
15042
+ size="large"
15043
+ innerCssClass="k-button-icon"
15044
+ (click)="toggleDateTime(false)">
15045
+ </button>
15046
+ </div>
15047
+ </div>
15048
+ </div>
15049
+ <div class="k-actionsheet-content !k-overflow-hidden">
15050
+ <ng-container *ngTemplateOutlet="dateTimeTemplate"></ng-container>
15051
+ </div>
15052
+ <div class="k-actions k-actions-stretched k-actions-horizontal k-actionsheet-footer">
15053
+ <button kendoButton
15054
+ (click)="handleCancel()"
15055
+ size="large"
15056
+ [attr.title]="localization.get('cancelLabel')"
15057
+ [attr.aria-label]="localization.get('cancelLabel')"
15058
+ >
15059
+ {{localization.get('cancel')}}
15060
+ </button>
15061
+
15062
+ <button kendoButton
15063
+ (click)="handleAccept()"
15064
+ size="large"
15065
+ themeColor="primary"
15066
+ [attr.title]="localization.get('acceptLabel')"
15067
+ [attr.aria-label]="localization.get('acceptLabel')"
15068
+ >
15069
+ {{localization.get('accept')}}
15070
+ </button>
15071
+ </div>
15072
+ </ng-template>
15073
+ </kendo-actionsheet>
15074
+
15075
+ <ng-template #dateTimeTemplate>
14288
15076
  <div
14289
15077
  class="k-datetime-wrap k-{{activeTab}}-tab"
14290
15078
  [kendoEventsOutsideAngular]="{
@@ -14343,6 +15131,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
14343
15131
  >
14344
15132
  <div class="k-datetime-calendar-wrap">
14345
15133
  <kendo-calendar
15134
+ [ngClass]="{'k-calendar-lg': isAdaptive}"
14346
15135
  [focusedDate]="focusedDate"
14347
15136
  [(value)]="calendarValue"
14348
15137
  [type]="calendarType"
@@ -14372,6 +15161,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
14372
15161
  </div>
14373
15162
  <div class="k-datetime-time-wrap">
14374
15163
  <kendo-timeselector
15164
+ [ngClass]="{'k-timeselector-lg': isAdaptive}"
14375
15165
  [value]="value"
14376
15166
  [format]="timeSelectorFormat"
14377
15167
  [min]="timeSelectorMin"
@@ -14380,6 +15170,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
14380
15170
  [cancelButton]="false"
14381
15171
  [steps]="steps"
14382
15172
  [disabled]="disableTimeSelector"
15173
+ [isAdaptiveEnabled]="isAdaptiveModeEnabled"
15174
+ [isDateTimePicker]="true"
14383
15175
  >
14384
15176
  <kendo-timeselector-messages
14385
15177
  [now]="localization.get('now')"
@@ -14390,6 +15182,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
14390
15182
  </div>
14391
15183
  </div>
14392
15184
  <div
15185
+ *ngIf="!isAdaptive"
14393
15186
  class="k-datetime-footer k-action-buttons k-actions k-hstack k-justify-content-stretch"
14394
15187
  [kendoEventsOutsideAngular]="{
14395
15188
  keydown: handleTabOut,
@@ -14462,6 +15255,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
14462
15255
  type: Input
14463
15256
  }], title: [{
14464
15257
  type: Input
15258
+ }], subtitle: [{
15259
+ type: Input
14465
15260
  }], disabled: [{
14466
15261
  type: Input
14467
15262
  }], readonly: [{
@@ -14494,6 +15289,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
14494
15289
  type: Input
14495
15290
  }], incompleteDateValidation: [{
14496
15291
  type: Input
15292
+ }], adaptiveMode: [{
15293
+ type: Input
14497
15294
  }], valueChange: [{
14498
15295
  type: Output
14499
15296
  }], open: [{
@@ -14541,6 +15338,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
14541
15338
  }], popupTemplate: [{
14542
15339
  type: ViewChild,
14543
15340
  args: ['popupTemplate', { read: TemplateRef, static: true }]
15341
+ }], actionSheet: [{
15342
+ type: ViewChild,
15343
+ args: ['actionSheet']
14544
15344
  }] } });
14545
15345
 
14546
15346
  /**
@@ -14795,6 +15595,11 @@ class DateRangeSelectionDirective {
14795
15595
  * To disable this behavior, set the `autoCorrectOn` property to `none`.
14796
15596
  */
14797
15597
  this.autoCorrectOn = 'change';
15598
+ /**
15599
+ * @hidden
15600
+ * When in adaptive mode range should not be set automatically on calendar value change but only on accept
15601
+ */
15602
+ this.shouldSetRange = true;
14798
15603
  /**
14799
15604
  * Fires when the active range end is changed. For more information, refer to
14800
15605
  * the section on [events]({% slug overview_multiviewcalendar %}#toc-events).
@@ -14875,6 +15680,25 @@ class DateRangeSelectionDirective {
14875
15680
  ngOnDestroy() {
14876
15681
  this.calendarSubscriptions.unsubscribe();
14877
15682
  }
15683
+ /**
15684
+ * @hidden
15685
+ */
15686
+ handleChange(value) {
15687
+ const service = this.dateRangeService;
15688
+ const autoCorrect = this.autoCorrectOn === 'change' && this.shouldAutoCorrect(value);
15689
+ const activeEnd = this.calendar.activeRangeEnd !== 'end' ? 'end' : (autoCorrect ? 'end' : 'start');
15690
+ this.range = autoCorrect ? clampRange(value) : this.updateRange(value);
15691
+ if (!isEqualRange(service.selectionRange, this.range)) {
15692
+ this.acceptAndEmit(this.range);
15693
+ service.setActiveRangeEnd(activeEnd);
15694
+ if (this.shouldSetRange) {
15695
+ this.setRange();
15696
+ }
15697
+ }
15698
+ }
15699
+ setRange(range) {
15700
+ this.dateRangeService.setRange(this.range ? this.range : range);
15701
+ }
14878
15702
  addSubscriptions(...subscriptions) {
14879
15703
  subscriptions.map(s => this.calendarSubscriptions.add(s));
14880
15704
  }
@@ -14888,17 +15712,6 @@ class DateRangeSelectionDirective {
14888
15712
  this.dateRangeService.setRange(clampRange(start));
14889
15713
  }
14890
15714
  }
14891
- handleChange(value) {
14892
- const service = this.dateRangeService;
14893
- const autoCorrect = this.autoCorrectOn === 'change' && this.shouldAutoCorrect(value);
14894
- const activeEnd = this.calendar.activeRangeEnd !== 'end' ? 'end' : (autoCorrect ? 'end' : 'start');
14895
- const range = autoCorrect ? clampRange(value) : this.updateRange(value);
14896
- if (!isEqualRange(service.selectionRange, range)) {
14897
- this.acceptAndEmit(range);
14898
- service.setActiveRangeEnd(activeEnd);
14899
- service.setRange(range);
14900
- }
14901
- }
14902
15715
  handleHover(value) {
14903
15716
  if (this.hasCompleteRange()) {
14904
15717
  return;
@@ -14943,7 +15756,7 @@ class DateRangeSelectionDirective {
14943
15756
  }
14944
15757
  }
14945
15758
  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 });
14946
- 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 });
15759
+ 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 });
14947
15760
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DateRangeSelectionDirective, decorators: [{
14948
15761
  type: Directive,
14949
15762
  args: [{
@@ -14957,12 +15770,66 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
14957
15770
  type: Input
14958
15771
  }], activeRangeEnd: [{
14959
15772
  type: Input
15773
+ }], shouldSetRange: [{
15774
+ type: Input
14960
15775
  }], activeRangeEndChange: [{
14961
15776
  type: Output
14962
15777
  }], selectionRangeChange: [{
14963
15778
  type: Output
14964
15779
  }] } });
14965
15780
 
15781
+ /**
15782
+ * @hidden
15783
+ */
15784
+ class DateRangePopupMessages extends ComponentMessages {
15785
+ }
15786
+ DateRangePopupMessages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DateRangePopupMessages, deps: null, target: i0.ɵɵFactoryTarget.Directive });
15787
+ 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 });
15788
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DateRangePopupMessages, decorators: [{
15789
+ type: Directive,
15790
+ args: [{
15791
+ // eslint-disable-next-line
15792
+ selector: 'kendo-daterangepopup-messages-base'
15793
+ }]
15794
+ }], propDecorators: { accept: [{
15795
+ type: Input
15796
+ }], acceptLabel: [{
15797
+ type: Input
15798
+ }], cancel: [{
15799
+ type: Input
15800
+ }], cancelLabel: [{
15801
+ type: Input
15802
+ }] } });
15803
+
15804
+ /**
15805
+ * @hidden
15806
+ */
15807
+ class DateRangePopupLocalizedMessagesDirective extends DateRangePopupMessages {
15808
+ constructor(service) {
15809
+ super();
15810
+ this.service = service;
15811
+ }
15812
+ }
15813
+ 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 });
15814
+ DateRangePopupLocalizedMessagesDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: DateRangePopupLocalizedMessagesDirective, selector: "[kendoDateRangePopupLocalizedMessages]", providers: [
15815
+ {
15816
+ provide: DateRangePopupMessages,
15817
+ useExisting: forwardRef(() => DateRangePopupLocalizedMessagesDirective)
15818
+ }
15819
+ ], usesInheritance: true, ngImport: i0 });
15820
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DateRangePopupLocalizedMessagesDirective, decorators: [{
15821
+ type: Directive,
15822
+ args: [{
15823
+ providers: [
15824
+ {
15825
+ provide: DateRangePopupMessages,
15826
+ useExisting: forwardRef(() => DateRangePopupLocalizedMessagesDirective)
15827
+ }
15828
+ ],
15829
+ selector: '[kendoDateRangePopupLocalizedMessages]'
15830
+ }]
15831
+ }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });
15832
+
14966
15833
  /**
14967
15834
  * Represents the Kendo UI DateRangePopup component for Angular.
14968
15835
  *
@@ -14983,11 +15850,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
14983
15850
  * ```
14984
15851
  */
14985
15852
  class DateRangePopupComponent {
14986
- constructor(popupService, dateRangeService, ref, zone, rtl) {
15853
+ constructor(popupService, dateRangeService, ref, zone, renderer, localization, cdr, rtl) {
14987
15854
  this.popupService = popupService;
14988
15855
  this.dateRangeService = dateRangeService;
14989
15856
  this.ref = ref;
14990
15857
  this.zone = zone;
15858
+ this.renderer = renderer;
15859
+ this.localization = localization;
15860
+ this.cdr = cdr;
14991
15861
  this.rtl = rtl;
14992
15862
  /**
14993
15863
  * Controls the popup animation.
@@ -15002,6 +15872,15 @@ class DateRangePopupComponent {
15002
15872
  * [viewport boundary detection]({% slug viewportboundarydetection_popup %}).
15003
15873
  */
15004
15874
  this.collision = { horizontal: 'fit', vertical: 'flip' };
15875
+ /**
15876
+ * Enables or disables the adaptive mode. By default the adaptive rendering is disabled.
15877
+ */
15878
+ this.adaptiveMode = 'none';
15879
+ /**
15880
+ * Sets the title of the input element of the DateRangePopup and the title text rendered
15881
+ * in the header of the popup(action sheet). Applicable only when [`AdaptiveMode` is set to `auto`](slug:api_dateinputs_adaptivemode).
15882
+ */
15883
+ this.title = "";
15005
15884
  /**
15006
15885
  * Fires each time the popup is about to open.
15007
15886
  * This event is preventable. If you cancel the event, the popup will remain closed.
@@ -15032,10 +15911,25 @@ class DateRangePopupComponent {
15032
15911
  * @hidden
15033
15912
  */
15034
15913
  this.popupUID = guid();
15914
+ /**
15915
+ * @hidden
15916
+ */
15917
+ this.xIcon = xIcon;
15035
15918
  this.calendarSubscriptions = new Subscription();
15036
15919
  this.popupSubscriptions = new Subscription();
15920
+ this.localizationSubscriptions = new Subscription();
15037
15921
  this.resolvedPromise = Promise.resolve();
15038
15922
  }
15923
+ /**
15924
+ * Sets the subtitle text rendered in the header of the popup(action sheet).
15925
+ * Applicable only when [`AdaptiveMode` is set to `auto`](slug:api_dateinputs_adaptivemode).
15926
+ */
15927
+ set subtitle(subtitle) {
15928
+ this._subtitle = subtitle;
15929
+ }
15930
+ get subtitle() {
15931
+ return this._subtitle;
15932
+ }
15039
15933
  /**
15040
15934
  * The active calendar that is visible in the popup.
15041
15935
  *
@@ -15053,7 +15947,23 @@ class DateRangePopupComponent {
15053
15947
  * When the opened calendar is active, returns `true`.
15054
15948
  */
15055
15949
  get isActive() {
15056
- return this.calendar && this.calendar.isActive;
15950
+ // The actionsheet is expanding before the calendar gets activated
15951
+ // and if we only check for calendar.isActive a blur event handler in the date-rage-input.ts will close the actionsheet
15952
+ // TODO: Potentially the entire logic would need refactoring to avoid hacks like this one
15953
+ return (this.calendar && this.calendar.isActive)
15954
+ || (this.actionSheet && this.actionSheet.expanded);
15955
+ }
15956
+ /**
15957
+ * @hidden
15958
+ */
15959
+ get isAdaptiveModeEnabled() {
15960
+ return this.adaptiveMode === 'auto';
15961
+ }
15962
+ /**
15963
+ * @hidden
15964
+ */
15965
+ get isAdaptive() {
15966
+ return this.isAdaptiveModeEnabled && this.windowSize !== 'large';
15057
15967
  }
15058
15968
  /**
15059
15969
  * Gets or sets the visibility state of the component.
@@ -15072,13 +15982,18 @@ class DateRangePopupComponent {
15072
15982
  if (event.isDefaultPrevented()) {
15073
15983
  return;
15074
15984
  }
15075
- this._toggle(show);
15985
+ this.toggleDateRange(show);
15076
15986
  }
15077
15987
  get show() {
15078
15988
  return this._show;
15079
15989
  }
15080
15990
  ngOnInit() {
15081
15991
  this.dateRangeService.registerPopup(this);
15992
+ if (this.localization) {
15993
+ this.localizationSubscriptions.add(this.localization
15994
+ .changes
15995
+ .subscribe(() => this.cdr.markForCheck()));
15996
+ }
15082
15997
  }
15083
15998
  ngAfterViewInit() {
15084
15999
  this.calendarSubscriptions.add(this.contentCalendar.changes.subscribe((changes) => this.calendar = changes.first));
@@ -15086,6 +16001,7 @@ class DateRangePopupComponent {
15086
16001
  if (isWindowAvailable()) {
15087
16002
  this.zone.runOutsideAngular(() => this.windowBlurSubscription = fromEvent(window, 'blur').subscribe(this.handleWindowBlur.bind(this)));
15088
16003
  }
16004
+ this.renderer.setAttribute(this.actionSheet.element.nativeElement, 'style', '--kendo-actionsheet-height: 60vh; --kendo-actionsheet-max-height: none');
15089
16005
  }
15090
16006
  ngOnDestroy() {
15091
16007
  this.destroyPopup();
@@ -15144,15 +16060,15 @@ class DateRangePopupComponent {
15144
16060
  return this.popupRef.popupElement.contains(document.activeElement);
15145
16061
  }
15146
16062
  /**
15147
- * Toggles the visibility of the popup.
15148
- * If you use the `toggle` method to show or hide the popup,
16063
+ * Toggles the visibility of the popup or actionSheet.
16064
+ * If you use the `toggle` method to show or hide the popup or actionSheet,
15149
16065
  * the `open` and `close` events do not fire.
15150
16066
  *
15151
16067
  * @param show The state of the popup.
15152
16068
  */
15153
16069
  toggle(show) {
15154
16070
  this.resolvedPromise.then(() => {
15155
- this._toggle((show === undefined) ? !this.show : show);
16071
+ this.toggleDateRange((show === undefined) ? !this.show : show);
15156
16072
  });
15157
16073
  }
15158
16074
  /**
@@ -15164,8 +16080,31 @@ class DateRangePopupComponent {
15164
16080
  this.show = false;
15165
16081
  this.cancel.emit();
15166
16082
  }
16083
+ /**
16084
+ * @hidden
16085
+ */
16086
+ handleAccept() {
16087
+ this.dateRangeSelectionDirective.setRange(this.dateRangeService.selectionRange);
16088
+ this.show = false;
16089
+ }
16090
+ /**
16091
+ * @hidden
16092
+ */
16093
+ onResize() {
16094
+ if (!this.show || this.windowSize === windowSize()) {
16095
+ return;
16096
+ }
16097
+ ;
16098
+ if (this.actionSheet.expanded) {
16099
+ this.toggleActionSheet(false);
16100
+ }
16101
+ else {
16102
+ this.togglePopup(false);
16103
+ }
16104
+ this.windowSize = windowSize();
16105
+ }
15167
16106
  handleWindowBlur() {
15168
- if (!this.show) {
16107
+ if (!this.show || this.actionSheet.expanded) {
15169
16108
  return;
15170
16109
  }
15171
16110
  if (hasObservers(this.close)) {
@@ -15209,7 +16148,7 @@ class DateRangePopupComponent {
15209
16148
  }
15210
16149
  return appendTo === 'component' ? this.container : appendTo;
15211
16150
  }
15212
- _toggle(show) {
16151
+ togglePopup(show) {
15213
16152
  this._show = show;
15214
16153
  if (this.popupRef) {
15215
16154
  this.destroyPopup();
@@ -15241,27 +16180,237 @@ class DateRangePopupComponent {
15241
16180
  this.popupSubscriptions.unsubscribe();
15242
16181
  }
15243
16182
  }
16183
+ toggleDateRange(show) {
16184
+ this.windowSize = windowSize();
16185
+ if (this.isAdaptive) {
16186
+ this.toggleActionSheet(show);
16187
+ }
16188
+ else {
16189
+ this.togglePopup(show);
16190
+ }
16191
+ }
16192
+ toggleActionSheet(show) {
16193
+ if (show === this._show) {
16194
+ return;
16195
+ }
16196
+ if (show && !this.actionSheet.expanded) {
16197
+ this.actionSheet.toggle();
16198
+ this.updateActionSheetAdaptiveAppearance();
16199
+ }
16200
+ else if (!show && this.actionSheet.expanded) {
16201
+ this.actionSheet.toggle();
16202
+ }
16203
+ this._show = show;
16204
+ }
16205
+ updateActionSheetAdaptiveAppearance() {
16206
+ let element;
16207
+ let animationContainer;
16208
+ if (this.actionSheet) {
16209
+ element = this.actionSheet['element'].nativeElement.querySelector('.k-actionsheet');
16210
+ animationContainer = this.actionSheet['element'].nativeElement.querySelector('.k-child-animation-container');
16211
+ if (this.windowSize === 'medium') {
16212
+ this.renderer.removeClass(element, 'k-actionsheet-fullscreen');
16213
+ this.renderer.removeStyle(animationContainer, 'height');
16214
+ }
16215
+ else if (this.windowSize === 'small') {
16216
+ this.renderer.addClass(element, 'k-actionsheet-fullscreen');
16217
+ this.renderer.setStyle(animationContainer, 'height', '100%');
16218
+ }
16219
+ this.renderer.addClass(element, 'k-adaptive-actionsheet');
16220
+ this.renderer.addClass(element, 'k-actionsheet-bottom');
16221
+ this.renderer.setStyle(animationContainer, 'bottom', '0px');
16222
+ }
16223
+ }
15244
16224
  }
15245
- 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 });
15246
- 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: `
16225
+ 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 });
16226
+ 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: [
16227
+ LocalizationService,
16228
+ {
16229
+ provide: L10N_PREFIX,
16230
+ useValue: 'kendo.daterangepopup'
16231
+ }
16232
+ ], 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: `
16233
+ <ng-container kendoDateRangePopupLocalizedMessages
16234
+ i18n-accept="kendo.daterangepopup.accept|The Accept button text in the timepicker component"
16235
+ accept="Set"
16236
+
16237
+ i18n-acceptLabel="kendo.daterangepopup.acceptLabel|The label for the Accept button in the timepicker component"
16238
+ acceptLabel="Set time"
16239
+
16240
+ i18n-cancel="kendo.daterangepopup.cancel|The Cancel button text in the timepicker component"
16241
+ cancel="Cancel"
16242
+
16243
+ i18n-cancelLabel="kendo.daterangepopup.cancelLabel|The label for the Cancel button in the timepicker component"
16244
+ cancelLabel="Cancel changes"
16245
+ >
16246
+ </ng-container>
15247
16247
  <ng-container #container></ng-container>
15248
16248
  <ng-template #defaultTemplate>
15249
16249
  <kendo-multiviewcalendar kendoDateRangeSelection></kendo-multiviewcalendar>
15250
16250
  </ng-template>
15251
- `, 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"] }] });
16251
+
16252
+ <kendo-actionsheet
16253
+ #actionSheet
16254
+ (overlayClick)="show=false"
16255
+ (collapse)="onBlur.emit()"
16256
+ >
16257
+ <ng-template kendoActionSheetTemplate>
16258
+ <!-- Resize sensor needs to be inside the template because the date-range-popup
16259
+ element itself always has 0x0 size and does not trigger the sensor.
16260
+ Note: The popup in non-adaptive mode closes on window blur -->
16261
+ <kendo-resize-sensor *ngIf="isAdaptiveModeEnabled" (resize)="onResize()"></kendo-resize-sensor>
16262
+ <div class="k-actionsheet-titlebar">
16263
+ <div class="k-actionsheet-titlebar-group k-hbox">
16264
+ <div class="k-actionsheet-title">
16265
+ <div class="k-text-center">{{ title }}</div>
16266
+ <div class="k-actionsheet-subtitle k-text-center">{{ subtitle }}</div>
16267
+ </div>
16268
+ <div class="k-actionsheet-actions">
16269
+ <button
16270
+ kendoButton
16271
+ icon="x"
16272
+ [attr.title]="localization.get('clearTitle')"
16273
+ [svgIcon]="xIcon"
16274
+ fillMode="flat"
16275
+ size="large"
16276
+ innerCssClass="k-button-icon"
16277
+ (click)="show = false">
16278
+ </button>
16279
+ </div>
16280
+ </div>
16281
+ </div>
16282
+ <div class="k-actionsheet-content !k-overflow-hidden">
16283
+ <div class="k-scrollable-wrap">
16284
+ <kendo-multiviewcalendar
16285
+ class="k-calendar-lg"
16286
+ orientation="vertical"
16287
+ #test
16288
+ kendoDateRangeSelection
16289
+ [shouldSetRange]="false">
16290
+ </kendo-multiviewcalendar>
16291
+ </div>
16292
+ </div>
16293
+ <div class="k-actions k-actions-stretched k-actions-horizontal k-actionsheet-footer">
16294
+ <button kendoButton
16295
+ size="large"
16296
+ [attr.title]="localization.get('cancelLabel')"
16297
+ [attr.aria-label]="localization.get('cancelLabel')"
16298
+ (click)="show=false"
16299
+ >
16300
+ {{localization.get('cancel')}}
16301
+ </button>
16302
+
16303
+ <button kendoButton
16304
+ size="large"
16305
+ themeColor="primary"
16306
+ [attr.title]="localization.get('acceptLabel')"
16307
+ [attr.aria-label]="localization.get('acceptLabel')"
16308
+ (click)="handleAccept()"
16309
+ >
16310
+ {{localization.get('accept')}}
16311
+ </button>
16312
+ </div>
16313
+ </ng-template>
16314
+ </kendo-actionsheet>
16315
+ `, 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"] }] });
15252
16316
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DateRangePopupComponent, decorators: [{
15253
16317
  type: Component,
15254
16318
  args: [{
15255
16319
  exportAs: 'kendo-daterange-popup',
16320
+ providers: [
16321
+ LocalizationService,
16322
+ {
16323
+ provide: L10N_PREFIX,
16324
+ useValue: 'kendo.daterangepopup'
16325
+ }
16326
+ ],
15256
16327
  selector: 'kendo-daterange-popup',
15257
16328
  template: `
16329
+ <ng-container kendoDateRangePopupLocalizedMessages
16330
+ i18n-accept="kendo.daterangepopup.accept|The Accept button text in the timepicker component"
16331
+ accept="Set"
16332
+
16333
+ i18n-acceptLabel="kendo.daterangepopup.acceptLabel|The label for the Accept button in the timepicker component"
16334
+ acceptLabel="Set time"
16335
+
16336
+ i18n-cancel="kendo.daterangepopup.cancel|The Cancel button text in the timepicker component"
16337
+ cancel="Cancel"
16338
+
16339
+ i18n-cancelLabel="kendo.daterangepopup.cancelLabel|The label for the Cancel button in the timepicker component"
16340
+ cancelLabel="Cancel changes"
16341
+ >
16342
+ </ng-container>
15258
16343
  <ng-container #container></ng-container>
15259
16344
  <ng-template #defaultTemplate>
15260
16345
  <kendo-multiviewcalendar kendoDateRangeSelection></kendo-multiviewcalendar>
15261
16346
  </ng-template>
16347
+
16348
+ <kendo-actionsheet
16349
+ #actionSheet
16350
+ (overlayClick)="show=false"
16351
+ (collapse)="onBlur.emit()"
16352
+ >
16353
+ <ng-template kendoActionSheetTemplate>
16354
+ <!-- Resize sensor needs to be inside the template because the date-range-popup
16355
+ element itself always has 0x0 size and does not trigger the sensor.
16356
+ Note: The popup in non-adaptive mode closes on window blur -->
16357
+ <kendo-resize-sensor *ngIf="isAdaptiveModeEnabled" (resize)="onResize()"></kendo-resize-sensor>
16358
+ <div class="k-actionsheet-titlebar">
16359
+ <div class="k-actionsheet-titlebar-group k-hbox">
16360
+ <div class="k-actionsheet-title">
16361
+ <div class="k-text-center">{{ title }}</div>
16362
+ <div class="k-actionsheet-subtitle k-text-center">{{ subtitle }}</div>
16363
+ </div>
16364
+ <div class="k-actionsheet-actions">
16365
+ <button
16366
+ kendoButton
16367
+ icon="x"
16368
+ [attr.title]="localization.get('clearTitle')"
16369
+ [svgIcon]="xIcon"
16370
+ fillMode="flat"
16371
+ size="large"
16372
+ innerCssClass="k-button-icon"
16373
+ (click)="show = false">
16374
+ </button>
16375
+ </div>
16376
+ </div>
16377
+ </div>
16378
+ <div class="k-actionsheet-content !k-overflow-hidden">
16379
+ <div class="k-scrollable-wrap">
16380
+ <kendo-multiviewcalendar
16381
+ class="k-calendar-lg"
16382
+ orientation="vertical"
16383
+ #test
16384
+ kendoDateRangeSelection
16385
+ [shouldSetRange]="false">
16386
+ </kendo-multiviewcalendar>
16387
+ </div>
16388
+ </div>
16389
+ <div class="k-actions k-actions-stretched k-actions-horizontal k-actionsheet-footer">
16390
+ <button kendoButton
16391
+ size="large"
16392
+ [attr.title]="localization.get('cancelLabel')"
16393
+ [attr.aria-label]="localization.get('cancelLabel')"
16394
+ (click)="show=false"
16395
+ >
16396
+ {{localization.get('cancel')}}
16397
+ </button>
16398
+
16399
+ <button kendoButton
16400
+ size="large"
16401
+ themeColor="primary"
16402
+ [attr.title]="localization.get('acceptLabel')"
16403
+ [attr.aria-label]="localization.get('acceptLabel')"
16404
+ (click)="handleAccept()"
16405
+ >
16406
+ {{localization.get('accept')}}
16407
+ </button>
16408
+ </div>
16409
+ </ng-template>
16410
+ </kendo-actionsheet>
15262
16411
  `
15263
16412
  }]
15264
- }], ctorParameters: function () { return [{ type: i1$2.PopupService }, { type: DateRangeService }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: undefined, decorators: [{
16413
+ }], ctorParameters: function () { 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: [{
15265
16414
  type: Optional
15266
16415
  }, {
15267
16416
  type: Inject,
@@ -15269,12 +16418,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
15269
16418
  }] }]; }, propDecorators: { container: [{
15270
16419
  type: ViewChild,
15271
16420
  args: ['container', { read: ViewContainerRef, static: false }]
16421
+ }], actionSheet: [{
16422
+ type: ViewChild,
16423
+ args: ['actionSheet']
15272
16424
  }], defaultTemplate: [{
15273
16425
  type: ViewChild,
15274
16426
  args: ['defaultTemplate', { static: false }]
15275
16427
  }], contentTemplate: [{
15276
16428
  type: ContentChild,
15277
16429
  args: [DateRangePopupTemplateDirective, { static: false }]
16430
+ }], dateRangeSelectionDirective: [{
16431
+ type: ViewChild,
16432
+ args: [DateRangeSelectionDirective, { static: false }]
15278
16433
  }], viewCalendar: [{
15279
16434
  type: ViewChildren,
15280
16435
  args: [MultiViewCalendarComponent]
@@ -15295,6 +16450,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
15295
16450
  type: Input
15296
16451
  }], margin: [{
15297
16452
  type: Input
16453
+ }], adaptiveMode: [{
16454
+ type: Input
16455
+ }], title: [{
16456
+ type: Input
16457
+ }], subtitle: [{
16458
+ type: Input
15298
16459
  }], open: [{
15299
16460
  type: Output
15300
16461
  }], close: [{
@@ -15368,7 +16529,7 @@ DateRangeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", versi
15368
16529
  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: `
15369
16530
  <ng-content></ng-content>
15370
16531
  <kendo-daterange-popup *ngIf="showDefault"></kendo-daterange-popup>
15371
- `, 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"] }] });
16532
+ `, 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"] }] });
15372
16533
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DateRangeComponent, decorators: [{
15373
16534
  type: Component,
15374
16535
  args: [{
@@ -16163,6 +17324,38 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
16163
17324
  }]
16164
17325
  }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });
16165
17326
 
17327
+ const ADAPTIVE_MODULES = [
17328
+ NavigationModule,
17329
+ ResizeSensorModule,
17330
+ ButtonModule,
17331
+ TextBoxModule
17332
+ ];
17333
+ /**
17334
+ * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])
17335
+ * definition for the modules specific to the Adaptive Mode.
17336
+ */
17337
+ class AdaptiveModule {
17338
+ }
17339
+ AdaptiveModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AdaptiveModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
17340
+ AdaptiveModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AdaptiveModule, imports: [NavigationModule,
17341
+ ResizeSensorModule,
17342
+ ButtonModule,
17343
+ TextBoxModule], exports: [NavigationModule,
17344
+ ResizeSensorModule,
17345
+ ButtonModule,
17346
+ TextBoxModule] });
17347
+ AdaptiveModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AdaptiveModule, imports: [[...ADAPTIVE_MODULES], NavigationModule,
17348
+ ResizeSensorModule,
17349
+ ButtonModule,
17350
+ TextBoxModule] });
17351
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AdaptiveModule, decorators: [{
17352
+ type: NgModule,
17353
+ args: [{
17354
+ imports: [...ADAPTIVE_MODULES],
17355
+ exports: [...ADAPTIVE_MODULES]
17356
+ }]
17357
+ }] });
17358
+
16166
17359
  /**
16167
17360
  * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])
16168
17361
  * definition for the DatePicker component.
@@ -16179,7 +17372,8 @@ DatePickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", versio
16179
17372
  PopupModule,
16180
17373
  TemplatesModule,
16181
17374
  EventsModule,
16182
- IconsModule], exports: [DatePickerComponent,
17375
+ IconsModule,
17376
+ AdaptiveModule], exports: [DatePickerComponent,
16183
17377
  DatePickerCustomMessagesComponent,
16184
17378
  DatePickerLocalizedMessagesDirective,
16185
17379
  TemplatesModule] });
@@ -16191,7 +17385,8 @@ DatePickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", versio
16191
17385
  PopupModule,
16192
17386
  TemplatesModule,
16193
17387
  EventsModule,
16194
- IconsModule
17388
+ IconsModule,
17389
+ AdaptiveModule
16195
17390
  ], TemplatesModule] });
16196
17391
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DatePickerModule, decorators: [{
16197
17392
  type: NgModule,
@@ -16215,25 +17410,62 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
16215
17410
  PopupModule,
16216
17411
  TemplatesModule,
16217
17412
  EventsModule,
16218
- IconsModule
17413
+ IconsModule,
17414
+ AdaptiveModule
16219
17415
  ],
16220
17416
  providers: [{ provide: TOUCH_ENABLED, useValue: touchEnabled }]
16221
17417
  }]
16222
17418
  }] });
16223
17419
 
17420
+ /**
17421
+ * Custom component messages override default component messages ([see example]({% slug globalization_dateinputs %}#toc-custom-messages)).
17422
+ */
17423
+ class DateRangePopupCustomMessagesComponent extends DateRangePopupMessages {
17424
+ constructor(service) {
17425
+ super();
17426
+ this.service = service;
17427
+ }
17428
+ get override() {
17429
+ return true;
17430
+ }
17431
+ }
17432
+ 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 });
17433
+ DateRangePopupCustomMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: DateRangePopupCustomMessagesComponent, selector: "kendo-daterange-popup-messages", providers: [
17434
+ {
17435
+ provide: DateRangePopupMessages,
17436
+ useExisting: forwardRef(() => DateRangePopupCustomMessagesComponent)
17437
+ }
17438
+ ], usesInheritance: true, ngImport: i0, template: ``, isInline: true });
17439
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DateRangePopupCustomMessagesComponent, decorators: [{
17440
+ type: Component,
17441
+ args: [{
17442
+ providers: [
17443
+ {
17444
+ provide: DateRangePopupMessages,
17445
+ useExisting: forwardRef(() => DateRangePopupCustomMessagesComponent)
17446
+ }
17447
+ ],
17448
+ selector: 'kendo-daterange-popup-messages',
17449
+ template: ``
17450
+ }]
17451
+ }], ctorParameters: function () { return [{ type: i1$1.LocalizationService }]; } });
17452
+
16224
17453
  const COMPONENT_DIRECTIVES$2 = [
16225
17454
  DateRangeComponent,
16226
17455
  DateRangePopupComponent,
16227
17456
  DateRangePopupTemplateDirective,
16228
17457
  DateRangeSelectionDirective,
16229
17458
  DateRangeStartInputDirective,
16230
- DateRangeEndInputDirective
17459
+ DateRangeEndInputDirective,
17460
+ DateRangePopupCustomMessagesComponent,
17461
+ DateRangePopupLocalizedMessagesDirective
16231
17462
  ];
16232
17463
  const COMPONENT_MODULES$2 = [
16233
17464
  MultiViewCalendarModule,
16234
17465
  DateInputModule,
16235
17466
  PopupModule,
16236
- EventsModule
17467
+ EventsModule,
17468
+ AdaptiveModule
16237
17469
  ];
16238
17470
  /**
16239
17471
  * The exported package module.
@@ -16281,15 +17513,20 @@ DateRangeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version
16281
17513
  DateRangePopupTemplateDirective,
16282
17514
  DateRangeSelectionDirective,
16283
17515
  DateRangeStartInputDirective,
16284
- DateRangeEndInputDirective], imports: [CommonModule, MultiViewCalendarModule,
17516
+ DateRangeEndInputDirective,
17517
+ DateRangePopupCustomMessagesComponent,
17518
+ DateRangePopupLocalizedMessagesDirective], imports: [CommonModule, MultiViewCalendarModule,
16285
17519
  DateInputModule,
16286
17520
  PopupModule,
16287
- EventsModule], exports: [DateRangeComponent,
17521
+ EventsModule,
17522
+ AdaptiveModule], exports: [DateRangeComponent,
16288
17523
  DateRangePopupComponent,
16289
17524
  DateRangePopupTemplateDirective,
16290
17525
  DateRangeSelectionDirective,
16291
17526
  DateRangeStartInputDirective,
16292
- DateRangeEndInputDirective] });
17527
+ DateRangeEndInputDirective,
17528
+ DateRangePopupCustomMessagesComponent,
17529
+ DateRangePopupLocalizedMessagesDirective] });
16293
17530
  DateRangeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DateRangeModule, imports: [[CommonModule, COMPONENT_MODULES$2]] });
16294
17531
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DateRangeModule, decorators: [{
16295
17532
  type: NgModule,
@@ -16348,7 +17585,8 @@ const COMPONENT_MODULES$1 = [
16348
17585
  PopupModule,
16349
17586
  VirtualizationModule,
16350
17587
  EventsModule,
16351
- IconsModule
17588
+ IconsModule,
17589
+ AdaptiveModule
16352
17590
  ];
16353
17591
  const providers = [
16354
17592
  TimePickerDOMService,
@@ -16380,7 +17618,8 @@ TimePickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", versio
16380
17618
  PopupModule,
16381
17619
  VirtualizationModule,
16382
17620
  EventsModule,
16383
- IconsModule], exports: [TimePickerLocalizedMessagesDirective,
17621
+ IconsModule,
17622
+ AdaptiveModule], exports: [TimePickerLocalizedMessagesDirective,
16384
17623
  TimeListComponent,
16385
17624
  TimePickerCustomMessagesComponent,
16386
17625
  TimePickerComponent,
@@ -16453,7 +17692,8 @@ DateTimePickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", ve
16453
17692
  PopupModule,
16454
17693
  EventsModule,
16455
17694
  TemplatesModule,
16456
- IconsModule], exports: [DateTimePickerComponent,
17695
+ IconsModule,
17696
+ AdaptiveModule], exports: [DateTimePickerComponent,
16457
17697
  DateTimePickerCustomMessagesComponent,
16458
17698
  LocalizedMessagesDirective, TemplatesModule] });
16459
17699
  DateTimePickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DateTimePickerModule, providers: [
@@ -16467,7 +17707,8 @@ DateTimePickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", ve
16467
17707
  PopupModule,
16468
17708
  EventsModule,
16469
17709
  TemplatesModule,
16470
- IconsModule
17710
+ IconsModule,
17711
+ AdaptiveModule
16471
17712
  ], TemplatesModule] });
16472
17713
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DateTimePickerModule, decorators: [{
16473
17714
  type: NgModule,
@@ -16488,7 +17729,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
16488
17729
  PopupModule,
16489
17730
  EventsModule,
16490
17731
  TemplatesModule,
16491
- IconsModule
17732
+ IconsModule,
17733
+ AdaptiveModule
16492
17734
  ],
16493
17735
  providers: [
16494
17736
  { provide: TOUCH_ENABLED, useValue: touchEnabled }
@@ -16567,5 +17809,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
16567
17809
  * Generated bundle index. Do not edit.
16568
17810
  */
16569
17811
 
16570
- 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 };
17812
+ 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 };
16571
17813