register new

This commit is contained in:
enggar_ganteng 2019-01-29 04:36:57 +07:00
parent eea15c3902
commit 5a45cc39b0
2 changed files with 297 additions and 112 deletions

View File

@ -18,6 +18,7 @@ import { Link } from 'react-router-dom'
import { inject, observer } from "mobx-react";
import schema from 'async-validator'
import { startCase } from 'lodash';
import { Upload, Icon, message } from 'antd';
@inject('appstate')
@observer
@ -31,7 +32,17 @@ class RegisterPage extends React.Component{
showPassword: false,
showConfirmPassword: false,
openDialog: false,
isLoading : false
isLoading: false,
no_ktp: '',
upload_ktp: '',
upload_photo: '',
address: '',
province: '',
city: '',
district: '',
sub_district: '',
zip_code: '',
};
constructor(props) {
@ -111,8 +122,50 @@ class RegisterPage extends React.Component{
// });
};
handleChangeUploadKtp = (info) => {
if (info.file.status === 'uploading') {
this.setState({ loading: true });
return;
}
if (info.file.status === 'done') {
// Get this url from response in real world.
getBase64(info.file.originFileObj, imageUrl => this.setState({
upload_ktp,
loading: false,
}));
}
}
handleChangeUploadPhoto = (info) => {
if (info.file.status === 'uploading') {
this.setState({ loading: true });
return;
}
if (info.file.status === 'done') {
// Get this url from response in real world.
getBase64(info.file.originFileObj, imageUrl => this.setState({
upload_photo,
loading: false,
}));
}
}
render() {
const { classes } = this.props;
const uploadButtonKtp = (
<div>
<Icon type={this.state.loading ? 'loading' : 'plus'} />
<div className="ant-upload-text">Upload KTP</div>
</div>
);
const uploadButtonPhoto = (
<div>
<Icon type={this.state.loading ? 'loading' : 'plus'} />
<div className="ant-upload-text">Upload Photo</div>
</div>
);
const upload_ktp = this.state.upload_ktp;
const upload_photo = this.state.upload_photo;
return (
<div className={classes.container}>
{/*<AlertSuccess open={appStore.global_ui.openSuccess} onClose={()=>appStore.global_ui.closeAlertSuccess()}/>*/}
@ -121,10 +174,10 @@ class RegisterPage extends React.Component{
<Grid item xs={12} className={classes.logoContainer}>
<img src={require('../../../../assets/images/logo_new.png')} className={classes.logo} />
</Grid>
<Grid item xs={12} sm={12} md={10} lg={6} className={classes.registerContainer}>
<Grid item xs={12} sm={12} md={10} lg={10} className={classes.registerContainer}>
<Grid container spacing={24} className={classes.registerPaper}>
<Hidden smDown>
<Grid item xs={6}>
<Grid item xs={5}>
<img src={require('../../../../assets/images/register_image_2.png')} width={"80%"} />
<Typography style={{ color: '#FFF' }} variant={"h6"}>
Redeem point, Get Your Item!
@ -134,7 +187,7 @@ class RegisterPage extends React.Component{
</Typography>
</Grid>
</Hidden>
<Grid item xs={12} sm={12} md={6} style={{paddingLeft : 50,paddingRight : 50}}>
<Grid item xs={12} sm={12} md={7} style={{ paddingLeft: 50, paddingRight: 50 }}>
<Paper className={classes.formRegister}>
<Typography variant="h6" gutterBottom>
Register Now
@ -142,6 +195,12 @@ class RegisterPage extends React.Component{
<Typography variant="subtitle2" gutterBottom>
Already have an account? <Link to={"/login"} replace>Back to Login</Link>
</Typography>
<div style={{
display: 'flex',
flexDirection: 'row'
}}>
<Grid container spacing={12}>
<Grid item xs={12} sm={12} md={6} style={{ paddingLeft: 5, paddingRight: 5 }}>
<TextField
id="name"
label="Full name"
@ -150,7 +209,10 @@ class RegisterPage extends React.Component{
margin="normal"
type={"text"}
variant="outlined"
fullWidth
/>
</Grid>
<Grid item xs={12} sm={12} md={6} style={{ paddingLeft: 5, paddingRight: 5 }}>
<TextField
id="phone"
label="Phone Number"
@ -159,7 +221,11 @@ class RegisterPage extends React.Component{
margin="normal"
type={"number"}
variant="outlined"
fullWidth
/>
</Grid>
<Grid item xs={12} sm={12} md={6} style={{ paddingLeft: 5, paddingRight: 5 }}>
<TextField
id="email"
label="Email"
@ -167,7 +233,118 @@ class RegisterPage extends React.Component{
onChange={this.handleChange('email')}
margin="normal"
variant="outlined"
fullWidth
/>
</Grid>
<Grid item xs={12} sm={12} md={6} style={{ paddingLeft: 5, paddingRight: 5 }}>
<TextField
id="ktp"
label="Nomor KTP"
value={this.state.ktp}
onChange={this.handleChange('ktp')}
margin="normal"
type={"number"}
variant="outlined"
fullWidth
/>
</Grid>
<Grid item xs={12} sm={12} md={6} style={{ paddingLeft: 5, paddingRight: 5,paddingTop:16 }}>
<Upload
name="avatar"
listType="picture-card"
className="avatar-uploader"
showUploadList={false}
action="//jsonplaceholder.typicode.com/posts/"
onChange={this.handleChangeUploadKtp}
>
{upload_ktp ? <img src={upload_ktp} alt="avatar" /> : uploadButtonKtp}
</Upload>
</Grid>
<Grid item xs={12} sm={12} md={6} style={{ paddingLeft: 5, paddingRight: 5, paddingTop:16 }}>
<Upload
style={{ marginTop: 16, marginBottom: 8 }}
name="avatar"
listType="picture-card"
className="avatar-uploader"
showUploadList={false}
action="//jsonplaceholder.typicode.com/posts/"
onChange={this.handleChangeUploadPhoto}
>
{upload_photo ? <img src={upload_photo} alt="avatar" /> : uploadButtonPhoto}
</Upload>
</Grid>
<Grid item xs={12} sm={12} md={6} style={{ paddingLeft: 5, paddingRight: 5 }}>
<TextField
id="address"
label="Address"
value={this.state.address}
onChange={this.handleChange('address')}
margin="normal"
variant="outlined"
fullWidth
/>
</Grid>
<Grid item xs={12} sm={12} md={6} style={{ paddingLeft: 5, paddingRight: 5 }}>
<TextField
id="province"
label="Province"
value={this.state.province}
onChange={this.handleChange('province')}
margin="normal"
variant="outlined"
fullWidth
/>
</Grid>
<Grid item xs={12} sm={12} md={6} style={{ paddingLeft: 5, paddingRight: 5 }}>
<TextField
id="city"
label="City"
value={this.state.city}
onChange={this.handleChange('city')}
margin="normal"
variant="outlined"
fullWidth
/>
</Grid>
<Grid item xs={12} sm={12} md={6} style={{ paddingLeft: 5, paddingRight: 5 }}>
<TextField
id="district"
label="District"
value={this.state.district}
onChange={this.handleChange('district')}
margin="normal"
variant="outlined"
fullWidth
/>
</Grid>
<Grid item xs={12} sm={12} md={6} style={{ paddingLeft: 5, paddingRight: 5 }}>
<TextField
id="sub_district"
label="Sub district"
value={this.state.sub_district}
onChange={this.handleChange('sub_district')}
margin="normal"
variant="outlined"
fullWidth
/>
</Grid>
<Grid item xs={12} sm={12} md={6} style={{ paddingLeft: 5, paddingRight: 5 }}>
<TextField
id="zip_code"
label="Zip Code"
value={this.state.zip_code}
onChange={this.handleChange('zip_code')}
margin="normal"
variant="outlined"
fullWidth
/>
</Grid>
<Grid item xs={12} sm={12} md={6} style={{ paddingLeft: 5, paddingRight: 5 }}>
<TextField
id="password"
label="Password"
@ -175,8 +352,8 @@ class RegisterPage extends React.Component{
onChange={this.handleChange('password')}
margin="normal"
type={this.state.showPassword ? 'text' : 'password'}
fullWidth
variant="outlined"
fullWidth
InputProps={{
endAdornment: (
<InputAdornment position="end">
@ -190,6 +367,8 @@ class RegisterPage extends React.Component{
),
}}
/>
</Grid>
<Grid item xs={12} sm={12} md={6} style={{ paddingLeft: 5, paddingRight: 5 }}>
<TextField
id="confirmPassword"
label="Re-type Password"
@ -212,6 +391,11 @@ class RegisterPage extends React.Component{
),
}}
/>
</Grid>
</Grid>
</div>
<div style={{ padding: 5, marginTop: 20 }}>
<Button fullWidth variant="contained" style={{ backgroundColor: '#ffeb3b' }} onClick={this.register} disabled={this.state.full_name == '' || this.state.email == '' || this.state.password == '' || this.state.password != this.state.confirmPassword}>
{this.state.isLoading ? <CircularProgress className={classes.progress} /> : "Sign Up"}

View File

@ -5,7 +5,8 @@ export const styles = theme => ({
flexGrow : 1,
height : '100vh',
backgroundColor:'#024f8e',
marginTop: '-56px'
marginTop: '-56px',
marginBottom:50
},
gridContainer : {
flex :1,
@ -32,5 +33,5 @@ export const styles = theme => ({
textAlign : 'center',
background : yellow['500'],
padding : 20
}
},
});