diff --git a/ui-ngx/src/app/modules/home/components/widget/dialog/custom-dialog.service.ts b/ui-ngx/src/app/modules/home/components/widget/dialog/custom-dialog.service.ts index 8a8806ee98..68111bd53f 100644 --- a/ui-ngx/src/app/modules/home/components/widget/dialog/custom-dialog.service.ts +++ b/ui-ngx/src/app/modules/home/components/widget/dialog/custom-dialog.service.ts @@ -49,7 +49,7 @@ export class CustomDialogService { config?: MatDialogConfig): Observable { const modules = [this.sharedModule, CommonModule, this.sharedHomeComponentsModule, this.homeComponentsModule]; if (isObject(data) && data.hasOwnProperty('customModules')) { - modules.push(data.customModules); + modules.push(...data.customModules); } return this.dynamicComponentFactoryService.createDynamicComponentFactory( class CustomDialogComponentInstance extends CustomDialogComponent {}, template, modules).pipe( diff --git a/ui-ngx/src/app/modules/home/components/widget/widget.component.ts b/ui-ngx/src/app/modules/home/components/widget/widget.component.ts index 7b118a0ebf..ed301988a0 100644 --- a/ui-ngx/src/app/modules/home/components/widget/widget.component.ts +++ b/ui-ngx/src/app/modules/home/components/widget/widget.component.ts @@ -1479,28 +1479,29 @@ export class WidgetComponent extends PageComponent implements OnInit, AfterViewI } private loadCustomActionResources(actionNamespace: string, customCss: string, customResources: Array, actionDescriptor: WidgetActionDescriptor): Observable { + const resourceTasks: Observable[] = []; + const modulesTasks: Observable[] = []; + if (isDefined(customCss) && customCss.length > 0) { this.cssParser.cssPreviewNamespace = actionNamespace; this.cssParser.createStyleElement(actionNamespace, customCss, 'nonamespace'); } - const resourceTasks: Observable[] = []; - const modulesTasks: Observable[] = []; + if (isDefined(customResources) && customResources.length > 0) { - customResources.filter(r => r.isModule).forEach( - (resource) => { + customResources.forEach(resource => { + if (resource.isModule) { modulesTasks.push( this.resources.loadFactories(resource.url, this.modulesMap).pipe( catchError((e: Error) => of(e?.message ? e.message : `Failed to load custom action resource module: '${resource.url}'`)) ) ); + } else { + resourceTasks.push( + this.resources.loadResource(resource.url).pipe( + catchError(() => of(`Failed to load custom action resource: '${resource.url}'`)) + ) + ); } - ); - customResources.filter(r => !r.isModule).forEach((resource) => { - resourceTasks.push( - this.resources.loadResource(resource.url).pipe( - catchError(e => of(`Failed to load custom action resource: '${resource.url}'`)) - ) - ); }); if (modulesTasks.length) { @@ -1521,28 +1522,24 @@ export class WidgetComponent extends PageComponent implements OnInit, AfterViewI ); resourceTasks.push(modulesObservable.pipe( - mergeMap((resolvedModules) => { + map((resolvedModules) => { if (typeof resolvedModules === 'string') { - return of(resolvedModules); + return resolvedModules; } else { actionDescriptor.customModules = resolvedModules; - return of(null); + return null; } }))); } return forkJoin(resourceTasks).pipe( switchMap(msgs => { - let errors: string[]; - if (msgs && msgs.length) { - errors = msgs.filter(msg => msg && msg.length > 0); - } - if (errors && errors.length) { - return throwError(errors); - } else { - return of(null); - } - } + const errors = msgs.filter(msg => msg && msg.length > 0); + if (errors.length > 0) { + return throwError(() => errors); + } else { + return of(null); + }} )); } else { return of(null);