UNPKG

ddata-ui-input

Version:

DData UI Input module, components, models & services

98 lines 12.9 kB
import { DialogContentItem } from '../../models/dialog/content/dialog-content-item'; export class ComponentRendererService { constructor(changeDetector) { this.changeDetector = changeDetector; this.method = 'list'; } setMethod(method = 'list') { this.method = method; return this; } setSettings(settings) { this.settings = settings; return this; } setDialogHost(dialogHost) { if (!dialogHost) { console.error(`DialogHost can't be undefined. DialogHost is not set.`); return this; } this.dialogHost = dialogHost; return this; } setComponentRef(componentRef) { this.componentRef = componentRef; return this; } render() { if (!this.dialogHost) { console.error('dialogHost is not set'); return; } const dialogContent = this.method === 'create-edit' ? new DialogContentItem(this.settings?.createEditComponent, this.settings?.createEditOptions) : new DialogContentItem(this.settings?.listComponent, this.settings?.listOptions); this.changeDetector.detectChanges(); this.dialogHost.clear(); this.componentRef = this.dialogHost.createComponent(dialogContent.component); if (!this.componentRef) { console.error('componentRef is not set', this.componentRef); return; } this.componentRef.instance.model = dialogContent.data.model; this.instance = this.componentRef.instance; if (this.method === 'list') { this.configureListComponent(dialogContent); } this.configureAnyComponent(); return this.instance; } getSelectedModels() { if (!this.instance) { return []; } return this.instance.selectedElements; } setSelectedModels(selectedModels) { if (!this.instance) { return this; } this.changeDetector.detectChanges(); this.instance.selectedElements = selectedModels ?? []; return this; } resetSelectedModels() { if (!this.instance) { return this; } this.instance.selectedElements = []; return this; } configureListComponent(dialogContent) { if (!this.settings || !this.settings.listComponent) { return; } if (!dialogContent.data) { return; } if (!this.instance) { console.error('Component instance is not set.'); return; } this.instance.multipleSelectEnabled = dialogContent.data.multipleSelectEnabled; this.instance.isSelectionList = dialogContent.data.isSelectionList; this.instance.loadData = dialogContent.data.loadData; this.instance.filter = dialogContent.data.filter ?? {}; // if there is preset models if (!dialogContent.data.loadData && !!dialogContent.data.models) { // set preset models this.instance.models = dialogContent.data.models; // send a notification to the list component to update their material table and other things this.instance.datasArrived.next(Math.random()); } } configureAnyComponent() { this.instance.isModal = true; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LXJlbmRlcmVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZGF0YS11aS1pbnB1dC9zcmMvbGliL3NlcnZpY2VzL3NlbGVjdC9jb21wb25lbnQtcmVuZGVyZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUdwRixNQUFNLE9BQU8sd0JBQXdCO0lBT25DLFlBQTZCLGNBQWlDO1FBQWpDLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQU45RCxXQUFNLEdBQTJCLE1BQU0sQ0FBQztJQU94QyxDQUFDO0lBRUQsU0FBUyxDQUFDLFNBQWlDLE1BQU07UUFDL0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFFckIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsV0FBVyxDQUFDLFFBQTJDO1FBQ3JELElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBRXpCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGFBQWEsQ0FBQyxVQUFlO1FBQzNCLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLHVEQUF1RCxDQUFDLENBQUM7WUFFdkUsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBRTdCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGVBQWUsQ0FBQyxZQUFpQjtRQUMvQixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUVqQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDcEIsT0FBTyxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1lBQ3ZDLE9BQU87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QUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztRQUV2RCw0QkFBNEI7UUFDNUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUMvRCxvQkFBb0I7WUFDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7WUFFakQsNEZBQTRGO1lBQzVGLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztTQUNoRDtJQUNILENBQUM7SUFFTyxxQkFBcUI7UUFDM0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBQy9CLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCYXNlTW9kZWxJbnRlcmZhY2UgfSBmcm9tICdkZGF0YS1jb3JlJztcbmltcG9ydCB7IERpYWxvZ0NvbnRlbnRJdGVtIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2RpYWxvZy9jb250ZW50L2RpYWxvZy1jb250ZW50LWl0ZW0nO1xuaW1wb3J0IHsgRGlhbG9nQ29udGVudEludGVyZmFjZSwgRGlhbG9nQ29udGVudFdpdGhPcHRpb25zSW50ZXJmYWNlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2RpYWxvZy9jb250ZW50L2RpYWxvZy1jb250ZW50LmludGVyZmFjZSc7XG5cbmV4cG9ydCBjbGFzcyBDb21wb25lbnRSZW5kZXJlclNlcnZpY2Uge1xuICBtZXRob2Q6ICdjcmVhdGUtZWRpdCcgfCAnbGlzdCcgPSAnbGlzdCc7XG4gIHNldHRpbmdzOiBEaWFsb2dDb250ZW50V2l0aE9wdGlvbnNJbnRlcmZhY2U7XG4gIGRpYWxvZ0hvc3Q6IGFueTtcbiAgY29tcG9uZW50UmVmOiBhbnk7XG4gIGluc3RhbmNlOiBEaWFsb2dDb250ZW50SW50ZXJmYWNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gIH1cblxuICBzZXRNZXRob2QobWV0aG9kOiAnY3JlYXRlLWVkaXQnIHwgJ2xpc3QnID0gJ2xpc3QnKTogQ29tcG9uZW50UmVuZGVyZXJTZXJ2aWNlIHtcbiAgICB0aGlzLm1ldGhvZCA9IG1ldGhvZDtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2V0U2V0dGluZ3Moc2V0dGluZ3M6IERpYWxvZ0NvbnRlbnRXaXRoT3B0aW9uc0ludGVyZmFjZSk6IENvbXBvbmVudFJlbmRlcmVyU2VydmljZSB7XG4gICAgdGhpcy5zZXR0aW5ncyA9IHNldHRpbmdzO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzZXREaWFsb2dIb3N0KGRpYWxvZ0hvc3Q6IGFueSk6IENvbXBvbmVudFJlbmRlcmVyU2VydmljZSB7XG4gICAgaWYgKCFkaWFsb2dIb3N0KSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBEaWFsb2dIb3N0IGNhbid0IGJlIHVuZGVmaW5lZC4gRGlhbG9nSG9zdCBpcyBub3Qgc2V0LmApO1xuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICB0aGlzLmRpYWxvZ0hvc3QgPSBkaWFsb2dIb3N0O1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzZXRDb21wb25lbnRSZWYoY29tcG9uZW50UmVmOiBhbnkpOiBDb21wb25lbnRSZW5kZXJlclNlcnZpY2Uge1xuICAgIHRoaXMuY29tcG9uZW50UmVmID0gY29tcG9uZW50UmVmO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICByZW5kZXIoKTogRGlhbG9nQ29udGVudEludGVyZmFjZSB7XG4gICAgaWYgKCF0aGlzLmRpYWxvZ0hvc3QpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ2RpYWxvZ0hvc3QgaXMgbm90IHNldCcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGRpYWxvZ0NvbnRlbnQ6IERpYWxvZ0NvbnRlbnRJdGVtID0gdGhpcy5tZXRob2QgPT09ICdjcmVhdGUtZWRpdCcgP1xuICAgICAgbmV3IERpYWxvZ0NvbnRlbnRJdGVtKHRoaXMuc2V0dGluZ3M/LmNyZWF0ZUVkaXRDb21wb25lbnQsIHRoaXMuc2V0dGluZ3M/LmNyZWF0ZUVkaXRPcHRpb25zKSA6XG4gICAgICBuZXcgRGlhbG9nQ29udGVudEl0ZW0odGhpcy5zZXR0aW5ncz8ubGlzdENvbXBvbmVudCwgdGhpcy5zZXR0aW5ncz8ubGlzdE9wdGlvbnMpO1xuXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICB0aGlzLmRpYWxvZ0hvc3QuY2xlYXIoKTtcblxuICAgIHRoaXMuY29tcG9uZW50UmVmID0gdGhpcy5kaWFsb2dIb3N0LmNyZWF0ZUNvbXBvbmVudChkaWFsb2dDb250ZW50LmNvbXBvbmVudCk7XG5cbiAgICBpZiAoIXRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdjb21wb25lbnRSZWYgaXMgbm90IHNldCcsIHRoaXMuY29tcG9uZW50UmVmKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLm1vZGVsID0gZGlhbG9nQ29udGVudC5kYXRhLm1vZGVsO1xuXG4gICAgdGhpcy5pbnN0YW5jZSA9IHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlIGFzIERpYWxvZ0NvbnRlbnRJbnRlcmZhY2U7XG5cbiAgICBpZiAodGhpcy5tZXRob2QgPT09ICdsaXN0Jykge1xuICAgICAgdGhpcy5jb25maWd1cmVMaXN0Q29tcG9uZW50KGRpYWxvZ0NvbnRlbnQpO1xuICAgIH1cblxuICAgIHRoaXMuY29uZmlndXJlQW55Q29tcG9uZW50KCk7XG5cbiAgICByZXR1cm4gdGhpcy5pbnN0YW5jZTtcbiAgfVxuXG4gIGdldFNlbGVjdGVkTW9kZWxzKCk6IEFycmF5PEJhc2VNb2RlbEludGVyZmFjZTxhbnk+PiB7XG4gICAgaWYgKCF0aGlzLmluc3RhbmNlKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuaW5zdGFuY2Uuc2VsZWN0ZWRFbGVtZW50cztcbiAgfVxuXG4gIHNldFNlbGVjdGVkTW9kZWxzKHNlbGVjdGVkTW9kZWxzOiBBcnJheTxCYXNlTW9kZWxJbnRlcmZhY2U8YW55Pj4pOiBDb21wb25lbnRSZW5kZXJlclNlcnZpY2Uge1xuICAgIGlmICghdGhpcy5pbnN0YW5jZSkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICB0aGlzLmluc3RhbmNlLnNlbGVjdGVkRWxlbWVudHMgPSBzZWxlY3RlZE1vZGVscyA/PyBbXTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcmVzZXRTZWxlY3RlZE1vZGVscygpOiBDb21wb25lbnRSZW5kZXJlclNlcnZpY2Uge1xuICAgIGlmICghdGhpcy5pbnN0YW5jZSkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdGhpcy5pbnN0YW5jZS5zZWxlY3RlZEVsZW1lbnRzID0gW107XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHByaXZhdGUgY29uZmlndXJlTGlzdENvbXBvbmVudChkaWFsb2dDb250ZW50OiBEaWFsb2dDb250ZW50SXRlbSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zZXR0aW5ncyB8fCAhdGhpcy5zZXR0aW5ncy5saXN0Q29tcG9uZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFkaWFsb2dDb250ZW50LmRhdGEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuaW5zdGFuY2UpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0NvbXBvbmVudCBpbnN0YW5jZSBpcyBub3Qgc2V0LicpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pbnN0YW5jZS5tdWx0aXBsZVNlbGVjdEVuYWJsZWQgPSBkaWFsb2dDb250ZW50LmRhdGEubXVsdGlwbGVTZWxlY3RFbmFibGVkO1xuICAgIHRoaXMuaW5zdGFuY2UuaXNTZWxlY3Rpb25MaXN0ID0gZGlhbG9nQ29udGVudC5kYXRhLmlzU2VsZWN0aW9uTGlzdDtcbiAgICB0aGlzLmluc3RhbmNlLmxvYWREYXRhID0gZGlhbG9nQ29udGVudC5kYXRhLmxvYWREYXRhO1xuICAgIHRoaXMuaW5zdGFuY2UuZmlsdGVyID0gZGlhbG9nQ29udGVudC5kYXRhLmZpbHRlciA/PyB7fTtcblxuICAgIC8vIGlmIHRoZXJlIGlzIHByZXNldCBtb2RlbHNcbiAgICBpZiAoIWRpYWxvZ0NvbnRlbnQuZGF0YS5sb2FkRGF0YSAmJiAhIWRpYWxvZ0NvbnRlbnQuZGF0YS5tb2RlbHMpIHtcbiAgICAgIC8vIHNldCBwcmVzZXQgbW9kZWxzXG4gICAgICB0aGlzLmluc3RhbmNlLm1vZGVscyA9IGRpYWxvZ0NvbnRlbnQuZGF0YS5tb2RlbHM7XG5cbiAgICAgIC8vIHNlbmQgYSBub3RpZmljYXRpb24gdG8gdGhlIGxpc3QgY29tcG9uZW50IHRvIHVwZGF0ZSB0aGVpciBtYXRlcmlhbCB0YWJsZSBhbmQgb3RoZXIgdGhpbmdzXG4gICAgICB0aGlzLmluc3RhbmNlLmRhdGFzQXJyaXZlZC5uZXh0KE1hdGgucmFuZG9tKCkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29uZmlndXJlQW55Q29tcG9uZW50KCk6IHZvaWQge1xuICAgIHRoaXMuaW5zdGFuY2UuaXNNb2RhbCA9IHRydWU7XG4gIH1cbn1cbiJdfQ==