@aqpdev/react-form-validation

1.0.3 • Public • Published

react-form-validation

React hook to validate form values inspired in CodeIgniter (PHP framework).

Installation

npm i @aqpdev/react-form-validation

Usage

import React from "react"
import {useFormValidation} from "@aqpdev/react-form-validation";

export default function Home() {
    const {handleForm, hasErrors, showError} = useFormValidation([
        {
            field_name: "username",
            rules: "required|min_length[5]|alpha_dash",
            errors: {
                required: "Username is required.",
                min_length: "Username must contains at least 5 characters.",
                alpha_dash: "Username may only contain alpha-numeric characters, underscores, and dashes."
            }
        },
        {
            field_name: "password",
            rules: "required|min_length[6]|alpha_with_upper_numeric_special",
            errors: {
                required: "Password is required.",
                min_length: "Password must contains at least 6 characters.",
                alpha_with_upper_numeric_special: "Password must contains letters (lowercase and uppercase), numbers and special characters.",
            }
        },
        {
            field_name: "confirm_password",
            rules: "required|matches[password]",
            errors: {
                required: "Confirm your password.",
                matches: "Passwords do not match.."
            }
        },
        {
            field_name: "email",
            rules: "required|valid_email",
            errors: {
                required: "Enter your email address.",
                valid_email: "Email address is not valid."
            }
        }
    ]);

    const myHandle = (data) => {
        //Data returns a JSON of form elements
        console.log(data);
    }

    return (
        <form onSubmit={(e) => handleForm(e, myHandle)}>
            <div className="mb-3">
                <label className="form-label">Username</label>
                <input type="text" name="username" className="form-control"/>
                {hasErrors('username') && <div className="text-danger">{showError('username')}</div>}
            </div>

            <div className="mb-3">
                <label className="form-label">Password</label>
                <input type="password" name="password" className="form-control"/>
                {hasErrors('password') && <div className="text-danger">{showError('password')}</div>}
            </div>

            <div className="mb-3">
                <label className="form-label">Confirm Password</label>
                <input type="password" name="confirm_password" className="form-control"/>
                {hasErrors('confirm_password') && <div className="text-danger">{showError('confirm_password')}</div>}
            </div>

            <div className="mb-3">
                <label className="form-label">Email</label>
                <input type="text" name="email" className="form-control"/>
                {hasErrors('email') && <div className="text-danger">{showError('email')}</div>}
            </div>

            <div>
                <button className="btn btn-primary">Submit</button><br/>
                <button type="button" className="btn btn-primary">Button blocked</button><br/>
            </div>
        </form>
    )
}

Rules Reference

Rule Parameter Description Example
required No Returns error if the form element is empty.
matches Yes Returns error if the form element does not match the one in the parameter. matches[form_item]
regex_match Yes Returns error is the form element does not match the regular expresion. regex_match[/regex/]
differs Yes Returns error if the form element does not differ from the one in the parameter. differs[form_item]
min_length Yes Returns error if the form element is shorter than the parameter value. min_length[3]
max_length Yes Returns error if the form element is longer than the parameter value. max_length[12]
exact_length Yes Returns error if the form element is not exactly the parameter value. exact_length[8]
greater_than Yes Returns error if the form element is less than or equal to the parameter value or not numeric. greater_than[8]
greater_than_equal_to Yes Returns error if the form element is less than the parameter value, or not numeric. greater_than_equal_to[8]
less_than Yes Returns error if the form element is greater than or equal to the parameter value or not numeric. less_than[8]
less_than_equal_to Yes Returns error if the form element is greater than the parameter value, or not numeric. less_than_equal_to[8]
in_list Yes Returns error if the form element is not within a predetermined list. in_list[red,blue,green]
alpha No Returns error if the form element contains anything other than alphabetical characters.
alpha_numeric No Returns error if the form element contains anything other than alpha-numeric characters.
alpha_numeric_spaces No Returns error if the form element contains anything other than alpha-numeric characters or spaces. Should be used after trim to avoid spaces at the beginning or end.
alpha_dash No Returns error if the form element contains anything other than alpha-numeric characters, underscores or dashes.
alpha_and_numeric No Returns error if the form element does not contain letters and numbers.
alpha_with_upper_and_numeric No Returns error if the form element does not contain letters (lowercase and uppercase) and numbers.
alpha_with_upper_numeric_special No Returns error if the form element does not contain letters (lowercase and uppercase), numbers and special characters.
numeric No Returns error if the form element contains anything other than numeric characters.
integer No Returns error if the form element contains anything other than an integer.
decimal No Returns error if the form element contains anything other than a decimal number.
is_natural No Returns error if the form element contains anything other than a natural number: 0, 1, 2, 3, etc.
is_natural_no_zero No Returns error if the form element contains anything other than a natural number, but not zero: 1, 2, 3, etc.
valid_url No Returns error if the form element does not contain a valid URL.
valid_email No Returns error if the form element does not contain a valid email address.
valid_ip No Returns error if the form element does not contain a valid IP address (‘ipv4’ or ‘ipv6’).
if_requires Yes Returns error if the form element is filled and the other form element (parameter) is empty. if_requires[form_item]
if_use_requires Yes Returns error if the form element is equal to first parameter and the other form element (second parameter) is empty. if_requires[user,form_item]

Package Sidebar

Install

npm i @aqpdev/react-form-validation

Weekly Downloads

4

Version

1.0.3

License

MIT

Unpacked Size

28.4 kB

Total Files

4

Last publish

Collaborators

  • aqpdev