@acorex-platform/module-platform-management-client 0.0.57 → 0.0.59

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.
Files changed (19) hide show
  1. package/fesm2022/{acorex-platform-module-platform-management-client-acorex-platform-module-platform-management-client-YuJijjKh.mjs → acorex-platform-module-platform-management-client-acorex-platform-module-platform-management-client-CkONcG6P.mjs} +12 -12
  2. package/fesm2022/{acorex-platform-module-platform-management-client-acorex-platform-module-platform-management-client-YuJijjKh.mjs.map → acorex-platform-module-platform-management-client-acorex-platform-module-platform-management-client-CkONcG6P.mjs.map} +1 -1
  3. package/fesm2022/{acorex-platform-module-platform-management-client-create-user-query.command-Bh49QHkl.mjs → acorex-platform-module-platform-management-client-create-user-query.command-xMXsN4te.mjs} +2 -2
  4. package/fesm2022/{acorex-platform-module-platform-management-client-create-user-query.command-Bh49QHkl.mjs.map → acorex-platform-module-platform-management-client-create-user-query.command-xMXsN4te.mjs.map} +1 -1
  5. package/fesm2022/{acorex-platform-module-platform-management-client-customize-menu.command-2319iHsD.mjs → acorex-platform-module-platform-management-client-customize-menu.command-B_Ld4IRz.mjs} +17 -11
  6. package/fesm2022/acorex-platform-module-platform-management-client-customize-menu.command-B_Ld4IRz.mjs.map +1 -0
  7. package/fesm2022/{acorex-platform-module-platform-management-client-menu-list.component-iMEnFPEY.mjs → acorex-platform-module-platform-management-client-menu-list.component-Cv8OxxDU.mjs} +2 -2
  8. package/fesm2022/{acorex-platform-module-platform-management-client-menu-list.component-iMEnFPEY.mjs.map → acorex-platform-module-platform-management-client-menu-list.component-Cv8OxxDU.mjs.map} +1 -1
  9. package/fesm2022/{acorex-platform-module-platform-management-client-query-contract-widget-edit.component-BW2pBOeg.mjs → acorex-platform-module-platform-management-client-query-contract-widget-edit.component-z_kLoO-q.mjs} +2 -2
  10. package/fesm2022/{acorex-platform-module-platform-management-client-query-contract-widget-edit.component-BW2pBOeg.mjs.map → acorex-platform-module-platform-management-client-query-contract-widget-edit.component-z_kLoO-q.mjs.map} +1 -1
  11. package/fesm2022/{acorex-platform-module-platform-management-client-rest-api-generator-widget-column.component-DRkE2a7n.mjs → acorex-platform-module-platform-management-client-rest-api-generator-widget-column.component-DQ4xX4Dy.mjs} +2 -2
  12. package/fesm2022/{acorex-platform-module-platform-management-client-rest-api-generator-widget-column.component-DRkE2a7n.mjs.map → acorex-platform-module-platform-management-client-rest-api-generator-widget-column.component-DQ4xX4Dy.mjs.map} +1 -1
  13. package/fesm2022/{acorex-platform-module-platform-management-client-rest-api-generator-widget-edit.component-CXI6fJi3.mjs → acorex-platform-module-platform-management-client-rest-api-generator-widget-edit.component-BcppwcSu.mjs} +2 -2
  14. package/fesm2022/{acorex-platform-module-platform-management-client-rest-api-generator-widget-edit.component-CXI6fJi3.mjs.map → acorex-platform-module-platform-management-client-rest-api-generator-widget-edit.component-BcppwcSu.mjs.map} +1 -1
  15. package/fesm2022/{acorex-platform-module-platform-management-client-rest-api-generator-widget-view.component-C3iHgoC2.mjs → acorex-platform-module-platform-management-client-rest-api-generator-widget-view.component-D-m1uo8s.mjs} +2 -2
  16. package/fesm2022/{acorex-platform-module-platform-management-client-rest-api-generator-widget-view.component-C3iHgoC2.mjs.map → acorex-platform-module-platform-management-client-rest-api-generator-widget-view.component-D-m1uo8s.mjs.map} +1 -1
  17. package/fesm2022/acorex-platform-module-platform-management-client.mjs +1 -1
  18. package/package.json +3 -3
  19. package/fesm2022/acorex-platform-module-platform-management-client-customize-menu.command-2319iHsD.mjs.map +0 -1
@@ -1,4 +1,5 @@
1
1
  import { AXPopupService } from '@acorex/components/popup';
2
+ import { AXPDialogOpener } from '@acorex-platform/framework-client/core';
2
3
  import { AXToastService } from '@acorex/components/toast';
