@bi8/am-dyn-form
Version:
ng update @angular/cli yarn add @angular/cli
63 lines • 8.03 kB
JavaScript
import * as tslib_1 from "tslib";
import { FormGroup } from "@angular/forms";
import { filter, tap } from "rxjs/operators";
import { pipeFromArray } from 'rxjs/internal/util/pipe';
var DynFormGroup = /** @class */ (function (_super) {
tslib_1.__extends(DynFormGroup, _super);
function DynFormGroup(options, controls) {
if (options === void 0) { options = {}; }
var _this = _super.call(this, controls) || this;
_this.config = {};
if (options) {
_this.key = options.key || '';
_this.dir = options.dir || '';
}
return _this;
}
DynFormGroup.prototype.addSlaveObserver = function (master, slave, options) {
var masterField = this.get(master);
var 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;
}
}
var ops = [];
if (options.reset) {
ops.push(tap(function () { return slaveField.reset(); }));
}
if (options.disable) {
ops.push(tap(function () { return slaveField.disable(); }));
if (options.apply) {
slaveField.disable({ onlySelf: true });
}
}
ops.push(filter(function (value) {
if (!value) {
return false;
}
else {
return value instanceof Array ? value.length > 0 : true;
}
}));
if (options.disable) {
ops.push(tap(function () { return slaveField.enable(); }));
}
if (options.ops) {
ops.push.apply(ops, tslib_1.__spread(options.ops));
}
return masterField.valueChanges.pipe(pipeFromArray(tslib_1.__spread(ops)));
};
return DynFormGroup;
}(FormGroup));
export { DynFormGroup };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluLWZvcm0tZ3JvdXAuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYmk4L2FtLWR5bi1mb3JtLyIsInNvdXJjZXMiOlsiYXBwL21vZHVsZXMvYW0tZHluLWZvcm0vZHluLWZvcm0tZ3JvdXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQWtCLE1BQU0sZ0JBQWdCLENBQUM7QUFFMUQsT0FBTyxFQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFVdEQ7SUFBa0Msd0NBQVM7SUFLekMsc0JBQVksT0FHTixFQUFFLFFBQTZDO1FBSHpDLHdCQUFBLEVBQUEsWUFHTjtRQUhOLFlBSUUsa0JBQU0sUUFBUSxDQUFDLFNBS2hCO1FBWEQsWUFBTSxHQUFRLEVBQUUsQ0FBQztRQU9mLElBQUksT0FBTyxFQUFDO1lBQ1YsS0FBSSxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQztZQUM3QixLQUFJLENBQUMsR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDO1NBQzlCOztJQUNILENBQUM7SUFFRCx1Q0FBZ0IsR0FBaEIsVUFBaUIsTUFBYyxFQUFFLEtBQWEsRUFBRSxPQUsvQztRQUVDLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbkMsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVqQyxJQUFJLENBQUMsT0FBTyxFQUFDO1lBQ1gsT0FBTyxHQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQTtTQUN0RDthQUFNO1lBQ0wsSUFBSSxPQUFPLENBQUMsS0FBSyxLQUFLLFNBQVMsRUFBQztnQkFDOUIsT0FBTyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7YUFDdEI7WUFFRCxJQUFJLE9BQU8sQ0FBQyxPQUFPLEtBQUssU0FBUyxFQUFDO2dCQUNoQyxPQUFPLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQzthQUN4QjtZQUVELElBQUksT0FBTyxDQUFDLEtBQUssS0FBSyxTQUFTLEVBQUM7Z0JBQzlCLE9BQU8sQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQzthQUNqQztTQUNGO1FBRUQsSUFBSSxHQUFHLEdBQWlDLEVBQUUsQ0FBQztRQUUzQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUM7WUFDaEIsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBSSxPQUFBLFVBQVUsQ0FBQyxLQUFLLEVBQUUsRUFBbEIsQ0FBa0IsQ0FBQyxDQUFDLENBQUM7U0FDdkM7UUFFRCxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUM7WUFDbEIsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBSSxPQUFBLFVBQVUsQ0FBQyxPQUFPLEVBQUUsRUFBcEIsQ0FBb0IsQ0FBQyxDQUFDLENBQUM7WUFDeEMsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFDO2dCQUNoQixVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7YUFDdEM7U0FDRjtRQUVELEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQUMsS0FBSztZQUNwQixJQUFJLENBQUMsS0FBSyxFQUFDO2dCQUNULE9BQU8sS0FBSyxDQUFDO2FBQ2Q7aUJBQU07Z0JBQ0wsT0FBTyxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBO2FBQ3hEO1FBQ0gsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVKLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBQztZQUNsQixHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFJLE9BQUEsVUFBVSxDQUFDLE1BQU0sRUFBRSxFQUFuQixDQUFtQixDQUFDLENBQUMsQ0FBQTtTQUN2QztRQUVELElBQUksT0FBTyxDQUFDLEdBQUcsRUFBQztZQUNkLEdBQUcsQ0FBQyxJQUFJLE9BQVIsR0FBRyxtQkFBUyxPQUFPLENBQUMsR0FBRyxHQUFFO1NBQzFCO1FBRUQsT0FBTyxXQUFXLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxhQUFhLGtCQUFLLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUNILG1CQUFDO0FBQUQsQ0FBQyxBQXpFRCxDQUFrQyxTQUFTLEdBeUUxQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Rm9ybUdyb3VwLCBBYnN0cmFjdENvbnRyb2x9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQge09wZXJhdG9yRnVuY3Rpb24sIE9ic2VydmFibGV9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7ZmlsdGVyLCB0YXB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQge3BpcGVGcm9tQXJyYXl9IGZyb20gJ3J4anMvaW50ZXJuYWwvdXRpbC9waXBlJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyRm4ge1xyXG4gICh2YWx1ZTogYW55KSA6IGJvb2xlYW5cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBNYXBGbiB7XHJcbiAgKHZhbHVlOiBhbnkpIDogYW55XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBEeW5Gb3JtR3JvdXAgZXh0ZW5kcyBGb3JtR3JvdXAge1xyXG4gIGtleTogc3RyaW5nO1xyXG4gIGRpcjogc3RyaW5nO1xyXG4gIGNvbmZpZzogYW55ID0ge307XHJcblxyXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IHtcclxuICAgIGtleT86IHN0cmluZyxcclxuICAgIGRpcj86IHN0cmluZyxcclxuICB9ID0ge30sIGNvbnRyb2xzOiB7IFtrZXk6IHN0cmluZ106IEFic3RyYWN0Q29udHJvbDsgfSkge1xyXG4gICAgc3VwZXIoY29udHJvbHMpO1xyXG4gICAgaWYgKG9wdGlvbnMpe1xyXG4gICAgICB0aGlzLmtleSA9IG9wdGlvbnMua2V5IHx8ICcnO1xyXG4gICAgICB0aGlzLmRpciA9IG9wdGlvbnMuZGlyIHx8ICcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkU2xhdmVPYnNlcnZlcihtYXN0ZXI6IHN0cmluZywgc2xhdmU6IHN0cmluZywgb3B0aW9ucz86IHtcclxuICAgIGFwcGx5PzogYm9vbGVhbixcclxuICAgIGRpc2FibGU/OiBib29sZWFuLFxyXG4gICAgcmVzZXQ/OiBib29sZWFuLFxyXG4gICAgb3BzPzogT3BlcmF0b3JGdW5jdGlvbjxhbnksIGFueT5bXVxyXG4gIH0pIDogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHJcbiAgICBsZXQgbWFzdGVyRmllbGQgPSB0aGlzLmdldChtYXN0ZXIpO1xyXG4gICAgbGV0IHNsYXZlRmllbGQgPSB0aGlzLmdldChzbGF2ZSk7XHJcblxyXG4gICAgaWYgKCFvcHRpb25zKXtcclxuICAgICAgb3B0aW9ucyA9IHsgZGlzYWJsZTogdHJ1ZSwgcmVzZXQ6IHRydWUsIGFwcGx5OiB0cnVlIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChvcHRpb25zLnJlc2V0ID09PSB1bmRlZmluZWQpe1xyXG4gICAgICAgIG9wdGlvbnMucmVzZXQgPSB0cnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAob3B0aW9ucy5kaXNhYmxlID09PSB1bmRlZmluZWQpe1xyXG4gICAgICAgIG9wdGlvbnMuZGlzYWJsZSA9IHRydWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChvcHRpb25zLmFwcGx5ID09PSB1bmRlZmluZWQpe1xyXG4gICAgICAgIG9wdGlvbnMuYXBwbHkgPSBvcHRpb25zLmRpc2FibGU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBsZXQgb3BzOiBPcGVyYXRvckZ1bmN0aW9uPGFueSwgYW55PltdID0gW107XHJcblxyXG4gICAgaWYgKG9wdGlvbnMucmVzZXQpe1xyXG4gICAgICBvcHMucHVzaCh0YXAoKCk9PnNsYXZlRmllbGQucmVzZXQoKSkpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChvcHRpb25zLmRpc2FibGUpe1xyXG4gICAgICBvcHMucHVzaCh0YXAoKCk9PnNsYXZlRmllbGQuZGlzYWJsZSgpKSk7XHJcbiAgICAgIGlmIChvcHRpb25zLmFwcGx5KXtcclxuICAgICAgICBzbGF2ZUZpZWxkLmRpc2FibGUoe29ubHlTZWxmOiB0cnVlfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvcHMucHVzaChmaWx0ZXIoKHZhbHVlKT0+e1xyXG4gICAgICBpZiAoIXZhbHVlKXtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgQXJyYXkgPyB2YWx1ZS5sZW5ndGggPiAwIDogdHJ1ZVxyXG4gICAgICB9XHJcbiAgICB9KSk7XHJcblxyXG4gICAgaWYgKG9wdGlvbnMuZGlzYWJsZSl7XHJcbiAgICAgIG9wcy5wdXNoKHRhcCgoKT0+c2xhdmVGaWVsZC5lbmFibGUoKSkpXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG9wdGlvbnMub3BzKXtcclxuICAgICAgb3BzLnB1c2goLi4ub3B0aW9ucy5vcHMpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBtYXN0ZXJGaWVsZC52YWx1ZUNoYW5nZXMucGlwZShwaXBlRnJvbUFycmF5KFsuLi5vcHNdKSk7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuIl19