Custom validation
You can add custom validation with evalValidators instruction.
evalValidators?: {
errorCodes: {
code: string;
message: string;
}[];
/**
* Special props:
* - $val
* - $error
* - $form
*
* Example:
* if (!$val.firstName || $val.firstName.length !== 6) throw [new $error('prop/is-exact-length', { length: 6 })]
*/
$evals: string[];
/**
* Form value dependencies. You can put asterisk at the end.
* Example:
* - a.b.c
* - a.b.c.d.f.g.h
* - a.d[]
* - a.d[].r.t[].d
*
* If you need * support ask for it.
*/
dependencies?: string[];
};
A + B = C example
{
"$theme": "rounded/blue",
"schema": {
"type": "object",
"properties": {
"a": { "type": "number" },
"b": { "type": "number" },
"ab": { "type": "number", "evalValidators": {
"errorCodes" : [
{
"code" : "custom",
"message": "NOPE"
}
],
"$evals" : [
"if (($val.a + $val.b) !== $val.ab) { throw new $error('custom') }"
],
"dependencies": [ "a", "b" ]
}}
}
},
"layout": {
"type": "div",
"items": [ { "key": "a" }, { "type": "span", "title": "+" }, { "key": "b" },
{ "type": "span", "title": "=" }, { "key": "ab" } ]
}
}
Last updated
Was this helpful?