aurelia-validatejs
Version:
This is a plugin that will allow using validate.js in your Aurelia application for expressive validation.
57 lines (53 loc) • 1.5 kB
JavaScript
import {Validator, ValidationEngine, length, required, date, datetime, email, equality, url, numericality} from 'aurelia-validatejs';
export class Fluent {
model;
constructor() {
this.model = new Model();
this.validator = new Validator(this.model)
.ensure('firstName')
.required()
.length({minimum: 3, maximum: 10})
.ensure('lastName')
.required()
.ensure('email')
.email()
.ensure('password')
.length({ minimum: 5, maximum: 25 })
.ensure('confirmPassword')
.equality('password')
.ensure('blueOrRed')
.inclusion(['blue', 'red'])
.ensure('gender')
.exclusion(['male'])
.ensure('website')
.url()
.ensure('age')
.numericality({ onlyInteger: true, lessThan: 115, greaterThan: 0 })
.ensure('zipCode')
.format(/\d{5}(-\d{4})?/);
this.reporter = ValidationEngine.getValidationReporter(this.model);
this.observer = this.reporter.subscribe(result => {
console.log(result);
});
}
validate() {
this.validator.validate();
}
detached() {
this.observer.dispose();
}
}
class Model {
firstName = 'Luke';
lastName = 'Skywalker';
// @date lastUpdated = new Date();
// @datetime lastTimeUpdated = new Date();
email = 'luke@skywalker.net';
password = 'equal';
confirmPassword = 'equal';
blueOrRed = 'yellow';
gender = 'male';
website = 'http://www.google.com';
age = 25;
zipCode = '12345';
}