@formql/core
Version:
FormQL - A framework for building dynamic forms
114 lines • 14.5 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';
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==