StudentCodingHUB

Use programming to create innovative things.
  • new post

    Sunday, 20 October 2019

    Create Login Page Using HTML, CSS. REACT

    Login page for web application.
    HTML : It is used to create components of web page.
    CSS  is used for styling the components.
    REACT is the javascript library used for componets' action




    containers  >>  LoginForm.js

    import React, { Component } from 'react';
    import {Form,H1,ButtonFullSize,InputText,ErrorMsg} from '../style/jsstyle';
    import { Link } from "react-router-dom";
    import {Required,MaxLength} from '../myValidation';

    class LoginForm extends Component {
        constructor(props){
            super(props);
            this.state = {
                username: '',
                password:'',
                errorusername: false,
                errorpassword:false,
                errorform:false

            };

           
            this.handleChangeUsername=this.handleChangeUsername.bind(this);
            this.handleChangePassword=this.handleChangePassword.bind(this);

            //validation
            this.handleOnBlurPassword=this.handleOnBlurPassword.bind(this);
            this.handleOnBlurUsername=this.handleOnBlurUsername.bind(this);
        }

        handleChangePassword(event){
            this.setState({password: event.target.value});
        }
        handleChangeUsername(event){
            this.setState({username: event.target.value});
        }
      

        }

        //validation
        handleOnBlurUsername(event){
            if(Required(event.target.value)|| MaxLength(event.target.value,20)){
                this.setState({errorusername: true});
            }
            else {
                this.setState({errorusername: false});
            }
        }
        handleOnBlurPassword(event){
            if(Required(event.target.value)|| MaxLength(event.target.value,20)){
                this.setState({errorpassword: true});
            }
            else {
                this.setState({errorpassword: false});
            }
        }

        render() {
      
            return (
                <Form>
                    <H1>Login</H1>
                    <div>
                        <label>
                            Email / Mobile
                        </label>
                        <InputText type="text" value={this.state.username} onBlur={this.handleOnBlurUsername}  onChange={this.handleChangeUsername} />
                        <div>
                        {this.state.errorusername &&
                        <ErrorMsg>Name is Required and Max. 20 chars allow !!</ErrorMsg>
                        }
                       </div>
                    <div>
                        <label>
                            Password
                        </label>
                        <InputText type="password" value={this.state.password} onBlur={this.handleOnBlurPassword} onChange={this.handleChangePassword} />

                            {this.state.errorpassword &&
                            <ErrorMsg>Password is Required and Max. 20 chars allow !!</ErrorMsg>
                            }

                    </div>

                    <ButtonFullSize onClick={...}>Login</ButtonFullSize>

                    <ErrorMsg>{this.props.accountRequest.result}</ErrorMsg>
                        <div>
                            <div>
                                <br/>
                        <Link  to="/account_registration">Forget Password</Link>
                                </div>
                            <div>
                                <br/>
                        <Link  to="/account_registration">Account Registration</Link>
                                </div>
                        </div>
    </div>
                </Form>
            );
        }
    }

    export default LoginForm;



    style    >>    jsstyle

    import styled from 'styled-components';
    export const H1 = styled.h2`
      text-align: center;
      color: #4CAF50;
      font-weight:bold;
    `;

    export const ButtonFullSize=styled.button`
     background-color: #4CAF50;
        color: white;
        padding: 10px 10px;
        margin: 8px 0;
        border: none;
        cursor: pointer;
        width: 100%;
        font-weight:bold;
        font-size: 1.3em;
        border-radius: 25px;
    `;

    export  const SearchText =styled.input` width: 60%;
        padding: 12px 0px;
        margin: 4px 1px;
        display: inline-block;
        float: middle;
        border: 1px solid #ccc;
        border-radius: 15px;
        box-sizing: border-box;
         position: relative;
        left: 100px;

        `;


    export const Button = styled.button`
      background: ${props => props.primary ? 'green' : 'white'};
      color: ${props => props.primary ? 'white' : 'green'};
      font-size: 1.5em;
      padding: 0.25em 1em;
      border: 2px solid green;
      border-radius: 5px;
      margin: 10px 10px 10px 10px;
      &:hover { background: ${props => props.primary ? 'white' : 'green'};
      color: ${props => props.primary ? 'green' : 'white'};}
    `;


    export  const  InputText=styled.input` width: 100%;
        padding: 12px 20px;
        margin: 8px 0;
        display: inline-block;
        border: 1px solid #ccc;
        border-radius: 15px;
        box-sizing: border-box;`;


    export const Form=styled.div`
      background: #f2f2f2;
      border: 3px solid #f1f1f1;
      border-radius: 20px;
      height: auto;
      margin: 20px auto 0;
      width: 350px;
      padding:15px;
    `;

    export const FormBig=styled.div`
      background: #f2f2f2;
      border: 3px solid #f1f1f1;
       float: middle;
        width: 100%;
        margin-top: auto;
      border-radius: 20px;
      height: auto;
      margin: 20px auto 0;
      padding:15px;
    `;

    export const Table=styled.table`
        border-collapse: collapse;
        width: 100%;
    `;

    export const Td=styled.td`
        border: 1px solid #ddd;
        padding: 8px;
        text-align: ${props => props.isNumber ? 'right' : 'left'};
    `;

    export const Th=styled.th`
        padding-top: 12px;
        padding-bottom: 12px;
        text-align: center;
        background-color: #4CAF50;
        color: white;
        margin:10px;
    `;
    export const Tr=styled.tr`
     &:hover {background-color: #ddd;}
     &:nth-child(even){background-color: #f2f2f2;}
    `;
    export const Hr=styled.hr`
    height:2px; border:none; color:gray; background-color:#D3D3D3;
    margin: 15px 0px 15px 0px;
    `;

    export const MsgBox=styled.div`
    border: 1px solid;
    margin: 10px 0px;
    padding:15px 10px 15px 10px;
    color: #00000;
    font-size:1.2em;
    line-height: 1.5;
    border-radius: 15px;
    `;

    export const ErrorMsg=styled.p`
    color: #b30000;
    margin-top:0px;
    `;


    myValidation

    export const Required = (value) => {
        if (!value.toString().trim().length) {
            // We can return string or jsx as the 'error' prop for the validated Component
            return true;
        }
    };

    export const Repassword = (pw,repw) => {
        if (pw===repw) {
            // We can return string or jsx as the 'error' prop for the validated Component
            return false;
        }
        else {
            return true;
        }
    };

    export const Email = (value) => {
        return true;
    };

    export const  MaxLength  = (value, maxLength) => {
        // get the maxLength from component's props
        if (value.toString().trim().length > maxLength) {
            // Return jsx
            return true;
        }
    };







    No comments:

    Post a Comment