1
1
import React , { Component } from 'react' ;
2
- import { Nav , Navbar , NavbarBrand , NavbarToggler , Collapse , NavItem , Jumbotron } from "reactstrap" ;
2
+
3
+ import {
4
+ Nav , Navbar , NavbarBrand , NavbarToggler , Collapse , NavItem , Jumbotron ,
5
+ Button , Modal , ModalBody , ModalHeader , FormGroup , Label , Input , Form
6
+ } from "reactstrap" ;
7
+
3
8
import { NavLink } from 'react-router-dom' ;
4
9
5
10
class Header extends Component {
@@ -8,9 +13,13 @@ class Header extends Component{
8
13
super ( props ) ;
9
14
10
15
this . state = {
11
- isNavOpen : false
16
+ isNavOpen : false ,
17
+ isModalOpen : false
12
18
} ;
19
+
13
20
this . toggleNav = this . toggleNav . bind ( this ) ;
21
+ this . toggleModal = this . toggleModal . bind ( this ) ;
22
+ this . handleLogin = this . handleLogin . bind ( this ) ;
14
23
}
15
24
16
25
toggleNav ( ) {
@@ -19,12 +28,26 @@ class Header extends Component{
19
28
} ) ;
20
29
}
21
30
31
+ toggleModal ( ) {
32
+ this . setState ( {
33
+ isModalOpen : ! this . state . isModalOpen
34
+ } ) ;
35
+ }
36
+
37
+ handleLogin ( event ) {
38
+ this . toggleModal ( ) ;
39
+ alert ( "Username: " + this . username . value + " Password: " + this . password . value
40
+ + " Remember: " + this . remember . checked ) ;
41
+ event . preventDefault ( ) ;
42
+ }
43
+
22
44
render ( ) {
23
45
return (
24
46
// react fragment
25
47
// <>
26
48
// </>
27
49
< React . Fragment >
50
+
28
51
< Navbar dark expand = "md" >
29
52
< div className = "container" >
30
53
@@ -60,7 +83,15 @@ class Header extends Component{
60
83
</ NavLink >
61
84
</ NavItem >
62
85
63
- </ Nav >
86
+ </ Nav >
87
+
88
+ < Nav className = "ml-auto" navbar >
89
+ < NavItem >
90
+ < Button outline onClick = { this . toggleModal } >
91
+ < span className = "fa fa-sign-in fa-lg" > </ span > Login
92
+ </ Button >
93
+ </ NavItem >
94
+ </ Nav >
64
95
</ Collapse >
65
96
</ div >
66
97
</ Navbar >
@@ -79,6 +110,51 @@ class Header extends Component{
79
110
</ div >
80
111
</ div >
81
112
</ Jumbotron >
113
+
114
+ { /* login Modal */ }
115
+ < Modal isOpen = { this . state . isModalOpen } toggle = { this . toggleModal } >
116
+ < ModalHeader toggle = { this . toggleModal } > Login </ ModalHeader >
117
+ < ModalBody >
118
+ { /* uncontrol form */ }
119
+ < Form onSubmit = { this . handleLogin } >
120
+ { /* username */ }
121
+ < FormGroup >
122
+ < Label htmlFor = "username" > Username</ Label >
123
+ < Input type = "text" id = "username" name = "username"
124
+ innerRef = { ( input ) => this . username = input }
125
+ />
126
+ </ FormGroup >
127
+
128
+ { /* pass */ }
129
+ < FormGroup >
130
+ < Label htmlFor = "password" > Password</ Label >
131
+ < Input type = "password" id = "password" name = "password"
132
+ innerRef = { ( input ) => this . password = input }
133
+
134
+ />
135
+ </ FormGroup >
136
+
137
+ { /* checkbox */ }
138
+ < FormGroup check >
139
+ < Label check >
140
+ < Input type = "checkbox" name = "remember"
141
+ innerRef = { ( input ) => this . remember = input }
142
+
143
+ />
144
+ Remember me
145
+ </ Label >
146
+ </ FormGroup >
147
+
148
+ < FormGroup >
149
+ < Button type = "submit" value = "submit" color = "primary" >
150
+ login
151
+ </ Button >
152
+ </ FormGroup >
153
+
154
+ </ Form >
155
+ </ ModalBody >
156
+ </ Modal >
157
+
82
158
</ React . Fragment >
83
159
) ;
84
160
}
0 commit comments