@acorex-platform/module-integration-management-client 0.0.38 → 0.0.48
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.
- package/fesm2022/acorex-platform-module-integration-management-client-contracts-entities-integration-application.mjs +22 -0
- package/fesm2022/acorex-platform-module-integration-management-client-contracts-entities-integration-application.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-integration-management-client-contracts-entities-integration-connection.mjs +22 -0
- package/fesm2022/acorex-platform-module-integration-management-client-contracts-entities-integration-connection.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-integration-management-client-contracts-entities-integration-oauth-state.mjs +22 -0
- package/fesm2022/acorex-platform-module-integration-management-client-contracts-entities-integration-oauth-state.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-integration-management-client-contracts-entities-integration-remote-record.mjs +269 -0
- package/fesm2022/acorex-platform-module-integration-management-client-contracts-entities-integration-remote-record.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-integration-management-client-contracts-entity-catalog-acorex-platform-module-integration-management-client-contracts-entity-catalog-BT3-xrGZ.mjs → acorex-platform-module-integration-management-client-contracts-entity-catalog-acorex-platform-module-integration-management-client-contracts-entity-catalog-k3HR1biJ.mjs} +12 -4
- package/fesm2022/acorex-platform-module-integration-management-client-contracts-entity-catalog-acorex-platform-module-integration-management-client-contracts-entity-catalog-k3HR1biJ.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-integration-management-client-contracts-entity-catalog-integration-application.entity-BGZKCUt8.mjs → acorex-platform-module-integration-management-client-contracts-entity-catalog-integration-application.entity-DhOHTht5.mjs} +17 -2
- package/fesm2022/acorex-platform-module-integration-management-client-contracts-entity-catalog-integration-application.entity-DhOHTht5.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-integration-management-client-contracts-entity-catalog-integration-connection.entity-CYQq6jv2.mjs → acorex-platform-module-integration-management-client-contracts-entity-catalog-integration-connection.entity-BAM1TCdS.mjs} +17 -2
- package/fesm2022/acorex-platform-module-integration-management-client-contracts-entity-catalog-integration-connection.entity-BAM1TCdS.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-integration-management-client-contracts-entity-catalog-integration-oauth-state.entity-BPvTE55S.mjs → acorex-platform-module-integration-management-client-contracts-entity-catalog-integration-oauth-state.entity-CHsVwNda.mjs} +17 -2
- package/fesm2022/acorex-platform-module-integration-management-client-contracts-entity-catalog-integration-oauth-state.entity-CHsVwNda.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-integration-management-client-contracts-entity-catalog-integration-remote-record.entity-D9oTVEHF.mjs +214 -0
- package/fesm2022/acorex-platform-module-integration-management-client-contracts-entity-catalog-integration-remote-record.entity-D9oTVEHF.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-integration-management-client-contracts-entity-catalog.mjs +1 -1
- package/fesm2022/acorex-platform-module-integration-management-client-contracts.mjs +28 -1
- package/fesm2022/acorex-platform-module-integration-management-client-contracts.mjs.map +1 -1
- package/fesm2022/{acorex-platform-module-integration-management-client-integration-ref-page.component-D9hdpnQq.mjs → acorex-platform-module-integration-management-client-integration-ref-page.component-C131H4e1.mjs} +6 -3
- package/fesm2022/acorex-platform-module-integration-management-client-integration-ref-page.component-C131H4e1.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-integration-management-client-integration-ref-widget-column.component-CPLhmHOe.mjs → acorex-platform-module-integration-management-client-integration-ref-widget-column.component-ClPcvcUW.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-integration-management-client-integration-ref-widget-column.component-CPLhmHOe.mjs.map → acorex-platform-module-integration-management-client-integration-ref-widget-column.component-ClPcvcUW.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-integration-management-client-local-entities.mjs +1 -0
- package/fesm2022/acorex-platform-module-integration-management-client-local-entities.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-integration-management-client.mjs +203 -107
- package/fesm2022/acorex-platform-module-integration-management-client.mjs.map +1 -1
- package/package.json +5 -1
- package/types/acorex-platform-module-integration-management-client-contracts-entities-integration-remote-record.d.ts +5 -0
- package/types/acorex-platform-module-integration-management-client-contracts.d.ts +62 -3
- package/types/acorex-platform-module-integration-management-client.d.ts +9 -5
- package/fesm2022/acorex-platform-module-integration-management-client-contracts-entity-catalog-acorex-platform-module-integration-management-client-contracts-entity-catalog-BT3-xrGZ.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-integration-management-client-contracts-entity-catalog-integration-application.entity-BGZKCUt8.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-integration-management-client-contracts-entity-catalog-integration-connection.entity-CYQq6jv2.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-integration-management-client-contracts-entity-catalog-integration-oauth-state.entity-BPvTE55S.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-integration-management-client-integration-ref-page.component-D9hdpnQq.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-integration-management-client-contracts.mjs","sources":["../../../../libs/modules/integration-management/contracts/src/root-config.ts","../../../../libs/modules/integration-management/contracts/src/permission.keys.ts","../../../../libs/modules/integration-management/contracts/src/commands.keys.ts","../../../../libs/modules/integration-management/contracts/src/queries.keys.ts","../../../../libs/modules/integration-management/contracts/src/menu.keys.ts","../../../../libs/modules/integration-management/contracts/src/route.helpers.ts","../../../../libs/modules/integration-management/contracts/src/entities/integration-application/integration-application.types.ts","../../../../libs/modules/integration-management/contracts/src/entities/integration-connection/integration-connection.types.ts","../../../../libs/modules/integration-management/contracts/src/entities/integration-oauth-state/integration-oauth-state.types.ts","../../../../libs/modules/integration-management/contracts/src/acorex-platform-module-integration-management-client-contracts.ts"],"sourcesContent":["//#region ---- Module Config ----\n\nconst config = {\n i18n: 'integration-management',\n module: 'IntegrationManagement',\n route: 'integration-management',\n};\n\nexport const RootConfig = {\n config,\n module: {\n name: config.module,\n route: config.route,\n title: `@${config.i18n}:module.title`,\n icon: 'fa-light fa-plug',\n },\n entities: {\n integrationConnection: {\n name: 'IntegrationConnection',\n source: `${config.module}.IntegrationConnection`,\n title: `@${config.i18n}:connections.entities.connection.title`,\n titlePlural: `@${config.i18n}:connections.entities.connection.plural`,\n icon: 'fa-light fa-link',\n },\n integrationOAuthState: {\n name: 'IntegrationOAuthState',\n source: `${config.module}.IntegrationOAuthState`,\n title: `@${config.i18n}:oauth-states.entities.oauth-state.title`,\n titlePlural: `@${config.i18n}:oauth-states.entities.oauth-state.plural`,\n icon: 'fa-light fa-key',\n },\n integrationApplication: {\n name: 'IntegrationApplication',\n source: `${config.module}.IntegrationApplication`,\n title: `@${config.i18n}:applications.entities.application.title`,\n titlePlural: `@${config.i18n}:applications.entities.application.plural`,\n icon: 'fa-light fa-shield-keyhole',\n },\n },\n queries: {\n dashboard: {\n integrationsDonut: `${config.module}:Dashboard:IntegrationsDonut`,\n },\n },\n};\n\n//#endregion\n","/**\n * Administration capabilities used by this module.\n * Domain capability keys for this module. Root groups live in `AXPCommonPermissionGroupKeys` (common contracts).\n */\nexport const AXPAdministrationPermissionKeys = {\n Access: 'Administration:Permission:Access',\n MaintainUsersAndRoles: 'Administration:Permission:MaintainUsersAndRoles',\n ManageSessions: 'Administration:Permission:ManageSessions',\n MaintainPolicies: 'Administration:Permission:MaintainPolicies',\n ViewIntegrations: 'Administration:Permission:ViewIntegrations',\n MaintainConnections: 'Administration:Permission:MaintainConnections',\n ManageIntegrationActions: 'Administration:Permission:ManageIntegrationActions',\n MaintainWorkflows: 'Administration:Permission:MaintainWorkflows',\n ManageWorkflowActions: 'Administration:Permission:ManageWorkflowActions',\n ViewRules: 'Administration:Permission:ViewRules',\n MaintainRules: 'Administration:Permission:MaintainRules',\n ManageRuleActions: 'Administration:Permission:ManageRuleActions',\n MaintainAi: 'Administration:Permission:MaintainAi',\n UseAiAssist: 'Administration:Permission:UseAiAssist',\n MaintainDashboards: 'Administration:Permission:MaintainDashboards',\n ViewJobs: 'Administration:Permission:ViewJobs',\n ManageJobActions: 'Administration:Permission:ManageJobActions',\n ViewObservability: 'Administration:Permission:ViewObservability',\n MaintainObservability: 'Administration:Permission:MaintainObservability',\n} as const;\n\n/**\n * @deprecated Prefer {@link AXPAdministrationPermissionKeys}.\n * Legacy nested shape kept so existing imports compile during migration.\n */\nexport const AXMIntegrationManagementPermissionKeys = {\n Provider: {\n View: AXPAdministrationPermissionKeys.ViewIntegrations,\n },\n Connection: {\n View: AXPAdministrationPermissionKeys.ViewIntegrations,\n Management: AXPAdministrationPermissionKeys.MaintainConnections,\n },\n TenantConnection: {\n Management: AXPAdministrationPermissionKeys.MaintainConnections,\n },\n Application: {\n Management: AXPAdministrationPermissionKeys.MaintainConnections,\n },\n ConnectionHealth: {\n View: AXPAdministrationPermissionKeys.ViewIntegrations,\n },\n} as const;\n","//#region ---- Command Keys ----\n\nexport const AXMIntegrationManagementCommandKeys = {\n ConnectionConnectWithCredentials: 'IntegrationManagement.Connection:ConnectWithCredentials',\n ConnectionRefreshAuthorization: 'IntegrationManagement.Connection:RefreshAuthorization',\n ConnectionValidate: 'IntegrationManagement.Connection:Validate',\n ConnectionUpdate: 'IntegrationManagement.Connection:Update',\n ConnectionDisconnect: 'IntegrationManagement.Connection:Disconnect',\n ConnectionRevoke: 'IntegrationManagement.Connection:Revoke',\n ConnectionDelete: 'IntegrationManagement.Connection:Delete',\n ApplicationUpsert: 'IntegrationManagement.Application:Upsert',\n} as const;\n\n//#endregion\n","//#region ---- Query Keys ----\n\nexport const AXMIntegrationManagementQueryKeys = {\n DomainList: 'IntegrationManagement.Domain:List',\n ProviderList: 'IntegrationManagement.Provider:List',\n ProviderGet: 'IntegrationManagement.Provider:Get',\n ConnectionListMine: 'IntegrationManagement.Connection:ListMine',\n ConnectionGetStatus: 'IntegrationManagement.Connection:GetStatus',\n ConnectionGetAuthMethods: 'IntegrationManagement.Connection:GetAuthMethods',\n} as const;\n\n//#endregion\n","//#region ---- Menu Keys ----\n\nexport const AXMIntegrationManagementMenuKeys = {\n Integrations: 'IntegrationManagement:Menu:Integrations',\n} as const;\n\n//#endregion\n","//#region ----- Route helpers -----\n\n/** Tenant integrations admin page: `/{app}/admin/integrations`. */\nexport function buildTenantIntegrationsPagePath(appName: string): string {\n return `/${appName}/admin/integrations`;\n}\n\n/**\n * App-agnostic OAuth callback path.\n * Prefer this for providers with a fixed registered redirect URI (e.g. Simpro).\n */\nexport function buildIntegrationOAuthCallbackPath(providerId: string): string {\n return `/integrations/oauth/callback/${providerId}`;\n}\n\nexport function buildIntegrationOAuthCallbackUrl(origin: string, providerId: string): string {\n return `${origin.replace(/\\/+$/, '')}${buildIntegrationOAuthCallbackPath(providerId)}`;\n}\n\n/** Resolve the current app route slug — session first, then optional route/fallback. */\nexport function resolveAppRouteName(\n applicationName?: string | null,\n ...fallbacks: Array<string | null | undefined>\n): string | null {\n const candidates = [applicationName, ...fallbacks];\n for (const candidate of candidates) {\n const trimmed = String(candidate ?? '').trim();\n if (trimmed) {\n return trimmed;\n }\n }\n return null;\n}\n\n//#endregion\n","import type { AXPEntityModel } from '@acorex-platform/framework-shared/entity';\n\n//#region ---- Integration application entity model ----\n\n/**\n * Tenant/app isolation lives on {@link AXPEntityModel.scopeInfo}\n * (`tenantId`, `applicationId`).\n */\nexport interface AXMIntegrationManagementIntegrationApplicationEntityModel\n extends AXPEntityModel<string> {\n providerId: string;\n clientId: string;\n clientSecretRef: string;\n authorizationEndpoint?: string | null;\n tokenEndpoint?: string | null;\n redirectUri?: string | null;\n defaultScopes?: string[] | null;\n environment?: string | null;\n isActive: boolean;\n}\n\n//#endregion\n","import type { AXPEntityModel } from '@acorex-platform/framework-shared/entity';\nimport type {\n AXPIntegrationAuthMethodType,\n AXPIntegrationConnectionScope,\n AXPIntegrationConnectionStatus,\n} from '@acorex-platform/framework-shared/core';\n\n//#region ---- Integration connection entity model ----\n\n/**\n * Isolation lives on {@link AXPEntityModel.scopeInfo}:\n * - `tenantId` / `applicationId` always\n * - `userId` only when `connectionScope` is `user`\n */\nexport interface AXMIntegrationManagementIntegrationConnectionEntityModel\n extends AXPEntityModel<string> {\n providerId: string;\n connectionScope: AXPIntegrationConnectionScope;\n connectionKey: string;\n displayName: string;\n authMethodType: AXPIntegrationAuthMethodType;\n status: AXPIntegrationConnectionStatus;\n instanceUrl?: string | null;\n externalAccountId?: string | null;\n externalAccountName?: string | null;\n grantedScopes?: string[] | null;\n secretRef?: string | null;\n expiresAt?: string | null;\n lastConnectedAt?: string | null;\n lastValidatedAt?: string | null;\n lastSyncAt?: string | null;\n lastErrorCode?: string | null;\n lastErrorMessage?: string | null;\n isRevoked: boolean;\n isDisabled: boolean;\n config?: Record<string, unknown> | null;\n}\n\n//#endregion\n","import type { AXPEntityModel } from '@acorex-platform/framework-shared/entity';\n\n//#region ---- Integration OAuth state entity model ----\n\n/**\n * Isolation lives on {@link AXPEntityModel.scopeInfo}\n * (`tenantId`, `applicationId`, `userId` = authorizing user).\n */\nexport interface AXMIntegrationManagementIntegrationOAuthStateEntityModel\n extends AXPEntityModel<string> {\n state: string;\n codeVerifier: string;\n providerId: string;\n redirectUri: string;\n connectionScope: string;\n connectionKey: string;\n connectionId?: string | null;\n authMethodType: string;\n expiresAt: string;\n consumedAt?: string | null;\n}\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-integration-management-client-contracts.mjs","sources":["../../../../libs/modules/integration-management/contracts/src/root-config.ts","../../../../libs/modules/integration-management/contracts/src/manifest.ts","../../../../libs/modules/integration-management/contracts/src/permission.keys.ts","../../../../libs/modules/integration-management/contracts/src/commands.keys.ts","../../../../libs/modules/integration-management/contracts/src/queries.keys.ts","../../../../libs/modules/integration-management/contracts/src/menu.keys.ts","../../../../libs/modules/integration-management/contracts/src/route.helpers.ts","../../../../libs/modules/integration-management/contracts/src/entities/integration-application/integration-application.types.ts","../../../../libs/modules/integration-management/contracts/src/entities/integration-connection/integration-connection.types.ts","../../../../libs/modules/integration-management/contracts/src/entities/integration-oauth-state/integration-oauth-state.types.ts","../../../../libs/modules/integration-management/contracts/src/entities/integration-remote-record/integration-remote-record.types.ts","../../../../libs/modules/integration-management/contracts/src/entities/integration-remote-record/integration-remote-record.constants.ts","../../../../libs/modules/integration-management/contracts/src/acorex-platform-module-integration-management-client-contracts.ts"],"sourcesContent":["//#region ---- Module Config ----\n\nconst config = {\n i18n: 'integration-management',\n module: 'IntegrationManagement',\n route: 'integration-management',\n};\n\nexport const RootConfig = {\n config,\n module: {\n name: config.module,\n route: config.route,\n title: `@${config.i18n}:module.title`,\n icon: 'fa-light fa-plug',\n },\n entities: {\n integrationConnection: {\n name: 'IntegrationConnection',\n source: `${config.module}.IntegrationConnection`,\n title: `@${config.i18n}:connections.entities.connection.title`,\n titlePlural: `@${config.i18n}:connections.entities.connection.plural`,\n icon: 'fa-light fa-link',\n },\n integrationOAuthState: {\n name: 'IntegrationOAuthState',\n source: `${config.module}.IntegrationOAuthState`,\n title: `@${config.i18n}:oauth-states.entities.oauth-state.title`,\n titlePlural: `@${config.i18n}:oauth-states.entities.oauth-state.plural`,\n icon: 'fa-light fa-key',\n },\n integrationApplication: {\n name: 'IntegrationApplication',\n source: `${config.module}.IntegrationApplication`,\n title: `@${config.i18n}:applications.entities.application.title`,\n titlePlural: `@${config.i18n}:applications.entities.application.plural`,\n icon: 'fa-light fa-shield-keyhole',\n },\n integrationRemoteRecord: {\n name: 'IntegrationRemoteRecord',\n source: `${config.module}.IntegrationRemoteRecord`,\n title: `@${config.i18n}:remote-records.entities.record.title`,\n titlePlural: `@${config.i18n}:remote-records.entities.record.plural`,\n icon: 'fa-light fa-cloud-arrow-down',\n },\n },\n queries: {\n dashboard: {\n integrationsDonut: `${config.module}:Dashboard:IntegrationsDonut`,\n },\n },\n};\n\n//#endregion\n","\nimport { AXPModuleManifest } from '@acorex-platform/framework-shared/core';\nimport { RootConfig } from './root-config';\n\nexport const IntegrationManagementManifest: AXPModuleManifest = {\n name: RootConfig.module.name,\n version: '1.0.0',\n title: RootConfig.module.title,\n icon: RootConfig.module.icon,\n i18n: RootConfig.config.i18n,\n type: 'platform',\n domain: 'platform',\n required: false,\n};\n","/**\n * Administration capabilities used by this module.\n * Domain capability keys for this module. Root groups live in `AXPCommonPermissionGroupKeys` (common contracts).\n */\nexport const AXPAdministrationPermissionKeys = {\n Access: 'Administration:Permission:Access',\n MaintainUsersAndRoles: 'Administration:Permission:MaintainUsersAndRoles',\n ManageSessions: 'Administration:Permission:ManageSessions',\n MaintainPolicies: 'Administration:Permission:MaintainPolicies',\n ViewIntegrations: 'Administration:Permission:ViewIntegrations',\n MaintainConnections: 'Administration:Permission:MaintainConnections',\n ManageIntegrationActions: 'Administration:Permission:ManageIntegrationActions',\n MaintainWorkflows: 'Administration:Permission:MaintainWorkflows',\n ManageWorkflowActions: 'Administration:Permission:ManageWorkflowActions',\n ViewRules: 'Administration:Permission:ViewRules',\n MaintainRules: 'Administration:Permission:MaintainRules',\n ManageRuleActions: 'Administration:Permission:ManageRuleActions',\n MaintainAi: 'Administration:Permission:MaintainAi',\n UseAiAssist: 'Administration:Permission:UseAiAssist',\n MaintainDashboards: 'Administration:Permission:MaintainDashboards',\n ViewJobs: 'Administration:Permission:ViewJobs',\n ManageJobActions: 'Administration:Permission:ManageJobActions',\n ViewObservability: 'Administration:Permission:ViewObservability',\n MaintainObservability: 'Administration:Permission:MaintainObservability',\n} as const;\n\n/**\n * @deprecated Prefer {@link AXPAdministrationPermissionKeys}.\n * Legacy nested shape kept so existing imports compile during migration.\n */\nexport const AXMIntegrationManagementPermissionKeys = {\n Provider: {\n View: AXPAdministrationPermissionKeys.ViewIntegrations,\n },\n Connection: {\n View: AXPAdministrationPermissionKeys.ViewIntegrations,\n Management: AXPAdministrationPermissionKeys.MaintainConnections,\n },\n TenantConnection: {\n Management: AXPAdministrationPermissionKeys.MaintainConnections,\n },\n Application: {\n Management: AXPAdministrationPermissionKeys.MaintainConnections,\n },\n ConnectionHealth: {\n View: AXPAdministrationPermissionKeys.ViewIntegrations,\n },\n} as const;\n","//#region ---- Command Keys ----\n\nexport const AXMIntegrationManagementCommandKeys = {\n ConnectionConnectWithCredentials: 'IntegrationManagement.Connection:ConnectWithCredentials',\n ConnectionRefreshAuthorization: 'IntegrationManagement.Connection:RefreshAuthorization',\n ConnectionValidate: 'IntegrationManagement.Connection:Validate',\n ConnectionUpdate: 'IntegrationManagement.Connection:Update',\n ConnectionDisconnect: 'IntegrationManagement.Connection:Disconnect',\n ConnectionRevoke: 'IntegrationManagement.Connection:Revoke',\n ConnectionDelete: 'IntegrationManagement.Connection:Delete',\n ApplicationUpsert: 'IntegrationManagement.Application:Upsert',\n} as const;\n\n//#endregion\n","//#region ---- Query Keys ----\n\nexport const AXMIntegrationManagementQueryKeys = {\n DomainList: 'IntegrationManagement.Domain:List',\n ProviderList: 'IntegrationManagement.Provider:List',\n ProviderGet: 'IntegrationManagement.Provider:Get',\n ConnectionListMine: 'IntegrationManagement.Connection:ListMine',\n ConnectionGetStatus: 'IntegrationManagement.Connection:GetStatus',\n ConnectionGetAuthMethods: 'IntegrationManagement.Connection:GetAuthMethods',\n} as const;\n\n//#endregion\n","//#region ---- Menu Keys ----\n\nexport const AXMIntegrationManagementMenuKeys = {\n Integrations: 'IntegrationManagement:Menu:Integrations',\n} as const;\n\n//#endregion\n","//#region ----- Route helpers -----\n\n/** Tenant integrations admin page: `/{app}/admin/integrations`. */\nexport function buildTenantIntegrationsPagePath(appName: string): string {\n return `/${appName}/admin/integrations`;\n}\n\n/**\n * App-agnostic OAuth callback path.\n * Prefer this for providers with a fixed registered redirect URI (e.g. Simpro).\n */\nexport function buildIntegrationOAuthCallbackPath(providerId: string): string {\n return `/integrations/oauth/callback/${providerId}`;\n}\n\nexport function buildIntegrationOAuthCallbackUrl(origin: string, providerId: string): string {\n return `${origin.replace(/\\/+$/, '')}${buildIntegrationOAuthCallbackPath(providerId)}`;\n}\n\n/** Resolve the current app route slug — session first, then optional route/fallback. */\nexport function resolveAppRouteName(\n applicationName?: string | null,\n ...fallbacks: Array<string | null | undefined>\n): string | null {\n const candidates = [applicationName, ...fallbacks];\n for (const candidate of candidates) {\n const trimmed = String(candidate ?? '').trim();\n if (trimmed) {\n return trimmed;\n }\n }\n return null;\n}\n\n//#endregion\n","import type { AXPEntityModel } from '@acorex-platform/framework-shared/entity';\n\n//#region ---- Integration application entity model ----\n\n/**\n * Tenant/app isolation lives on {@link AXPEntityModel.scopeInfo}\n * (`tenantId`, `applicationId`).\n */\nexport interface AXMIntegrationManagementIntegrationApplicationEntityModel\n extends AXPEntityModel<string> {\n providerId: string;\n clientId: string;\n clientSecretRef: string;\n authorizationEndpoint?: string | null;\n tokenEndpoint?: string | null;\n redirectUri?: string | null;\n defaultScopes?: string[] | null;\n environment?: string | null;\n isActive: boolean;\n}\n\n//#endregion\n","import type { AXPEntityModel } from '@acorex-platform/framework-shared/entity';\nimport type {\n AXPIntegrationAuthMethodType,\n AXPIntegrationConnectionScope,\n AXPIntegrationConnectionStatus,\n} from '@acorex-platform/framework-shared/core';\n\n//#region ---- Integration connection entity model ----\n\n/**\n * Isolation lives on {@link AXPEntityModel.scopeInfo}:\n * - `tenantId` / `applicationId` always\n * - `userId` only when `connectionScope` is `user`\n */\nexport interface AXMIntegrationManagementIntegrationConnectionEntityModel\n extends AXPEntityModel<string> {\n providerId: string;\n connectionScope: AXPIntegrationConnectionScope;\n connectionKey: string;\n displayName: string;\n authMethodType: AXPIntegrationAuthMethodType;\n status: AXPIntegrationConnectionStatus;\n instanceUrl?: string | null;\n externalAccountId?: string | null;\n externalAccountName?: string | null;\n grantedScopes?: string[] | null;\n secretRef?: string | null;\n expiresAt?: string | null;\n lastConnectedAt?: string | null;\n lastValidatedAt?: string | null;\n lastSyncAt?: string | null;\n lastErrorCode?: string | null;\n lastErrorMessage?: string | null;\n isRevoked: boolean;\n isDisabled: boolean;\n config?: Record<string, unknown> | null;\n}\n\n//#endregion\n","import type { AXPEntityModel } from '@acorex-platform/framework-shared/entity';\n\n//#region ---- Integration OAuth state entity model ----\n\n/**\n * Isolation lives on {@link AXPEntityModel.scopeInfo}\n * (`tenantId`, `applicationId`, `userId` = authorizing user).\n */\nexport interface AXMIntegrationManagementIntegrationOAuthStateEntityModel\n extends AXPEntityModel<string> {\n state: string;\n codeVerifier: string;\n providerId: string;\n redirectUri: string;\n connectionScope: string;\n connectionKey: string;\n connectionId?: string | null;\n authMethodType: string;\n expiresAt: string;\n consumedAt?: string | null;\n}\n\n//#endregion\n","//#region ----- Integration remote record (cache entity) -----\n\nimport type { AXPEntityModel } from '@acorex-platform/framework-shared/entity';\n\n/**\n * Resource / data-type discriminator for cached remote rows.\n * For Simpro multi-connection, `providerId` on the row is the **connection id**\n * (not the integration provider key), and `resourceType` is the data type.\n */\nexport type AXMIntegrationManagementRemoteResourceType =\n | 'job'\n | 'customer'\n | 'site'\n | 'project'\n | 'task';\n\nexport interface AXMIntegrationManagementIntegrationRemoteRecordEntityModel\n extends AXPEntityModel<string> {\n /**\n * Cache partition key.\n * Simpro: integration connection id. Other providers may still use provider key (e.g. `servicem8`).\n */\n providerId: string;\n /** Data type: job | customer | site | … */\n resourceType: AXMIntegrationManagementRemoteResourceType | string;\n remoteId: string;\n name: string;\n code?: string | null;\n orderNo?: string | null;\n stage?: string | null;\n customerName?: string | null;\n siteName?: string | null;\n dueDate?: string | null;\n /** Display name of the owning integration connection (Simpro multi-connection lists). */\n connectionDisplayName?: string | null;\n payloadJson?: string | null;\n remoteFetchedAt: string;\n isActive: boolean;\n isLinked: boolean;\n}\n\nexport interface AXMIntegrationManagementIntegrationRemoteRecordUpsertInput {\n remoteId: string;\n name: string;\n code?: string | null;\n orderNo?: string | null;\n stage?: string | null;\n customerName?: string | null;\n siteName?: string | null;\n dueDate?: string | null;\n connectionDisplayName?: string | null;\n payloadJson?: string | null;\n}\n\nexport interface AXMIntegrationManagementIntegrationRemotePullResult {\n upserted: number;\n deactivated: number;\n}\n\n//#endregion\n","//#region ----- Integration remote record resource constants -----\n\nexport const AXM_INTEGRATION_RESOURCE_JOB = 'job';\nexport const AXM_INTEGRATION_RESOURCE_CUSTOMER = 'customer';\nexport const AXM_INTEGRATION_RESOURCE_SITE = 'site';\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -34,6 +34,9 @@ class AXMIntegrationRefPageComponent extends AXPPageLayoutBaseComponent {
|
|
|
34
34
|
...(ngDevMode ? [{ debugName: "rootContext" }] : /* istanbul ignore next */ []));
|
|
35
35
|
this.pageConfig = input(/* @ts-ignore */
|
|
36
36
|
...(ngDevMode ? [undefined, { debugName: "pageConfig" }] : /* istanbul ignore next */ []));
|
|
37
|
+
/** Required by page-component-renderer (create/update wizard + detail tabs). */
|
|
38
|
+
this.options = input({}, /* @ts-ignore */
|
|
39
|
+
...(ngDevMode ? [{ debugName: "options" }] : /* istanbul ignore next */ []));
|
|
37
40
|
//#endregion
|
|
38
41
|
//#region ----- Services & Dependencies -----
|
|
39
42
|
this.i18n = I18N;
|
|
@@ -120,7 +123,7 @@ class AXMIntegrationRefPageComponent extends AXPPageLayoutBaseComponent {
|
|
|
120
123
|
return record;
|
|
121
124
|
}
|
|
122
125
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMIntegrationRefPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
123
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXMIntegrationRefPageComponent, isStandalone: true, selector: "axm-integration-ref-page", inputs: { rootContext: { classPropertyName: "rootContext", publicName: "rootContext", isSignal: true, isRequired: false, transformFunction: null }, pageConfig: { classPropertyName: "pageConfig", publicName: "pageConfig", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "axm-integration-ref-page block w-full min-h-0" }, providers: [
|
|
126
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXMIntegrationRefPageComponent, isStandalone: true, selector: "axm-integration-ref-page", inputs: { rootContext: { classPropertyName: "rootContext", publicName: "rootContext", isSignal: true, isRequired: false, transformFunction: null }, pageConfig: { classPropertyName: "pageConfig", publicName: "pageConfig", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "axm-integration-ref-page block w-full min-h-0" }, providers: [
|
|
124
127
|
{
|
|
125
128
|
provide: AXPPageLayoutBase,
|
|
126
129
|
useExisting: AXMIntegrationRefPageComponent,
|
|
@@ -142,7 +145,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
142
145
|
useExisting: AXMIntegrationRefPageComponent,
|
|
143
146
|
},
|
|
144
147
|
], host: { class: 'axm-integration-ref-page block w-full min-h-0' }, template: "<div class=\"flex w-full flex-col gap-4 p-1\">\n <!-- ----- Loading indicator while connection details are fetched ----- -->\n @if (loading()) {\n <div class=\"flex justify-center py-10\">\n <ax-loading></ax-loading>\n </div>\n }\n <!-- ----- Empty state when the record is not linked ----- -->\n @else if (!hasLink()) {\n <section\n class=\"flex flex-col items-center justify-center gap-3 rounded-2xl border border-dashed border-surface bg-lighter-surface px-6 py-12 text-center\"\n >\n <div\n class=\"flex h-14 w-14 items-center justify-center rounded-full bg-surface text-2xl opacity-70\"\n >\n <i class=\"fa-light fa-plug\"></i>\n </div>\n <div class=\"font-medium\">{{ (i18n + '.empty.title' | translate | async) ?? '' }}</div>\n <div class=\"max-w-md text-sm opacity-70\">\n {{ (i18n + '.empty.description' | translate | async) ?? '' }}\n </div>\n </section>\n }\n <!-- ----- Readonly integration link summary card ----- -->\n @else if (view(); as details) {\n <section\n class=\"overflow-hidden rounded-2xl border border-surface bg-lighter-surface shadow-sm\"\n >\n <div\n class=\"flex flex-wrap items-start justify-between gap-4 border-b border-surface bg-gradient-to-br from-surface/40 to-transparent px-5 py-5\"\n >\n <div class=\"flex min-w-0 items-center gap-4\">\n <div\n class=\"flex h-14 w-14 shrink-0 items-center justify-center rounded-2xl border border-surface bg-lighter-surface shadow-sm\"\n >\n @if (details.provider?.logoKey) {\n <axp-logo\n [logoKey]=\"details.provider.logoKey\"\n appearance=\"colored\"\n [size]=\"32\"\n />\n }\n <!-- ----- Fallback FA icon when provider has no logoKey ----- -->\n @else if (details.provider?.icon) {\n <i [class]=\"details.provider.icon\" class=\"text-2xl\"></i>\n }\n <!-- ----- Generic plug icon when provider metadata is missing ----- -->\n @else {\n <i class=\"fa-light fa-plug text-2xl opacity-70\"></i>\n }\n </div>\n\n <div class=\"min-w-0\">\n <div class=\"text-sm opacity-70\">\n {{ (i18n + '.summary' | translate | async) ?? '' }}\n </div>\n <div class=\"mt-1 truncate text-lg font-semibold tracking-tight\">\n @if (details.provider?.displayName) {\n {{ details.provider.displayName | translate | async }}\n }\n <!-- ----- Fallback to connection name when provider title is unavailable ----- -->\n @else {\n {{ details.connectionDisplayName }}\n }\n </div>\n </div>\n </div>\n\n <ax-badge\n size=\"sm\"\n look=\"twotone\"\n color=\"success\"\n [text]=\"(i18n + '.badge.linked' | translate | async) ?? ''\"\n ></ax-badge>\n </div>\n\n <div class=\"grid gap-4 p-5 sm:grid-cols-2\">\n <div\n class=\"rounded-xl border border-surface/80 bg-surface/30 px-4 py-3\"\n >\n <div class=\"mb-1 flex items-center gap-2 text-xs font-semibold uppercase tracking-wide opacity-60\">\n <i class=\"fa-light fa-link\"></i>\n <span>{{ (i18n + '.fields.connection' | translate | async) ?? '' }}</span>\n </div>\n <div class=\"text-sm font-medium\">{{ details.connectionDisplayName }}</div>\n </div>\n\n <div\n class=\"rounded-xl border border-surface/80 bg-surface/30 px-4 py-3\"\n >\n <div class=\"mb-1 flex items-center gap-2 text-xs font-semibold uppercase tracking-wide opacity-60\">\n <i class=\"fa-light fa-calendar-clock\"></i>\n <span>{{ (i18n + '.fields.linked-at' | translate | async) ?? '' }}</span>\n </div>\n <div class=\"text-sm font-medium\" [dir]=\"'ltr'\">{{ details.linkedAtLabel }}</div>\n </div>\n\n <!--->\n <!-- ----- Optional remote resource metadata when present ----- -->\n @if (details.resourceType || details.remoteId) {\n <div\n class=\"rounded-xl border border-surface/80 bg-surface/30 px-4 py-3 sm:col-span-2\"\n >\n <div class=\"mb-1 flex items-center gap-2 text-xs font-semibold uppercase tracking-wide opacity-60\">\n <i class=\"fa-light fa-database\"></i>\n <span>{{ (i18n + '.fields.remote-record' | translate | async) ?? '' }}</span>\n </div>\n <div class=\"flex flex-wrap items-center gap-2 text-sm font-medium\">\n @if (details.resourceType) {\n <span class=\"rounded-md bg-surface px-2 py-0.5 text-xs\">{{ details.resourceType }}</span>\n }\n @if (details.remoteId) {\n <span class=\"font-mono text-xs opacity-80\" [dir]=\"'ltr'\">{{ details.remoteId }}</span>\n }\n </div>\n </div>\n }\n </div>\n\n <div class=\"border-t border-surface px-5 py-3 text-xs opacity-60\">\n {{ (i18n + '.readonly-hint' | translate | async) ?? '' }}\n </div>\n </section>\n }\n</div>\n" }]
|
|
145
|
-
}], ctorParameters: () => [], propDecorators: { rootContext: [{ type: i0.Input, args: [{ isSignal: true, alias: "rootContext", required: false }] }], pageConfig: [{ type: i0.Input, args: [{ isSignal: true, alias: "pageConfig", required: false }] }] } });
|
|
148
|
+
}], ctorParameters: () => [], propDecorators: { rootContext: [{ type: i0.Input, args: [{ isSignal: true, alias: "rootContext", required: false }] }], pageConfig: [{ type: i0.Input, args: [{ isSignal: true, alias: "pageConfig", required: false }] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }] } });
|
|
146
149
|
|
|
147
150
|
export { AXMIntegrationRefPageComponent };
|
|
148
|
-
//# sourceMappingURL=acorex-platform-module-integration-management-client-integration-ref-page.component-
|
|
151
|
+
//# sourceMappingURL=acorex-platform-module-integration-management-client-integration-ref-page.component-C131H4e1.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-integration-management-client-integration-ref-page.component-C131H4e1.mjs","sources":["../../../../libs/modules/integration-management/client/src/lib/features/widgets/integration-ref/integration-ref-page.component.ts","../../../../libs/modules/integration-management/client/src/lib/features/widgets/integration-ref/integration-ref-page.component.html"],"sourcesContent":["//#region ----- Imports -----\n\nimport { AXBadgeModule } from '@acorex/components/badge';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPLogoComponent } from '@acorex-platform/framework-client/core';\nimport {\n AXPPageLayoutBase,\n AXPPageLayoutBaseComponent,\n} from '@acorex-platform/framework-client/layout/views';\nimport { AXPRegionalSetting, type AXPIntegrationReference } from '@acorex-platform/framework-shared/core';\nimport { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n signal,\n untracked,\n} from '@angular/core';\nimport { isPlainObject, isString, trim } from 'lodash';\n\nimport {\n AXMIntegrationRefDisplay,\n AXMIntegrationRefDisplayService,\n} from './integration-ref-display.service';\n\n//#endregion\n\n//#region ----- Types -----\n\ninterface IntegrationRefPageView {\n provider: AXMIntegrationRefDisplay | null;\n connectionDisplayName: string;\n linkedAtLabel: string;\n resourceType: string;\n remoteId: string;\n}\n\n//#endregion\n\n//#region ----- Constants -----\n\nconst I18N = '@integration-management:widgets.integration-ref.page';\n\n//#endregion\n\n//#region ----- Component -----\n\n/**\n * Readonly detail tab for entities linked via `integrationRef`.\n * Shows connection display name and linked-at timestamp.\n */\n@Component({\n selector: 'axm-integration-ref-page',\n templateUrl: './integration-ref-page.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n AsyncPipe,\n AXBadgeModule,\n AXDecoratorModule,\n AXLoadingModule,\n AXTranslationModule,\n AXPLogoComponent,\n ],\n providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMIntegrationRefPageComponent,\n },\n ],\n host: { class: 'axm-integration-ref-page block w-full min-h-0' },\n})\nexport class AXMIntegrationRefPageComponent extends AXPPageLayoutBaseComponent {\n //#region ----- Inputs -----\n\n rootContext = input<Record<string, unknown>>({});\n pageConfig = input<Record<string, unknown>>();\n /** Required by page-component-renderer (create/update wizard + detail tabs). */\n options = input<Record<string, unknown>>({});\n\n //#endregion\n\n //#region ----- Services & Dependencies -----\n\n protected readonly i18n = I18N;\n private readonly displayService = inject(AXMIntegrationRefDisplayService);\n\n //#endregion\n\n //#region ----- State Signals -----\n\n protected readonly loading = signal(true);\n protected readonly view = signal<IntegrationRefPageView | null>(null);\n\n //#endregion\n\n //#region ----- Computed Properties -----\n\n protected readonly integrationRef = computed(() => {\n const raw = this.rootContext()?.['integrationRef'];\n return this.asIntegrationRef(raw);\n });\n\n protected readonly hasLink = computed(() => Boolean(this.integrationRef()));\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n constructor() {\n super();\n effect(() => {\n const ref = this.integrationRef();\n untracked(() => {\n void this.loadView(ref);\n });\n });\n }\n\n //#endregion\n\n //#region ----- Page metadata -----\n\n override async getPageTitle(): Promise<string> {\n return this.translateService.translateAsync(`${I18N}.title`);\n }\n\n //#endregion\n\n //#region ----- Data Loading -----\n\n private async loadView(ref: AXPIntegrationReference | null): Promise<void> {\n if (!ref) {\n this.view.set(null);\n this.loading.set(false);\n return;\n }\n\n this.loading.set(true);\n try {\n const connectionId = trim(ref.connectionId ?? '');\n const [provider, connection] = await Promise.all([\n this.displayService.resolve(ref),\n connectionId ? this.displayService.getConnectionById(connectionId) : Promise.resolve(null),\n ]);\n\n this.view.set({\n provider,\n connectionDisplayName: trim(connection?.displayName ?? '') || '---',\n linkedAtLabel: await this.formatLinkedAt(ref.linkedAt),\n resourceType: trim(ref.resourceType ?? ''),\n remoteId: trim(ref.remoteId ?? ''),\n });\n } finally {\n this.loading.set(false);\n }\n }\n\n private async formatLinkedAt(linkedAt: string | undefined): Promise<string> {\n const value = trim(linkedAt ?? '');\n if (!value) {\n return '---';\n }\n\n try {\n const dateFormat = await this.settingsService.get(AXPRegionalSetting.ShortDate);\n const timeFormat = await this.settingsService.get(AXPRegionalSetting.ShortTime);\n const format = `${dateFormat} ${timeFormat}`.trim();\n return this.formatService.format(new Date(value), 'datetime', { format });\n } catch {\n return '---';\n }\n }\n\n private asIntegrationRef(value: unknown): AXPIntegrationReference | null {\n if (!isPlainObject(value)) {\n return null;\n }\n const record = value as Record<string, unknown>;\n const source = isString(record['source']) ? trim(record['source']) : '';\n const connectionId = isString(record['connectionId']) ? trim(record['connectionId']) : '';\n if (!source && !connectionId) {\n return null;\n }\n return record as unknown as AXPIntegrationReference;\n }\n\n //#endregion\n}\n\n//#endregion\n","<div class=\"flex w-full flex-col gap-4 p-1\">\n <!-- ----- Loading indicator while connection details are fetched ----- -->\n @if (loading()) {\n <div class=\"flex justify-center py-10\">\n <ax-loading></ax-loading>\n </div>\n }\n <!-- ----- Empty state when the record is not linked ----- -->\n @else if (!hasLink()) {\n <section\n class=\"flex flex-col items-center justify-center gap-3 rounded-2xl border border-dashed border-surface bg-lighter-surface px-6 py-12 text-center\"\n >\n <div\n class=\"flex h-14 w-14 items-center justify-center rounded-full bg-surface text-2xl opacity-70\"\n >\n <i class=\"fa-light fa-plug\"></i>\n </div>\n <div class=\"font-medium\">{{ (i18n + '.empty.title' | translate | async) ?? '' }}</div>\n <div class=\"max-w-md text-sm opacity-70\">\n {{ (i18n + '.empty.description' | translate | async) ?? '' }}\n </div>\n </section>\n }\n <!-- ----- Readonly integration link summary card ----- -->\n @else if (view(); as details) {\n <section\n class=\"overflow-hidden rounded-2xl border border-surface bg-lighter-surface shadow-sm\"\n >\n <div\n class=\"flex flex-wrap items-start justify-between gap-4 border-b border-surface bg-gradient-to-br from-surface/40 to-transparent px-5 py-5\"\n >\n <div class=\"flex min-w-0 items-center gap-4\">\n <div\n class=\"flex h-14 w-14 shrink-0 items-center justify-center rounded-2xl border border-surface bg-lighter-surface shadow-sm\"\n >\n @if (details.provider?.logoKey) {\n <axp-logo\n [logoKey]=\"details.provider.logoKey\"\n appearance=\"colored\"\n [size]=\"32\"\n />\n }\n <!-- ----- Fallback FA icon when provider has no logoKey ----- -->\n @else if (details.provider?.icon) {\n <i [class]=\"details.provider.icon\" class=\"text-2xl\"></i>\n }\n <!-- ----- Generic plug icon when provider metadata is missing ----- -->\n @else {\n <i class=\"fa-light fa-plug text-2xl opacity-70\"></i>\n }\n </div>\n\n <div class=\"min-w-0\">\n <div class=\"text-sm opacity-70\">\n {{ (i18n + '.summary' | translate | async) ?? '' }}\n </div>\n <div class=\"mt-1 truncate text-lg font-semibold tracking-tight\">\n @if (details.provider?.displayName) {\n {{ details.provider.displayName | translate | async }}\n }\n <!-- ----- Fallback to connection name when provider title is unavailable ----- -->\n @else {\n {{ details.connectionDisplayName }}\n }\n </div>\n </div>\n </div>\n\n <ax-badge\n size=\"sm\"\n look=\"twotone\"\n color=\"success\"\n [text]=\"(i18n + '.badge.linked' | translate | async) ?? ''\"\n ></ax-badge>\n </div>\n\n <div class=\"grid gap-4 p-5 sm:grid-cols-2\">\n <div\n class=\"rounded-xl border border-surface/80 bg-surface/30 px-4 py-3\"\n >\n <div class=\"mb-1 flex items-center gap-2 text-xs font-semibold uppercase tracking-wide opacity-60\">\n <i class=\"fa-light fa-link\"></i>\n <span>{{ (i18n + '.fields.connection' | translate | async) ?? '' }}</span>\n </div>\n <div class=\"text-sm font-medium\">{{ details.connectionDisplayName }}</div>\n </div>\n\n <div\n class=\"rounded-xl border border-surface/80 bg-surface/30 px-4 py-3\"\n >\n <div class=\"mb-1 flex items-center gap-2 text-xs font-semibold uppercase tracking-wide opacity-60\">\n <i class=\"fa-light fa-calendar-clock\"></i>\n <span>{{ (i18n + '.fields.linked-at' | translate | async) ?? '' }}</span>\n </div>\n <div class=\"text-sm font-medium\" [dir]=\"'ltr'\">{{ details.linkedAtLabel }}</div>\n </div>\n\n <!--->\n <!-- ----- Optional remote resource metadata when present ----- -->\n @if (details.resourceType || details.remoteId) {\n <div\n class=\"rounded-xl border border-surface/80 bg-surface/30 px-4 py-3 sm:col-span-2\"\n >\n <div class=\"mb-1 flex items-center gap-2 text-xs font-semibold uppercase tracking-wide opacity-60\">\n <i class=\"fa-light fa-database\"></i>\n <span>{{ (i18n + '.fields.remote-record' | translate | async) ?? '' }}</span>\n </div>\n <div class=\"flex flex-wrap items-center gap-2 text-sm font-medium\">\n @if (details.resourceType) {\n <span class=\"rounded-md bg-surface px-2 py-0.5 text-xs\">{{ details.resourceType }}</span>\n }\n @if (details.remoteId) {\n <span class=\"font-mono text-xs opacity-80\" [dir]=\"'ltr'\">{{ details.remoteId }}</span>\n }\n </div>\n </div>\n }\n </div>\n\n <div class=\"border-t border-surface px-5 py-3 text-xs opacity-60\">\n {{ (i18n + '.readonly-hint' | translate | async) ?? '' }}\n </div>\n </section>\n }\n</div>\n"],"names":["i1","i2"],"mappings":"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"}
|
|
@@ -115,7 +115,7 @@ class AXMIntegrationRefWidgetColumnComponent extends AXPColumnWidgetComponent {
|
|
|
115
115
|
}
|
|
116
116
|
}
|
|
117
117
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMIntegrationRefWidgetColumnComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
118
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXMIntegrationRefWidgetColumnComponent, isStandalone: true, selector: "axm-integration-ref-widget-column", inputs: { rawValue: "rawValue", rowData: "rowData" }, host: { listeners: { "click": "onHostClick($event)", "mousedown": "onHostClick($event)", "dblclick": "onHostClick($event)" }, classAttribute: "inline-flex min-w-0 items-center" }, viewQueries: [{ propertyName: "trigger", first: true, predicate: ["infoTrigger"], descendants: true, isSignal: true }, { propertyName: "infoPopover", first: true, predicate: ["infoPopover"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<!-- ----- Provider logo/icon with display name label ----- -->\n@if (display(); as info) {\n <span\n #infoTrigger\n class=\"inline-flex min-w-0 cursor-pointer items-center gap-2 hover:opacity-80\"\n role=\"button\"\n tabindex=\"0\"\n [attr.aria-label]=\"info.displayName | translate | async\"\n (click)=\"onTriggerClick($event)\"\n (keydown.enter)=\"onTriggerClick($event)\"\n (keydown.space)=\"onTriggerClick($event)\"\n >\n @if (info.logoKey) {\n <axp-logo [logoKey]=\"info.logoKey\" appearance=\"colored\" [size]=\"20\" />\n }\n <!-- ----- Fallback FA icon when provider has no logoKey ----- -->\n @else if (info.icon) {\n <i [class]=\"info.icon\" class=\"shrink-0 text-base\"></i>\n }\n <span class=\"truncate text-sm\">{{ info.displayName | translate | async }}</span>\n </span>\n}\n\n<!-- ----- Connection details card opened on click ----- -->\n<ax-popover [openOn]=\"'manual'\" #infoPopover [adaptivityEnabled]=\"true\">\n <div class=\"lightest-surface min-w-[280px] rounded-lg border p-3 shadow-lg\">\n <div class=\"mb-3 border-b pb-2\">\n <h3 class=\"text-sm font-semibold\">\n {{ '@integration-management:widgets.integration-ref.card.title' | translate | async }}\n </h3>\n </div>\n\n @if (cardLoading()) {\n <!-- ----- Loading while connection is fetched ----- -->\n <div class=\"flex justify-center py-3\">\n <ax-loading></ax-loading>\n </div>\n }\n <!-- ----- Connection name + linked-at once loaded ----- -->\n @else if (card(); as details) {\n <div class=\"space-y-2.5\">\n <div>\n <div class=\"mb-1 text-xs font-semibold\">\n {{\n '@integration-management:widgets.integration-ref.card.connection' | translate | async\n }}\n </div>\n <div class=\"text-xs\">{{ details.connectionDisplayName }}</div>\n </div>\n <div>\n <div class=\"mb-1 text-xs font-semibold\">\n {{\n '@integration-management:widgets.integration-ref.card.linked-at' | translate | async\n }}\n </div>\n <div class=\"text-xs\" [dir]=\"'ltr'\">{{ details.linkedAtLabel }}</div>\n </div>\n </div>\n }\n </div>\n</ax-popover>\n", dependencies: [{ kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i1.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "component", type: i2.AXPopoverComponent, selector: "ax-popover", inputs: ["width", "disablePanelClass", "visualContextScope", "disabled", "offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "closeOnScroll", "backdropClass", "panelClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "component", type: AXPLogoComponent, selector: "axp-logo", inputs: ["logoKey", "appearance", "size", "format"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: i3.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
118
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXMIntegrationRefWidgetColumnComponent, isStandalone: true, selector: "axm-integration-ref-widget-column", inputs: { rawValue: "rawValue", rowData: "rowData" }, host: { listeners: { "click": "onHostClick($event)", "mousedown": "onHostClick($event)", "dblclick": "onHostClick($event)" }, classAttribute: "inline-flex min-w-0 items-center" }, viewQueries: [{ propertyName: "trigger", first: true, predicate: ["infoTrigger"], descendants: true, isSignal: true }, { propertyName: "infoPopover", first: true, predicate: ["infoPopover"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<!-- ----- Provider logo/icon with display name label ----- -->\n@if (display(); as info) {\n <span\n #infoTrigger\n class=\"inline-flex min-w-0 cursor-pointer items-center gap-2 hover:opacity-80\"\n role=\"button\"\n tabindex=\"0\"\n [attr.aria-label]=\"info.displayName | translate | async\"\n (click)=\"onTriggerClick($event)\"\n (keydown.enter)=\"onTriggerClick($event)\"\n (keydown.space)=\"onTriggerClick($event)\"\n >\n @if (info.logoKey) {\n <axp-logo [logoKey]=\"info.logoKey\" appearance=\"colored\" [size]=\"20\" />\n }\n <!-- ----- Fallback FA icon when provider has no logoKey ----- -->\n @else if (info.icon) {\n <i [class]=\"info.icon\" class=\"shrink-0 text-base\"></i>\n }\n <span class=\"truncate text-sm\">{{ info.displayName | translate | async }}</span>\n </span>\n}\n\n<!-- ----- Connection details card opened on click ----- -->\n<ax-popover [openOn]=\"'manual'\" #infoPopover [adaptivityEnabled]=\"true\">\n <div class=\"lightest-surface min-w-[280px] rounded-lg border p-3 shadow-lg\">\n <div class=\"mb-3 border-b pb-2\">\n <h3 class=\"text-sm font-semibold\">\n {{ '@integration-management:widgets.integration-ref.card.title' | translate | async }}\n </h3>\n </div>\n\n @if (cardLoading()) {\n <!-- ----- Loading while connection is fetched ----- -->\n <div class=\"flex justify-center py-3\">\n <ax-loading></ax-loading>\n </div>\n }\n <!-- ----- Connection name + linked-at once loaded ----- -->\n @else if (card(); as details) {\n <div class=\"space-y-2.5\">\n <div>\n <div class=\"mb-1 text-xs font-semibold\">\n {{\n '@integration-management:widgets.integration-ref.card.connection' | translate | async\n }}\n </div>\n <div class=\"text-xs\">{{ details.connectionDisplayName }}</div>\n </div>\n <div>\n <div class=\"mb-1 text-xs font-semibold\">\n {{\n '@integration-management:widgets.integration-ref.card.linked-at' | translate | async\n }}\n </div>\n <div class=\"text-xs\" [dir]=\"'ltr'\">{{ details.linkedAtLabel }}</div>\n </div>\n </div>\n }\n </div>\n</ax-popover>\n", dependencies: [{ kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i1.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "component", type: i2.AXPopoverComponent, selector: "ax-popover", inputs: ["width", "disablePanelClass", "visualContextScope", "disabled", "offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "closeOnScroll", "closeOnNavigation", "backdropClass", "panelClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "component", type: AXPLogoComponent, selector: "axp-logo", inputs: ["logoKey", "appearance", "size", "format"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: i3.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
119
119
|
}
|
|
120
120
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMIntegrationRefWidgetColumnComponent, decorators: [{
|
|
121
121
|
type: Component,
|
|
@@ -134,4 +134,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
134
134
|
}], ctorParameters: () => [], propDecorators: { trigger: [{ type: i0.ViewChild, args: ['infoTrigger', { isSignal: true }] }], infoPopover: [{ type: i0.ViewChild, args: ['infoPopover', { isSignal: true }] }] } });
|
|
135
135
|
|
|
136
136
|
export { AXMIntegrationRefWidgetColumnComponent };
|
|
137
|
-
//# sourceMappingURL=acorex-platform-module-integration-management-client-integration-ref-widget-column.component-
|
|
137
|
+
//# sourceMappingURL=acorex-platform-module-integration-management-client-integration-ref-widget-column.component-ClPcvcUW.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-integration-management-client-integration-ref-widget-column.component-CPLhmHOe.mjs","sources":["../../../../libs/modules/integration-management/client/src/lib/features/widgets/integration-ref/integration-ref-widget-column.component.ts","../../../../libs/modules/integration-management/client/src/lib/features/widgets/integration-ref/integration-ref-widget-column.component.html"],"sourcesContent":["//#region ----- Imports -----\n\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXPopoverComponent, AXPopoverModule } from '@acorex/components/popover';\nimport { AXFormatService } from '@acorex/core/format';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPSettingsService } from '@acorex-platform/framework-client/common';\nimport { AXPLogoComponent } from '@acorex-platform/framework-client/core';\nimport { AXPColumnWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXPRegionalSetting } from '@acorex-platform/framework-shared/core';\nimport { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n effect,\n inject,\n signal,\n untracked,\n viewChild,\n} from '@angular/core';\nimport { trim } from 'lodash';\n\nimport {\n AXMIntegrationRefDisplay,\n AXMIntegrationRefDisplayService,\n} from './integration-ref-display.service';\n\n//#endregion\n\n//#region ----- Types -----\n\ninterface IntegrationRefCardState {\n connectionDisplayName: string;\n linkedAtLabel: string;\n}\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n selector: 'axm-integration-ref-widget-column',\n templateUrl: './integration-ref-widget-column.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n AsyncPipe,\n AXLoadingModule,\n AXPopoverModule,\n AXTranslationModule,\n AXPLogoComponent,\n ],\n inputs: ['rawValue', 'rowData'],\n host: {\n class: 'inline-flex min-w-0 items-center',\n '(click)': 'onHostClick($event)',\n '(mousedown)': 'onHostClick($event)',\n '(dblclick)': 'onHostClick($event)',\n },\n})\nexport class AXMIntegrationRefWidgetColumnComponent extends AXPColumnWidgetComponent<unknown> {\n //#region ----- Services & Dependencies -----\n\n private readonly displayService = inject(AXMIntegrationRefDisplayService);\n private readonly formatService = inject(AXFormatService);\n private readonly settingsService = inject(AXPSettingsService);\n\n //#endregion\n\n //#region ----- View Children -----\n\n protected readonly trigger = viewChild<ElementRef<HTMLElement>>('infoTrigger');\n protected readonly infoPopover = viewChild<AXPopoverComponent>('infoPopover');\n\n //#endregion\n\n //#region ----- State Signals -----\n\n protected readonly display = signal<AXMIntegrationRefDisplay | null>(null);\n protected readonly cardLoading = signal(false);\n protected readonly card = signal<IntegrationRefCardState | null>(null);\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n constructor() {\n super();\n effect(() => {\n const value = this.rawValue;\n untracked(() => {\n void this.resolveDisplay(value);\n });\n });\n }\n\n //#endregion\n\n //#region ----- Event Handlers -----\n\n /** Keeps grid row navigation from firing when interacting with this cell. */\n protected onHostClick(event: Event): void {\n if (!this.display()) {\n return;\n }\n event.stopPropagation();\n event.preventDefault();\n }\n\n protected async onTriggerClick(event: Event): Promise<void> {\n event.stopPropagation();\n event.preventDefault();\n await this.openCard();\n }\n\n //#endregion\n\n //#region ----- Data Loading -----\n\n private async resolveDisplay(value: unknown): Promise<void> {\n this.display.set(await this.displayService.resolve(value));\n }\n\n private async openCard(): Promise<void> {\n const ref = this.displayService.parseIntegrationRef(this.rawValue);\n if (!ref) {\n return;\n }\n\n this.cardLoading.set(true);\n this.card.set(null);\n this.openPopover();\n\n try {\n const connectionId = trim(ref.connectionId ?? '');\n const connection = connectionId\n ? await this.displayService.getConnectionById(connectionId)\n : null;\n\n this.card.set({\n connectionDisplayName: trim(connection?.displayName ?? '') || '---',\n linkedAtLabel: await this.formatLinkedAt(ref.linkedAt),\n });\n } finally {\n this.cardLoading.set(false);\n }\n }\n\n private openPopover(): void {\n const popover = this.infoPopover();\n const trigger = this.trigger();\n if (!popover || !trigger) {\n return;\n }\n popover.target = trigger.nativeElement;\n popover.open();\n }\n\n private async formatLinkedAt(linkedAt: string | undefined): Promise<string> {\n const value = trim(linkedAt ?? '');\n if (!value) {\n return '---';\n }\n\n try {\n const dateFormat = await this.settingsService.get(AXPRegionalSetting.ShortDate);\n const timeFormat = await this.settingsService.get(AXPRegionalSetting.ShortTime);\n const format = `${dateFormat} ${timeFormat}`.trim();\n return this.formatService.format(new Date(value), 'datetime', { format });\n } catch {\n return '---';\n }\n }\n\n //#endregion\n}\n\n//#endregion\n","<!-- ----- Provider logo/icon with display name label ----- -->\n@if (display(); as info) {\n <span\n #infoTrigger\n class=\"inline-flex min-w-0 cursor-pointer items-center gap-2 hover:opacity-80\"\n role=\"button\"\n tabindex=\"0\"\n [attr.aria-label]=\"info.displayName | translate | async\"\n (click)=\"onTriggerClick($event)\"\n (keydown.enter)=\"onTriggerClick($event)\"\n (keydown.space)=\"onTriggerClick($event)\"\n >\n @if (info.logoKey) {\n <axp-logo [logoKey]=\"info.logoKey\" appearance=\"colored\" [size]=\"20\" />\n }\n <!-- ----- Fallback FA icon when provider has no logoKey ----- -->\n @else if (info.icon) {\n <i [class]=\"info.icon\" class=\"shrink-0 text-base\"></i>\n }\n <span class=\"truncate text-sm\">{{ info.displayName | translate | async }}</span>\n </span>\n}\n\n<!-- ----- Connection details card opened on click ----- -->\n<ax-popover [openOn]=\"'manual'\" #infoPopover [adaptivityEnabled]=\"true\">\n <div class=\"lightest-surface min-w-[280px] rounded-lg border p-3 shadow-lg\">\n <div class=\"mb-3 border-b pb-2\">\n <h3 class=\"text-sm font-semibold\">\n {{ '@integration-management:widgets.integration-ref.card.title' | translate | async }}\n </h3>\n </div>\n\n @if (cardLoading()) {\n <!-- ----- Loading while connection is fetched ----- -->\n <div class=\"flex justify-center py-3\">\n <ax-loading></ax-loading>\n </div>\n }\n <!-- ----- Connection name + linked-at once loaded ----- -->\n @else if (card(); as details) {\n <div class=\"space-y-2.5\">\n <div>\n <div class=\"mb-1 text-xs font-semibold\">\n {{\n '@integration-management:widgets.integration-ref.card.connection' | translate | async\n }}\n </div>\n <div class=\"text-xs\">{{ details.connectionDisplayName }}</div>\n </div>\n <div>\n <div class=\"mb-1 text-xs font-semibold\">\n {{\n '@integration-management:widgets.integration-ref.card.linked-at' | translate | async\n }}\n </div>\n <div class=\"text-xs\" [dir]=\"'ltr'\">{{ details.linkedAtLabel }}</div>\n </div>\n </div>\n }\n </div>\n</ax-popover>\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-integration-management-client-integration-ref-widget-column.component-ClPcvcUW.mjs","sources":["../../../../libs/modules/integration-management/client/src/lib/features/widgets/integration-ref/integration-ref-widget-column.component.ts","../../../../libs/modules/integration-management/client/src/lib/features/widgets/integration-ref/integration-ref-widget-column.component.html"],"sourcesContent":["//#region ----- Imports -----\n\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXPopoverComponent, AXPopoverModule } from '@acorex/components/popover';\nimport { AXFormatService } from '@acorex/core/format';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPSettingsService } from '@acorex-platform/framework-client/common';\nimport { AXPLogoComponent } from '@acorex-platform/framework-client/core';\nimport { AXPColumnWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXPRegionalSetting } from '@acorex-platform/framework-shared/core';\nimport { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n effect,\n inject,\n signal,\n untracked,\n viewChild,\n} from '@angular/core';\nimport { trim } from 'lodash';\n\nimport {\n AXMIntegrationRefDisplay,\n AXMIntegrationRefDisplayService,\n} from './integration-ref-display.service';\n\n//#endregion\n\n//#region ----- Types -----\n\ninterface IntegrationRefCardState {\n connectionDisplayName: string;\n linkedAtLabel: string;\n}\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n selector: 'axm-integration-ref-widget-column',\n templateUrl: './integration-ref-widget-column.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n AsyncPipe,\n AXLoadingModule,\n AXPopoverModule,\n AXTranslationModule,\n AXPLogoComponent,\n ],\n inputs: ['rawValue', 'rowData'],\n host: {\n class: 'inline-flex min-w-0 items-center',\n '(click)': 'onHostClick($event)',\n '(mousedown)': 'onHostClick($event)',\n '(dblclick)': 'onHostClick($event)',\n },\n})\nexport class AXMIntegrationRefWidgetColumnComponent extends AXPColumnWidgetComponent<unknown> {\n //#region ----- Services & Dependencies -----\n\n private readonly displayService = inject(AXMIntegrationRefDisplayService);\n private readonly formatService = inject(AXFormatService);\n private readonly settingsService = inject(AXPSettingsService);\n\n //#endregion\n\n //#region ----- View Children -----\n\n protected readonly trigger = viewChild<ElementRef<HTMLElement>>('infoTrigger');\n protected readonly infoPopover = viewChild<AXPopoverComponent>('infoPopover');\n\n //#endregion\n\n //#region ----- State Signals -----\n\n protected readonly display = signal<AXMIntegrationRefDisplay | null>(null);\n protected readonly cardLoading = signal(false);\n protected readonly card = signal<IntegrationRefCardState | null>(null);\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n constructor() {\n super();\n effect(() => {\n const value = this.rawValue;\n untracked(() => {\n void this.resolveDisplay(value);\n });\n });\n }\n\n //#endregion\n\n //#region ----- Event Handlers -----\n\n /** Keeps grid row navigation from firing when interacting with this cell. */\n protected onHostClick(event: Event): void {\n if (!this.display()) {\n return;\n }\n event.stopPropagation();\n event.preventDefault();\n }\n\n protected async onTriggerClick(event: Event): Promise<void> {\n event.stopPropagation();\n event.preventDefault();\n await this.openCard();\n }\n\n //#endregion\n\n //#region ----- Data Loading -----\n\n private async resolveDisplay(value: unknown): Promise<void> {\n this.display.set(await this.displayService.resolve(value));\n }\n\n private async openCard(): Promise<void> {\n const ref = this.displayService.parseIntegrationRef(this.rawValue);\n if (!ref) {\n return;\n }\n\n this.cardLoading.set(true);\n this.card.set(null);\n this.openPopover();\n\n try {\n const connectionId = trim(ref.connectionId ?? '');\n const connection = connectionId\n ? await this.displayService.getConnectionById(connectionId)\n : null;\n\n this.card.set({\n connectionDisplayName: trim(connection?.displayName ?? '') || '---',\n linkedAtLabel: await this.formatLinkedAt(ref.linkedAt),\n });\n } finally {\n this.cardLoading.set(false);\n }\n }\n\n private openPopover(): void {\n const popover = this.infoPopover();\n const trigger = this.trigger();\n if (!popover || !trigger) {\n return;\n }\n popover.target = trigger.nativeElement;\n popover.open();\n }\n\n private async formatLinkedAt(linkedAt: string | undefined): Promise<string> {\n const value = trim(linkedAt ?? '');\n if (!value) {\n return '---';\n }\n\n try {\n const dateFormat = await this.settingsService.get(AXPRegionalSetting.ShortDate);\n const timeFormat = await this.settingsService.get(AXPRegionalSetting.ShortTime);\n const format = `${dateFormat} ${timeFormat}`.trim();\n return this.formatService.format(new Date(value), 'datetime', { format });\n } catch {\n return '---';\n }\n }\n\n //#endregion\n}\n\n//#endregion\n","<!-- ----- Provider logo/icon with display name label ----- -->\n@if (display(); as info) {\n <span\n #infoTrigger\n class=\"inline-flex min-w-0 cursor-pointer items-center gap-2 hover:opacity-80\"\n role=\"button\"\n tabindex=\"0\"\n [attr.aria-label]=\"info.displayName | translate | async\"\n (click)=\"onTriggerClick($event)\"\n (keydown.enter)=\"onTriggerClick($event)\"\n (keydown.space)=\"onTriggerClick($event)\"\n >\n @if (info.logoKey) {\n <axp-logo [logoKey]=\"info.logoKey\" appearance=\"colored\" [size]=\"20\" />\n }\n <!-- ----- Fallback FA icon when provider has no logoKey ----- -->\n @else if (info.icon) {\n <i [class]=\"info.icon\" class=\"shrink-0 text-base\"></i>\n }\n <span class=\"truncate text-sm\">{{ info.displayName | translate | async }}</span>\n </span>\n}\n\n<!-- ----- Connection details card opened on click ----- -->\n<ax-popover [openOn]=\"'manual'\" #infoPopover [adaptivityEnabled]=\"true\">\n <div class=\"lightest-surface min-w-[280px] rounded-lg border p-3 shadow-lg\">\n <div class=\"mb-3 border-b pb-2\">\n <h3 class=\"text-sm font-semibold\">\n {{ '@integration-management:widgets.integration-ref.card.title' | translate | async }}\n </h3>\n </div>\n\n @if (cardLoading()) {\n <!-- ----- Loading while connection is fetched ----- -->\n <div class=\"flex justify-center py-3\">\n <ax-loading></ax-loading>\n </div>\n }\n <!-- ----- Connection name + linked-at once loaded ----- -->\n @else if (card(); as details) {\n <div class=\"space-y-2.5\">\n <div>\n <div class=\"mb-1 text-xs font-semibold\">\n {{\n '@integration-management:widgets.integration-ref.card.connection' | translate | async\n }}\n </div>\n <div class=\"text-xs\">{{ details.connectionDisplayName }}</div>\n </div>\n <div>\n <div class=\"mb-1 text-xs font-semibold\">\n {{\n '@integration-management:widgets.integration-ref.card.linked-at' | translate | async\n }}\n </div>\n <div class=\"text-xs\" [dir]=\"'ltr'\">{{ details.linkedAtLabel }}</div>\n </div>\n </div>\n }\n </div>\n</ax-popover>\n"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,7 @@ function provideIntegrationManagementLocalEntities() {
|
|
|
18
18
|
[RootConfig.entities.integrationApplication.name]: () => import('@acorex-platform/module-integration-management-client/contracts/entities/integration-application').then((m) => m.factoryIntegrationApplication()),
|
|
19
19
|
[RootConfig.entities.integrationConnection.name]: () => import('@acorex-platform/module-integration-management-client/contracts/entities/integration-connection').then((m) => m.factoryIntegrationConnection()),
|
|
20
20
|
[RootConfig.entities.integrationOAuthState.name]: () => import('@acorex-platform/module-integration-management-client/contracts/entities/integration-oauth-state').then((m) => m.factoryIntegrationOAuthState()),
|
|
21
|
+
[RootConfig.entities.integrationRemoteRecord.name]: () => import('@acorex-platform/module-integration-management-client/contracts/entities/integration-remote-record').then((m) => m.factoryIntegrationRemoteRecord()),
|
|
21
22
|
},
|
|
22
23
|
});
|
|
23
24
|
}
|
package/fesm2022/acorex-platform-module-integration-management-client-local-entities.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-integration-management-client-local-entities.mjs","sources":["../../../../libs/modules/integration-management/client/src/lib/provide-local-entities.ts","../../../../libs/modules/integration-management/client/src/lib/acorex-platform-module-integration-management-client-local-entities.ts"],"sourcesContent":["//#region ----- Imports -----\n\nimport { provideLocalEntityCatalog } from '@acorex-platform/framework-client/layout/entity';\nimport { RootConfig } from '@acorex-platform/module-integration-management-client/contracts';\n\n//#endregion\n\n//#region ----- Provide local entities -----\n\n/**\n * Registers integration-management layouts on the client from packaged factories.\n * Each `import()` targets a secondary entry so unused entities stay out of the\n * bundle. Do not add this to the demo app; demo continues to load layouts via\n * `Domain:GetEntityLayout`.\n */\nexport function provideIntegrationManagementLocalEntities() {\n return provideLocalEntityCatalog({\n moduleName: RootConfig.module.name,\n loaders: {\n [RootConfig.entities.integrationApplication.name]: () =>\n import('@acorex-platform/module-integration-management-client/contracts/entities/integration-application').then((m) => m.factoryIntegrationApplication()),\n [RootConfig.entities.integrationConnection.name]: () =>\n import('@acorex-platform/module-integration-management-client/contracts/entities/integration-connection').then((m) => m.factoryIntegrationConnection()),\n [RootConfig.entities.integrationOAuthState.name]: () =>\n import('@acorex-platform/module-integration-management-client/contracts/entities/integration-oauth-state').then((m) => m.factoryIntegrationOAuthState()),\n },\n });\n}\n\nexport { integrationManagementLocalEntityCatalog } from '@acorex-platform/module-integration-management-client/contracts/entity-catalog';\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './provide-local-entities';\n"],"names":[],"mappings":";;;;AAAA;AAKA;AAEA;AAEA;;;;;AAKG;SACa,yCAAyC,GAAA;AACvD,IAAA,OAAO,yBAAyB,CAAC;AAC/B,QAAA,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI;AAClC,QAAA,OAAO,EAAE;AACP,YAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,sBAAsB,CAAC,IAAI,GAAG,MACjD,OAAO,kGAAkG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,6BAA6B,EAAE,CAAC;AAC3J,YAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,GAAG,MAChD,OAAO,iGAAiG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,4BAA4B,EAAE,CAAC;AACzJ,YAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,GAAG,MAChD,OAAO,kGAAkG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,4BAA4B,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-integration-management-client-local-entities.mjs","sources":["../../../../libs/modules/integration-management/client/src/lib/provide-local-entities.ts","../../../../libs/modules/integration-management/client/src/lib/acorex-platform-module-integration-management-client-local-entities.ts"],"sourcesContent":["//#region ----- Imports -----\n\nimport { provideLocalEntityCatalog } from '@acorex-platform/framework-client/layout/entity';\nimport { RootConfig } from '@acorex-platform/module-integration-management-client/contracts';\n\n//#endregion\n\n//#region ----- Provide local entities -----\n\n/**\n * Registers integration-management layouts on the client from packaged factories.\n * Each `import()` targets a secondary entry so unused entities stay out of the\n * bundle. Do not add this to the demo app; demo continues to load layouts via\n * `Domain:GetEntityLayout`.\n */\nexport function provideIntegrationManagementLocalEntities() {\n return provideLocalEntityCatalog({\n moduleName: RootConfig.module.name,\n loaders: {\n [RootConfig.entities.integrationApplication.name]: () =>\n import('@acorex-platform/module-integration-management-client/contracts/entities/integration-application').then((m) => m.factoryIntegrationApplication()),\n [RootConfig.entities.integrationConnection.name]: () =>\n import('@acorex-platform/module-integration-management-client/contracts/entities/integration-connection').then((m) => m.factoryIntegrationConnection()),\n [RootConfig.entities.integrationOAuthState.name]: () =>\n import('@acorex-platform/module-integration-management-client/contracts/entities/integration-oauth-state').then((m) => m.factoryIntegrationOAuthState()),\n [RootConfig.entities.integrationRemoteRecord.name]: () =>\n import('@acorex-platform/module-integration-management-client/contracts/entities/integration-remote-record').then((m) =>\n m.factoryIntegrationRemoteRecord(),\n ),\n },\n });\n}\n\nexport { integrationManagementLocalEntityCatalog } from '@acorex-platform/module-integration-management-client/contracts/entity-catalog';\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './provide-local-entities';\n"],"names":[],"mappings":";;;;AAAA;AAKA;AAEA;AAEA;;;;;AAKG;SACa,yCAAyC,GAAA;AACvD,IAAA,OAAO,yBAAyB,CAAC;AAC/B,QAAA,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI;AAClC,QAAA,OAAO,EAAE;AACP,YAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,sBAAsB,CAAC,IAAI,GAAG,MACjD,OAAO,kGAAkG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,6BAA6B,EAAE,CAAC;AAC3J,YAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,GAAG,MAChD,OAAO,iGAAiG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,4BAA4B,EAAE,CAAC;AACzJ,YAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,GAAG,MAChD,OAAO,kGAAkG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,4BAA4B,EAAE,CAAC;AAC1J,YAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,uBAAuB,CAAC,IAAI,GAAG,MAClD,OAAO,oGAAoG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAClH,CAAC,CAAC,8BAA8B,EAAE,CACnC;AACJ,SAAA;AACF,KAAA,CAAC;AACJ;AAIA;;ACnCA;;AAEG;;"}
|