@platform-mesh/portal-ui-lib 0.45.20 → 0.45.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -9,7 +9,7 @@ import { ResourceService, GatewayService, AccountInfoService, OrganizationReadyS
|
|
|
9
9
|
import { isNamespacedResource, generateGraphQLFields, mergeListWithSubscriptionResult } from '@platform-mesh/portal-ui-lib/utils';
|
|
10
10
|
import '@ui5/webcomponents/dist/ComboBox.js';
|
|
11
11
|
import { Subject, defer, of, firstValueFrom } from 'rxjs';
|
|
12
|
-
import { shareReplay, retry, takeUntil, switchMap, startWith, scan, catchError } from 'rxjs/operators';
|
|
12
|
+
import { shareReplay, retry, takeUntil, switchMap, startWith, scan, tap, catchError } from 'rxjs/operators';
|
|
13
13
|
|
|
14
14
|
class CustomGlobalNodesServiceImpl {
|
|
15
15
|
constructor() {
|
|
@@ -234,7 +234,10 @@ class NamespaceSelectionRendererService {
|
|
|
234
234
|
.pipe(startWith(undefined), scan((resources, subscriptionResult) => mergeListWithSubscriptionResult(resources, subscriptionResult, {
|
|
235
235
|
getItemKey: (resource) => resource.metadata?.name,
|
|
236
236
|
mapSubscriptionObjectToItem: (object) => object,
|
|
237
|
-
}), result.items),
|
|
237
|
+
}), result.items), tap((result) => {
|
|
238
|
+
const namespaces = result.map((e) => e.metadata?.name);
|
|
239
|
+
this.luigiCoreService.setInGlobalContext({ namespaces });
|
|
240
|
+
}), takeUntil(stop$))), catchError((error) => {
|
|
238
241
|
console.error(`Failed to read entities from ${operation}`, error);
|
|
239
242
|
return of([]);
|
|
240
243
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform-mesh-portal-ui-lib-portal-options.mjs","sources":["../../projects/lib/portal-options/services/custom-global-nodes.service.ts","../../projects/lib/portal-options/services/header-bar-renderers/breadcrumb-renderer.ts","../../projects/lib/portal-options/services/header-bar-renderers/namespace-selection-renderer.service.ts","../../projects/lib/portal-options/services/header-bar-config.service.ts","../../projects/lib/portal-options/services/luigi-extended-global-context-config.service.ts","../../projects/lib/portal-options/services/navigation-redirect-strategy.service.ts","../../projects/lib/portal-options/utils/account-hierarchy.util.ts","../../projects/lib/portal-options/services/crd-gateway-kcp-patch-resolver.service.ts","../../projects/lib/portal-options/services/node-change-hook-config.service.ts","../../projects/lib/portal-options/services/node-context-processing.service.ts","../../projects/lib/portal-options/services/router-config.service.ts","../../projects/lib/portal-options/services/user-profile-config.service.ts","../../projects/lib/portal-options/platform-mesh-portal-ui-lib-portal-options.ts"],"sourcesContent":["import { PortalNodeContext } from '../models/luigi-context';\nimport { PortalLuigiNode } from '../models/luigi-node';\nimport { Injectable, inject } from '@angular/core';\nimport {\n CustomGlobalNodesService,\n EntityType,\n I18nService,\n NodeContext,\n} from '@openmfp/portal-ui-lib';\n\n@Injectable({ providedIn: 'root' })\nexport class CustomGlobalNodesServiceImpl implements CustomGlobalNodesService {\n private i18nService = inject(I18nService);\n\n async getCustomGlobalNodes(): Promise<PortalLuigiNode[]> {\n return [\n {\n pathSegment: 'error',\n order: 1000,\n hideFromNav: true,\n showBreadcrumbs: false,\n context: {} as PortalNodeContext,\n children: [\n {\n pathSegment: ':id',\n entityType: EntityType.ENTITY_ERROR,\n hideFromNav: true,\n hideSideNav: true,\n viewUrl: '/assets/platform-mesh-portal-ui-wc.js#error-component',\n context: {\n id: ':id',\n translationTable: this.i18nService.translationTable,\n } as any as NodeContext,\n webcomponent: {\n selfRegistered: true,\n },\n },\n ],\n },\n {\n pathSegment: 'users',\n showBreadcrumbs: false,\n hideSideNav: true,\n hideFromNav: true,\n context: {} as PortalNodeContext,\n entityType: 'global',\n children: [\n {\n pathSegment: ':userId',\n hideSideNav: true,\n hideFromNav: true,\n defineEntity: {\n id: 'user',\n },\n context: {\n userId: ':userId',\n } as PortalNodeContext,\n children: [\n {\n pathSegment: 'overview',\n context: {} as PortalNodeContext,\n hideSideNav: true,\n hideFromNav: true,\n defineEntity: {\n id: 'overview',\n },\n compound: {\n children: [],\n },\n },\n ],\n },\n ],\n },\n ];\n }\n}\n","import '@ui5/webcomponents/dist/Breadcrumbs.js';\nimport '@ui5/webcomponents/dist/BreadcrumbsItem.js';\n\nexport const breadcrumbRenderer = (\n containerElement: HTMLElement,\n nodeItems: any[],\n clickHandler: (item: any) => void,\n): HTMLElement => {\n containerElement.style.width = '100%';\n\n const ui5breadcrumbs = document.createElement('ui5-breadcrumbs');\n ui5breadcrumbs.setAttribute('separators', 'Slash');\n containerElement.appendChild(ui5breadcrumbs);\n\n nodeItems.forEach((item) => {\n if (item.node?.hideFromBreadcrumb) {\n return;\n }\n\n const itemCmp = document.createElement('ui5-breadcrumbs-item');\n itemCmp.textContent = item.label ?? '';\n (itemCmp as any)._item = item;\n ui5breadcrumbs.appendChild(itemCmp);\n });\n\n ui5breadcrumbs.addEventListener('item-click', (event: any) => {\n if (\n !(\n event.detail.ctrlKey ||\n event.detail.altKey ||\n event.detail.shiftKey ||\n event.detail.metaKey\n )\n ) {\n event.preventDefault();\n clickHandler(event.detail.item._item);\n }\n });\n\n return ui5breadcrumbs;\n};\n","import { DestroyRef, Injectable, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n AuthService,\n LuigiCoreService,\n LuigiNode,\n PortalConfig,\n} from '@openmfp/portal-ui-lib';\nimport {\n ALL_NAMESPACE,\n FieldDefinition,\n Resource,\n ResourceDefinition,\n ResourceListResult,\n} from '@platform-mesh/portal-ui-lib/models';\nimport {\n ResourceNodeContext,\n ResourceService,\n} from '@platform-mesh/portal-ui-lib/services';\nimport {\n generateGraphQLFields,\n isNamespacedResource,\n mergeListWithSubscriptionResult,\n} from '@platform-mesh/portal-ui-lib/utils';\nimport '@ui5/webcomponents/dist/ComboBox.js';\nimport { Observable, Subject, defer, of } from 'rxjs';\nimport {\n catchError,\n retry,\n scan,\n shareReplay,\n startWith,\n switchMap,\n takeUntil,\n} from 'rxjs/operators';\n\nconst defaultColumns: FieldDefinition[] = [\n {\n label: 'Name',\n property: 'metadata.name',\n },\n];\n\n@Injectable({ providedIn: 'root' })\nexport class NamespaceSelectionRendererService {\n private namespaceResourcesCache?: {\n key: string;\n value$: Observable<Resource[]>;\n stop$: Subject<void>;\n };\n\n private resourceService = inject(ResourceService);\n private authService = inject(AuthService);\n private luigiCoreService = inject(LuigiCoreService);\n private destroyRef = inject(DestroyRef);\n\n public create(portalConfig: PortalConfig) {\n return (\n containerElement: HTMLElement,\n nodeItems: any[],\n _clickHandler: any,\n ) => {\n containerElement.style.paddingBottom = '0.5rem';\n\n const lastNode = nodeItems.at(-1)?.node as LuigiNode | undefined;\n const namespace = this.luigiCoreService\n .routing()\n .getSearchParams().namespace;\n const kcpPath = lastNode?.context?.kcpPath;\n\n if (lastNode?.context && !isNamespacedResource(lastNode.context)) {\n return containerElement;\n }\n\n const ui5combobox = this.createCombobox(containerElement);\n\n this.addComboboxItems(portalConfig, ui5combobox, namespace, kcpPath);\n\n ui5combobox.addEventListener('change', (event: any) => {\n const value = (event?.target as any)?.value.trim() ?? '';\n this.changeNamespace(value);\n });\n\n return ui5combobox as HTMLElement;\n };\n }\n\n private createCombobox(containerElement: HTMLElement) {\n const ui5combobox = document.createElement('ui5-combobox');\n ui5combobox.setAttribute('placeholder', 'Namespaces');\n ui5combobox.setAttribute('data-testid', 'namespace-selection-combobox');\n containerElement.appendChild(ui5combobox);\n\n return ui5combobox;\n }\n\n private addComboboxItems(\n portalConfig: PortalConfig,\n ui5combobox: HTMLElement,\n namespace: string | null,\n kcpPath?: string,\n ) {\n this.getNamespaceResourcesCached(portalConfig, kcpPath).subscribe(\n (resources) => {\n this.syncComboboxItems(ui5combobox, resources);\n this.setSelectedValue(ui5combobox, resources, namespace);\n },\n );\n }\n\n private getNamespaceResourcesCached(\n portalConfig: PortalConfig,\n kcpPath?: string,\n ): Observable<Resource[]> {\n const cacheKey = this.getNamespaceResourcesCacheKey(kcpPath);\n if (this.namespaceResourcesCache?.key === cacheKey) {\n return this.namespaceResourcesCache.value$;\n }\n\n if (this.namespaceResourcesCache) {\n this.namespaceResourcesCache.stop$.next();\n this.namespaceResourcesCache.stop$.complete();\n this.namespaceResourcesCache = undefined;\n }\n\n const stop$ = new Subject<void>();\n const value$ = this.getNamespaceResources(\n portalConfig,\n kcpPath,\n stop$,\n ).pipe(shareReplay(1), takeUntilDestroyed(this.destroyRef));\n this.namespaceResourcesCache = {\n key: cacheKey,\n value$,\n stop$,\n };\n\n return value$;\n }\n\n private getNamespaceResourcesCacheKey(kcpPath?: string): string {\n return kcpPath ?? '';\n }\n\n private syncComboboxItems(ui5combobox: HTMLElement, resources: Resource[]) {\n ui5combobox.replaceChildren();\n\n resources.forEach((resource) => {\n const name = resource.metadata?.name;\n if (!name) {\n return;\n }\n const resourceOption = document.createElement('ui5-cb-item');\n resourceOption.setAttribute('text', name);\n resourceOption.setAttribute(\n 'data-testid',\n `namespace-selection-combobox-item-${name}`,\n );\n ui5combobox.appendChild(resourceOption);\n });\n\n const allOption = document.createElement('ui5-cb-item');\n allOption.setAttribute('text', ALL_NAMESPACE);\n allOption.setAttribute(\n 'data-testid',\n 'namespace-selection-combobox-item-all',\n );\n ui5combobox.appendChild(allOption);\n }\n\n private setSelectedValue(\n ui5combobox: HTMLElement,\n resources: Resource[],\n namespace: string | null,\n ) {\n const currentNamespace = this.luigiCoreService\n .routing()\n .getSearchParams().namespace;\n\n if (currentNamespace) {\n ui5combobox.setAttribute('value', currentNamespace);\n return;\n }\n\n if (\n namespace &&\n resources.find((resource) => resource.metadata?.name === namespace)\n ) {\n ui5combobox.setAttribute('value', namespace);\n } else {\n ui5combobox.setAttribute('value', ALL_NAMESPACE);\n this.changeNamespace(ALL_NAMESPACE);\n }\n }\n\n private getNamespaceResources(\n portalConfig: PortalConfig,\n kcpPath: string | undefined,\n stop$: Subject<void>,\n ): Observable<Resource[]> {\n const operation = 'v1_namespaces';\n const fields = generateGraphQLFields(defaultColumns);\n const context = {\n portalContext: {\n crdGatewayApiUrl: portalConfig.portalContext['crdGatewayApiUrl'],\n },\n resourceDefinition: {\n version: 'v1',\n entityCollection: 'Namespaces',\n entity: 'Namespace',\n scope: 'Cluster',\n } as ResourceDefinition,\n kcpPath,\n token: this.authService.getToken(),\n } as ResourceNodeContext;\n\n return defer(() =>\n this.resourceService.list(operation, fields, context),\n ).pipe(\n retry(3),\n takeUntil(stop$),\n switchMap((result: ResourceListResult) =>\n this.resourceService\n .resourceChangeSubscription(\n operation,\n fields,\n context,\n result.resourceVersion,\n false,\n )\n .pipe(\n startWith(undefined),\n scan(\n (resources, subscriptionResult) =>\n mergeListWithSubscriptionResult(resources, subscriptionResult, {\n getItemKey: (resource) => resource.metadata?.name,\n mapSubscriptionObjectToItem: (object) => object,\n }),\n result.items,\n ),\n takeUntil(stop$),\n ),\n ),\n catchError((error) => {\n console.error(`Failed to read entities from ${operation}`, error);\n return of([]);\n }),\n );\n }\n\n private changeNamespace(value: string): void {\n if (!value) {\n return;\n }\n\n const oldValue = this.luigiCoreService\n .routing()\n .getSearchParams().namespace;\n\n if (oldValue === value) {\n return;\n }\n\n this.luigiCoreService.routing().addSearchParams({ namespace: value });\n }\n}\n","import { breadcrumbRenderer } from './header-bar-renderers/breadcrumb-renderer';\nimport { NamespaceSelectionRendererService } from './header-bar-renderers/namespace-selection-renderer.service';\nimport { Injectable, inject } from '@angular/core';\nimport {\n ConfigService,\n HeaderBarConfig,\n HeaderBarConfigService,\n} from '@openmfp/portal-ui-lib';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class HeaderBarConfigServiceImpl implements HeaderBarConfigService {\n private configService = inject(ConfigService);\n private namespaceSelectionRendererService = inject(\n NamespaceSelectionRendererService,\n );\n\n public async getConfig(): Promise<HeaderBarConfig> {\n const portalConfig = await this.configService.getPortalConfig();\n\n return {\n pendingItemLabel: '...',\n omitRoot: false,\n clearBeforeRender: true,\n autoHide: true,\n leftRenderers: [breadcrumbRenderer],\n rightRenderers: [\n this.namespaceSelectionRendererService.create(portalConfig),\n ],\n };\n }\n}\n","import { kcpRootOrgsPath } from '../models/constants';\nimport { Injectable, inject } from '@angular/core';\nimport {\n EnvConfigService,\n LuigiExtendedGlobalContextConfigService,\n} from '@openmfp/portal-ui-lib';\n\n@Injectable({ providedIn: 'root' })\nexport class LuigiExtendedGlobalContextConfigServiceImpl implements LuigiExtendedGlobalContextConfigService {\n private envConfigService = inject(EnvConfigService);\n\n async createLuigiExtendedGlobalContext(): Promise<Record<string, any>> {\n const idpName = (await this.envConfigService.getEnvConfig()).idpName;\n\n if (idpName === 'welcome') {\n return {};\n }\n\n return {\n organization: idpName,\n kcpPath: `${kcpRootOrgsPath}:${idpName}`,\n entityName: idpName,\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n LocalStorageKeys,\n NavigationRedirectStrategy,\n} from '@openmfp/portal-ui-lib';\n\n@Injectable({ providedIn: 'root' })\nexport class NavigationRedirectStrategyServiceImpl implements NavigationRedirectStrategy {\n getRedirectUrl(): string {\n return localStorage.getItem(LocalStorageKeys.LAST_NAVIGATION_URL) || '';\n }\n\n saveRedirectUrl(url: string): void {\n if (url.startsWith('/error')) {\n return;\n }\n\n localStorage.setItem(LocalStorageKeys.LAST_NAVIGATION_URL, url);\n }\n\n clearRedirectUrl(): void {\n localStorage.removeItem(LocalStorageKeys.LAST_NAVIGATION_URL);\n }\n}\n","import { PortalLuigiNode } from '../models/luigi-node';\n\nexport function collectAccountNamesFromNodeHierarchy(\n node: PortalLuigiNode | undefined,\n): string[] {\n const accountNames: string[] = [];\n let currentNode: PortalLuigiNode | undefined = node;\n\n while (currentNode) {\n const entityName = currentNode.context?.entityName;\n const entityKind = currentNode.context?.entityKind;\n if (entityName && entityKind?.toLowerCase() === 'account') {\n accountNames.unshift(entityName);\n }\n currentNode = currentNode.parent;\n }\n\n return accountNames;\n}\n\nexport function getInitialAccountId(\n entityId?: string,\n kind?: string,\n): string | undefined {\n return kind?.toLowerCase() === 'account' && entityId ? entityId : undefined;\n}\n\nexport function calculateAccountHierarchy(\n entityNode: PortalLuigiNode,\n entityId?: string,\n kind?: string,\n): string[] {\n const initialAccountId = getInitialAccountId(entityId, kind);\n // when we are on a dynamic node and the id any kind has changed we need to reset the context data\n if (entityNode.defineEntity?.contextKey && initialAccountId) {\n entityNode.context.entityName = undefined;\n entityNode.context.entityKind = undefined;\n }\n\n const accountNames = collectAccountNamesFromNodeHierarchy(entityNode);\n\n if (initialAccountId) {\n accountNames.push(initialAccountId);\n }\n return accountNames;\n}\n","import { kcpRootOrgsPath } from '../models/constants';\nimport { PortalLuigiNode } from '../models/luigi-node';\nimport {\n calculateAccountHierarchy,\n getInitialAccountId,\n} from '../utils/account-hierarchy.util';\nimport { Injectable, inject } from '@angular/core';\nimport { EnvConfigService } from '@openmfp/portal-ui-lib';\nimport { GatewayService } from '@platform-mesh/portal-ui-lib/services';\n\nexport interface KcpData {\n kcpPath: string;\n accountPath: string | undefined;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class CrdGatewayKcpPatchResolver {\n private gatewayService = inject(GatewayService);\n private envConfigService = inject(EnvConfigService);\n\n public async resolveCrdGatewayKcpPath(\n nextNode: PortalLuigiNode,\n entityId?: string,\n kind?: string,\n ): Promise<KcpData> {\n if (nextNode.context?.kcpPath && !getInitialAccountId(entityId, kind)) {\n this.gatewayService.updateCrdGatewayUrlWithEntityPath(\n nextNode.context.kcpPath,\n );\n return {\n kcpPath: nextNode.context.kcpPath,\n accountPath: nextNode.context.accountPath,\n };\n }\n\n const accountNames = calculateAccountHierarchy(nextNode, entityId, kind);\n\n const accountPath =\n accountNames.length > 0 ? `${accountNames.join(':')}` : '';\n\n const org = (await this.envConfigService.getEnvConfig()).idpName;\n const kcpPath = `${kcpRootOrgsPath}:${org}${accountPath ? ':' + accountPath : ''}`;\n this.gatewayService.updateCrdGatewayUrlWithEntityPath(kcpPath);\n\n if (nextNode.context) {\n nextNode.context.kcpPath = kcpPath;\n nextNode.context.accountPath = accountPath;\n }\n return { kcpPath, accountPath };\n }\n}\n","import { PortalLuigiNode } from '../models/luigi-node';\nimport { CrdGatewayKcpPatchResolver } from './crd-gateway-kcp-patch-resolver.service';\nimport { Injectable, inject } from '@angular/core';\nimport {\n LuigiCoreService,\n NodeChangeHookConfigService,\n NodeContext,\n} from '@openmfp/portal-ui-lib';\n\n@Injectable({ providedIn: 'root' })\nexport class NodeChangeHookConfigServiceImpl implements NodeChangeHookConfigService {\n private luigiCoreService = inject(LuigiCoreService);\n private crdGatewayKcpPatchResolver = inject(CrdGatewayKcpPatchResolver);\n\n async nodeChangeHook(\n prevNode: PortalLuigiNode,\n nextNode: PortalLuigiNode,\n currentContext: NodeContext,\n ) {\n if (\n nextNode.initialRoute &&\n nextNode.virtualTree &&\n !(nextNode as any)._virtualTree\n ) {\n this.luigiCoreService.navigation().navigate(nextNode.initialRoute);\n }\n\n await this.crdGatewayKcpPatchResolver.resolveCrdGatewayKcpPath(nextNode);\n }\n}\n","import { PortalNodeContext } from '../models/luigi-context';\nimport { PortalLuigiNode } from '../models/luigi-node';\nimport { CrdGatewayKcpPatchResolver } from './crd-gateway-kcp-patch-resolver.service';\nimport { Injectable, inject } from '@angular/core';\nimport { NodeContextProcessingService } from '@openmfp/portal-ui-lib';\nimport { AccountInfo } from '@platform-mesh/portal-ui-lib/models';\nimport {\n AccountInfoService,\n ErrorHandlerService,\n OrganizationReadyService,\n} from '@platform-mesh/portal-ui-lib/services';\nimport { firstValueFrom } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NodeContextProcessingServiceImpl implements NodeContextProcessingService {\n private crdGatewayKcpPatchResolver = inject(CrdGatewayKcpPatchResolver);\n private accountInfoService = inject(AccountInfoService);\n private organizationReadyService = inject(OrganizationReadyService);\n private errorHandlerService = inject(ErrorHandlerService);\n\n public async processNodeContext(\n dynamicEntityId: string,\n entityNode: PortalLuigiNode,\n ctx: PortalNodeContext,\n ) {\n const kind = entityNode.defineEntity?.type;\n const entityId =\n dynamicEntityId || entityNode.context.resourceDefinition?.name;\n\n if (!entityId) {\n return;\n }\n\n const { kcpPath, accountPath } =\n await this.crdGatewayKcpPatchResolver.resolveCrdGatewayKcpPath(\n entityNode,\n entityId,\n kind,\n );\n\n // update the current already calculated by Luigi context for a node\n this.addFieldsToContext(ctx, entityId, kcpPath, accountPath, kind);\n\n // update the node context of sa node to contain the entity for future context calculations\n this.addFieldsToContext(\n entityNode.context,\n entityId,\n kcpPath,\n accountPath,\n kind,\n );\n\n try {\n const accountInfo = await firstValueFrom(\n this.accountInfoService.read({\n portalContext: {\n crdGatewayApiUrl: ctx.portalContext.crdGatewayApiUrl,\n },\n token: ctx.token,\n accountId: entityId,\n }),\n );\n\n // update the current already calculated by Luigi context for a node\n this.addFieldsToContextFromAccountInfo(ctx, entityId, accountInfo);\n\n // update the node context of sa node to contain the entity for future context calculations\n this.addFieldsToContextFromAccountInfo(\n entityNode.context,\n entityId,\n accountInfo,\n );\n\n // we were able to ready the account info so on this kcpPath we can query for the organization ready state\n this.organizationReadyService.checkOrganizationReady();\n } catch (e) {\n if (!this.errorHandlerService.isUnauthorizedAccess(e)) {\n console.error('Failed to read account info', e);\n }\n }\n }\n\n private addFieldsToContext(\n ctx: PortalNodeContext,\n entityId: string | undefined,\n kcpPath: string,\n accountPath: string | undefined,\n kind: string | undefined,\n ) {\n ctx.kcpPath = kcpPath;\n ctx.entityName = entityId;\n ctx.entityKind = kind;\n ctx.accountPath = accountPath;\n }\n\n private addFieldsToContextFromAccountInfo(\n ctx: PortalNodeContext,\n entityId: string,\n accountInfo: AccountInfo,\n ) {\n const accountOriginClusterId = accountInfo.spec.account.originClusterId;\n const organizationOriginClusterId =\n accountInfo.spec.organization.originClusterId;\n const organization = accountInfo.spec.organization.name;\n\n ctx.organizationId = `${organizationOriginClusterId}/${organization}`;\n ctx.entityId = `${accountOriginClusterId}/${entityId}`;\n ctx.kcpCA = btoa(accountInfo.spec.clusterInfo.ca);\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport {\n ClientEnvironment,\n EnvConfigService,\n RoutingConfigService,\n} from '@openmfp/portal-ui-lib';\n\n@Injectable()\nexport class CustomRoutingConfigServiceImpl implements RoutingConfigService {\n private envConfigService = inject(EnvConfigService);\n private envConfig: ClientEnvironment | null = null;\n\n constructor() {\n this.getEnvConfig();\n }\n\n async getEnvConfig(): Promise<void> {\n this.envConfig = await this.envConfigService.getEnvConfig();\n }\n\n getRoutingConfig(): any {\n return {\n preserveQueryParams: true,\n pageNotFoundHandler: () => {\n if (!this.envConfig?.baseDomain) {\n return this.redirectTo('error/404');\n }\n\n if (window.location.hostname === this.envConfig.baseDomain) {\n return this.redirectTo('welcome');\n }\n\n return this.redirectTo('error/404');\n },\n };\n }\n\n public redirectTo(path: string, keepURL = true): any {\n return {\n redirectTo: path,\n keepURL,\n };\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport {\n AuthService,\n UserProfile,\n UserProfileConfigService,\n} from '@openmfp/portal-ui-lib';\n\n@Injectable({ providedIn: 'root' })\nexport class UserProfileConfigServiceImpl implements UserProfileConfigService {\n private authService = inject(AuthService);\n async getProfile(): Promise<UserProfile> {\n const { email } = this.authService.getUserInfo();\n\n return {\n items: [\n {\n label: 'PROFILE_PROFILE',\n icon: 'customer',\n link: `/users/${email}/overview`,\n },\n ],\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"platform-mesh-portal-ui-lib-portal-options.mjs","sources":["../../projects/lib/portal-options/services/custom-global-nodes.service.ts","../../projects/lib/portal-options/services/header-bar-renderers/breadcrumb-renderer.ts","../../projects/lib/portal-options/services/header-bar-renderers/namespace-selection-renderer.service.ts","../../projects/lib/portal-options/services/header-bar-config.service.ts","../../projects/lib/portal-options/services/luigi-extended-global-context-config.service.ts","../../projects/lib/portal-options/services/navigation-redirect-strategy.service.ts","../../projects/lib/portal-options/utils/account-hierarchy.util.ts","../../projects/lib/portal-options/services/crd-gateway-kcp-patch-resolver.service.ts","../../projects/lib/portal-options/services/node-change-hook-config.service.ts","../../projects/lib/portal-options/services/node-context-processing.service.ts","../../projects/lib/portal-options/services/router-config.service.ts","../../projects/lib/portal-options/services/user-profile-config.service.ts","../../projects/lib/portal-options/platform-mesh-portal-ui-lib-portal-options.ts"],"sourcesContent":["import { PortalNodeContext } from '../models/luigi-context';\nimport { PortalLuigiNode } from '../models/luigi-node';\nimport { Injectable, inject } from '@angular/core';\nimport {\n CustomGlobalNodesService,\n EntityType,\n I18nService,\n NodeContext,\n} from '@openmfp/portal-ui-lib';\n\n@Injectable({ providedIn: 'root' })\nexport class CustomGlobalNodesServiceImpl implements CustomGlobalNodesService {\n private i18nService = inject(I18nService);\n\n async getCustomGlobalNodes(): Promise<PortalLuigiNode[]> {\n return [\n {\n pathSegment: 'error',\n order: 1000,\n hideFromNav: true,\n showBreadcrumbs: false,\n context: {} as PortalNodeContext,\n children: [\n {\n pathSegment: ':id',\n entityType: EntityType.ENTITY_ERROR,\n hideFromNav: true,\n hideSideNav: true,\n viewUrl: '/assets/platform-mesh-portal-ui-wc.js#error-component',\n context: {\n id: ':id',\n translationTable: this.i18nService.translationTable,\n } as any as NodeContext,\n webcomponent: {\n selfRegistered: true,\n },\n },\n ],\n },\n {\n pathSegment: 'users',\n showBreadcrumbs: false,\n hideSideNav: true,\n hideFromNav: true,\n context: {} as PortalNodeContext,\n entityType: 'global',\n children: [\n {\n pathSegment: ':userId',\n hideSideNav: true,\n hideFromNav: true,\n defineEntity: {\n id: 'user',\n },\n context: {\n userId: ':userId',\n } as PortalNodeContext,\n children: [\n {\n pathSegment: 'overview',\n context: {} as PortalNodeContext,\n hideSideNav: true,\n hideFromNav: true,\n defineEntity: {\n id: 'overview',\n },\n compound: {\n children: [],\n },\n },\n ],\n },\n ],\n },\n ];\n }\n}\n","import '@ui5/webcomponents/dist/Breadcrumbs.js';\nimport '@ui5/webcomponents/dist/BreadcrumbsItem.js';\n\nexport const breadcrumbRenderer = (\n containerElement: HTMLElement,\n nodeItems: any[],\n clickHandler: (item: any) => void,\n): HTMLElement => {\n containerElement.style.width = '100%';\n\n const ui5breadcrumbs = document.createElement('ui5-breadcrumbs');\n ui5breadcrumbs.setAttribute('separators', 'Slash');\n containerElement.appendChild(ui5breadcrumbs);\n\n nodeItems.forEach((item) => {\n if (item.node?.hideFromBreadcrumb) {\n return;\n }\n\n const itemCmp = document.createElement('ui5-breadcrumbs-item');\n itemCmp.textContent = item.label ?? '';\n (itemCmp as any)._item = item;\n ui5breadcrumbs.appendChild(itemCmp);\n });\n\n ui5breadcrumbs.addEventListener('item-click', (event: any) => {\n if (\n !(\n event.detail.ctrlKey ||\n event.detail.altKey ||\n event.detail.shiftKey ||\n event.detail.metaKey\n )\n ) {\n event.preventDefault();\n clickHandler(event.detail.item._item);\n }\n });\n\n return ui5breadcrumbs;\n};\n","import { DestroyRef, Injectable, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n AuthService,\n LuigiCoreService,\n LuigiNode,\n PortalConfig,\n} from '@openmfp/portal-ui-lib';\nimport {\n ALL_NAMESPACE,\n FieldDefinition,\n Resource,\n ResourceDefinition,\n ResourceListResult,\n} from '@platform-mesh/portal-ui-lib/models';\nimport {\n ResourceNodeContext,\n ResourceService,\n} from '@platform-mesh/portal-ui-lib/services';\nimport {\n generateGraphQLFields,\n isNamespacedResource,\n mergeListWithSubscriptionResult,\n} from '@platform-mesh/portal-ui-lib/utils';\nimport '@ui5/webcomponents/dist/ComboBox.js';\nimport { Observable, Subject, defer, of } from 'rxjs';\nimport {\n catchError,\n retry,\n scan,\n shareReplay,\n startWith,\n switchMap,\n takeUntil,\n tap,\n} from 'rxjs/operators';\n\nconst defaultColumns: FieldDefinition[] = [\n {\n label: 'Name',\n property: 'metadata.name',\n },\n];\n\n@Injectable({ providedIn: 'root' })\nexport class NamespaceSelectionRendererService {\n private namespaceResourcesCache?: {\n key: string;\n value$: Observable<Resource[]>;\n stop$: Subject<void>;\n };\n\n private resourceService = inject(ResourceService);\n private authService = inject(AuthService);\n private luigiCoreService = inject(LuigiCoreService);\n private destroyRef = inject(DestroyRef);\n\n public create(portalConfig: PortalConfig) {\n return (\n containerElement: HTMLElement,\n nodeItems: any[],\n _clickHandler: any,\n ) => {\n containerElement.style.paddingBottom = '0.5rem';\n\n const lastNode = nodeItems.at(-1)?.node as LuigiNode | undefined;\n const namespace = this.luigiCoreService\n .routing()\n .getSearchParams().namespace;\n const kcpPath = lastNode?.context?.kcpPath;\n\n if (lastNode?.context && !isNamespacedResource(lastNode.context)) {\n return containerElement;\n }\n\n const ui5combobox = this.createCombobox(containerElement);\n\n this.addComboboxItems(portalConfig, ui5combobox, namespace, kcpPath);\n\n ui5combobox.addEventListener('change', (event: any) => {\n const value = (event?.target as any)?.value.trim() ?? '';\n this.changeNamespace(value);\n });\n\n return ui5combobox as HTMLElement;\n };\n }\n\n private createCombobox(containerElement: HTMLElement) {\n const ui5combobox = document.createElement('ui5-combobox');\n ui5combobox.setAttribute('placeholder', 'Namespaces');\n ui5combobox.setAttribute('data-testid', 'namespace-selection-combobox');\n containerElement.appendChild(ui5combobox);\n\n return ui5combobox;\n }\n\n private addComboboxItems(\n portalConfig: PortalConfig,\n ui5combobox: HTMLElement,\n namespace: string | null,\n kcpPath?: string,\n ) {\n this.getNamespaceResourcesCached(portalConfig, kcpPath).subscribe(\n (resources) => {\n this.syncComboboxItems(ui5combobox, resources);\n this.setSelectedValue(ui5combobox, resources, namespace);\n },\n );\n }\n\n private getNamespaceResourcesCached(\n portalConfig: PortalConfig,\n kcpPath?: string,\n ): Observable<Resource[]> {\n const cacheKey = this.getNamespaceResourcesCacheKey(kcpPath);\n if (this.namespaceResourcesCache?.key === cacheKey) {\n return this.namespaceResourcesCache.value$;\n }\n\n if (this.namespaceResourcesCache) {\n this.namespaceResourcesCache.stop$.next();\n this.namespaceResourcesCache.stop$.complete();\n this.namespaceResourcesCache = undefined;\n }\n\n const stop$ = new Subject<void>();\n const value$ = this.getNamespaceResources(\n portalConfig,\n kcpPath,\n stop$,\n ).pipe(shareReplay(1), takeUntilDestroyed(this.destroyRef));\n this.namespaceResourcesCache = {\n key: cacheKey,\n value$,\n stop$,\n };\n\n return value$;\n }\n\n private getNamespaceResourcesCacheKey(kcpPath?: string): string {\n return kcpPath ?? '';\n }\n\n private syncComboboxItems(ui5combobox: HTMLElement, resources: Resource[]) {\n ui5combobox.replaceChildren();\n\n resources.forEach((resource) => {\n const name = resource.metadata?.name;\n if (!name) {\n return;\n }\n const resourceOption = document.createElement('ui5-cb-item');\n resourceOption.setAttribute('text', name);\n resourceOption.setAttribute(\n 'data-testid',\n `namespace-selection-combobox-item-${name}`,\n );\n ui5combobox.appendChild(resourceOption);\n });\n\n const allOption = document.createElement('ui5-cb-item');\n allOption.setAttribute('text', ALL_NAMESPACE);\n allOption.setAttribute(\n 'data-testid',\n 'namespace-selection-combobox-item-all',\n );\n ui5combobox.appendChild(allOption);\n }\n\n private setSelectedValue(\n ui5combobox: HTMLElement,\n resources: Resource[],\n namespace: string | null,\n ) {\n const currentNamespace = this.luigiCoreService\n .routing()\n .getSearchParams().namespace;\n\n if (currentNamespace) {\n ui5combobox.setAttribute('value', currentNamespace);\n return;\n }\n\n if (\n namespace &&\n resources.find((resource) => resource.metadata?.name === namespace)\n ) {\n ui5combobox.setAttribute('value', namespace);\n } else {\n ui5combobox.setAttribute('value', ALL_NAMESPACE);\n this.changeNamespace(ALL_NAMESPACE);\n }\n }\n\n private getNamespaceResources(\n portalConfig: PortalConfig,\n kcpPath: string | undefined,\n stop$: Subject<void>,\n ): Observable<Resource[]> {\n const operation = 'v1_namespaces';\n const fields = generateGraphQLFields(defaultColumns);\n const context = {\n portalContext: {\n crdGatewayApiUrl: portalConfig.portalContext['crdGatewayApiUrl'],\n },\n resourceDefinition: {\n version: 'v1',\n entityCollection: 'Namespaces',\n entity: 'Namespace',\n scope: 'Cluster',\n } as ResourceDefinition,\n kcpPath,\n token: this.authService.getToken(),\n } as ResourceNodeContext;\n\n return defer(() =>\n this.resourceService.list(operation, fields, context),\n ).pipe(\n retry(3),\n takeUntil(stop$),\n switchMap((result: ResourceListResult) =>\n this.resourceService\n .resourceChangeSubscription(\n operation,\n fields,\n context,\n result.resourceVersion,\n false,\n )\n .pipe(\n startWith(undefined),\n scan(\n (resources, subscriptionResult) =>\n mergeListWithSubscriptionResult(resources, subscriptionResult, {\n getItemKey: (resource) => resource.metadata?.name,\n mapSubscriptionObjectToItem: (object) => object,\n }),\n result.items,\n ),\n tap((result) => {\n const namespaces = result.map((e) => e.metadata?.name);\n this.luigiCoreService.setInGlobalContext({ namespaces });\n }),\n takeUntil(stop$),\n ),\n ),\n catchError((error) => {\n console.error(`Failed to read entities from ${operation}`, error);\n return of([]);\n }),\n );\n }\n\n private changeNamespace(value: string): void {\n if (!value) {\n return;\n }\n\n const oldValue = this.luigiCoreService\n .routing()\n .getSearchParams().namespace;\n\n if (oldValue === value) {\n return;\n }\n\n this.luigiCoreService.routing().addSearchParams({ namespace: value });\n }\n}\n","import { breadcrumbRenderer } from './header-bar-renderers/breadcrumb-renderer';\nimport { NamespaceSelectionRendererService } from './header-bar-renderers/namespace-selection-renderer.service';\nimport { Injectable, inject } from '@angular/core';\nimport {\n ConfigService,\n HeaderBarConfig,\n HeaderBarConfigService,\n} from '@openmfp/portal-ui-lib';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class HeaderBarConfigServiceImpl implements HeaderBarConfigService {\n private configService = inject(ConfigService);\n private namespaceSelectionRendererService = inject(\n NamespaceSelectionRendererService,\n );\n\n public async getConfig(): Promise<HeaderBarConfig> {\n const portalConfig = await this.configService.getPortalConfig();\n\n return {\n pendingItemLabel: '...',\n omitRoot: false,\n clearBeforeRender: true,\n autoHide: true,\n leftRenderers: [breadcrumbRenderer],\n rightRenderers: [\n this.namespaceSelectionRendererService.create(portalConfig),\n ],\n };\n }\n}\n","import { kcpRootOrgsPath } from '../models/constants';\nimport { Injectable, inject } from '@angular/core';\nimport {\n EnvConfigService,\n LuigiExtendedGlobalContextConfigService,\n} from '@openmfp/portal-ui-lib';\n\n@Injectable({ providedIn: 'root' })\nexport class LuigiExtendedGlobalContextConfigServiceImpl implements LuigiExtendedGlobalContextConfigService {\n private envConfigService = inject(EnvConfigService);\n\n async createLuigiExtendedGlobalContext(): Promise<Record<string, any>> {\n const idpName = (await this.envConfigService.getEnvConfig()).idpName;\n\n if (idpName === 'welcome') {\n return {};\n }\n\n return {\n organization: idpName,\n kcpPath: `${kcpRootOrgsPath}:${idpName}`,\n entityName: idpName,\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n LocalStorageKeys,\n NavigationRedirectStrategy,\n} from '@openmfp/portal-ui-lib';\n\n@Injectable({ providedIn: 'root' })\nexport class NavigationRedirectStrategyServiceImpl implements NavigationRedirectStrategy {\n getRedirectUrl(): string {\n return localStorage.getItem(LocalStorageKeys.LAST_NAVIGATION_URL) || '';\n }\n\n saveRedirectUrl(url: string): void {\n if (url.startsWith('/error')) {\n return;\n }\n\n localStorage.setItem(LocalStorageKeys.LAST_NAVIGATION_URL, url);\n }\n\n clearRedirectUrl(): void {\n localStorage.removeItem(LocalStorageKeys.LAST_NAVIGATION_URL);\n }\n}\n","import { PortalLuigiNode } from '../models/luigi-node';\n\nexport function collectAccountNamesFromNodeHierarchy(\n node: PortalLuigiNode | undefined,\n): string[] {\n const accountNames: string[] = [];\n let currentNode: PortalLuigiNode | undefined = node;\n\n while (currentNode) {\n const entityName = currentNode.context?.entityName;\n const entityKind = currentNode.context?.entityKind;\n if (entityName && entityKind?.toLowerCase() === 'account') {\n accountNames.unshift(entityName);\n }\n currentNode = currentNode.parent;\n }\n\n return accountNames;\n}\n\nexport function getInitialAccountId(\n entityId?: string,\n kind?: string,\n): string | undefined {\n return kind?.toLowerCase() === 'account' && entityId ? entityId : undefined;\n}\n\nexport function calculateAccountHierarchy(\n entityNode: PortalLuigiNode,\n entityId?: string,\n kind?: string,\n): string[] {\n const initialAccountId = getInitialAccountId(entityId, kind);\n // when we are on a dynamic node and the id any kind has changed we need to reset the context data\n if (entityNode.defineEntity?.contextKey && initialAccountId) {\n entityNode.context.entityName = undefined;\n entityNode.context.entityKind = undefined;\n }\n\n const accountNames = collectAccountNamesFromNodeHierarchy(entityNode);\n\n if (initialAccountId) {\n accountNames.push(initialAccountId);\n }\n return accountNames;\n}\n","import { kcpRootOrgsPath } from '../models/constants';\nimport { PortalLuigiNode } from '../models/luigi-node';\nimport {\n calculateAccountHierarchy,\n getInitialAccountId,\n} from '../utils/account-hierarchy.util';\nimport { Injectable, inject } from '@angular/core';\nimport { EnvConfigService } from '@openmfp/portal-ui-lib';\nimport { GatewayService } from '@platform-mesh/portal-ui-lib/services';\n\nexport interface KcpData {\n kcpPath: string;\n accountPath: string | undefined;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class CrdGatewayKcpPatchResolver {\n private gatewayService = inject(GatewayService);\n private envConfigService = inject(EnvConfigService);\n\n public async resolveCrdGatewayKcpPath(\n nextNode: PortalLuigiNode,\n entityId?: string,\n kind?: string,\n ): Promise<KcpData> {\n if (nextNode.context?.kcpPath && !getInitialAccountId(entityId, kind)) {\n this.gatewayService.updateCrdGatewayUrlWithEntityPath(\n nextNode.context.kcpPath,\n );\n return {\n kcpPath: nextNode.context.kcpPath,\n accountPath: nextNode.context.accountPath,\n };\n }\n\n const accountNames = calculateAccountHierarchy(nextNode, entityId, kind);\n\n const accountPath =\n accountNames.length > 0 ? `${accountNames.join(':')}` : '';\n\n const org = (await this.envConfigService.getEnvConfig()).idpName;\n const kcpPath = `${kcpRootOrgsPath}:${org}${accountPath ? ':' + accountPath : ''}`;\n this.gatewayService.updateCrdGatewayUrlWithEntityPath(kcpPath);\n\n if (nextNode.context) {\n nextNode.context.kcpPath = kcpPath;\n nextNode.context.accountPath = accountPath;\n }\n return { kcpPath, accountPath };\n }\n}\n","import { PortalLuigiNode } from '../models/luigi-node';\nimport { CrdGatewayKcpPatchResolver } from './crd-gateway-kcp-patch-resolver.service';\nimport { Injectable, inject } from '@angular/core';\nimport {\n LuigiCoreService,\n NodeChangeHookConfigService,\n NodeContext,\n} from '@openmfp/portal-ui-lib';\n\n@Injectable({ providedIn: 'root' })\nexport class NodeChangeHookConfigServiceImpl implements NodeChangeHookConfigService {\n private luigiCoreService = inject(LuigiCoreService);\n private crdGatewayKcpPatchResolver = inject(CrdGatewayKcpPatchResolver);\n\n async nodeChangeHook(\n prevNode: PortalLuigiNode,\n nextNode: PortalLuigiNode,\n currentContext: NodeContext,\n ) {\n if (\n nextNode.initialRoute &&\n nextNode.virtualTree &&\n !(nextNode as any)._virtualTree\n ) {\n this.luigiCoreService.navigation().navigate(nextNode.initialRoute);\n }\n\n await this.crdGatewayKcpPatchResolver.resolveCrdGatewayKcpPath(nextNode);\n }\n}\n","import { PortalNodeContext } from '../models/luigi-context';\nimport { PortalLuigiNode } from '../models/luigi-node';\nimport { CrdGatewayKcpPatchResolver } from './crd-gateway-kcp-patch-resolver.service';\nimport { Injectable, inject } from '@angular/core';\nimport { NodeContextProcessingService } from '@openmfp/portal-ui-lib';\nimport { AccountInfo } from '@platform-mesh/portal-ui-lib/models';\nimport {\n AccountInfoService,\n ErrorHandlerService,\n OrganizationReadyService,\n} from '@platform-mesh/portal-ui-lib/services';\nimport { firstValueFrom } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NodeContextProcessingServiceImpl implements NodeContextProcessingService {\n private crdGatewayKcpPatchResolver = inject(CrdGatewayKcpPatchResolver);\n private accountInfoService = inject(AccountInfoService);\n private organizationReadyService = inject(OrganizationReadyService);\n private errorHandlerService = inject(ErrorHandlerService);\n\n public async processNodeContext(\n dynamicEntityId: string,\n entityNode: PortalLuigiNode,\n ctx: PortalNodeContext,\n ) {\n const kind = entityNode.defineEntity?.type;\n const entityId =\n dynamicEntityId || entityNode.context.resourceDefinition?.name;\n\n if (!entityId) {\n return;\n }\n\n const { kcpPath, accountPath } =\n await this.crdGatewayKcpPatchResolver.resolveCrdGatewayKcpPath(\n entityNode,\n entityId,\n kind,\n );\n\n // update the current already calculated by Luigi context for a node\n this.addFieldsToContext(ctx, entityId, kcpPath, accountPath, kind);\n\n // update the node context of sa node to contain the entity for future context calculations\n this.addFieldsToContext(\n entityNode.context,\n entityId,\n kcpPath,\n accountPath,\n kind,\n );\n\n try {\n const accountInfo = await firstValueFrom(\n this.accountInfoService.read({\n portalContext: {\n crdGatewayApiUrl: ctx.portalContext.crdGatewayApiUrl,\n },\n token: ctx.token,\n accountId: entityId,\n }),\n );\n\n // update the current already calculated by Luigi context for a node\n this.addFieldsToContextFromAccountInfo(ctx, entityId, accountInfo);\n\n // update the node context of sa node to contain the entity for future context calculations\n this.addFieldsToContextFromAccountInfo(\n entityNode.context,\n entityId,\n accountInfo,\n );\n\n // we were able to ready the account info so on this kcpPath we can query for the organization ready state\n this.organizationReadyService.checkOrganizationReady();\n } catch (e) {\n if (!this.errorHandlerService.isUnauthorizedAccess(e)) {\n console.error('Failed to read account info', e);\n }\n }\n }\n\n private addFieldsToContext(\n ctx: PortalNodeContext,\n entityId: string | undefined,\n kcpPath: string,\n accountPath: string | undefined,\n kind: string | undefined,\n ) {\n ctx.kcpPath = kcpPath;\n ctx.entityName = entityId;\n ctx.entityKind = kind;\n ctx.accountPath = accountPath;\n }\n\n private addFieldsToContextFromAccountInfo(\n ctx: PortalNodeContext,\n entityId: string,\n accountInfo: AccountInfo,\n ) {\n const accountOriginClusterId = accountInfo.spec.account.originClusterId;\n const organizationOriginClusterId =\n accountInfo.spec.organization.originClusterId;\n const organization = accountInfo.spec.organization.name;\n\n ctx.organizationId = `${organizationOriginClusterId}/${organization}`;\n ctx.entityId = `${accountOriginClusterId}/${entityId}`;\n ctx.kcpCA = btoa(accountInfo.spec.clusterInfo.ca);\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport {\n ClientEnvironment,\n EnvConfigService,\n RoutingConfigService,\n} from '@openmfp/portal-ui-lib';\n\n@Injectable()\nexport class CustomRoutingConfigServiceImpl implements RoutingConfigService {\n private envConfigService = inject(EnvConfigService);\n private envConfig: ClientEnvironment | null = null;\n\n constructor() {\n this.getEnvConfig();\n }\n\n async getEnvConfig(): Promise<void> {\n this.envConfig = await this.envConfigService.getEnvConfig();\n }\n\n getRoutingConfig(): any {\n return {\n preserveQueryParams: true,\n pageNotFoundHandler: () => {\n if (!this.envConfig?.baseDomain) {\n return this.redirectTo('error/404');\n }\n\n if (window.location.hostname === this.envConfig.baseDomain) {\n return this.redirectTo('welcome');\n }\n\n return this.redirectTo('error/404');\n },\n };\n }\n\n public redirectTo(path: string, keepURL = true): any {\n return {\n redirectTo: path,\n keepURL,\n };\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport {\n AuthService,\n UserProfile,\n UserProfileConfigService,\n} from '@openmfp/portal-ui-lib';\n\n@Injectable({ providedIn: 'root' })\nexport class UserProfileConfigServiceImpl implements UserProfileConfigService {\n private authService = inject(AuthService);\n async getProfile(): Promise<UserProfile> {\n const { email } = this.authService.getUserInfo();\n\n return {\n items: [\n {\n label: 'PROFILE_PROFILE',\n icon: 'customer',\n link: `/users/${email}/overview`,\n },\n ],\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED