Add new validators

This commit is contained in:
Eric Schultz 2018-10-01 15:09:10 -05:00
parent 60760fbb8d
commit 0bae015a01

View file

@ -1,6 +1,7 @@
// License: LGPL-3.0-or-later
import * as Regex from './regex'
import {Field, Form} from "mobx-react-form";
import moment = require("moment");
interface ValidationInput {
@ -42,6 +43,35 @@ export class Validations {
]
}
static isNumber({field, validator}:ValidationInput):StringBoolTuple {
return [
!isNaN(parseFloat(field.value)),
`${field.label} must be a number`
]
}
static isGreaterThanOrEqualTo(value:number) : ({field, validator}:ValidationInput) => StringBoolTuple
{
return ({field, validator}:ValidationInput) => {
return [
parseFloat(field.value) >= value,
`${field.label} must be at least ${value}`
]
}
}
static isLessThanOrEqualTo(value:number, flip:boolean=false) : ({field, validator}:ValidationInput) => StringBoolTuple
{
return ({field, validator}:ValidationInput) => {
let float = parseFloat(field.value)
return [
(flip ? -1 * float : float) <= value,
`${field.label} must be no more than ${value}`
]
}
}
static optional(validation:Validation) : Validation {
return ({field, form, validator}:ValidationInput) => {
if (!field.value || validator.isEmpty(field.value)){
@ -53,5 +83,15 @@ export class Validations {
};
}
static isDate(format:string): ({field, validator}:ValidationInput) => StringBoolTuple {
return ({field, validator}:ValidationInput) => {
let m = moment(field.value, format, true);
return [
m.isValid(),
`${field.label} must be a date with format: ${format}`
]
}
}
}