3.14.1 • Published 3 years ago

@aofl/form-validate v3.14.1

Weekly downloads
273
License
MIT
Repository
github
Last release
3 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

3 years ago

3.14.0

3 years ago

4.0.0-alpha.45

4 years ago

4.0.0-alpha.44

4 years ago

4.0.0-alpha.17

4 years ago

4.0.0-alpha.16

4 years ago

4.0.0-alpha.15

4 years ago

4.0.0-alpha.19

4 years ago

4.0.0-alpha.18

4 years ago

4.0.0-alpha.39

4 years ago

4.0.0-alpha.38

4 years ago

4.0.0-alpha.37

4 years ago

4.0.0-alpha.36

4 years ago

4.0.0-alpha.31

4 years ago

4.0.0-alpha.30

4 years ago

4.0.0-alpha.35

4 years ago

4.0.0-alpha.34

4 years ago

4.0.0-alpha.33

4 years ago

4.0.0-alpha.32

4 years ago

4.0.0-alpha.28

4 years ago

4.0.0-alpha.27

4 years ago

4.0.0-alpha.26

4 years ago

4.0.0-alpha.25

4 years ago

4.0.0-alpha.29

4 years ago

4.0.0-alpha.20

4 years ago

4.0.0-alpha.24

4 years ago

4.0.0-alpha.23

4 years ago

4.0.0-alpha.22

4 years ago

4.0.0-alpha.21

4 years ago

4.0.0-alpha.42

4 years ago

4.0.0-alpha.41

4 years ago

4.0.0-alpha.40

4 years ago

4.0.0-alpha.43

4 years ago

4.0.0-alpha.13

4 years ago

3.13.1

4 years ago

3.13.0

4 years ago

4.0.0-alpha.11

4 years ago

4.0.0-alpha.10

4 years ago

4.0.0-alpha.9

4 years ago

3.12.1

4 years ago

3.12.0

4 years ago

3.9.0

5 years ago

3.10.0

5 years ago

3.8.1

5 years ago

3.9.0-alpha.0

5 years ago

3.8.0

5 years ago

3.7.0

5 years ago

3.6.1

5 years ago

3.7.0-alpha.0

5 years ago

3.5.0-beta.22

5 years ago

3.5.0

5 years ago

3.5.0-beta.20

5 years ago

3.5.0-beta.21

5 years ago

3.5.0-beta.19

5 years ago

3.5.0-beta.18

5 years ago

3.5.0-beta.15

5 years ago

3.5.0-beta.17

5 years ago

3.5.0-beta.16

5 years ago

3.5.0-beta.14

5 years ago

3.5.0-beta.13

5 years ago

3.5.0-beta.12

5 years ago

3.5.0-beta.11

5 years ago

3.5.0-beta.10

5 years ago

3.5.0-beta.7

5 years ago

3.5.0-beta.8

5 years ago

3.5.0-beta.5

5 years ago

3.5.0-beta.6

5 years ago

3.5.0-beta.9

5 years ago

3.5.0-beta.4

5 years ago

3.5.0-beta.3

5 years ago

3.5.0-beta.1

5 years ago

3.5.0-beta.2

5 years ago

3.3.0

5 years ago

3.2.2-alpha.3

5 years ago

3.2.2-alpha.2

5 years ago

3.2.2-alpha.1

6 years ago

3.2.2-alpha.0

6 years ago

3.2.1

6 years ago

3.2.0

6 years ago

3.1.0

6 years ago

3.0.0

6 years ago

3.0.0-beta.49

6 years ago

3.0.0-beta.48

6 years ago

3.0.0-beta.47

6 years ago

3.0.0-beta.46

6 years ago

3.0.0-beta.42

6 years ago

3.0.0-beta.41

6 years ago

3.0.0-beta.40

6 years ago

3.0.0-alpha.12

6 years ago

3.0.0-beta.38

6 years ago

3.0.0-beta.37

6 years ago

3.0.0-beta.36

6 years ago

3.0.0-beta.35

6 years ago

3.0.0-beta.33

6 years ago

3.0.0-beta.32

6 years ago

3.0.0-beta.30

6 years ago

3.0.0-beta.28

6 years ago

3.0.0-beta.27

6 years ago

3.0.0-beta.26

6 years ago

3.0.0-beta.25

6 years ago

3.0.0-beta.24

6 years ago

3.0.0-beta.23

6 years ago

3.0.0-beta.22

6 years ago

3.0.0-beta.16

6 years ago

3.0.0-beta.15

6 years ago

3.0.0-beta.14

6 years ago

3.0.0-beta.13

6 years ago

3.0.0-beta.12

6 years ago

3.0.0-beta.11

6 years ago

3.0.0-beta.9

6 years ago

3.0.0-beta.8

6 years ago

3.0.0-beta.6

6 years ago

3.0.0-beta.5

6 years ago

3.0.0-alpha.11

6 years ago

3.0.0-alpha.5

6 years ago

3.0.0-alpha.0

6 years ago

3.0.0-0

6 years ago

2.0.0

6 years ago

2.0.0-alpha.17

6 years ago

2.0.0-alpha.16

6 years ago

2.0.0-alpha.5

6 years ago

1.4.1

7 years ago

1.4.0

7 years ago

1.3.0

7 years ago

1.2.3

7 years ago

1.2.1

7 years ago

1.2.0

7 years ago

1.1.2

7 years ago

1.1.0

7 years ago

1.0.0

7 years ago