ngx-mat-lib
Version:
A bunch of utilities and components to use in your Angular 7+ apps!
67 lines (66 loc) • 7.3 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
import { each, merge } from "lodash";
/**
* This Function can be assigned to FormGroup validation
* in order to verify that a given set of values
* are equal
* @param {?} controlKeys
* @return {?}
*/
export function xmatValuesMatchValidation(controlKeys) {
/** @type {?} */
const errorKey = "valuesMatchValidation";
/** @type {?} */
let error = null;
/** @type {?} */
let match = false;
if (!controlKeys.length) {
console.warn("Invalid args supplied for valuesMatchValidation. Rule will not apply.", controlKeys);
return error;
}
if (controlKeys.length === 1) {
console.error("1 arg supplied for valuesMatchValidation. Rule will never comply.", controlKeys);
return (_control_) => {
return {
[errorKey]: true
};
};
}
return (control) => {
match = false;
error = null;
each(controlKeys, (key, index) => {
if (index > 0) {
// Breaks at first false value
return match = control.value[key] === control.value[controlKeys[index - 1]];
}
});
if (!match) {
error = { [errorKey]: true };
each(controlKeys, key => {
/** @type {?} */
const singleCtrl = control.get(key);
/** @type {?} */
const toSet = merge(singleCtrl.errors, error);
singleCtrl.setErrors(toSet);
});
}
else {
each(controlKeys, key => {
/** @type {?} */
const singleCtrl = control.get(key);
if (!!singleCtrl.errors && "valuesMatchValidation" in singleCtrl.errors) {
delete singleCtrl.errors["valuesMatchValidation"];
if (!Object.keys(singleCtrl.errors).length) {
singleCtrl.setErrors(null);
}
}
});
}
return error;
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieG1hdC12YWx1ZXMtbWF0Y2gudmFsaWRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1tYXQtbGliLyIsInNvdXJjZXMiOlsibGliL3ZhbGlkYXRvcnMveG1hdC12YWx1ZXMtbWF0Y2gudmFsaWRhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQ0EsT0FBTyxFQUFDLElBQUksRUFBRSxLQUFLLEVBQUMsTUFBTSxRQUFRLENBQUM7Ozs7Ozs7O0FBT25DLE1BQU0sVUFBVSx5QkFBeUIsQ0FBQyxXQUFxQjs7SUFDM0QsTUFBTSxRQUFRLEdBQUcsdUJBQXVCLENBQUM7O0lBQ3pDLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQzs7SUFDakIsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ2xCLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFO1FBQ3JCLE9BQU8sQ0FBQyxJQUFJLENBQUMsdUVBQXVFLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDbkcsT0FBTyxLQUFLLENBQUM7S0FDaEI7SUFDRCxJQUFJLFdBQVcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQzFCLE9BQU8sQ0FBQyxLQUFLLENBQUMsbUVBQW1FLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDaEcsT0FBTyxDQUFDLFNBQTBCLEVBQW9CLEVBQUU7WUFDcEQsT0FBTztnQkFDSCxDQUFDLFFBQVEsQ0FBQyxFQUFFLElBQUk7YUFDbkIsQ0FBQztTQUNMLENBQUM7S0FDTDtJQUVELE9BQU8sQ0FBQyxPQUF3QixFQUFvQixFQUFFO1FBQ2xELEtBQUssR0FBRyxLQUFLLENBQUM7UUFDZCxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBRWIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUM3QixJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUU7O2dCQUVYLE9BQU8sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssT0FBTyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDL0U7U0FDSixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1IsS0FBSyxHQUFHLEVBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUMsQ0FBQztZQUMzQixJQUFJLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxFQUFFOztnQkFDcEIsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQzs7Z0JBQ3BDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUM5QyxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQy9CLENBQUMsQ0FBQztTQUNOO2FBQU07WUFDSCxJQUFJLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxFQUFFOztnQkFDcEIsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDcEMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sSUFBSSx1QkFBdUIsSUFBSSxVQUFVLENBQUMsTUFBTSxFQUFFO29CQUNyRSxPQUFPLFVBQVUsQ0FBQyxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQztvQkFDbEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRTt3QkFDeEMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztxQkFDOUI7aUJBQ0o7YUFDSixDQUFDLENBQUM7U0FHTjtRQUNELE9BQU8sS0FBSyxDQUFDO0tBQ2hCLENBQUM7Q0FDTCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWJzdHJhY3RDb250cm9sLCBWYWxpZGF0b3JGbiwgVmFsaWRhdGlvbkVycm9yc30gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQge2VhY2gsIG1lcmdlfSBmcm9tIFwibG9kYXNoXCI7XG5cbi8qKlxuICogVGhpcyBGdW5jdGlvbiBjYW4gYmUgYXNzaWduZWQgdG8gRm9ybUdyb3VwIHZhbGlkYXRpb25cbiAqIGluIG9yZGVyIHRvIHZlcmlmeSB0aGF0IGEgZ2l2ZW4gc2V0IG9mIHZhbHVlc1xuICogYXJlIGVxdWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB4bWF0VmFsdWVzTWF0Y2hWYWxpZGF0aW9uKGNvbnRyb2xLZXlzOiBzdHJpbmdbXSk6IFZhbGlkYXRvckZuIHtcbiAgICBjb25zdCBlcnJvcktleSA9IFwidmFsdWVzTWF0Y2hWYWxpZGF0aW9uXCI7XG4gICAgbGV0IGVycm9yID0gbnVsbDtcbiAgICBsZXQgbWF0Y2ggPSBmYWxzZTtcbiAgICBpZiAoIWNvbnRyb2xLZXlzLmxlbmd0aCkge1xuICAgICAgICBjb25zb2xlLndhcm4oXCJJbnZhbGlkIGFyZ3Mgc3VwcGxpZWQgZm9yIHZhbHVlc01hdGNoVmFsaWRhdGlvbi4gUnVsZSB3aWxsIG5vdCBhcHBseS5cIiwgY29udHJvbEtleXMpO1xuICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgfVxuICAgIGlmIChjb250cm9sS2V5cy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIjEgYXJnIHN1cHBsaWVkIGZvciB2YWx1ZXNNYXRjaFZhbGlkYXRpb24uIFJ1bGUgd2lsbCBuZXZlciBjb21wbHkuXCIsIGNvbnRyb2xLZXlzKTtcbiAgICAgICAgcmV0dXJuIChfY29udHJvbF86IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBbZXJyb3JLZXldOiB0cnVlXG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyA9PiB7XG4gICAgICAgIG1hdGNoID0gZmFsc2U7XG4gICAgICAgIGVycm9yID0gbnVsbDtcblxuICAgICAgICBlYWNoKGNvbnRyb2xLZXlzLCAoa2V5LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgaWYgKGluZGV4ID4gMCkge1xuICAgICAgICAgICAgICAgIC8vIEJyZWFrcyBhdCBmaXJzdCBmYWxzZSB2YWx1ZVxuICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaCA9IGNvbnRyb2wudmFsdWVba2V5XSA9PT0gY29udHJvbC52YWx1ZVtjb250cm9sS2V5c1tpbmRleCAtIDFdXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKCFtYXRjaCkge1xuICAgICAgICAgICAgZXJyb3IgPSB7W2Vycm9yS2V5XTogdHJ1ZX07XG4gICAgICAgICAgICBlYWNoKGNvbnRyb2xLZXlzLCBrZXkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNpbmdsZUN0cmwgPSBjb250cm9sLmdldChrZXkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRvU2V0ID0gbWVyZ2Uoc2luZ2xlQ3RybC5lcnJvcnMsIGVycm9yKTtcbiAgICAgICAgICAgICAgICBzaW5nbGVDdHJsLnNldEVycm9ycyh0b1NldCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGVhY2goY29udHJvbEtleXMsIGtleSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2luZ2xlQ3RybCA9IGNvbnRyb2wuZ2V0KGtleSk7XG4gICAgICAgICAgICAgICAgaWYgKCEhc2luZ2xlQ3RybC5lcnJvcnMgJiYgXCJ2YWx1ZXNNYXRjaFZhbGlkYXRpb25cIiBpbiBzaW5nbGVDdHJsLmVycm9ycykge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgc2luZ2xlQ3RybC5lcnJvcnNbXCJ2YWx1ZXNNYXRjaFZhbGlkYXRpb25cIl07XG4gICAgICAgICAgICAgICAgICAgIGlmICghT2JqZWN0LmtleXMoc2luZ2xlQ3RybC5lcnJvcnMpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlQ3RybC5zZXRFcnJvcnMobnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgIH07XG59XG4iXX0=