3
4
  import { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';
4
5
  import { AXPSettingsService, AXPCommonSettings } from '@acorex-platform/framework-client/common';
@@ -170,6 +171,7 @@ function resolveCustomizeMenuInput(input = {}) {
170
171
  class AXMCustomizeMenuCommand {
171
172
  constructor() {
172
173
  this.popupService = inject(AXPopupService);
174
+ this.dialogOpener = inject(AXPDialogOpener);
173
175
  this.translateService = inject(AXTranslationService);
174
176
  this.toastService = inject(AXToastService);
175
177
  this.settingsService = inject(AXPSettingsService);
@@ -189,16 +191,20 @@ class AXMCustomizeMenuCommand {
189
191
  const defaultTitle = await this.translateService.translateAsync('@platform-management:menu-management.components.menu-customizer-popup.title');
190
192
  const entityTitle = data['title'] ?? data['name'] ?? entityId;
191
193
  const title = customTitle ?? `${defaultTitle} - ${entityTitle}`;
192
- const result = await this.popupService.open(AXPMenuCustomizerPopupComponent, {
193
- title,
194
- size: 'lg',
195
- data: {
196
- scopeKey: signal(scopeKey),
197
- showToolbar: signal(options.showToolbar ?? true),
198
- allowAddItems: signal(options.allowAddItems ?? true),
199
- dragBehavior: signal(options.dragBehavior ?? 'both'),
200
- dragArea: signal(options.dragArea ?? 'handler'),
201
- },
194
+ const result = await this.dialogOpener.openPopup({
195
+ load: () => Promise.resolve(AXPMenuCustomizerPopupComponent),
196
+ data: { scopeKey },
197
+ show: (component) => this.popupService.open(component, {
198
+ title,
199
+ size: 'lg',
200
+ data: {
201
+ scopeKey: signal(scopeKey),
202
+ showToolbar: signal(options.showToolbar ?? true),
203
+ allowAddItems: signal(options.allowAddItems ?? true),
204
+ dragBehavior: signal(options.dragBehavior ?? 'both'),
205
+ dragArea: signal(options.dragArea ?? 'handler'),
206
+ },
207
+ }),
202
208
  });
203
209
  if (result?.data !== true) {
204
210
  return { success: true, kind: 'object', data: { saved: false } };
@@ -228,4 +234,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
228
234
  }] });
229
235
 
230
236
  export { AXMCustomizeMenuCommand };
231
- //# sourceMappingURL=acorex-platform-module-platform-management-client-customize-menu.command-2319iHsD.mjs.map
237
+ //# sourceMappingURL=acorex-platform-module-platform-management-client-customize-menu.command-B_Ld4IRz.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-platform-module-platform-management-client-customize-menu.command-B_Ld4IRz.mjs","sources":["../../../../libs/modules/platform-management/client/src/lib/features/menu-management/components/menu-customizer-popup/menu-customizer-popup.component.ts","../../../../libs/modules/platform-management/client/src/lib/features/menu-management/commands/customize-menu.command.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXPActionMenuItem, AXPExecuteCommand } from '@acorex-platform/framework-shared/core';\nimport { AXTreeViewDragArea, AXTreeViewDragBehavior } from '@acorex/components/tree-view';\nimport { AXTranslationModule } from '@acorex/core/translation';\n\nimport { AXPMenuCustomizerComponent, AXPThemeLayoutBlockComponent } from '@acorex-platform/framework-client/layout/components';\nimport {\n AXPPopupLayoutBase,\n AXPPopupLayoutBaseComponent,\n AXPPopupLayoutComponent,\n} from '@acorex-platform/framework-client/layout/views';\n\nimport { Component, computed, signal, viewChild, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';\n\n//#endregion\n\n//#region ---- Menu Customizer Popup Component ----\n\n/**\n * Popup wrapper for the menu customizer component.\n * Provides a popup layout with actions for managing menu customizations.\n *\n * Pass the following data when opening the popup:\n * - scopeKey: string - The scope key for menu customizations\n * - showToolbar?: boolean - Whether to show the toolbar (default: true)\n * - allowAddItems?: boolean - Whether to allow adding items (default: true)\n * - dragBehavior?: AXTreeViewDragBehavior - Drag behavior (default: 'move')\n * - dragArea?: AXTreeViewDragArea - Drag area (default: 'handler')\n */\n@Component({\n selector: 'axp-menu-customizer-popup',\n template: `\n <axp-popup-layout>\n <axp-page-content>\n @if (isReady()) {\n <axp-menu-customizer\n [scopeKey]=\"scopeKey()\"\n [showToolbar]=\"showToolbar()\"\n [allowAddItems]=\"allowAddItems()\"\n [dragBehavior]=\"dragBehavior()\"\n [dragArea]=\"dragArea()\"\n (saved)=\"onSaved()\"\n (cancelled)=\"onCancelled()\"\n ></axp-menu-customizer>\n }\n </axp-page-content>\n </axp-popup-layout>\n `,\n imports: [\n AXTranslationModule,\n AXPPopupLayoutComponent,\n AXPThemeLayoutBlockComponent,\n AXPMenuCustomizerComponent\n],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: AXPPopupLayoutBase,\n useExisting: AXPMenuCustomizerPopupComponent,\n },\n ],\n changeDetection: ChangeDetectionStrategy.Eager,\n host: { class: 'axp-menu-customizer-popup' },\n})\nexport class AXPMenuCustomizerPopupComponent extends AXPPopupLayoutBaseComponent {\n //#region ---- Component State ----\n\n /** Reference to the menu customizer component */\n protected menuCustomizer = viewChild(AXPMenuCustomizerComponent);\n\n /** The scope key for menu customizations (set by popup service) */\n scopeKey = signal<string>('');\n\n /** Whether to show the toolbar */\n showToolbar = signal<boolean>(true);\n\n /** Whether to allow adding custom items */\n allowAddItems = signal<boolean>(true);\n\n /** Drag behavior for the tree view */\n dragBehavior = signal<AXTreeViewDragBehavior>('both');\n\n /** Drag area for the tree view */\n dragArea = signal<AXTreeViewDragArea>('handler');\n\n /** Whether the component is ready to render (scopeKey is set) */\n protected isReady = computed(() => this.scopeKey() !== '');\n\n //#endregion\n\n //#region ---- Lifecycle Methods ----\n\n override async ngOnInit(): Promise<void> {\n await super.ngOnInit();\n // Popup-specific initialization can go here\n }\n\n //#endregion\n\n //#region ---- UI Handlers ----\n\n /**\n * Returns the primary menu items for the popup layout.\n */\n protected override getPrimaryMenuItems(): AXPActionMenuItem[] | Promise<AXPActionMenuItem[]> {\n return [\n {\n title: '@general:actions.close.title',\n icon: 'fa-solid fa-xmark',\n command: {\n name: 'close',\n },\n },\n ];\n }\n\n /**\n * Handles when changes are saved\n */\n protected onSaved(): void {\n this.close(true);\n }\n\n /**\n * Handles when customization is cancelled\n */\n protected onCancelled(): void {\n this.close(false);\n }\n\n /**\n * Executes popup commands\n */\n override execute(command: AXPExecuteCommand): void | Promise<void> {\n if (command.name === 'close') {\n this.close(false);\n }\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPopupService } from '@acorex/components/popup';\nimport { AXPDialogOpener } from '@acorex-platform/framework-client/core';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPCommonSettings, AXPSettingsService } from '@acorex-platform/framework-client/common';\nimport {\n AXPCommand,\n entityActionDataRecord,\n resolveEntityActionCommandInput,\n type AXPCommandExecuteResultPromise,\n} from '@acorex-platform/framework-shared/runtime';\nimport { inject, Injectable, signal } from '@angular/core';\n\nimport { AXPMenuCustomizerPopupComponent } from '../components/menu-customizer-popup/menu-customizer-popup.component';\n\n//#endregion\n\n//#region ---- Types ----\n\nexport interface AXMCustomizeMenuCommandOptions {\n scopePrefix?: string;\n title?: string;\n showToolbar?: boolean;\n allowAddItems?: boolean;\n dragBehavior?: 'none' | 'move' | 'copy' | 'both';\n dragArea?: 'node' | 'handler';\n}\n\nexport interface AXMCustomizeMenuCommandInput {\n data?: Record<string, unknown>;\n options?: AXMCustomizeMenuCommandOptions;\n}\n\n//#endregion\n\n//#region ---- Helpers ----\n\nfunction resolveCustomizeMenuInput(input: AXMCustomizeMenuCommandInput = {}) {\n const resolved = resolveEntityActionCommandInput(input);\n const data = (entityActionDataRecord(resolved.data) ?? {}) as Record<string, unknown>;\n const options = (resolved.options ?? {}) as AXMCustomizeMenuCommandOptions;\n\n return { data, options };\n}\n\n//#endregion\n\n//#region ---- Customize menu command ----\n\n/**\n * Opens the menu customizer popup for an entity scope and shows a success toast on save.\n * Replaces the former `customize-menu` workflow (popup step + success toast).\n */\n@Injectable({ providedIn: 'root' })\nexport class AXMCustomizeMenuCommand implements AXPCommand<AXMCustomizeMenuCommandInput> {\n private readonly popupService = inject(AXPopupService);\n private readonly dialogOpener = inject(AXPDialogOpener);\n private readonly translateService = inject(AXTranslationService);\n private readonly toastService = inject(AXToastService);\n private readonly settingsService = inject(AXPSettingsService);\n\n async execute(input: AXMCustomizeMenuCommandInput = {}): AXPCommandExecuteResultPromise {\n const { data, options } = resolveCustomizeMenuInput(input);\n const entityId = data['id'];\n\n if (!entityId) {\n return {\n success: false,\n message: { text: 'Menu customizer requires entity data with an id property.' },\n };\n }\n\n const scopePrefix = options.scopePrefix ?? 'entity';\n const scopeKey = `${scopePrefix}:${String(entityId)}`;\n\n const customTitle = options.title;\n const defaultTitle = await this.translateService.translateAsync(\n '@platform-management:menu-management.components.menu-customizer-popup.title',\n );\n const entityTitle = data['title'] ?? data['name'] ?? entityId;\n const title = customTitle ?? `${defaultTitle} - ${entityTitle}`;\n\n const result = await this.dialogOpener.openPopup({\n load: () => Promise.resolve(AXPMenuCustomizerPopupComponent),\n data: { scopeKey },\n show: (component) =>\n this.popupService.open(component, {\n title,\n size: 'lg',\n data: {\n scopeKey: signal(scopeKey),\n showToolbar: signal(options.showToolbar ?? true),\n allowAddItems: signal(options.allowAddItems ?? true),\n dragBehavior: signal(options.dragBehavior ?? 'both'),\n dragArea: signal(options.dragArea ?? 'handler'),\n },\n }),\n });\n\n if (result?.data !== true) {\n return { success: true, kind: 'object', data: { saved: false } };\n }\n\n await this.showSuccessToast();\n\n return { success: true, kind: 'object', data: { saved: true } };\n }\n\n private async showSuccessToast(): Promise<void> {\n const enableOperationToasts = await this.settingsService.get<boolean>(AXPCommonSettings.EnableOperationToasts);\n if (!enableOperationToasts) {\n return;\n }\n\n this.toastService.show({\n color: 'success',\n title: await this.translateService.translateAsync(\n '@platform-management:menu-management.messages.success.customization-saved',\n ),\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n }\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
@@ -22,7 +22,7 @@ import * as i0 from '@angular/core';
22
22
  import { inject, viewChild, signal, ViewEncapsulation, ChangeDetectionStrategy, Component } from '@angular/core';
23
23
  import { ActivatedRoute } from '@angular/router';
24
24
  import { Subject, takeUntil } from 'rxjs';
25
- import { A as AXPMenuManagementService } from './acorex-platform-module-platform-management-client-acorex-platform-module-platform-management-client-YuJijjKh.mjs';
25
+ import { A as AXPMenuManagementService } from './acorex-platform-module-platform-management-client-acorex-platform-module-platform-management-client-CkONcG6P.mjs';
26
26
 
27
27
  //#region ---- Menu List Component ----
28
28
  class AXMMenuListComponent extends AXPPageLayoutBaseComponent {
@@ -521,4 +521,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
521
521
  }], propDecorators: { tree: [{ type: i0.ViewChild, args: [i0.forwardRef(() => AXTreeViewComponent), { isSignal: true }] }] } });
522
522
 
523
523
  export { AXMMenuListComponent };
524
- //# sourceMappingURL=acorex-platform-module-platform-management-client-menu-list.component-iMEnFPEY.mjs.map
524
+ //# sourceMappingURL=acorex-platform-module-platform-management-client-menu-list.component-Cv8OxxDU.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-platform-management-client-menu-list.component-iMEnFPEY.mjs","sources":["../../../../libs/modules/platform-management/client/src/lib/features/menu-management/pages/menu-list/menu-list.component.ts","../../../../libs/modules/platform-management/client/src/lib/features/menu-management/pages/menu-list/menu-list.component.html"],"sourcesContent":["\nimport { AXPActionMenuItem, AXPExecuteCommand, AXPPlatformScope } from '@acorex-platform/framework-shared/core';\nimport { AXBadgeModule } from '@acorex/components/badge';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDialogService } from '@acorex/components/dialog';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTreeViewBeforeDropEvent, AXTreeViewComponent, AXTreeViewDropEvent, AXTreeViewNode } from '@acorex/components/tree-view';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { AXPMenuItem } from '@acorex-platform/framework-client/common';\n\nimport { AXPLayoutBuilderService } from '@acorex-platform/framework-client/layout/builder';\nimport { AXPStateMessageComponent, AXPThemeLayoutBlockComponent } from '@acorex-platform/framework-client/layout/components';\nimport { AXPPageLayoutBase, AXPPageLayoutBaseComponent, AXPPageLayoutComponent } from '@acorex-platform/framework-client/layout/views';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n inject,\n OnDestroy,\n OnInit,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { Subject, takeUntil } from 'rxjs';\nimport { AXPMenuItemAction } from '../../menu-customization.types';\nimport { AXPMenuManagementService, AXPMenuTreeNodeData } from '../../menu-management.service';\n\n//#region ---- Menu List Component ----\n\n@Component({\n selector: 'axm-menu-list',\n imports: [\n CommonModule,\n AXButtonModule,\n AXDecoratorModule,\n AXDropdownButtonModule,\n AXDropdownModule,\n AXTranslationModule,\n AXTreeViewComponent,\n AXPPageLayoutComponent,\n AXPThemeLayoutBlockComponent,\n AXPStateMessageComponent,\n AXBadgeModule,\n ],\n templateUrl: './menu-list.component.html',\n styleUrls: ['./menu-list.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMMenuListComponent,\n },\n ],\n host: { class: 'axm-menu-list-page' },\n})\nexport class AXMMenuListComponent extends AXPPageLayoutBaseComponent implements OnInit, OnDestroy {\n //#region ---- Dependencies ----\n\n private menuManagementService = inject(AXPMenuManagementService);\n private layoutBuilder = inject(AXPLayoutBuilderService);\n protected dialogService = inject(AXDialogService);\n protected override toastService = inject(AXToastService);\n private translationService = inject(AXTranslationService);\n private route = inject(ActivatedRoute);\n\n //#endregion\n\n //#region ---- Component State ----\n\n protected tree = viewChild(AXTreeViewComponent);\n protected treeNodes = signal<AXTreeViewNode[]>([]);\n protected isLoading = signal<boolean>(false);\n protected error = signal<string>('');\n protected currentScope = signal<AXPPlatformScope>(AXPPlatformScope.User);\n private isSyncing = false; // Prevent concurrent sync operations\n private destroy$ = new Subject<void>(); // For subscription cleanup\n\n //#endregion\n\n //#region ---- Lifecycle ----\n\n override async ngOnInit(): Promise<void> {\n await super.ngOnInit();\n\n // Get scope from route (with memory leak prevention)\n this.route.params.pipe(takeUntil(this.destroy$)).subscribe(async (params) => {\n const scope = params['scope'] as AXPPlatformScope;\n if (scope) {\n this.currentScope.set(scope);\n await this.loadMenuItems();\n this.recompute(); // Update page header after loading\n }\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n //#endregion\n\n //#region ---- Event Handlers ----\n\n /**\n * Handle before drop validation\n */\n async handleBeforeDrop(e: AXTreeViewBeforeDropEvent): Promise<void> {\n console.log('[handleBeforeDrop] Event triggered!', {\n movedNode: e.movedNode?.['id'],\n previousParent: e.previousParent?.['id'],\n currentParent: e.currentParent?.['id'],\n previousIndex: e.previousIndex,\n currentIndex: e.currentIndex,\n });\n\n const targetParent = (e.currentParent?.['data'] as AXPMenuTreeNodeData) || null;\n\n // Prevent dropping into items with paths (leaf nodes)\n if (targetParent?.menuItem?.path) {\n e.canceled = true;\n const message = await this.translationService.translateAsync(\n '@platform-management:menu-management.messages.error.move',\n );\n this.toastService.warning(message);\n return;\n }\n\n // Note: Circular reference validation is handled by the tree component itself\n // Additional validation can be added here if needed based on business rules\n }\n\n /**\n * Handle after drop event to sync changes\n * The event contains information about the moved node and its new position\n */\n async handleAfterDrop(event: AXTreeViewDropEvent): Promise<void> {\n console.log('[handleAfterDrop] Event triggered!', {\n movedNode: event.node?.['id'],\n movedNodeData: event.node?.['data'],\n previousParent: event.previousParent?.['id'],\n currentParent: event.currentParent?.['id'],\n previousIndex: event.previousIndex,\n currentIndex: event.currentIndex,\n });\n\n // Check what the tree component has\n const treeComp = this.tree();\n if (treeComp) {\n console.log('[handleAfterDrop] Tree component datasource:', treeComp.datasource);\n }\n\n // Check our signal\n console.log('[handleAfterDrop] Our treeNodes signal:', this.treeNodes());\n\n await this.syncTreeChanges();\n }\n\n //#endregion\n\n //#region ---- Data Loading ----\n\n /**\n * Load menu tree for current scope\n */\n protected async loadMenuItems(): Promise<void> {\n try {\n this.isLoading.set(true);\n this.error.set('');\n\n const treeNodes = await this.menuManagementService.getMenuTreeByScope(this.currentScope());\n this.treeNodes.set(treeNodes);\n this.recompute();\n } catch (error) {\n this.error.set(error instanceof Error ? error.message : 'Failed to load menu items');\n const message = await this.translationService.translateAsync(\n '@platform-management:menu-management.messages.error.load',\n );\n this.toastService.danger(message);\n } finally {\n this.isLoading.set(false);\n }\n }\n\n /**\n * Sync tree changes to backend\n */\n private async syncTreeChanges(): Promise<void> {\n // Prevent concurrent sync operations\n if (this.isSyncing) {\n return;\n }\n\n try {\n this.isSyncing = true;\n const scope = this.currentScope();\n\n // Get nodes from signal - the tree component mutates the array in place\n // so this.treeNodes() will have the updated structure after drag-drop\n const nodes = this.treeNodes();\n\n console.log('[syncTreeChanges] nodes count:', nodes?.length);\n \n // Log detailed node structure\n const logNode = (n: any, level: number = 0): any => ({\n id: n['id'],\n title: n['title'],\n level,\n childrenCount: (n['children'] as any[])?.length ?? 0,\n children: (n['children'] as any[])?.map((c: any) => logNode(c, level + 1)) ?? [],\n });\n console.log('[syncTreeChanges] Full tree structure:', JSON.stringify(nodes?.map(n => logNode(n)), null, 2));\n\n if (!nodes || nodes.length === 0) {\n console.log('[syncTreeChanges] No nodes to sync');\n return;\n }\n\n await this.menuManagementService.syncTreeChangesByScope(scope, nodes);\n const message = await this.translationService.translateAsync(\n '@platform-management:menu-management.messages.success.reorder',\n );\n this.toastService.success(message);\n } catch (error) {\n console.error('Failed to sync tree changes:', error);\n const message = await this.translationService.translateAsync(\n '@platform-management:menu-management.messages.error.sync',\n );\n this.toastService.danger(message);\n } finally {\n this.isSyncing = false;\n }\n }\n\n //#endregion\n\n //#region ---- Page Layout Interface ----\n\n /**\n * Get page title\n */\n override async getPageTitle(): Promise<string> {\n const scopeName = this.currentScope();\n const scopeKey = scopeName === AXPPlatformScope.User ? 'user' : 'tenant';\n return this.translationService.translateAsync(`@platform-management:menu-management.menus.${scopeKey}.title`);\n }\n\n /**\n * Get page description\n */\n override async getPageDescription(): Promise<string> {\n return this.translationService.translateAsync(\n '@platform-management:menu-management.components.menu-list.description',\n );\n }\n\n /**\n * Get primary menu items (actions)\n */\n override async getPrimaryMenuItems(): Promise<AXPActionMenuItem[]> {\n return [\n {\n title: await this.translationService.translateAsync(\n '@platform-management:menu-management.actions.add-root.title',\n ),\n icon: 'fa-light fa-plus',\n color: 'primary',\n command: { name: 'add-root' },\n },\n ];\n }\n\n /**\n * Get secondary menu items\n */\n override async getSecondaryMenuItems(): Promise<AXPActionMenuItem[]> {\n return [\n {\n title: await this.translationService.translateAsync(\n '@platform-management:menu-management.actions.collapse.title',\n ),\n icon: 'fa-light fa-minus-square',\n command: { name: 'collapse' },\n },\n\n {\n title: await this.translationService.translateAsync(\n '@platform-management:menu-management.actions.expand.title',\n ),\n icon: 'fa-light fa-plus-square',\n command: { name: 'expand' },\n break: true,\n },\n {\n title: await this.translationService.translateAsync('@platform-management:menu-management.actions.reset.title'),\n icon: 'fa-light fa-rotate-left',\n color: 'danger',\n command: { name: 'reset' },\n },\n ];\n }\n\n /**\n * Execute commands from page actions\n */\n override async execute(command: AXPExecuteCommand): Promise<void> {\n switch (command.name) {\n case 'add-root':\n await this.addRootMenuItem();\n break;\n case 'collapse':\n this.tree()?.collapseAll();\n break;\n case 'expand':\n this.tree()?.expandAll();\n break;\n case 'reset':\n await this.resetCustomizations();\n break;\n }\n }\n\n //#endregion\n\n //#region ---- Action Handlers ----\n\n /**\n * Handle menu item action\n */\n protected async onAction(action: AXPMenuItemAction, nodeData: AXPMenuTreeNodeData): Promise<void> {\n switch (action) {\n case 'show':\n await this.showMenuItem(nodeData);\n break;\n case 'hide':\n await this.hideMenuItem(nodeData);\n break;\n case 'edit':\n await this.editMenuItem(nodeData);\n break;\n case 'delete':\n await this.deleteMenuItem(nodeData);\n break;\n case 'add-child':\n await this.addChildMenuItem(nodeData);\n break;\n }\n }\n\n /**\n * Add new root menu item\n */\n protected async addRootMenuItem(): Promise<void> {\n await this.showMenuItemDialog(null, null);\n }\n\n /**\n * Add new child menu item\n */\n protected async addChildMenuItem(parentNodeData: AXPMenuTreeNodeData): Promise<void> {\n await this.showMenuItemDialog(null, parentNodeData.menuItem.name);\n }\n\n /**\n * Reset customizations\n */\n protected async resetCustomizations(): Promise<void> {\n const title = await this.translationService.translateAsync(\n '@platform-management:menu-management.actions.reset.confirm.title',\n );\n const message = await this.translationService.translateAsync(\n '@platform-management:menu-management.actions.reset.confirm.message',\n );\n const confirmed = await this.dialogService.confirm(title, message);\n\n if (!confirmed) return;\n\n try {\n // Reset customizations for current scope\n await this.menuManagementService.resetCustomizationsByScope(this.currentScope());\n const message = await this.translationService.translateAsync(\n '@platform-management:menu-management.messages.success.reset',\n );\n this.toastService.success(message);\n } catch (error) {\n console.error('Failed to reset customizations:', error);\n const message = await this.translationService.translateAsync(\n '@platform-management:menu-management.messages.error.reset',\n );\n this.toastService.danger(message);\n } finally {\n // Reload anyway to show current state\n await this.loadMenuItems();\n }\n }\n\n //#endregion\n\n //#region ---- Menu Item Actions ----\n\n /**\n * Show menu item\n */\n private async showMenuItem(nodeData: AXPMenuTreeNodeData): Promise<void> {\n await this.executeMenuAction(\n () => this.menuManagementService.showMenuItemByScope(this.currentScope(), nodeData.menuItem.name!),\n '@platform-management:menu-management.messages.success.show',\n '@platform-management:menu-management.messages.error.show',\n );\n }\n\n /**\n * Hide menu item\n */\n private async hideMenuItem(nodeData: AXPMenuTreeNodeData): Promise<void> {\n await this.executeMenuAction(\n () => this.menuManagementService.hideMenuItemByScope(this.currentScope(), nodeData.menuItem.name!),\n '@platform-management:menu-management.messages.success.hide',\n '@platform-management:menu-management.messages.error.hide',\n );\n }\n\n /**\n * Edit menu item\n */\n private async editMenuItem(nodeData: AXPMenuTreeNodeData): Promise<void> {\n await this.showMenuItemDialog(nodeData);\n }\n\n /**\n * Delete custom menu item\n */\n private async deleteMenuItem(nodeData: AXPMenuTreeNodeData): Promise<void> {\n const title = await this.translationService.translateAsync('@general:actions.delete.title');\n const message = await this.translationService.translateAsync(\n '@platform-management:menu-management.actions.delete.confirm.message',\n );\n const confirmed = await this.dialogService.confirm(title, message);\n\n if (!confirmed) return;\n\n try {\n const item = nodeData.menuItem;\n if (!item.name) return;\n\n await this.menuManagementService.deleteCustomMenuItemByScope(this.currentScope(), item.name);\n const message = await this.translationService.translateAsync(\n '@platform-management:menu-management.messages.success.delete',\n );\n this.toastService.success(message);\n await this.loadMenuItems();\n } catch (error) {\n const message = await this.translationService.translateAsync(\n '@platform-management:menu-management.messages.error.delete',\n );\n this.toastService.danger(message);\n }\n }\n\n //#endregion\n\n //#region ---- Dialog Helpers ----\n\n /**\n * Show menu item dialog (add/edit)\n */\n private async showMenuItemDialog(\n nodeData: AXPMenuTreeNodeData | null,\n parentName: string | null = null,\n ): Promise<void> {\n const item = nodeData?.menuItem;\n const isEdit = !!item;\n const title = isEdit\n ? '@platform-management:menu-management.components.edit-dialog.title'\n : '@platform-management:menu-management.components.add-dialog.title';\n\n const context = {\n name: item?.name || '',\n text: item?.text || '',\n type: item?.type || 'menu',\n icon: item?.icon || '',\n path: item?.path || '',\n priority: item?.priority || 0,\n description: item?.description || '',\n };\n\n const dialogRef: any = await this.layoutBuilder\n .create()\n .dialog((dialog: any) => {\n dialog\n .setTitle(title)\n .setContext(context)\n .content((flex: any) => {\n flex\n .setDirection('column')\n .formField('@platform-management:menu-management.fields.name', (field: any) => {\n field.path('name');\n field.textBox({\n placeholder: '@platform-management:menu-management.fields.name',\n validations: [{ rule: 'required' }],\n disabled: isEdit && nodeData?.metadata?.isBuiltIn,\n });\n })\n .formField('@platform-management:menu-management.fields.text', (field: any) => {\n field.path('text');\n field.textBox({\n placeholder: '@platform-management:menu-management.fields.text',\n validations: [{ rule: 'required' }],\n });\n })\n .formField('@platform-management:menu-management.fields.icon', (field: any) => {\n field.path('icon');\n field.customWidget('icon-chooser', {});\n })\n .formField('@platform-management:menu-management.fields.path', (field: any) => {\n field.path('path');\n field.textBox({\n placeholder: '@platform-management:menu-management.fields.path',\n disabled: isEdit && nodeData?.metadata?.isBuiltIn,\n });\n })\n .formField('@platform-management:menu-management.fields.priority', (field: any) => {\n field.path('priority');\n field.numberBox({\n placeholder: '@platform-management:menu-management.fields.priority',\n step: 10,\n });\n })\n .formField('@platform-management:menu-management.fields.description', (field: any) => {\n field.path('description');\n field.largeTextBox({\n placeholder: '@platform-management:menu-management.fields.description',\n rows: 3,\n });\n });\n })\n .setActions((actions: any) => {\n actions.cancel('@general:actions.cancel.title').submit('@general:actions.save.title');\n });\n })\n .show();\n\n const action = dialogRef.action();\n if (action === 'cancel') {\n dialogRef.close();\n return;\n }\n\n const formData = dialogRef.context() as Partial<AXPMenuItem>;\n\n try {\n if (isEdit && item?.name) {\n // Update existing item\n if (nodeData?.metadata?.isCustom) {\n await this.menuManagementService.updateCustomMenuItemByScope(\n this.currentScope(),\n item.name,\n formData as AXPMenuItem,\n );\n } else {\n await this.menuManagementService.updateMenuPropertiesByScope(this.currentScope(), item.name, formData);\n }\n } else {\n // Add new custom item\n const newItem: AXPMenuItem = {\n name: formData.name!,\n text: formData.text!,\n icon: formData.icon,\n path: formData.path,\n priority: formData.priority,\n description: formData.description,\n };\n\n // If parent is specified, add as child\n if (parentName) {\n // Add custom item as child of parent\n await this.menuManagementService.addCustomMenuItemByScope(this.currentScope(), newItem, parentName);\n } else {\n // Add as root level item\n await this.menuManagementService.addCustomMenuItemByScope(this.currentScope(), newItem, null);\n }\n }\n\n const message = await this.translationService.translateAsync(\n '@platform-management:menu-management.messages.success.save',\n );\n this.toastService.success(message);\n await this.loadMenuItems();\n dialogRef.close();\n } catch (error) {\n const message = await this.translationService.translateAsync(\n '@platform-management:menu-management.messages.error.save',\n );\n this.toastService.danger(message);\n }\n }\n\n /**\n * Execute a menu action with common error handling\n */\n private async executeMenuAction(\n action: () => Promise<void>,\n successMessageKey: string,\n errorMessageKey: string,\n ): Promise<void> {\n try {\n await action();\n const message = await this.translationService.translateAsync(successMessageKey);\n this.toastService.success(message);\n await this.loadMenuItems();\n } catch (error) {\n console.error('Menu action failed:', error);\n const message = await this.translationService.translateAsync(errorMessageKey);\n this.toastService.danger(message);\n }\n }\n\n //#endregion\n}\n\n//#endregion\n","<axp-page-layout>\n <axp-page-content>\n @if (isLoading()) {\n <!-- Loading State -->\n <axp-state-message\n mode=\"loading\"\n icon=\"fa-light fa-spinner-third fa-spin\"\n [title]=\"\n ('@platform-management:menu-management.components.menu-list.empty-states.loading.title' | translate | async)!\n \"\n [description]=\"\n ('@platform-management:menu-management.components.menu-list.empty-states.loading.description'\n | translate\n | async)!\n \"\n />\n } @else if (error()) {\n <!-- Error State -->\n <axp-state-message\n mode=\"error\"\n icon=\"fa-light fa-circle-exclamation\"\n [title]=\"\n ('@platform-management:menu-management.components.menu-list.empty-states.error.title' | translate | async)!\n \"\n [description]=\"\n ('@platform-management:menu-management.components.menu-list.empty-states.error.description'\n | translate\n | async)!\n \"\n >\n <ax-button\n slot=\"actions\"\n [text]=\"'@general:actions.retry.title' | translate | async\"\n [look]=\"'outline'\"\n [color]=\"'primary'\"\n (onClick)=\"loadMenuItems()\"\n >\n <i class=\"fa-light fa-rotate-left\"></i>\n </ax-button>\n </axp-state-message>\n } @else if (treeNodes().length === 0) {\n <!-- Empty State -->\n <axp-state-message\n mode=\"empty\"\n icon=\"fa-light fa-bars\"\n [title]=\"\n ('@platform-management:menu-management.components.menu-list.empty-states.no-data.title' | translate | async)!\n \"\n [description]=\"\n ('@platform-management:menu-management.components.menu-list.empty-states.no-data.description'\n | translate\n | async)!\n \"\n >\n <ax-button\n slot=\"actions\"\n [text]=\"'@platform-management:menu-management.actions.add-root.title' | translate | async\"\n [look]=\"'solid'\"\n [color]=\"'primary'\"\n (onClick)=\"addRootMenuItem()\"\n >\n <i class=\"fa-light fa-plus\"></i>\n </ax-button>\n </axp-state-message>\n } @else {\n <!-- Menu Tree Content -->\n <div class=\"axm-menu-list__container\">\n <!-- Menu Tree -->\n <div class=\"axm-menu-list__tree\">\n <ax-tree-view\n [(datasource)]=\"treeNodes\"\n [look]=\"'default'\"\n [nodeTemplate]=\"itemTemplate\"\n [selectMode]=\"'none'\"\n [showIcons]=\"false\"\n [showChildrenBadge]=\"false\"\n [dragBehavior]=\"'move'\"\n [dragArea]=\"'handler'\"\n (onBeforeDrop)=\"handleBeforeDrop($event)\"\n (onItemsChange)=\"handleAfterDrop($event)\"\n ></ax-tree-view>\n </div>\n </div>\n }\n </axp-page-content>\n</axp-page-layout>\n\n<!-- Custom Item Template -->\n<ng-template #itemTemplate let-node=\"node\" let-level=\"level\">\n @let nodeData = node['data'];\n @let item = nodeData.menuItem;\n @let metadata = nodeData.metadata;\n <div\n class=\"axm-menu-tree-item__wrapper\"\n [class.axm-menu-tree-item__wrapper--hidden]=\"metadata.isHidden\"\n [class.axm-menu-tree-item__wrapper--custom]=\"metadata.isCustom\"\n [class.axm-menu-tree-item__wrapper--group]=\"item.type === 'group'\"\n >\n <!-- Icon (hidden for groups) -->\n @if (item.icon && item.type !== 'group') {\n <i class=\"axm-menu-tree-item__icon\" [class]=\"item.icon\"></i>\n }\n\n <!-- Text or Info -->\n @if (item.type === 'group') {\n <!-- Group Heading -->\n <span class=\"axm-menu-tree-item__group\">\n <i class=\"fa-light fa-layer-group\"></i>\n {{ item.text | translate | async }}\n </span>\n } @else if (item.type === 'break') {\n <!-- Divider -->\n <span class=\"axm-menu-tree-item__divider\">\n <i class=\"fa-light fa-minus\"></i>\n {{ '@platform-management:menu-management.states.divider' | translate | async }}\n </span>\n } @else if (item.text) {\n <!-- Regular Menu Item -->\n <span class=\"axm-menu-tree-item__text\">\n {{ item.text | translate | async }}\n </span>\n } @else if (item.path) {\n <!-- Path-only Item -->\n <span class=\"axm-menu-tree-item__path\">\n <i class=\"fa-light fa-link\"></i>\n {{ item.path }}\n </span>\n }\n\n <!-- Menu Name/Key -->\n @if (item.name) {\n <code class=\"axm-menu-tree-item__name\">{{ item.name }}</code>\n }\n\n <!-- Status Badges -->\n @if (metadata.isHidden) {\n <ax-badge\n [text]=\"('@platform-management:menu-management.states.hidden' | translate | async)!\"\n color=\"danger\"\n ></ax-badge>\n } @else if (metadata.isCustom) {\n <ax-badge\n [text]=\"('@platform-management:menu-management.states.custom' | translate | async)!\"\n color=\"success\"\n ></ax-badge>\n } @else if (metadata.isBuiltIn) {\n <ax-badge\n [text]=\"('@platform-management:menu-management.states.built-in' | translate | async)!\"\n color=\"primary\"\n ></ax-badge>\n }\n\n <!-- Actions Dropdown -->\n <ax-button class=\"axm-menu-tree-item__actions ax-sm\" [look]=\"'blank'\" [iconOnly]=\"true\">\n <ax-prefix>\n <i class=\"fa-light fa-ellipsis-vertical\"></i>\n </ax-prefix>\n\n <ax-dropdown-panel #panel>\n <ax-button-item-list>\n <!-- Edit (only for items with names) -->\n @if (item.name) {\n <ax-button-item\n [text]=\"('@general:actions.edit.title' | translate | async)!\"\n (onClick)=\"onAction('edit', nodeData); panel.close()\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-edit\"></i>\n </ax-prefix>\n </ax-button-item>\n }\n\n <!-- Show/Hide (only for items with names) -->\n @if (item.name && metadata.isBuiltIn) {\n @if (metadata.isHidden) {\n <ax-button-item\n [text]=\"('@platform-management:menu-management.actions.show.title' | translate | async)!\"\n (onClick)=\"onAction('show', nodeData); panel.close()\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-eye\"></i>\n </ax-prefix>\n </ax-button-item>\n } @else {\n <ax-button-item\n [text]=\"('@platform-management:menu-management.actions.hide.title' | translate | async)!\"\n (onClick)=\"onAction('hide', nodeData); panel.close()\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-eye-slash\"></i>\n </ax-prefix>\n </ax-button-item>\n }\n }\n\n @if (!item.path && (item.type === 'menu' || !item.type)) {\n <!-- Add Child -->\n <ax-button-item\n [text]=\"('@platform-management:menu-management.actions.add-child.title' | translate | async)!\"\n (onClick)=\"onAction('add-child', nodeData); panel.close()\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-plus\"></i>\n </ax-prefix>\n </ax-button-item>\n }\n\n <!-- Delete (only for custom items with names) -->\n @if (item.name && metadata.isCustom) {\n <ax-divider></ax-divider>\n <ax-button-item\n [color]=\"'danger'\"\n [text]=\"('@general:actions.delete.title' | translate | async)!\"\n (onClick)=\"onAction('delete', nodeData); panel.close()\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-trash\"></i>\n </ax-prefix>\n </ax-button-item>\n }\n\n <!-- Info message for items without names -->\n @if (!item.name) {\n <ax-divider></ax-divider>\n <div class=\"p-2 text-xs text-neutral-500 italic\">\n {{ '@platform-management:menu-management.messages.info.no-name' | translate | async }}\n </div>\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n </div>\n</ng-template>\n"],"names":["i5","i6"],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-module-platform-management-client-menu-list.component-Cv8OxxDU.mjs","sources":["../../../../libs/modules/platform-management/client/src/lib/features/menu-management/pages/menu-list/menu-list.component.ts","../../../../libs/modules/platform-management/client/src/lib/features/menu-management/pages/menu-list/menu-list.component.html"],"sourcesContent":["\nimport { AXPActionMenuItem, AXPExecuteCommand, AXPPlatformScope } from '@acorex-platform/framework-shared/core';\nimport { AXBadgeModule } from '@acorex/components/badge';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDialogService } from '@acorex/components/dialog';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTreeViewBeforeDropEvent, AXTreeViewComponent, AXTreeViewDropEvent, AXTreeViewNode } from '@acorex/components/tree-view';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { AXPMenuItem } from '@acorex-platform/framework-client/common';\n\nimport { AXPLayoutBuilderService } from '@acorex-platform/framework-client/layout/builder';\nimport { AXPStateMessageComponent, AXPThemeLayoutBlockComponent } from '@acorex-platform/framework-client/layout/components';\nimport { AXPPageLayoutBase, AXPPageLayoutBaseComponent, AXPPageLayoutComponent } from '@acorex-platform/framework-client/layout/views';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n inject,\n OnDestroy,\n OnInit,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { Subject, takeUntil } from 'rxjs';\nimport { AXPMenuItemAction } from '../../menu-customization.types';\nimport { AXPMenuManagementService, AXPMenuTreeNodeData } from '../../menu-management.service';\n\n//#region ---- Menu List Component ----\n\n@Component({\n selector: 'axm-menu-list',\n imports: [\n CommonModule,\n AXButtonModule,\n AXDecoratorModule,\n AXDropdownButtonModule,\n AXDropdownModule,\n AXTranslationModule,\n AXTreeViewComponent,\n AXPPageLayoutComponent,\n AXPThemeLayoutBlockComponent,\n AXPStateMessageComponent,\n AXBadgeModule,\n ],\n templateUrl: './menu-list.component.html',\n styleUrls: ['./menu-list.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMMenuListComponent,\n },\n ],\n host: { class: 'axm-menu-list-page' },\n})\nexport class AXMMenuListComponent extends AXPPageLayoutBaseComponent implements OnInit, OnDestroy {\n //#region ---- Dependencies ----\n\n private menuManagementService = inject(AXPMenuManagementService);\n private layoutBuilder = inject(AXPLayoutBuilderService);\n protected dialogService = inject(AXDialogService);\n protected override toastService = inject(AXToastService);\n private translationService = inject(AXTranslationService);\n private route = inject(ActivatedRoute);\n\n //#endregion\n\n //#region ---- Component State ----\n\n protected tree = viewChild(AXTreeViewComponent);\n protected treeNodes = signal<AXTreeViewNode[]>([]);\n protected isLoading = signal<boolean>(false);\n protected error = signal<string>('');\n protected currentScope = signal<AXPPlatformScope>(AXPPlatformScope.User);\n private isSyncing = false; // Prevent concurrent sync operations\n private destroy$ = new Subject<void>(); // For subscription cleanup\n\n //#endregion\n\n //#region ---- Lifecycle ----\n\n override async ngOnInit(): Promise<void> {\n await super.ngOnInit();\n\n // Get scope from route (with memory leak prevention)\n this.route.params.pipe(takeUntil(this.destroy$)).subscribe(async (params) => {\n const scope = params['scope'] as AXPPlatformScope;\n if (scope) {\n this.currentScope.set(scope);\n await this.loadMenuItems();\n this.recompute(); // Update page header after loading\n }\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n //#endregion\n\n //#region ---- Event Handlers ----\n\n /**\n * Handle before drop validation\n */\n async handleBeforeDrop(e: AXTreeViewBeforeDropEvent): Promise<void> {\n console.log('[handleBeforeDrop] Event triggered!', {\n movedNode: e.movedNode?.['id'],\n previousParent: e.previousParent?.['id'],\n currentParent: e.currentParent?.['id'],\n previousIndex: e.previousIndex,\n currentIndex: e.currentIndex,\n });\n\n const targetParent = (e.currentParent?.['data'] as AXPMenuTreeNodeData) || null;\n\n // Prevent dropping into items with paths (leaf nodes)\n if (targetParent?.menuItem?.path) {\n e.canceled = true;\n const message = await this.translationService.translateAsync(\n '@platform-management:menu-management.messages.error.move',\n );\n this.toastService.warning(message);\n return;\n }\n\n // Note: Circular reference validation is handled by the tree component itself\n // Additional validation can be added here if needed based on business rules\n }\n\n /**\n * Handle after drop event to sync changes\n * The event contains information about the moved node and its new position\n */\n async handleAfterDrop(event: AXTreeViewDropEvent): Promise<void> {\n console.log('[handleAfterDrop] Event triggered!', {\n movedNode: event.node?.['id'],\n movedNodeData: event.node?.['data'],\n previousParent: event.previousParent?.['id'],\n currentParent: event.currentParent?.['id'],\n previousIndex: event.previousIndex,\n currentIndex: event.currentIndex,\n });\n\n // Check what the tree component has\n const treeComp = this.tree();\n if (treeComp) {\n console.log('[handleAfterDrop] Tree component datasource:', treeComp.datasource);\n }\n\n // Check our signal\n console.log('[handleAfterDrop] Our treeNodes signal:', this.treeNodes());\n\n await this.syncTreeChanges();\n }\n\n //#endregion\n\n //#region ---- Data Loading ----\n\n /**\n * Load menu tree for current scope\n */\n protected async loadMenuItems(): Promise<void> {\n try {\n this.isLoading.set(true);\n this.error.set('');\n\n const treeNodes = await this.menuManagementService.getMenuTreeByScope(this.currentScope());\n this.treeNodes.set(treeNodes);\n this.recompute();\n } catch (error) {\n this.error.set(error instanceof Error ? error.message : 'Failed to load menu items');\n const message = await this.translationService.translateAsync(\n '@platform-management:menu-management.messages.error.load',\n );\n this.toastService.danger(message);\n } finally {\n this.isLoading.set(false);\n }\n }\n\n /**\n * Sync tree changes to backend\n */\n private async syncTreeChanges(): Promise<void> {\n // Prevent concurrent sync operations\n if (this.isSyncing) {\n return;\n }\n\n try {\n this.isSyncing = true;\n const scope = this.currentScope();\n\n // Get nodes from signal - the tree component mutates the array in place\n // so this.treeNodes() will have the updated structure after drag-drop\n const nodes = this.treeNodes();\n\n console.log('[syncTreeChanges] nodes count:', nodes?.length);\n \n // Log detailed node structure\n const logNode = (n: any, level: number = 0): any => ({\n id: n['id'],\n title: n['title'],\n level,\n childrenCount: (n['children'] as any[])?.length ?? 0,\n children: (n['children'] as any[])?.map((c: any) => logNode(c, level + 1)) ?? [],\n });\n console.log('[syncTreeChanges] Full tree structure:', JSON.stringify(nodes?.map(n => logNode(n)), null, 2));\n\n if (!nodes || nodes.length === 0) {\n console.log('[syncTreeChanges] No nodes to sync');\n return;\n }\n\n await this.menuManagementService.syncTreeChangesByScope(scope, nodes);\n const message = await this.translationService.translateAsync(\n '@platform-management:menu-management.messages.success.reorder',\n );\n this.toastService.success(message);\n } catch (error) {\n console.error('Failed to sync tree changes:', error);\n const message = await this.translationService.translateAsync(\n '@platform-management:menu-management.messages.error.sync',\n );\n this.toastService.danger(message);\n } finally {\n this.isSyncing = false;\n }\n }\n\n //#endregion\n\n //#region ---- Page Layout Interface ----\n\n /**\n * Get page title\n */\n override async getPageTitle(): Promise<string> {\n const scopeName = this.currentScope();\n const scopeKey = scopeName === AXPPlatformScope.User ? 'user' : 'tenant';\n return this.translationService.translateAsync(`@platform-management:menu-management.menus.${scopeKey}.title`);\n }\n\n /**\n * Get page description\n */\n override async getPageDescription(): Promise<string> {\n return this.translationService.translateAsync(\n '@platform-management:menu-management.components.menu-list.description',\n );\n }\n\n /**\n * Get primary menu items (actions)\n */\n override async getPrimaryMenuItems(): Promise<AXPActionMenuItem[]> {\n return [\n {\n title: await this.translationService.translateAsync(\n '@platform-management:menu-management.actions.add-root.title',\n ),\n icon: 'fa-light fa-plus',\n color: 'primary',\n command: { name: 'add-root' },\n },\n ];\n }\n\n /**\n * Get secondary menu items\n */\n override async getSecondaryMenuItems(): Promise<AXPActionMenuItem[]> {\n return [\n {\n title: await this.translationService.translateAsync(\n '@platform-management:menu-management.actions.collapse.title',\n ),\n icon: 'fa-light fa-minus-square',\n command: { name: 'collapse' },\n },\n\n {\n title: await this.translationService.translateAsync(\n '@platform-management:menu-management.actions.expand.title',\n ),\n icon: 'fa-light fa-plus-square',\n command: { name: 'expand' },\n break: true,\n },\n {\n title: await this.translationService.translateAsync('@platform-management:menu-management.actions.reset.title'),\n icon: 'fa-light fa-rotate-left',\n color: 'danger',\n command: { name: 'reset' },\n },\n ];\n }\n\n /**\n * Execute commands from page actions\n */\n override async execute(command: AXPExecuteCommand): Promise<void> {\n switch (command.name) {\n case 'add-root':\n await this.addRootMenuItem();\n break;\n case 'collapse':\n this.tree()?.collapseAll();\n break;\n case 'expand':\n this.tree()?.expandAll();\n break;\n case 'reset':\n await this.resetCustomizations();\n break;\n }\n }\n\n //#endregion\n\n //#region ---- Action Handlers ----\n\n /**\n * Handle menu item action\n */\n protected async onAction(action: AXPMenuItemAction, nodeData: AXPMenuTreeNodeData): Promise<void> {\n switch (action) {\n case 'show':\n await this.showMenuItem(nodeData);\n break;\n case 'hide':\n await this.hideMenuItem(nodeData);\n break;\n case 'edit':\n await this.editMenuItem(nodeData);\n break;\n case 'delete':\n await this.deleteMenuItem(nodeData);\n break;\n case 'add-child':\n await this.addChildMenuItem(nodeData);\n break;\n }\n }\n\n /**\n * Add new root menu item\n */\n protected async addRootMenuItem(): Promise<void> {\n await this.showMenuItemDialog(null, null);\n }\n\n /**\n * Add new child menu item\n */\n protected async addChildMenuItem(parentNodeData: AXPMenuTreeNodeData): Promise<void> {\n await this.showMenuItemDialog(null, parentNodeData.menuItem.name);\n }\n\n /**\n * Reset customizations\n */\n protected async resetCustomizations(): Promise<void> {\n const title = await this.translationService.translateAsync(\n '@platform-management:menu-management.actions.reset.confirm.title',\n );\n const message = await this.translationService.translateAsync(\n '@platform-management:menu-management.actions.reset.confirm.message',\n );\n const confirmed = await this.dialogService.confirm(title, message);\n\n if (!confirmed) return;\n\n try {\n // Reset customizations for current scope\n await this.menuManagementService.resetCustomizationsByScope(this.currentScope());\n const message = await this.translationService.translateAsync(\n '@platform-management:menu-management.messages.success.reset',\n );\n this.toastService.success(message);\n } catch (error) {\n console.error('Failed to reset customizations:', error);\n const message = await this.translationService.translateAsync(\n '@platform-management:menu-management.messages.error.reset',\n );\n this.toastService.danger(message);\n } finally {\n // Reload anyway to show current state\n await this.loadMenuItems();\n }\n }\n\n //#endregion\n\n //#region ---- Menu Item Actions ----\n\n /**\n * Show menu item\n */\n private async showMenuItem(nodeData: AXPMenuTreeNodeData): Promise<void> {\n await this.executeMenuAction(\n () => this.menuManagementService.showMenuItemByScope(this.currentScope(), nodeData.menuItem.name!),\n '@platform-management:menu-management.messages.success.show',\n '@platform-management:menu-management.messages.error.show',\n );\n }\n\n /**\n * Hide menu item\n */\n private async hideMenuItem(nodeData: AXPMenuTreeNodeData): Promise<void> {\n await this.executeMenuAction(\n () => this.menuManagementService.hideMenuItemByScope(this.currentScope(), nodeData.menuItem.name!),\n '@platform-management:menu-management.messages.success.hide',\n '@platform-management:menu-management.messages.error.hide',\n );\n }\n\n /**\n * Edit menu item\n */\n private async editMenuItem(nodeData: AXPMenuTreeNodeData): Promise<void> {\n await this.showMenuItemDialog(nodeData);\n }\n\n /**\n * Delete custom menu item\n */\n private async deleteMenuItem(nodeData: AXPMenuTreeNodeData): Promise<void> {\n const title = await this.translationService.translateAsync('@general:actions.delete.title');\n const message = await this.translationService.translateAsync(\n '@platform-management:menu-management.actions.delete.confirm.message',\n );\n const confirmed = await this.dialogService.confirm(title, message);\n\n if (!confirmed) return;\n\n try {\n const item = nodeData.menuItem;\n if (!item.name) return;\n\n await this.menuManagementService.deleteCustomMenuItemByScope(this.currentScope(), item.name);\n const message = await this.translationService.translateAsync(\n '@platform-management:menu-management.messages.success.delete',\n );\n this.toastService.success(message);\n await this.loadMenuItems();\n } catch (error) {\n const message = await this.translationService.translateAsync(\n '@platform-management:menu-management.messages.error.delete',\n );\n this.toastService.danger(message);\n }\n }\n\n //#endregion\n\n //#region ---- Dialog Helpers ----\n\n /**\n * Show menu item dialog (add/edit)\n */\n private async showMenuItemDialog(\n nodeData: AXPMenuTreeNodeData | null,\n parentName: string | null = null,\n ): Promise<void> {\n const item = nodeData?.menuItem;\n const isEdit = !!item;\n const title = isEdit\n ? '@platform-management:menu-management.components.edit-dialog.title'\n : '@platform-management:menu-management.components.add-dialog.title';\n\n const context = {\n name: item?.name || '',\n text: item?.text || '',\n type: item?.type || 'menu',\n icon: item?.icon || '',\n path: item?.path || '',\n priority: item?.priority || 0,\n description: item?.description || '',\n };\n\n const dialogRef: any = await this.layoutBuilder\n .create()\n .dialog((dialog: any) => {\n dialog\n .setTitle(title)\n .setContext(context)\n .content((flex: any) => {\n flex\n .setDirection('column')\n .formField('@platform-management:menu-management.fields.name', (field: any) => {\n field.path('name');\n field.textBox({\n placeholder: '@platform-management:menu-management.fields.name',\n validations: [{ rule: 'required' }],\n disabled: isEdit && nodeData?.metadata?.isBuiltIn,\n });\n })\n .formField('@platform-management:menu-management.fields.text', (field: any) => {\n field.path('text');\n field.textBox({\n placeholder: '@platform-management:menu-management.fields.text',\n validations: [{ rule: 'required' }],\n });\n })\n .formField('@platform-management:menu-management.fields.icon', (field: any) => {\n field.path('icon');\n field.customWidget('icon-chooser', {});\n })\n .formField('@platform-management:menu-management.fields.path', (field: any) => {\n field.path('path');\n field.textBox({\n placeholder: '@platform-management:menu-management.fields.path',\n disabled: isEdit && nodeData?.metadata?.isBuiltIn,\n });\n })\n .formField('@platform-management:menu-management.fields.priority', (field: any) => {\n field.path('priority');\n field.numberBox({\n placeholder: '@platform-management:menu-management.fields.priority',\n step: 10,\n });\n })\n .formField('@platform-management:menu-management.fields.description', (field: any) => {\n field.path('description');\n field.largeTextBox({\n placeholder: '@platform-management:menu-management.fields.description',\n rows: 3,\n });\n });\n })\n .setActions((actions: any) => {\n actions.cancel('@general:actions.cancel.title').submit('@general:actions.save.title');\n });\n })\n .show();\n\n const action = dialogRef.action();\n if (action === 'cancel') {\n dialogRef.close();\n return;\n }\n\n const formData = dialogRef.context() as Partial<AXPMenuItem>;\n\n try {\n if (isEdit && item?.name) {\n // Update existing item\n if (nodeData?.metadata?.isCustom) {\n await this.menuManagementService.updateCustomMenuItemByScope(\n this.currentScope(),\n item.name,\n formData as AXPMenuItem,\n );\n } else {\n await this.menuManagementService.updateMenuPropertiesByScope(this.currentScope(), item.name, formData);\n }\n } else {\n // Add new custom item\n const newItem: AXPMenuItem = {\n name: formData.name!,\n text: formData.text!,\n icon: formData.icon,\n path: formData.path,\n priority: formData.priority,\n description: formData.description,\n };\n\n // If parent is specified, add as child\n if (parentName) {\n // Add custom item as child of parent\n await this.menuManagementService.addCustomMenuItemByScope(this.currentScope(), newItem, parentName);\n } else {\n // Add as root level item\n await this.menuManagementService.addCustomMenuItemByScope(this.currentScope(), newItem, null);\n }\n }\n\n const message = await this.translationService.translateAsync(\n '@platform-management:menu-management.messages.success.save',\n );\n this.toastService.success(message);\n await this.loadMenuItems();\n dialogRef.close();\n } catch (error) {\n const message = await this.translationService.translateAsync(\n '@platform-management:menu-management.messages.error.save',\n );\n this.toastService.danger(message);\n }\n }\n\n /**\n * Execute a menu action with common error handling\n */\n private async executeMenuAction(\n action: () => Promise<void>,\n successMessageKey: string,\n errorMessageKey: string,\n ): Promise<void> {\n try {\n await action();\n const message = await this.translationService.translateAsync(successMessageKey);\n this.toastService.success(message);\n await this.loadMenuItems();\n } catch (error) {\n console.error('Menu action failed:', error);\n const message = await this.translationService.translateAsync(errorMessageKey);\n this.toastService.danger(message);\n }\n }\n\n //#endregion\n}\n\n//#endregion\n","<axp-page-layout>\n <axp-page-content>\n @if (isLoading()) {\n <!-- Loading State -->\n <axp-state-message\n mode=\"loading\"\n icon=\"fa-light fa-spinner-third fa-spin\"\n [title]=\"\n ('@platform-management:menu-management.components.menu-list.empty-states.loading.title' | translate | async)!\n \"\n [description]=\"\n ('@platform-management:menu-management.components.menu-list.empty-states.loading.description'\n | translate\n | async)!\n \"\n />\n } @else if (error()) {\n <!-- Error State -->\n <axp-state-message\n mode=\"error\"\n icon=\"fa-light fa-circle-exclamation\"\n [title]=\"\n ('@platform-management:menu-management.components.menu-list.empty-states.error.title' | translate | async)!\n \"\n [description]=\"\n ('@platform-management:menu-management.components.menu-list.empty-states.error.description'\n | translate\n | async)!\n \"\n >\n <ax-button\n slot=\"actions\"\n [text]=\"'@general:actions.retry.title' | translate | async\"\n [look]=\"'outline'\"\n [color]=\"'primary'\"\n (onClick)=\"loadMenuItems()\"\n >\n <i class=\"fa-light fa-rotate-left\"></i>\n </ax-button>\n </axp-state-message>\n } @else if (treeNodes().length === 0) {\n <!-- Empty State -->\n <axp-state-message\n mode=\"empty\"\n icon=\"fa-light fa-bars\"\n [title]=\"\n ('@platform-management:menu-management.components.menu-list.empty-states.no-data.title' | translate | async)!\n \"\n [description]=\"\n ('@platform-management:menu-management.components.menu-list.empty-states.no-data.description'\n | translate\n | async)!\n \"\n >\n <ax-button\n slot=\"actions\"\n [text]=\"'@platform-management:menu-management.actions.add-root.title' | translate | async\"\n [look]=\"'solid'\"\n [color]=\"'primary'\"\n (onClick)=\"addRootMenuItem()\"\n >\n <i class=\"fa-light fa-plus\"></i>\n </ax-button>\n </axp-state-message>\n } @else {\n <!-- Menu Tree Content -->\n <div class=\"axm-menu-list__container\">\n <!-- Menu Tree -->\n <div class=\"axm-menu-list__tree\">\n <ax-tree-view\n [(datasource)]=\"treeNodes\"\n [look]=\"'default'\"\n [nodeTemplate]=\"itemTemplate\"\n [selectMode]=\"'none'\"\n [showIcons]=\"false\"\n [showChildrenBadge]=\"false\"\n [dragBehavior]=\"'move'\"\n [dragArea]=\"'handler'\"\n (onBeforeDrop)=\"handleBeforeDrop($event)\"\n (onItemsChange)=\"handleAfterDrop($event)\"\n ></ax-tree-view>\n </div>\n </div>\n }\n </axp-page-content>\n</axp-page-layout>\n\n<!-- Custom Item Template -->\n<ng-template #itemTemplate let-node=\"node\" let-level=\"level\">\n @let nodeData = node['data'];\n @let item = nodeData.menuItem;\n @let metadata = nodeData.metadata;\n <div\n class=\"axm-menu-tree-item__wrapper\"\n [class.axm-menu-tree-item__wrapper--hidden]=\"metadata.isHidden\"\n [class.axm-menu-tree-item__wrapper--custom]=\"metadata.isCustom\"\n [class.axm-menu-tree-item__wrapper--group]=\"item.type === 'group'\"\n >\n <!-- Icon (hidden for groups) -->\n @if (item.icon && item.type !== 'group') {\n <i class=\"axm-menu-tree-item__icon\" [class]=\"item.icon\"></i>\n }\n\n <!-- Text or Info -->\n @if (item.type === 'group') {\n <!-- Group Heading -->\n <span class=\"axm-menu-tree-item__group\">\n <i class=\"fa-light fa-layer-group\"></i>\n {{ item.text | translate | async }}\n </span>\n } @else if (item.type === 'break') {\n <!-- Divider -->\n <span class=\"axm-menu-tree-item__divider\">\n <i class=\"fa-light fa-minus\"></i>\n {{ '@platform-management:menu-management.states.divider' | translate | async }}\n </span>\n } @else if (item.text) {\n <!-- Regular Menu Item -->\n <span class=\"axm-menu-tree-item__text\">\n {{ item.text | translate | async }}\n </span>\n } @else if (item.path) {\n <!-- Path-only Item -->\n <span class=\"axm-menu-tree-item__path\">\n <i class=\"fa-light fa-link\"></i>\n {{ item.path }}\n </span>\n }\n\n <!-- Menu Name/Key -->\n @if (item.name) {\n <code class=\"axm-menu-tree-item__name\">{{ item.name }}</code>\n }\n\n <!-- Status Badges -->\n @if (metadata.isHidden) {\n <ax-badge\n [text]=\"('@platform-management:menu-management.states.hidden' | translate | async)!\"\n color=\"danger\"\n ></ax-badge>\n } @else if (metadata.isCustom) {\n <ax-badge\n [text]=\"('@platform-management:menu-management.states.custom' | translate | async)!\"\n color=\"success\"\n ></ax-badge>\n } @else if (metadata.isBuiltIn) {\n <ax-badge\n [text]=\"('@platform-management:menu-management.states.built-in' | translate | async)!\"\n color=\"primary\"\n ></ax-badge>\n }\n\n <!-- Actions Dropdown -->\n <ax-button class=\"axm-menu-tree-item__actions ax-sm\" [look]=\"'blank'\" [iconOnly]=\"true\">\n <ax-prefix>\n <i class=\"fa-light fa-ellipsis-vertical\"></i>\n </ax-prefix>\n\n <ax-dropdown-panel #panel>\n <ax-button-item-list>\n <!-- Edit (only for items with names) -->\n @if (item.name) {\n <ax-button-item\n [text]=\"('@general:actions.edit.title' | translate | async)!\"\n (onClick)=\"onAction('edit', nodeData); panel.close()\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-edit\"></i>\n </ax-prefix>\n </ax-button-item>\n }\n\n <!-- Show/Hide (only for items with names) -->\n @if (item.name && metadata.isBuiltIn) {\n @if (metadata.isHidden) {\n <ax-button-item\n [text]=\"('@platform-management:menu-management.actions.show.title' | translate | async)!\"\n (onClick)=\"onAction('show', nodeData); panel.close()\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-eye\"></i>\n </ax-prefix>\n </ax-button-item>\n } @else {\n <ax-button-item\n [text]=\"('@platform-management:menu-management.actions.hide.title' | translate | async)!\"\n (onClick)=\"onAction('hide', nodeData); panel.close()\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-eye-slash\"></i>\n </ax-prefix>\n </ax-button-item>\n }\n }\n\n @if (!item.path && (item.type === 'menu' || !item.type)) {\n <!-- Add Child -->\n <ax-button-item\n [text]=\"('@platform-management:menu-management.actions.add-child.title' | translate | async)!\"\n (onClick)=\"onAction('add-child', nodeData); panel.close()\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-plus\"></i>\n </ax-prefix>\n </ax-button-item>\n }\n\n <!-- Delete (only for custom items with names) -->\n @if (item.name && metadata.isCustom) {\n <ax-divider></ax-divider>\n <ax-button-item\n [color]=\"'danger'\"\n [text]=\"('@general:actions.delete.title' | translate | async)!\"\n (onClick)=\"onAction('delete', nodeData); panel.close()\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-trash\"></i>\n </ax-prefix>\n </ax-button-item>\n }\n\n <!-- Info message for items without names -->\n @if (!item.name) {\n <ax-divider></ax-divider>\n <div class=\"p-2 text-xs text-neutral-500 italic\">\n {{ '@platform-management:menu-management.messages.info.no-name' | translate | async }}\n </div>\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n </div>\n</ng-template>\n"],"names":["i5","i6"],"mappings":"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"}
@@ -15,7 +15,7 @@ import * as i1 from '@angular/forms';
15
15
  import { FormsModule } from '@angular/forms';
16
16
  import { isEqual } from 'lodash-es';
17
17
  import { a as resolveAvailableContractFields, s as selectedFieldPathsFromGroups, i as pathsFromFilterSection, j as pathsFromSortSection, k as isCollectionQueryKind, l as reconcileContractCapabilities, t as toFilterSection, m as toSortSection, D as DEFAULT_USER_QUERY_PAGING, o as createDefaultContractCapabilities } from './acorex-platform-module-platform-management-client-create-user-query-contract.util-D_af2BUi.mjs';
18
- import { C as CREATE_USER_QUERY_I18N } from './acorex-platform-module-platform-management-client-acorex-platform-module-platform-management-client-YuJijjKh.mjs';
18
+ import { C as CREATE_USER_QUERY_I18N } from './acorex-platform-module-platform-management-client-acorex-platform-module-platform-management-client-CkONcG6P.mjs';
19
19
 
20
20
  //#region ----- Imports -----
21
21
  //#endregion
@@ -163,4 +163,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
163
163
  }], ctorParameters: () => [] });
164
164
 
165
165
  export { AXMQueryContractWidgetEditComponent };
166
- //# sourceMappingURL=acorex-platform-module-platform-management-client-query-contract-widget-edit.component-BW2pBOeg.mjs.map
166
+ //# sourceMappingURL=acorex-platform-module-platform-management-client-query-contract-widget-edit.component-z_kLoO-q.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-platform-management-client-query-contract-widget-edit.component-BW2pBOeg.mjs","sources":["../../../../libs/modules/platform-management/client/src/lib/features/query-contract-widget/query-contract-widget-edit.component.ts","../../../../libs/modules/platform-management/client/src/lib/features/query-contract-widget/query-contract-widget-edit.component.html"],"sourcesContent":["//#region ----- Imports -----\n\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXDataSource } from '@acorex/cdk/common';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXLookupComponent } from '@acorex/components/lookup';\nimport { AXSwitchModule } from '@acorex/components/switch';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, signal, untracked } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { isEqual } from 'lodash-es';\n\nimport {\n createDefaultContractCapabilities,\n DEFAULT_USER_QUERY_PAGING,\n isCollectionQueryKind,\n pathsFromFilterSection,\n pathsFromSortSection,\n reconcileContractCapabilities,\n resolveAvailableContractFields,\n selectedFieldPathsFromGroups,\n toFilterSection,\n toSortSection,\n} from '../query-definition/create-user-query-contract.util';\nimport {\n CREATE_USER_QUERY_I18N as i18n,\n type AXPUserQueryContractCapabilities,\n type AXPUserQueryEntityFieldItem,\n} from '../query-definition/create-user-query.types';\n\n//#endregion\n\n//#region ----- Types -----\n\ninterface AXPQueryContractFieldOption {\n value: string;\n text: string;\n}\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n selector: 'axm-query-contract-widget-edit',\n templateUrl: './query-contract-widget-edit.component.html',\n styleUrl: './query-contract-widget-edit.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'block w-full',\n },\n imports: [CommonModule, FormsModule, AXLabelModule, AXLookupComponent, AXSwitchModule, AXTranslationModule],\n})\nexport class AXMQueryContractWidgetEditComponent extends AXPValueWidgetComponent<AXPUserQueryContractCapabilities> {\n //#region ----- Constants -----\n\n protected readonly fieldsI18n = i18n.fields;\n protected readonly placeholdersI18n = i18n.placeholders;\n\n //#endregion\n\n //#region ----- State Signals -----\n\n private readonly lastAvailablePaths = signal<string[]>([]);\n\n //#endregion\n\n //#region ----- Computed Properties -----\n\n protected readonly catalogFields = computed<AXPUserQueryEntityFieldItem[]>(() => {\n const raw = this.options()['fields'];\n return Array.isArray(raw) ? (raw as AXPUserQueryEntityFieldItem[]) : [];\n });\n\n protected readonly availableFields = computed<AXPUserQueryEntityFieldItem[]>(() => {\n this.contextService.data();\n const fieldGroups = this.contextService.getValue('source.entity.fieldGroups') as\n | Record<string, string[]>\n | undefined;\n return resolveAvailableContractFields(this.catalogFields(), selectedFieldPathsFromGroups(fieldGroups));\n });\n\n protected readonly fieldDataSource = computed(\n () => this.createFieldDataSource(this.availableFields()),\n { equal: isEqual },\n );\n\n protected readonly filterPaths = computed(() => pathsFromFilterSection(this.getValue()?.filter));\n protected readonly sortPaths = computed(() => pathsFromSortSection(this.getValue()?.sort));\n protected readonly pagingEnabled = computed(() => this.getValue()?.paging?.enabled === true);\n protected readonly valueField = computed(() => this.getValue()?.binding?.valueField ?? '');\n protected readonly textField = computed(() => this.getValue()?.binding?.textField ?? '');\n protected readonly isCollection = computed(() => {\n this.contextService.data();\n return isCollectionQueryKind(this.contextService.getValue('contract.kind'));\n });\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n constructor() {\n super();\n effect(() => {\n const available = this.availableFields();\n const paths = available.map((field) => field.path);\n const boundPath = this.fullPath();\n untracked(() => {\n if (!boundPath) {\n return;\n }\n const current = this.getValue() ?? undefined;\n const previous = this.lastAvailablePaths();\n const next = reconcileContractCapabilities(current, available, previous);\n this.lastAvailablePaths.set(paths);\n if (!current) {\n this.setValue(next);\n return;\n }\n if (!isEqual(current, next)) {\n this.setValue(next);\n }\n });\n });\n }\n\n //#endregion\n\n //#region ----- Event Handlers -----\n\n protected onFilterPathsChange(paths: string[] | null | undefined): void {\n this.patchCapabilities({ filter: toFilterSection(this.fieldsByPaths(paths ?? [])) });\n }\n\n protected onSortPathsChange(paths: string[] | null | undefined): void {\n this.patchCapabilities({ sort: toSortSection(this.fieldsByPaths(paths ?? [])) });\n }\n\n protected onPagingChange(enabled: boolean): void {\n const current = this.currentCapabilities();\n this.patchCapabilities({\n paging: enabled\n ? {\n enabled: true,\n definition: {\n ...DEFAULT_USER_QUERY_PAGING.definition,\n ...(current.paging.enabled ? current.paging.definition : {}),\n },\n }\n : { enabled: false },\n });\n }\n\n protected onValueFieldChange(valueField: string | null | undefined): void {\n const current = this.currentCapabilities();\n const next = String(valueField ?? '').trim() || current.binding.valueField;\n this.patchCapabilities({\n binding: { ...current.binding, valueField: next },\n });\n }\n\n protected onTextFieldChange(textField: string | null | undefined): void {\n const current = this.currentCapabilities();\n const next = String(textField ?? '').trim() || current.binding.textField;\n this.patchCapabilities({\n binding: { ...current.binding, textField: next },\n });\n }\n\n //#endregion\n\n //#region ----- Private helpers -----\n\n private currentCapabilities(): AXPUserQueryContractCapabilities {\n return this.getValue() ?? createDefaultContractCapabilities(this.availableFields());\n }\n\n private patchCapabilities(patch: Partial<AXPUserQueryContractCapabilities>): void {\n this.setValue({\n ...this.currentCapabilities(),\n ...patch,\n });\n }\n\n private fieldsByPaths(paths: string[]): AXPUserQueryEntityFieldItem[] {\n const byPath = new Map(this.availableFields().map((field) => [field.path, field]));\n return paths\n .map((path) => String(path ?? '').trim())\n .filter((path) => path.length > 0)\n .map((path) => byPath.get(path) ?? { path, text: path });\n }\n\n private createFieldDataSource(fields: AXPUserQueryEntityFieldItem[]): AXDataSource<AXPQueryContractFieldOption> {\n const items: AXPQueryContractFieldOption[] = fields.map((field) => ({\n value: field.path,\n text: field.text || field.path,\n }));\n\n return new AXDataSource<AXPQueryContractFieldOption>({\n load: () => Promise.resolve({ items, total: items.length }),\n byKey: (key: unknown) => {\n const value = String(key ?? '');\n return items.find((row) => row.value === value) ?? { value, text: value };\n },\n pageSize: 1000,\n key: 'value',\n });\n }\n\n //#endregion\n}\n\n//#endregion\n","<!-- ----- Filterable fields callers may send (all kinds) ----- -->\n<div class=\"axm-query-contract-widget__section\">\n <ax-label class=\"axm-query-contract-widget__title\">\n {{ fieldsI18n.filterableFields | translate | async }}\n </ax-label>\n <p class=\"axm-query-contract-widget__hint\">\n {{ placeholdersI18n.filterableFields | translate | async }}\n </p>\n <ax-lookup\n mode=\"multi-select\"\n [dataSource]=\"fieldDataSource()\"\n [ngModel]=\"filterPaths()\"\n (ngModelChange)=\"onFilterPathsChange($event)\"\n [searchable]=\"true\"\n [placeholder]=\"(placeholdersI18n.filterableFields | translate | async) ?? ''\"\n textField=\"text\"\n valueField=\"value\"\n look=\"outline\"\n ></ax-lookup>\n</div>\n\n@if (isCollection()) {\n <!-- ----- Collection sort, paging, and lookup binding ----- -->\n <div class=\"axm-query-contract-widget__section\">\n <ax-label class=\"axm-query-contract-widget__title\">\n {{ fieldsI18n.sortableFields | translate | async }}\n </ax-label>\n <p class=\"axm-query-contract-widget__hint\">\n {{ placeholdersI18n.sortableFields | translate | async }}\n </p>\n <ax-lookup\n mode=\"multi-select\"\n [dataSource]=\"fieldDataSource()\"\n [ngModel]=\"sortPaths()\"\n (ngModelChange)=\"onSortPathsChange($event)\"\n [searchable]=\"true\"\n [placeholder]=\"(placeholdersI18n.sortableFields | translate | async) ?? ''\"\n textField=\"text\"\n valueField=\"value\"\n look=\"outline\"\n ></ax-lookup>\n </div>\n\n <!-- ----- Paging skip/take contract ----- -->\n <div class=\"axm-query-contract-widget__section axm-query-contract-widget__section--row\">\n <div class=\"axm-query-contract-widget__paging-copy\">\n <ax-label class=\"axm-query-contract-widget__title\">\n {{ fieldsI18n.paging | translate | async }}\n </ax-label>\n <p class=\"axm-query-contract-widget__hint\">\n {{ placeholdersI18n.paging | translate | async }}\n </p>\n </div>\n <ax-switch\n class=\"ax-sm\"\n [ngModel]=\"pagingEnabled()\"\n (ngModelChange)=\"onPagingChange($event)\"\n ></ax-switch>\n </div>\n\n <!-- ----- Lookup binding value and text fields ----- -->\n <div class=\"axm-query-contract-widget__binding\">\n <div class=\"axm-query-contract-widget__section\">\n <ax-label class=\"axm-query-contract-widget__title\">\n {{ fieldsI18n.valueField | translate | async }}\n </ax-label>\n <ax-lookup\n mode=\"drop-down-list\"\n [dataSource]=\"fieldDataSource()\"\n [ngModel]=\"valueField()\"\n (ngModelChange)=\"onValueFieldChange($event)\"\n [searchable]=\"true\"\n textField=\"text\"\n valueField=\"value\"\n look=\"outline\"\n ></ax-lookup>\n </div>\n <div class=\"axm-query-contract-widget__section\">\n <ax-label class=\"axm-query-contract-widget__title\">\n {{ fieldsI18n.textField | translate | async }}\n </ax-label>\n <ax-lookup\n mode=\"drop-down-list\"\n [dataSource]=\"fieldDataSource()\"\n [ngModel]=\"textField()\"\n (ngModelChange)=\"onTextFieldChange($event)\"\n [searchable]=\"true\"\n textField=\"text\"\n valueField=\"value\"\n look=\"outline\"\n ></ax-lookup>\n </div>\n </div>\n}\n"],"names":["i18n","i4"],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-module-platform-management-client-query-contract-widget-edit.component-z_kLoO-q.mjs","sources":["../../../../libs/modules/platform-management/client/src/lib/features/query-contract-widget/query-contract-widget-edit.component.ts","../../../../libs/modules/platform-management/client/src/lib/features/query-contract-widget/query-contract-widget-edit.component.html"],"sourcesContent":["//#region ----- Imports -----\n\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXDataSource } from '@acorex/cdk/common';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXLookupComponent } from '@acorex/components/lookup';\nimport { AXSwitchModule } from '@acorex/components/switch';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, signal, untracked } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { isEqual } from 'lodash-es';\n\nimport {\n createDefaultContractCapabilities,\n DEFAULT_USER_QUERY_PAGING,\n isCollectionQueryKind,\n pathsFromFilterSection,\n pathsFromSortSection,\n reconcileContractCapabilities,\n resolveAvailableContractFields,\n selectedFieldPathsFromGroups,\n toFilterSection,\n toSortSection,\n} from '../query-definition/create-user-query-contract.util';\nimport {\n CREATE_USER_QUERY_I18N as i18n,\n type AXPUserQueryContractCapabilities,\n type AXPUserQueryEntityFieldItem,\n} from '../query-definition/create-user-query.types';\n\n//#endregion\n\n//#region ----- Types -----\n\ninterface AXPQueryContractFieldOption {\n value: string;\n text: string;\n}\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n selector: 'axm-query-contract-widget-edit',\n templateUrl: './query-contract-widget-edit.component.html',\n styleUrl: './query-contract-widget-edit.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'block w-full',\n },\n imports: [CommonModule, FormsModule, AXLabelModule, AXLookupComponent, AXSwitchModule, AXTranslationModule],\n})\nexport class AXMQueryContractWidgetEditComponent extends AXPValueWidgetComponent<AXPUserQueryContractCapabilities> {\n //#region ----- Constants -----\n\n protected readonly fieldsI18n = i18n.fields;\n protected readonly placeholdersI18n = i18n.placeholders;\n\n //#endregion\n\n //#region ----- State Signals -----\n\n private readonly lastAvailablePaths = signal<string[]>([]);\n\n //#endregion\n\n //#region ----- Computed Properties -----\n\n protected readonly catalogFields = computed<AXPUserQueryEntityFieldItem[]>(() => {\n const raw = this.options()['fields'];\n return Array.isArray(raw) ? (raw as AXPUserQueryEntityFieldItem[]) : [];\n });\n\n protected readonly availableFields = computed<AXPUserQueryEntityFieldItem[]>(() => {\n this.contextService.data();\n const fieldGroups = this.contextService.getValue('source.entity.fieldGroups') as\n | Record<string, string[]>\n | undefined;\n return resolveAvailableContractFields(this.catalogFields(), selectedFieldPathsFromGroups(fieldGroups));\n });\n\n protected readonly fieldDataSource = computed(\n () => this.createFieldDataSource(this.availableFields()),\n { equal: isEqual },\n );\n\n protected readonly filterPaths = computed(() => pathsFromFilterSection(this.getValue()?.filter));\n protected readonly sortPaths = computed(() => pathsFromSortSection(this.getValue()?.sort));\n protected readonly pagingEnabled = computed(() => this.getValue()?.paging?.enabled === true);\n protected readonly valueField = computed(() => this.getValue()?.binding?.valueField ?? '');\n protected readonly textField = computed(() => this.getValue()?.binding?.textField ?? '');\n protected readonly isCollection = computed(() => {\n this.contextService.data();\n return isCollectionQueryKind(this.contextService.getValue('contract.kind'));\n });\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n constructor() {\n super();\n effect(() => {\n const available = this.availableFields();\n const paths = available.map((field) => field.path);\n const boundPath = this.fullPath();\n untracked(() => {\n if (!boundPath) {\n return;\n }\n const current = this.getValue() ?? undefined;\n const previous = this.lastAvailablePaths();\n const next = reconcileContractCapabilities(current, available, previous);\n this.lastAvailablePaths.set(paths);\n if (!current) {\n this.setValue(next);\n return;\n }\n if (!isEqual(current, next)) {\n this.setValue(next);\n }\n });\n });\n }\n\n //#endregion\n\n //#region ----- Event Handlers -----\n\n protected onFilterPathsChange(paths: string[] | null | undefined): void {\n this.patchCapabilities({ filter: toFilterSection(this.fieldsByPaths(paths ?? [])) });\n }\n\n protected onSortPathsChange(paths: string[] | null | undefined): void {\n this.patchCapabilities({ sort: toSortSection(this.fieldsByPaths(paths ?? [])) });\n }\n\n protected onPagingChange(enabled: boolean): void {\n const current = this.currentCapabilities();\n this.patchCapabilities({\n paging: enabled\n ? {\n enabled: true,\n definition: {\n ...DEFAULT_USER_QUERY_PAGING.definition,\n ...(current.paging.enabled ? current.paging.definition : {}),\n },\n }\n : { enabled: false },\n });\n }\n\n protected onValueFieldChange(valueField: string | null | undefined): void {\n const current = this.currentCapabilities();\n const next = String(valueField ?? '').trim() || current.binding.valueField;\n this.patchCapabilities({\n binding: { ...current.binding, valueField: next },\n });\n }\n\n protected onTextFieldChange(textField: string | null | undefined): void {\n const current = this.currentCapabilities();\n const next = String(textField ?? '').trim() || current.binding.textField;\n this.patchCapabilities({\n binding: { ...current.binding, textField: next },\n });\n }\n\n //#endregion\n\n //#region ----- Private helpers -----\n\n private currentCapabilities(): AXPUserQueryContractCapabilities {\n return this.getValue() ?? createDefaultContractCapabilities(this.availableFields());\n }\n\n private patchCapabilities(patch: Partial<AXPUserQueryContractCapabilities>): void {\n this.setValue({\n ...this.currentCapabilities(),\n ...patch,\n });\n }\n\n private fieldsByPaths(paths: string[]): AXPUserQueryEntityFieldItem[] {\n const byPath = new Map(this.availableFields().map((field) => [field.path, field]));\n return paths\n .map((path) => String(path ?? '').trim())\n .filter((path) => path.length > 0)\n .map((path) => byPath.get(path) ?? { path, text: path });\n }\n\n private createFieldDataSource(fields: AXPUserQueryEntityFieldItem[]): AXDataSource<AXPQueryContractFieldOption> {\n const items: AXPQueryContractFieldOption[] = fields.map((field) => ({\n value: field.path,\n text: field.text || field.path,\n }));\n\n return new AXDataSource<AXPQueryContractFieldOption>({\n load: () => Promise.resolve({ items, total: items.length }),\n byKey: (key: unknown) => {\n const value = String(key ?? '');\n return items.find((row) => row.value === value) ?? { value, text: value };\n },\n pageSize: 1000,\n key: 'value',\n });\n }\n\n //#endregion\n}\n\n//#endregion\n","<!-- ----- Filterable fields callers may send (all kinds) ----- -->\n<div class=\"axm-query-contract-widget__section\">\n <ax-label class=\"axm-query-contract-widget__title\">\n {{ fieldsI18n.filterableFields | translate | async }}\n </ax-label>\n <p class=\"axm-query-contract-widget__hint\">\n {{ placeholdersI18n.filterableFields | translate | async }}\n </p>\n <ax-lookup\n mode=\"multi-select\"\n [dataSource]=\"fieldDataSource()\"\n [ngModel]=\"filterPaths()\"\n (ngModelChange)=\"onFilterPathsChange($event)\"\n [searchable]=\"true\"\n [placeholder]=\"(placeholdersI18n.filterableFields | translate | async) ?? ''\"\n textField=\"text\"\n valueField=\"value\"\n look=\"outline\"\n ></ax-lookup>\n</div>\n\n@if (isCollection()) {\n <!-- ----- Collection sort, paging, and lookup binding ----- -->\n <div class=\"axm-query-contract-widget__section\">\n <ax-label class=\"axm-query-contract-widget__title\">\n {{ fieldsI18n.sortableFields | translate | async }}\n </ax-label>\n <p class=\"axm-query-contract-widget__hint\">\n {{ placeholdersI18n.sortableFields | translate | async }}\n </p>\n <ax-lookup\n mode=\"multi-select\"\n [dataSource]=\"fieldDataSource()\"\n [ngModel]=\"sortPaths()\"\n (ngModelChange)=\"onSortPathsChange($event)\"\n [searchable]=\"true\"\n [placeholder]=\"(placeholdersI18n.sortableFields | translate | async) ?? ''\"\n textField=\"text\"\n valueField=\"value\"\n look=\"outline\"\n ></ax-lookup>\n </div>\n\n <!-- ----- Paging skip/take contract ----- -->\n <div class=\"axm-query-contract-widget__section axm-query-contract-widget__section--row\">\n <div class=\"axm-query-contract-widget__paging-copy\">\n <ax-label class=\"axm-query-contract-widget__title\">\n {{ fieldsI18n.paging | translate | async }}\n </ax-label>\n <p class=\"axm-query-contract-widget__hint\">\n {{ placeholdersI18n.paging | translate | async }}\n </p>\n </div>\n <ax-switch\n class=\"ax-sm\"\n [ngModel]=\"pagingEnabled()\"\n (ngModelChange)=\"onPagingChange($event)\"\n ></ax-switch>\n </div>\n\n <!-- ----- Lookup binding value and text fields ----- -->\n <div class=\"axm-query-contract-widget__binding\">\n <div class=\"axm-query-contract-widget__section\">\n <ax-label class=\"axm-query-contract-widget__title\">\n {{ fieldsI18n.valueField | translate | async }}\n </ax-label>\n <ax-lookup\n mode=\"drop-down-list\"\n [dataSource]=\"fieldDataSource()\"\n [ngModel]=\"valueField()\"\n (ngModelChange)=\"onValueFieldChange($event)\"\n [searchable]=\"true\"\n textField=\"text\"\n valueField=\"value\"\n look=\"outline\"\n ></ax-lookup>\n </div>\n <div class=\"axm-query-contract-widget__section\">\n <ax-label class=\"axm-query-contract-widget__title\">\n {{ fieldsI18n.textField | translate | async }}\n </ax-label>\n <ax-lookup\n mode=\"drop-down-list\"\n [dataSource]=\"fieldDataSource()\"\n [ngModel]=\"textField()\"\n (ngModelChange)=\"onTextFieldChange($event)\"\n [searchable]=\"true\"\n textField=\"text\"\n valueField=\"value\"\n look=\"outline\"\n ></ax-lookup>\n </div>\n </div>\n}\n"],"names":["i18n","i4"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';
2
2
  import * as i0 from '@angular/core';
3
3
  import { computed, ChangeDetectionStrategy, Component } from '@angular/core';
4
- import { g as formatRestApiSummary } from './acorex-platform-module-platform-management-client-acorex-platform-module-platform-management-client-YuJijjKh.mjs';
4
+ import { g as formatRestApiSummary } from './acorex-platform-module-platform-management-client-acorex-platform-module-platform-management-client-CkONcG6P.mjs';
5
5
 
6
6
  //#region ----- Imports -----
7
7
  //#endregion
@@ -42,4 +42,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
42
42
  }] });
43
43
 
44
44
  export { AXMRestApiGeneratorWidgetColumnComponent };
45
- //# sourceMappingURL=acorex-platform-module-platform-management-client-rest-api-generator-widget-column.component-DRkE2a7n.mjs.map
45
+ //# sourceMappingURL=acorex-platform-module-platform-management-client-rest-api-generator-widget-column.component-DQ4xX4Dy.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-platform-management-client-rest-api-generator-widget-column.component-DRkE2a7n.mjs","sources":["../../../../libs/modules/platform-management/client/src/lib/features/rest-api-generator-widget/rest-api-generator-widget-column.component.ts"],"sourcesContent":["//#region ----- Imports -----\n\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport type { AXRestApiOutput } from '@acorex/components/rest-api-generator';\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\n\nimport { formatRestApiSummary } from './parse-http-request.util';\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n selector: 'axm-rest-api-generator-widget-column',\n template: `\n @if (summary()) {\n <span class=\"text-xs font-medium\" [title]=\"summary()\">{{ summary() }}</span>\n }\n <!-- ----- Empty request ----- -->\n @else {\n <span class=\"text-muted\">---</span>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXMRestApiGeneratorWidgetColumnComponent extends AXPValueWidgetComponent<AXRestApiOutput> {\n //#region ----- Computed Properties -----\n\n protected readonly summary = computed(() => formatRestApiSummary(this.getValue()));\n\n //#endregion\n}\n\n//#endregion\n"],"names":[],"mappings":";;;;;AAAA;AAQA;AAEA;AAeM,MAAO,wCAAyC,SAAQ,uBAAwC,CAAA;AAbtG,IAAA,WAAA,GAAA;;;AAgBqB,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,oBAAoB,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;oFAAC;AAGnF,IAAA;8GANY,wCAAwC,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wCAAwC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXzC;;;;;;;;AAQT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAGU,wCAAwC,EAAA,UAAA,EAAA,CAAA;kBAbpD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sCAAsC;AAChD,oBAAA,QAAQ,EAAE;;;;;;;;AAQT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;;"}
1
+ {"version":3,"file":"acorex-platform-module-platform-management-client-rest-api-generator-widget-column.component-DQ4xX4Dy.mjs","sources":["../../../../libs/modules/platform-management/client/src/lib/features/rest-api-generator-widget/rest-api-generator-widget-column.component.ts"],"sourcesContent":["//#region ----- Imports -----\n\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport type { AXRestApiOutput } from '@acorex/components/rest-api-generator';\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\n\nimport { formatRestApiSummary } from './parse-http-request.util';\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n selector: 'axm-rest-api-generator-widget-column',\n template: `\n @if (summary()) {\n <span class=\"text-xs font-medium\" [title]=\"summary()\">{{ summary() }}</span>\n }\n <!-- ----- Empty request ----- -->\n @else {\n <span class=\"text-muted\">---</span>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXMRestApiGeneratorWidgetColumnComponent extends AXPValueWidgetComponent<AXRestApiOutput> {\n //#region ----- Computed Properties -----\n\n protected readonly summary = computed(() => formatRestApiSummary(this.getValue()));\n\n //#endregion\n}\n\n//#endregion\n"],"names":[],"mappings":";;;;;AAAA;AAQA;AAEA;AAeM,MAAO,wCAAyC,SAAQ,uBAAwC,CAAA;AAbtG,IAAA,WAAA,GAAA;;;AAgBqB,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,oBAAoB,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;oFAAC;AAGnF,IAAA;8GANY,wCAAwC,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wCAAwC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXzC;;;;;;;;AAQT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAGU,wCAAwC,EAAA,UAAA,EAAA,CAAA;kBAbpD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sCAAsC;AAChD,oBAAA,QAAQ,EAAE;;;;;;;;AAQT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;;"}
@@ -13,7 +13,7 @@ import * as i0 from '@angular/core';
13
13
  import { inject, DestroyRef, signal, computed, ChangeDetectionStrategy, Component } from '@angular/core';
14
14
  import * as i1 from '@angular/forms';
15
15
  import { FormsModule } from '@angular/forms';
16
- import { C as CREATE_USER_QUERY_I18N, c as createEmptyRestApiOutput, n as normalizeRestApiOutput, h as hasParsedContent, f as REST_API_GENERATOR_IMPORT_DEBOUNCE_MS, p as parseHttpRequest } from './acorex-platform-module-platform-management-client-acorex-platform-module-platform-management-client-YuJijjKh.mjs';
16
+ import { C as CREATE_USER_QUERY_I18N, c as createEmptyRestApiOutput, n as normalizeRestApiOutput, h as hasParsedContent, f as REST_API_GENERATOR_IMPORT_DEBOUNCE_MS, p as parseHttpRequest } from './acorex-platform-module-platform-management-client-acorex-platform-module-platform-management-client-CkONcG6P.mjs';
17
17
 
18
18
  //#region ----- Imports -----
19
19
  //#endregion
@@ -174,4 +174,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
174
174
  }], ctorParameters: () => [] });
175
175
 
176
176
  export { AXMRestApiGeneratorWidgetEditComponent };
177
- //# sourceMappingURL=acorex-platform-module-platform-management-client-rest-api-generator-widget-edit.component-CXI6fJi3.mjs.map
177
+ //# sourceMappingURL=acorex-platform-module-platform-management-client-rest-api-generator-widget-edit.component-BcppwcSu.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-platform-management-client-rest-api-generator-widget-edit.component-CXI6fJi3.mjs","sources":["../../../../libs/modules/platform-management/client/src/lib/features/rest-api-generator-widget/rest-api-generator-widget-edit.component.ts","../../../../libs/modules/platform-management/client/src/lib/features/rest-api-generator-widget/rest-api-generator-widget-edit.component.html"],"sourcesContent":["//#region ----- Imports -----\n\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport type { AXRestApiOutput } from '@acorex/components/rest-api-generator';\nimport { AXRestApiGeneratorComponent } from '@acorex/components/rest-api-generator';\nimport { AXValueChangedEvent } from '@acorex/cdk/common';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXTextAreaModule } from '@acorex/components/text-area';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, DestroyRef, computed, inject, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { CREATE_USER_QUERY_I18N } from '../query-definition/create-user-query.types';\nimport {\n REST_API_GENERATOR_IMPORT_DEBOUNCE_MS,\n} from './rest-api-generator-widget.constants';\nimport {\n createEmptyRestApiOutput,\n hasParsedContent,\n normalizeRestApiOutput,\n parseHttpRequest,\n} from './parse-http-request.util';\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n selector: 'axm-rest-api-generator-widget-edit',\n templateUrl: './rest-api-generator-widget-edit.component.html',\n styleUrl: './rest-api-generator-widget-edit.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'block w-full',\n },\n imports: [\n CommonModule,\n FormsModule,\n AXButtonModule,\n AXTextAreaModule,\n AXTranslationModule,\n AXRestApiGeneratorComponent,\n ],\n})\nexport class AXMRestApiGeneratorWidgetEditComponent extends AXPValueWidgetComponent<AXRestApiOutput> {\n //#region ----- Services & Dependencies -----\n\n private readonly toastService = inject(AXToastService);\n private readonly translationService = inject(AXTranslationService);\n private readonly destroyRef = inject(DestroyRef);\n\n //#endregion\n\n //#region ----- Constants -----\n\n protected readonly importI18n = CREATE_USER_QUERY_I18N.import;\n\n //#endregion\n\n //#region ----- State Signals -----\n\n protected readonly importText = signal('');\n protected readonly boundRequest = signal<AXRestApiOutput>(createEmptyRestApiOutput());\n protected readonly revision = signal(0);\n protected readonly revisionKeys = computed(() => [this.revision()]);\n private suppressGeneratorChange = false;\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n private parseTimer: ReturnType<typeof setTimeout> | null = null;\n\n constructor() {\n super();\n this.destroyRef.onDestroy(() => this.clearParseTimer());\n }\n\n override ngOnInit(): void {\n super.ngOnInit();\n this.boundRequest.set(normalizeRestApiOutput(this.getValue()));\n }\n\n //#endregion\n\n //#region ----- Event Handlers -----\n\n protected onImportModelChange(value: unknown): void {\n const text = this.coerceImportText(value);\n this.importText.set(text);\n this.scheduleDebouncedParse(text);\n }\n\n protected onImportTextChanged(event: AXValueChangedEvent<string>): void {\n const text = this.coerceImportText(event.value);\n this.importText.set(text);\n if (event.isUserInteraction === false) {\n return;\n }\n this.scheduleDebouncedParse(text);\n }\n\n protected onApplyImport(): void {\n this.clearParseTimer();\n void this.applyParsedText(this.importText(), true);\n }\n\n protected onGeneratorChange(value: AXRestApiOutput): void {\n const next = normalizeRestApiOutput(value);\n if (this.suppressGeneratorChange) {\n if (hasParsedContent(next)) {\n this.boundRequest.set(next);\n this.setValue(next);\n }\n return;\n }\n this.boundRequest.set(next);\n this.setValue(next);\n }\n\n //#endregion\n\n //#region ----- Import -----\n\n private scheduleDebouncedParse(text: string): void {\n this.clearParseTimer();\n this.parseTimer = setTimeout(() => {\n this.parseTimer = null;\n void this.applyParsedText(text, false);\n }, REST_API_GENERATOR_IMPORT_DEBOUNCE_MS);\n }\n\n private clearParseTimer(): void {\n if (this.parseTimer != null) {\n clearTimeout(this.parseTimer);\n this.parseTimer = null;\n }\n }\n\n private coerceImportText(value: unknown): string {\n if (typeof value === 'string') {\n return value;\n }\n if (value != null && typeof value === 'object' && 'value' in value) {\n const inner = (value as { value: unknown }).value;\n if (typeof inner === 'string') {\n return inner;\n }\n }\n return '';\n }\n\n private async applyParsedText(text: string, showError: boolean): Promise<void> {\n const result = parseHttpRequest(text);\n if (!result.ok) {\n if (showError) {\n await this.showParseError();\n }\n return;\n }\n\n this.applyRequest(result.value);\n }\n\n private applyRequest(value: AXRestApiOutput): void {\n const next = normalizeRestApiOutput(value);\n if (this.isSameRequest(next, this.boundRequest())) {\n this.setValue(next);\n return;\n }\n\n this.suppressGeneratorChange = true;\n this.boundRequest.set(next);\n this.setValue(next);\n this.revision.update((current) => current + 1);\n window.setTimeout(() => {\n this.suppressGeneratorChange = false;\n }, 100);\n }\n\n private isSameRequest(left: AXRestApiOutput, right: AXRestApiOutput): boolean {\n return JSON.stringify(this.stripTempIds(left)) === JSON.stringify(this.stripTempIds(right));\n }\n\n private stripTempIds(value: AXRestApiOutput): unknown {\n return {\n url: value.url,\n method: value.method,\n body: value.body,\n headers: value.headers,\n queries: value.queries.map((item) => {\n const copy = { ...item };\n delete copy.tempId;\n return copy;\n }),\n };\n }\n\n private async showParseError(): Promise<void> {\n const message = await this.translationService.translateAsync(this.importI18n.parseFailed);\n this.toastService.show({\n color: 'warning',\n content: message,\n closeButton: true,\n timeOut: 4000,\n timeOutProgress: true,\n });\n }\n\n //#endregion\n}\n\n//#endregion\n","<div class=\"axm-rest-api-generator-widget\">\n <!-- ----- Import from cURL, fetch, HTTP, JSON, or URL ----- -->\n <div class=\"axm-rest-api-generator-widget__import\">\n <div class=\"axm-rest-api-generator-widget__import-header\">\n <span class=\"axm-rest-api-generator-widget__import-title\">\n {{ importI18n.title | translate | async }}\n </span>\n <ax-button\n look=\"solid\"\n color=\"primary\"\n class=\"ax-sm\"\n [text]=\"(importI18n.apply | translate | async) ?? ''\"\n (onClick)=\"onApplyImport()\"\n ></ax-button>\n </div>\n <ax-text-area\n [ngModel]=\"importText()\"\n (ngModelChange)=\"onImportModelChange($event)\"\n (onValueChanged)=\"onImportTextChanged($event)\"\n [rows]=\"4\"\n [placeholder]=\"(importI18n.placeholder | translate | async) ?? ''\"\n ></ax-text-area>\n </div>\n\n <!-- ----- Visual REST request builder ----- -->\n @for (rev of revisionKeys(); track rev) {\n <ax-rest-api-generator [value]=\"boundRequest()\" (onValueChange)=\"onGeneratorChange($event)\">\n </ax-rest-api-generator>\n }\n</div>\n"],"names":["i2","i4"],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-module-platform-management-client-rest-api-generator-widget-edit.component-BcppwcSu.mjs","sources":["../../../../libs/modules/platform-management/client/src/lib/features/rest-api-generator-widget/rest-api-generator-widget-edit.component.ts","../../../../libs/modules/platform-management/client/src/lib/features/rest-api-generator-widget/rest-api-generator-widget-edit.component.html"],"sourcesContent":["//#region ----- Imports -----\n\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport type { AXRestApiOutput } from '@acorex/components/rest-api-generator';\nimport { AXRestApiGeneratorComponent } from '@acorex/components/rest-api-generator';\nimport { AXValueChangedEvent } from '@acorex/cdk/common';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXTextAreaModule } from '@acorex/components/text-area';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, DestroyRef, computed, inject, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { CREATE_USER_QUERY_I18N } from '../query-definition/create-user-query.types';\nimport {\n REST_API_GENERATOR_IMPORT_DEBOUNCE_MS,\n} from './rest-api-generator-widget.constants';\nimport {\n createEmptyRestApiOutput,\n hasParsedContent,\n normalizeRestApiOutput,\n parseHttpRequest,\n} from './parse-http-request.util';\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n selector: 'axm-rest-api-generator-widget-edit',\n templateUrl: './rest-api-generator-widget-edit.component.html',\n styleUrl: './rest-api-generator-widget-edit.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'block w-full',\n },\n imports: [\n CommonModule,\n FormsModule,\n AXButtonModule,\n AXTextAreaModule,\n AXTranslationModule,\n AXRestApiGeneratorComponent,\n ],\n})\nexport class AXMRestApiGeneratorWidgetEditComponent extends AXPValueWidgetComponent<AXRestApiOutput> {\n //#region ----- Services & Dependencies -----\n\n private readonly toastService = inject(AXToastService);\n private readonly translationService = inject(AXTranslationService);\n private readonly destroyRef = inject(DestroyRef);\n\n //#endregion\n\n //#region ----- Constants -----\n\n protected readonly importI18n = CREATE_USER_QUERY_I18N.import;\n\n //#endregion\n\n //#region ----- State Signals -----\n\n protected readonly importText = signal('');\n protected readonly boundRequest = signal<AXRestApiOutput>(createEmptyRestApiOutput());\n protected readonly revision = signal(0);\n protected readonly revisionKeys = computed(() => [this.revision()]);\n private suppressGeneratorChange = false;\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n private parseTimer: ReturnType<typeof setTimeout> | null = null;\n\n constructor() {\n super();\n this.destroyRef.onDestroy(() => this.clearParseTimer());\n }\n\n override ngOnInit(): void {\n super.ngOnInit();\n this.boundRequest.set(normalizeRestApiOutput(this.getValue()));\n }\n\n //#endregion\n\n //#region ----- Event Handlers -----\n\n protected onImportModelChange(value: unknown): void {\n const text = this.coerceImportText(value);\n this.importText.set(text);\n this.scheduleDebouncedParse(text);\n }\n\n protected onImportTextChanged(event: AXValueChangedEvent<string>): void {\n const text = this.coerceImportText(event.value);\n this.importText.set(text);\n if (event.isUserInteraction === false) {\n return;\n }\n this.scheduleDebouncedParse(text);\n }\n\n protected onApplyImport(): void {\n this.clearParseTimer();\n void this.applyParsedText(this.importText(), true);\n }\n\n protected onGeneratorChange(value: AXRestApiOutput): void {\n const next = normalizeRestApiOutput(value);\n if (this.suppressGeneratorChange) {\n if (hasParsedContent(next)) {\n this.boundRequest.set(next);\n this.setValue(next);\n }\n return;\n }\n this.boundRequest.set(next);\n this.setValue(next);\n }\n\n //#endregion\n\n //#region ----- Import -----\n\n private scheduleDebouncedParse(text: string): void {\n this.clearParseTimer();\n this.parseTimer = setTimeout(() => {\n this.parseTimer = null;\n void this.applyParsedText(text, false);\n }, REST_API_GENERATOR_IMPORT_DEBOUNCE_MS);\n }\n\n private clearParseTimer(): void {\n if (this.parseTimer != null) {\n clearTimeout(this.parseTimer);\n this.parseTimer = null;\n }\n }\n\n private coerceImportText(value: unknown): string {\n if (typeof value === 'string') {\n return value;\n }\n if (value != null && typeof value === 'object' && 'value' in value) {\n const inner = (value as { value: unknown }).value;\n if (typeof inner === 'string') {\n return inner;\n }\n }\n return '';\n }\n\n private async applyParsedText(text: string, showError: boolean): Promise<void> {\n const result = parseHttpRequest(text);\n if (!result.ok) {\n if (showError) {\n await this.showParseError();\n }\n return;\n }\n\n this.applyRequest(result.value);\n }\n\n private applyRequest(value: AXRestApiOutput): void {\n const next = normalizeRestApiOutput(value);\n if (this.isSameRequest(next, this.boundRequest())) {\n this.setValue(next);\n return;\n }\n\n this.suppressGeneratorChange = true;\n this.boundRequest.set(next);\n this.setValue(next);\n this.revision.update((current) => current + 1);\n window.setTimeout(() => {\n this.suppressGeneratorChange = false;\n }, 100);\n }\n\n private isSameRequest(left: AXRestApiOutput, right: AXRestApiOutput): boolean {\n return JSON.stringify(this.stripTempIds(left)) === JSON.stringify(this.stripTempIds(right));\n }\n\n private stripTempIds(value: AXRestApiOutput): unknown {\n return {\n url: value.url,\n method: value.method,\n body: value.body,\n headers: value.headers,\n queries: value.queries.map((item) => {\n const copy = { ...item };\n delete copy.tempId;\n return copy;\n }),\n };\n }\n\n private async showParseError(): Promise<void> {\n const message = await this.translationService.translateAsync(this.importI18n.parseFailed);\n this.toastService.show({\n color: 'warning',\n content: message,\n closeButton: true,\n timeOut: 4000,\n timeOutProgress: true,\n });\n }\n\n //#endregion\n}\n\n//#endregion\n","<div class=\"axm-rest-api-generator-widget\">\n <!-- ----- Import from cURL, fetch, HTTP, JSON, or URL ----- -->\n <div class=\"axm-rest-api-generator-widget__import\">\n <div class=\"axm-rest-api-generator-widget__import-header\">\n <span class=\"axm-rest-api-generator-widget__import-title\">\n {{ importI18n.title | translate | async }}\n </span>\n <ax-button\n look=\"solid\"\n color=\"primary\"\n class=\"ax-sm\"\n [text]=\"(importI18n.apply | translate | async) ?? ''\"\n (onClick)=\"onApplyImport()\"\n ></ax-button>\n </div>\n <ax-text-area\n [ngModel]=\"importText()\"\n (ngModelChange)=\"onImportModelChange($event)\"\n (onValueChanged)=\"onImportTextChanged($event)\"\n [rows]=\"4\"\n [placeholder]=\"(importI18n.placeholder | translate | async) ?? ''\"\n ></ax-text-area>\n </div>\n\n <!-- ----- Visual REST request builder ----- -->\n @for (rev of revisionKeys(); track rev) {\n <ax-rest-api-generator [value]=\"boundRequest()\" (onValueChange)=\"onGeneratorChange($event)\">\n </ax-rest-api-generator>\n }\n</div>\n"],"names":["i2","i4"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';
2
2
  import * as i0 from '@angular/core';
3
3
  import { computed, ChangeDetectionStrategy, Component } from '@angular/core';
4
- import { g as formatRestApiSummary } from './acorex-platform-module-platform-management-client-acorex-platform-module-platform-management-client-YuJijjKh.mjs';
4
+ import { g as formatRestApiSummary } from './acorex-platform-module-platform-management-client-acorex-platform-module-platform-management-client-CkONcG6P.mjs';
5
5
 
6
6
  //#region ----- Imports -----
7
7
  //#endregion
@@ -42,4 +42,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
42
42
  }] });
43
43
 
44
44
  export { AXMRestApiGeneratorWidgetViewComponent };
45
- //# sourceMappingURL=acorex-platform-module-platform-management-client-rest-api-generator-widget-view.component-C3iHgoC2.mjs.map
45
+ //# sourceMappingURL=acorex-platform-module-platform-management-client-rest-api-generator-widget-view.component-D-m1uo8s.mjs.map