@@ -43,13 +43,13 @@ import {takeUntil} from 'rxjs/operators/takeUntil';
43
43
preserveWhitespaces : false ,
44
44
changeDetection : ChangeDetectionStrategy . OnPush ,
45
45
} )
46
- export class MatCalendarHeader implements OnDestroy {
46
+ export class MatCalendarHeader < D > implements OnDestroy {
47
47
/** Subject that emits when the component has been destroyed. */
48
48
private _destroyed = new Subject < void > ( ) ;
49
49
50
50
constructor ( private _intl : MatDatepickerIntl ,
51
- @Host ( ) public calendar : MatCalendar < any > ,
52
- @Optional ( ) private _dateAdapter : DateAdapter < any > ,
51
+ @Host ( ) public calendar : MatCalendar < D > ,
52
+ @Optional ( ) private _dateAdapter : DateAdapter < D > ,
53
53
@Optional ( ) @Inject ( MAT_DATE_FORMATS ) private _dateFormats : MatDateFormats ,
54
54
changeDetectorRef : ChangeDetectorRef ) {
55
55
_intl . changes . pipe ( takeUntil ( this . _destroyed ) )
@@ -127,13 +127,27 @@ export class MatCalendarHeader implements OnDestroy {
127
127
return true ;
128
128
}
129
129
return ! this . calendar . minDate ||
130
- ! this . calendar . isSameView ( this . calendar . activeDate , this . calendar . minDate ) ;
130
+ ! this . _isSameView ( this . calendar . activeDate , this . calendar . minDate ) ;
131
131
}
132
132
133
133
/** Whether the next period button is enabled. */
134
134
nextEnabled ( ) : boolean {
135
135
return ! this . calendar . maxDate ||
136
- ! this . calendar . isSameView ( this . calendar . activeDate , this . calendar . maxDate ) ;
136
+ ! this . _isSameView ( this . calendar . activeDate , this . calendar . maxDate ) ;
137
+ }
138
+
139
+ /** Whether the two dates represent the same view in the current view mode (month or year). */
140
+ private _isSameView ( date1 : D , date2 : D ) : boolean {
141
+ if ( this . calendar . currentView == 'month' ) {
142
+ return this . _dateAdapter . getYear ( date1 ) == this . _dateAdapter . getYear ( date2 ) &&
143
+ this . _dateAdapter . getMonth ( date1 ) == this . _dateAdapter . getMonth ( date2 ) ;
144
+ }
145
+ if ( this . calendar . currentView == 'year' ) {
146
+ return this . _dateAdapter . getYear ( date1 ) == this . _dateAdapter . getYear ( date2 ) ;
147
+ }
148
+ // Otherwise we are in 'multi-year' view.
149
+ return Math . floor ( this . _dateAdapter . getYear ( date1 ) / yearsPerPage ) ==
150
+ Math . floor ( this . _dateAdapter . getYear ( date2 ) / yearsPerPage ) ;
137
151
}
138
152
139
153
ngOnDestroy ( ) {
@@ -311,20 +325,6 @@ export class MatCalendar<D> implements AfterContentInit, OnDestroy, OnChanges {
311
325
this . currentView = view ;
312
326
}
313
327
314
- /** Whether the two dates represent the same view in the current view mode (month or year). */
315
- isSameView ( date1 : D , date2 : D ) : boolean {
316
- if ( this . currentView == 'month' ) {
317
- return this . _dateAdapter . getYear ( date1 ) == this . _dateAdapter . getYear ( date2 ) &&
318
- this . _dateAdapter . getMonth ( date1 ) == this . _dateAdapter . getMonth ( date2 ) ;
319
- }
320
- if ( this . currentView == 'year' ) {
321
- return this . _dateAdapter . getYear ( date1 ) == this . _dateAdapter . getYear ( date2 ) ;
322
- }
323
- // Otherwise we are in 'multi-year' view.
324
- return Math . floor ( this . _dateAdapter . getYear ( date1 ) / yearsPerPage ) ==
325
- Math . floor ( this . _dateAdapter . getYear ( date2 ) / yearsPerPage ) ;
326
- }
327
-
328
328
/**
329
329
* @param obj The object to check.
330
330
* @returns The given object if it is both a date instance and valid, otherwise null.
0 commit comments