@formql/core
Version:
FormQL - A framework for building dynamic forms
122 lines • 15.3 kB
JavaScript
import { __decorate, __metadata } from "tslib";
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewChild, ViewContainerRef } from '@angular/core';
import { Subject } from 'rxjs';
import { FormActionType } from '../models/action.model';
import { FormQLMode } from '../models/type.model';
import { ActionHandlerService } from '../services/action-handler.service';
import { ComponentResolverService } from '../services/component-resolver.service';
import { InternalEventHandlerService } from '../services/internal-event-handler.service';
import { StoreService } from '../services/store.service';
var LayoutLoaderComponent = /** @class */ (function () {
function LayoutLoaderComponent(vcRef, componentResolverService, storeService, internalEventHandlerService, actionHandlerService) {
var _this = this;
this.vcRef = vcRef;
this.componentResolverService = componentResolverService;
this.storeService = storeService;
this.internalEventHandlerService = internalEventHandlerService;
this.actionHandlerService = actionHandlerService;
this.formLoaded = false;
this.componentDestroyed = new Subject();
this.submit = new EventEmitter();
this.formSaveStart = new EventEmitter();
this.formSaveEnd = new EventEmitter();
this.formError = new EventEmitter();
this.actionHandlerService.action.subscribe(function (response) { return _this.actionHandler(response); });
}
Object.defineProperty(LayoutLoaderComponent.prototype, "formState", {
set: function (formState) {
var _this = this;
if (!this.formLoaded && formState && formState.form) {
if (this.target)
this.target.clear();
var componentRef = this.vcRef.createComponent(this.componentResolverService.resolveComponent(formState.form.layoutComponentName));
var component = componentRef;
component.instance.form = formState.form;
component.instance.reactiveForm = formState.reactiveForm;
component.instance.mode = formState.mode;
if (formState.mode === FormQLMode.Edit)
this.internalEventHandlerService.event.subscribe(function (response) { return _this.internalEventHandler(response); });
this.target.insert(component.hostView);
this.formLoaded = true;
}
},
enumerable: true,
configurable: true
});
LayoutLoaderComponent.prototype.onSubmitTriggered = function () {
this.submit.emit(null);
};
LayoutLoaderComponent.prototype.saveData = function () {
var _this = this;
this.formSaveStart.emit(true);
this.storeService.saveData().subscribe(function (response) {
_this.formSaveEnd.emit(true);
}, function (error) {
_this.formError.emit(error);
});
};
LayoutLoaderComponent.prototype.actionHandler = function (actionHandler) {
if (actionHandler)
switch (actionHandler.key) {
case FormActionType.Save:
this.saveData();
break;
case FormActionType.Validate:
this.storeService.validateForm();
break;
case FormActionType.ValidateAndSave:
this.storeService.validateForm();
if (this.storeService.isFormValid())
this.saveData();
break;
}
};
LayoutLoaderComponent.prototype.internalEventHandler = function (response) {
if (response)
this.storeService.reSetForm(response.eventType, response.event);
};
LayoutLoaderComponent.prototype.ngOnDestroy = function () {
this.componentDestroyed.next();
this.componentDestroyed.complete();
};
__decorate([
ViewChild('target', { read: ViewContainerRef, static: true }),
__metadata("design:type", ViewContainerRef)
], LayoutLoaderComponent.prototype, "target", void 0);
__decorate([
Input(),
__metadata("design:type", Object),
__metadata("design:paramtypes", [Object])
], LayoutLoaderComponent.prototype, "formState", null);
__decorate([
Output(),
__metadata("design:type", Object)
], LayoutLoaderComponent.prototype, "submit", void 0);
__decorate([
Output(),
__metadata("design:type", EventEmitter)
], LayoutLoaderComponent.prototype, "formSaveStart", void 0);
__decorate([
Output(),
__metadata("design:type", EventEmitter)
], LayoutLoaderComponent.prototype, "formSaveEnd", void 0);
__decorate([
Output(),
__metadata("design:type", EventEmitter)
], LayoutLoaderComponent.prototype, "formError", void 0);
LayoutLoaderComponent = __decorate([
Component({
selector: 'formql-layout-loader',
template: "<ng-container #target></ng-container>",
changeDetection: ChangeDetectionStrategy.OnPush
}),
__metadata("design:paramtypes", [ViewContainerRef,
ComponentResolverService,
StoreService,
InternalEventHandlerService,
ActionHandlerService])
], LayoutLoaderComponent);
return LayoutLoaderComponent;
}());
export { LayoutLoaderComponent };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LWxvYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZm9ybXFsL2NvcmUvIiwic291cmNlcyI6WyJjb21wb25lbnRzL2xheW91dC1sb2FkZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFjLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXBFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNsRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUN6RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFPekQ7SUFpQ0UsK0JBQ1UsS0FBdUIsRUFDdkIsd0JBQWtELEVBQ2xELFlBQTBCLEVBQzFCLDJCQUF3RCxFQUN4RCxvQkFBMEM7UUFMcEQsaUJBUUM7UUFQUyxVQUFLLEdBQUwsS0FBSyxDQUFrQjtRQUN2Qiw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQ2xELGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGdDQUEyQixHQUEzQiwyQkFBMkIsQ0FBNkI7UUFDeEQseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQW5DcEQsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNYLHVCQUFrQixHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUF3QmpDLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFB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ckQsTUFBTTthQUNUO0lBQ0wsQ0FBQztJQUVELG9EQUFvQixHQUFwQixVQUFxQixRQUE4QjtRQUNqRCxJQUFJLFFBQVE7WUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRUQsMkNBQVcsR0FBWDtRQUNFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDckMsQ0FBQztJQW5GOEQ7UUFBOUQsU0FBUyxDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7a0NBQVMsZ0JBQWdCO3lEQUFDO0lBTXhGO1FBREMsS0FBSyxFQUFFOzs7MERBb0JQO0lBRVM7UUFBVCxNQUFNLEVBQUU7O3lEQUE2QjtJQUM1QjtRQUFULE1BQU0sRUFBRTtrQ0FBZ0IsWUFBWTtnRUFBK0I7SUFDMUQ7UUFBVCxNQUFNLEVBQUU7a0NBQWMsWUFBWTs4REFBK0I7SUFDeEQ7UUFBVCxNQUFNLEVBQUU7a0NBQVksWUFBWTs0REFBK0I7SUEvQnJELHFCQUFxQjtRQUxqQyxTQUFTLENBQUM7WUFDVCxRQUFRLEVBQUUsc0JBQXNCO1lBQ2hDLFFBQVEsRUFBRSx1Q0FBdUM7WUFDakQsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07U0FDaEQsQ0FBQzt5Q0FtQ2lCLGdCQUFnQjtZQUNHLHdCQUF3QjtZQUNwQyxZQUFZO1lBQ0csMkJBQTJCO1lBQ2xDLG9CQUFvQjtPQXRDekMscUJBQXFCLENBcUZqQztJQUFELDRCQUFDO0NBQUEsQUFyRkQsSUFxRkM7U0FyRlkscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdDb250YWluZXJSZWZcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBGb3JtQWN0aW9uLCBGb3JtQWN0aW9uVHlwZSB9IGZyb20gJy4uL21vZGVscy9hY3Rpb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBJbnRlcm5hbEV2ZW50SGFuZGxlciB9IGZyb20gJy4uL21vZGVscy9pbnRlcm5hbC1ldmVudC5tb2RlbCc7XHJcbmltcG9ydCB7IEZvcm1RTE1vZGUgfSBmcm9tICcuLi9tb2RlbHMvdHlwZS5tb2RlbCc7XHJcbmltcG9ydCB7IEFjdGlvbkhhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYWN0aW9uLWhhbmRsZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudFJlc29sdmVyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NvbXBvbmVudC1yZXNvbHZlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSW50ZXJuYWxFdmVudEhhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvaW50ZXJuYWwtZXZlbnQtaGFuZGxlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3RvcmVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc3RvcmUuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2Zvcm1xbC1sYXlvdXQtbG9hZGVyJyxcclxuICB0ZW1wbGF0ZTogYDxuZy1jb250YWluZXIgI3RhcmdldD48L25nLWNvbnRhaW5lcj5gLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMYXlvdXRMb2FkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gIEBWaWV3Q2hpbGQoJ3RhcmdldCcsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiB0cnVlIH0pIHRhcmdldDogVmlld0NvbnRhaW5lclJlZjtcclxuXHJcbiAgZm9ybUxvYWRlZCA9IGZhbHNlO1xyXG4gIHByaXZhdGUgY29tcG9uZW50RGVzdHJveWVkID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgZm9ybVN0YXRlKGZvcm1TdGF0ZSkge1xyXG4gICAgaWYgKCF0aGlzLmZvcm1Mb2FkZWQgJiYgZm9ybVN0YXRlICYmIGZvcm1TdGF0ZS5mb3JtKSB7XHJcbiAgICAgIGlmICh0aGlzLnRhcmdldCkgdGhpcy50YXJnZXQuY2xlYXIoKTtcclxuXHJcbiAgICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHRoaXMudmNSZWYuY3JlYXRlQ29tcG9uZW50KFxyXG4gICAgICAgIHRoaXMuY29tcG9uZW50UmVzb2x2ZXJTZXJ2aWNlLnJlc29sdmVDb21wb25lbnQoZm9ybVN0YXRlLmZvcm0ubGF5b3V0Q29tcG9uZW50TmFtZSlcclxuICAgICAgKTtcclxuICAgICAgY29uc3QgY29tcG9uZW50ID0gPGFueT5jb21wb25lbnRSZWY7XHJcbiAgICAgIGNvbXBvbmVudC5pbnN0YW5jZS5mb3JtID0gZm9ybVN0YXRlLmZvcm07XHJcbiAgICAgIGNvbXBvbmVudC5pbnN0YW5jZS5yZWFjdGl2ZUZvcm0gPSBmb3JtU3RhdGUucmVhY3RpdmVGb3JtO1xyXG4gICAgICBjb21wb25lbnQuaW5zdGFuY2UubW9kZSA9IGZvcm1TdGF0ZS5tb2RlO1xyXG5cclxuICAgICAgaWYgKGZvcm1TdGF0ZS5tb2RlID09PSBGb3JtUUxNb2RlLkVkaXQpXHJcbiAgICAgICAgdGhpcy5pbnRlcm5hbEV2ZW50SGFuZGxlclNlcnZpY2UuZXZlbnQuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4gdGhpcy5pbnRlcm5hbEV2ZW50SGFuZGxlcihyZXNwb25zZSkpO1xyXG5cclxuICAgICAgdGhpcy50YXJnZXQuaW5zZXJ0KGNvbXBvbmVudC5ob3N0Vmlldyk7XHJcblxyXG4gICAgICB0aGlzLmZvcm1Mb2FkZWQgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQE91dHB1dCgpIHN1Ym1pdCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZm9ybVNhdmVTdGFydDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBmb3JtU2F2ZUVuZDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBmb3JtRXJyb3I6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHZjUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxyXG4gICAgcHJpdmF0ZSBjb21wb25lbnRSZXNvbHZlclNlcnZpY2U6IENvbXBvbmVudFJlc29sdmVyU2VydmljZSxcclxuICAgIHByaXZhdGUgc3RvcmVTZXJ2aWNlOiBTdG9yZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGludGVybmFsRXZlbnRIYW5kbGVyU2VydmljZTogSW50ZXJuYWxFdmVudEhhbmRsZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhY3Rpb25IYW5kbGVyU2VydmljZTogQWN0aW9uSGFuZGxlclNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuYWN0aW9uSGFuZGxlclNlcnZpY2UuYWN0aW9uLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHRoaXMuYWN0aW9uSGFuZGxlcihyZXNwb25zZSkpO1xyXG4gIH1cclxuXHJcbiAgb25TdWJtaXRUcmlnZ2VyZWQoKSB7XHJcbiAgICB0aGlzLnN1Ym1pdC5lbWl0KG51bGwpO1xyXG4gIH1cclxuXHJcbiAgc2F2ZURhdGEoKSB7XHJcbiAgICB0aGlzLmZvcm1TYXZlU3RhcnQuZW1pdCh0cnVlKTtcclxuICAgIHRoaXMuc3RvcmVTZXJ2aWNlLnNhdmVEYXRhKCkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzcG9uc2UpID0+IHtcclxuICAgICAgICB0aGlzLmZvcm1TYXZlRW5kLmVtaXQodHJ1ZSk7XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgIHRoaXMuZm9ybUVycm9yLmVtaXQoZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgYWN0aW9uSGFuZGxlcihhY3Rpb25IYW5kbGVyOiBGb3JtQWN0aW9uKSB7XHJcbiAgICBpZiAoYWN0aW9uSGFuZGxlcilcclxuICAgICAgc3dpdGNoIChhY3Rpb25IYW5kbGVyLmtleSkge1xyXG4gICAgICAgIGNhc2UgRm9ybUFjdGlvblR5cGUuU2F2ZTpcclxuICAgICAgICAgIHRoaXMuc2F2ZURhdGEoKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIEZvcm1BY3Rpb25UeXBlLlZhbGlkYXRlOlxyXG4gICAgICAgICAgdGhpcy5zdG9yZVNlcnZpY2UudmFsaWRhdGVGb3JtKCk7XHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgY2FzZSBGb3JtQWN0aW9uVHlwZS5WYWxpZGF0ZUFuZFNhdmU6XHJcbiAgICAgICAgICB0aGlzLnN0b3JlU2VydmljZS52YWxpZGF0ZUZvcm0oKTtcclxuICAgICAgICAgIGlmICh0aGlzLnN0b3JlU2VydmljZS5pc0Zvcm1WYWxpZCgpKSB0aGlzLnNhdmVEYXRhKCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gIH1cclxuXHJcbiAgaW50ZXJuYWxFdmVudEhhbmRsZXIocmVzcG9uc2U6IEludGVybmFsRXZlbnRIYW5kbGVyKSB7XHJcbiAgICBpZiAocmVzcG9uc2UpIHRoaXMuc3RvcmVTZXJ2aWNlLnJlU2V0Rm9ybShyZXNwb25zZS5ldmVudFR5cGUsIHJlc3BvbnNlLmV2ZW50KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5jb21wb25lbnREZXN0cm95ZWQubmV4dCgpO1xyXG4gICAgdGhpcy5jb21wb25lbnREZXN0cm95ZWQuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuIl19