3.14.1 • Published 2 years ago

@aofl/form-validate v3.14.1

Weekly downloads
273
License
MIT
Repository
github
Last release
2 years ago

@aofl/aofl-validate

@aofl/aofl-validate comes with a handful of form validation functions and an aofl-element mixin to simplify form validation for webcomponents. It even bundles some basic validators.

Api Documentation

Examples

Installation

npm i -S @aofl/aofl-validate

Usage

...
import {validationMixin, isRequired, minLength} from '@aofl/aofl-validate';

class Login extends validationMixin(AoflElement) {
  get validators() {
        return {
      username: {
        isRequired
      },
      password: {
        isRequired,
        min: minLength(8)
      }
    };
  }
}
// results in

login-form: {
  form: {
    valid: true,
    pending: false,
    observed: false,
    username: {
      valid: true,
      pending: false,
      observed: false,
      isRequired: {
        valid: true,
        pending: false,
        observed: false,
      }
    },
    password: {
      valid: true,
      pending: false,
      observed: false,
      isRequired: {
        valid: true,
        pending: false,
        observed: false,
      },
      min: {
        valid: true,
        pending: false,
        observed: false,
      }
    }
  }
}

Methods

All properties of element.form are instances of the same interface and therefore all properties and methods are available on each level.

this.form.validate();
this.form.username.validate();
this.form.username.inRequired.validate();

// and respectively
this.form.valid;
this.form.username.valid;
this.form.username.isRequired.valid;

reset()

Reset the form validation object to it's initial state.

validate()

When validate is invoked it call validate on it's properties resulting in the preperties' validation functions to be invoked.

this.form.validate(); // validates every property

this.form.username.validate(); // validates username

Properties

valid

Checks the .valid property of it's properties and return false if any of them are invalid.

this.form.valid; // return the validity of the entire form

this.form.username.valid; // return the validity of username

pending

Checks the .pending property of it's properties and return true if any of them are pending.

this.form.pending; // return true if any property is pending

this.form.username.pending; // returns true if username is pending

observed

Boolean property that signifies if a form proprety was validated.

this.form.observed; // return true if all properties have been observed

this.form.username.pending; // returns true if username has been observed

validateComplete

Returns a promise that resolves when the latest async operation has completed.


Bundled Validators

isRequired

Test whether value is empty or not.

import {isRequired} from '@aofl/aofl-validate';

class MyElement extends validationMixin(AoflElement) {
...
  get validators() {
    return {
      password:  {
        isRequired
      },
      ...
    };
  }
...
}

isEqual

Test whether the values of two fields are equal. E.g. password & verify password fields.

import {isEqual} from '@aofl/aofl-validate';

class MyElement extends validationMixin(AoflElement) {
...
  get validators() {
    return {
      password: {
        ...
      },
      verifyPassword:  {
        isEqual: isEqual('password')
      }
    };
  }
...
}

minLength

Test whether the value meets a minimum length requirement.

import {minLength} from '@aofl/aofl-validate';

class MyElement extends validationMixin(AoflElement) {
...
  get validators() {
    return {
      password: {
        minLength: minLength(8)
      },
      ...
    };
  }
...
}

maxLength

Test whether the value meets a maximum length requirement.

import {maxLength} from '@aofl/aofl-validate';

class MyElement extends validationMixin(AoflElement) {
...
  get validators() {
    return {
      password: {
        maxLength: maxLength(8)
      },
      ...
    };
  }
...
}

isAllDigits

Test whether the value consists of only digits.

import {isAllDigits} from '@aofl/aofl-validate';

class MyElement extends validationMixin(AoflElement) {
...
  get validators() {
    return {
      password: {
        isAllDigits
      },
      ...
    };
  }
...
}

pattern

Test whether the value matches a pattern.

import {pattern} from '@aofl/aofl-validate';

class MyElement extends validationMixin(AoflElement) {
...
  get validators() {
    return {
      email: {
        validEmail: pattern(/[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2, 4}$/)
      },
      ...
    };
  }
...
}

compare

Compare values of 2 form fields based on a comparator function

import {compare, isRequired} from '@aofl/aofl-validate';

class MyElement extends validationMixin(AoflElement) {
...
  get validators() {
    return {
      questions: {
        question1: {
          isRequired
        },
        question2: {
          isRequired,
          unique: compare('questions.question1', (value, otherValue) => value !== otherValue)
        },
        question3: {
          isRequired,
          unique: compare('questions.question2', (value, otherValue) => value !== otherValue)
        }
      },
      ...
    };
  }
...
}
3.14.1

2 years ago

3.14.0

2 years ago

4.0.0-alpha.45

3 years ago

4.0.0-alpha.44

3 years ago

4.0.0-alpha.17

3 years ago

4.0.0-alpha.16

3 years ago

4.0.0-alpha.15

3 years ago

4.0.0-alpha.19

3 years ago

4.0.0-alpha.18

3 years ago

