Skip to content

Commit e540995

Browse files
committed
Uncontrolled Forms
1 parent 896eed3 commit e540995

File tree

1 file changed

+79
-3
lines changed

1 file changed

+79
-3
lines changed

confusion/src/components/HeaderComponent.js

+79-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
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+
38
import { NavLink } from 'react-router-dom';
49

510
class Header extends Component{
@@ -8,9 +13,13 @@ class Header extends Component{
813
super(props);
914

1015
this.state={
11-
isNavOpen: false
16+
isNavOpen: false,
17+
isModalOpen: false
1218
};
19+
1320
this.toggleNav = this.toggleNav.bind(this);
21+
this.toggleModal = this.toggleModal.bind(this);
22+
this.handleLogin = this.handleLogin.bind(this);
1423
}
1524

1625
toggleNav(){
@@ -19,12 +28,26 @@ class Header extends Component{
1928
});
2029
}
2130

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+
2244
render(){
2345
return(
2446
// react fragment
2547
// <>
2648
// </>
2749
<React.Fragment>
50+
2851
<Navbar dark expand="md">
2952
<div className="container">
3053

@@ -60,7 +83,15 @@ class Header extends Component{
6083
</NavLink>
6184
</NavItem>
6285

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>
6495
</Collapse>
6596
</div>
6697
</Navbar>
@@ -79,6 +110,51 @@ class Header extends Component{
79110
</div>
80111
</div>
81112
</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+
82158
</React.Fragment>
83159
);
84160
}

0 commit comments

Comments
 (0)