@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
@@ -2,7 +2,7 @@
2
2
  * Copyright © 2023 Progress Software Corporation. All rights reserved.
3
3
  * Licensed under commercial license. See LICENSE.md in the project root for more information
4
4
  *-------------------------------------------------------------------------------------------*/
5
- import { Component, ChangeDetectionStrategy, ChangeDetectorRef, ElementRef, TemplateRef, EventEmitter, HostBinding, Renderer2, Input, Output, ContentChild, ViewChild, ViewContainerRef, NgZone, Inject, Optional, forwardRef, isDevMode, Injector } from '@angular/core';
5
+ import { Component, ChangeDetectionStrategy, ChangeDetectorRef, ElementRef, TemplateRef, EventEmitter, HostBinding, Renderer2, Input, Output, ContentChild, ViewChild, ViewContainerRef, NgZone, Inject, Optional, forwardRef, isDevMode, Injector, } from '@angular/core';
6
6
  import { NG_VALUE_ACCESSOR, NG_VALIDATORS, NgControl } from '@angular/forms';
7
7
  import { L10N_PREFIX, LocalizationService } from '@progress/kendo-angular-l10n';
8
8
  import { PopupService } from '@progress/kendo-angular-popup';
@@ -25,13 +25,14 @@ import { HeaderTitleTemplateDirective } from '../calendar/templates/header-title
25
25
  import { NavigationItemTemplateDirective } from '../calendar/templates/navigation-item-template.directive';
26
26
  import { PickerService } from '../common/picker.service';
27
27
  import { DisabledDatesService } from '../calendar/services/disabled-dates.service';
28
- import { noop, isValidRange, setTime, isWindowAvailable, isTabExitingCalendar, getSizeClass, getRoundedClass, getFillModeClass, DEFAULT_FILL_MODE, DEFAULT_ROUNDED, DEFAULT_SIZE } from '../util';
28
+ import { noop, isValidRange, setTime, isWindowAvailable, isTabExitingCalendar, getSizeClass, getRoundedClass, getFillModeClass, DEFAULT_FILL_MODE, DEFAULT_ROUNDED, DEFAULT_SIZE, windowSize } from '../util';
29
29
  import { TOUCH_ENABLED } from '../touch-enabled';
30
30
  import { requiresZoneOnBlur, currentFocusTarget, attributeNames } from '../common/utils';
31
31
  import { fromEvent } from 'rxjs';
32
32
  import { incompleteDateValidator } from '../validators/incomplete-date.validator';
33
33
  import { disabledDatesValidator } from '../validators/disabled-date.validator';
34
- import { calendarIcon } from '@progress/kendo-svg-icons';
34
+ import { calendarIcon, xIcon } from '@progress/kendo-svg-icons';
35
+ import { ActionSheetComponent } from '@progress/kendo-angular-navigation';
35
36
  import * as i0 from "@angular/core";
36
37
  import * as i1 from "@progress/kendo-angular-l10n";
37
38
  import * as i2 from "@progress/kendo-angular-popup";
@@ -39,10 +40,13 @@ import * as i3 from "../common/picker.service";
39
40
  import * as i4 from "../calendar/services/disabled-dates.service";
40
41
  import * as i5 from "../dateinput/dateinput.component";
41
42
  import * as i6 from "@progress/kendo-angular-icons";
42
- import * as i7 from "../calendar/calendar.component";
43
- import * as i8 from "../calendar/localization/calendar-custom-messages.component";
44
- import * as i9 from "./localization/datepicker-localized-messages.directive";
45
- import * as i10 from "@progress/kendo-angular-common";
43
+ import * as i7 from "@progress/kendo-angular-common";
44
+ import * as i8 from "@progress/kendo-angular-navigation";
45
+ import * as i9 from "@progress/kendo-angular-buttons";
46
+ import * as i10 from "../calendar/calendar.component";
47
+ import * as i11 from "../calendar/localization/calendar-custom-messages.component";
48
+ import * as i12 from "./localization/datepicker-localized-messages.directive";
49
+ import * as i13 from "@angular/common";
46
50
  const MIN_DOC_LINK = 'http://www.telerik.com/kendo-angular-ui/components/dateinputs/api/DatePickerComponent/#toc-min';
47
51
  const MAX_DOC_LINK = 'http://www.telerik.com/kendo-angular-ui/components/dateinputs/api/DatePickerComponent/#toc-max';
