@bi8/am-dyn-form
Version:
ng update @angular/cli yarn add @angular/cli
57 lines • 7.56 kB
JavaScript
import { FormGroup } from "@angular/forms";
import { filter, tap } from "rxjs/operators";
import { pipeFromArray } from 'rxjs/internal/util/pipe';
export class DynFormGroup extends FormGroup {
constructor(options = {}, controls) {
super(controls);
this.config = {};
if (options) {
this.key = options.key || '';
this.dir = options.dir || '';
}
}
addSlaveObserver(master, slave, options) {
let masterField = this.get(master);
let slaveField = this.get(slave);
if (!options) {
options = { disable: true, reset: true, apply: true };
}
else {
if (options.reset === undefined) {
options.reset = true;
}
if (options.disable === undefined) {
options.disable = true;
}
if (options.apply === undefined) {
options.apply = options.disable;
}
}
let ops = [];
if (options.reset) {
ops.push(tap(() => slaveField.reset()));
}
if (options.disable) {
ops.push(tap(() => slaveField.disable()));
if (options.apply) {
slaveField.disable({ onlySelf: true });
}
}
ops.push(filter((value) => {
if (!value) {
return false;
}
else {
return value instanceof Array ? value.length > 0 : true;
}
}));
if (options.disable) {
ops.push(tap(() => slaveField.enable()));
}
if (options.ops) {
ops.push(...options.ops);
}
return masterField.valueChanges.pipe(pipeFromArray([...ops]));
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluLWZvcm0tZ3JvdXAuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYmk4L2FtLWR5bi1mb3JtLyIsInNvdXJjZXMiOlsiYXBwL21vZHVsZXMvYW0tZHluLWZvcm0vZHluLWZvcm0tZ3JvdXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBa0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxRCxPQUFPLEVBQUMsTUFBTSxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQVV0RCxNQUFNLE9BQU8sWUFBYSxTQUFRLFNBQVM7SUFLekMsWUFBWSxVQUdSLEVBQUUsRUFBRSxRQUE2QztRQUNuRCxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFObEIsV0FBTSxHQUFRLEVBQUUsQ0FBQztRQU9mLElBQUksT0FBTyxFQUFDO1lBQ1YsSUFBSSxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDO1NBQzlCO0lBQ0gsQ0FBQztJQUVELGdCQUFnQixDQUFDLE1BQWMsRUFBRSxLQUFhLEVBQUUsT0FLL0M7UUFFQyxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25DLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFakMsSUFBSSxDQUFDLE9BQU8sRUFBQztZQUNYLE9BQU8sR0FBRyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUE7U0FDdEQ7YUFBTTtZQUNMLElBQUksT0FBTyxDQUFDLEtBQUssS0FBSyxTQUFTLEVBQUM7Z0JBQzlCLE9BQU8sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO2FBQ3RCO1lBRUQsSUFBSSxPQUFPLENBQUMsT0FBTyxLQUFLLFNBQVMsRUFBQztnQkFDaEMsT0FBTyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7YUFDeEI7WUFFRCxJQUFJLE9BQU8sQ0FBQyxLQUFLLEtBQUssU0FBUyxFQUFDO2dCQUM5QixPQUFPLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7YUFDakM7U0FDRjtRQUVELElBQUksR0FBRyxHQUFpQyxFQUFFLENBQUM7UUFFM0MsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFDO1lBQ2hCLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUUsRUFBRSxDQUFBLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDdkM7UUFFRCxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUM7WUFDbEIsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRSxFQUFFLENBQUEsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN4QyxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUM7Z0JBQ2hCLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQzthQUN0QztTQUNGO1FBRUQsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUMsRUFBRTtZQUN2QixJQUFJLENBQUMsS0FBSyxFQUFDO2dCQUNULE9BQU8sS0FBSyxDQUFDO2FBQ2Q7aUJBQU07Z0JBQ0wsT0FBTyxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBO2FBQ3hEO1FBQ0gsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVKLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBQztZQUNsQixHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFFLEVBQUUsQ0FBQSxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFBO1NBQ3ZDO1FBRUQsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFDO1lBQ2QsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUMxQjtRQUVELE9BQU8sV0FBVyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEUsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtGb3JtR3JvdXAsIEFic3RyYWN0Q29udHJvbH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7T3BlcmF0b3JGdW5jdGlvbiwgT2JzZXJ2YWJsZX0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHtmaWx0ZXIsIHRhcH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7cGlwZUZyb21BcnJheX0gZnJvbSAncnhqcy9pbnRlcm5hbC91dGlsL3BpcGUnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJGbiB7XHJcbiAgKHZhbHVlOiBhbnkpIDogYm9vbGVhblxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE1hcEZuIHtcclxuICAodmFsdWU6IGFueSkgOiBhbnlcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIER5bkZvcm1Hcm91cCBleHRlbmRzIEZvcm1Hcm91cCB7XHJcbiAga2V5OiBzdHJpbmc7XHJcbiAgZGlyOiBzdHJpbmc7XHJcbiAgY29uZmlnOiBhbnkgPSB7fTtcclxuXHJcbiAgY29uc3RydWN0b3Iob3B0aW9uczoge1xyXG4gICAga2V5Pzogc3RyaW5nLFxyXG4gICAgZGlyPzogc3RyaW5nLFxyXG4gIH0gPSB7fSwgY29udHJvbHM6IHsgW2tleTogc3RyaW5nXTogQWJzdHJhY3RDb250cm9sOyB9KSB7XHJcbiAgICBzdXBlcihjb250cm9scyk7XHJcbiAgICBpZiAob3B0aW9ucyl7XHJcbiAgICAgIHRoaXMua2V5ID0gb3B0aW9ucy5rZXkgfHwgJyc7XHJcbiAgICAgIHRoaXMuZGlyID0gb3B0aW9ucy5kaXIgfHwgJyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhZGRTbGF2ZU9ic2VydmVyKG1hc3Rlcjogc3RyaW5nLCBzbGF2ZTogc3RyaW5nLCBvcHRpb25zPzoge1xyXG4gICAgYXBwbHk/OiBib29sZWFuLFxyXG4gICAgZGlzYWJsZT86IGJvb2xlYW4sXHJcbiAgICByZXNldD86IGJvb2xlYW4sXHJcbiAgICBvcHM/OiBPcGVyYXRvckZ1bmN0aW9uPGFueSwgYW55PltdXHJcbiAgfSkgOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cclxuICAgIGxldCBtYXN0ZXJGaWVsZCA9IHRoaXMuZ2V0KG1hc3Rlcik7XHJcbiAgICBsZXQgc2xhdmVGaWVsZCA9IHRoaXMuZ2V0KHNsYXZlKTtcclxuXHJcbiAgICBpZiAoIW9wdGlvbnMpe1xyXG4gICAgICBvcHRpb25zID0geyBkaXNhYmxlOiB0cnVlLCByZXNldDogdHJ1ZSwgYXBwbHk6IHRydWUgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKG9wdGlvbnMucmVzZXQgPT09IHVuZGVmaW5lZCl7XHJcbiAgICAgICAgb3B0aW9ucy5yZXNldCA9IHRydWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChvcHRpb25zLmRpc2FibGUgPT09IHVuZGVmaW5lZCl7XHJcbiAgICAgICAgb3B0aW9ucy5kaXNhYmxlID0gdHJ1ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKG9wdGlvbnMuYXBwbHkgPT09IHVuZGVmaW5lZCl7XHJcbiAgICAgICAgb3B0aW9ucy5hcHBseSA9IG9wdGlvbnMuZGlzYWJsZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGxldCBvcHM6IE9wZXJhdG9yRnVuY3Rpb248YW55LCBhbnk+W10gPSBbXTtcclxuXHJcbiAgICBpZiAob3B0aW9ucy5yZXNldCl7XHJcbiAgICAgIG9wcy5wdXNoKHRhcCgoKT0+c2xhdmVGaWVsZC5yZXNldCgpKSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG9wdGlvbnMuZGlzYWJsZSl7XHJcbiAgICAgIG9wcy5wdXNoKHRhcCgoKT0+c2xhdmVGaWVsZC5kaXNhYmxlKCkpKTtcclxuICAgICAgaWYgKG9wdGlvbnMuYXBwbHkpe1xyXG4gICAgICAgIHNsYXZlRmllbGQuZGlzYWJsZSh7b25seVNlbGY6IHRydWV9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9wcy5wdXNoKGZpbHRlcigodmFsdWUpPT57XHJcbiAgICAgIGlmICghdmFsdWUpe1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBBcnJheSA/IHZhbHVlLmxlbmd0aCA+IDAgOiB0cnVlXHJcbiAgICAgIH1cclxuICAgIH0pKTtcclxuXHJcbiAgICBpZiAob3B0aW9ucy5kaXNhYmxlKXtcclxuICAgICAgb3BzLnB1c2godGFwKCgpPT5zbGF2ZUZpZWxkLmVuYWJsZSgpKSlcclxuICAgIH1cclxuXHJcbiAgICBpZiAob3B0aW9ucy5vcHMpe1xyXG4gICAgICBvcHMucHVzaCguLi5vcHRpb25zLm9wcyk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG1hc3RlckZpZWxkLnZhbHVlQ2hhbmdlcy5waXBlKHBpcGVGcm9tQXJyYXkoWy4uLm9wc10pKTtcclxuICB9XHJcbn1cclxuXHJcblxyXG4iXX0=