@formql/core
Version:
FormQL - A framework for building dynamic forms
107 lines • 12 kB
JavaScript
import { __decorate, __metadata } from "tslib";
import { Component, EventEmitter, Input, Output, ViewChild, ViewContainerRef } from '@angular/core';
import { FormGroup } from '@angular/forms';
import { Subject } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
import { InternalEventType } from '../models/internal-event.model';
import { FormQLMode } from '../models/type.model';
import { StoreService } from '../services/store.service';
let FormQLComponent = class FormQLComponent {
constructor(storeService) {
this.storeService = storeService;
this.mode = FormQLMode.View;
this.formLoaded = new EventEmitter();
this.formSaveStart = new EventEmitter();
this.formSaveEnd = new EventEmitter();
this.formError = new EventEmitter();
this.data$ = this.storeService.getData();
this.formState$ = this.storeService.getFormState();
this.componentDestroyed = new Subject();
}
ngOnInit() {
this.data$.pipe(takeUntil(this.componentDestroyed)).subscribe(data => this.data = data);
this.formState$.pipe(takeUntil(this.componentDestroyed)).
subscribe((formState) => {
if (formState) {
this.formState = Object.assign({}, formState);
if (formState.form)
this.form = formState.form;
}
});
this.storeService.getAll(this.formName, this.ids, this.mode);
}
resetForm(objectId) {
this.storeService.reSetForm(InternalEventType.EditingForm, objectId);
}
refreshComponent(component) {
this.storeService.setComponent(component);
}
saveForm() {
this.storeService.saveForm();
}
ngOnDestroy() {
this.componentDestroyed.next();
this.componentDestroyed.complete();
}
};
FormQLComponent.componentName = 'FormQLComponent';
__decorate([
Input(),
__metadata("design:type", String)
], FormQLComponent.prototype, "formName", void 0);
__decorate([
Input(),
__metadata("design:type", Array)
], FormQLComponent.prototype, "ids", void 0);
__decorate([
Input(),
__metadata("design:type", Number)
], FormQLComponent.prototype, "mode", void 0);
__decorate([
Input(),
__metadata("design:type", FormGroup)
], FormQLComponent.prototype, "reactiveForm", void 0);
__decorate([
Input(),
__metadata("design:type", Object)
], FormQLComponent.prototype, "customMetadata", void 0);
__decorate([
Output(),
__metadata("design:type", EventEmitter)
], FormQLComponent.prototype, "formLoaded", void 0);
__decorate([
Output(),
__metadata("design:type", EventEmitter)
], FormQLComponent.prototype, "formSaveStart", void 0);
__decorate([
Output(),
__metadata("design:type", EventEmitter)
], FormQLComponent.prototype, "formSaveEnd", void 0);
__decorate([
Output(),
__metadata("design:type", EventEmitter)
], FormQLComponent.prototype, "formError", void 0);
__decorate([
ViewChild('target', { read: ViewContainerRef, static: true }),
__metadata("design:type", ViewContainerRef)
], FormQLComponent.prototype, "target", void 0);
FormQLComponent = __decorate([
Component({
// tslint:disable-next-line: component-selector
selector: 'formql',
template: `<div *ngIf="error" class="fql-error-message">
<h4>{{error?.title}}</h4>
<span>{{error?.message}}</span>
</div>
<formql-layout-loader
[formState]="formState"
(formSaveStart)="formSaveStart.emit(true)"
(formSaveEnd)="formSaveEnd.emit(true)"
(formError)="formError.emit(true)">
</formql-layout-loader>`,
styles: [".fql-bundle-field-input{width:100%;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.fql-bundle-checkbox-input{cursor:pointer;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.fql-bundle-label-required:after{content:\" *\";color:red}.fql-bundle-field-radio{cursor:pointer}.fql-error-message{text-align:center;padding:20px}.fql-dnd-container-separator{box-shadow:0 -2px 0 #00f}.fql-dnd-container-drop-area{outline:dashed 3px}"]
}),
__metadata("design:paramtypes", [StoreService])
], FormQLComponent);
export { FormQLComponent };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bmb3JtcWwvY29yZS8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvZm9ybXFsLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZILE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUczQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBaUJ6RCxJQUFhLGVBQWUsR0FBNUIsTUFBYSxlQUFlO0lBMkIxQixZQUNVLFlBQTBCO1FBQTFCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBdkIzQixTQUFJLEdBQWUsVUFBVSxDQUFDLElBQUksQ0FBQztRQUtsQyxlQUFVLEdBQTBCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDdkQsa0JBQWEsR0FBMEIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMxRCxnQkFBVyxHQUEwQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3hELGNBQVMsR0FBMEIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQVFoRSxVQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNwQyxlQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUd0Qyx1QkFBa0IsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBSXZDLENBQUM7SUFFTCxRQUFRO1FBQ04sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQztRQUN4RixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDcEQsU0FBUyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDdEIsSUFBSSxTQUFTLEVBQUU7Z0JBQ2IsSUFBSSxDQUFDLFNBQVMscUJBQU8sU0FBUyxDQUFDLENBQUM7Z0JBRWhDLElBQUksU0FBUyxDQUFDLElBQUk7b0JBQ2hCLElBQUksQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQzthQUM5QjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ1AsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsU0FBUyxDQUFDLFFBQWdCO1FBQ3hCLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsU0FBNkI7UUFDNUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0NBQ0YsQ0FBQTtBQTVEUSw2QkFBYSxHQUFHLGlCQUFpQixDQUFDO0FBRWhDO0lBQVIsS0FBSyxFQUFFOztpREFBa0I7QUFDakI7SUFBUixLQUFLLEVBQUU7OEJBQU0sS0FBSzs0Q0FBUztBQUNuQjtJQUFSLEtBQUssRUFBRTs7NkNBQW9DO0FBRW5DO0lBQVIsS0FBSyxFQUFFOzhCQUFlLFNBQVM7cURBQUM7QUFDeEI7SUFBUixLQUFLLEVBQUU7O3VEQUFxQjtBQUVuQjtJQUFULE1BQU0sRUFBRTs4QkFBYSxZQUFZO21EQUErQjtBQUN2RDtJQUFULE1BQU0sRUFBRTs4QkFBZ0IsWUFBWTtzREFBK0I7QUFDMUQ7SUFBVCxNQUFNLEVBQUU7OEJBQWMsWUFBWTtvREFBK0I7QUFDeEQ7SUFBVCxNQUFNLEVBQUU7OEJBQVksWUFBWTtrREFBK0I7QUFFRDtJQUE5RCxTQUFTLENBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQzs4QkFBUyxnQkFBZ0I7K0NBQUM7QUFmN0UsZUFBZTtJQWYzQixTQUFTLENBQUM7UUFDVCwrQ0FBK0M7UUFDL0MsUUFBUSxFQUFFLFFBQVE7UUFFbEIsUUFBUSxFQUFFOzs7Ozs7Ozs7c0NBUzBCOztLQUNyQyxDQUFDO3FDQTZCd0IsWUFBWTtHQTVCekIsZUFBZSxDQTZEM0I7U0E3RFksZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEZvcm1Db21wb25lbnQgfSBmcm9tICcuLi9tb2RlbHMvZm9ybS1jb21wb25lbnQubW9kZWwnO1xyXG5pbXBvcnQgeyBGb3JtRXJyb3IsIEZvcm1TdGF0ZSwgRm9ybVdpbmRvdyB9IGZyb20gJy4uL21vZGVscy9mb3JtLXdpbmRvdy5tb2RlbCc7XHJcbmltcG9ydCB7IEludGVybmFsRXZlbnRUeXBlIH0gZnJvbSAnLi4vbW9kZWxzL2ludGVybmFsLWV2ZW50Lm1vZGVsJztcclxuaW1wb3J0IHsgRm9ybVFMTW9kZSB9IGZyb20gJy4uL21vZGVscy90eXBlLm1vZGVsJztcclxuaW1wb3J0IHsgU3RvcmVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc3RvcmUuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IGNvbXBvbmVudC1zZWxlY3RvclxyXG4gIHNlbGVjdG9yOiAnZm9ybXFsJyxcclxuICBzdHlsZVVybHM6IFsnLi9mb3JtcWwuY29tcG9uZW50LnNjc3MnXSxcclxuICB0ZW1wbGF0ZTogYDxkaXYgKm5nSWY9XCJlcnJvclwiIGNsYXNzPVwiZnFsLWVycm9yLW1lc3NhZ2VcIj5cclxuICAgICAgICAgICAgICAgIDxoND57e2Vycm9yPy50aXRsZX19PC9oND5cclxuICAgICAgICAgICAgICAgIDxzcGFuPnt7ZXJyb3I/Lm1lc3NhZ2V9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8Zm9ybXFsLWxheW91dC1sb2FkZXJcclxuICAgICAgICAgICAgICAgIFtmb3JtU3RhdGVdPVwiZm9ybVN0YXRlXCJcclxuICAgICAgICAgICAgICAgIChmb3JtU2F2ZVN0YXJ0KT1cImZvcm1TYXZlU3RhcnQuZW1pdCh0cnVlKVwiXHJcbiAgICAgICAgICAgICAgICAoZm9ybVNhdmVFbmQpPVwiZm9ybVNhdmVFbmQuZW1pdCh0cnVlKVwiXHJcbiAgICAgICAgICAgICAgICAoZm9ybUVycm9yKT1cImZvcm1FcnJvci5lbWl0KHRydWUpXCI+XHJcbiAgICAgICAgICAgICAgPC9mb3JtcWwtbGF5b3V0LWxvYWRlcj5gXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb3JtUUxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgc3RhdGljIGNvbXBvbmVudE5hbWUgPSAnRm9ybVFMQ29tcG9uZW50JztcclxuXHJcbiAgQElucHV0KCkgZm9ybU5hbWU6IHN0cmluZztcclxuICBASW5wdXQoKSBpZHM6IEFycmF5PHN0cmluZz47XHJcbiAgQElucHV0KCkgbW9kZTogRm9ybVFMTW9kZSA9IEZvcm1RTE1vZGUuVmlldztcclxuXHJcbiAgQElucHV0KCkgcmVhY3RpdmVGb3JtOiBGb3JtR3JvdXA7XHJcbiAgQElucHV0KCkgY3VzdG9tTWV0YWRhdGE6IGFueTtcclxuXHJcbiAgQE91dHB1dCgpIGZvcm1Mb2FkZWQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZm9ybVNhdmVTdGFydDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBmb3JtU2F2ZUVuZDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBmb3JtRXJyb3I6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgndGFyZ2V0JywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmLCBzdGF0aWM6IHRydWUgfSkgdGFyZ2V0OiBWaWV3Q29udGFpbmVyUmVmO1xyXG5cclxuICBkYXRhOiBhbnk7XHJcbiAgZm9ybTogRm9ybVdpbmRvdztcclxuICBmb3JtU3RhdGU6IEZvcm1TdGF0ZTtcclxuXHJcbiAgZGF0YSQgPSB0aGlzLnN0b3JlU2VydmljZS5nZXREYXRhKCk7XHJcbiAgZm9ybVN0YXRlJCA9IHRoaXMuc3RvcmVTZXJ2aWNlLmdldEZvcm1TdGF0ZSgpO1xyXG4gIGVycm9yOiBGb3JtRXJyb3I7XHJcblxyXG4gIHByaXZhdGUgY29tcG9uZW50RGVzdHJveWVkID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHN0b3JlU2VydmljZTogU3RvcmVTZXJ2aWNlXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRhdGEkLnBpcGUodGFrZVVudGlsKHRoaXMuY29tcG9uZW50RGVzdHJveWVkKSkuc3Vic2NyaWJlKGRhdGEgPT4gdGhpcy5kYXRhID0gZGF0YSk7XHJcbiAgICB0aGlzLmZvcm1TdGF0ZSQucGlwZSh0YWtlVW50aWwodGhpcy5jb21wb25lbnREZXN0cm95ZWQpKS5cclxuICAgICAgICBzdWJzY3JpYmUoKGZvcm1TdGF0ZSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGZvcm1TdGF0ZSkge1xyXG4gICAgICAgICAgICB0aGlzLmZvcm1TdGF0ZSA9IHsuLi5mb3JtU3RhdGV9O1xyXG5cclxuICAgICAgICAgICAgaWYgKGZvcm1TdGF0ZS5mb3JtKVxyXG4gICAgICAgICAgICAgIHRoaXMuZm9ybSA9IGZvcm1TdGF0ZS5mb3JtO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgdGhpcy5zdG9yZVNlcnZpY2UuZ2V0QWxsKHRoaXMuZm9ybU5hbWUsIHRoaXMuaWRzLCB0aGlzLm1vZGUpO1xyXG4gIH1cclxuXHJcbiAgcmVzZXRGb3JtKG9iamVjdElkOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc3RvcmVTZXJ2aWNlLnJlU2V0Rm9ybShJbnRlcm5hbEV2ZW50VHlwZS5FZGl0aW5nRm9ybSwgb2JqZWN0SWQpO1xyXG4gIH1cclxuXHJcbiAgcmVmcmVzaENvbXBvbmVudChjb21wb25lbnQ6IEZvcm1Db21wb25lbnQ8YW55Pikge1xyXG4gICAgdGhpcy5zdG9yZVNlcnZpY2Uuc2V0Q29tcG9uZW50KGNvbXBvbmVudCk7XHJcbiAgfVxyXG5cclxuICBzYXZlRm9ybSgpIHtcclxuICAgIHRoaXMuc3RvcmVTZXJ2aWNlLnNhdmVGb3JtKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuY29tcG9uZW50RGVzdHJveWVkLm5leHQoKTtcclxuICAgIHRoaXMuY29tcG9uZW50RGVzdHJveWVkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==