0.0.1-beta9 • Published 7 years ago

react-forms-component v0.0.1-beta9

Weekly downloads
-
License
MIT
Repository
-
Last release
7 years ago

React Forms Component

npm version

Form Component including validation for React

Table of Contents

Installation

To install just run the following command:

> npm install react-forms-component

Usage

Import Library

import ReactForm from 'react-forms-component';
import ReactFormValidations from 'react-forms-component/validations';

Basic Component Usage

<ReactForm></ReactForm>

Optional Props

ParamaterTypeRemark
classNameErrorstringWill apply the className when an input field is not valid
styleErrorobjectWill apply these inline styles when an input field is not valid
onValidationChangefuncWill be fired when the overall form validation status changes

Validations

List of build in Validations

ValidationParameters
RequiredNo extra parameters
IsNumberNo extra parameters
MinLengthLength size: Number
MaxLengthLength size: Number
MinLength size: Number
MaxLength size: Number

Sample

To following example is using 2 of the above built-in validation functions:

<input 
    type="text" 
    data-model="username" 
    data-validations={
        [
            ReactFormValidations.Required, 
            (m, v) => ReactFormValidations.MinLength(m, v, 5)
        ]
    } />

Custom Validations

If the above built-in validations are not enough for your application, you can create your own Validation functions. Below is an example of a custom validation:

static Max = (modelName, value, no, customError) => (value && parseInt(value) <= no ? true : ReactFormValidations._createErrorMessage(customError, modelName, `greater than ${no}`));

Display Errors

To display the error message inline you can need to use data-error-for attribute/prop:

<div className="error-label" data-error-for="username"></div>

Example

The following is an example of how to use this library in your application:

Sample JSX

<ReactForm
    classNameError="error"
    onValidationChange={this.handleValidationChange}
    ref={(form) => {
        this.form = form; 
    }}
>
    <div className="form-control">
        <div className="error-label" data-error-for="username"></div>
        <label>Username:</label>
        <input 
            type="text" 
            data-model="username" 
            data-validations={
                [
                    ReactFormValidations.Required, 
                    (m, v) => ReactFormValidations.MinLength(m, v, 5)
                ]
            } />
    </div>
    ...
</ReactForm>
<div className="form-control">
    <label></label>
    <button disabled={!isValid} onClick={this._handleClick}>Populate Model</button>
</div>

Sample Event Handler

handleValidationChange = (isValid) => {
    this.setState({
        isValid,
    });
}

_handleClick = () => {
    console.log(this.form.getModel());
}

Example

Clone this project and run the following commands to run the demo:

cd examples
npm install
npm start

then open http://localhost:4001 in a web browser

Credits

React: http://facebook.github.io/react/

Babel: http://babeljs.io/

Webpack: https://webpack.github.io/docs/