48
52
  const VALUE_DOC_LINK = 'http://www.telerik.com/kendo-angular-ui/components/dateinputs/datepicker/#toc-using-with-json';
@@ -121,12 +125,7 @@ export class DatePickerComponent {
121
125
  * the input will be rendered in a read-only state regardless of the `readOnlyInput` value.
122
126
  */
123
127
  this.readOnlyInput = false;
124
- /**
125
- * Sets or gets the `navigation` property of the Calendar
126
- * and determines whether the navigation side-bar is displayed.
127
- * ([see example]({% slug sidebar_datepicker %})).
128
- */
129
- this.navigation = true;
128
+ this._navigation = true;
130
129
  /**
131
130
  * Specifies the smallest valid date
132
131
  * ([see example]({% slug dateranges_datepicker %})).
@@ -186,7 +185,8 @@ export class DatePickerComponent {
186
185
  */
187
186
  this.tabindex = 0;
188
187
  /**
189
- * Sets the title of the input element of the DatePicker.
188
+ * Sets the title of the input element of the DatePicker and the title text rendered
189
+ * in the header of the popup(action sheet). Applicable only when [`AdaptiveMode` is set to `auto`](slug:api_dateinputs_adaptivemode).
190
190
  */
191
191
  this.title = "";
192
192
  /**
@@ -204,6 +204,10 @@ export class DatePickerComponent {
204
204
  * ([see example]({% slug calendar_type_datepicker %}#toc-week-number-column)).
205
205
  */
206
206
  this.weekNumber = false;
207
+ /**
208
+ * Enables or disables the adaptive mode. By default the adaptive rendering is disabled.
209
+ */
210
+ this.adaptiveMode = 'none';
207
211
  /**
208
212
  * Fires each time the user selects a new value
209
213
  * ([more information and example]({% slug overview_datepicker %}#toc-events)).
@@ -269,6 +273,10 @@ export class DatePickerComponent {
269
273
  * @hidden
270
274
  */
271
275
  this.wrapperClasses = true;
276
+ /**
277
+ * @hidden
278
+ */
279
+ this.xIcon = xIcon;
272
280
  this._popupSettings = { animate: true };
273
281
  this._show = false;
274
282
  this._value = null;
@@ -353,6 +361,21 @@ export class DatePickerComponent {
353
361
  get popupSettings() {
354
362
  return this._popupSettings;
355
363
  }
364
+ /**
365
+ * Sets or gets the `navigation` property of the Calendar
366
+ * and determines whether the navigation side-bar is displayed.
367
+ * ([see example]({% slug sidebar_datepicker %})).
368
+ */
369
+ set navigation(state) {
370
+ this._navigation = state;
371
+ }
372
+ ;
373
+ get navigation() {
374
+ if (this.isAdaptive) {
375
+ return;
376
+ }
377
+ return this._navigation;
378
+ }
356
379
  /**
357
380
  * Specifies the value of the DatePicker component.
358
381
  *
@@ -386,6 +409,16 @@ export class DatePickerComponent {
386
409
  get disabledDates() {
387
410
  return this._disabledDates;
388
411
  }
412
+ /**
413
+ * Sets the subtitle text rendered in the header of the popup(action sheet).
414
+ * Applicable only when [`AdaptiveMode` is set to `auto`](slug:api_dateinputs_adaptivemode).
415
+ */
416
+ set subtitle(subtitle) {
417
+ this._subtitle = subtitle;
418
+ }
419
+ get subtitle() {
420
+ return this._subtitle || this.placeholder;
421
+ }
389
422
  /**
390
423
  * Sets the size of the component.
391
424
  *
@@ -489,14 +522,24 @@ export class DatePickerComponent {
489
522
  if (show && (this.disabled || this.readonly)) {
490
523
  return;
491
524
  }
492
- const skipZone = !show && (!this._show || !hasObservers(this.close));
525
+ const skipZone = !show && (!this._show || (!hasObservers(this.close) && !hasObservers(this.open)));
493
526
  if (!skipZone) {
494
527
  this.zone.run(() => {
495
- this.togglePopup(show);
528
+ const event = new PreventableEvent();
529
+ if (!this._show && show) {
530
+ this.open.emit(event);
531
+ }
532
+ else if (this._show && !show) {
533
+ this.close.emit(event);
534
+ }
535
+ if (event.isDefaultPrevented()) {
536
+ return;
537
+ }
538
+ this.toggleCalendar(show);
496
539
  });
497
540
  }
498
541
  else {
499
- this.togglePopup(show);
542
+ this.toggleCalendar(show);
500
543
  }
501
544
  }
502
545
  /**
@@ -523,6 +566,7 @@ export class DatePickerComponent {
523
566
  }
524
567
  ngAfterViewInit() {
525
568
  this.setComponentClasses();
569
+ this.renderer.setAttribute(this.actionSheet.element.nativeElement, 'style', '--kendo-actionsheet-height: 60vh; --kendo-actionsheet-max-height: none');
526
570
  }
527
571
  /**
528
572
  * @hidden
@@ -553,7 +597,7 @@ export class DatePickerComponent {
553
597
  this.pickerSubscriptions.unsubscribe();
554
598
  }
555
599
  /**
556
- * Returns the current open state of the popup.
600
+ * Indicates whether the component is currently open. That is when the popup or actionSheet is open.
557
601
  */
558
602
  get isOpen() {
559
603
  return this.show;
@@ -601,6 +645,19 @@ export class DatePickerComponent {
601
645
  registerOnValidatorChange(fn) {
602
646
  this.onValidatorChange = fn;
603
647
  }
648
+ /**
649
+ * @hidden
650
+ */
651
+ handleActionSheetCollapse() {
652
+ // If not handled, the actionsheet expanded state does not get updated when overlay is clicked
653
+ this.cdr.markForCheck();
654
+ }
655
+ /**
656
+ * @hidden
657
+ */
658
+ handleActionSheetClick(e) {
659
+ e.preventDefault();
660
+ }
604
661
  /**
605
662
  * Focuses the DatePicker component.
606
663
  *
@@ -626,7 +683,8 @@ export class DatePickerComponent {
626
683
  (this.calendar || this.input)['blur']();
627
684
  }
628
685
  /**
629
- * Toggles the visibility of the popup. If you use the `toggle` method to show or hide the popup,
686
+ * Toggles the visibility of the popup or actionSheet.
687
+ * If you use the `toggle` method to show or hide the popup or actionSheet,
630
688
  * the `open` and `close` events do not fire.
631
689
  *
632
690
  * @param show - The state of the popup.
@@ -636,7 +694,7 @@ export class DatePickerComponent {
636
694
  return;
637
695
  }
638
696
  this.resolvedPromise.then(() => {
639
- this._toggle((show === undefined) ? !this.show : show);
697
+ this.toggleCalendar((show === undefined) ? !this.show : show);
640
698
  });
641
699
  }
642
700
  /**
@@ -654,6 +712,15 @@ export class DatePickerComponent {
654
712
  this.show = !this.show;
655
713
  this.cdr.markForCheck();
656
714
  }
715
+ /**
716
+ * @hidden
717
+ */
718
+ handleDateInputClick() {
719
+ this.windowSize = windowSize();
720
+ if (this.isAdaptive) {
721
+ this.show = true;
722
+ }
723
+ }
657
724
  /**
658
725
  * @hidden
659
726
  */
@@ -703,6 +770,34 @@ export class DatePickerComponent {
703
770
  get calendar() {
704
771
  return this.pickerService.calendar;
705
772
  }
773
+ /**
774
+ * @hidden
775
+ */
776
+ get isAdaptiveModeEnabled() {
777
+ return this.adaptiveMode === 'auto';
778
+ }
779
+ /**
780
+ * @hidden
781
+ */
782
+ get isAdaptive() {
783
+ return this.isAdaptiveModeEnabled && this.windowSize !== 'large';
784
+ }
785
+ /**
786
+ * @hidden
787
+ */
788
+ onResize() {
789
+ if (!this.isOpen || this.windowSize === windowSize()) {
790
+ return;
791
+ }
792
+ ;
793
+ if (this.actionSheet.expanded) {
794
+ this.toggleActionSheet(false);
795
+ }
796
+ else {
797
+ this.togglePopup(false);
798
+ }
799
+ this.windowSize = windowSize();
800
+ }
706
801
  /**
707
802
  * @hidden
708
803
  */
@@ -730,21 +825,17 @@ export class DatePickerComponent {
730
825
  this.show = false;
731
826
  }
732
827
  }
733
- togglePopup(show) {
734
- const event = new PreventableEvent();
735
- if (!this._show && show) {
736
- this.open.emit(event);
737
- }
738
- else if (this._show && !show) {
739
- this.close.emit(event);
828
+ toggleCalendar(show) {
829
+ this.windowSize = windowSize();
830
+ if (this.isAdaptive) {
831
+ this.toggleActionSheet(show);
740
832
  }
741
- if (event.isDefaultPrevented()) {
742
- return;
833
+ else {
834
+ this.togglePopup(show);
743
835
  }
744
- this._toggle(show);
745
836
  this.toggleFocus();
746
837
  }
747
- _toggle(show) {
838
+ togglePopup(show) {
748
839
  if (show === this._show) {
749
840
  return;
750
841
  }
@@ -762,16 +853,7 @@ export class DatePickerComponent {
762
853
  popupClass: this.popupClasses,
763
854
  positionMode: 'absolute'
764
855
  });
765
- if (this.calendar.type === 'infinite') {
766
- this.pickerSubscriptions.add(this.calendar.monthView.focusedCellChange.subscribe((id) => {
767
- this.renderer.setAttribute(inputElement, attributeNames.ariaActiveDescendant, id);
768
- }));
769
- }
770
- else {
771
- this.pickerSubscriptions.add(this.calendar.multiViewCalendar.viewList.focusedCellChange.subscribe((id) => {
772
- this.renderer.setAttribute(inputElement, attributeNames.ariaActiveDescendant, id);
773
- }));
774
- }
856
+ this.setAriaActiveDescendant();
775
857
  this.popupRef.popupElement.setAttribute('id', this.popupUID);
776
858
  this.renderer.setAttribute(inputElement, attributeNames.ariaControls, this.popupUID);
777
859
  this.subscription = this.popupRef.popupAnchorViewportLeave.subscribe(() => this.show = false);
@@ -780,11 +862,53 @@ export class DatePickerComponent {
780
862
  this.popupRef.close();
781
863
  this.popupRef = null;
782
864
  this.subscription.unsubscribe();
865
+ this.ariaActiveDescendantSubscription.unsubscribe();
783
866
  this.renderer.removeAttribute(inputElement, attributeNames.ariaControls);
784
867
  this.renderer.removeAttribute(inputElement, attributeNames.ariaActiveDescendant);
785
868
  this.cdr.detectChanges();
786
869
  }
787
870
  }
871
+ toggleActionSheet(show) {
872
+ if (show === this._show) {
873
+ return;
874
+ }
875
+ if (show && !this.isOpen) {
876
+ this.actionSheet.toggle();
877
+ this.updateActionSheetAdaptiveAppearance();
878
+ this.setAriaActiveDescendant();
879
+ }
880
+ else if (!show && this.isOpen) {
881
+ this.actionSheet.toggle();
882
+ this.ariaActiveDescendantSubscription.unsubscribe();
883
+ this.renderer.removeAttribute(this.input.inputElement, attributeNames.ariaActiveDescendant);
884
+ }
885
+ this._show = show;
886
+ }
887
+ updateActionSheetAdaptiveAppearance() {
888
+ let element;
889
+ let animationContainer;
890
+ if (this.actionSheet) {
891
+ element = this.actionSheet['element'].nativeElement.querySelector('.k-actionsheet');
892
+ animationContainer = this.actionSheet['element'].nativeElement.querySelector('.k-child-animation-container');
893
+ if (this.windowSize === 'medium') {
894
+ this.renderer.removeClass(element, 'k-actionsheet-fullscreen');
895
+ this.renderer.removeStyle(animationContainer, 'height');
896
+ }
897
+ else if (this.windowSize === 'small') {
898
+ this.renderer.addClass(element, 'k-actionsheet-fullscreen');
899
+ this.renderer.setStyle(animationContainer, 'height', '100%');
900
+ }
901
+ this.renderer.addClass(element, 'k-adaptive-actionsheet');
902
+ this.renderer.addClass(element, 'k-actionsheet-bottom');
903
+ this.renderer.setStyle(animationContainer, 'bottom', '0px');
904
+ }
905
+ }
906
+ setAriaActiveDescendant() {
907
+ const focusedCellChangeEvent = this.calendar.type === 'infinite' ?
908
+ this.calendar.monthView.focusedCellChange :
909
+ this.calendar.multiViewCalendar.viewList.focusedCellChange;
910
+ this.ariaActiveDescendantSubscription = focusedCellChangeEvent.subscribe((id) => this.renderer.setAttribute(this.input.inputElement, attributeNames.ariaActiveDescendant, id));
911
+ }
788
912
  focusInput() {
789
913
  if (this.touchEnabled) {
790
914
  return;
@@ -845,15 +969,17 @@ export class DatePickerComponent {
845
969
  }
846
970
  }
847
971
  handleWindowBlur() {
848
- if (!this.isOpen) {
972
+ if (!this.isOpen || this.actionSheet.expanded) {
849
973
  return;
850
974
  }
851
975
  this.show = false;
852
976
  }
853
977
  handleBlur(args) {
854
978
  const currentTarget = args && currentFocusTarget(args);
979
+ const target = args && args.target;
980
+ const isInsideActionSheet = this.actionSheet && (this.actionSheet.element.nativeElement.contains(target) || this.actionSheet.element.nativeElement.contains(currentTarget));
855
981
  if (currentTarget && (this.input.containsElement(currentTarget) ||
856
- (this.calendar && this.calendar.containsElement(currentTarget)))) {
982
+ (this.calendar && this.calendar.containsElement(currentTarget)) || isInsideActionSheet)) {
857
983
  return;
858
984
  }
859
985
  if (hasObservers(this.onBlur) || (this.show && hasObservers(this.close)) || requiresZoneOnBlur(this.control)) {
@@ -899,7 +1025,7 @@ export class DatePickerComponent {
899
1025
  }
900
1026
  }
901
1027
  DatePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DatePickerComponent, deps: [{ token: i0.NgZone }, { token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: i2.PopupService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.Injector }, { token: i3.PickerService }, { token: i4.DisabledDatesService }, { token: TOUCH_ENABLED, optional: true }], target: i0.ɵɵFactoryTarget.Component });
902
- 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: [
1028
+ 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: [
903
1029
  { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DatePickerComponent), multi: true },
904
1030
  { provide: NG_VALIDATORS, useExisting: forwardRef(() => DatePickerComponent), multi: true },
905
1031
  { provide: KendoInput, useExisting: forwardRef(() => DatePickerComponent) },
@@ -910,7 +1036,7 @@ DatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
910
1036
  provide: L10N_PREFIX,
911
1037
  useValue: 'kendo.datepicker'
912
1038
  }
913
- ], 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: `
1039
+ ], 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: `
914
1040
  <ng-container kendoDatePickerLocalizedMessages
915
1041
  i18n-today="kendo.datepicker.today|The label for the today button in the calendar header"
916
1042
  today="Today"
@@ -949,6 +1075,7 @@ DatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
949
1075
  size="none"
950
1076
  [value]="value"
951
1077
  (valueChange)="handleInputChange($event)"
1078
+ (click)="handleDateInputClick()"
952
1079
  ></kendo-dateinput>
953
1080
  <button
954
1081
  #toggleButton
@@ -970,10 +1097,54 @@ DatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
970
1097
  >
971
1098
  </kendo-icon-wrapper>
972
1099
  </button>
1100
+
973
1101
  <ng-container #container></ng-container>
1102
+
974
1103
  <ng-template #popupTemplate>
1104
+ <ng-container *ngTemplateOutlet="calendarTemplate"></ng-container>
1105
+ </ng-template>
1106
+
1107
+ <kendo-resize-sensor *ngIf="isAdaptiveModeEnabled" (resize)="onResize()"></kendo-resize-sensor>
1108
+ <kendo-actionsheet
1109
+ #actionSheet
1110
+ (overlayClick)="show=false"
1111
+ [kendoEventsOutsideAngular]="{
1112
+ click: handleActionSheetClick
1113
+ }"
1114
+ [scope]="this"
1115
+ (collapse)="handleActionSheetCollapse()"
1116
+ >
1117
+ <ng-template kendoActionSheetTemplate>
1118
+ <div class="k-actionsheet-titlebar">
1119
+ <div class="k-actionsheet-titlebar-group k-hbox">
1120
+ <div class="k-actionsheet-title">
1121
+ <div class="k-text-center">{{ title }}</div>
1122
+ <div class="k-actionsheet-subtitle k-text-center">{{ subtitle }}</div>
1123
+ </div>
1124
+ <div class="k-actionsheet-actions">
1125
+ <button
1126
+ kendoButton
1127
+ icon="x"
1128
+ [attr.title]="localization.get('clearTitle')"
1129
+ [svgIcon]="xIcon"
1130
+ fillMode="flat"
1131
+ size="large"
1132
+ innerCssClass="k-button-icon"
1133
+ (click)="show = false">
1134
+ </button>
1135
+ </div>
1136
+ </div>
1137
+ </div>
1138
+ <div class="k-actionsheet-content !k-overflow-hidden">
1139
+ <ng-container *ngTemplateOutlet="calendarTemplate"></ng-container>
1140
+ </div>
1141
+ </ng-template>
1142
+ </kendo-actionsheet>
1143
+
1144
+ <ng-template #calendarTemplate>
975
1145
  <kendo-calendar
976
1146
  #calendar
1147
+ [size]="isAdaptive ? 'large' : 'medium'"
977
1148
  [type]="calendarType"
978
1149
  [min]="min"
979
1150
  [max]="max"
@@ -1007,8 +1178,8 @@ DatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", ve
1007
1178
  >
1008
1179
  </kendo-calendar-messages>
1009
1180
  </kendo-calendar>
1010
- <ng-template>
1011
- `, isInline: true, components: [{ type: i5.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: i6.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass"], exportAs: ["kendoIconWrapper"] }, { type: i7.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: i8.CalendarCustomMessagesComponent, selector: "kendo-calendar-messages" }], directives: [{ type: i9.DatePickerLocalizedMessagesDirective, selector: "[kendoDatePickerLocalizedMessages]" }, { type: i10.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1181
+ </ng-template>
1182
+ `, isInline: true, components: [{ type: i5.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: i6.IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass"], exportAs: ["kendoIconWrapper"] }, { type: i7.ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }, { type: i8.ActionSheetComponent, selector: "kendo-actionsheet", inputs: ["title", "subtitle", "items", "cssClass", "animation", "expanded"], outputs: ["expandedChange", "expand", "collapse", "itemClick", "overlayClick"], exportAs: ["kendoActionSheet"] }, { type: i9.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: i10.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: i11.CalendarCustomMessagesComponent, selector: "kendo-calendar-messages" }], directives: [{ type: i12.DatePickerLocalizedMessagesDirective, selector: "[kendoDatePickerLocalizedMessages]" }, { type: i7.EventsOutsideAngularDirective, selector: "[kendoEventsOutsideAngular]", inputs: ["kendoEventsOutsideAngular", "scope"] }, { type: i13.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i13.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.ActionSheetTemplateDirective, selector: "[kendoActionSheetTemplate]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1012
1183
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DatePickerComponent, decorators: [{
1013
1184
  type: Component,
1014
1185
  args: [{
@@ -1066,6 +1237,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
1066
1237
  size="none"
1067
1238
  [value]="value"
1068
1239
  (valueChange)="handleInputChange($event)"
1240
+ (click)="handleDateInputClick()"
1069
1241
  ></kendo-dateinput>
1070
1242
  <button
1071
1243
  #toggleButton
@@ -1087,10 +1259,54 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
1087
1259
  >
1088
1260
  </kendo-icon-wrapper>
1089
1261
  </button>
1262
+
1090
1263
  <ng-container #container></ng-container>
1264
+
1091
1265
  <ng-template #popupTemplate>
1266
+ <ng-container *ngTemplateOutlet="calendarTemplate"></ng-container>
1267
+ </ng-template>
1268
+
1269
+ <kendo-resize-sensor *ngIf="isAdaptiveModeEnabled" (resize)="onResize()"></kendo-resize-sensor>
1270
+ <kendo-actionsheet
1271
+ #actionSheet
1272
+ (overlayClick)="show=false"
1273
+ [kendoEventsOutsideAngular]="{
1274
+ click: handleActionSheetClick
1275
+ }"
1276
+ [scope]="this"
1277
+ (collapse)="handleActionSheetCollapse()"
1278
+ >
1279
+ <ng-template kendoActionSheetTemplate>
1280
+ <div class="k-actionsheet-titlebar">
1281
+ <div class="k-actionsheet-titlebar-group k-hbox">
1282
+ <div class="k-actionsheet-title">
1283
+ <div class="k-text-center">{{ title }}</div>
1284
+ <div class="k-actionsheet-subtitle k-text-center">{{ subtitle }}</div>
1285
+ </div>
1286
+ <div class="k-actionsheet-actions">
1287
+ <button
1288
+ kendoButton
1289
+ icon="x"
1290
+ [attr.title]="localization.get('clearTitle')"
1291
+ [svgIcon]="xIcon"
1292
+ fillMode="flat"
1293
+ size="large"
1294
+ innerCssClass="k-button-icon"
1295
+ (click)="show = false">
1296
+ </button>
1297
+ </div>
1298
+ </div>
1299
+ </div>
1300
+ <div class="k-actionsheet-content !k-overflow-hidden">
1301
+ <ng-container *ngTemplateOutlet="calendarTemplate"></ng-container>
1302
+ </div>
1303
+ </ng-template>
1304
+ </kendo-actionsheet>
1305
+
1306
+ <ng-template #calendarTemplate>
1092
1307
  <kendo-calendar
1093
1308
  #calendar
1309
+ [size]="isAdaptive ? 'large' : 'medium'"
1094
1310
  [type]="calendarType"
1095
1311
  [min]="min"
1096
1312
  [max]="max"
@@ -1124,7 +1340,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
1124
1340
  >
1125
1341
  </kendo-calendar-messages>
1126
1342
  </kendo-calendar>
1127
- <ng-template>
1343
+ </ng-template>
1128
1344
  `
1129
1345
  }]
1130
1346
  }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: i2.PopupService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.Injector }, { type: i3.PickerService }, { type: i4.DisabledDatesService }, { type: undefined, decorators: [{
@@ -1141,6 +1357,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
1141
1357
  }], toggleButton: [{
1142
1358
  type: ViewChild,
1143
1359
  args: ['toggleButton', { static: true }]
1360
+ }], actionSheet: [{
1361
+ type: ViewChild,
1362
+ args: ['actionSheet']
1144
1363
  }], focusableId: [{
1145
1364
  type: Input
1146
1365
  }], cellTemplate: [{
@@ -1237,6 +1456,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
1237
1456
  type: Input
1238
1457
  }], title: [{
1239
1458
  type: Input
1459
+ }], subtitle: [{
1460
+ type: Input
1240
1461
  }], rangeValidation: [{
1241
1462
  type: Input
1242
1463
  }], disabledDatesValidation: [{
@@ -1249,6 +1470,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
1249
1470
  type: Input
1250
1471
  }], fillMode: [{
1251
1472
  type: Input
1473
+ }], adaptiveMode: [{
1474
+ type: Input
1252
1475
  }], valueChange: [{
1253
1476
  type: Output
1254
1477
  }], onFocus: [{
@@ -16,6 +16,7 @@ import { DatePickerCustomMessagesComponent } from './localization/datepicker-cus
16
16
  import { touchEnabled } from '@progress/kendo-common';
17
17
  import { TOUCH_ENABLED } from '../touch-enabled';
18
18
  import { IconsModule } from '@progress/kendo-angular-icons';
19
+ import { AdaptiveModule } from '../common/adaptive.module';
19
20
  import * as i0 from "@angular/core";
20
21
  /**
21
22
  * Represents the [NgModule](link:site.data.urls.angular['ngmoduleapi'])
@@ -33,7 +34,8 @@ DatePickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", versio
33
34
  PopupModule,
34
35
  TemplatesModule,
35
36
  EventsModule,
36
- IconsModule], exports: [DatePickerComponent,
37
+ IconsModule,
38
+ AdaptiveModule], exports: [DatePickerComponent,
37
39
  DatePickerCustomMessagesComponent,
38
40
  DatePickerLocalizedMessagesDirective,
39
41
  TemplatesModule] });
@@ -45,7 +47,8 @@ DatePickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", versio
45
47
  PopupModule,
46
48
  TemplatesModule,
47
49
  EventsModule,
48
- IconsModule
50
+ IconsModule,
51
+ AdaptiveModule
49
52
  ], TemplatesModule] });
50
53
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DatePickerModule, decorators: [{
51
54
  type: NgModule,
@@ -69,7 +72,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
69
72
  PopupModule,
70
73
  TemplatesModule,
71
74
  EventsModule,
72
- IconsModule
75
+ IconsModule,
76
+ AdaptiveModule
73
77
  ],
74
78
  providers: [{ provide: TOUCH_ENABLED, useValue: touchEnabled }]
75
79
  }]