UNPKG

@formql/core

Version:

FormQL - A framework for building dynamic forms

122 lines 15.3 kB
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