# @midwestern/react-native-validation

> Promise-based validation for React Native

Latest version **0.0.5** (published 2020-02-13) · ISC license · 0 weekly downloads

## Install

```sh
npm install @midwestern/react-native-validation
pnpm add @midwestern/react-native-validation
yarn add @midwestern/react-native-validation
bun add @midwestern/react-native-validation
```

## 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.0.5 |
| Published | 2020-02-13 |
| First published | 2019-01-31 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 2 |
| Unpacked size | 55 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 2 |
| Maintainers | carterbland |

## Links

- npm: https://www.npmjs.com/package/@midwestern/react-native-validation
- Repository: https://github.com/Midwestern-Interactive/react-native-validation
- Homepage: https://github.com/Midwestern-Interactive/react-native-validation#readme
- Issues: https://github.com/Midwestern-Interactive/react-native-validation/issues
- npm.io page: https://npm.io/package/@midwestern/react-native-validation

## Dependencies (2)

- [@babel/runtime](https://npm.io/package/@babel/runtime.md) ^7.3.1
- [eslint-plugin-jest](https://npm.io/package/eslint-plugin-jest.md) ^22.1.3

## Recent versions

- 0.0.5 (latest) — 2020-02-13
- 0.0.4 — 2019-10-25
- 0.0.3 — 2019-10-25
- 0.0.2 — 2019-09-11
- 0.0.1 — 2019-01-31

## README

React Native Validation
======
![](https://img.shields.io/npm/dw/@midwestern/react-native-validation.svg?style=flat) ![](https://img.shields.io/npm/v/@midwestern/react-native-validation.svg?style=flat) [![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com)

 
*About to overhaul this package due to new demand.*

**Promise-based validation for React Native**

#### Introduction
React Native Validation allows for quick and seamless validation out of the box. We designed the package based on [Laravel's Validation]((https://laravel.com/docs/5.7/validation)) and works almost interchangeably.

#### Features:
- Multiple languages support, as well as custom language support
- Extendable
- Easy to learn and use
- Light-weight

## Installing

Install React Native Validation through NPM

```
$ npm i @midwestern/react-native-validation
```

Importing React Native Validation into your components

```
import Validation from '@midwestern/react-native-validation'
```

## Usage

### Example
```js
const Validator = new Validation({
  first_name: 'required|alpha|max:255',
  last_name: 'required|alpha|max:255',
  email: 'required|string|email|max:255|unique:users',
  password: 'required|string|min:6|confirmed'
})

Validator.validate(this.state.form)
  .then(() => {
    // success
  })
  .catch(errors => {
    this.setState(state => {
      state.errors = errors
      

      return state
    })
  })
```

### Available Rules
| Rule | Description |
|---|---|
| required | forces the field to be required|
| min:val | forces the field length to be longer than the value |
| max:val | forces the field to be shorter than the value|
| required | forces the field to be required| 

### Making your own rules
**note: your method should return a boolean which represents whether or not the validation succeeded**
```js
const Validator = new Validation({
  exampleField: 'required|matchExample:OrMe'
})

Validator.extendRules({
  ruleName: 'matchExample',
  method: (fieldName, val, val2) => {
      return val === 'example' || val === val2
  },
  errorMessage: {
    english: 'FIELD didnt match VAR1 or example'
  }
})
```

### Extending error messages language
**note: not defining an error message for a rule will result in that rule defaulting to english**
```js
const Validator = new Validation({
  first_name: 'required|alpha|max:255',
  last_name: 'required|alpha|max:255',
  email: 'required|string|email|max:255|unique:users',
  password: 'required|string|min:6|confirmed'
})

Validator.extendLanguages({
  language: 'spanish',
  errorMessages: {
    required: 'ENTRADA es requerido',
    alpha: 'ENTRADA solo puede contener caracteres alfa',
    email: 'ENTRADA debe ser una dirección de correo electrónico válida',
    min: 'ENTRADA la longitud debe ser más que los caracteres VAR1',
    max: 'ENTRADA la longitud debe ser menor que los caracteres VAR1',
    string: 'ENTRADA debe ser una cadena válida',
    confirmed: 'ENTRADA debe ser confirmado'
  }
})

Validator.setLanguage('spanish')
```

## Contributing

Please read [CONTRIBUTING.md](CONTRIBUTING.md) for details on our code of conduct, and the process for submitting pull requests to us.

## Versioning

We use [SemVer](http://semver.org/) for versioning. For the versions available, see the [tags on this repository](https://github.com/your/project/tags). 

## Authors

* **Carter Bland** - developer

See also the list of [contributors](https://github.com/your/project/contributors) who participated in this project.

## License

This project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details

---
_Source: https://npm.io/package/@midwestern/react-native-validation · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
