1.0.7 β€’ Published 4 years ago

reactrix v1.0.7

Weekly downloads
5
License
MIT
Repository
github
Last release
4 years ago

Simple, lightweight model-based validation for React Hooks Inspired by PHP Framework Laravel's validation

Features

  • πŸ€— Familiar and easy to setup.
  • 🌍 i18n Support and error Messages in different locales.
  • πŸ‘Š Written in JavaScript.
  • πŸ—ƒ No dependencies.

πŸ“¦ Installation

Install it with yarn:

yarn add reactrix --save

Or with npm:

npm install reactrix --save

🏷 Usage

Let's define some validations in React components

import React, { useState } from 'react';
import { useValidate } from 'reactrix';

function Login(props) {
  const [data, setData] = useState({});
  const [msg, setValidator] = useValidate();
  
  const handleChange = (event) => {
    setData({
      ...data,
      [event.target.name]: event.target.value
    );
  }
  
  const handleSubmit = (event) => {
    event.preventDefault();
    setValidator(data, {
      email: 'required|email',
      password: 'required|string'
    }); 
   
  }
   
    
  return (
    <form>  
        <div className="container">   
          <label>Email : </label>   
          <input type="email" placeholder="Enter Email" name="email" onChange={handleChange} />  
          <label>Password : </label>   
          <input type="password" placeholder="Enter Password" name="password" onChange={handleChange} />  
          <button type="submit" onClick={handleSubmit}>Login</button>     
          Forgot <a href="#"> password? </a>   
        </div>
    </form>
  );
  
}

πŸ’… You can use custom react component or ui library like react-bootstrap to display error messages.

Reactrix has built-in localization support for validation messages. The default language for Reactrix is en in order to set the locale you pass the locale key/code to the localize method:

const [msg, setValidator] = useValidate('fr');

🌍 Supported Locales

Reactrix support english and french languages. This is visible in the register javascript file, which can be found in the src directory. Therefore, if you want to use multiple languages, you will have to add them to the locale folder.

All the language files should return an array of keyed strings as shown below.

Step1 - Create 2 files for languages βˆ’ Spanish, German. Save Arabic file at locale/de.json

{
  "messages": {
    "alpha": "{{input}} darf nur alphabetische Zeichen enthalten"
  }
}
{
  "messages": {
    "alpha": "El campo {{input}} solo debe contener letras"
  }
}

Step2 - Export spanish and German languages from src/register.js

// export all Reactrix supported locales.
export { default as de } from '../locale/german.json';
export { default as es } from '../locale/spanish.json';

🚦Common Rules

KeywordDescription
Common Validator
alphaChecks if the string contains only letter(a-zA-Z)
alphaNumChecks if the string contains only letters and numbers
asciiChecks if the string contains ASCII chars only
base32Checks if a string is base32 encoded
base64Checks if a string is base64 encoded
booleanChecks if a value is a boolean
creditCardChecks if the string is a credit card
dateChecks if a value is a date
decimalChecks if a value is a decimal
emailChecks if the string is an email
eanChecks if the string is an EAN(European Article Number)
functionChecks if the object is function
hexColorChecks if the string is a hexadecimal color
integerChecks if the value is an integer number
ipAddressChecks if the string is an IP (version 4 or 6)
lowercaseChecks if the string is lowercase
mimeTypeChecks if the string matches to a valid MIME type format
numericChecks if a value is a number
objectChecks if a value is an object
octalChecks if a value is an octal
portChecks if the string is a Port
postalChecks if the string is a postal code. Supported locales are ([ 'AD', 'AT', 'AU', 'AZ', 'BE', 'BG', 'BR', 'CA', 'CH', 'CZ', 'DE', 'DK', 'DZ', 'EE', 'ES', 'FI', 'FR', 'GB', 'GR', 'HR', 'HU', 'ID', 'IE' 'IL', 'IN', 'IR', 'IS', 'IT', 'JP', 'KE', 'LI', 'LT', 'LU', 'LV', 'MT', 'MX', 'NL', 'NO', 'NP', 'NZ', 'PL', 'PR', 'PT', 'RO', 'RU', 'SA', 'SE', 'SI', 'TN', 'TW', 'UA', 'US', 'ZA', 'ZM' ]) or any.
stringChecks if the string is a string
undefinedChecks if the string is undefined
uppercaseChecks if the string is uppercase
urlChecks if the string is url
ISO
ISO31661Alpha2Checks if the string is a valid ISO 3166-1 alpha-2 officially assigned country code
ISO31661Alpha3Checks if the string is a valid ISO 3166-1 alpha-3 officially assigned country code
Currency
bitcoinChecks if the string is a valid BTC address
ethereumChecks if the string is an Ethereum address using basic regex. Does not validate address checksums
Hash
md4Checks if the string is a valid md4 algorithm
md5Checks if the string is a valid md5 algorithm
sha1Checks if the string is a valid sha1 algorithm
sha256Checks if the string is a valid sha256 algorithm
sha384Checks if the string is a valid sha384 algorithm
sha512Checks if the string is a valid sha512 algorithm

πŸ“’ Compatibility

This library uses ES6 Promises so be sure to provide a polyfill for it for the browsers that do not support it.

πŸ“‹ Changelog

Please see CHANGELOG for more information what has changed recently.

πŸ“’ Samples

Take a look on samples in ./sample for more examples of usages.

πŸ‘¨β€πŸ’» Contributing

Thanks goes to these wonderful people (emoji key):

You are welcome to contribute to this project, but before you do, please make sure you read the contribution guide.

πŸ“ License

The reactrix Library is open-source software licensed under the MIT license.