@@ -159,6 +159,29 @@ export class MgtAgenda extends MgtTemplatedComponent {
159159 } )
160160 public groupByDay : boolean ;
161161
162+ /**
163+ * allows developer to specify preferred timezone that should be used for
164+ * retrieving events from Graph, eg. `Pacific Standard Time`. The preferred timezone for
165+ * the current user can be retrieved by calling `me/mailboxSettings` and
166+ * retrieving the value of the `timeZone` property.
167+ * @type {string }
168+ */
169+ @property ( {
170+ attribute : 'preferred-timezone' ,
171+ type : String
172+ } )
173+ public get preferredTimezone ( ) : string {
174+ return this . _preferredTimezone ;
175+ }
176+ public set preferredTimezone ( value ) {
177+ if ( this . _preferredTimezone === value ) {
178+ return ;
179+ }
180+
181+ this . _preferredTimezone = value ;
182+ this . reloadState ( ) ;
183+ }
184+
162185 /**
163186 * determines width available for agenda component.
164187 * @type {boolean }
@@ -169,6 +192,7 @@ export class MgtAgenda extends MgtTemplatedComponent {
169192 private _days : number = 3 ;
170193 private _groupId : string ;
171194 private _date : string ;
195+ private _preferredTimezone : string ;
172196
173197 constructor ( ) {
174198 super ( ) ;
@@ -494,6 +518,10 @@ export class MgtAgenda extends MgtTemplatedComponent {
494518 request = request . middlewareOptions ( prepScopes ( scope ) ) ;
495519 }
496520
521+ if ( this . preferredTimezone ) {
522+ request = request . header ( 'Prefer' , `outlook.timezone="${ this . preferredTimezone } "` ) ;
523+ }
524+
497525 const results = await request . get ( ) ;
498526
499527 if ( results && results . value ) {
@@ -507,7 +535,7 @@ export class MgtAgenda extends MgtTemplatedComponent {
507535 const end = new Date ( start . getTime ( ) ) ;
508536 end . setDate ( start . getDate ( ) + this . days ) ;
509537 try {
510- const iterator = await getEventsPageIterator ( graph , start , end , this . groupId ) ;
538+ const iterator = await getEventsPageIterator ( graph , start , end , this . groupId , this . preferredTimezone ) ;
511539
512540 if ( iterator && iterator . value ) {
513541 this . events = iterator . value ;
0 commit comments