@progress/kendo-angular-dateinputs 5.2.4-dev.202110081056 → 5.3.1-dev.202112011809

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 (62) hide show
  1. package/dist/cdn/js/kendo-angular-dateinputs.js +2 -2
  2. package/dist/cdn/main.js +1 -1
  3. package/dist/es/calendar/calendar.component.js +90 -46
  4. package/dist/es/calendar/header.component.js +3 -4
  5. package/dist/es/calendar/horizontal-view-list.component.js +1 -1
  6. package/dist/es/calendar/multiview-calendar.component.js +66 -19
  7. package/dist/es/calendar/services/century-view.service.js +7 -1
  8. package/dist/es/calendar/services/decade-view.service.js +6 -1
  9. package/dist/es/calendar/services/month-view.service.js +3 -0
  10. package/dist/es/calendar/services/year-view.service.js +5 -1
  11. package/dist/es/calendar/view-list.component.js +1 -1
  12. package/dist/es/datepicker/datepicker.component.js +5 -3
  13. package/dist/es/daterange/date-range-input.js +3 -3
  14. package/dist/es/daterange/date-range-popup.component.js +2 -2
  15. package/dist/es/daterange/date-range-selection.directive.js +1 -1
  16. package/dist/es/package-metadata.js +1 -1
  17. package/dist/es/util.js +15 -0
  18. package/dist/es2015/calendar/calendar.component.d.ts +27 -3
  19. package/dist/es2015/calendar/calendar.component.js +92 -41
  20. package/dist/es2015/calendar/header.component.js +3 -4
  21. package/dist/es2015/calendar/horizontal-view-list.component.js +1 -0
  22. package/dist/es2015/calendar/models/view-service.interface.d.ts +1 -0
  23. package/dist/es2015/calendar/multiview-calendar.component.d.ts +30 -3
  24. package/dist/es2015/calendar/multiview-calendar.component.js +69 -18
  25. package/dist/es2015/calendar/services/century-view.service.d.ts +1 -0
  26. package/dist/es2015/calendar/services/century-view.service.js +7 -1
  27. package/dist/es2015/calendar/services/decade-view.service.d.ts +1 -0
  28. package/dist/es2015/calendar/services/decade-view.service.js +6 -1
  29. package/dist/es2015/calendar/services/month-view.service.d.ts +1 -0
  30. package/dist/es2015/calendar/services/month-view.service.js +3 -0
  31. package/dist/es2015/calendar/services/year-view.service.d.ts +1 -0
  32. package/dist/es2015/calendar/services/year-view.service.js +5 -1
  33. package/dist/es2015/calendar/view-list.component.js +5 -1
  34. package/dist/es2015/dateinput/dateinput.component.d.ts +2 -0
  35. package/dist/es2015/datepicker/datepicker.component.d.ts +2 -0
  36. package/dist/es2015/datepicker/datepicker.component.js +5 -3
  37. package/dist/es2015/daterange/date-range-input.js +3 -3
  38. package/dist/es2015/daterange/date-range-popup.component.js +2 -2
  39. package/dist/es2015/daterange/date-range-selection.directive.js +1 -1
  40. package/dist/es2015/index.metadata.json +1 -1
  41. package/dist/es2015/package-metadata.js +1 -1
  42. package/dist/es2015/util.d.ts +7 -0
  43. package/dist/es2015/util.js +15 -0
  44. package/dist/fesm2015/index.js +7223 -7084
  45. package/dist/fesm5/index.js +6794 -6671
  46. package/dist/npm/calendar/calendar.component.js +90 -46
  47. package/dist/npm/calendar/header.component.js +3 -4
  48. package/dist/npm/calendar/horizontal-view-list.component.js +1 -1
  49. package/dist/npm/calendar/multiview-calendar.component.js +66 -19
  50. package/dist/npm/calendar/services/century-view.service.js +6 -0
  51. package/dist/npm/calendar/services/decade-view.service.js +5 -0
  52. package/dist/npm/calendar/services/month-view.service.js +3 -0
  53. package/dist/npm/calendar/services/year-view.service.js +4 -0
  54. package/dist/npm/calendar/view-list.component.js +1 -1
  55. package/dist/npm/datepicker/datepicker.component.js +4 -2
  56. package/dist/npm/daterange/date-range-input.js +3 -3
  57. package/dist/npm/daterange/date-range-popup.component.js +2 -2
  58. package/dist/npm/daterange/date-range-selection.directive.js +1 -1
  59. package/dist/npm/package-metadata.js +1 -1
  60. package/dist/npm/util.js +15 -0
  61. package/dist/systemjs/kendo-angular-dateinputs.js +1 -1
  62. package/package.json +5 -5
