@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.
- 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
- 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
- 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
- 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
- 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
- package/fesm2022/acorex-platform-module-platform-management-client-customize-menu.command-B_Ld4IRz.mjs.map +1 -0
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- package/fesm2022/acorex-platform-module-platform-management-client.mjs +1 -1
- package/package.json +3 -3
- 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.
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
45
|
+
//# sourceMappingURL=acorex-platform-module-platform-management-client-rest-api-generator-widget-view.component-D-m1uo8s.mjs.map
|