UNPKG

@jsbailey/reactive-form-validators

Version:

[![npm version](https://badge.fury.io/js/%40rxweb%2Freactive-form-validators.svg)](https://badge.fury.io/js/%40rxweb%2Freactive-form-validators) [![Gitter](https://badges.gitter.im/rx-web/Lobby.svg)](https://gitter.im/rxweb-project/rxweb?utm_source=badge

33 lines (32 loc) 4.86 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ import { RegexValidator } from "../util/regex-validator"; import { Linq } from "../util/linq"; import { ApplicationUtil } from "../util/app-util"; import { ObjectMaker } from "../util/object-maker"; /** * @param {?} config * @return {?} */ export function patternValidator(config) { return (control) => { /** @type {?} */ let controlValue = control.value; /** @type {?} */ const formGroupValue = ApplicationUtil.getParentObjectValue(control); config = ApplicationUtil.getConfigObject(config); /** @type {?} */ const parentObject = (control.parent) ? control.parent.value : undefined; if (Linq.IsPassed(formGroupValue, config.conditionalExpression, parentObject)) { if (RegexValidator.isNotBlank(controlValue)) { for (var pattern in config.pattern) if (!(RegexValidator.isValid(controlValue, config.pattern[pattern]))) return ObjectMaker.toJson(pattern, config.message || null, [controlValue]); } } return ObjectMaker.null(); }; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0dGVybi52YWxpZGF0b3IuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AanNiYWlsZXkvcmVhY3RpdmUtZm9ybS12YWxpZGF0b3JzLyIsInNvdXJjZXMiOlsicmVhY3RpdmUtZm9ybS12YWxpZGF0b3JzL3BhdHRlcm4udmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFJQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFekQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNwQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7OztBQUluRCxNQUFNLDJCQUEyQixNQUFxQjtJQUNsRCxNQUFNLENBQUMsQ0FBQyxPQUF3QixFQUEwQixFQUFFOztRQUN4RCxJQUFJLFlBQVksR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDOztRQUNqQyxNQUFNLGNBQWMsR0FBRyxlQUFlLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckUsTUFBTSxHQUFHLGVBQWUsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7O1FBQ2pELE1BQU0sWUFBWSxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ3pFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUUsRUFBRSxDQUFDLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzFDLEdBQUcsQ0FBQyxDQUFDLElBQUksT0FBTyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUM7b0JBQy9CLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDckUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLElBQUksSUFBSSxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQTthQUNqRjtTQUNKO1FBQ0QsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztLQUM3QixDQUFBO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgVmFsaWRhdG9yRm4sXHJcbiAgICBBYnN0cmFjdENvbnRyb2xcclxufSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgUmVnZXhWYWxpZGF0b3IgfSBmcm9tIFwiLi4vdXRpbC9yZWdleC12YWxpZGF0b3JcIjtcclxuaW1wb3J0IHsgUmFuZ2VDb25maWcgfSBmcm9tIFwiLi4vbW9kZWxzL2NvbmZpZy9yYW5nZS1jb25maWdcIjtcclxuaW1wb3J0IHsgTGlucSB9IGZyb20gXCIuLi91dGlsL2xpbnFcIjtcclxuaW1wb3J0IHsgQXBwbGljYXRpb25VdGlsIH0gZnJvbSBcIi4uL3V0aWwvYXBwLXV0aWxcIjtcclxuaW1wb3J0IHsgRGVjb3JhdG9yTmFtZSB9IGZyb20gXCIuLi91dGlsL2RlY29yYXRvci1uYW1lXCI7XHJcbmltcG9ydCB7IE9iamVjdE1ha2VyIH0gZnJvbSBcIi4uL3V0aWwvb2JqZWN0LW1ha2VyXCI7XHJcbmltcG9ydCB7IFBhdHRlcm5Db25maWcgfSBmcm9tIFwiLi4vbW9kZWxzL2NvbmZpZy9wYXR0ZXJuLWNvbmZpZ1wiO1xyXG5pbXBvcnQgeyBBbm5vdGF0aW9uVHlwZXMgfSBmcm9tIFwiLi4vY29yZS92YWxpZGF0b3Iuc3RhdGljXCI7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcGF0dGVyblZhbGlkYXRvcihjb25maWc6IFBhdHRlcm5Db25maWcpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPT4ge1xyXG4gICAgICAgIGxldCBjb250cm9sVmFsdWUgPSBjb250cm9sLnZhbHVlO1xyXG4gICAgICAgIGNvbnN0IGZvcm1Hcm91cFZhbHVlID0gQXBwbGljYXRpb25VdGlsLmdldFBhcmVudE9iamVjdFZhbHVlKGNvbnRyb2wpO1xyXG4gICAgICAgIGNvbmZpZyA9IEFwcGxpY2F0aW9uVXRpbC5nZXRDb25maWdPYmplY3QoY29uZmlnKTtcclxuICAgICAgICBjb25zdCBwYXJlbnRPYmplY3QgPSAoY29udHJvbC5wYXJlbnQpID8gY29udHJvbC5wYXJlbnQudmFsdWUgOiB1bmRlZmluZWQ7XHJcbiAgICAgICAgaWYgKExpbnEuSXNQYXNzZWQoZm9ybUdyb3VwVmFsdWUsIGNvbmZpZy5jb25kaXRpb25hbEV4cHJlc3Npb24sIHBhcmVudE9iamVjdCkpIHtcclxuICAgICAgICAgICAgaWYgKFJlZ2V4VmFsaWRhdG9yLmlzTm90QmxhbmsoY29udHJvbFZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgcGF0dGVybiBpbiBjb25maWcucGF0dGVybilcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIShSZWdleFZhbGlkYXRvci5pc1ZhbGlkKGNvbnRyb2xWYWx1ZSwgY29uZmlnLnBhdHRlcm5bcGF0dGVybl0pKSlcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0TWFrZXIudG9Kc29uKHBhdHRlcm4sIGNvbmZpZy5tZXNzYWdlIHx8IG51bGwsIFtjb250cm9sVmFsdWVdKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBPYmplY3RNYWtlci5udWxsKCk7XHJcbiAgICB9XHJcbn1cclxuIl19