@@ -2,23 +2,37 @@ import {
2
2
AfterContentInit ,
3
3
ChangeDetectionStrategy ,
4
4
Component ,
5
- ContentChildren ,
6
- forwardRef ,
7
- OnInit ,
8
- QueryList ,
5
+ ContentChildren , EventEmitter ,
6
+ forwardRef , HostListener ,
7
+ OnInit , Output ,
8
+ QueryList , ViewChild ,
9
9
ViewEncapsulation
10
10
} from '@angular/core' ;
11
11
import { NgxMaterialPageLoaderComponent } from './ngx-material-page-loader/ngx-material-page-loader.component' ;
12
12
import { StepperSelectionEvent } from '@angular/cdk/stepper' ;
13
+ import { MatSidenav } from '@angular/material' ;
13
14
14
15
@Component ( {
15
16
selector : 'ngx-material-pages' ,
16
17
templateUrl : './ngx-material-pages.component.html' ,
17
- styleUrls : [ './ngx-material-pages.component.scss' ] ,
18
+ styleUrls : [ './ngx-material-pages.component.scss' ]
18
19
} )
19
20
export class NgxMaterialPagesComponent implements OnInit , AfterContentInit {
20
21
21
- @ContentChildren ( NgxMaterialPageLoaderComponent ) pages : QueryList < NgxMaterialPageLoaderComponent > ;
22
+ @ViewChild ( 'sidenav' )
23
+ sidenav : MatSidenav ;
24
+
25
+ @ContentChildren ( NgxMaterialPageLoaderComponent )
26
+ pages : QueryList < NgxMaterialPageLoaderComponent > ;
27
+
28
+ @Output ( )
29
+ done : EventEmitter < void > = new EventEmitter < void > ( ) ;
30
+
31
+ @Output ( )
32
+ pageChanged : EventEmitter < number > = new EventEmitter < number > ( ) ;
33
+
34
+ // the mode of the sidenav
35
+ navMode = 'side' ;
22
36
23
37
// current page
24
38
index : number ;
@@ -30,35 +44,57 @@ export class NgxMaterialPagesComponent implements OnInit, AfterContentInit {
30
44
this . index = 0 ;
31
45
}
32
46
47
+ private _initSidenavMode ( ) : void {
48
+ if ( window . innerWidth < 768 ) {
49
+ this . navMode = 'over' ;
50
+ }
51
+ }
52
+
33
53
ngOnInit ( ) {
54
+ this . _initSidenavMode ( ) ;
34
55
}
35
56
36
57
ngAfterContentInit ( ) {
37
- console . log ( 'pagesOutlook' , this . pages ) ;
38
58
this . totalPages = this . pages . length ;
39
59
}
40
60
61
+ @HostListener ( 'window:resize' , [ '$event' ] )
62
+ onResize ( event : any ) {
63
+ if ( event . target . innerWidth < 768 ) {
64
+ this . navMode = 'over' ;
65
+ this . sidenav . close ( ) ;
66
+ }
67
+ if ( event . target . innerWidth > 768 ) {
68
+ this . navMode = 'side' ;
69
+ this . sidenav . open ( ) ;
70
+ }
71
+ }
72
+
41
73
/**
42
74
* Go to the previous page if it exists
43
75
*/
44
76
previous ( ) {
45
- console . log ( 'index before' , this . index ) ;
46
77
this . index = this . index === 0 ? 0 : -- this . index ;
47
- console . log ( 'index after' , this . index ) ;
78
+ this . pageChanged . emit ( this . index ) ;
48
79
}
49
80
50
81
/**
51
82
* Go to the next page if it exists
52
83
*/
53
84
next ( ) {
54
- console . log ( 'index before' , this . index ) ;
55
85
this . index = this . index === this . totalPages - 1 ? this . totalPages - 1 : ++ this . index ;
56
- console . log ( 'index after' , this . index ) ;
86
+ this . pageChanged . emit ( this . index ) ;
57
87
}
58
88
89
+
90
+ /**
91
+ * Update the value of the index when a step has been selected.
92
+ * Emit this value for pagechanged's subscribers.
93
+ *
94
+ */
59
95
onStepSelectionChange ( event : StepperSelectionEvent ) {
60
- console . log ( 'event = ' , event ) ;
61
96
this . index = event . selectedIndex ;
97
+ this . pageChanged . emit ( this . index ) ;
62
98
}
63
99
64
100
}
0 commit comments