UNPKG

@formql/core

Version:

FormQL - A framework for building dynamic forms

114 lines 14.5 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'; let LayoutLoaderComponent = class LayoutLoaderComponent { constructor(vcRef, componentResolverService, storeService, internalEventHandlerService, actionHandlerService) { 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((response) => this.actionHandler(response)); } set formState(formState) { if (!this.formLoaded && formState && formState.form) { if (this.target) this.target.clear(); const componentRef = this.vcRef.createComponent(this.componentResolverService.resolveComponent(formState.form.layoutComponentName)); const 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((response) => this.internalEventHandler(response)); this.target.insert(component.hostView); this.formLoaded = true; } } onSubmitTriggered() { this.submit.emit(null); } saveData() { this.formSaveStart.emit(true); this.storeService.saveData().subscribe((response) => { this.formSaveEnd.emit(true); }, (error) => { this.formError.emit(error); }); } actionHandler(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; } } internalEventHandler(response) { if (response) this.storeService.reSetForm(response.eventType, response.event); } ngOnDestroy() { 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); export { LayoutLoaderComponent }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LWxvYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZm9ybXFsL2NvcmUvIiwic291cmNlcyI6WyJjb21wb25lbnRzL2xheW91dC1sb2FkZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFjLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXBFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNsRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUN6RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFPekQsSUFBYSxxQkFBcUIsR0FBbEMsTUFBYSxxQkFBcUI7SUFpQ2hDLFlBQ1UsS0FBdUIsRUFDdkIsd0JBQWtELEVBQ2xELFlBQTBCLEVBQzFCLDJCQUF3RCxFQUN4RCxvQkFBMEM7UUFKMUMsVUFBSyxHQUFMLEtBQUssQ0FBa0I7UUFDdkIsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUNsRCxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixnQ0FBMkIsR0FBM0IsMkJBQTJCLENBQTZCO1FBQ3hELHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFuQ3BELGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDWCx1QkFBa0IsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBd0JqQyxXQUFN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UUFBOEI7UUFDakQsSUFBSSxRQUFRO1lBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3JDLENBQUM7Q0FDRixDQUFBO0FBcEZnRTtJQUE5RCxTQUFTLENBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQzs4QkFBUyxnQkFBZ0I7cURBQUM7QUFNeEY7SUFEQyxLQUFLLEVBQUU7OztzREFvQlA7QUFFUztJQUFULE1BQU0sRUFBRTs7cURBQTZCO0FBQzVCO0lBQVQsTUFBTSxFQUFFOzhCQUFnQixZQUFZOzREQUErQjtBQUMxRDtJQUFULE1BQU0sRUFBRTs4QkFBYyxZQUFZOzBEQUErQjtBQUN4RDtJQUFULE1BQU0sRUFBRTs4QkFBWSxZQUFZO3dEQUErQjtBQS9CckQscUJBQXFCO0lBTGpDLFNBQVMsQ0FBQztRQUNULFFBQVEsRUFBRSxzQkFBc0I7UUFDaEMsUUFBUSxFQUFFLHVDQUF1QztRQUNqRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtLQUNoRCxDQUFDO3FDQW1DaUIsZ0JBQWdCO1FBQ0csd0JBQXdCO1FBQ3BDLFlBQVk7UUFDRywyQkFBMkI7UUFDbEMsb0JBQW9CO0dBdEN6QyxxQkFBcUIsQ0FxRmpDO1NBckZZLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3Q29udGFpbmVyUmVmXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRm9ybUFjdGlvbiwgRm9ybUFjdGlvblR5cGUgfSBmcm9tICcuLi9tb2RlbHMvYWN0aW9uLm1vZGVsJztcclxuaW1wb3J0IHsgSW50ZXJuYWxFdmVudEhhbmRsZXIgfSBmcm9tICcuLi9tb2RlbHMvaW50ZXJuYWwtZXZlbnQubW9kZWwnO1xyXG5pbXBvcnQgeyBGb3JtUUxNb2RlIH0gZnJvbSAnLi4vbW9kZWxzL3R5cGUubW9kZWwnO1xyXG5pbXBvcnQgeyBBY3Rpb25IYW5kbGVyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2FjdGlvbi1oYW5kbGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRSZXNvbHZlclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jb21wb25lbnQtcmVzb2x2ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IEludGVybmFsRXZlbnRIYW5kbGVyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2ludGVybmFsLWV2ZW50LWhhbmRsZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFN0b3JlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3N0b3JlLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdmb3JtcWwtbGF5b3V0LWxvYWRlcicsXHJcbiAgdGVtcGxhdGU6IGA8bmctY29udGFpbmVyICN0YXJnZXQ+PC9uZy1jb250YWluZXI+YCxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTGF5b3V0TG9hZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICBAVmlld0NoaWxkKCd0YXJnZXQnLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYsIHN0YXRpYzogdHJ1ZSB9KSB0YXJnZXQ6IFZpZXdDb250YWluZXJSZWY7XHJcblxyXG4gIGZvcm1Mb2FkZWQgPSBmYWxzZTtcclxuICBwcml2YXRlIGNvbXBvbmVudERlc3Ryb3llZCA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGZvcm1TdGF0ZShmb3JtU3RhdGUpIHtcclxuICAgIGlmICghdGhpcy5mb3JtTG9hZGVkICYmIGZvcm1TdGF0ZSAmJiBmb3JtU3RhdGUuZm9ybSkge1xyXG4gICAgICBpZiAodGhpcy50YXJnZXQpIHRoaXMudGFyZ2V0LmNsZWFyKCk7XHJcblxyXG4gICAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLnZjUmVmLmNyZWF0ZUNvbXBvbmVudChcclxuICAgICAgICB0aGlzLmNvbXBvbmVudFJlc29sdmVyU2VydmljZS5yZXNvbHZlQ29tcG9uZW50KGZvcm1TdGF0ZS5mb3JtLmxheW91dENvbXBvbmVudE5hbWUpXHJcbiAgICAgICk7XHJcbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IDxhbnk+Y29tcG9uZW50UmVmO1xyXG4gICAgICBjb21wb25lbnQuaW5zdGFuY2UuZm9ybSA9IGZvcm1TdGF0ZS5mb3JtO1xyXG4gICAgICBjb21wb25lbnQuaW5zdGFuY2UucmVhY3RpdmVGb3JtID0gZm9ybVN0YXRlLnJlYWN0aXZlRm9ybTtcclxuICAgICAgY29tcG9uZW50Lmluc3RhbmNlLm1vZGUgPSBmb3JtU3RhdGUubW9kZTtcclxuXHJcbiAgICAgIGlmIChmb3JtU3RhdGUubW9kZSA9PT0gRm9ybVFMTW9kZS5FZGl0KVxyXG4gICAgICAgIHRoaXMuaW50ZXJuYWxFdmVudEhhbmRsZXJTZXJ2aWNlLmV2ZW50LnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHRoaXMuaW50ZXJuYWxFdmVudEhhbmRsZXIocmVzcG9uc2UpKTtcclxuXHJcbiAgICAgIHRoaXMudGFyZ2V0Lmluc2VydChjb21wb25lbnQuaG9zdFZpZXcpO1xyXG5cclxuICAgICAgdGhpcy5mb3JtTG9hZGVkID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKSBzdWJtaXQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGZvcm1TYXZlU3RhcnQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZm9ybVNhdmVFbmQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZm9ybUVycm9yOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSB2Y1JlZjogVmlld0NvbnRhaW5lclJlZixcclxuICAgIHByaXZhdGUgY29tcG9uZW50UmVzb2x2ZXJTZXJ2aWNlOiBDb21wb25lbnRSZXNvbHZlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHN0b3JlU2VydmljZTogU3RvcmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBpbnRlcm5hbEV2ZW50SGFuZGxlclNlcnZpY2U6IEludGVybmFsRXZlbnRIYW5kbGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgYWN0aW9uSGFuZGxlclNlcnZpY2U6IEFjdGlvbkhhbmRsZXJTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLmFjdGlvbkhhbmRsZXJTZXJ2aWNlLmFjdGlvbi5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB0aGlzLmFjdGlvbkhhbmRsZXIocmVzcG9uc2UpKTtcclxuICB9XHJcblxyXG4gIG9uU3VibWl0VHJpZ2dlcmVkKCkge1xyXG4gICAgdGhpcy5zdWJtaXQuZW1pdChudWxsKTtcclxuICB9XHJcblxyXG4gIHNhdmVEYXRhKCkge1xyXG4gICAgdGhpcy5mb3JtU2F2ZVN0YXJ0LmVtaXQodHJ1ZSk7XHJcbiAgICB0aGlzLnN0b3JlU2VydmljZS5zYXZlRGF0YSgpLnN1YnNjcmliZShcclxuICAgICAgKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgdGhpcy5mb3JtU2F2ZUVuZC5lbWl0KHRydWUpO1xyXG4gICAgICB9LFxyXG4gICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICB0aGlzLmZvcm1FcnJvci5lbWl0KGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGFjdGlvbkhhbmRsZXIoYWN0aW9uSGFuZGxlcjogRm9ybUFjdGlvbikge1xyXG4gICAgaWYgKGFjdGlvbkhhbmRsZXIpXHJcbiAgICAgIHN3aXRjaCAoYWN0aW9uSGFuZGxlci5rZXkpIHtcclxuICAgICAgICBjYXNlIEZvcm1BY3Rpb25UeXBlLlNhdmU6XHJcbiAgICAgICAgICB0aGlzLnNhdmVEYXRhKCk7XHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgY2FzZSBGb3JtQWN0aW9uVHlwZS5WYWxpZGF0ZTpcclxuICAgICAgICAgIHRoaXMuc3RvcmVTZXJ2aWNlLnZhbGlkYXRlRm9ybSgpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgRm9ybUFjdGlvblR5cGUuVmFsaWRhdGVBbmRTYXZlOlxyXG4gICAgICAgICAgdGhpcy5zdG9yZVNlcnZpY2UudmFsaWRhdGVGb3JtKCk7XHJcbiAgICAgICAgICBpZiAodGhpcy5zdG9yZVNlcnZpY2UuaXNGb3JtVmFsaWQoKSkgdGhpcy5zYXZlRGF0YSgpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICB9XHJcblxyXG4gIGludGVybmFsRXZlbnRIYW5kbGVyKHJlc3BvbnNlOiBJbnRlcm5hbEV2ZW50SGFuZGxlcikge1xyXG4gICAgaWYgKHJlc3BvbnNlKSB0aGlzLnN0b3JlU2VydmljZS5yZVNldEZvcm0ocmVzcG9uc2UuZXZlbnRUeXBlLCByZXNwb25zZS5ldmVudCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuY29tcG9uZW50RGVzdHJveWVkLm5leHQoKTtcclxuICAgIHRoaXMuY29tcG9uZW50RGVzdHJveWVkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==