HenryLansang / redux-form-validations

A collection of utilities for validations in redux-form V6

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

redux-form-validations

A collection of utilities for validations in redux-form V6

Note: this project is under initial development, API may change (we will follow sem-ver).

Example

$ npm install --save redux-form-validations
import { React } from 'react';
import { reduxForm } from 'redux-form';
import { buildValidations, isPresent, isZipCode, isDateInPast, isDateAfter } from 'redux-form-validations';
import { uniq } from 'lodash';

const { warn, validate } = buildValidations({
  firstName: {
    validate: isPresent
  },
  lastName: {
    warn: {
      ...isPresent,
      errorMessage: 'Last names are helpful'
    }
  },
  zipCode: {
    validate: {
      ...isZipCode,
      required: true
    }
  },
  dateApplied: {
    validate: [
      isDateInPast,
      isDateAfter('04/19/1988'),
      {
        ...isPresent,
        validateIf: (allValues, value) => allValues.dependentField
      }
    ]
  },
  _fieldArrays: {
    hobbies: {
      _error: {
        validate: {
          validator: (fields) => {
            const names = field.map(field => field.name);
            return uniq(names).length === names.length;
          },
          errorMessage: 'Hobby names must be unique'
        }
      }
    }
  }
});

class MyForm extends React.Component { ... }

export default reduxForm({ warn, validate })(MyForm);

Custom validators

Every field defined in your schema object has top-level keys warn and validate which are used to build warn and validate functions for redux-form connected components. These keys take a validator object, which has the shape:

validator: Function (allFields, value) => Boolean If the return value is true, then the field is valid, if false, an error is added. errorMessage: String || Function (allField, value) => String The error message that is returned with the validate or warn function call when the validator returns false.

Prior work

redux-form-schema is the main inspiration for this project. After redux-form moved to V6, this project was deprecated, since a large part of its functionality was obselete. However, we still liked being able to define our validations with a simple and declarative API. This small library aims to supply that abstraction with some built-in validators and configuration options.

Contributing/ Todos

This is a green project, and we are open to feature suggestions and other improvements. Additionally, you can contribute by helping with these outstanding todos:

  • Tighten up API for V1
  • Add documentation
  • Add more validators for common uses
  • More configuration options

About

A collection of utilities for validations in redux-form V6


Languages

Language:JavaScript 100.0%