@@ -113,7 +113,7 @@ export class IgxCalendarComponent extends IgxMonthPickerBase implements AfterVie
113113 }
114114
115115 set monthsViewNumber ( val : number ) {
116- if ( this . _monthsViewNumber === val || val == = 0 ) {
116+ if ( this . _monthsViewNumber === val || val < = 0 ) {
117117 return ;
118118 } else if ( this . _monthsViewNumber < val ) {
119119 for ( let i = this . _monthsViewNumber ; i < val ; i ++ ) {
@@ -348,7 +348,7 @@ export class IgxCalendarComponent extends IgxMonthPickerBase implements AfterVie
348348 */
349349 private defaultDayView = {
350350 value : this . value ,
351- viewDate : this . viewDate ,
351+ viewDate : this . viewDate
352352 } ;
353353
354354 /**
@@ -462,11 +462,11 @@ export class IgxCalendarComponent extends IgxMonthPickerBase implements AfterVie
462462 /**
463463 * @hidden
464464 */
465- public activeViewDecade ( ) {
465+ public activeViewDecade ( args : Date ) {
466466 super . activeViewDecade ( ) ;
467-
468467 requestAnimationFrame ( ( ) => {
469468 if ( this . dacadeView ) {
469+ this . dacadeView . date = args ;
470470 this . dacadeView . el . nativeElement . focus ( ) ;
471471 }
472472 } ) ;
@@ -475,11 +475,12 @@ export class IgxCalendarComponent extends IgxMonthPickerBase implements AfterVie
475475 /**
476476 * @hidden
477477 */
478- public activeViewDecadeKB ( event ) {
479- super . activeViewDecadeKB ( event ) ;
478+ public activeViewDecadeKB ( event , args : Date ) {
479+ super . activeViewDecadeKB ( event , args ) ;
480480
481481 requestAnimationFrame ( ( ) => {
482482 if ( this . dacadeView ) {
483+ this . dacadeView . date = args ;
483484 this . dacadeView . el . nativeElement . focus ( ) ;
484485 }
485486 } ) ;
@@ -520,6 +521,7 @@ export class IgxCalendarComponent extends IgxMonthPickerBase implements AfterVie
520521 public viewChanged ( event ) {
521522 this . viewDate = this . calendarModel . timedelta ( event , 'month' , 0 ) ;
522523 }
524+
523525 /**
524526 * @hidden
525527 */
@@ -528,27 +530,34 @@ export class IgxCalendarComponent extends IgxMonthPickerBase implements AfterVie
528530 this . activeView = CalendarView . DEFAULT ;
529531
530532 requestAnimationFrame ( ( ) => {
531- this . monthsBtn . nativeElement . focus ( ) ;
533+ if ( this . monthsBtn ) { this . monthsBtn . nativeElement . focus ( ) ; }
532534 } ) ;
533535 }
534536
535537 /**
536538 * @hidden
537539 */
538- public activeViewYear ( ) : void {
540+ public activeViewYear ( args : Date , event ) : void {
539541 this . activeView = CalendarView . YEAR ;
540542 requestAnimationFrame ( ( ) => {
541- this . monthsView . dates . find ( ( date ) => date . isCurrentMonth ) . nativeElement . focus ( ) ;
543+ this . monthsView . date = args ;
544+ this . focusMonth ( event . target ) ;
542545 } ) ;
543546 }
544547
548+ private focusMonth ( target : HTMLElement ) {
549+ const month = this . monthsView . dates . find ( ( date ) =>
550+ date . index === parseInt ( target . parentElement . attributes [ 'data-month' ] . value , 10 ) ) ;
551+ if ( month ) { month . nativeElement . focus ( ) ; }
552+ }
553+
545554 /**
546555 * @hidden
547556 */
548- public activeViewYearKB ( event ) : void {
557+ public activeViewYearKB ( args : Date , event ) : void {
549558 if ( event . key === KEYS . SPACE || event . key === KEYS . SPACE_IE || event . key === KEYS . ENTER ) {
550559 event . preventDefault ( ) ;
551- this . activeViewYear ( ) ;
560+ this . activeViewYear ( args , event ) ;
552561 }
553562 }
554563
@@ -561,7 +570,10 @@ export class IgxCalendarComponent extends IgxMonthPickerBase implements AfterVie
561570 public deselectDate ( value ?: Date | Date [ ] ) {
562571 super . deselectDate ( value ) ;
563572
564- this . daysView . selectedDates = this . selectedDates ;
573+ this . monthViews . forEach ( ( view ) => {
574+ view . selectedDates = this . selectedDates ;
575+ view . rangeStarted = false ;
576+ } ) ;
565577 this . _onChangeCallback ( this . selectedDates ) ;
566578 }
567579
@@ -573,6 +585,14 @@ export class IgxCalendarComponent extends IgxMonthPickerBase implements AfterVie
573585 return date ;
574586 }
575587
588+ /**
589+ * @hidden
590+ */
591+ public getMonth ( i : number ) : number {
592+ const date = this . calendarModel . timedelta ( this . viewDate , 'month' , i ) ;
593+ return date . getMonth ( ) ;
594+ }
595+
576596 /**
577597 * @hidden
578598 */
@@ -588,6 +608,10 @@ export class IgxCalendarComponent extends IgxMonthPickerBase implements AfterVie
588608 public onKeydownPageUp ( event : KeyboardEvent ) {
589609 event . preventDefault ( ) ;
590610
611+ if ( this . activeView !== CalendarView . DEFAULT ) {
612+ return ;
613+ }
614+
591615 const activeDate = this . daysView . dates . find ( ( date ) => date . nativeElement === document . activeElement ) ;
592616 if ( activeDate ) {
593617 this . daysView . nextDate = new Date ( activeDate . date . date ) ;
@@ -622,7 +646,9 @@ export class IgxCalendarComponent extends IgxMonthPickerBase implements AfterVie
622646 public onKeydownPageDown ( event : KeyboardEvent ) {
623647 event . preventDefault ( ) ;
624648
625- this . nextMonth ( true ) ;
649+ if ( this . activeView !== CalendarView . DEFAULT ) {
650+ return ;
651+ }
626652
627653 const activeDate = this . daysView . dates . find ( ( date ) => date . nativeElement === document . activeElement ) ;
628654 if ( activeDate ) {
@@ -647,6 +673,8 @@ export class IgxCalendarComponent extends IgxMonthPickerBase implements AfterVie
647673 if ( dayItem ) { dayItem . nativeElement . focus ( ) ; }
648674 } ;
649675 }
676+
677+ this . nextMonth ( true ) ;
650678 }
651679
652680 /**
@@ -760,8 +788,8 @@ export class IgxCalendarComponent extends IgxMonthPickerBase implements AfterVie
760788 private generateContext ( value : Date , i ?: number ) {
761789 const formatObject = {
762790 index : i ,
763- monthView : ( ) => this . activeViewYear ( ) ,
764- yearView : ( ) => this . activeViewDecade ( ) ,
791+ monthView : ( ) => this . activeViewYear ( value , event ) ,
792+ yearView : ( ) => this . activeViewDecade ( value ) ,
765793 ...this . calendarModel . formatToParts ( value , this . locale , this . formatOptions ,
766794 [ 'era' , 'year' , 'month' , 'day' , 'weekday' ] )
767795 } ;
0 commit comments