# form-proof

> This package provides basic form validations with minimal validations.

Latest version **0.2.0** (published 2017-08-29) · MIT license · 0 weekly downloads

## Install

```sh
npm install form-proof
pnpm add form-proof
yarn add form-proof
bun add form-proof
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.2.0 |
| Published | 2017-08-29 |
| First published | 2017-08-26 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Node | >= 0.12 |
| Dependencies | 1 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Steven Scaffidi |
| Maintainers | sscaff1 |
| Keywords | basic form validation, form validation, vanilla js, plain javascript, validations, basic validations |

## Links

- npm: https://www.npmjs.com/package/form-proof
- Issues: https://github.com/sscaff1/form-proof/issues
- npm.io page: https://npm.io/package/form-proof

## Dependencies (1)

- [promise-polyfill](https://npm.io/package/promise-polyfill.md) ^6.0.2

## Alternatives

- [mobx-react](https://npm.io/package/mobx-react.md) — 2.8M weekly downloads
- [rc-tree](https://npm.io/package/rc-tree.md) — 2.6M weekly downloads
- [@react-oauth/google](https://npm.io/package/@react-oauth/google.md) — 1.3M weekly downloads
- [@wagmi/connectors](https://npm.io/package/@wagmi/connectors.md) — 877.0K weekly downloads
- [vee-validate](https://npm.io/package/vee-validate.md) — 836.4K weekly downloads

## Recent versions

- 0.2.0 (latest) — 2017-08-29
- 0.1.2 — 2017-08-29
- 0.1.1 — 2017-08-26
- 0.1.0 — 2017-08-26

## README

# Form Proof
[![Build Status](https://travis-ci.org/sscaff1/form-proof.svg?branch=master)](https://travis-ci.org/sscaff1/form-proof) [![codecov](https://codecov.io/gh/sscaff1/form-proof/branch/master/graph/badge.svg)](https://codecov.io/gh/sscaff1/form-proof)

## Purpose
Form validation shouldn't have to be a bloated library with tons of dependencies. At the the end of the day, it's not that hard. This small, extendable package attempts to demonstrate that. This library is **<2kbs** gzipped making it very light weight. The library is meant for forms, but is isomorphic by nature making it great for a wide variety of use cases. Help and suggestions are always welcome.

## Dependencies
Form pure has one dependency, a small Promise polyfill for IE browsers (**<1kb gzipped**).

## Usage
Install the package:

```
yarn add form-proof
```

or

```
npm i --save form-proof
```

Then use it:

```html
<!-- In the body of my page -->
<form>
  <input type="text" name="name" value="steven" />
  <input type="text" name="email" value="notanemail" />
</form>
```

```js
import Validator from 'form-proof';

/***
* The field rules is an object with its keys corresponding to the names of our form inputs
* each key has an array of validations that you would like to perform against the input.
***/
const fieldRules = {
  name: ['required', 'min3', 'max20'],
  email: ['required', 'email', 'max30']
};

// then initiate our validator. Our second argument is either undefined or can be the selector for our form.
const validator = new Validator(fieldRules, 'form');

// we can validate a single field. Our second argument 
validator.validate('name').then(error => console.log(error)) // { name: [] }

// we can validate the entire form
validator.validateAll().then(errors => console.log(errors)) // { name: [], email: ['You must provide a valid email address.'] };
```

## API
### Validator
| Argument | Type | Description |
| :---: | :---: | :------: |
| fieldRules | object (required) | An object where the keys correspond to the input names and the values are an array of validations for that field |
| form | string (optional) | The DOM selector for our form |
| customValidations | object (optional) | Additional validations |
| additionalValidationParams | object (optional) | Additional validation parameters that will be passed to the validator |

### Additional Validations
An object with keys indicating the name of the validation. Each key should be an object with two methods:
* isInvalid - a method that returns true when the validation is invalid and false otherwise
* message - a method that returns a string with the validation message

The validations can override methods as well if they have the same as an existing validation.

Example:

```js
const additionalValidations = {
  // this overrides the default required rule
  required: {
    isInvalid(value, field, rule, additionalValidationParams) {
      return value.length === 0;
    },
    message(value, field, rule, additionalValidationParams) {
      return 'This field value has no length';
    }
  },
  // this is a new rule
  isDivisibleBy3: {
    isInvalid(value, field, rule, additionalValidationParams) {
      return parseInt(value, 10) % 3 !== 0;
    },
    message(value, field, rule, additionalValidationParams) {
      return 'This field is not divisible by 3';
    }
  }
}
```

---
_Source: https://npm.io/package/form-proof · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
