UNPKG

@ng-dynamic-forms/core

Version:

A rapid form development library for Angular

79 lines 10.2 kB
import { __decorate } from "tslib"; import { isObservable, of } from "rxjs"; import { map } from "rxjs/operators"; import { DynamicFormValueControlModel } from "./dynamic-form-value-control.model"; import { serializable, serialize } from "../decorator/serializable.decorator"; import { isBoolean } from "../utils/core.utils"; export class DynamicFormOption { constructor(config) { this.disabled = isBoolean(config.disabled) ? config.disabled : false; this.label = config.label ?? null; this.value = config.value; } get text() { return this.label; } set text(text) { this.label = text; } toJSON() { return serialize(this); } } __decorate([ serializable() ], DynamicFormOption.prototype, "disabled", void 0); __decorate([ serializable() ], DynamicFormOption.prototype, "label", void 0); __decorate([ serializable() ], DynamicFormOption.prototype, "value", void 0); export class DynamicOptionControlModel extends DynamicFormValueControlModel { constructor(config, layout) { super(config, layout); this._options = []; this.options = config.options; } updateOptions$() { this.options$ = of(this.options); } set options(options) { if (Array.isArray(options)) { this._options = options.map(optionConfig => new DynamicFormOption(optionConfig)); this.updateOptions$(); } else if (isObservable(options)) { this.options$ = options.pipe(map(optionsConfig => { this._options = optionsConfig.map(optionConfig => new DynamicFormOption(optionConfig)); return this._options; })); } else { this.updateOptions$(); } } get options() { return this._options; } add(optionConfig) { return this.insert(this.options.length, optionConfig); } get(index) { return this.options[index]; } insert(index, optionConfig) { const option = new DynamicFormOption(optionConfig); this.options.splice(index, 0, option); this.updateOptions$(); return option; } remove(...indices) { indices.forEach(index => this.options.splice(index, 1)); this.updateOptions$(); } } __decorate([ serializable("options") ], DynamicOptionControlModel.prototype, "_options", void 0); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1vcHRpb24tY29udHJvbC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWR5bmFtaWMtZm9ybXMvY29yZS9zcmMvbGliL21vZGVsL2R5bmFtaWMtb3B0aW9uLWNvbnRyb2wubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBYyxZQUFZLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsNEJBQTRCLEVBQXNDLE1BQU0sb0NBQW9DLENBQUM7QUFFdEgsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFRaEQsTUFBTSxPQUFPLGlCQUFpQjtJQUsxQixZQUFZLE1BQWtDO1FBQzFDLElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUM7UUFDbEMsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDSixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQUksSUFBSSxDQUFDLElBQW1CO1FBQ3hCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxNQUFNO1FBQ0YsT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsQ0FBQztDQUNKO0FBckJtQjtJQUFmLFlBQVksRUFBRTttREFBbUI7QUFDbEI7SUFBZixZQUFZLEVBQUU7Z0RBQXNCO0FBQ3JCO0lBQWYsWUFBWSxFQUFFO2dEQUFVO0FBeUI3QixNQUFNLE9BQWdCLHlCQUE2QixTQUFRLDRCQUFxQztJQUk1RixZQUFzQixNQUEwQyxFQUFFLE1BQWlDO1FBQy9GLEtBQUssQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFKTyxhQUFRLEdBQTJCLEVBQUUsQ0FBQztRQU1uRSxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7SUFDbEMsQ0FBQztJQUVPLGNBQWM7UUFDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFJLE9BQU8sQ0FBQyxPQUFZO1FBQ3BCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUN4QixJQUFJLENBQUMsUUFBUSxHQUFJLE9BQXdDLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsSUFBSSxpQkFBaUIsQ0FBSSxZQUFZLENBQUMsQ0FBQyxDQUFDO1lBQ3RILElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUV6QjthQUFNLElBQUksWUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQzlCLElBQUksQ0FBQyxRQUFRLEdBQUksT0FBb0QsQ0FBQyxJQUFJLENBQ3RFLEdBQUcsQ0FBQyxhQUFhLENBQUMsRUFBRTtnQkFDaEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsSUFBSSxpQkFBaUIsQ0FBSSxZQUFZLENBQUMsQ0FBQyxDQUFDO2dCQUMxRixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDekIsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUVYO2FBQU07WUFDSCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDekI7SUFDTCxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxHQUFHLENBQUMsWUFBd0M7UUFDeEMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxHQUFHLENBQUMsS0FBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQWEsRUFBRSxZQUF3QztRQUMxRCxNQUFNLE1BQU0sR0FBRyxJQUFJLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRW5ELElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRXRCLE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxNQUFNLENBQUMsR0FBRyxPQUFpQjtRQUN2QixPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzFCLENBQUM7Q0FHSjtBQXpEb0M7SUFBaEMsWUFBWSxDQUFDLFNBQVMsQ0FBQzsyREFBK0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBpc09ic2VydmFibGUsIG9mIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IG1hcCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHsgRHluYW1pY0Zvcm1WYWx1ZUNvbnRyb2xNb2RlbCwgRHluYW1pY0Zvcm1WYWx1ZUNvbnRyb2xNb2RlbENvbmZpZyB9IGZyb20gXCIuL2R5bmFtaWMtZm9ybS12YWx1ZS1jb250cm9sLm1vZGVsXCI7XG5pbXBvcnQgeyBEeW5hbWljRm9ybUNvbnRyb2xMYXlvdXQgfSBmcm9tIFwiLi9taXNjL2R5bmFtaWMtZm9ybS1jb250cm9sLWxheW91dC5tb2RlbFwiO1xuaW1wb3J0IHsgc2VyaWFsaXphYmxlLCBzZXJpYWxpemUgfSBmcm9tIFwiLi4vZGVjb3JhdG9yL3NlcmlhbGl6YWJsZS5kZWNvcmF0b3JcIjtcbmltcG9ydCB7IGlzQm9vbGVhbiB9IGZyb20gXCIuLi91dGlscy9jb3JlLnV0aWxzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHluYW1pY0Zvcm1PcHRpb25Db25maWc8VD4ge1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBsYWJlbD86IHN0cmluZztcbiAgICB2YWx1ZTogVDtcbn1cblxuZXhwb3J0IGNsYXNzIER5bmFtaWNGb3JtT3B0aW9uPFQ+IHtcbiAgICBAc2VyaWFsaXphYmxlKCkgZGlzYWJsZWQ6IGJvb2xlYW47XG4gICAgQHNlcmlhbGl6YWJsZSgpIGxhYmVsOiBzdHJpbmcgfCBudWxsO1xuICAgIEBzZXJpYWxpemFibGUoKSB2YWx1ZTogVDtcblxuICAgIGNvbnN0cnVjdG9yKGNvbmZpZzogRHluYW1pY0Zvcm1PcHRpb25Db25maWc8VD4pIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGlzQm9vbGVhbihjb25maWcuZGlzYWJsZWQpID8gY29uZmlnLmRpc2FibGVkIDogZmFsc2U7XG4gICAgICAgIHRoaXMubGFiZWwgPSBjb25maWcubGFiZWwgPz8gbnVsbDtcbiAgICAgICAgdGhpcy52YWx1ZSA9IGNvbmZpZy52YWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgdGV4dCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGFiZWw7XG4gICAgfVxuXG4gICAgc2V0IHRleHQodGV4dDogc3RyaW5nIHwgbnVsbCkge1xuICAgICAgICB0aGlzLmxhYmVsID0gdGV4dDtcbiAgICB9XG5cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIHJldHVybiBzZXJpYWxpemUodGhpcyk7XG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIER5bmFtaWNPcHRpb25Db250cm9sTW9kZWxDb25maWc8VD4gZXh0ZW5kcyBEeW5hbWljRm9ybVZhbHVlQ29udHJvbE1vZGVsQ29uZmlnPFQgfCBUW10+IHtcbiAgICBvcHRpb25zPzogRHluYW1pY0Zvcm1PcHRpb25Db25maWc8VD5bXSB8IE9ic2VydmFibGU8RHluYW1pY0Zvcm1PcHRpb25Db25maWc8VD5bXT47XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEeW5hbWljT3B0aW9uQ29udHJvbE1vZGVsPFQ+IGV4dGVuZHMgRHluYW1pY0Zvcm1WYWx1ZUNvbnRyb2xNb2RlbDxUIHwgVFtdPiB7XG4gICAgQHNlcmlhbGl6YWJsZShcIm9wdGlvbnNcIikgcHJpdmF0ZSBfb3B0aW9uczogRHluYW1pY0Zvcm1PcHRpb248VD5bXSA9IFtdO1xuICAgIG9wdGlvbnMkITogT2JzZXJ2YWJsZTxEeW5hbWljRm9ybU9wdGlvbjxUPltdPjtcblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcihjb25maWc6IER5bmFtaWNPcHRpb25Db250cm9sTW9kZWxDb25maWc8VD4sIGxheW91dD86IER5bmFtaWNGb3JtQ29udHJvbExheW91dCkge1xuICAgICAgICBzdXBlcihjb25maWcsIGxheW91dCk7XG5cbiAgICAgICAgdGhpcy5vcHRpb25zID0gY29uZmlnLm9wdGlvbnM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVPcHRpb25zJCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcHRpb25zJCA9IG9mKHRoaXMub3B0aW9ucyk7XG4gICAgfVxuXG4gICAgc2V0IG9wdGlvbnMob3B0aW9uczogYW55KSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9wdGlvbnMpKSB7XG4gICAgICAgICAgICB0aGlzLl9vcHRpb25zID0gKG9wdGlvbnMgYXMgRHluYW1pY0Zvcm1PcHRpb25Db25maWc8VD5bXSkubWFwKG9wdGlvbkNvbmZpZyA9PiBuZXcgRHluYW1pY0Zvcm1PcHRpb248VD4ob3B0aW9uQ29uZmlnKSk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZU9wdGlvbnMkKCk7XG5cbiAgICAgICAgfSBlbHNlIGlmIChpc09ic2VydmFibGUob3B0aW9ucykpIHtcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucyQgPSAob3B0aW9ucyBhcyBPYnNlcnZhYmxlPER5bmFtaWNGb3JtT3B0aW9uQ29uZmlnPFQ+W10+KS5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChvcHRpb25zQ29uZmlnID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3B0aW9ucyA9IG9wdGlvbnNDb25maWcubWFwKG9wdGlvbkNvbmZpZyA9PiBuZXcgRHluYW1pY0Zvcm1PcHRpb248VD4ob3B0aW9uQ29uZmlnKSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9vcHRpb25zO1xuICAgICAgICAgICAgICAgIH0pKTtcblxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVPcHRpb25zJCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IG9wdGlvbnMoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29wdGlvbnM7XG4gICAgfVxuXG4gICAgYWRkKG9wdGlvbkNvbmZpZzogRHluYW1pY0Zvcm1PcHRpb25Db25maWc8VD4pOiBEeW5hbWljRm9ybU9wdGlvbjxUPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmluc2VydCh0aGlzLm9wdGlvbnMubGVuZ3RoLCBvcHRpb25Db25maWcpO1xuICAgIH1cblxuICAgIGdldChpbmRleDogbnVtYmVyKTogRHluYW1pY0Zvcm1PcHRpb248VD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zW2luZGV4XTtcbiAgICB9XG5cbiAgICBpbnNlcnQoaW5kZXg6IG51bWJlciwgb3B0aW9uQ29uZmlnOiBEeW5hbWljRm9ybU9wdGlvbkNvbmZpZzxUPik6IER5bmFtaWNGb3JtT3B0aW9uPFQ+IHtcbiAgICAgICAgY29uc3Qgb3B0aW9uID0gbmV3IER5bmFtaWNGb3JtT3B0aW9uKG9wdGlvbkNvbmZpZyk7XG5cbiAgICAgICAgdGhpcy5vcHRpb25zLnNwbGljZShpbmRleCwgMCwgb3B0aW9uKTtcbiAgICAgICAgdGhpcy51cGRhdGVPcHRpb25zJCgpO1xuXG4gICAgICAgIHJldHVybiBvcHRpb247XG4gICAgfVxuXG4gICAgcmVtb3ZlKC4uLmluZGljZXM6IG51bWJlcltdKTogdm9pZCB7XG4gICAgICAgIGluZGljZXMuZm9yRWFjaChpbmRleCA9PiB0aGlzLm9wdGlvbnMuc3BsaWNlKGluZGV4LCAxKSk7XG4gICAgICAgIHRoaXMudXBkYXRlT3B0aW9ucyQoKTtcbiAgICB9XG5cbiAgICBhYnN0cmFjdCBzZWxlY3QoLi4uaW5kaWNlczogbnVtYmVyW10pOiB2b2lkO1xufVxuIl19