8
8
9
9
import { Inject , Injectable , Optional } from '@angular/core' ;
10
10
import { DateAdapter , MAT_DATE_LOCALE } from '@angular/material' ;
11
- import moment from 'moment' ;
11
+
12
+ // Depending on whether rollup is used, moment needs to be imported differently.
13
+ // TODO(mmalerba): See if we can clean this up at some point.
14
+ import { default as _rollupMoment , Moment } from 'moment' ;
15
+ import * as _moment from 'moment' ;
16
+ const moment = _rollupMoment || _moment ;
12
17
13
18
14
19
/** Creates an array and fills it with values. */
@@ -23,9 +28,9 @@ function range<T>(length: number, valueFunction: (index: number) => T): T[] {
23
28
24
29
/** Adapts Moment.js Dates for use with Angular Material. */
25
30
@Injectable ( )
26
- export class MomentDateAdapter extends DateAdapter < moment . Moment > {
27
- // Note: all of the methods that accept a `moment. Moment` input parameter immediately call
28
- // `this.clone` on it. This is to ensure that we're working with a `moment. Moment` that has the
31
+ export class MomentDateAdapter extends DateAdapter < Moment > {
32
+ // Note: all of the methods that accept a `Moment` input parameter immediately call
33
+ // `this.clone` on it. This is to ensure that we're working with a `Moment` that has the
29
34
// correct locale setting while avoiding mutating the original object passed to us.
30
35
31
36
private _localeData : {
@@ -61,19 +66,19 @@ export class MomentDateAdapter extends DateAdapter<moment.Moment> {
61
66
moment . locale ( globalLocale ) ;
62
67
}
63
68
64
- getYear ( date : moment . Moment ) : number {
69
+ getYear ( date : Moment ) : number {
65
70
return this . clone ( date ) . year ( ) ;
66
71
}
67
72
68
- getMonth ( date : moment . Moment ) : number {
73
+ getMonth ( date : Moment ) : number {
69
74
return this . clone ( date ) . month ( ) ;
70
75
}
71
76
72
- getDate ( date : moment . Moment ) : number {
77
+ getDate ( date : Moment ) : number {
73
78
return this . clone ( date ) . date ( ) ;
74
79
}
75
80
76
- getDayOfWeek ( date : moment . Moment ) : number {
81
+ getDayOfWeek ( date : Moment ) : number {
77
82
return this . clone ( date ) . day ( ) ;
78
83
}
79
84
@@ -96,23 +101,23 @@ export class MomentDateAdapter extends DateAdapter<moment.Moment> {
96
101
return this . _localeData . narrowDaysOfWeek ;
97
102
}
98
103
99
- getYearName ( date : moment . Moment ) : string {
104
+ getYearName ( date : Moment ) : string {
100
105
return this . clone ( date ) . format ( 'YYYY' ) ;
101
106
}
102
107
103
108
getFirstDayOfWeek ( ) : number {
104
109
return this . _localeData . firstDayOfWeek ;
105
110
}
106
111
107
- getNumDaysInMonth ( date : moment . Moment ) : number {
112
+ getNumDaysInMonth ( date : Moment ) : number {
108
113
return this . clone ( date ) . daysInMonth ( ) ;
109
114
}
110
115
111
- clone ( date : moment . Moment ) : moment . Moment {
116
+ clone ( date : Moment ) : Moment {
112
117
return date . clone ( ) . locale ( this . locale ) ;
113
118
}
114
119
115
- createDate ( year : number , month : number , date : number ) : moment . Moment {
120
+ createDate ( year : number , month : number , date : number ) : Moment {
116
121
// Check for invalid month and date (except upper bound on date which we have to check after
117
122
// creating the Date).
118
123
if ( month < 0 || month > 11 ) {
@@ -133,46 +138,46 @@ export class MomentDateAdapter extends DateAdapter<moment.Moment> {
133
138
return result ;
134
139
}
135
140
136
- today ( ) : moment . Moment {
141
+ today ( ) : Moment {
137
142
return moment ( ) . locale ( this . locale ) ;
138
143
}
139
144
140
- parse ( value : any , parseFormat : string | string [ ] ) : moment . Moment | null {
145
+ parse ( value : any , parseFormat : string | string [ ] ) : Moment | null {
141
146
if ( value && typeof value == 'string' ) {
142
147
return moment ( value , parseFormat , this . locale ) ;
143
148
}
144
149
return value ? moment ( value ) . locale ( this . locale ) : null ;
145
150
}
146
151
147
- format ( date : moment . Moment , displayFormat : string ) : string {
152
+ format ( date : Moment , displayFormat : string ) : string {
148
153
date = this . clone ( date ) ;
149
154
if ( ! this . isValid ( date ) ) {
150
155
throw Error ( 'MomentDateAdapter: Cannot format invalid date.' ) ;
151
156
}
152
157
return date . format ( displayFormat ) ;
153
158
}
154
159
155
- addCalendarYears ( date : moment . Moment , years : number ) : moment . Moment {
160
+ addCalendarYears ( date : Moment , years : number ) : Moment {
156
161
return this . clone ( date ) . add ( { years} ) ;
157
162
}
158
163
159
- addCalendarMonths ( date : moment . Moment , months : number ) : moment . Moment {
164
+ addCalendarMonths ( date : Moment , months : number ) : Moment {
160
165
return this . clone ( date ) . add ( { months} ) ;
161
166
}
162
167
163
- addCalendarDays ( date : moment . Moment , days : number ) : moment . Moment {
168
+ addCalendarDays ( date : Moment , days : number ) : Moment {
164
169
return this . clone ( date ) . add ( { days} ) ;
165
170
}
166
171
167
- getISODateString ( date : moment . Moment ) : string {
172
+ getISODateString ( date : Moment ) : string {
168
173
return this . clone ( date ) . format ( ) ;
169
174
}
170
175
171
176
isDateInstance ( obj : any ) : boolean {
172
177
return moment . isMoment ( obj ) ;
173
178
}
174
179
175
- isValid ( date : moment . Moment ) : boolean {
180
+ isValid ( date : Moment ) : boolean {
176
181
return this . clone ( date ) . isValid ( ) ;
177
182
}
178
183
}
0 commit comments