Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
126 changes: 75 additions & 51 deletions client/src/pages/SignUpForm.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,66 +2,90 @@ import React, { Component } from 'react';
import { Link } from 'react-router-dom';

class SignUpForm extends Component {
constructor() {
super();
constructor() {
super();

this.state = {
email: '',
password: '',
name: '',
hasAgreed: false
};
this.state = {
email: '',
password: '',
name: '',
hasAgreed: false,
disabledButtonColor: '#9fcfff',
disabledTextColor: '#808080'
};

this.handleChange = this.handleChange.bind(this);
this.handleSubmit = this.handleSubmit.bind(this);
}
this.handleChange = this.handleChange.bind(this);
this.handleSubmit = this.handleSubmit.bind(this);
}

handleChange(e) {
let target = e.target;
let value = target.type === 'checkbox' ? target.checked : target.value;
let name = target.name;
handleChange(e) {
let target = e.target;
let value = target.type === 'checkbox' ? target.checked : target.value;
let name = target.name;

this.setState({
[name]: value
});
}
this.setState({
[name]: value
});
}

handleSubmit(e) {
e.preventDefault();
handleSubmit(e) {
e.preventDefault();

console.log('The form was submitted with the following data:');
console.log(this.state);
}
console.log('The form was submitted with the following data:');
console.log(this.state);
}

render() {

render() {
return (
let content = null;
if (this.state.email.length && this.state.password.length && this.state.name.length && this.state.hasAgreed) {
content = <button className="FormField__Button mr-20"
onClick={() => { console.log(this.state.isValid) }}
>Sign Up</button>
}
else {
content = <button className="FormField__Button mr-20"
style={
{
backgroundColor: this.state.disabledButtonColor,
color: this.state.disabledTextColor
}
}
disabled
>Sign Up</button>
}

return (
<div className="container">
<div className="FormCenter">
<form onSubmit={this.handleSubmit} className="FormFields">
<div className="FormField">
<label className="FormField__Label" htmlFor="name">Full Name</label>
<input type="text" id="name" className="FormField__Input" placeholder="Enter your full name" name="name" value={this.state.name} onChange={this.handleChange} />
</div>
<div className="FormField">
<label className="FormField__Label" htmlFor="password">Password</label>
<input type="password" id="password" className="FormField__Input" placeholder="Enter your password" name="password" value={this.state.password} onChange={this.handleChange} />
</div>
<div className="FormField">
<label className="FormField__Label" htmlFor="email">E-Mail Address</label>
<input type="email" id="email" className="FormField__Input" placeholder="Enter your email" name="email" value={this.state.email} onChange={this.handleChange} />
</div>
<form onSubmit={this.handleSubmit} className="FormFields">
<div className="FormField">
<label className="FormField__Label" htmlFor="name">Full Name</label>
<input type="text" id="name" className="FormField__Input" placeholder="Enter your full name" name="name" value={this.state.name} onChange={this.handleChange} />
</div>
<div className="FormField">
<label className="FormField__Label" htmlFor="password">Password</label>
<input type="password" id="password" className="FormField__Input" placeholder="Enter your password" name="password" value={this.state.password} onChange={this.handleChange} />
</div>
<div className="FormField">
<label className="FormField__Label" htmlFor="email">E-Mail Address</label>
<input type="email" id="email" className="FormField__Input" placeholder="Enter your email" name="email" value={this.state.email} onChange={this.handleChange} />
</div>

<div className="FormField">
<label className="FormField__CheckboxLabel">
<input className="FormField__Checkbox" type="checkbox" name="hasAgreed" value={this.state.hasAgreed} onChange={this.handleChange} /> I agree all statements in <a href="" className="FormField__TermsLink">terms of service</a>
</label>
</div>
<div className="FormField">
<label className="FormField__CheckboxLabel">
<input className="FormField__Checkbox" type="checkbox" name="hasAgreed" value={this.state.hasAgreed} onChange={this.handleChange} /> I agree all statements in <a href="" className="FormField__TermsLink">terms of service</a>
</label>
</div>

<div className="FormField">
<button className="FormField__Button mr-20">Sign Up</button> <Link to="/sign-in" className="FormField__Link">I'm already member</Link>
</div>
</form>
</div>
);
}
<div className="FormField">
{content}
<Link to="/sign-in" className="FormField__Link">I'm already member</Link>
</div>
</form>
</div>
</div>
);
}
}
export default SignUpForm;