ngx-ui-hero
Version:
Simple, fast and reliable utilities for Angular.
58 lines • 8.62 kB
JavaScript
import { of } from 'rxjs';
import { Validators } from '@angular/forms';
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 handleValidationError = (errorMessage, label) => {
const re = /{label}/gi;
return errorMessage.replace(re, label);
};
export const message = (validator, key, label, validationMessages) => {
switch (key) {
case 'required':
return handleValidationError(validationMessages.required, label);
case 'pattern':
return handleValidationError(validationMessages.pattern, label);
case 'minlength':
return handleValidationError(validationMessages.minlength, label);
case 'maxlength':
return handleValidationError(validationMessages.maxlength, label);
}
switch (typeof validator[key]) {
case 'string':
return validator[key];
default:
return handleValidationError(validationMessages.invalid, label);
}
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdWktaGVyby9zcmMvbGliL2lucHV0LWZvcm1zL2Jhc2UvdmFsaWRhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUxQixPQUFPLEVBQTZELFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBT3ZHLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxTQUFrQyxFQUFrQyxFQUFFO0lBQzlGLE1BQU0sSUFBSSxHQUFJLFNBQXVCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMvRCxJQUFJLE9BQU8sSUFBSSxLQUFLLFVBQVUsRUFBRTtRQUM1QixPQUFPLENBQUMsQ0FBa0IsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQzFDO1NBQU07UUFDSCxPQUF3QyxTQUFTLENBQUM7S0FDckQ7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLFVBQTBCLEVBQWtDLEVBQUU7SUFDNUYsSUFBSSxVQUFVLElBQUksSUFBSSxJQUFJLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQy9DLE9BQU8sSUFBSSxDQUFDO0tBQ2Y7SUFDRCxPQUFPLFVBQVUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7QUFDbEUsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLENBQUMsVUFBMEIsRUFBRSxlQUFvQyxFQUFFLEVBQUU7SUFDekYsT0FBTyxDQUFDLE9BQXdCLEVBQUUsRUFBRTtRQUNoQyxNQUFNLGdCQUFnQixHQUFHLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXRFLElBQUksZUFBZSxFQUFFO1lBQ2pCLE1BQU0sY0FBYyxHQUFHLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBRTFELE9BQU8sY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFO2dCQUMxQyxNQUFNLFNBQVMsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUNyQyxJQUFJLFNBQVMsSUFBSSxDQUFDLEVBQUUsRUFBRSwyQ0FBMkM7b0JBQzdELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO2lCQUMxQztZQUNMLENBQUMsQ0FBQyxDQUFDO1NBQ047UUFFRCxJQUFJLFVBQVUsRUFBRTtZQUNaLE9BQU8sRUFBRSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQztTQUNqQztRQUVELE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BCLENBQUMsQ0FBQztBQUNOLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsWUFBb0IsRUFBRSxLQUFhLEVBQVUsRUFBRTtJQUNqRixNQUFNLEVBQUUsR0FBRyxXQUFXLENBQUM7SUFDdkIsT0FBTyxZQUFZLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUMzQyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxTQUEyQixFQUFFLEdBQVcsRUFBRSxLQUFhLEVBQUUsa0JBQXVCLEVBQVUsRUFBRTtJQUNoSCxRQUFRLEdBQUcsRUFBRTtRQUNULEtBQUssVUFBVTtZQUNYLE9BQU8scUJBQXFCLENBQUMsa0JBQWtCLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3JFLEtBQUssU0FBUztZQUNWLE9BQU8scUJBQXFCLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3BFLEtBQUssV0FBVztZQUNaLE9BQU8scUJBQXFCLENBQUMsa0JBQWtCLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3RFLEtBQUssV0FBVztZQUNaLE9BQU8scUJBQXFCLENBQUMsa0JBQWtCLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0tBQ3pFO0lBRUQsUUFBUSxPQUFPLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUMzQixLQUFLLFFBQVE7WUFDVCxPQUFnQixTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkM7WUFDSSxPQUFPLHFCQUFxQixDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztLQUN2RTtBQUNMLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG9mIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgQXN5bmNWYWxpZGF0b3JGbiwgVmFsaWRhdG9yLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmludGVyZmFjZS1vdmVyLXR5cGUtbGl0ZXJhbFxuZXhwb3J0IHR5cGUgVmFsaWRhdGlvblJlc3VsdCA9IHtbdmFsaWRhdG9yOiBzdHJpbmddOiBzdHJpbmcgfCBib29sZWFufTtcbmV4cG9ydCB0eXBlIEFzeW5jVmFsaWRhdG9yQXJyYXkgPSBBcnJheTxWYWxpZGF0b3IgfCBBc3luY1ZhbGlkYXRvckZuPjtcbmV4cG9ydCB0eXBlIFZhbGlkYXRvckFycmF5ID0gQXJyYXk8VmFsaWRhdG9yIHwgVmFsaWRhdG9yRm4+O1xuXG5jb25zdCBub3JtYWxpemVWYWxpZGF0b3IgPSAodmFsaWRhdG9yOiBWYWxpZGF0b3IgfCBWYWxpZGF0b3JGbik6IFZhbGlkYXRvckZuIHwgQXN5bmNWYWxpZGF0b3JGbiA9PiB7XG4gICAgY29uc3QgZnVuYyA9ICh2YWxpZGF0b3IgYXMgVmFsaWRhdG9yKS52YWxpZGF0ZS5iaW5kKHZhbGlkYXRvcik7XG4gICAgaWYgKHR5cGVvZiBmdW5jID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiAoYzogQWJzdHJhY3RDb250cm9sKSA9PiBmdW5jKGMpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiA8VmFsaWRhdG9yRm4gfCBBc3luY1ZhbGlkYXRvckZuPiB2YWxpZGF0b3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGNvbXBvc2VWYWxpZGF0b3JzID0gKHZhbGlkYXRvcnM6IFZhbGlkYXRvckFycmF5KTogQXN5bmNWYWxpZGF0b3JGbiB8IFZhbGlkYXRvckZuID0+IHtcbiAgICBpZiAodmFsaWRhdG9ycyA9PSBudWxsIHx8IHZhbGlkYXRvcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gVmFsaWRhdG9ycy5jb21wb3NlKHZhbGlkYXRvcnMubWFwKG5vcm1hbGl6ZVZhbGlkYXRvcikpO1xufTtcblxuZXhwb3J0IGNvbnN0IHZhbGlkYXRlID0gKHZhbGlkYXRvcnM6IFZhbGlkYXRvckFycmF5LCBhc3luY1ZhbGlkYXRvcnM6IEFzeW5jVmFsaWRhdG9yQXJyYXkpID0+IHtcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xuICAgICAgICBjb25zdCBzeW5jaHJvbm91c1ZhbGlkID0gKCkgPT4gY29tcG9zZVZhbGlkYXRvcnModmFsaWRhdG9ycykoY29udHJvbCk7XG5cbiAgICAgICAgaWYgKGFzeW5jVmFsaWRhdG9ycykge1xuICAgICAgICAgICAgY29uc3QgYXN5bmNWYWxpZGF0b3IgPSBjb21wb3NlVmFsaWRhdG9ycyhhc3luY1ZhbGlkYXRvcnMpO1xuXG4gICAgICAgICAgICByZXR1cm4gYXN5bmNWYWxpZGF0b3IoY29udHJvbCkubWFwKCh2OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWNvbmRhcnkgPSBzeW5jaHJvbm91c1ZhbGlkKCk7XG4gICAgICAgICAgICAgICAgaWYgKHNlY29uZGFyeSB8fCB2KSB7IC8vIGNvbXBvc2UgYXN5bmMgYW5kIHN5bmMgdmFsaWRhdG9yIHJlc3VsdHNcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHNlY29uZGFyeSwgdik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmFsaWRhdG9ycykge1xuICAgICAgICAgICAgcmV0dXJuIG9mKHN5bmNocm9ub3VzVmFsaWQoKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVWYWxpZGF0aW9uRXJyb3IgPSAoZXJyb3JNZXNzYWdlOiBzdHJpbmcsIGxhYmVsOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICAgIGNvbnN0IHJlID0gL3tsYWJlbH0vZ2k7XG4gICAgcmV0dXJuIGVycm9yTWVzc2FnZS5yZXBsYWNlKHJlLCBsYWJlbCk7XG59O1xuXG5leHBvcnQgY29uc3QgbWVzc2FnZSA9ICh2YWxpZGF0b3I6IFZhbGlkYXRpb25SZXN1bHQsIGtleTogc3RyaW5nLCBsYWJlbDogc3RyaW5nLCB2YWxpZGF0aW9uTWVzc2FnZXM6IGFueSk6IHN0cmluZyA9PiB7XG4gICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgY2FzZSAncmVxdWlyZWQnOlxuICAgICAgICAgICAgcmV0dXJuIGhhbmRsZVZhbGlkYXRpb25FcnJvcih2YWxpZGF0aW9uTWVzc2FnZXMucmVxdWlyZWQsIGxhYmVsKTtcbiAgICAgICAgY2FzZSAncGF0dGVybic6XG4gICAgICAgICAgICByZXR1cm4gaGFuZGxlVmFsaWRhdGlvbkVycm9yKHZhbGlkYXRpb25NZXNzYWdlcy5wYXR0ZXJuLCBsYWJlbCk7XG4gICAgICAgIGNhc2UgJ21pbmxlbmd0aCc6XG4gICAgICAgICAgICByZXR1cm4gaGFuZGxlVmFsaWRhdGlvbkVycm9yKHZhbGlkYXRpb25NZXNzYWdlcy5taW5sZW5ndGgsIGxhYmVsKTtcbiAgICAgICAgY2FzZSAnbWF4bGVuZ3RoJzpcbiAgICAgICAgICAgIHJldHVybiBoYW5kbGVWYWxpZGF0aW9uRXJyb3IodmFsaWRhdGlvbk1lc3NhZ2VzLm1heGxlbmd0aCwgbGFiZWwpO1xuICAgIH1cblxuICAgIHN3aXRjaCAodHlwZW9mIHZhbGlkYXRvcltrZXldKSB7XG4gICAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgICAgICByZXR1cm4gPHN0cmluZz4gdmFsaWRhdG9yW2tleV07XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gaGFuZGxlVmFsaWRhdGlvbkVycm9yKHZhbGlkYXRpb25NZXNzYWdlcy5pbnZhbGlkLCBsYWJlbCk7XG4gICAgfVxufTtcbiJdfQ==