@@ -10,6 +10,7 @@ import { L10N_PREFIX, LocalizationService } from '@progress/kendo-angular-l10n';
10
10
  import { cloneDate, isEqual } from '@progress/kendo-date-math';
11
11
  import { hasObservers, guid, Keys } from '@progress/kendo-angular-common';
12
12
  import { HorizontalViewListComponent } from './horizontal-view-list.component';
13
+ import { HeaderComponent } from './header.component';
13
14
  import { BusViewService } from './services/bus-view.service';
14
15
  import { NavigationService } from './services/navigation.service';
15
16
  import { SelectionService } from './services/selection.service';
@@ -114,6 +115,10 @@ let MultiViewCalendarComponent = class MultiViewCalendarComponent {
114
115
  * @hidden
115
116
  */
116
117
  this.isActive = false;
118
+ /**
119
+ * @hidden
120
+ */
121
+ this.isHeaderActive = false;
117
122
  /**
118
123
  * Defines the active view that the Calendar initially renders
119
124
  * ([see example]({% slug activeview_multiviewcalendar %})).
@@ -158,6 +163,11 @@ let MultiViewCalendarComponent = class MultiViewCalendarComponent {
158
163
  * ([more information and example]({% slug overview_multiviewcalendar %}#toc-events)).
159
164
  */
160
165
  this.activeViewChange = new EventEmitter();
166
+ /**
167
+ * Fires when navigating in the currently active view
168
+ * ([more information and example]({% slug events_multiviewcalendar %})).
169
+ */
170
+ this.navigate = new EventEmitter();
161
171
  /**
162
172
  * Fires when a view cell is entered
163
173
  * ([more information and example]({% slug overview_multiviewcalendar %}#toc-events)).
@@ -173,6 +183,10 @@ let MultiViewCalendarComponent = class MultiViewCalendarComponent {
173
183
  * ([more information and example]({% slug overview_multiviewcalendar %}#toc-events)).
174
184
  */
175
185
  this.valueChange = new EventEmitter();
186
+ /**
187
+ * @hidden
188
+ */
189
+ this.blurEvent = new EventEmitter();
176
190
  this.cellUID = guid();
177
191
  this.isHovered = false;
178
192
  this.isPrevDisabled = true;
@@ -190,7 +204,7 @@ let MultiViewCalendarComponent = class MultiViewCalendarComponent {
190
204
  this.minValidateFn = noop;
191
205
  this.maxValidateFn = noop;
192
206
  this.disabledDatesRangeValidateFn = noop;
193
- this.subscriptions = new Subscription(() => { });
207
+ this.subscriptions = new Subscription();
194
208
  this.setClasses(element.nativeElement);
195
209
  }
196
210
  /**
@@ -336,9 +350,6 @@ let MultiViewCalendarComponent = class MultiViewCalendarComponent {
336
350
  get widgetId() {
337
351
  return this.id;
338
352
  }
339
- get widgetRole() {
340
- return 'grid';
341
- }
342
353
  get calendarTabIndex() {
343
354
  return this.disabled ? undefined : this.tabIndex;
344
355
  }
@@ -351,10 +362,15 @@ let MultiViewCalendarComponent = class MultiViewCalendarComponent {
351
362
  /**
352
363
  * @hidden
353
364
  */
354
- handleBlur() {
355
- this.onControlTouched();
365
+ handleBlur(event) {
366
+ const target = event.target;
367
+ if (!this.element.nativeElement.contains(event.relatedTarget)) {
368
+ this.blurEvent.emit(event);
369
+ this.onControlTouched();
370
+ }
356
371
  this.isActive = false;
357
372
  this.isHovered = false; //ensure that hovered is also not active
373
+ this.isHeaderActive = this.headerElement.nativeElement.contains(target);
358
374
  }
359
375
  /**
360
376
  * @hidden
@@ -402,6 +418,10 @@ let MultiViewCalendarComponent = class MultiViewCalendarComponent {
402
418
  }
403
419
  this.focusedDate = candidate;
404
420
  event.preventDefault();
421
+ const isSameView = this.bus.service(this.activeViewEnum).isInArray(this.focusedDate, this.viewList.dates);
422
+ if (!isSameView) {
423
+ this.emitNavigate(this.focusedDate);
424
+ }
405
425
  }
406
426
  ngOnInit() {
407
427
  this.subscriptions.add(this.bus.viewChanged.subscribe(({ view }) => {
@@ -487,6 +507,18 @@ let MultiViewCalendarComponent = class MultiViewCalendarComponent {
487
507
  this.onControlChange(this.parseSelectionToValue(availableDates));
488
508
  this.valueChange.emit(this.parseSelectionToValue(availableDates));
489
509
  }
510
+ /**
511
+ * @hidden
512
+ */
513
+ handleTodayButtonClick(args) {
514
+ const todayDate = args.focusedDate;
515
+ const isSameView = this.bus.service(this.activeViewEnum).isInArray(todayDate, this.viewList.dates);
516
+ const isBottomView = !this.bus.canMoveDown(this.activeViewEnum);
517
+ if (!isSameView && isBottomView) {
518
+ this.emitNavigate(todayDate);
519
+ }
520
+ this.handleDateChange(args);
521
+ }
490
522
  /**
491
523
  * @hidden
492
524
  */
@@ -553,9 +585,17 @@ let MultiViewCalendarComponent = class MultiViewCalendarComponent {
553
585
  /**
554
586
  * @hidden
555
587
  */
556
- navigate(action) {
588
+ navigateView(action) {
557
589
  this.focusedDate = this.viewList.navigate(action);
558
590
  this.updateButtonState();
591
+ this.emitNavigate(this.focusedDate);
592
+ }
593
+ /**
594
+ * @hidden
595
+ */
596
+ emitNavigate(focusedDate) {
597
+ const activeView = CalendarViewEnum[this.activeViewEnum];
598
+ this.navigate.emit({ activeView, focusedDate });
559
599
  }
560
600
  /**
561
601
  * @hidden
@@ -572,6 +612,10 @@ let MultiViewCalendarComponent = class MultiViewCalendarComponent {
572
612
  */
573
613
  handleCellClick({ date, modifiers }) {
574
614
  this.performSelection(date, modifiers);
615
+ const isSameView = this.bus.service(this.activeViewEnum).isInArray(this.focusedDate, this.viewList.dates);
616
+ if (!isSameView) {
617
+ this.emitNavigate(this.focusedDate);
618
+ }
575
619
  }
576
620
  /**
577
621
  * @hidden
@@ -743,6 +787,10 @@ tslib_1.__decorate([
743
787
  Output(),
744
788
  tslib_1.__metadata("design:type", EventEmitter)
745
789
  ], MultiViewCalendarComponent.prototype, "activeViewChange", void 0);
790
+ tslib_1.__decorate([
791
+ Output(),
792
+ tslib_1.__metadata("design:type", EventEmitter)
793
+ ], MultiViewCalendarComponent.prototype, "navigate", void 0);
746
794
  tslib_1.__decorate([
747
795
  Output(),
748
796
  tslib_1.__metadata("design:type", EventEmitter)
@@ -755,6 +803,10 @@ tslib_1.__decorate([
755
803
  Output(),
756
804
  tslib_1.__metadata("design:type", EventEmitter)
757
805
  ], MultiViewCalendarComponent.prototype, "valueChange", void 0);
806
+ tslib_1.__decorate([
807
+ Output('blur'),
808
+ tslib_1.__metadata("design:type", EventEmitter)
809
+ ], MultiViewCalendarComponent.prototype, "blurEvent", void 0);
758
810
  tslib_1.__decorate([
759
811
  ContentChild(CellTemplateDirective, { static: true }),
760
812
  tslib_1.__metadata("design:type", CellTemplateDirective)
@@ -818,6 +870,10 @@ tslib_1.__decorate([
818
870
  tslib_1.__metadata("design:type", HeaderTitleTemplateDirective),
819
871
  tslib_1.__metadata("design:paramtypes", [HeaderTitleTemplateDirective])
820
872
  ], MultiViewCalendarComponent.prototype, "headerTitleTemplateRef", null);
873
+ tslib_1.__decorate([
874
+ ViewChild(HeaderComponent, { static: false, read: ElementRef }),
875
+ tslib_1.__metadata("design:type", ElementRef)
876
+ ], MultiViewCalendarComponent.prototype, "headerElement", void 0);
821
877
  tslib_1.__decorate([
822
878
  ViewChild(HorizontalViewListComponent, { static: false }),
823
879
  tslib_1.__metadata("design:type", HorizontalViewListComponent)
@@ -827,11 +883,6 @@ tslib_1.__decorate([
827
883
  tslib_1.__metadata("design:type", String),
828
884
  tslib_1.__metadata("design:paramtypes", [])
829
885
  ], MultiViewCalendarComponent.prototype, "widgetId", null);
830
- tslib_1.__decorate([
831
- HostBinding('attr.role'),
832
- tslib_1.__metadata("design:type", String),
833
- tslib_1.__metadata("design:paramtypes", [])
834
- ], MultiViewCalendarComponent.prototype, "widgetRole", null);
835
886
  tslib_1.__decorate([
836
887
  HostBinding('attr.tabindex'),
837
888
  tslib_1.__metadata("design:type", Number),
@@ -849,9 +900,9 @@ tslib_1.__decorate([
849
900
  tslib_1.__metadata("design:paramtypes", [])
850
901
  ], MultiViewCalendarComponent.prototype, "ariaActivedescendant", null);
851
902
  tslib_1.__decorate([
852
- HostListener("blur"),
903
+ HostListener('focusout', ['$event']),
853
904
  tslib_1.__metadata("design:type", Function),
854
- tslib_1.__metadata("design:paramtypes", []),
905
+ tslib_1.__metadata("design:paramtypes", [FocusEvent]),
855
906
  tslib_1.__metadata("design:returntype", void 0)
856
907
  ], MultiViewCalendarComponent.prototype, "handleBlur", null);
857
908
  tslib_1.__decorate([
@@ -930,14 +981,14 @@ MultiViewCalendarComponent = tslib_1.__decorate([
930
981
  [isPrevDisabled]="isPrevDisabled"
931
982
  [isNextDisabled]="isNextDisabled"
932
983
  [showNavigationButtons]="true"
933
- (todayButtonClick)="handleDateChange({ selectedDates: [$event], focusedDate: $event })"
934
- (prevButtonClick)="navigate(prevView)"
935
- (nextButtonClick)="navigate(nextView)"
984
+ (todayButtonClick)="handleTodayButtonClick({ selectedDates: [$event], focusedDate: $event })"
985
+ (prevButtonClick)="navigateView(prevView)"
986
+ (nextButtonClick)="navigateView(nextView)"
936
987
  >
937
988
  </kendo-calendar-header>
938
989
  <kendo-calendar-horizontal
939
990
  [activeView]="activeViewEnum"
940
- [isActive]="isActive || isHovered"
991
+ [isActive]="isActive || (isHovered && !isHeaderActive)"
941
992
  [cellTemplateRef]="activeCellTemplate()?.templateRef"
942
993
  [weekNumberTemplateRef]="weekNumberTemplate?.templateRef"
943
994
  [cellUID]="cellUID"
@@ -16,6 +16,7 @@ export declare class CenturyViewService implements ViewService {
16
16
  isInArray(date: Date, dates: Date[]): boolean;
17
17
  isInRange(candidate: Date, min: Date, max: Date): boolean;
18
18
  beginningOfPeriod(date: Date): Date;
19
+ lastDayOfPeriod(date: Date): Date;
19
20
  isRangeStart(value: Date): boolean;
20
21
  move(value: Date, action: Action): Date;
21
22
  cellTitle(value: Date): string;
@@ -5,7 +5,7 @@
5
5
  import * as tslib_1 from "tslib";
6
6
  /* tslint:disable:object-literal-sort-keys */
7
7
  import { Injectable } from '@angular/core';
8
- import { addDecades, addCenturies, cloneDate, durationInCenturies, firstYearOfDecade, firstDecadeOfCentury, lastDecadeOfCentury, createDate } from '@progress/kendo-date-math';
8
+ import { addDecades, addCenturies, cloneDate, durationInCenturies, firstYearOfDecade, firstDecadeOfCentury, lastDecadeOfCentury, createDate, lastYearOfDecade, lastMonthOfYear, lastDayOfMonth } from '@progress/kendo-date-math';
9
9
  import { Action } from '../models/navigation-action.enum';
10
10
  import { EMPTY_SELECTIONRANGE } from '../models/selection-range.interface';
11
11
  import { getToday, isInSelectionRange, range } from '../../util';
@@ -115,6 +115,12 @@ let CenturyViewService = class CenturyViewService {
115
115
  const firstYear = firstYearOfDecade(firstDecadeOfCentury(date));
116
116
  return createDate(firstYear.getFullYear(), 0, 1);
117
117
  }
118
+ lastDayOfPeriod(date) {
119
+ const decade = lastDecadeOfCentury(date);
120
+ const year = lastYearOfDecade(decade);
121
+ const month = lastMonthOfYear(year);
122
+ return lastDayOfMonth(month);
123
+ }
118
124
  isRangeStart(value) {
119
125
  return value.getFullYear() % 1000 === 0;
120
126
  }
@@ -16,6 +16,7 @@ export declare class DecadeViewService implements ViewService {
16
16
  isInArray(date: Date, dates: Date[]): boolean;
17
17
  isInRange(candidate: Date, min: Date, max: Date): boolean;
18
18
  beginningOfPeriod(date: Date): Date;
19
+ lastDayOfPeriod(date: Date): Date;
19
20
  isRangeStart(value: Date): boolean;
20
21
  move(value: Date, action: Action): Date;
21
22
  cellTitle(value: Date): string;
@@ -5,7 +5,7 @@
5
5
  import * as tslib_1 from "tslib";
6
6
  /* tslint:disable:object-literal-sort-keys */
7
7
  import { Injectable } from '@angular/core';
8
- import { addDecades, addYears, cloneDate, durationInDecades, firstYearOfDecade, lastYearOfDecade, createDate } from '@progress/kendo-date-math';
8
+ import { addDecades, addYears, cloneDate, durationInDecades, firstYearOfDecade, lastYearOfDecade, createDate, lastMonthOfYear, lastDayOfMonth } from '@progress/kendo-date-math';
9
9
  import { Action } from '../models/navigation-action.enum';
10
10
  import { EMPTY_SELECTIONRANGE } from '../models/selection-range.interface';
11
11
  import { getToday, isInSelectionRange, range } from '../../util';
@@ -115,6 +115,11 @@ let DecadeViewService = class DecadeViewService {
115
115
  const firstYear = firstYearOfDecade(date);
116
116
  return createDate(firstYear.getFullYear(), 0, 1);
117
117
  }
118
+ lastDayOfPeriod(date) {
119
+ const year = lastYearOfDecade(date);
120
+ const month = lastMonthOfYear(year);
121
+ return lastDayOfMonth(month);
122
+ }
118
123
  isRangeStart(value) {
119
124
  return value.getFullYear() % 100 === 0;
120
125
  }
@@ -20,6 +20,7 @@ export declare class MonthViewService implements ViewService {
20
20
  isInArray(date: Date, dates: Date[]): boolean;
21
21
  isInRange(candidate: Date, min: Date, max: Date): boolean;
22
22
  beginningOfPeriod(date: Date): Date;
23
+ lastDayOfPeriod(date: Date): Date;
23
24
  isRangeStart(value: Date): boolean;
24
25
  move(value: Date, action: Action): Date;
25
26
  cellTitle(value: Date): string;
@@ -122,6 +122,9 @@ let MonthViewService = class MonthViewService {
122
122
  }
123
123
  return createDate(date.getFullYear(), date.getMonth(), 1);
124
124
  }
125
+ lastDayOfPeriod(date) {
126
+ return lastDayOfMonth(date);
127
+ }
125
128
  isRangeStart(value) {
126
129
  return !value.getMonth();
127
130
  }
@@ -19,6 +19,7 @@ export declare class YearViewService implements ViewService {
19
19
  isInArray(date: Date, dates: Date[]): boolean;
20
20
  isInRange(candidate: Date, min: Date, max: Date): boolean;
21
21
  beginningOfPeriod(date: Date): Date;
22
+ lastDayOfPeriod(date: Date): Date;
22
23
  isRangeStart(value: Date): boolean;
23
24
  move(value: Date, action: Action): Date;
24
25
  cellTitle(value: Date): string;
@@ -6,7 +6,7 @@ import * as tslib_1 from "tslib";
6
6
  /* tslint:disable:object-literal-sort-keys */
7
7
  import { Injectable } from '@angular/core';
8
8
  import { IntlService } from '@progress/kendo-angular-intl';
9
- import { addMonths, addYears, cloneDate, createDate, durationInYears, firstMonthOfYear, lastMonthOfYear } from '@progress/kendo-date-math';
9
+ import { addMonths, addYears, cloneDate, createDate, durationInYears, firstMonthOfYear, lastDayOfMonth, lastMonthOfYear } from '@progress/kendo-date-math';
10
10
  import { Action } from '../models/navigation-action.enum';
11
11
  import { EMPTY_SELECTIONRANGE } from '../models/selection-range.interface';
12
12
  import { getToday, isInSelectionRange, range } from '../../util';
@@ -136,6 +136,10 @@ let YearViewService = class YearViewService {
136
136
  }
137
137
  return createDate(date.getFullYear(), 0, 1);
138
138
  }
139
+ lastDayOfPeriod(date) {
140
+ const month = lastMonthOfYear(date);
141
+ return lastDayOfMonth(month);
142
+ }
139
143
  isRangeStart(value) {
140
144
  return value.getFullYear() % 10 === 0;
141
145
  }
@@ -297,7 +297,11 @@ ViewListComponent = tslib_1.__decorate([
297
297
  (scrollChange)="scrollChange($event)"
298
298
  (activeIndexChange)="setActiveDate($event)"
299
299
  >
300
- <table class="k-calendar-table" #list>
300
+ <table
301
+ #list
302
+ role="grid"
303
+ class="k-calendar-table"
304
+ >
301
305
  <colgroup><col *ngFor="let _ of cols" /></colgroup>
302
306
 
303
307
  <tbody class="k-calendar-tbody"
@@ -154,11 +154,13 @@ export declare class DateInputComponent implements OnInit, ControlValueAccessor,
154
154
  /**
155
155
  * Specifies the biggest date that is valid
156
156
  * ([see example]({% slug dateranges_dateinput %})).
157
+ * By default, the `max` value is `2099-12-31`.
157
158
  */
158
159
  max: Date;
159
160
  /**
160
161
  * Specifies the smallest date that is valid
161
162
  * ([see example]({% slug dateranges_dateinput %})).
163
+ * By default, the `min` value is `1900-1-1`.
162
164
  */
163
165
  min: Date;
164
166
  /**
@@ -181,11 +181,13 @@ export declare class DatePickerComponent implements ControlValueAccessor, OnInit
181
181
  /**
182
182
  * Specifies the smallest valid date
183
183
  * ([see example]({% slug dateranges_datepicker %})).
184
+ * By default, the `min` value is `1900-1-1`.
184
185
  */
185
186
  min: Date;
186
187
  /**
187
188
  * Specifies the biggest valid date
188
189
  * ([see example]({% slug dateranges_datepicker %})).
190
+ * By default, the `max` value is `2099-12-31`.
189
191
  */
190
192
  max: Date;
191
193
  /**
@@ -28,7 +28,7 @@ import { HeaderTitleTemplateDirective } from '../calendar/templates/header-title
28
28
  import { NavigationItemTemplateDirective } from '../calendar/templates/navigation-item-template.directive';
29
29
  import { PickerService } from '../common/picker.service';
30
30
  import { DisabledDatesService } from '../calendar/services/disabled-dates.service';
31
- import { noop, isValidRange, setTime, isWindowAvailable } from '../util';
31
+ import { noop, isValidRange, setTime, isWindowAvailable, isTabExitingCalendar } from '../util';
32
32
  import { TOUCH_ENABLED } from '../touch-enabled';
33
33
  import { requiresZoneOnBlur, currentFocusTarget } from '../common/utils';
34
34
  import { fromEvent } from 'rxjs';
@@ -121,11 +121,13 @@ let DatePickerComponent = DatePickerComponent_1 = class DatePickerComponent {
121
121
  /**
122
122
  * Specifies the smallest valid date
123
123
  * ([see example]({% slug dateranges_datepicker %})).
124
+ * By default, the `min` value is `1900-1-1`.
124
125
  */
125
126
  this.min = cloneDate(MIN_DATE);
126
127
  /**
127
128
  * Specifies the biggest valid date
128
129
  * ([see example]({% slug dateranges_datepicker %})).
130
+ * By default, the `max` value is `2099-12-31`.
129
131
  */
130
132
  this.max = cloneDate(MAX_DATE);
131
133
  /**
@@ -629,7 +631,7 @@ let DatePickerComponent = DatePickerComponent_1 = class DatePickerComponent {
629
631
  * @hidden
630
632
  */
631
633
  handleKeydown(e) {
632
- const { altKey, keyCode } = e;
634
+ const { altKey, shiftKey, keyCode, target } = e;
633
635
  if (keyCode === Keys.Escape) {
634
636
  this.show = false;
635
637
  }
@@ -641,7 +643,7 @@ let DatePickerComponent = DatePickerComponent_1 = class DatePickerComponent {
641
643
  this.show = false;
642
644
  }
643
645
  }
644
- if (keyCode === Keys.Tab && this.show && this.calendar.isActive) {
646
+ if (keyCode === Keys.Tab && this.show && this.calendar.isActive && isTabExitingCalendar(this.calendarType, target, shiftKey)) {
645
647
  this.input.focus();
646
648
  this.show = false;
647
649
  }
@@ -19,8 +19,8 @@ export class DateRangeInput {
19
19
  this.renderer = renderer;
20
20
  this.zone = zone;
21
21
  this.navigateCalendarOnFocus = false;
22
- this.popupSubscriptions = new Subscription(() => { });
23
- this.subscriptions = new Subscription(() => { });
22
+ this.popupSubscriptions = new Subscription();
23
+ this.subscriptions = new Subscription();
24
24
  }
25
25
  get isActiveEnd() {
26
26
  return this.dateRangeService.activeRangeEnd === this.activeRangeEnd;
@@ -69,7 +69,7 @@ export class DateRangeInput {
69
69
  }
70
70
  unsubscribePopup() {
71
71
  this.popupSubscriptions.unsubscribe();
72
- this.popupSubscriptions = new Subscription(() => { });
72
+ this.popupSubscriptions = new Subscription();
73
73
  }
74
74
  activate() {
75
75
  this.dateRangeService.setActiveRangeEnd(this.activeRangeEnd);
@@ -84,8 +84,8 @@ let DateRangePopupComponent = class DateRangePopupComponent {
84
84
  * @hidden
85
85
  */
86
86
  this.popupUID = guid();
87
- this.calendarSubscriptions = new Subscription(() => { });
88
- this.popupSubscriptions = new Subscription(() => { });
87
+ this.calendarSubscriptions = new Subscription();
88
+ this.popupSubscriptions = new Subscription();
89
89
  this.resolvedPromise = Promise.resolve();
90
90
  }
91
91
  /**
@@ -38,7 +38,7 @@ let DateRangeSelectionDirective = class DateRangeSelectionDirective {
38
38
  * the section on [events]({% slug overview_multiviewcalendar %}#toc-events).
39
39
  */
40
40
  this.selectionRangeChange = new EventEmitter();
41
- this.calendarSubscriptions = new Subscription(() => { });
41
+ this.calendarSubscriptions = new Subscription();
42
42
  this.dateRangeService = this.dateRangeService || new DateRangeService();
43
43
  renderer.setAttribute(element.nativeElement, 'aria-multiselectable', 'true');
44
44
  }