truly-ui
Version:
Web Components for Desktop Applications.
54 lines • 7.12 kB
JavaScript
import { Validators, } from '@angular/forms';
import { of } from 'rxjs';
const normalizeValidator = (validator) => {
const func = validator.validate.bind(validator);
if (typeof func === 'function') {
return (c) => func(c);
}
else {
return validator;
}
};
export const composeValidators = (validators) => {
if (validators == null || validators.length === 0) {
return null;
}
return Validators.compose(validators.map(normalizeValidator));
};
export const validate = (validators, asyncValidators) => {
return (control) => {
const synchronousValid = () => composeValidators(validators)(control);
if (asyncValidators) {
const asyncValidator = composeValidators(asyncValidators);
return asyncValidator(control).map(v => {
const secondary = synchronousValid();
if (secondary || v) { // compose async and sync validator results
return Object.assign({}, secondary, v);
}
});
}
if (validators) {
return of(synchronousValid());
}
return of(null);
};
};
export const message = (validator, key) => {
switch (key) {
case 'required':
return 'Please enter a value';
case 'pattern':
return 'Value does not match required pattern';
case 'minlength':
return 'Value must be N characters';
case 'maxlength':
return 'Value must be a maximum of N characters';
}
switch (typeof validator[key]) {
case 'string':
return validator[key];
default:
return `Validation failed: ${key}`;
}
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cnVseS11aS9zcmMvY29tcG9uZW50cy9pbnB1dC9jb3JlL3ZhbGlkYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFJTCxVQUFVLEdBRVgsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBUzFCLE1BQU0sa0JBQWtCLEdBQ3RCLENBQUMsU0FBa0MsRUFBa0MsRUFBRTtJQUNyRSxNQUFNLElBQUksR0FBSSxTQUF1QixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDL0QsSUFBSSxPQUFPLElBQUksS0FBSyxVQUFVLEVBQUU7UUFDOUIsT0FBTyxDQUFDLENBQWtCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN4QztTQUFNO1FBQ0wsT0FBd0MsU0FBUyxDQUFDO0tBQ25EO0FBQ0gsQ0FBQyxDQUFDO0FBRUosTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQzVCLENBQUMsVUFBMEIsRUFBa0MsRUFBRTtJQUM3RCxJQUFJLFVBQVUsSUFBSSxJQUFJLElBQUksVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7UUFDakQsT0FBTyxJQUFJLENBQUM7S0FDYjtJQUNELE9BQU8sVUFBVSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQztBQUNoRSxDQUFDLENBQUM7QUFFSixNQUFNLENBQUMsTUFBTSxRQUFRLEdBQ25CLENBQUMsVUFBMEIsRUFBRSxlQUFvQyxFQUFFLEVBQUU7SUFDbkUsT0FBTyxDQUFDLE9BQXdCLEVBQUUsRUFBRTtRQUNsQyxNQUFNLGdCQUFnQixHQUFHLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXRFLElBQUksZUFBZSxFQUFFO1lBQ25CLE1BQU0sY0FBYyxHQUFHLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBRTFELE9BQU8sY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDckMsTUFBTSxTQUFTLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztnQkFDckMsSUFBSSxTQUFTLElBQUksQ0FBQyxFQUFFLEVBQUUsMkNBQTJDO29CQUMvRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztpQkFDeEM7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNKO1FBRUQsSUFBSSxVQUFVLEVBQUU7WUFDZCxPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7U0FDL0I7UUFFRCxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQixDQUFDLENBQUM7QUFDSixDQUFDLENBQUM7QUFFSixNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxTQUEyQixFQUFFLEdBQVcsRUFBVSxFQUFFO0lBQzFFLFFBQVEsR0FBRyxFQUFFO1FBQ1gsS0FBSyxVQUFVO1lBQ2IsT0FBTyxzQkFBc0IsQ0FBQztRQUNoQyxLQUFLLFNBQVM7WUFDWixPQUFPLHVDQUF1QyxDQUFDO1FBQ2pELEtBQUssV0FBVztZQUNkLE9BQU8sNEJBQTRCLENBQUM7UUFDdEMsS0FBSyxXQUFXO1lBQ2QsT0FBTyx5Q0FBeUMsQ0FBQztLQUNwRDtJQUVELFFBQVEsT0FBTyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDN0IsS0FBSyxRQUFRO1lBQ1gsT0FBZ0IsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pDO1lBQ0UsT0FBTyxzQkFBc0IsR0FBRyxFQUFFLENBQUM7S0FDdEM7QUFDSCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIEFzeW5jVmFsaWRhdG9yRm4sXG4gIFZhbGlkYXRvcixcbiAgVmFsaWRhdG9ycyxcbiAgVmFsaWRhdG9yRm4sXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgb2YgfSBmcm9tICdyeGpzJztcblxuXG5leHBvcnQgaW50ZXJmYWNlIFZhbGlkYXRpb25SZXN1bHQge1t2YWxpZGF0b3I6IHN0cmluZ106IHN0cmluZyB8IGJvb2xlYW47IH1cblxuZXhwb3J0IHR5cGUgQXN5bmNWYWxpZGF0b3JBcnJheSA9IEFycmF5PFZhbGlkYXRvciB8IEFzeW5jVmFsaWRhdG9yRm4+O1xuXG5leHBvcnQgdHlwZSBWYWxpZGF0b3JBcnJheSA9IEFycmF5PFZhbGlkYXRvciB8IFZhbGlkYXRvckZuPjtcblxuY29uc3Qgbm9ybWFsaXplVmFsaWRhdG9yID1cbiAgKHZhbGlkYXRvcjogVmFsaWRhdG9yIHwgVmFsaWRhdG9yRm4pOiBWYWxpZGF0b3JGbiB8IEFzeW5jVmFsaWRhdG9yRm4gPT4ge1xuICAgIGNvbnN0IGZ1bmMgPSAodmFsaWRhdG9yIGFzIFZhbGlkYXRvcikudmFsaWRhdGUuYmluZCh2YWxpZGF0b3IpO1xuICAgIGlmICh0eXBlb2YgZnVuYyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIChjOiBBYnN0cmFjdENvbnRyb2wpID0+IGZ1bmMoYyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiA8VmFsaWRhdG9yRm4gfCBBc3luY1ZhbGlkYXRvckZuPiB2YWxpZGF0b3I7XG4gICAgfVxuICB9O1xuXG5leHBvcnQgY29uc3QgY29tcG9zZVZhbGlkYXRvcnMgPVxuICAodmFsaWRhdG9yczogVmFsaWRhdG9yQXJyYXkpOiBBc3luY1ZhbGlkYXRvckZuIHwgVmFsaWRhdG9yRm4gPT4ge1xuICAgIGlmICh2YWxpZGF0b3JzID09IG51bGwgfHwgdmFsaWRhdG9ycy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gVmFsaWRhdG9ycy5jb21wb3NlKHZhbGlkYXRvcnMubWFwKG5vcm1hbGl6ZVZhbGlkYXRvcikpO1xuICB9O1xuXG5leHBvcnQgY29uc3QgdmFsaWRhdGUgPVxuICAodmFsaWRhdG9yczogVmFsaWRhdG9yQXJyYXksIGFzeW5jVmFsaWRhdG9yczogQXN5bmNWYWxpZGF0b3JBcnJheSkgPT4ge1xuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiB7XG4gICAgICBjb25zdCBzeW5jaHJvbm91c1ZhbGlkID0gKCkgPT4gY29tcG9zZVZhbGlkYXRvcnModmFsaWRhdG9ycykoY29udHJvbCk7XG5cbiAgICAgIGlmIChhc3luY1ZhbGlkYXRvcnMpIHtcbiAgICAgICAgY29uc3QgYXN5bmNWYWxpZGF0b3IgPSBjb21wb3NlVmFsaWRhdG9ycyhhc3luY1ZhbGlkYXRvcnMpO1xuXG4gICAgICAgIHJldHVybiBhc3luY1ZhbGlkYXRvcihjb250cm9sKS5tYXAodiA9PiB7XG4gICAgICAgICAgY29uc3Qgc2Vjb25kYXJ5ID0gc3luY2hyb25vdXNWYWxpZCgpO1xuICAgICAgICAgIGlmIChzZWNvbmRhcnkgfHwgdikgeyAvLyBjb21wb3NlIGFzeW5jIGFuZCBzeW5jIHZhbGlkYXRvciByZXN1bHRzXG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgc2Vjb25kYXJ5LCB2KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAodmFsaWRhdG9ycykge1xuICAgICAgICByZXR1cm4gb2Yoc3luY2hyb25vdXNWYWxpZCgpKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgIH07XG4gIH07XG5cbmV4cG9ydCBjb25zdCBtZXNzYWdlID0gKHZhbGlkYXRvcjogVmFsaWRhdGlvblJlc3VsdCwga2V5OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBzd2l0Y2ggKGtleSkge1xuICAgIGNhc2UgJ3JlcXVpcmVkJzpcbiAgICAgIHJldHVybiAnUGxlYXNlIGVudGVyIGEgdmFsdWUnO1xuICAgIGNhc2UgJ3BhdHRlcm4nOlxuICAgICAgcmV0dXJuICdWYWx1ZSBkb2VzIG5vdCBtYXRjaCByZXF1aXJlZCBwYXR0ZXJuJztcbiAgICBjYXNlICdtaW5sZW5ndGgnOlxuICAgICAgcmV0dXJuICdWYWx1ZSBtdXN0IGJlIE4gY2hhcmFjdGVycyc7XG4gICAgY2FzZSAnbWF4bGVuZ3RoJzpcbiAgICAgIHJldHVybiAnVmFsdWUgbXVzdCBiZSBhIG1heGltdW0gb2YgTiBjaGFyYWN0ZXJzJztcbiAgfVxuXG4gIHN3aXRjaCAodHlwZW9mIHZhbGlkYXRvcltrZXldKSB7XG4gICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgIHJldHVybiA8c3RyaW5nPiB2YWxpZGF0b3Jba2V5XTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGBWYWxpZGF0aW9uIGZhaWxlZDogJHtrZXl9YDtcbiAgfVxufTtcbiJdfQ==