4.0.0-alpha.39

3 years ago

4.0.0-alpha.38

3 years ago

4.0.0-alpha.37

3 years ago

4.0.0-alpha.36

3 years ago

4.0.0-alpha.31

3 years ago

4.0.0-alpha.30

3 years ago

4.0.0-alpha.35

3 years ago

4.0.0-alpha.34

3 years ago

4.0.0-alpha.33

3 years ago

4.0.0-alpha.32

3 years ago

4.0.0-alpha.28

3 years ago

4.0.0-alpha.27

3 years ago

4.0.0-alpha.26

3 years ago

4.0.0-alpha.25

3 years ago

4.0.0-alpha.29

3 years ago

4.0.0-alpha.20

3 years ago

4.0.0-alpha.24

3 years ago

4.0.0-alpha.23

3 years ago

4.0.0-alpha.22

3 years ago

4.0.0-alpha.21

3 years ago

4.0.0-alpha.42

3 years ago

4.0.0-alpha.41

3 years ago

4.0.0-alpha.40

3 years ago

4.0.0-alpha.43

3 years ago

4.0.0-alpha.13

3 years ago

3.13.1

3 years ago

3.13.0

3 years ago

4.0.0-alpha.11

3 years ago

4.0.0-alpha.10

3 years ago

4.0.0-alpha.9

3 years ago

3.12.1

3 years ago

3.12.0

3 years ago

3.9.0

4 years ago

3.10.0

4 years ago

3.8.1

4 years ago

3.9.0-alpha.0

4 years ago

3.8.0

4 years ago

3.7.0

4 years ago

3.6.1

4 years ago

3.7.0-alpha.0

4 years ago

3.5.0-beta.22

4 years ago

3.5.0

4 years ago

3.5.0-beta.20

4 years ago

3.5.0-beta.21

4 years ago

3.5.0-beta.19

4 years ago

3.5.0-beta.18

4 years ago

3.5.0-beta.15

4 years ago

3.5.0-beta.17

4 years ago

3.5.0-beta.16

4 years ago

3.5.0-beta.14

4 years ago

3.5.0-beta.13

4 years ago

3.5.0-beta.12

4 years ago

3.5.0-beta.11

4 years ago

3.5.0-beta.10

4 years ago

3.5.0-beta.7

4 years ago

3.5.0-beta.8

4 years ago

3.5.0-beta.5

4 years ago

3.5.0-beta.6

4 years ago

3.5.0-beta.9

4 years ago

3.5.0-beta.4

4 years ago

3.5.0-beta.3

4 years ago

3.5.0-beta.1

4 years ago

3.5.0-beta.2

4 years ago

3.3.0

4 years ago

3.2.2-alpha.3

4 years ago

3.2.2-alpha.2

4 years ago

3.2.2-alpha.1

4 years ago

3.2.2-alpha.0

4 years ago

3.2.1

4 years ago

3.2.0

4 years ago

3.1.0

4 years ago

3.0.0

4 years ago

3.0.0-beta.49

4 years ago

3.0.0-beta.48

4 years ago

3.0.0-beta.47

4 years ago

3.0.0-beta.46

4 years ago

3.0.0-beta.42

4 years ago

3.0.0-beta.41

4 years ago

3.0.0-beta.40

4 years ago

3.0.0-alpha.12

5 years ago

3.0.0-beta.38

5 years ago

3.0.0-beta.37

5 years ago

3.0.0-beta.36

5 years ago

3.0.0-beta.35

5 years ago

3.0.0-beta.33

5 years ago

3.0.0-beta.32

5 years ago

3.0.0-beta.30

5 years ago

3.0.0-beta.28

5 years ago

3.0.0-beta.27

5 years ago

3.0.0-beta.26

5 years ago

3.0.0-beta.25

5 years ago

3.0.0-beta.24

5 years ago

3.0.0-beta.23

5 years ago

3.0.0-beta.22

5 years ago

3.0.0-beta.16

5 years ago

3.0.0-beta.15

5 years ago

3.0.0-beta.14

5 years ago

3.0.0-beta.13

5 years ago

3.0.0-beta.12

5 years ago

3.0.0-beta.11

5 years ago

3.0.0-beta.9

5 years ago

3.0.0-beta.8

5 years ago

3.0.0-beta.6

5 years ago

3.0.0-beta.5

5 years ago

3.0.0-alpha.11

5 years ago

3.0.0-alpha.5

5 years ago

3.0.0-alpha.0

5 years ago

3.0.0-0

5 years ago

2.0.0

5 years ago

2.0.0-alpha.17

5 years ago

2.0.0-alpha.16

5 years ago

2.0.0-alpha.5

5 years ago

1.4.1

5 years ago

1.4.0

5 years ago

1.3.0

5 years ago

1.2.3

5 years ago

1.2.1

5 years ago

1.2.0

5 years ago

1.1.2

6 years ago

1.1.0

6 years ago

1.0.0

6 years ago