|  | @@ -1,175 +0,0 @@
 | 
	
		
			
				|  |  | -import React, { Component } from 'react';
 | 
	
		
			
				|  |  | -import BasePage from '@/components/Layout/BasePage';
 | 
	
		
			
				|  |  | -import Link from 'next/link';
 | 
	
		
			
				|  |  | -import { Input, CustomInput } from 'reactstrap';
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -import FormValidator from '@/components/Forms/Validator.js';
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -class Register extends Component {
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    state = {
 | 
	
		
			
				|  |  | -        formRegister: {
 | 
	
		
			
				|  |  | -            email: '',
 | 
	
		
			
				|  |  | -            password: '',
 | 
	
		
			
				|  |  | -            password2: '',
 | 
	
		
			
				|  |  | -            terms: false
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -     /**
 | 
	
		
			
				|  |  | -      * Validate input using onChange event
 | 
	
		
			
				|  |  | -      * @param  {String} formName The name of the form in the state object
 | 
	
		
			
				|  |  | -      * @return {Function} a function used for the event
 | 
	
		
			
				|  |  | -      */
 | 
	
		
			
				|  |  | -    validateOnChange = event => {
 | 
	
		
			
				|  |  | -        const input = event.target;
 | 
	
		
			
				|  |  | -        const form = input.form
 | 
	
		
			
				|  |  | -        const value = input.type === 'checkbox' ? input.checked : input.value;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        const result = FormValidator.validate(input);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        this.setState({
 | 
	
		
			
				|  |  | -            [form.name]: {
 | 
	
		
			
				|  |  | -                ...this.state[form.name],
 | 
	
		
			
				|  |  | -                [input.name]: value,
 | 
	
		
			
				|  |  | -                errors: {
 | 
	
		
			
				|  |  | -                    ...this.state[form.name].errors,
 | 
	
		
			
				|  |  | -                    [input.name]: result
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -        });
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    onSubmit = e => {
 | 
	
		
			
				|  |  | -        const form = e.target;
 | 
	
		
			
				|  |  | -        const inputs = [...form.elements].filter(i => ['INPUT', 'SELECT'].includes(i.nodeName))
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        const { errors, hasError } = FormValidator.bulkValidate(inputs)
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        this.setState({
 | 
	
		
			
				|  |  | -            [form.name]: {
 | 
	
		
			
				|  |  | -                ...this.state[form.name],
 | 
	
		
			
				|  |  | -                errors
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -        });
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        console.log(hasError ? 'Form has errors. Check!' : 'Form Submitted!')
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        e.preventDefault()
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    /* Simplify error check */
 | 
	
		
			
				|  |  | -    hasError = (formName, inputName, method) => {
 | 
	
		
			
				|  |  | -        return  this.state[formName] &&
 | 
	
		
			
				|  |  | -                this.state[formName].errors &&
 | 
	
		
			
				|  |  | -                this.state[formName].errors[inputName] &&
 | 
	
		
			
				|  |  | -                this.state[formName].errors[inputName][method]
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    render() {
 | 
	
		
			
				|  |  | -        return (
 | 
	
		
			
				|  |  | -            <div className="block-center mt-4 wd-xl">
 | 
	
		
			
				|  |  | -                {/* START card */}
 | 
	
		
			
				|  |  | -                <div className="card card-flat">
 | 
	
		
			
				|  |  | -                    <div className="card-header text-center bg-dark">
 | 
	
		
			
				|  |  | -                        <a href="">
 | 
	
		
			
				|  |  | -                            <img className="block-center" src="/static/img/logo.png" alt="Logo"/>
 | 
	
		
			
				|  |  | -                        </a>
 | 
	
		
			
				|  |  | -                    </div>
 | 
	
		
			
				|  |  | -                    <div className="card-body">
 | 
	
		
			
				|  |  | -                        <p className="text-center py-2">SIGNUP TO GET INSTANT ACCESS.</p>
 | 
	
		
			
				|  |  | -                        <form className="mb-3" name="formRegister" onSubmit={this.onSubmit}>
 | 
	
		
			
				|  |  | -                            <div className="form-group">
 | 
	
		
			
				|  |  | -                                <label className="text-muted" htmlFor="signupInputEmail1">Email address</label>
 | 
	
		
			
				|  |  | -                                <div className="input-group with-focus">
 | 
	
		
			
				|  |  | -                                    <Input type="email"
 | 
	
		
			
				|  |  | -                                        name="email"
 | 
	
		
			
				|  |  | -                                        className="border-right-0"
 | 
	
		
			
				|  |  | -                                        placeholder="Enter email"
 | 
	
		
			
				|  |  | -                                        invalid={this.hasError('formRegister','email','required')||this.hasError('formRegister','email','email')}
 | 
	
		
			
				|  |  | -                                        onChange={this.validateOnChange}
 | 
	
		
			
				|  |  | -                                        data-validate='["required", "email"]'
 | 
	
		
			
				|  |  | -                                        value={this.state.formRegister.email}/>
 | 
	
		
			
				|  |  | -                                    <div className="input-group-append">
 | 
	
		
			
				|  |  | -                                        <span className="input-group-text text-muted bg-transparent border-left-0">
 | 
	
		
			
				|  |  | -                                            <em className="fa fa-envelope"></em>
 | 
	
		
			
				|  |  | -                                        </span>
 | 
	
		
			
				|  |  | -                                    </div>
 | 
	
		
			
				|  |  | -                                    { this.hasError('formRegister','email','required') && <span className="invalid-feedback">Field is required</span> }
 | 
	
		
			
				|  |  | -                                    { this.hasError('formRegister','email','email') && <span className="invalid-feedback">Field must be valid email</span> }
 | 
	
		
			
				|  |  | -                                </div>
 | 
	
		
			
				|  |  | -                            </div>
 | 
	
		
			
				|  |  | -                            <div className="form-group">
 | 
	
		
			
				|  |  | -                                <label className="text-muted" htmlFor="signupInputPassword1">Password</label>
 | 
	
		
			
				|  |  | -                                <div className="input-group with-focus">
 | 
	
		
			
				|  |  | -                                    <Input type="text"
 | 
	
		
			
				|  |  | -                                        id="id-password"
 | 
	
		
			
				|  |  | -                                        name="password"
 | 
	
		
			
				|  |  | -                                        className="border-right-0"
 | 
	
		
			
				|  |  | -                                        placeholder="Password"
 | 
	
		
			
				|  |  | -                                        invalid={this.hasError('formRegister','password','required')}
 | 
	
		
			
				|  |  | -                                        onChange={this.validateOnChange}
 | 
	
		
			
				|  |  | -                                        data-validate='["required"]'
 | 
	
		
			
				|  |  | -                                        value={this.state.formRegister.password}
 | 
	
		
			
				|  |  | -                                    />
 | 
	
		
			
				|  |  | -                                    <div className="input-group-append">
 | 
	
		
			
				|  |  | -                                        <span className="input-group-text text-muted bg-transparent border-left-0">
 | 
	
		
			
				|  |  | -                                            <em className="fa fa-lock"></em>
 | 
	
		
			
				|  |  | -                                        </span>
 | 
	
		
			
				|  |  | -                                    </div>
 | 
	
		
			
				|  |  | -                                    <span className="invalid-feedback">Field is required</span>
 | 
	
		
			
				|  |  | -                                </div>
 | 
	
		
			
				|  |  | -                            </div>
 | 
	
		
			
				|  |  | -                            <div className="form-group">
 | 
	
		
			
				|  |  | -                                <label className="text-muted" htmlFor="signupInputRePassword1">Retype Password</label>
 | 
	
		
			
				|  |  | -                                <div className="input-group with-focus">
 | 
	
		
			
				|  |  | -                                    <Input type="text" name="password2"
 | 
	
		
			
				|  |  | -                                        className="border-right-0"
 | 
	
		
			
				|  |  | -                                        placeholder="Retype assword"
 | 
	
		
			
				|  |  | -                                        invalid={this.hasError('formRegister','password2','equalto')}
 | 
	
		
			
				|  |  | -                                        onChange={this.validateOnChange}
 | 
	
		
			
				|  |  | -                                        data-validate='["equalto"]'
 | 
	
		
			
				|  |  | -                                        value={this.state.formRegister.password2}
 | 
	
		
			
				|  |  | -                                        data-param="id-password"
 | 
	
		
			
				|  |  | -                                    />
 | 
	
		
			
				|  |  | -                                    <div className="input-group-append">
 | 
	
		
			
				|  |  | -                                        <span className="input-group-text text-muted bg-transparent border-left-0">
 | 
	
		
			
				|  |  | -                                            <em className="fa fa-lock"></em>
 | 
	
		
			
				|  |  | -                                        </span>
 | 
	
		
			
				|  |  | -                                    </div>
 | 
	
		
			
				|  |  | -                                    <span className="invalid-feedback">Field must be equal to previous</span>
 | 
	
		
			
				|  |  | -                                </div>
 | 
	
		
			
				|  |  | -                            </div>
 | 
	
		
			
				|  |  | -                            <CustomInput type="checkbox" id="terms"
 | 
	
		
			
				|  |  | -                                name="terms"
 | 
	
		
			
				|  |  | -                                label="I agree with the terms"
 | 
	
		
			
				|  |  | -                                invalid={this.hasError('formRegister','terms','required')}
 | 
	
		
			
				|  |  | -                                onChange={this.validateOnChange}
 | 
	
		
			
				|  |  | -                                data-validate='["required"]'
 | 
	
		
			
				|  |  | -                                checked={this.state.formRegister.terms}>
 | 
	
		
			
				|  |  | -                                    <span className="invalid-feedback">Field is required</span>
 | 
	
		
			
				|  |  | -                                </CustomInput>
 | 
	
		
			
				|  |  | -                            <button className="btn btn-block btn-primary mt-3" type="submit">Create account</button>
 | 
	
		
			
				|  |  | -                        </form>
 | 
	
		
			
				|  |  | -                        <p className="pt-3 text-center">Have an account?</p>
 | 
	
		
			
				|  |  | -                        <Link href="/pages/login" as="/login"><button type="button" className="btn btn-block btn-secondary">Signup</button></Link>
 | 
	
		
			
				|  |  | -                    </div>
 | 
	
		
			
				|  |  | -                </div>
 | 
	
		
			
				|  |  | -                {/* END card */}
 | 
	
		
			
				|  |  | -                <div className="p-3 text-center">
 | 
	
		
			
				|  |  | -                    <span className="mr-2">©</span>
 | 
	
		
			
				|  |  | -                    <span>2020</span>
 | 
	
		
			
				|  |  | -                    <span className="mx-2">-</span>
 | 
	
		
			
				|  |  | -                    <span>Angle</span>
 | 
	
		
			
				|  |  | -                    <br/>
 | 
	
		
			
				|  |  | -                    <span>Bootstrap Admin Template</span>
 | 
	
		
			
				|  |  | -                </div>
 | 
	
		
			
				|  |  | -            </div>
 | 
	
		
			
				|  |  | -        );
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -Register.Layout = BasePage
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -export default Register;
 |