@ng-dynamic-forms/core
Version:
A rapid form development library for Angular
104 lines • 13.3 kB
JavaScript
import { __decorate } from "tslib";
import { DynamicFormControlModel } from "../dynamic-form-control.model";
import { serializable, serialize } from "../../decorator/serializable.decorator";
import { isFunction, isNumber } from "../../utils/core.utils";
export class DynamicFormArrayGroupModel {
constructor(context, group = [], index = -1) {
this.$implicit = this;
this.context = context;
this.group = group;
this.index = index;
}
get parent() {
return this.context;
}
get(index) {
return this.group[index];
}
toJSON() {
return serialize(this);
}
}
__decorate([
serializable()
], DynamicFormArrayGroupModel.prototype, "group", void 0);
__decorate([
serializable()
], DynamicFormArrayGroupModel.prototype, "index", void 0);
export const DYNAMIC_FORM_CONTROL_TYPE_ARRAY = "ARRAY";
export class DynamicFormArrayModel extends DynamicFormControlModel {
constructor(config, layout) {
super(config, layout);
this.groups = [];
this.type = DYNAMIC_FORM_CONTROL_TYPE_ARRAY;
if (isFunction(config.groupFactory)) {
this.groupFactory = config.groupFactory;
}
else {
throw new Error("group factory function must be specified for DynamicFormArrayModel");
}
this.groupAsyncValidators = config.groupAsyncValidators ?? null;
this.groupPrototype = this.groupFactory();
this.groupValidators = config.groupValidators ?? null;
this.initialCount = isNumber(config.initialCount) ? config.initialCount : 1;
if (Array.isArray(config.groups)) {
config.groups.forEach((arrayGroup, index) => {
this.groups.push(new DynamicFormArrayGroupModel(this, arrayGroup.group, arrayGroup.index ?? index));
});
}
else {
for (let index = 0; index < this.initialCount; index++) {
this.addGroup();
}
}
}
updateGroupIndex() {
this.groups.forEach((group, index) => group.index = index);
}
get size() {
return this.groups.length;
}
get(index) {
return this.groups[index];
}
addGroup() {
return this.insertGroup(this.groups.length);
}
insertGroup(index) {
const group = new DynamicFormArrayGroupModel(this, this.groupFactory());
this.groups.splice(index, 0, group);
this.updateGroupIndex();
return group;
}
moveGroup(index, step) {
this.groups.splice(index + step, 0, ...this.groups.splice(index, 1));
this.updateGroupIndex();
}
removeGroup(index) {
this.groups.splice(index, 1);
this.updateGroupIndex();
}
clear() {
this.groups.splice(0);
this.updateGroupIndex();
}
}
__decorate([
serializable()
], DynamicFormArrayModel.prototype, "groupAsyncValidators", void 0);
__decorate([
serializable()
], DynamicFormArrayModel.prototype, "groupValidators", void 0);
__decorate([
serializable()
], DynamicFormArrayModel.prototype, "groups", void 0);
__decorate([
serializable()
], DynamicFormArrayModel.prototype, "initialCount", void 0);
__decorate([
serializable()
], DynamicFormArrayModel.prototype, "groupPrototype", void 0);
__decorate([
serializable()
], DynamicFormArrayModel.prototype, "type", void 0);
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLWFycmF5Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZHluYW1pYy1mb3Jtcy9jb3JlL3NyYy9saWIvbW9kZWwvZm9ybS1hcnJheS9keW5hbWljLWZvcm0tYXJyYXkubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBaUMsTUFBTSwrQkFBK0IsQ0FBQztBQUt2RyxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFOUQsTUFBTSxPQUFPLDBCQUEwQjtJQU1uQyxZQUFZLE9BQThCLEVBQUUsUUFBMEIsRUFBRSxFQUFFLFFBQWdCLENBQUMsQ0FBQztRQUN4RixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxHQUFHLENBQUMsS0FBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsTUFBTTtRQUNGLE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUM7Q0FDSjtBQXJCbUI7SUFBZixZQUFZLEVBQUU7eURBQXlCO0FBQ3hCO0lBQWYsWUFBWSxFQUFFO3lEQUFlO0FBc0JsQyxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBRyxPQUFPLENBQUM7QUFVdkQsTUFBTSxPQUFP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ckIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxLQUFLO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDNUIsQ0FBQztDQUNKO0FBMUVtQjtJQUFmLFlBQVksRUFBRTttRUFBc0Q7QUFFckQ7SUFBZixZQUFZLEVBQUU7OERBQWlEO0FBQ2hEO0lBQWYsWUFBWSxFQUFFO3FEQUEyQztBQUMxQztJQUFmLFlBQVksRUFBRTsyREFBc0I7QUFFWjtJQUF4QixZQUFZLEVBQUU7NkRBQTJDO0FBQ2pDO0lBQXhCLFlBQVksRUFBRTttREFBeUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEeW5hbWljRm9ybUNvbnRyb2xNb2RlbCwgRHluYW1pY0Zvcm1Db250cm9sTW9kZWxDb25maWcgfSBmcm9tIFwiLi4vZHluYW1pYy1mb3JtLWNvbnRyb2wubW9kZWxcIjtcbmltcG9ydCB7IER5bmFtaWNGb3JtTW9kZWwgfSBmcm9tIFwiLi4vZHluYW1pYy1mb3JtLm1vZGVsXCI7XG5pbXBvcnQgeyBEeW5hbWljRm9ybUNvbnRyb2xMYXlvdXQgfSBmcm9tIFwiLi4vbWlzYy9keW5hbWljLWZvcm0tY29udHJvbC1sYXlvdXQubW9kZWxcIjtcbmltcG9ydCB7IER5bmFtaWNQYXRoYWJsZSB9IGZyb20gXCIuLi9taXNjL2R5bmFtaWMtZm9ybS1jb250cm9sLXBhdGgubW9kZWxcIjtcbmltcG9ydCB7IER5bmFtaWNWYWxpZGF0b3JzQ29uZmlnIH0gZnJvbSBcIi4uL21pc2MvZHluYW1pYy1mb3JtLWNvbnRyb2wtdmFsaWRhdGlvbi5tb2RlbFwiO1xuaW1wb3J0IHsgc2VyaWFsaXphYmxlLCBzZXJpYWxpemUgfSBmcm9tIFwiLi4vLi4vZGVjb3JhdG9yL3NlcmlhbGl6YWJsZS5kZWNvcmF0b3JcIjtcbmltcG9ydCB7IGlzRnVuY3Rpb24sIGlzTnVtYmVyIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvcmUudXRpbHNcIjtcblxuZXhwb3J0IGNsYXNzIER5bmFtaWNGb3JtQXJyYXlHcm91cE1vZGVsIGltcGxlbWVudHMgRHluYW1pY1BhdGhhYmxlIHtcbiAgICAkaW1wbGljaXQ6IER5bmFtaWNGb3JtQXJyYXlHcm91cE1vZGVsO1xuICAgIGNvbnRleHQ6IER5bmFtaWNGb3JtQXJyYXlNb2RlbDtcbiAgICBAc2VyaWFsaXphYmxlKCkgZ3JvdXA6IER5bmFtaWNGb3JtTW9kZWw7XG4gICAgQHNlcmlhbGl6YWJsZSgpIGluZGV4OiBudW1iZXI7XG5cbiAgICBjb25zdHJ1Y3Rvcihjb250ZXh0OiBEeW5hbWljRm9ybUFycmF5TW9kZWwsIGdyb3VwOiBEeW5hbWljRm9ybU1vZGVsID0gW10sIGluZGV4OiBudW1iZXIgPSAtMSkge1xuICAgICAgICB0aGlzLiRpbXBsaWNpdCA9IHRoaXM7XG4gICAgICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7XG4gICAgICAgIHRoaXMuZ3JvdXAgPSBncm91cDtcbiAgICAgICAgdGhpcy5pbmRleCA9IGluZGV4O1xuICAgIH1cblxuICAgIGdldCBwYXJlbnQoKTogRHluYW1pY0Zvcm1BcnJheU1vZGVsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGV4dDtcbiAgICB9XG5cbiAgICBnZXQoaW5kZXg6IG51bWJlcik6IER5bmFtaWNGb3JtQ29udHJvbE1vZGVsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JvdXBbaW5kZXhdO1xuICAgIH1cblxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZSh0aGlzKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjb25zdCBEWU5BTUlDX0ZPUk1fQ09OVFJPTF9UWVBFX0FSUkFZID0gXCJBUlJBWVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIER5bmFtaWNGb3JtQXJyYXlNb2RlbENvbmZpZyBleHRlbmRzIER5bmFtaWNGb3JtQ29udHJvbE1vZGVsQ29uZmlnIHtcbiAgICBncm91cEFzeW5jVmFsaWRhdG9ycz86IER5bmFtaWNWYWxpZGF0b3JzQ29uZmlnO1xuICAgIGdyb3VwRmFjdG9yeT86ICgpID0+IER5bmFtaWNGb3JtTW9kZWw7XG4gICAgZ3JvdXBWYWxpZGF0b3JzPzogRHluYW1pY1ZhbGlkYXRvcnNDb25maWc7XG4gICAgZ3JvdXBzPzogRHluYW1pY0Zvcm1BcnJheUdyb3VwTW9kZWxbXSB8IG51bGw7XG4gICAgaW5pdGlhbENvdW50PzogbnVtYmVyO1xufVxuXG5leHBvcnQgY2xhc3MgRHluYW1pY0Zvcm1BcnJheU1vZGVsIGV4dGVuZHMgRHluYW1pY0Zvcm1Db250cm9sTW9kZWwge1xuICAgIEBzZXJpYWxpemFibGUoKSBncm91cEFzeW5jVmFsaWRhdG9yczogRHluYW1pY1ZhbGlkYXRvcnNDb25maWcgfCBudWxsO1xuICAgIGdyb3VwRmFjdG9yeTogKCkgPT4gRHluYW1pY0Zvcm1Nb2RlbDtcbiAgICBAc2VyaWFsaXphYmxlKCkgZ3JvdXBWYWxpZGF0b3JzOiBEeW5hbWljVmFsaWRhdG9yc0NvbmZpZyB8IG51bGw7XG4gICAgQHNlcmlhbGl6YWJsZSgpIGdyb3VwczogRHluYW1pY0Zvcm1BcnJheUdyb3VwTW9kZWxbXSA9IFtdO1xuICAgIEBzZXJpYWxpemFibGUoKSBpbml0aWFsQ291bnQ6IG51bWJlcjtcblxuICAgIEBzZXJpYWxpemFibGUoKSByZWFkb25seSBncm91cFByb3RvdHlwZTogRHluYW1pY0Zvcm1Nb2RlbDsgLy8gb25seSB0byByZWNyZWF0ZSBtb2RlbCBmcm9tIEpTT05cbiAgICBAc2VyaWFsaXphYmxlKCkgcmVhZG9ubHkgdHlwZTogc3RyaW5nID0gRFlOQU1JQ19GT1JNX0NPTlRST0xfVFlQRV9BUlJBWTtcblxuICAgIGNvbnN0cnVjdG9yKGNvbmZpZzogRHluYW1pY0Zvcm1BcnJheU1vZGVsQ29uZmlnLCBsYXlvdXQ/OiBEeW5hbWljRm9ybUNvbnRyb2xMYXlvdXQpIHtcbiAgICAgICAgc3VwZXIoY29uZmlnLCBsYXlvdXQpO1xuXG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKGNvbmZpZy5ncm91cEZhY3RvcnkpKSB7XG4gICAgICAgICAgICB0aGlzLmdyb3VwRmFjdG9yeSA9IGNvbmZpZy5ncm91cEZhY3Rvcnk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJncm91cCBmYWN0b3J5IGZ1bmN0aW9uIG11c3QgYmUgc3BlY2lmaWVkIGZvciBEeW5hbWljRm9ybUFycmF5TW9kZWxcIik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmdyb3VwQXN5bmNWYWxpZGF0b3JzID0gY29uZmlnLmdyb3VwQXN5bmNWYWxpZGF0b3JzID8/IG51bGw7XG4gICAgICAgIHRoaXMuZ3JvdXBQcm90b3R5cGUgPSB0aGlzLmdyb3VwRmFjdG9yeSgpO1xuICAgICAgICB0aGlzLmdyb3VwVmFsaWRhdG9ycyA9IGNvbmZpZy5ncm91cFZhbGlkYXRvcnMgPz8gbnVsbDtcbiAgICAgICAgdGhpcy5pbml0aWFsQ291bnQgPSBpc051bWJlcihjb25maWcuaW5pdGlhbENvdW50KSA/IGNvbmZpZy5pbml0aWFsQ291bnQgOiAxO1xuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGNvbmZpZy5ncm91cHMpKSB7XG4gICAgICAgICAgICBjb25maWcuZ3JvdXBzLmZvckVhY2goKGFycmF5R3JvdXAsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5ncm91cHMucHVzaChuZXcgRHluYW1pY0Zvcm1BcnJheUdyb3VwTW9kZWwodGhpcywgYXJyYXlHcm91cC5ncm91cCwgYXJyYXlHcm91cC5pbmRleCA/PyBpbmRleCkpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLmluaXRpYWxDb3VudDsgaW5kZXgrKykge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkR3JvdXAoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlR3JvdXBJbmRleCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ncm91cHMuZm9yRWFjaCgoZ3JvdXAsIGluZGV4KSA9PiBncm91cC5pbmRleCA9IGluZGV4KTtcbiAgICB9XG5cbiAgICBnZXQgc2l6ZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5ncm91cHMubGVuZ3RoO1xuICAgIH1cblxuICAgIGdldChpbmRleDogbnVtYmVyKTogRHluYW1pY0Zvcm1BcnJheUdyb3VwTW9kZWwge1xuICAgICAgICByZXR1cm4gdGhpcy5ncm91cHNbaW5kZXhdO1xuICAgIH1cblxuICAgIGFkZEdyb3VwKCk6IER5bmFtaWNGb3JtQXJyYXlHcm91cE1vZGVsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5zZXJ0R3JvdXAodGhpcy5ncm91cHMubGVuZ3RoKTtcbiAgICB9XG5cbiAgICBpbnNlcnRHcm91cChpbmRleDogbnVtYmVyKTogRHluYW1pY0Zvcm1BcnJheUdyb3VwTW9kZWwge1xuICAgICAgICBjb25zdCBncm91cCA9IG5ldyBEeW5hbWljRm9ybUFycmF5R3JvdXBNb2RlbCh0aGlzLCB0aGlzLmdyb3VwRmFjdG9yeSgpKTtcblxuICAgICAgICB0aGlzLmdyb3Vwcy5zcGxpY2UoaW5kZXgsIDAsIGdyb3VwKTtcbiAgICAgICAgdGhpcy51cGRhdGVHcm91cEluZGV4KCk7XG5cbiAgICAgICAgcmV0dXJuIGdyb3VwO1xuICAgIH1cblxuICAgIG1vdmVHcm91cChpbmRleDogbnVtYmVyLCBzdGVwOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ncm91cHMuc3BsaWNlKGluZGV4ICsgc3RlcCwgMCwgLi4udGhpcy5ncm91cHMuc3BsaWNlKGluZGV4LCAxKSk7XG4gICAgICAgIHRoaXMudXBkYXRlR3JvdXBJbmRleCgpO1xuICAgIH1cblxuICAgIHJlbW92ZUdyb3VwKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ncm91cHMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgdGhpcy51cGRhdGVHcm91cEluZGV4KCk7XG4gICAgfVxuXG4gICAgY2xlYXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZ3JvdXBzLnNwbGljZSgwKTtcbiAgICAgICAgdGhpcy51cGRhdGVHcm91cEluZGV4KCk7XG4gICAgfVxufVxuIl19