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

55 lines (54 loc) 6.81 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ import { ObjectMaker } from "../util/object-maker"; /** * @param {?} conditionalValidationProps * @return {?} */ export function conditionalChangeValidator(conditionalValidationProps) { /** @type {?} */ var timeOuts = []; /** @type {?} */ var setTimeOut = (control) => { /** @type {?} */ var timeOut = window.setTimeout(t => { window.clearTimeout(timeOut); control.updateValueAndValidity(); }, 100); }; return (control) => { /** @type {?} */ const parentFormGroup = control.parent; if (parentFormGroup) { timeOuts = []; conditionalValidationProps.forEach(t => { if (t.indexOf("[]") != -1) { /** @type {?} */ var splitText = t.split("[]"); /** @type {?} */ var formArray = /** @type {?} */ (parentFormGroup.get([splitText[0]])); formArray.controls.forEach(formGroup => { /** @type {?} */ var abstractControl = formGroup.get(splitText[1]); if (abstractControl) { setTimeOut(abstractControl); } }); } else { /** @type {?} */ var control = parentFormGroup.get([t]); if (!control) control = parentFormGroup.root.get([t]); if (control) { setTimeOut(control); } } }); } return ObjectMaker.null(); }; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZGl0aW9uYWwtY2hhbmdlLnZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bqc2JhaWxleS9yZWFjdGl2ZS1mb3JtLXZhbGlkYXRvcnMvIiwic291cmNlcyI6WyJyZWFjdGl2ZS1mb3JtLXZhbGlkYXRvcnMvY29uZGl0aW9uYWwtY2hhbmdlLnZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBVUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7OztBQU1uRCxNQUFNLHFDQUFxQywwQkFBb0M7O0lBQzNFLElBQUksUUFBUSxHQUFhLEVBQUUsQ0FBQzs7SUFDNUIsSUFBSSxVQUFVLEdBQUcsQ0FBQyxPQUF3QixFQUFFLEVBQUU7O1FBQzFDLElBQUksT0FBTyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDaEMsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM3QixPQUFPLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztTQUNwQyxFQUFFLEdBQUcsQ0FBQyxDQUFBO0tBQ1YsQ0FBQTtJQUNELE1BQU0sQ0FBQyxDQUFDLE9BQXdCLEVBQTBCLEVBQUU7O1FBQ3hELE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDdkMsRUFBRSxDQUFDLENBQUMsZUFBZSxDQUFDLENBQ3BCLENBQUM7WUFDRyxRQUFRLEdBQUcsRUFBRSxDQUFDO1lBQ2QsMEJBQTBCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNuQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7b0JBQ3hCLElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7O29CQUM5QixJQUFJLFNBQVMscUJBQWMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUM7b0JBQy9ELFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFOzt3QkFDbkMsSUFBSSxlQUFlLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDbEQsRUFBRSxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQzs0QkFDbEIsVUFBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDO3lCQUMvQjtxQkFDSixDQUFDLENBQUE7aUJBQ0w7Z0JBQUMsSUFBSSxDQUFDLENBQUM7O29CQUNKLElBQUksT0FBTyxHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUN2QyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQzt3QkFDVCxPQUFPLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUM1QyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO3dCQUNWLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztxQkFDdkI7aUJBQ0o7YUFFSixDQUFDLENBQUE7U0FDTDtRQUNELE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7S0FDN0IsQ0FBQTtDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIFZhbGlkYXRvckZuLFxyXG4gICAgQWJzdHJhY3RDb250cm9sLFxyXG5cclxuICAgIEZvcm1BcnJheVxyXG59IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5cclxuaW1wb3J0IHsgUmVnZXhWYWxpZGF0b3IgfSBmcm9tIFwiLi4vdXRpbC9yZWdleC12YWxpZGF0b3JcIjtcclxuaW1wb3J0IHsgUmVnRXhSdWxlIH0gZnJvbSBcIi4uL3V0aWwvcmVnZXgtcnVsZXNcIjtcclxuaW1wb3J0IHsgRGVjb3JhdG9yTmFtZSB9IGZyb20gXCIuLi91dGlsL2RlY29yYXRvci1uYW1lXCJcclxuaW1wb3J0IHsgT2JqZWN0TWFrZXIgfSBmcm9tIFwiLi4vdXRpbC9vYmplY3QtbWFrZXJcIjtcclxuaW1wb3J0IHsgQWxwaGFDb25maWcgfSBmcm9tIFwiLi4vbW9kZWxzL2NvbmZpZy9hbHBoYS1jb25maWdcIjtcclxuaW1wb3J0IHsgTGlucSB9IGZyb20gXCIuLi91dGlsL2xpbnFcIjtcclxuaW1wb3J0IHsgQXBwbGljYXRpb25VdGlsIH0gZnJvbSBcIi4uL3V0aWwvYXBwLXV0aWxcIjtcclxuaW1wb3J0IHsgQW5ub3RhdGlvblR5cGVzIH0gZnJvbSBcIi4uL2NvcmUvdmFsaWRhdG9yLnN0YXRpY1wiO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNvbmRpdGlvbmFsQ2hhbmdlVmFsaWRhdG9yKGNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzOiBzdHJpbmdbXSk6IFZhbGlkYXRvckZuIHtcclxuICAgIHZhciB0aW1lT3V0czogbnVtYmVyW10gPSBbXTtcclxuICAgIHZhciBzZXRUaW1lT3V0ID0gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xyXG4gICAgICAgIHZhciB0aW1lT3V0ID0gd2luZG93LnNldFRpbWVvdXQodCA9PiB7XHJcbiAgICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGltZU91dCk7XHJcbiAgICAgICAgICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgIH0sIDEwMClcclxuICAgIH1cclxuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9PiB7XHJcbiAgICAgICAgY29uc3QgcGFyZW50Rm9ybUdyb3VwID0gY29udHJvbC5wYXJlbnQ7XHJcbiAgICAgICAgaWYgKHBhcmVudEZvcm1Hcm91cClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRpbWVPdXRzID0gW107XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbmFsVmFsaWRhdGlvblByb3BzLmZvckVhY2godCA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodC5pbmRleE9mKFwiW11cIikgIT0gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgc3BsaXRUZXh0ID0gdC5zcGxpdChcIltdXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBmb3JtQXJyYXkgPSA8Rm9ybUFycmF5PnBhcmVudEZvcm1Hcm91cC5nZXQoW3NwbGl0VGV4dFswXV0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGZvcm1BcnJheS5jb250cm9scy5mb3JFYWNoKGZvcm1Hcm91cCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhYnN0cmFjdENvbnRyb2wgPSBmb3JtR3JvdXAuZ2V0KHNwbGl0VGV4dFsxXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhYnN0cmFjdENvbnRyb2wpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVPdXQoYWJzdHJhY3RDb250cm9sKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBjb250cm9sID0gcGFyZW50Rm9ybUdyb3VwLmdldChbdF0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghY29udHJvbClcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbCA9IHBhcmVudEZvcm1Hcm91cC5yb290LmdldChbdF0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb250cm9sKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVPdXQoY29udHJvbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBPYmplY3RNYWtlci5udWxsKCk7XHJcbiAgICB9XHJcbn1cclxuIl19