@acorex-platform/module-platform-dev-tools-client 0.0.21
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-platform-dev-tools-client-contracts.mjs +72 -0
- package/fesm2022/acorex-platform-module-platform-dev-tools-client-contracts.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-platform-dev-tools-client-menu.provider-RHLrPSuX.mjs +36 -0
- package/fesm2022/acorex-platform-module-platform-dev-tools-client-menu.provider-RHLrPSuX.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-platform-dev-tools-client.mjs +1062 -0
- package/fesm2022/acorex-platform-module-platform-dev-tools-client.mjs.map +1 -0
- package/package.json +28 -0
- package/types/acorex-platform-module-platform-dev-tools-client-contracts.d.ts +56 -0
- package/types/acorex-platform-module-platform-dev-tools-client.d.ts +154 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-platform-dev-tools-client.mjs","sources":["../../../../libs/modules/platform-dev-tools/client/src/lib/manifest.ts","../../../../libs/modules/platform-dev-tools/client/src/lib/permission-definition.provider.ts","../../../../libs/modules/platform-dev-tools/client/src/lib/settings.provider.ts","../../../../libs/modules/platform-dev-tools/client/src/lib/features/platform-explorer/platform-explorer-tree.model.ts","../../../../libs/modules/platform-dev-tools/client/src/lib/features/platform-explorer/platform-explorer-data.service.ts","../../../../libs/modules/platform-dev-tools/client/src/lib/features/platform-explorer/detail/platform-explorer-module-detail.component.ts","../../../../libs/modules/platform-dev-tools/client/src/lib/features/platform-explorer/detail/platform-explorer-entity-detail.component.ts","../../../../libs/modules/platform-dev-tools/client/src/lib/features/platform-explorer/detail/platform-explorer-permissions-list-detail.component.ts","../../../../libs/modules/platform-dev-tools/client/src/lib/features/platform-explorer/detail/platform-explorer-features-list-detail.component.ts","../../../../libs/modules/platform-dev-tools/client/src/lib/features/platform-explorer/platform-explorer-detail.component.ts","../../../../libs/modules/platform-dev-tools/client/src/lib/features/platform-explorer/platform-explorer-page.component.ts","../../../../libs/modules/platform-dev-tools/client/src/lib/features/platform-explorer/platform-explorer-page.component.html","../../../../libs/modules/platform-dev-tools/client/src/lib/features/platform-explorer/platform-explorer-tree-node.component.ts","../../../../libs/modules/platform-dev-tools/client/src/lib/platform-dev-tools.module.ts","../../../../libs/modules/platform-dev-tools/client/src/acorex-platform-module-platform-dev-tools-client.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXPModuleManifest } from '@acorex-platform/framework-client/core';\nimport { RootConfig } from '@acorex-platform/module-platform-dev-tools-client/contracts';\n\n//#endregion\n\n//#region ---- Manifest Definition ----\n\n/**\n * Platform Dev Tools Module Manifest.\n * Development-only module for exploring platform structure (modules, entities, permissions, features).\n */\nexport const PlatformDevToolsManifest: 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 description: '@platform-dev-tools:module.description',\n required: false,\n};\n\n//#endregion\n","//#region ---- Imports ----\n\nimport {\n AXPPermissionDefinitionProvider,\n AXPPermissionDefinitionProviderContext,\n} from '@acorex-platform/framework-client/auth';\nimport {\n AXPCommonPermissionGroupKeys\n} from '@acorex-platform/module-common-client/contracts';\nimport {\n AXPApplicationsPlatformPermissionKeys\n} from '@acorex-platform/module-platform-dev-tools-client/contracts';\n\nimport { Injectable } from '@angular/core';\n\n//#endregion\n\n//#region ---- Permission Definition Provider ----\n\n/**\n * Registers UseDevTools under Applications & Platform.\n */\n@Injectable()\nexport class AXMPermissionDefinitionProvider implements AXPPermissionDefinitionProvider {\n async define(context: AXPPermissionDefinitionProviderContext): Promise<void> {\n const keys = AXPApplicationsPlatformPermissionKeys;\n const groups = AXPCommonPermissionGroupKeys;\n const P = '@common:applications-platform.permissions';\n const G = '@common:permission-groups';\n\n context.addGroup(groups.ApplicationsPlatform.Root, `${G}.applications-platform.title`, `${G}.applications-platform.description`, { order: 110 });\n\n context\n .addGroup(\n groups.ApplicationsPlatform.DevTools,\n `${G}.applications-platform-dev-tools.title`,\n `${G}.applications-platform-dev-tools.description`,\n { parent: groups.ApplicationsPlatform.Root, order: 40 },\n )\n .addPermission(keys.UseDevTools, `${P}.use-dev-tools.title`, `${P}.use-dev-tools.description`, {\n modules: ['PlatformDevTools'],\n requiredFeatures: ['PlatformDevTools'],\n })\n .endPermission()\n .endGroup();\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPSettingDefinitionProvider, AXPSettingDefinitionProviderContext } from '@acorex-platform/framework-client/common';\nimport { AXPWidgetsList } from '@acorex-platform/framework-shared/core';\nimport {\n AXPPlatformDevToolsSettings,\n AXP_PLATFORM_DEV_TOOLS_COMMUNICATION_DEBUG_REDIRECT_SECTION,\n} from '@acorex-platform/module-platform-dev-tools-client/contracts';\n\n//#endregion\n\n//#region ---- Setting Provider ----\n\n/**\n * Defines settings for Platform Dev Tools (developer-oriented options).\n */\nexport class AXPPlatformDevToolsSettingProvider implements AXPSettingDefinitionProvider {\n async provide(context: AXPSettingDefinitionProviderContext): Promise<void> {\n context\n .addGroup(\n 'platform-dev-tools',\n '@platform-dev-tools:settings.group.nav-title',\n '@platform-dev-tools:settings.group.description',\n 'fa-light fa-wrench',\n '@platform-dev-tools:settings.group.title',\n 999,\n )\n .addSection(\n 'developer',\n '@platform-dev-tools:settings.developer.title',\n '@platform-dev-tools:settings.developer.description',\n )\n .addSetting({\n key: AXPPlatformDevToolsSettings.DebugMode,\n title: '@platform-dev-tools:settings.developer.items.debug-mode.title',\n description: '@platform-dev-tools:settings.developer.items.debug-mode.description',\n scope: 'P',\n overridableAt: [],\n // Platform-only developer switch (same pattern as System Insight / Auth).\n isInherited: false,\n defaultValue: false,\n widget: {\n type: AXPWidgetsList.Editors.ToggleSwitch,\n },\n })\n .endSection()\n .addSection(\n AXP_PLATFORM_DEV_TOOLS_COMMUNICATION_DEBUG_REDIRECT_SECTION,\n '@platform-dev-tools:settings.communication-debug-redirect.title',\n '@platform-dev-tools:settings.communication-debug-redirect.description',\n )\n .endSection()\n .endGroup();\n }\n}\n\n//#endregion\n","//#region ---- Tree node types ----\n\nexport type PlatformExplorerNodeKind =\n | 'module'\n | 'entities'\n | 'entity'\n | 'permissions'\n | 'permission'\n | 'features'\n | 'feature';\n\nexport interface PlatformExplorerTreeNode {\n id: string;\n kind: PlatformExplorerNodeKind;\n label: string;\n moduleName?: string;\n /** i18n key for the module title (used for page title and breadcrumbs) */\n moduleTitle?: string;\n children?: PlatformExplorerTreeNode[];\n /** Optional payload for detail view */\n payload?: unknown;\n /** Item count for badge (e.g. entities count, permissions count, features count) */\n itemCount?: number;\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPEntityResolver } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPModuleManifestRegistry } from '@acorex-platform/framework-client/core';\nimport { AXPPermissionDefinitionService } from '@acorex-platform/framework-client/auth';\nimport { inject, Injectable } from '@angular/core';\nimport {\n PlatformExplorerTreeNode,\n} from './platform-explorer-tree.model';\nimport type { AXPFeatureDefinition } from '@acorex-platform/framework-client/core';\nimport type { AXPPermissionDefinition, AXPPermissionGroupDefinition } from '@acorex-platform/framework-client/auth';\n\n//#endregion\n\n//#region ---- Service ----\n\n@Injectable()\nexport class PlatformExplorerDataService {\n private readonly manifestRegistry = inject(AXPModuleManifestRegistry);\n private readonly entityResolver = inject(AXPEntityResolver);\n private readonly permissionService = inject(AXPPermissionDefinitionService);\n\n /**\n * Build only root-level module nodes (no children). Children are loaded on expand via getModuleChildren.\n * Includes all modules; use buildModulesOnlyFiltered() to exclude modules with no entities/permissions/features.\n */\n async buildModulesOnly(): Promise<PlatformExplorerTreeNode[]> {\n await this.manifestRegistry.initialize();\n const modules = this.manifestRegistry.getAll();\n const tree: PlatformExplorerTreeNode[] = modules.map((mod) => ({\n id: `module-${mod.name}`,\n kind: 'module' as const,\n label: mod.title,\n moduleName: mod.name,\n moduleTitle: mod.title,\n payload: mod,\n children: [],\n }));\n tree.sort((a, b) => {\n const nameA = (a.payload as { name?: string })?.name ?? a.moduleName ?? '';\n const nameB = (b.payload as { name?: string })?.name ?? b.moduleName ?? '';\n return nameA.localeCompare(nameB, undefined, { sensitivity: 'base' });\n });\n return tree;\n }\n\n /**\n * Build root-level module nodes, excluding modules that have no entities, permissions, or features.\n * Each module node gets itemCount = number of non-empty subcategories (for badge).\n */\n async buildModulesOnlyFiltered(): Promise<PlatformExplorerTreeNode[]> {\n const all = await this.buildModulesOnly();\n const filtered: PlatformExplorerTreeNode[] = [];\n for (const modNode of all) {\n const children = await this.getModuleChildren(modNode.id);\n if (children.length > 0) {\n filtered.push({\n ...modNode,\n itemCount: children.length,\n });\n }\n }\n return filtered;\n }\n\n /**\n * Load entities, permissions, and features for a module (called when module node is expanded or clicked).\n * Only includes subcategories that have at least one item. Returns empty array if module has no items.\n */\n async getModuleChildren(moduleId: string): Promise<PlatformExplorerTreeNode[]> {\n const moduleName = moduleId.startsWith('module-') ? moduleId.slice(7) : moduleId;\n const mod = this.manifestRegistry.get(moduleName);\n if (!mod) return [];\n const moduleTitle = mod.title;\n const [allEntries, permissions, features] = await Promise.all([\n this.entityResolver.listAll(),\n this.getPermissionsForModule(moduleName),\n Promise.resolve(this.getFeaturesForModule(moduleName)),\n ]);\n const moduleEntities = allEntries.filter((e) => e.module === moduleName);\n const permissionsCount = permissions.length;\n const featuresCount = features.length;\n const nodes: PlatformExplorerTreeNode[] = [];\n if (moduleEntities.length > 0) {\n nodes.push({\n id: `module-${moduleName}-entities`,\n kind: 'entities',\n label: '@platform-dev-tools:module.terms.entities',\n moduleName,\n moduleTitle,\n itemCount: moduleEntities.length,\n children: moduleEntities.map((e) => ({\n id: `entity-${moduleName}-${e.name}`,\n kind: 'entity' as const,\n label: e.name,\n moduleName,\n moduleTitle,\n payload: e,\n })),\n });\n }\n if (permissionsCount > 0) {\n nodes.push({\n id: `module-${moduleName}-permissions`,\n kind: 'permissions',\n label: '@platform-dev-tools:module.terms.permissions',\n moduleName,\n moduleTitle,\n itemCount: permissionsCount,\n });\n }\n if (featuresCount > 0) {\n nodes.push({\n id: `module-${moduleName}-features`,\n kind: 'features',\n label: '@platform-dev-tools:module.terms.features',\n moduleName,\n moduleTitle,\n itemCount: featuresCount,\n });\n }\n return nodes;\n }\n\n /**\n * Get all permissions for a module (for display in module detail).\n */\n async getPermissionsForModule(moduleName: string): Promise<AXPPermissionDefinition[]> {\n const groups = await this.permissionService.getGroups();\n return this.collectPermissionsForModule(groups, moduleName);\n }\n\n /**\n * Get all features for a module (for display in module detail).\n */\n getFeaturesForModule(moduleName: string): AXPFeatureDefinition[] {\n return this.manifestRegistry.getModuleFeatures(moduleName);\n }\n\n private collectPermissionsForModule(\n groups: AXPPermissionGroupDefinition[],\n moduleName: string\n ): AXPPermissionDefinition[] {\n const prefix = `${moduleName}:`;\n const out: AXPPermissionDefinition[] = [];\n const collect = (items: AXPPermissionDefinition[]) => {\n for (const p of items) {\n if (p.name.startsWith(prefix)) out.push(p);\n if (p.children?.length) collect(p.children);\n }\n };\n for (const g of groups) {\n if (g.name === moduleName) collect(g.permissions);\n }\n return out;\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, input, ViewEncapsulation } from '@angular/core';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport type { AXPModuleManifest } from '@acorex-platform/framework-client/core';\n\n//#endregion\n\n@Component({\n selector: 'axp-platform-explorer-module-detail',\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, AXTranslationModule],\n template: `\n @if (payload()) {\n <section class=\"axp-module-detail\">\n <h3 class=\"axp-module-detail__section-title\">\n {{ '@platform-dev-tools:module.terms.module-info' | translate | async }}\n </h3>\n <dl class=\"axp-detail-dl\">\n <dt>\n {{ '@platform-dev-tools:module.terms.name' | translate | async }}\n </dt>\n <dd>{{ payload()!.name }}</dd>\n\n <dt>\n {{ '@platform-dev-tools:module.terms.version' | translate | async }}\n </dt>\n <dd>{{ payload()!.version }}</dd>\n\n <dt>\n {{ '@platform-dev-tools:module.terms.title' | translate | async }}\n </dt>\n <dd>{{ payload()!.title }}</dd>\n\n @if (payload()!.description) {\n <dt>\n {{ '@platform-dev-tools:module.terms.description' | translate | async }}\n </dt>\n <dd>{{ payload()!.description }}</dd>\n }\n\n @if (payload()!.i18n) {\n <dt>i18n</dt>\n <dd>{{ payload()!.i18n }}</dd>\n }\n\n @if (payload()!.required !== undefined) {\n <dt>\n {{ '@platform-dev-tools:module.terms.required' | translate | async }}\n </dt>\n <dd>{{ payload()!.required }}</dd>\n }\n </dl>\n </section>\n }\n `,\n styles: [\n `@reference '@acorex/styles/themes/default.css';\n\n .axp-module-detail { margin-bottom: 24px; }\n .axp-module-detail__section-title { margin: 0 0 12px 0; font-size: 15px; font-weight: 600; }\n .axp-detail-dl { display: grid; grid-template-columns: auto 1fr; gap: 4px 16px; margin: 0; }\n .axp-detail-dl dt { font-weight: 600; color: var(--ax-neutral-text-secondary, #666); }\n .axp-detail-dl dd { margin: 0; }\n `,\n ],\n})\nexport class AXPlatformExplorerModuleDetailComponent {\n payload = input<AXPModuleManifest | undefined>();\n}\n","//#region ---- Imports ----\n\nimport type { AXPEntity } from '@acorex-platform/framework-shared/entity';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, effect, inject, input, signal, ViewEncapsulation } from '@angular/core';\n\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPEntityResolver } from '@acorex-platform/framework-client/layout/entity';\nimport type { AXPEntityListEntry } from '@acorex-platform/framework-client/layout/entity';\n\n//#endregion\n\nfunction isListEntry(p: AXPEntity | AXPEntityListEntry): p is AXPEntityListEntry {\n return p != null && 'fullName' in p && !('properties' in p);\n}\n\n@Component({\n selector: 'axp-platform-explorer-entity-detail',\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, AXTranslationModule],\n host: { class: 'flex flex-col flex-1 min-h-0' },\n template: `\n <div class=\"flex flex-col flex-1 min-h-0 pt-0 overflow-auto\">\n @if (entity(); as e) {\n <dl class=\"grid grid-cols-[auto_1fr] gap-x-4 gap-y-1 mb-3 m-0\">\n <dt class=\"font-semibold text-muted\">{{ '@platform-dev-tools:module.terms.module' | translate | async }}</dt><dd class=\"m-0\">{{ e.module }}</dd>\n <dt class=\"font-semibold text-muted\">{{ '@platform-dev-tools:module.terms.name' | translate | async }}</dt><dd class=\"m-0\">{{ e.name }}</dd>\n @if (e.title) {\n <dt class=\"font-semibold text-muted\">{{ '@platform-dev-tools:module.terms.title' | translate | async }}</dt><dd class=\"m-0\">{{ e.title | translate | async}}</dd>\n }\n @if (e.formats.plural) {\n <dt class=\"font-semibold text-muted\">{{ '@platform-dev-tools:module.terms.plural' | translate | async }}</dt><dd class=\"m-0\">{{ e.formats.plural | translate | async}}</dd>\n }\n </dl>\n @if (e.properties && e.properties.length > 0) {\n <p class=\"mb-2 mt-3 font-bold\">{{ '@platform-dev-tools:module.terms.properties' | translate | async }} ({{ e.properties.length }})</p>\n <div class=\"flex-1 min-h-0 overflow-auto border border-lightest rounded-md\">\n <table class=\"w-full border-collapse text-[13px]\">\n <thead>\n <tr>\n <th class=\"text-start p-2 px-3 bg-lighter font-semibold border-b border-lightest\">{{ '@platform-dev-tools:module.terms.name' | translate | async }}</th>\n <th class=\"text-start p-2 px-3 bg-lighter font-semibold border-b border-lightest\">{{ '@platform-dev-tools:module.terms.title' | translate | async }}</th>\n <th class=\"text-start p-2 px-3 bg-lighter font-semibold border-b border-lightest\">{{ '@platform-dev-tools:module.terms.type' | translate | async }}</th>\n <th class=\"text-start p-2 px-3 bg-lighter font-semibold border-b border-lightest\">{{ '@platform-dev-tools:module.terms.description' | translate | async }}</th>\n </tr>\n </thead>\n <tbody class=\"axp-entity-detail-tbody\">\n @for (p of e.properties; track p.name) {\n <tr>\n <td class=\"p-2 px-3 border-b border-lightest\"><code class=\"text-xs bg-lighter px-1.5 py-0.5 rounded\">{{ p.name }}</code></td>\n <td class=\"p-2 px-3 border-b border-lightest\">{{ p.title | translate | async }}</td>\n <td class=\"p-2 px-3 border-b border-lightest\">{{ p.schema.dataType }}</td>\n <td class=\"p-2 px-3 border-b border-lightest\">@if (p.description) { {{ p.description | translate | async }} } @else { – }</td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n } @else if (loading()) {\n <p class=\"m-0 text-muted\">{{ '@platform-dev-tools:module.terms.loading-entity' | translate | async }}</p>\n }\n </div>\n `,\n styles: [\n `@reference '@acorex/styles/themes/default.css';\n\n .axp-entity-detail-tbody tr:last-child td { border-bottom: none; }\n `,\n ],\n})\nexport class AXPlatformExplorerEntityDetailComponent {\n payload = input<AXPEntity | AXPEntityListEntry | undefined>();\n\n protected readonly entity = signal<AXPEntity | null>(null);\n protected readonly loading = signal(false);\n\n private readonly entityResolver = inject(AXPEntityResolver);\n\n constructor() {\n effect(() => {\n const p = this.payload();\n if (!p) {\n this.entity.set(null);\n this.loading.set(false);\n return;\n }\n if (isListEntry(p)) {\n this.loading.set(true);\n this.entity.set(null);\n this.entityResolver.get(p.module, p.name).then((e) => {\n if (this.payload() === p) {\n this.entity.set(e ?? null);\n }\n this.loading.set(false);\n });\n } else {\n this.entity.set(p);\n this.loading.set(false);\n }\n });\n }\n}\n","//#region ---- Imports ----\n\nimport { CommonModule } from '@angular/common';\nimport { AXDataSource, AXDataSourceQuery } from '@acorex/cdk/common';\nimport { AXDataTableModule } from '@acorex/components/data-table';\nimport {\n ChangeDetectionStrategy,\n Component,\n effect,\n inject,\n input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport type { AXPPermissionDefinition } from '@acorex-platform/framework-client/auth';\nimport { PlatformExplorerDataService } from '../platform-explorer-data.service';\n\n//#endregion\n\n@Component({\n selector: 'axp-platform-explorer-permissions-list-detail',\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, AXDataTableModule, AXTranslationModule],\n host: { class: 'flex flex-col flex-1 min-h-0' },\n template: `\n <div class=\"flex flex-1 min-h-0 pt-0 overflow-auto\">\n <ax-data-table\n class=\"flex-1 border border-lightest rounded-md overflow-hidden\"\n [paging]=\"true\"\n [allowReordering]=\"true\"\n [dataSource]=\"dataSource\"\n >\n <ax-text-column [dataField]=\"'name'\" [caption]=\"'@platform-dev-tools:module.terms.name' | translate | async\" [width]=\"'420px'\" [allowResizing]=\"true\"></ax-text-column>\n <ax-text-column [dataField]=\"'title'\" [caption]=\"'@platform-dev-tools:module.terms.title' | translate | async\" [cellTemplate]=\"titleTpl\" [width]=\"'260px'\" [allowResizing]=\"true\"></ax-text-column>\n <ax-text-column [dataField]=\"'description'\" [caption]=\"'@platform-dev-tools:module.terms.description' | translate | async\" [cellTemplate]=\"descTpl\" [width]=\"'380px'\" [allowResizing]=\"true\"></ax-text-column>\n </ax-data-table>\n </div>\n <ng-template #titleTpl let-item>\n {{ $safeNavigationMigration(item.data?.title) | translate | async }}</ng-template>\n <ng-template #descTpl let-item>\n @if (item.data?.description) { {{ item.data.description | translate | async }} } @else { – }\n </ng-template>\n `,\n})\nexport class AXPlatformExplorerPermissionsListDetailComponent {\n moduleName = input.required<string>();\n private readonly dataService = inject(PlatformExplorerDataService);\n\n readonly dataSource = new AXDataSource<AXPPermissionDefinition>({\n key: 'name',\n pageSize: 20,\n load: async (e: AXDataSourceQuery) => {\n const name = this.moduleName();\n if (!name) return { items: [], total: 0 };\n const list = await this.dataService.getPermissionsForModule(name);\n const skip = e?.skip ?? 0;\n const take = e?.take ?? 20;\n const items = list.slice(skip, skip + take);\n return { items, total: list.length };\n },\n });\n\n constructor() {\n effect(() => {\n this.moduleName();\n this.dataSource.refresh();\n });\n }\n}\n","//#region ---- Imports ----\n\nimport { CommonModule } from '@angular/common';\nimport { AXDataSource, AXDataSourceQuery } from '@acorex/cdk/common';\nimport { AXDataTableModule } from '@acorex/components/data-table';\nimport {\n ChangeDetectionStrategy,\n Component,\n effect,\n inject,\n input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport type { AXPFeatureDefinition } from '@acorex-platform/framework-client/core';\nimport { PlatformExplorerDataService } from '../platform-explorer-data.service';\n\n//#endregion\n\n@Component({\n selector: 'axp-platform-explorer-features-list-detail',\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, AXDataTableModule, AXTranslationModule],\n host: { class: 'flex flex-col flex-1 min-h-0' },\n template: `\n <div class=\"flex flex-1 min-h-0 pt-0 overflow-auto\">\n <ax-data-table\n class=\"flex-1 border border-lightest rounded-md overflow-hidden\"\n [paging]=\"true\"\n [allowReordering]=\"true\"\n [dataSource]=\"dataSource\"\n >\n <ax-text-column dataField=\"key\" [caption]=\"'@platform-dev-tools:module.terms.key' | translate | async\" [width]=\"'240px'\" [allowResizing]=\"true\"></ax-text-column>\n <ax-text-column dataField=\"title\" [caption]=\"'@platform-dev-tools:module.terms.title' | translate | async\" [cellTemplate]=\"titleTpl\" [width]=\"'280px'\" [allowResizing]=\"true\"></ax-text-column>\n <ax-text-column dataField=\"type\" caption=\"Type\" [width]=\"'100px'\" [cellTemplate]=\"typeTpl\" [allowResizing]=\"true\"></ax-text-column>\n <ax-text-column dataField=\"description\" [caption]=\"'@platform-dev-tools:module.terms.description' | translate | async\" [cellTemplate]=\"descTpl\" [width]=\"'340px'\" [allowResizing]=\"true\"></ax-text-column>\n <ax-text-column dataField=\"defaultValue\" [caption]=\"'@platform-dev-tools:module.terms.default-value' | translate | async\" [width]=\"'140px'\" [allowResizing]=\"true\"></ax-text-column>\n </ax-data-table>\n </div>\n <ng-template #titleTpl let-item>{{ $safeNavigationMigration(item.data?.title) | translate | async }}</ng-template>\n <ng-template #typeTpl let-item>{{ item.data?.type ?? '–' }}</ng-template>\n <ng-template #descTpl let-item>@if (item.data?.description) { {{ item.data.description | translate | async }} } @else { – }</ng-template>\n `,\n})\nexport class AXPlatformExplorerFeaturesListDetailComponent {\n moduleName = input.required<string>();\n private readonly dataService = inject(PlatformExplorerDataService);\n\n readonly dataSource = new AXDataSource<AXPFeatureDefinition>({\n key: 'name',\n pageSize: 20,\n load: (e: AXDataSourceQuery) => {\n const name = this.moduleName();\n if (!name) return Promise.resolve({ items: [], total: 0 });\n const list = this.dataService.getFeaturesForModule(name);\n const skip = e?.skip ?? 0;\n const take = e?.take ?? 20;\n const items = list.slice(skip, skip + take);\n return Promise.resolve({ items, total: list.length });\n },\n });\n\n constructor() {\n effect(() => {\n this.moduleName();\n this.dataSource.refresh();\n });\n }\n}\n","//#region ---- Imports ----\n\nimport { ChangeDetectionStrategy, Component, input, ViewEncapsulation } from '@angular/core';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { PlatformExplorerTreeNode } from './platform-explorer-tree.model';\nimport { AXPlatformExplorerModuleDetailComponent } from './detail/platform-explorer-module-detail.component';\nimport { AXPlatformExplorerEntityDetailComponent } from './detail/platform-explorer-entity-detail.component';\nimport { AXPlatformExplorerPermissionsListDetailComponent } from './detail/platform-explorer-permissions-list-detail.component';\nimport { AXPlatformExplorerFeaturesListDetailComponent } from './detail/platform-explorer-features-list-detail.component';\n\n//#endregion\n\n//#region ---- Component ----\n\n@Component({\n selector: 'axp-platform-explorer-detail',\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'flex flex-col flex-1 min-h-0' },\n imports: [\n AXTranslationModule,\n AXPlatformExplorerModuleDetailComponent,\n AXPlatformExplorerEntityDetailComponent,\n AXPlatformExplorerPermissionsListDetailComponent,\n AXPlatformExplorerFeaturesListDetailComponent\n],\n template: `\n <div class=\"flex flex-col flex-1 min-h-0\">\n @switch (node().kind) {\n @case ('module') {\n <axp-platform-explorer-module-detail [payload]=\"$any(node().payload)\" />\n }\n @case ('entity') {\n <axp-platform-explorer-entity-detail [payload]=\"$any(node().payload)\" />\n }\n @case ('permissions') {\n <axp-platform-explorer-permissions-list-detail [moduleName]=\"node().moduleName!\" />\n }\n @case ('features') {\n <axp-platform-explorer-features-list-detail [moduleName]=\"node().moduleName!\" />\n }\n @default {\n <p class=\"axp-detail__hint\">{{ node().children?.length ?? 0 }} items.</p>\n }\n }\n </div>\n `,\n styles: [\n `@reference '@acorex/styles/themes/default.css';\n\n .axp-detail__hint { margin: 0; color: var(--ax-neutral-text-secondary, #666); }\n `,\n ],\n})\nexport class AXPlatformExplorerDetailComponent {\n node = input.required<PlatformExplorerTreeNode>();\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n inject,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n AXTreeViewComponent,\n AXTreeViewNode,\n AXTreeViewNodeSelectEvent,\n AXTreeViewNodeToggleEvent,\n} from '@acorex/components/tree-view';\nimport { AXPBreadcrumbItem } from '@acorex-platform/framework-shared/core';\n\nimport {\n AXPPageLayoutBase,\n AXPPageLayoutBaseComponent,\n AXPPageLayoutComponent,\n} from '@acorex-platform/framework-client/layout/views';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport {\n AXPThemeLayoutBlockComponent,\n AXPThemeLayoutHeaderComponent,\n AXPThemeLayoutStartSideComponent,\n} from '@acorex-platform/framework-client/layout/components';\nimport { PlatformExplorerDataService } from './platform-explorer-data.service';\nimport { PlatformExplorerTreeNode } from './platform-explorer-tree.model';\nimport { AXPlatformExplorerDetailComponent } from './platform-explorer-detail.component';\n\n//#endregion\n\n//#region ---- Convert tree to AXTreeViewNode ----\n\nfunction toTreeViewNodes(\n nodes: PlatformExplorerTreeNode[],\n markModuleExpandable = false\n): AXTreeViewNode[] {\n return nodes.map((n) => {\n const children = n.children ?? [];\n const hasChildren = children.length > 0;\n const axNode: AXTreeViewNode = {\n id: n.id,\n title: n.label,\n children: hasChildren ? toTreeViewNodes(children, false) : undefined,\n data: { treeNode: n },\n };\n if (markModuleExpandable && n.kind === 'module' && !hasChildren) {\n (axNode as Record<string, unknown>)['childrenCount'] = 3;\n }\n return axNode;\n });\n}\n\n//#endregion\n\n//#region ---- Component ----\n\n@Component({\n selector: 'axp-platform-explorer-page',\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n AXTranslationModule,\n AXPPageLayoutComponent,\n AXPThemeLayoutStartSideComponent,\n AXPThemeLayoutHeaderComponent,\n AXPThemeLayoutBlockComponent,\n AXTreeViewComponent,\n AXPlatformExplorerDetailComponent,\n ],\n providers: [\n PlatformExplorerDataService,\n {\n provide: AXPPageLayoutBase,\n useExisting: AXPlatformExplorerPageComponent,\n },\n ],\n templateUrl: './platform-explorer-page.component.html',\n styleUrl: './platform-explorer-page.component.css',\n})\nexport class AXPlatformExplorerPageComponent extends AXPPageLayoutBaseComponent {\n protected readonly dataService = inject(PlatformExplorerDataService);\n\n readonly loading = signal(true);\n readonly selectedNode = signal<PlatformExplorerTreeNode | null>(null);\n protected readonly moduleNodes = signal<PlatformExplorerTreeNode[]>([]);\n protected readonly tree = viewChild<AXTreeViewComponent>('tree');\n\n constructor() {\n super();\n this.initializeModules();\n }\n\n /** Datasource for tree: root = modules only; children loaded when module is expanded. */\n protected datasource = async (parentId?: string): Promise<AXTreeViewNode[]> => {\n if (!parentId) {\n const nodes = this.moduleNodes();\n return toTreeViewNodes(nodes, true);\n }\n const children = await this.dataService.getModuleChildren(parentId);\n return toTreeViewNodes(children, false);\n };\n\n private async initializeModules(): Promise<void> {\n this.loading.set(true);\n try {\n const nodes = await this.dataService.buildModulesOnlyFiltered();\n this.moduleNodes.set(nodes);\n } finally {\n this.loading.set(false);\n }\n }\n\n override async getPageTitle(): Promise<string> {\n const node = this.selectedNode();\n if (!node) {\n return this.translateService.translateAsync('@platform-dev-tools:module.title');\n }\n const moduleTitleKey = node.moduleTitle ?? node.label;\n const moduleTitle = await this.translateService.translateAsync(moduleTitleKey);\n const contextParts: string[] = [];\n switch (node.kind) {\n case 'module':\n return moduleTitle;\n case 'entities':\n contextParts.push(await this.translateService.translateAsync('@platform-dev-tools:module.terms.entities'));\n break;\n case 'entity':\n contextParts.push(await this.translateService.translateAsync('@platform-dev-tools:module.terms.entities'));\n contextParts.push(node.label);\n break;\n case 'permissions':\n contextParts.push(await this.translateService.translateAsync('@platform-dev-tools:module.terms.permissions'));\n break;\n case 'features':\n contextParts.push(await this.translateService.translateAsync('@platform-dev-tools:module.terms.features'));\n break;\n default:\n return moduleTitle;\n }\n return [moduleTitle, ...contextParts].join(' - ');\n }\n\n override getPageDescription(): string | null | Promise<string | null> {\n const node = this.selectedNode();\n if (!node) return null;\n const key = this.descriptionKeyForKind(node.kind);\n return key ? this.translateService.translateAsync(key) : null;\n }\n\n override getPageBreadcrumbs(): AXPBreadcrumbItem[] | Promise<AXPBreadcrumbItem[]> {\n const node = this.selectedNode();\n const items: AXPBreadcrumbItem[] = [\n { title: '@platform-dev-tools:module.menus.platform-explorer.title' },\n ];\n if (node?.moduleTitle) {\n items.push({ title: node.moduleTitle });\n }\n return items;\n }\n\n private descriptionKeyForKind(kind: PlatformExplorerTreeNode['kind']): string | null {\n switch (kind) {\n case 'module':\n return '@platform-dev-tools:module.descriptions.module';\n case 'entities':\n return '@platform-dev-tools:module.descriptions.entities';\n case 'entity':\n return '@platform-dev-tools:module.descriptions.entity';\n case 'permissions':\n return '@platform-dev-tools:module.descriptions.permissions';\n case 'features':\n return '@platform-dev-tools:module.descriptions.features';\n default:\n return null;\n }\n }\n\n protected onNodeClick(event: AXTreeViewNodeSelectEvent): void {\n const node = event.node;\n const data = node?.['data'] as { treeNode?: PlatformExplorerTreeNode } | undefined;\n const treeNode = data?.treeNode;\n if (treeNode) {\n this.selectedNode.set(treeNode);\n this.recompute();\n // When a module node is clicked, expand it so the tree loads its children (entities, permissions, features)\n if (treeNode.kind === 'module') {\n const treeRef = this.tree();\n if (treeRef && typeof (treeRef as unknown as { expandNode?: (id: string) => void }).expandNode === 'function') {\n (treeRef as unknown as { expandNode: (id: string) => void }).expandNode(treeNode.id);\n }\n }\n }\n }\n\n protected onNodeToggle(_event: AXTreeViewNodeToggleEvent): void {\n // Tree loads children via datasource(parentId) when a node is expanded; no extra work needed.\n }\n}\n\n//#endregion\n","<axp-page-layout>\n <axp-layout-start-side>\n <axp-layout-header>\n <axp-layout-title>{{ '@platform-dev-tools:module.menus.platform-explorer.title' | translate | async\n }}</axp-layout-title>\n </axp-layout-header>\n <axp-layout-content class=\"axp-platform-explorer__tree-wrap\">\n @if (loading()) {\n <p class=\"axp-platform-explorer__loading\">Loading...</p>\n } @else if (moduleNodes().length === 0) {\n <p class=\"axp-platform-explorer__empty\">{{ '@platform-dev-tools:module.messages.no-modules' | translate | async }}\n </p>\n } @else {\n <ax-tree-view #tree [datasource]=\"datasource\" [selectMode]=\"'single'\" [showIcons]=\"false\"\n [showChildrenBadge]=\"true\" [dragBehavior]=\"'none'\" look=\"default\" [nodeTemplate]=\"nodeTemplate\"\n (onNodeClick)=\"onNodeClick($event)\" (onNodeToggle)=\"onNodeToggle($event)\" />\n }\n </axp-layout-content>\n </axp-layout-start-side>\n\n <axp-page-content class=\"min-h-0 pt-0\">\n @if (selectedNode()) {\n <axp-platform-explorer-detail [node]=\"selectedNode()!\" />\n } @else {\n <p class=\"axp-platform-explorer__hint\">{{ '@platform-dev-tools:module.messages.select-node' | translate | async }}\n </p>\n }\n </axp-page-content>\n</axp-page-layout>\n\n<!-- Node template: icon per kind (with color) + label (translated) + badge -->\n<ng-template #nodeTemplate let-node=\"node\">\n @let data = node['data'];\n @let treeNode = $safeNavigationMigration(data?.treeNode);\n @let kind = $safeNavigationMigration(treeNode?.kind);\n @let count = node['childrenCount'] ?? treeNode?.itemCount;\n <span class=\"axp-platform-explorer__node\">\n @switch (kind) {\n @case ('module') {\n <i class=\"axp-platform-explorer__node-icon axp-platform-explorer__node-icon--module fa-light fa-cube\"\n aria-hidden=\"true\"></i>\n }\n @case ('entities') {\n <i class=\"axp-platform-explorer__node-icon axp-platform-explorer__node-icon--entities fa-light fa-table-list\"\n aria-hidden=\"true\"></i>\n }\n @case ('entity') {\n <i class=\"axp-platform-explorer__node-icon axp-platform-explorer__node-icon--entity fa-light fa-table\"\n aria-hidden=\"true\"></i>\n }\n @case ('permissions') {\n <i class=\"axp-platform-explorer__node-icon axp-platform-explorer__node-icon--permissions fa-light fa-shield-halved\"\n aria-hidden=\"true\"></i>\n }\n @case ('features') {\n <i class=\"axp-platform-explorer__node-icon axp-platform-explorer__node-icon--features fa-light fa-sliders\"\n aria-hidden=\"true\"></i>\n }\n @default {\n <i class=\"axp-platform-explorer__node-icon axp-platform-explorer__node-icon--default fa-light fa-circle-dot\"\n aria-hidden=\"true\"></i>\n }\n }\n <span class=\"axp-platform-explorer__node-label\">{{ node['title'] | translate | async }}</span>\n @if (count != null && count > 0) {\n <span class=\"axp-platform-explorer__node-badge\">{{ count }}</span>\n }\n </span>\n</ng-template>","//#region ---- Imports ----\n\nimport {\n ChangeDetectionStrategy,\n Component,\n input,\n output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { PlatformExplorerTreeNode } from './platform-explorer-tree.model';\n\n//#endregion\n\n//#region ---- Component ----\n\n@Component({\n selector: 'axp-platform-explorer-tree-node',\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXPlatformExplorerTreeNodeComponent],\n template: `\n <div class=\"axp-tree-node\" [class.axp-tree-node--selected]=\"isSelected()\">\n <button\n type=\"button\"\n class=\"axp-tree-node__toggler\"\n [class.axp-tree-node__toggler--open]=\"expanded()\"\n [attr.aria-expanded]=\"expanded()\"\n (click)=\"toggle()\"\n >\n @if (hasChildren()) {\n <span class=\"axp-tree-node__icon\" aria-hidden=\"true\">{{ expanded() ? '▼' : '▶' }}</span>\n } @else {\n <span class=\"axp-tree-node__icon axp-tree-node__icon--empty\"></span>\n }\n </button>\n <button\n type=\"button\"\n class=\"axp-tree-node__label\"\n (click)=\"select()\"\n >\n {{ node().label }}\n @if (childrenLength() > 0) {\n <span class=\"axp-tree-node__badge\">({{ childrenLength() }})</span>\n }\n </button>\n </div>\n @if (hasChildren() && expanded()) {\n <div class=\"axp-tree-node__children\">\n @for (child of node().children ?? []; track child.id) {\n <axp-platform-explorer-tree-node\n [node]=\"child\"\n [selectedId]=\"selectedId()\"\n (nodeSelect)=\"nodeSelect.emit($event)\"\n />\n }\n </div>\n }\n `,\n styles: [\n `@reference '@acorex/styles/themes/default.css';\n\n :host {\n display: block;\n }\n .axp-tree-node {\n display: flex;\n align-items: center;\n min-height: 28px;\n }\n .axp-tree-node--selected .axp-tree-node__label {\n font-weight: 600;\n background: var(--ax-neutral-surface-hover, rgba(0, 0, 0, 0.04));\n }\n .axp-tree-node__toggler {\n width: 24px;\n height: 28px;\n padding: 0;\n border: none;\n background: none;\n cursor: pointer;\n color: var(--ax-neutral-text-secondary, #666);\n flex-shrink: 0;\n }\n .axp-tree-node__toggler--open .axp-tree-node__icon {\n transform: rotate(0);\n }\n .axp-tree-node__icon {\n font-size: 10px;\n display: inline-block;\n }\n .axp-tree-node__icon--empty {\n width: 10px;\n }\n .axp-tree-node__label {\n flex: 1;\n text-align: start;\n padding: 4px 8px;\n border: none;\n background: none;\n cursor: pointer;\n font-size: 13px;\n border-radius: 4px;\n }\n .axp-tree-node__label:hover {\n background: var(--ax-neutral-surface-hover, rgba(0, 0, 0, 0.04));\n }\n .axp-tree-node__badge {\n margin-inline-start: 4px;\n font-size: 11px;\n color: var(--ax-neutral-text-secondary, #666);\n font-weight: normal;\n }\n .axp-tree-node__children {\n padding-inline-start: 16px;\n }\n `,\n ],\n})\nexport class AXPlatformExplorerTreeNodeComponent {\n node = input.required<PlatformExplorerTreeNode>();\n selectedId = input<string | null>(null);\n nodeSelect = output<PlatformExplorerTreeNode>();\n\n readonly expanded = signal(true);\n\n childrenLength(): number {\n return this.node().children?.length ?? 0;\n }\n\n hasChildren(): boolean {\n const children = this.node().children;\n return !!children && children.length > 0;\n }\n\n isSelected(): boolean {\n return this.selectedId() === this.node().id;\n }\n\n toggle(): void {\n if (this.hasChildren()) {\n this.expanded.update((v) => !v);\n }\n }\n\n select(): void {\n this.nodeSelect.emit(this.node());\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXP_MODULE_MANIFEST_PROVIDER, provideLazyProvider } from '@acorex-platform/framework-client/core';\nimport { AXP_MENU_PROVIDER, AXP_SETTING_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/common';\nimport { AXPAuthGuard, AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/auth';\nimport { AXPRootLayoutComponent } from '@acorex-platform/framework-client/themes/default';\nimport { NgModule } from '@angular/core';\nimport { ROUTES, Routes } from '@angular/router';\nimport { PlatformDevToolsManifest } from './manifest';\nimport { AXMPlatformDevToolsMenuProvider } from './menu.provider';\nimport { AXMPermissionDefinitionProvider } from './permission-definition.provider';\nimport { AXPPlatformDevToolsSettingProvider } from './settings.provider';\nimport { AXPlatformExplorerPageComponent } from './features/platform-explorer';\n\n//#endregion\n\n//#region ---- Routes ----\n\nfunction routesFactory(): Routes {\n return [\n {\n path: ':app/dev/platform-explorer',\n canActivate: [AXPAuthGuard],\n data: { rootLayout: true },\n loadComponent: () => AXPRootLayoutComponent,\n children: [\n {\n path: '',\n loadComponent: () => AXPlatformExplorerPageComponent,\n data: { reuse: true },\n },\n ],\n },\n ];\n}\n\n//#endregion\n\n//#region ---- Module ----\n\n@NgModule({\n imports: [],\n exports: [],\n declarations: [],\n providers: [\n {\n provide: AXP_MODULE_MANIFEST_PROVIDER,\n useValue: PlatformDevToolsManifest,\n multi: true,\n },\n {\n provide: AXP_PERMISSION_DEFINITION_PROVIDER,\n useClass: AXMPermissionDefinitionProvider,\n multi: true,\n },\n provideLazyProvider(AXP_MENU_PROVIDER, () =>\n import('./menu.provider').then(m => m.AXMPlatformDevToolsMenuProvider),\n ),\n {\n provide: AXP_SETTING_DEFINITION_PROVIDER,\n useClass: AXPPlatformDevToolsSettingProvider,\n multi: true,\n },\n {\n provide: ROUTES,\n multi: true,\n useFactory: routesFactory,\n },\n ],\n})\nexport class AXMPlatformDevToolsModule { }\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3"],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@acorex-platform/module-platform-dev-tools-client",
|
|
3
|
+
"version": "0.0.21",
|
|
4
|
+
"sideEffects": false,
|
|
5
|
+
"peerDependencies": {
|
|
6
|
+
"@angular/common": "^21.0.0",
|
|
7
|
+
"@angular/core": "^21.0.0"
|
|
8
|
+
},
|
|
9
|
+
"dependencies": {
|
|
10
|
+
"tslib": "^2.3.0"
|
|
11
|
+
},
|
|
12
|
+
"module": "fesm2022/acorex-platform-module-platform-dev-tools-client.mjs",
|
|
13
|
+
"typings": "types/acorex-platform-module-platform-dev-tools-client.d.ts",
|
|
14
|
+
"exports": {
|
|
15
|
+
"./package.json": {
|
|
16
|
+
"default": "./package.json"
|
|
17
|
+
},
|
|
18
|
+
".": {
|
|
19
|
+
"types": "./types/acorex-platform-module-platform-dev-tools-client.d.ts",
|
|
20
|
+
"default": "./fesm2022/acorex-platform-module-platform-dev-tools-client.mjs"
|
|
21
|
+
},
|
|
22
|
+
"./contracts": {
|
|
23
|
+
"types": "./types/acorex-platform-module-platform-dev-tools-client-contracts.d.ts",
|
|
24
|
+
"default": "./fesm2022/acorex-platform-module-platform-dev-tools-client-contracts.mjs"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"type": "module"
|
|
28
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
declare const AXPPlatformDevToolsMenuKeys: {
|
|
2
|
+
readonly Root: "platform-dev-tools.root";
|
|
3
|
+
readonly PlatformExplorer: "platform-dev-tools.platform-explorer";
|
|
4
|
+
};
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Applications & Platform capabilities used by this module.
|
|
8
|
+
* Domain capability keys for this module. Root groups live in `AXPCommonPermissionGroupKeys` (common contracts).
|
|
9
|
+
*/
|
|
10
|
+
declare const AXPApplicationsPlatformPermissionKeys: {
|
|
11
|
+
readonly Access: "ApplicationsPlatform:Permission:Access";
|
|
12
|
+
readonly MaintainApplications: "ApplicationsPlatform:Permission:MaintainApplications";
|
|
13
|
+
readonly MaintainTenants: "ApplicationsPlatform:Permission:MaintainTenants";
|
|
14
|
+
readonly MaintainPlatformShell: "ApplicationsPlatform:Permission:MaintainPlatformShell";
|
|
15
|
+
readonly MaintainLandingPages: "ApplicationsPlatform:Permission:MaintainLandingPages";
|
|
16
|
+
readonly MaintainIdentifiers: "ApplicationsPlatform:Permission:MaintainIdentifiers";
|
|
17
|
+
readonly MaintainTenantSettings: "ApplicationsPlatform:Permission:MaintainTenantSettings";
|
|
18
|
+
readonly MaintainPlatformSettings: "ApplicationsPlatform:Permission:MaintainPlatformSettings";
|
|
19
|
+
readonly MaintainLocales: "ApplicationsPlatform:Permission:MaintainLocales";
|
|
20
|
+
readonly UseDevTools: "ApplicationsPlatform:Permission:UseDevTools";
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* @deprecated Prefer {@link AXPApplicationsPlatformPermissionKeys}.
|
|
24
|
+
* Legacy nested shape kept so existing imports compile during migration.
|
|
25
|
+
*/
|
|
26
|
+
declare const AXMPermissionsKeys: {
|
|
27
|
+
readonly PlatformDevTools: {
|
|
28
|
+
readonly PlatformExplorer: {
|
|
29
|
+
readonly View: "ApplicationsPlatform:Permission:UseDevTools";
|
|
30
|
+
};
|
|
31
|
+
readonly AllowDebug: "ApplicationsPlatform:Permission:UseDevTools";
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
/** Setting keys for the Platform Dev Tools module. */
|
|
36
|
+
declare enum AXPPlatformDevToolsSettings {
|
|
37
|
+
/** When enabled, exposes additional diagnostic behavior for developers (debug mode). */
|
|
38
|
+
DebugMode = "PlatformDevTools:Setting:Developer.DebugMode"
|
|
39
|
+
}
|
|
40
|
+
declare const AXP_PLATFORM_DEV_TOOLS_SETTINGS_GROUP = "platform-dev-tools";
|
|
41
|
+
declare const AXP_PLATFORM_DEV_TOOLS_COMMUNICATION_DEBUG_REDIRECT_SECTION = "communication-debug-redirect";
|
|
42
|
+
|
|
43
|
+
declare const RootConfig: {
|
|
44
|
+
config: {
|
|
45
|
+
i18n: string;
|
|
46
|
+
};
|
|
47
|
+
module: {
|
|
48
|
+
route: string;
|
|
49
|
+
module: string;
|
|
50
|
+
name: string;
|
|
51
|
+
title: string;
|
|
52
|
+
icon: string;
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
export { AXMPermissionsKeys, AXPApplicationsPlatformPermissionKeys, AXPPlatformDevToolsMenuKeys, AXPPlatformDevToolsSettings, AXP_PLATFORM_DEV_TOOLS_COMMUNICATION_DEBUG_REDIRECT_SECTION, AXP_PLATFORM_DEV_TOOLS_SETTINGS_GROUP, RootConfig };
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { AXPModuleManifest, AXPFeatureDefinition } from '@acorex-platform/framework-client/core';
|
|
3
|
+
import { AXPPermissionDefinitionProvider, AXPPermissionDefinitionProviderContext, AXPPermissionDefinition } from '@acorex-platform/framework-client/auth';
|
|
4
|
+
import { AXTreeViewComponent, AXTreeViewNode, AXTreeViewNodeSelectEvent, AXTreeViewNodeToggleEvent } from '@acorex/components/tree-view';
|
|
5
|
+
import { AXPBreadcrumbItem } from '@acorex-platform/framework-shared/core';
|
|
6
|
+
import { AXPPageLayoutBaseComponent } from '@acorex-platform/framework-client/layout/views';
|
|
7
|
+
import { AXPEntity } from '@acorex-platform/framework-shared/entity';
|
|
8
|
+
import { AXPEntityListEntry } from '@acorex-platform/framework-client/layout/entity';
|
|
9
|
+
import { AXDataSource } from '@acorex/cdk/common';
|
|
10
|
+
|
|
11
|
+
declare class AXMPlatformDevToolsModule {
|
|
12
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXMPlatformDevToolsModule, never>;
|
|
13
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<AXMPlatformDevToolsModule, never, never, never>;
|
|
14
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<AXMPlatformDevToolsModule>;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Platform Dev Tools Module Manifest.
|
|
19
|
+
* Development-only module for exploring platform structure (modules, entities, permissions, features).
|
|
20
|
+
*/
|
|
21
|
+
declare const PlatformDevToolsManifest: AXPModuleManifest;
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Registers UseDevTools under Applications & Platform.
|
|
25
|
+
*/
|
|
26
|
+
declare class AXMPermissionDefinitionProvider implements AXPPermissionDefinitionProvider {
|
|
27
|
+
define(context: AXPPermissionDefinitionProviderContext): Promise<void>;
|
|
28
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXMPermissionDefinitionProvider, never>;
|
|
29
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXMPermissionDefinitionProvider>;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
type PlatformExplorerNodeKind = 'module' | 'entities' | 'entity' | 'permissions' | 'permission' | 'features' | 'feature';
|
|
33
|
+
interface PlatformExplorerTreeNode {
|
|
34
|
+
id: string;
|
|
35
|
+
kind: PlatformExplorerNodeKind;
|
|
36
|
+
label: string;
|
|
37
|
+
moduleName?: string;
|
|
38
|
+
/** i18n key for the module title (used for page title and breadcrumbs) */
|
|
39
|
+
moduleTitle?: string;
|
|
40
|
+
children?: PlatformExplorerTreeNode[];
|
|
41
|
+
/** Optional payload for detail view */
|
|
42
|
+
payload?: unknown;
|
|
43
|
+
/** Item count for badge (e.g. entities count, permissions count, features count) */
|
|
44
|
+
itemCount?: number;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
declare class PlatformExplorerDataService {
|
|
48
|
+
private readonly manifestRegistry;
|
|
49
|
+
private readonly entityResolver;
|
|
50
|
+
private readonly permissionService;
|
|
51
|
+
/**
|
|
52
|
+
* Build only root-level module nodes (no children). Children are loaded on expand via getModuleChildren.
|
|
53
|
+
* Includes all modules; use buildModulesOnlyFiltered() to exclude modules with no entities/permissions/features.
|
|
54
|
+
*/
|
|
55
|
+
buildModulesOnly(): Promise<PlatformExplorerTreeNode[]>;
|
|
56
|
+
/**
|
|
57
|
+
* Build root-level module nodes, excluding modules that have no entities, permissions, or features.
|
|
58
|
+
* Each module node gets itemCount = number of non-empty subcategories (for badge).
|
|
59
|
+
*/
|
|
60
|
+
buildModulesOnlyFiltered(): Promise<PlatformExplorerTreeNode[]>;
|
|
61
|
+
/**
|
|
62
|
+
* Load entities, permissions, and features for a module (called when module node is expanded or clicked).
|
|
63
|
+
* Only includes subcategories that have at least one item. Returns empty array if module has no items.
|
|
64
|
+
*/
|
|
65
|
+
getModuleChildren(moduleId: string): Promise<PlatformExplorerTreeNode[]>;
|
|
66
|
+
/**
|
|
67
|
+
* Get all permissions for a module (for display in module detail).
|
|
68
|
+
*/
|
|
69
|
+
getPermissionsForModule(moduleName: string): Promise<AXPPermissionDefinition[]>;
|
|
70
|
+
/**
|
|
71
|
+
* Get all features for a module (for display in module detail).
|
|
72
|
+
*/
|
|
73
|
+
getFeaturesForModule(moduleName: string): AXPFeatureDefinition[];
|
|
74
|
+
private collectPermissionsForModule;
|
|
75
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<PlatformExplorerDataService, never>;
|
|
76
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<PlatformExplorerDataService>;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
declare class AXPlatformExplorerPageComponent extends AXPPageLayoutBaseComponent {
|
|
80
|
+
protected readonly dataService: PlatformExplorerDataService;
|
|
81
|
+
readonly loading: i0.WritableSignal<boolean>;
|
|
82
|
+
readonly selectedNode: i0.WritableSignal<PlatformExplorerTreeNode | null>;
|
|
83
|
+
protected readonly moduleNodes: i0.WritableSignal<PlatformExplorerTreeNode[]>;
|
|
84
|
+
protected readonly tree: i0.Signal<AXTreeViewComponent | undefined>;
|
|
85
|
+
constructor();
|
|
86
|
+
/** Datasource for tree: root = modules only; children loaded when module is expanded. */
|
|
87
|
+
protected datasource: (parentId?: string) => Promise<AXTreeViewNode[]>;
|
|
88
|
+
private initializeModules;
|
|
89
|
+
getPageTitle(): Promise<string>;
|
|
90
|
+
getPageDescription(): string | null | Promise<string | null>;
|
|
91
|
+
getPageBreadcrumbs(): AXPBreadcrumbItem[] | Promise<AXPBreadcrumbItem[]>;
|
|
92
|
+
private descriptionKeyForKind;
|
|
93
|
+
protected onNodeClick(event: AXTreeViewNodeSelectEvent): void;
|
|
94
|
+
protected onNodeToggle(_event: AXTreeViewNodeToggleEvent): void;
|
|
95
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPlatformExplorerPageComponent, never>;
|
|
96
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AXPlatformExplorerPageComponent, "axp-platform-explorer-page", never, {}, {}, never, never, true, never>;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
declare class AXPlatformExplorerTreeNodeComponent {
|
|
100
|
+
node: i0.InputSignal<PlatformExplorerTreeNode>;
|
|
101
|
+
selectedId: i0.InputSignal<string | null>;
|
|
102
|
+
nodeSelect: i0.OutputEmitterRef<PlatformExplorerTreeNode>;
|
|
103
|
+
readonly expanded: i0.WritableSignal<boolean>;
|
|
104
|
+
childrenLength(): number;
|
|
105
|
+
hasChildren(): boolean;
|
|
106
|
+
isSelected(): boolean;
|
|
107
|
+
toggle(): void;
|
|
108
|
+
select(): void;
|
|
109
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPlatformExplorerTreeNodeComponent, never>;
|
|
110
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AXPlatformExplorerTreeNodeComponent, "axp-platform-explorer-tree-node", never, { "node": { "alias": "node"; "required": true; "isSignal": true; }; "selectedId": { "alias": "selectedId"; "required": false; "isSignal": true; }; }, { "nodeSelect": "nodeSelect"; }, never, never, true, never>;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
declare class AXPlatformExplorerDetailComponent {
|
|
114
|
+
node: i0.InputSignal<PlatformExplorerTreeNode>;
|
|
115
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPlatformExplorerDetailComponent, never>;
|
|
116
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AXPlatformExplorerDetailComponent, "axp-platform-explorer-detail", never, { "node": { "alias": "node"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
declare class AXPlatformExplorerModuleDetailComponent {
|
|
120
|
+
payload: i0.InputSignal<AXPModuleManifest | undefined>;
|
|
121
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPlatformExplorerModuleDetailComponent, never>;
|
|
122
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AXPlatformExplorerModuleDetailComponent, "axp-platform-explorer-module-detail", never, { "payload": { "alias": "payload"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
declare class AXPlatformExplorerEntityDetailComponent {
|
|
126
|
+
payload: i0.InputSignal<AXPEntityListEntry | AXPEntity | undefined>;
|
|
127
|
+
protected readonly entity: i0.WritableSignal<AXPEntity | null>;
|
|
128
|
+
protected readonly loading: i0.WritableSignal<boolean>;
|
|
129
|
+
private readonly entityResolver;
|
|
130
|
+
constructor();
|
|
131
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPlatformExplorerEntityDetailComponent, never>;
|
|
132
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AXPlatformExplorerEntityDetailComponent, "axp-platform-explorer-entity-detail", never, { "payload": { "alias": "payload"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
declare class AXPlatformExplorerPermissionsListDetailComponent {
|
|
136
|
+
moduleName: i0.InputSignal<string>;
|
|
137
|
+
private readonly dataService;
|
|
138
|
+
readonly dataSource: AXDataSource<AXPPermissionDefinition>;
|
|
139
|
+
constructor();
|
|
140
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPlatformExplorerPermissionsListDetailComponent, never>;
|
|
141
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AXPlatformExplorerPermissionsListDetailComponent, "axp-platform-explorer-permissions-list-detail", never, { "moduleName": { "alias": "moduleName"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
declare class AXPlatformExplorerFeaturesListDetailComponent {
|
|
145
|
+
moduleName: i0.InputSignal<string>;
|
|
146
|
+
private readonly dataService;
|
|
147
|
+
readonly dataSource: AXDataSource<AXPFeatureDefinition>;
|
|
148
|
+
constructor();
|
|
149
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPlatformExplorerFeaturesListDetailComponent, never>;
|
|
150
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AXPlatformExplorerFeaturesListDetailComponent, "axp-platform-explorer-features-list-detail", never, { "moduleName": { "alias": "moduleName"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
export { AXMPermissionDefinitionProvider, AXMPlatformDevToolsModule, AXPlatformExplorerDetailComponent, AXPlatformExplorerEntityDetailComponent, AXPlatformExplorerFeaturesListDetailComponent, AXPlatformExplorerModuleDetailComponent, AXPlatformExplorerPageComponent, AXPlatformExplorerPermissionsListDetailComponent, AXPlatformExplorerTreeNodeComponent, PlatformDevToolsManifest, PlatformExplorerDataService };
|
|
154
|
+
export type { PlatformExplorerNodeKind, PlatformExplorerTreeNode };
|