@acorex-platform/module-platform-management-client 0.0.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/fesm2022/acorex-platform-module-platform-management-client-acorex-platform-module-platform-management-client-V_ao4WVM.mjs +4599 -0
  2. package/fesm2022/acorex-platform-module-platform-management-client-acorex-platform-module-platform-management-client-V_ao4WVM.mjs.map +1 -0
  3. package/fesm2022/acorex-platform-module-platform-management-client-contracts.mjs +179 -0
  4. package/fesm2022/acorex-platform-module-platform-management-client-contracts.mjs.map +1 -0
  5. package/fesm2022/acorex-platform-module-platform-management-client-create-user-query.command-2Qu7aoCp.mjs +1542 -0
  6. package/fesm2022/acorex-platform-module-platform-management-client-create-user-query.command-2Qu7aoCp.mjs.map +1 -0
  7. package/fesm2022/acorex-platform-module-platform-management-client-create-user-query.types-DdygAori.mjs +71 -0
  8. package/fesm2022/acorex-platform-module-platform-management-client-create-user-query.types-DdygAori.mjs.map +1 -0
  9. package/fesm2022/acorex-platform-module-platform-management-client-customize-menu.command-2319iHsD.mjs +231 -0
  10. package/fesm2022/acorex-platform-module-platform-management-client-customize-menu.command-2319iHsD.mjs.map +1 -0
  11. package/fesm2022/acorex-platform-module-platform-management-client-data-list-pick-entity-item.command-CJVpqPmY.mjs +52 -0
  12. package/fesm2022/acorex-platform-module-platform-management-client-data-list-pick-entity-item.command-CJVpqPmY.mjs.map +1 -0
  13. package/fesm2022/acorex-platform-module-platform-management-client-entity-master-actions-for-ai.util-DmGyoy9o.mjs +55 -0
  14. package/fesm2022/acorex-platform-module-platform-management-client-entity-master-actions-for-ai.util-DmGyoy9o.mjs.map +1 -0
  15. package/fesm2022/acorex-platform-module-platform-management-client-execute-token.command-DNuHR-0y.mjs +152 -0
  16. package/fesm2022/acorex-platform-module-platform-management-client-execute-token.command-DNuHR-0y.mjs.map +1 -0
  17. package/fesm2022/acorex-platform-module-platform-management-client-list-catalog-scopes.query-ByhDTWE6.mjs +71 -0
  18. package/fesm2022/acorex-platform-module-platform-management-client-list-catalog-scopes.query-ByhDTWE6.mjs.map +1 -0
  19. package/fesm2022/acorex-platform-module-platform-management-client-list-editor-widgets.query-DITPMmbw.mjs +68 -0
  20. package/fesm2022/acorex-platform-module-platform-management-client-list-editor-widgets.query-DITPMmbw.mjs.map +1 -0
  21. package/fesm2022/acorex-platform-module-platform-management-client-list-platform-navigation-for-ai.query-2oHMITw-.mjs +194 -0
  22. package/fesm2022/acorex-platform-module-platform-management-client-list-platform-navigation-for-ai.query-2oHMITw-.mjs.map +1 -0
  23. package/fesm2022/acorex-platform-module-platform-management-client-list-registered-entities.query-DjStd3a8.mjs +136 -0
  24. package/fesm2022/acorex-platform-module-platform-management-client-list-registered-entities.query-DjStd3a8.mjs.map +1 -0
  25. package/fesm2022/acorex-platform-module-platform-management-client-list-registered-queries.query-C-IfkTel.mjs +122 -0
  26. package/fesm2022/acorex-platform-module-platform-management-client-list-registered-queries.query-C-IfkTel.mjs.map +1 -0
  27. package/fesm2022/acorex-platform-module-platform-management-client-menu-list.component-C5HH5-Dw.mjs +524 -0
  28. package/fesm2022/acorex-platform-module-platform-management-client-menu-list.component-C5HH5-Dw.mjs.map +1 -0
  29. package/fesm2022/acorex-platform-module-platform-management-client-platform-console-charts.queries-CQ34R13-.mjs +216 -0
  30. package/fesm2022/acorex-platform-module-platform-management-client-platform-console-charts.queries-CQ34R13-.mjs.map +1 -0
  31. package/fesm2022/acorex-platform-module-platform-management-client-platform-console-data.util-BIkULtKk.mjs +81 -0
  32. package/fesm2022/acorex-platform-module-platform-management-client-platform-console-data.util-BIkULtKk.mjs.map +1 -0
  33. package/fesm2022/acorex-platform-module-platform-management-client-platform-console-kpi.queries-BkPdhVq_.mjs +137 -0
  34. package/fesm2022/acorex-platform-module-platform-management-client-platform-console-kpi.queries-BkPdhVq_.mjs.map +1 -0
  35. package/fesm2022/acorex-platform-module-platform-management-client-rest-api-generator-widget-column.component-CYb2zOSj.mjs +45 -0
  36. package/fesm2022/acorex-platform-module-platform-management-client-rest-api-generator-widget-column.component-CYb2zOSj.mjs.map +1 -0
  37. package/fesm2022/acorex-platform-module-platform-management-client-rest-api-generator-widget-edit.component-BBwrzcXa.mjs +178 -0
  38. package/fesm2022/acorex-platform-module-platform-management-client-rest-api-generator-widget-edit.component-BBwrzcXa.mjs.map +1 -0
  39. package/fesm2022/acorex-platform-module-platform-management-client-rest-api-generator-widget-view.component-DBlZVz6u.mjs +45 -0
  40. package/fesm2022/acorex-platform-module-platform-management-client-rest-api-generator-widget-view.component-DBlZVz6u.mjs.map +1 -0
  41. package/fesm2022/acorex-platform-module-platform-management-client.mjs +2 -0
  42. package/fesm2022/acorex-platform-module-platform-management-client.mjs.map +1 -0
  43. package/package.json +28 -0
  44. package/types/acorex-platform-module-platform-management-client-contracts.d.ts +258 -0
  45. package/types/acorex-platform-module-platform-management-client.d.ts +548 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-platform-module-platform-management-client-create-user-query.command-2Qu7aoCp.mjs","sources":["../../../../libs/modules/platform-management/client/src/lib/features/query-definition/create-user-query-entity-fields.util.ts","../../../../libs/modules/platform-management/client/src/lib/features/query-definition/create-user-query.wizard.ts","../../../../libs/modules/platform-management/client/src/lib/features/query-definition/create-user-query.command.ts"],"sourcesContent":["//#region ----- Imports -----\n\nimport {\n parsePropertyExposeEntries,\n type AXPEntity,\n type AXPEntityProperty,\n type AXPRelatedEntity,\n} from '@acorex-platform/framework-shared/entity';\n\nimport type { AXPUserQueryEntityFieldGroup } from './create-user-query.types';\n\n//#endregion\n\n//#region ----- Constants -----\n\nconst LOOKUP_WIDGET_TYPES = new Set(['lookup-editor', 'select-editor']);\n\nexport const USER_QUERY_RELATED_DEPTH = 3;\n\n//#endregion\n\n//#region ----- Public API -----\n\nexport function parseEntityFullName(fullName: string): { module: string; name: string } | null {\n const trimmed = fullName.trim();\n const separator = trimmed.indexOf('.');\n if (separator <= 0 || separator === trimmed.length - 1) {\n return null;\n }\n\n return {\n module: trimmed.slice(0, separator),\n name: trimmed.slice(separator + 1),\n };\n}\n\nexport function resolvePickedEntityFullName(value: unknown): string {\n if (typeof value === 'string') {\n return value.trim();\n }\n\n if (value == null || typeof value !== 'object') {\n return '';\n }\n\n const record = value as Record<string, unknown>;\n const id = typeof record['id'] === 'string' ? record['id'].trim() : '';\n if (id.includes('.')) {\n return id;\n }\n\n const moduleName = typeof record['module_id'] === 'string' ? record['module_id'].trim() : '';\n const name = typeof record['name'] === 'string' ? record['name'].trim() : '';\n if (moduleName && name) {\n return `${moduleName}.${name}`;\n }\n\n return id;\n}\n\nexport function collectUserQueryEntityFieldGroups(\n entity: AXPEntity,\n relatedByName: ReadonlyMap<string, AXPEntity>,\n): AXPUserQueryEntityFieldGroup[] {\n return collectGroups(entity, relatedByName, '', new Set());\n}\n\nexport function flattenEntityFieldGroups(groups: AXPUserQueryEntityFieldGroup[]): AXPUserQueryEntityFieldGroup[] {\n const result: AXPUserQueryEntityFieldGroup[] = [];\n const walk = (group: AXPUserQueryEntityFieldGroup): void => {\n result.push(group);\n for (const child of group.children ?? []) {\n walk(child);\n }\n };\n for (const group of groups) {\n walk(group);\n }\n return result;\n}\n\nexport function defaultSelectedFieldGroups(\n groups: AXPUserQueryEntityFieldGroup[],\n): Record<string, string[]> {\n const selected: Record<string, string[]> = {};\n for (const group of flattenEntityFieldGroups(groups)) {\n selected[group.id] = [];\n }\n for (const group of groups) {\n if (group.kind !== 'relation') {\n selected[group.id] = group.items.map((item) => item.path);\n }\n }\n return selected;\n}\n\nexport function collectSelectedFieldGroupPaths(\n fieldGroups: Record<string, string[]> | undefined,\n groups: Array<{ id: string; children?: Array<{ id: string; children?: unknown[] }> }>,\n): string[] {\n const paths: string[] = [];\n const walk = (group: { id: string; children?: Array<{ id: string; children?: unknown[] }> }): void => {\n paths.push(...normalizeSelectedFieldPaths(fieldGroups?.[group.id]));\n for (const child of group.children ?? []) {\n walk(child as { id: string; children?: Array<{ id: string; children?: unknown[] }> });\n }\n };\n for (const group of groups) {\n walk(group);\n }\n return paths;\n}\n\nexport function withRequiredIdField(paths: string[]): string[] {\n const unique: string[] = [];\n const seen = new Set<string>();\n\n for (const path of paths) {\n const trimmed = path.trim();\n if (!trimmed || seen.has(trimmed)) {\n continue;\n }\n seen.add(trimmed);\n unique.push(trimmed);\n }\n\n if (!seen.has('id')) {\n unique.unshift('id');\n }\n\n return unique;\n}\n\nexport function normalizeSelectedFieldPaths(value: unknown): string[] {\n if (!Array.isArray(value)) {\n return [];\n }\n\n const paths: string[] = [];\n for (const item of value) {\n if (typeof item === 'string') {\n paths.push(item);\n continue;\n }\n if (item != null && typeof item === 'object') {\n const path = (item as { path?: unknown }).path;\n if (typeof path === 'string') {\n paths.push(path);\n }\n }\n }\n\n return paths;\n}\n\n//#endregion\n\n//#region ----- Group collection -----\n\nfunction collectGroups(\n entity: AXPEntity,\n relatedByName: ReadonlyMap<string, AXPEntity>,\n pathPrefix: string,\n ancestry: ReadonlySet<string>,\n): AXPUserQueryEntityFieldGroup[] {\n const groups: AXPUserQueryEntityFieldGroup[] = [];\n const { host, lookups } = collectHostAndLookups(entity, pathPrefix);\n\n if (host.items.length) {\n groups.push(host);\n }\n groups.push(...lookups);\n\n const hostFullName = `${entity.module}.${entity.name}`;\n const nextAncestry = new Set(ancestry);\n nextAncestry.add(hostFullName);\n\n for (const related of entity.relatedEntities ?? []) {\n const group = collectRelatedGroup(related, relatedByName, pathPrefix, nextAncestry);\n if (group) {\n groups.push(group);\n }\n }\n\n return groups;\n}\n\nfunction collectHostAndLookups(\n entity: AXPEntity | undefined,\n pathPrefix: string,\n allowedNames?: Set<string>,\n): { host: AXPUserQueryEntityFieldGroup; lookups: AXPUserQueryEntityFieldGroup[] } {\n const hostItems: AXPUserQueryEntityFieldGroup['items'] = [];\n const lookups: AXPUserQueryEntityFieldGroup[] = [];\n\n for (const property of entity?.properties ?? []) {\n const name = property.name?.trim();\n if (!name || name.toLowerCase() === 'id') {\n continue;\n }\n if (allowedNames && !allowedNames.has(name)) {\n continue;\n }\n\n if (isLookupProperty(property)) {\n const lookupGroup = collectLookupGroup(property, pathPrefix);\n if (lookupGroup) {\n lookups.push(lookupGroup);\n }\n continue;\n }\n\n hostItems.push({\n path: joinPath(pathPrefix, name),\n title: property.title,\n fallback: name,\n });\n }\n\n return {\n host: {\n id: pathPrefix ? `rel_${sanitizeGroupId(pathPrefix)}_fields` : 'host',\n kind: pathPrefix ? 'relation' : 'host',\n title: '',\n fallback: 'fields',\n items: hostItems,\n },\n lookups,\n };\n}\n\nfunction collectLookupGroup(property: AXPEntityProperty, pathPrefix: string): AXPUserQueryEntityFieldGroup | null {\n const name = property.name?.trim();\n if (!name) {\n return null;\n }\n\n const items: AXPUserQueryEntityFieldGroup['items'] = [\n {\n path: joinPath(pathPrefix, name),\n title: property.title,\n fallback: name,\n },\n ];\n\n const opts = property.schema?.interface?.options;\n for (const entry of parsePropertyExposeEntries(opts)) {\n const target = entry.target.trim();\n if (!target || target === name) {\n continue;\n }\n\n items.push({\n path: joinPath(pathPrefix, target),\n title: entry.source,\n fallback: entry.source.trim() || target,\n });\n }\n\n return {\n id: `lookup_${sanitizeGroupId(joinPath(pathPrefix, name))}`,\n kind: 'lookup',\n title: property.title,\n fallback: name,\n items,\n };\n}\n\nfunction collectRelatedGroup(\n related: AXPRelatedEntity,\n relatedByName: ReadonlyMap<string, AXPEntity>,\n pathPrefix: string,\n ancestry: ReadonlySet<string>,\n): AXPUserQueryEntityFieldGroup | null {\n if (related.hidden === true) {\n return null;\n }\n\n const entityName = related.entity?.trim();\n if (!entityName || ancestry.has(entityName)) {\n return null;\n }\n\n const relatedEntity = relatedByName.get(entityName);\n const dataPath = related.persistence?.dataPath?.trim() || entityName.split('.').pop() || entityName;\n const pathRoot = joinPath(pathPrefix, dataPath);\n const allowed = resolveAllowedPropertyNames(related, relatedEntity);\n const { host, lookups } = collectHostAndLookups(relatedEntity, pathRoot, allowed);\n\n const childAncestry = new Set(ancestry);\n childAncestry.add(entityName);\n\n const children: AXPUserQueryEntityFieldGroup[] = [...lookups];\n for (const nested of relatedEntity?.relatedEntities ?? []) {\n const child = collectRelatedGroup(nested, relatedByName, pathRoot, childAncestry);\n if (child) {\n children.push(child);\n }\n }\n\n if (!host.items.length && !children.length) {\n return null;\n }\n\n return {\n id: `rel_${sanitizeGroupId(pathRoot)}`,\n kind: 'relation',\n title: related.title,\n fallback: entityName,\n items: host.items,\n children: children.length ? children : undefined,\n };\n}\n\nfunction resolveAllowedPropertyNames(\n related: AXPRelatedEntity,\n relatedEntity: AXPEntity | undefined,\n): Set<string> | undefined {\n const excluded = new Set(\n (related.excludeProperties ?? [])\n .filter((name): name is string => typeof name === 'string')\n .map((name) => name.trim())\n .filter(Boolean),\n );\n\n const fromConfig = Array.isArray(related.properties)\n ? related.properties.filter((name): name is string => typeof name === 'string' && name.trim().length > 0)\n : [];\n\n if (fromConfig.length) {\n return new Set(fromConfig.map((name) => name.trim()).filter((name) => name.toLowerCase() !== 'id' && !excluded.has(name)));\n }\n\n if (!excluded.size) {\n return undefined;\n }\n\n const names = (relatedEntity?.properties ?? [])\n .map((property) => property.name?.trim() ?? '')\n .filter((name) => name && name.toLowerCase() !== 'id' && !excluded.has(name));\n return new Set(names);\n}\n\nfunction isLookupProperty(property: AXPEntityProperty): boolean {\n const iface = property.schema?.interface;\n const opts = iface?.options;\n const lookupEntity = typeof opts?.['entity'] === 'string' ? String(opts['entity']).trim() : '';\n if (!lookupEntity) {\n return false;\n }\n\n const widgetType = typeof iface?.type === 'string' ? iface.type : '';\n if (LOOKUP_WIDGET_TYPES.has(widgetType)) {\n return true;\n }\n\n return /(Ids|IDs|Id|ID)$/i.test(property.name);\n}\n\nfunction joinPath(prefix: string, segment: string): string {\n return prefix ? `${prefix}.${segment}` : segment;\n}\n\nfunction sanitizeGroupId(value: string): string {\n return value.replace(/[^a-zA-Z0-9]+/g, '_').replace(/^_|_$/g, '');\n}\n\n//#endregion\n\n","//#region ----- Imports -----\n\nimport type { AXPEntity } from '@acorex-platform/framework-shared/entity';\nimport { AXPWidgetsList, type AXPWidgetNode } from '@acorex-platform/framework-shared/core';\nimport type { AXPEntityResolver } from '@acorex-platform/framework-client/layout/entity';\nimport type {\n AXPLayoutBuilderService,\n AXPStepWizardGuardPayload,\n IDialogBuilder,\n IFieldsetContainerBuilder,\n IFlexContainerBuilder,\n ILayoutBuilder,\n IPanelContainerBuilder,\n} from '@acorex-platform/framework-client/layout/builder';\nimport { resolveLayoutBuilderDialogResult } from '@acorex-platform/framework-client/layout/builder';\nimport type { AXRestApiOutput } from '@acorex/components/rest-api-generator';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService } from '@acorex/core/translation';\n\nimport {\n collectSelectedFieldGroupPaths,\n collectUserQueryEntityFieldGroups,\n defaultSelectedFieldGroups,\n parseEntityFullName,\n resolvePickedEntityFullName,\n USER_QUERY_RELATED_DEPTH,\n withRequiredIdField,\n} from './create-user-query-entity-fields.util';\nimport {\n CREATE_USER_QUERY_ENTITY_CATALOG,\n CREATE_USER_QUERY_I18N as i18n,\n CREATE_USER_QUERY_WIZARD_NAME,\n type AXPUserQueryApiTestResult,\n type AXPUserQueryEntityFieldGroup,\n type AXPUserQueryEntityFieldGroupView,\n type AXPUserQuerySourceKind,\n type AXPUserQueryStaticItem,\n type AXPUserQueryWizardContext,\n type AXPUserQueryWizardSource,\n} from './create-user-query.types';\nimport { REST_API_GENERATOR_WIDGET_NAME } from '../rest-api-generator-widget/rest-api-generator-widget.constants';\nimport { createEmptyRestApiOutput, normalizeRestApiOutput } from '../rest-api-generator-widget/parse-http-request.util';\n\n//#endregion\n\n//#region ----- Types -----\n\nexport interface AXPOpenCreateUserQueryWizardArgs {\n layoutBuilder: AXPLayoutBuilderService;\n toastService: AXToastService;\n translationService: AXTranslationService;\n entityResolver: AXPEntityResolver;\n sourceKind: AXPUserQuerySourceKind;\n}\n\nconst ENTITY_WIZARD_BACK = 'back';\nconst API_WIZARD_BACK = 'back';\n\ntype EntityFieldsDialogResult = AXPUserQueryWizardContext | typeof ENTITY_WIZARD_BACK;\ntype ApiFieldsDialogResult = AXPUserQueryWizardContext | typeof API_WIZARD_BACK;\ntype FieldGroupLayoutHost = ILayoutBuilder | IFlexContainerBuilder;\n\n//#endregion\n\n//#region ----- Public API -----\n\nexport async function openCreateUserQueryWizard(\n args: AXPOpenCreateUserQueryWizardArgs,\n): Promise<AXPUserQueryWizardContext | null> {\n if (args.sourceKind === 'advanced') {\n return openAdvancedPlaceholder(args);\n }\n\n if (args.sourceKind === 'entity') {\n return openEntitySourceWizard(args);\n }\n\n if (args.sourceKind === 'api') {\n return openApiSourceWizard(args);\n }\n\n const result = await args.layoutBuilder\n .create()\n .dialog<AXPUserQueryWizardContext | null>((dialog) => {\n configureSimpleSourceWizard(dialog, args);\n })\n .show();\n\n return resolveLayoutBuilderDialogResult<AXPUserQueryWizardContext>(result);\n}\n\n//#endregion\n\n//#region ----- Entity sub-steps -----\n\nasync function openEntitySourceWizard(\n args: AXPOpenCreateUserQueryWizardArgs,\n): Promise<AXPUserQueryWizardContext | null> {\n let entityName = '';\n let previousFields: Record<string, string[]> | undefined;\n\n while (true) {\n const picked = await openEntityPickDialog(args, entityName);\n if (!picked) {\n return null;\n }\n\n const graph = await loadEntityFieldGraph(args, picked);\n if (!graph) {\n entityName = picked;\n continue;\n }\n\n const selectedGroups =\n picked === entityName && previousFields != null ? previousFields : graph.defaultGroups;\n\n const outcome = await openEntityFieldsDialog(args, picked, graph.groups, selectedGroups);\n if (outcome === ENTITY_WIZARD_BACK) {\n entityName = picked;\n previousFields = selectedGroups;\n continue;\n }\n\n return outcome;\n }\n}\n\nasync function openEntityPickDialog(\n args: AXPOpenCreateUserQueryWizardArgs,\n entityName: string,\n): Promise<string | null> {\n const result = await args.layoutBuilder\n .create()\n .dialog<string | null>((dialog) => {\n dialog\n .setTitle(i18n.titles.entity)\n .setSize('lg')\n .setCloseButton(true)\n .setContext(createInitialContext('entity', entityName))\n .content((flex) => {\n flex.setDirection('column').setGap('16px').stepWizard((wizard) => {\n wizard\n .name(CREATE_USER_QUERY_WIZARD_NAME)\n .setLook('circular-icon')\n .setLinear(true)\n .setDirection('horizontal')\n .setShowActions(false)\n .step('entity', i18n.steps.entity, (step) => {\n step.setIcon('fa-light fa-database').content((layout) => {\n fillEntityPickStep(layout);\n });\n })\n .step('fields', i18n.steps.fields, (step) => {\n step.setIcon('fa-light fa-diagram-project').content((layout) => {\n fillHintStep(layout, i18n.steps.fields, i18n.placeholders.fieldsNext);\n });\n })\n .step('contract', i18n.steps.contract, (step) => {\n step.setIcon('fa-light fa-file-contract').content((layout) => {\n fillContractPlaceholderStep(layout);\n });\n });\n });\n })\n .setActions((actions) => {\n actions\n .cancel('@general:actions.cancel.title')\n .custom({\n title: '@general:actions.next.title',\n command: 'continue-to-fields',\n icon: 'fa-regular fa-arrow-right',\n color: 'primary',\n hidden: '{{!api.getStatus().isFirst}}',\n predicateApiWidgetName: CREATE_USER_QUERY_WIZARD_NAME,\n } as never)\n .custom({\n title: '@general:actions.next.title',\n command: `widget:${CREATE_USER_QUERY_WIZARD_NAME}.next`,\n icon: 'fa-regular fa-arrow-right',\n color: 'primary',\n hidden: '{{api.getStatus().isFirst || api.getStatus().isLast}}',\n predicateApiWidgetName: CREATE_USER_QUERY_WIZARD_NAME,\n } as never)\n .custom({\n title: '@general:actions.submit.title',\n command: `widget:${CREATE_USER_QUERY_WIZARD_NAME}.submit`,\n icon: 'fa-regular fa-check',\n color: 'success',\n hidden: '{{!api.getStatus().isLast}}',\n predicateApiWidgetName: CREATE_USER_QUERY_WIZARD_NAME,\n } as never);\n })\n .onAction(async (dialogRef) => {\n if (dialogRef.action() === 'cancel') {\n return null;\n }\n\n const context = (dialogRef.context() as AXPUserQueryWizardContext) ?? null;\n const name = resolvePickedEntityFullName(context?.source?.entity?.entityName);\n if (!name) {\n throw new Error(i18n.errors.entityRequired);\n }\n\n return name;\n });\n })\n .show();\n\n return resolveLayoutBuilderDialogResult<string>(result);\n}\n\nasync function openEntityFieldsDialog(\n args: AXPOpenCreateUserQueryWizardArgs,\n entityName: string,\n groups: AXPUserQueryEntityFieldGroupView[],\n selectedGroups: Record<string, string[]>,\n): Promise<EntityFieldsDialogResult | null> {\n const result = await args.layoutBuilder\n .create()\n .dialog<EntityFieldsDialogResult | null>((dialog) => {\n dialog\n .setTitle(i18n.titles.entity)\n .setSize('xl')\n .setCloseButton(true)\n .setContext(createInitialContext('entity', entityName, [], selectedGroups))\n .content((flex) => {\n flex.setDirection('column').setGap('16px').stepWizard((wizard) => {\n wizard\n .name(CREATE_USER_QUERY_WIZARD_NAME)\n .setLook('circular-icon')\n .setLinear(true)\n .setDirection('horizontal')\n .setShowActions(false)\n .setGuards({\n next: (payload) => canLeaveEntityFieldsStep(payload, args, groups),\n })\n .step('fields', i18n.steps.fields, (step) => {\n step.setIcon('fa-light fa-diagram-project').content((layout) => {\n fillEntityFieldsStep(layout, entityName, groups);\n });\n })\n .step('contract', i18n.steps.contract, (step) => {\n step.setIcon('fa-light fa-file-contract').content((layout) => {\n fillContractPlaceholderStep(layout);\n });\n });\n });\n })\n .setActions((actions) => {\n actions\n .cancel('@general:actions.cancel.title')\n .custom({\n title: '@general:actions.previous.title',\n command: 'back-to-entity',\n icon: 'fa-regular fa-arrow-left',\n color: 'primary',\n position: 'prefix',\n hidden: '{{!api.getStatus().isFirst}}',\n predicateApiWidgetName: CREATE_USER_QUERY_WIZARD_NAME,\n } as never)\n .custom({\n title: '@general:actions.previous.title',\n command: `widget:${CREATE_USER_QUERY_WIZARD_NAME}.previous`,\n icon: 'fa-regular fa-arrow-left',\n color: 'primary',\n position: 'prefix',\n hidden: '{{api.getStatus().isFirst}}',\n predicateApiWidgetName: CREATE_USER_QUERY_WIZARD_NAME,\n } as never)\n .custom({\n title: '@general:actions.next.title',\n command: `widget:${CREATE_USER_QUERY_WIZARD_NAME}.next`,\n icon: 'fa-regular fa-arrow-right',\n color: 'primary',\n hidden: '{{api.getStatus().isLast}}',\n predicateApiWidgetName: CREATE_USER_QUERY_WIZARD_NAME,\n } as never)\n .custom({\n title: '@general:actions.submit.title',\n command: `widget:${CREATE_USER_QUERY_WIZARD_NAME}.submit`,\n icon: 'fa-regular fa-check',\n color: 'success',\n hidden: '{{!api.getStatus().isLast}}',\n predicateApiWidgetName: CREATE_USER_QUERY_WIZARD_NAME,\n } as never);\n })\n .onAction(async (dialogRef) => {\n if (dialogRef.action() === 'cancel') {\n return null;\n }\n\n if (dialogRef.action() === 'back-to-entity') {\n return ENTITY_WIZARD_BACK;\n }\n\n const context = (dialogRef.context() as AXPUserQueryWizardContext) ?? null;\n if (!context) {\n return null;\n }\n\n const fields = withRequiredIdField(\n collectSelectedFieldGroupPaths(context.source?.entity?.fieldGroups, groups),\n );\n if (countFieldGroupItems(groups) > 0 && fields.filter((path) => path !== 'id').length === 0) {\n throw new Error(i18n.errors.fieldsRequired);\n }\n\n return {\n ...context,\n source: {\n ...context.source,\n kind: 'entity',\n entity: {\n entityName,\n fields,\n fieldGroups: context.source?.entity?.fieldGroups,\n },\n },\n };\n });\n })\n .show();\n\n return resolveLayoutBuilderDialogResult<EntityFieldsDialogResult>(result);\n}\n\nasync function loadEntityFieldGraph(\n args: AXPOpenCreateUserQueryWizardArgs,\n entityName: string,\n): Promise<{ groups: AXPUserQueryEntityFieldGroupView[]; defaultGroups: Record<string, string[]> } | null> {\n const parsed = parseEntityFullName(entityName);\n if (!parsed) {\n await showWizardWarning(args, i18n.errors.entityLoadFailed);\n return null;\n }\n\n const entity = await args.entityResolver.get(parsed.module, parsed.name);\n if (!entity) {\n await showWizardWarning(args, i18n.errors.entityLoadFailed);\n return null;\n }\n\n const relatedByName = await loadRelatedEntityClosure(args.entityResolver, entity.relatedEntities ?? []);\n const groups = collectUserQueryEntityFieldGroups(entity, relatedByName);\n\n return {\n groups: await toFieldGroupViews(groups, args.translationService),\n defaultGroups: defaultSelectedFieldGroups(groups),\n };\n}\n\nasync function loadRelatedEntityClosure(\n entityResolver: AXPEntityResolver,\n roots: Array<{ entity?: string }>,\n): Promise<Map<string, AXPEntity>> {\n const relatedByName = new Map<string, AXPEntity>();\n let pending = [...new Set(roots.map((item) => item.entity?.trim() ?? '').filter(Boolean))];\n\n for (let depth = 1; depth <= USER_QUERY_RELATED_DEPTH && pending.length > 0; depth += 1) {\n const batch = pending.filter((name) => !relatedByName.has(name));\n pending = [];\n\n await Promise.all(\n batch.map(async (fullName) => {\n const parsed = parseEntityFullName(fullName);\n if (!parsed) {\n return;\n }\n\n const definition = await entityResolver.get(parsed.module, parsed.name);\n if (!definition) {\n return;\n }\n\n relatedByName.set(fullName, definition);\n for (const nested of definition.relatedEntities ?? []) {\n const nestedName = nested.entity?.trim();\n if (nestedName && !relatedByName.has(nestedName)) {\n pending.push(nestedName);\n }\n }\n }),\n );\n }\n\n return relatedByName;\n}\n\n//#endregion\n\n//#region ----- API sub-steps -----\n\nasync function openApiSourceWizard(\n args: AXPOpenCreateUserQueryWizardArgs,\n): Promise<AXPUserQueryWizardContext | null> {\n let previous = createApiWizardContext();\n\n while (true) {\n const tested = await openApiSourceDialog(args, previous);\n if (!tested) {\n return null;\n }\n\n const groups = inferJsonFieldGroups(tested.source?.api?.lastTest?.body);\n const views = await toFieldGroupViews(groups, args.translationService);\n const selected =\n isSameApiRequest(previous, tested) && previous.source?.api?.fieldGroups\n ? previous.source.api.fieldGroups\n : defaultHostFieldGroups(groups);\n\n const outcome = await openApiFieldsDialog(args, tested, views, selected);\n if (outcome === API_WIZARD_BACK) {\n previous = tested;\n continue;\n }\n\n return outcome;\n }\n}\n\nasync function openApiSourceDialog(\n args: AXPOpenCreateUserQueryWizardArgs,\n previous: AXPUserQueryWizardContext,\n): Promise<AXPUserQueryWizardContext | null> {\n const result = await args.layoutBuilder\n .create()\n .dialog<AXPUserQueryWizardContext | null>((dialog) => {\n dialog\n .setTitle(i18n.titles.api)\n .setSize('xl')\n .setCloseButton(true)\n .setContext(previous)\n .content((flex) => {\n flex.setDirection('column').setGap('16px').stepWizard((wizard) => {\n wizard\n .name(CREATE_USER_QUERY_WIZARD_NAME)\n .setLook('circular-icon')\n .setLinear(true)\n .setDirection('horizontal')\n .setShowActions(false)\n .step('source', i18n.steps.source, (step) => {\n step.setIcon('fa-light fa-cloud-arrow-up').content((layout) => {\n fillApiSourceStep(layout);\n });\n })\n .step('fields', i18n.steps.fields, (step) => {\n step.setIcon('fa-light fa-diagram-project').content((layout) => {\n fillHintStep(layout, i18n.steps.fields, i18n.placeholders.apiFieldsNext);\n });\n })\n .step('contract', i18n.steps.contract, (step) => {\n step.setIcon('fa-light fa-file-contract').content((layout) => {\n fillContractPlaceholderStep(layout);\n });\n });\n });\n })\n .setActions((actions) => {\n actions\n .cancel('@general:actions.cancel.title')\n .custom({\n title: '@general:actions.next.title',\n command: 'continue-to-fields',\n icon: 'fa-regular fa-arrow-right',\n color: 'primary',\n hidden: '{{!api.getStatus().isFirst}}',\n predicateApiWidgetName: CREATE_USER_QUERY_WIZARD_NAME,\n } as never)\n .custom({\n title: '@general:actions.next.title',\n command: `widget:${CREATE_USER_QUERY_WIZARD_NAME}.next`,\n icon: 'fa-regular fa-arrow-right',\n color: 'primary',\n hidden: '{{api.getStatus().isFirst || api.getStatus().isLast}}',\n predicateApiWidgetName: CREATE_USER_QUERY_WIZARD_NAME,\n } as never)\n .custom({\n title: '@general:actions.submit.title',\n command: `widget:${CREATE_USER_QUERY_WIZARD_NAME}.submit`,\n icon: 'fa-regular fa-check',\n color: 'success',\n hidden: '{{!api.getStatus().isLast}}',\n predicateApiWidgetName: CREATE_USER_QUERY_WIZARD_NAME,\n } as never);\n })\n .onAction(async (dialogRef) => {\n if (dialogRef.action() === 'cancel') {\n return null;\n }\n\n const context = (dialogRef.context() as AXPUserQueryWizardContext) ?? null;\n const request = normalizeRestApiOutput(context?.source?.api?.request);\n if (!request.url) {\n throw new Error(i18n.errors.apiUrlRequired);\n }\n\n const lastTest = await runRestApiRequest(request);\n if (!lastTest.ok) {\n await showApiTestFailure(args, lastTest);\n throw new Error(lastTest.status === 0 ? i18n.errors.apiTestNetwork : i18n.errors.apiTestFailed);\n }\n\n await showWizardWarning(args, i18n.placeholders.apiTestOk, { status: String(lastTest.status) }, 'success');\n\n return createApiWizardContext({\n connectionId: context?.source?.api?.connectionId,\n request,\n lastTest,\n fieldGroups: context?.source?.api?.fieldGroups,\n });\n });\n })\n .show();\n\n return resolveLayoutBuilderDialogResult<AXPUserQueryWizardContext>(result);\n}\n\nasync function openApiFieldsDialog(\n args: AXPOpenCreateUserQueryWizardArgs,\n tested: AXPUserQueryWizardContext,\n groups: AXPUserQueryEntityFieldGroupView[],\n selectedGroups: Record<string, string[]>,\n): Promise<ApiFieldsDialogResult | null> {\n const result = await args.layoutBuilder\n .create()\n .dialog<ApiFieldsDialogResult | null>((dialog) => {\n dialog\n .setTitle(i18n.titles.api)\n .setSize('xl')\n .setCloseButton(true)\n .setContext(createApiWizardContext(tested.source?.api, selectedGroups))\n .content((flex) => {\n flex.setDirection('column').setGap('16px').stepWizard((wizard) => {\n wizard\n .name(CREATE_USER_QUERY_WIZARD_NAME)\n .setLook('circular-icon')\n .setLinear(true)\n .setDirection('horizontal')\n .setShowActions(false)\n .setGuards({\n next: (payload) => canLeaveApiFieldsStep(payload, args, groups),\n })\n .step('fields', i18n.steps.fields, (step) => {\n step.setIcon('fa-light fa-diagram-project').content((layout) => {\n fillApiFieldsStep(layout, groups);\n });\n })\n .step('contract', i18n.steps.contract, (step) => {\n step.setIcon('fa-light fa-file-contract').content((layout) => {\n fillContractPlaceholderStep(layout);\n });\n });\n });\n })\n .setActions((actions) => {\n actions\n .cancel('@general:actions.cancel.title')\n .custom({\n title: '@general:actions.previous.title',\n command: 'back-to-source',\n icon: 'fa-regular fa-arrow-left',\n color: 'primary',\n position: 'prefix',\n hidden: '{{!api.getStatus().isFirst}}',\n predicateApiWidgetName: CREATE_USER_QUERY_WIZARD_NAME,\n } as never)\n .custom({\n title: '@general:actions.previous.title',\n command: `widget:${CREATE_USER_QUERY_WIZARD_NAME}.previous`,\n icon: 'fa-regular fa-arrow-left',\n color: 'primary',\n position: 'prefix',\n hidden: '{{api.getStatus().isFirst}}',\n predicateApiWidgetName: CREATE_USER_QUERY_WIZARD_NAME,\n } as never)\n .custom({\n title: '@general:actions.next.title',\n command: `widget:${CREATE_USER_QUERY_WIZARD_NAME}.next`,\n icon: 'fa-regular fa-arrow-right',\n color: 'primary',\n hidden: '{{api.getStatus().isLast}}',\n predicateApiWidgetName: CREATE_USER_QUERY_WIZARD_NAME,\n } as never)\n .custom({\n title: '@general:actions.submit.title',\n command: `widget:${CREATE_USER_QUERY_WIZARD_NAME}.submit`,\n icon: 'fa-regular fa-check',\n color: 'success',\n hidden: '{{!api.getStatus().isLast}}',\n predicateApiWidgetName: CREATE_USER_QUERY_WIZARD_NAME,\n } as never);\n })\n .onAction(async (dialogRef) => {\n if (dialogRef.action() === 'cancel') {\n return null;\n }\n\n if (dialogRef.action() === 'back-to-source') {\n return API_WIZARD_BACK;\n }\n\n const context = (dialogRef.context() as AXPUserQueryWizardContext) ?? null;\n if (!context) {\n return null;\n }\n\n const fields = collectSelectedFieldGroupPaths(context.source?.api?.fieldGroups, groups);\n if (countFieldGroupItems(groups) > 0 && fields.length === 0) {\n throw new Error(i18n.errors.fieldsRequired);\n }\n\n return createApiWizardContext({\n ...tested.source?.api,\n fields,\n fieldGroups: context.source?.api?.fieldGroups,\n });\n });\n })\n .show();\n\n return resolveLayoutBuilderDialogResult<ApiFieldsDialogResult>(result);\n}\n\nfunction fillApiFieldsStep(layout: ILayoutBuilder, groups: AXPUserQueryEntityFieldGroupView[]): void {\n layout.flex((flex) => {\n flex.setDirection('column').setGap('16px').setAlignItems('stretch');\n flex.fieldset((fieldset) => {\n fieldset\n .setTitle(i18n.fields.sample)\n .setDescription(i18n.placeholders.selectedApiHint)\n .setIcon('fa-light fa-code')\n .setCols(1)\n .formField(i18n.fields.status, (field) => {\n field.path('source.api.lastTest.status').textBox().readonly(true);\n })\n .formField(i18n.fields.sample, (field) => {\n field.path('source.api.lastTest.body').customWidget('json-viewer', {}).layout(1);\n });\n });\n\n for (const group of groups) {\n renderFieldGroup(flex, group, 'source.api.fieldGroups');\n }\n });\n}\n\nasync function canLeaveApiFieldsStep(\n payload: AXPStepWizardGuardPayload,\n args: AXPOpenCreateUserQueryWizardArgs,\n groups: AXPUserQueryEntityFieldGroupView[],\n): Promise<boolean> {\n if (payload.step?.id !== 'fields') {\n return true;\n }\n\n if (countFieldGroupItems(groups) === 0) {\n return true;\n }\n\n const context = (payload.context ?? {}) as AXPUserQueryWizardContext;\n const selected = collectSelectedFieldGroupPaths(context.source?.api?.fieldGroups, groups);\n if (selected.length > 0) {\n return true;\n }\n\n await showWizardWarning(args, i18n.errors.fieldsRequired);\n return false;\n}\n\nfunction createApiWizardContext(\n api?: AXPUserQueryWizardSource['api'],\n fieldGroups: Record<string, string[]> = {},\n): AXPUserQueryWizardContext {\n const base = createInitialContext('api');\n return {\n ...base,\n source: {\n ...base.source,\n api: {\n request: api?.request ?? createEmptyRestApiOutput(),\n connectionId: api?.connectionId,\n lastTest: api?.lastTest\n ? { ...api.lastTest, status: String(api.lastTest.status) }\n : undefined,\n fields: api?.fields ?? [],\n fieldGroups: Object.keys(fieldGroups).length ? fieldGroups : (api?.fieldGroups ?? {}),\n },\n },\n };\n}\n\nfunction isSameApiRequest(left: AXPUserQueryWizardContext, right: AXPUserQueryWizardContext): boolean {\n return JSON.stringify(left.source?.api?.request) === JSON.stringify(right.source?.api?.request);\n}\n\nasync function showApiTestFailure(\n args: AXPOpenCreateUserQueryWizardArgs,\n lastTest: AXPUserQueryApiTestResult,\n): Promise<void> {\n if (Number(lastTest.status) === 0) {\n await showWizardWarning(args, i18n.errors.apiTestNetwork);\n return;\n }\n\n await showWizardWarning(args, i18n.errors.apiTestFailed, { status: String(lastTest.status) });\n}\n\nasync function runRestApiRequest(value: AXRestApiOutput | null | undefined): Promise<AXPUserQueryApiTestResult> {\n const request = normalizeRestApiOutput(value);\n const url = buildApiRequestUrl(request);\n if (!url) {\n return { ok: false, status: 0, body: null };\n }\n\n const headers: Record<string, string> = {};\n if (request.headers['ContentType'].trim()) {\n headers['Content-Type'] = request.headers['ContentType'].trim();\n }\n if (request.headers['Authorization'].trim()) {\n headers['Authorization'] = request.headers['Authorization'].trim();\n }\n for (const [key, headerValue] of Object.entries(request.headers)) {\n if (key === 'Authorization' || key === 'ContentType' || key === 'tempId') {\n continue;\n }\n if (typeof headerValue === 'string' && headerValue.trim()) {\n headers[key] = headerValue.trim();\n }\n }\n\n try {\n const response = await fetch(url, {\n method: request.method,\n headers,\n body: request.method === 'GET' || !request.body.trim() ? undefined : request.body,\n credentials: 'omit',\n signal: AbortSignal.timeout(15000),\n });\n const text = (await response.text()).trim();\n let body: unknown = text || null;\n if (text) {\n try {\n body = JSON.parse(text) as unknown;\n } catch {\n body = text;\n }\n }\n\n return {\n ok: response.status >= 200 && response.status < 300,\n status: response.status,\n body,\n };\n } catch {\n return { ok: false, status: 0, body: null };\n }\n}\n\nfunction buildApiRequestUrl(request: AXRestApiOutput): string {\n const base = request.url.trim();\n if (!base) {\n return '';\n }\n\n const params = new URLSearchParams();\n for (const query of request.queries ?? []) {\n for (const [key, value] of Object.entries(query)) {\n if (key === 'tempId' || !String(key).trim() || value == null || !String(value).trim()) {\n continue;\n }\n params.append(key, String(value).trim());\n }\n }\n\n const search = params.toString();\n if (!search) {\n return base;\n }\n\n return base.includes('?') ? `${base}&${search}` : `${base}?${search}`;\n}\n\nfunction inferJsonFieldGroups(sample: unknown): AXPUserQueryEntityFieldGroup[] {\n const root = firstPlainObject(sample);\n if (!root) {\n return [];\n }\n\n const envelope = splitJsonEnvelope(root);\n if (!envelope) {\n return jsonGroupsFromObject(root, '', 0, true);\n }\n\n const groups = jsonGroupsFromObject(envelope.record, envelope.path, 0, true);\n if (envelope.meta.length > 0) {\n groups.push({\n id: 'response',\n kind: 'lookup',\n title: i18n.fields.response,\n fallback: 'response',\n items: envelope.meta,\n });\n }\n\n return groups;\n}\n\nfunction splitJsonEnvelope(\n root: Record<string, unknown>,\n): { record: Record<string, unknown>; path: string; meta: AXPUserQueryEntityFieldGroup['items'] } | null {\n const payloadKeys = ['data', 'result', 'results', 'items', 'records', 'value', 'payload', 'content'];\n const flagKeys = new Set(['ok', 'success', 'status', 'kind', 'error', 'code', 'message']);\n const metaObjectKeys = new Set(['info', 'meta', 'pagination', 'support', 'links', 'page']);\n const keys = Object.keys(root);\n const namedPayload = payloadKeys.find((key) => root[key] != null);\n const hasFlag = keys.some((key) => flagKeys.has(key) && isJsonScalar(root[key]));\n\n let payloadKey = namedPayload;\n if (payloadKey) {\n const rest = keys.filter((key) => key !== payloadKey);\n const restAreMeta = rest.every(\n (key) => isJsonScalar(root[key]) || flagKeys.has(key) || metaObjectKeys.has(key),\n );\n if (!hasFlag && !restAreMeta) {\n payloadKey = undefined;\n }\n } else {\n const arrayKeys = keys.filter((key) => {\n const value = root[key];\n return Array.isArray(value) && value.some((item) => isPlainObject(item));\n });\n const otherKeys = keys.filter((key) => !arrayKeys.includes(key));\n if (\n arrayKeys.length === 1 &&\n otherKeys.length > 0 &&\n otherKeys.every((key) => isJsonScalar(root[key]))\n ) {\n payloadKey = arrayKeys[0];\n }\n }\n\n if (!payloadKey) {\n return null;\n }\n\n const payload = root[payloadKey];\n const meta: AXPUserQueryEntityFieldGroup['items'] = [];\n for (const [key, value] of Object.entries(root)) {\n if (key === payloadKey || !isJsonScalar(value)) {\n continue;\n }\n meta.push({ path: key, fallback: key });\n }\n\n if (Array.isArray(payload)) {\n const record = firstPlainObject(payload);\n if (!record) {\n return null;\n }\n return { record, path: payloadKey, meta };\n }\n\n if (isPlainObject(payload)) {\n const items = payload['items'];\n if (Array.isArray(items)) {\n const record = firstPlainObject(items);\n if (record) {\n for (const [key, value] of Object.entries(payload)) {\n if (key === 'items' || !isJsonScalar(value)) {\n continue;\n }\n meta.push({ path: `${payloadKey}.${key}`, fallback: key });\n }\n return { record, path: `${payloadKey}.items`, meta };\n }\n }\n\n return { record: payload, path: payloadKey, meta };\n }\n\n meta.push({ path: payloadKey, fallback: payloadKey });\n return { record: { value: payload }, path: payloadKey, meta };\n}\n\nfunction jsonGroupsFromObject(\n value: Record<string, unknown>,\n prefix: string,\n depth: number,\n asHost = false,\n): AXPUserQueryEntityFieldGroup[] {\n const scalars: AXPUserQueryEntityFieldGroup['items'] = [];\n const nested: Array<{ key: string; path: string; value: Record<string, unknown> }> = [];\n\n for (const [key, raw] of Object.entries(value)) {\n const path = prefix ? `${prefix}.${key}` : key;\n const unwrapped = Array.isArray(raw) ? firstPlainObject(raw) : raw;\n if (isPlainObject(unwrapped) && depth < 2) {\n nested.push({ key, path, value: unwrapped });\n continue;\n }\n\n scalars.push({ path, fallback: key });\n }\n\n const groups: AXPUserQueryEntityFieldGroup[] = [];\n if (scalars.length > 0) {\n const leaf = prefix.includes('.') ? (prefix.split('.').pop() ?? prefix) : prefix;\n const isHost = (asHost && depth === 0) || !prefix;\n groups.push({\n id: isHost ? 'host' : `rel_${prefix.replace(/[^a-zA-Z0-9]+/g, '_')}_fields`,\n kind: isHost ? 'host' : 'relation',\n title: leaf,\n fallback: leaf || 'fields',\n items: scalars,\n });\n }\n\n if (depth >= 2) {\n return groups;\n }\n\n for (const item of nested) {\n const children = jsonGroupsFromObject(item.value, item.path, depth + 1, false);\n groups.push({\n id: `rel_${item.path.replace(/[^a-zA-Z0-9]+/g, '_')}`,\n kind: 'relation',\n title: item.key,\n fallback: item.key,\n items: [],\n children: children.length > 0 ? children : undefined,\n });\n }\n\n return groups;\n}\n\nfunction defaultHostFieldGroups(groups: AXPUserQueryEntityFieldGroup[]): Record<string, string[]> {\n const selected: Record<string, string[]> = {};\n const walk = (group: AXPUserQueryEntityFieldGroup): void => {\n selected[group.id] = group.kind === 'host' ? group.items.map((item) => item.path) : [];\n for (const child of group.children ?? []) {\n walk(child);\n }\n };\n for (const group of groups) {\n walk(group);\n }\n return selected;\n}\n\nfunction firstPlainObject(value: unknown): Record<string, unknown> | null {\n if (Array.isArray(value)) {\n for (const item of value) {\n const found = firstPlainObject(item);\n if (found) {\n return found;\n }\n }\n return null;\n }\n\n return isPlainObject(value) ? value : null;\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return value != null && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction isJsonScalar(value: unknown): boolean {\n if (value == null) {\n return true;\n }\n\n const type = typeof value;\n return type === 'string' || type === 'number' || type === 'boolean';\n}\n\n//#endregion\n\n//#region ----- Advanced placeholder -----\n\nasync function openAdvancedPlaceholder(\n args: AXPOpenCreateUserQueryWizardArgs,\n): Promise<null> {\n await args.layoutBuilder\n .create()\n .dialog<null>((dialog) => {\n dialog\n .setTitle(i18n.titles.advanced)\n .setMessage(i18n.placeholders.advanced)\n .setSize('md')\n .setCloseButton(true)\n .setActions((actions) => {\n actions.cancel('@general:actions.close.title');\n })\n .onAction(async () => null);\n })\n .show();\n\n return null;\n}\n\n//#endregion\n\n//#region ----- Simple source wizard -----\n\nfunction configureSimpleSourceWizard(\n dialog: IDialogBuilder<AXPUserQueryWizardContext | null>,\n args: AXPOpenCreateUserQueryWizardArgs,\n): void {\n dialog\n .setTitle(dialogTitleKey(args.sourceKind))\n .setSize(args.sourceKind === 'api' ? 'xl' : 'lg')\n .setCloseButton(true)\n .setContext(createInitialContext(args.sourceKind))\n .content((flex) => {\n flex.setDirection('column').setGap('16px').stepWizard((wizard) => {\n wizard\n .name(CREATE_USER_QUERY_WIZARD_NAME)\n .setLook('circular-icon')\n .setLinear(true)\n .setDirection('horizontal')\n .setShowActions(false)\n .setGuards({\n next: (payload) => canLeaveSourceStep(payload, args),\n })\n .step('source', i18n.steps.source, (step) => {\n step.setIcon(sourceStepIcon(args.sourceKind)).content((layout) => {\n fillSourceStep(layout, args);\n });\n })\n .step('contract', i18n.steps.contract, (step) => {\n step.setIcon('fa-light fa-file-contract').content((layout) => {\n fillContractPlaceholderStep(layout);\n });\n });\n });\n })\n .setActions((actions) => {\n actions\n .cancel('@general:actions.cancel.title')\n .custom({\n title: '@general:actions.previous.title',\n command: `widget:${CREATE_USER_QUERY_WIZARD_NAME}.previous`,\n icon: 'fa-regular fa-arrow-left',\n color: 'primary',\n position: 'prefix',\n disabled: '{{api.getStatus().isFirst}}',\n predicateApiWidgetName: CREATE_USER_QUERY_WIZARD_NAME,\n } as never)\n .custom({\n title: '@general:actions.next.title',\n command: `widget:${CREATE_USER_QUERY_WIZARD_NAME}.next`,\n icon: 'fa-regular fa-arrow-right',\n color: 'primary',\n hidden: '{{api.getStatus().isLast}}',\n predicateApiWidgetName: CREATE_USER_QUERY_WIZARD_NAME,\n } as never)\n .custom({\n title: '@general:actions.submit.title',\n command: `widget:${CREATE_USER_QUERY_WIZARD_NAME}.submit`,\n icon: 'fa-regular fa-check',\n color: 'success',\n hidden: '{{!api.getStatus().isLast}}',\n predicateApiWidgetName: CREATE_USER_QUERY_WIZARD_NAME,\n } as never);\n })\n .onAction(async (dialogRef) => {\n if (dialogRef.action() === 'cancel') {\n return null;\n }\n\n return (dialogRef.context() as AXPUserQueryWizardContext) ?? null;\n });\n}\n\n//#endregion\n\n//#region ----- Step bodies -----\n\nfunction fillSourceStep(layout: ILayoutBuilder, args: AXPOpenCreateUserQueryWizardArgs): void {\n switch (args.sourceKind) {\n case 'static':\n fillStaticSourceStep(layout);\n return;\n case 'api':\n fillApiSourceStep(layout);\n return;\n default:\n return;\n }\n}\n\nfunction fillEntityPickStep(layout: ILayoutBuilder, readonly = false): void {\n layout.fieldset((fieldset) => {\n fieldset.setTitle(i18n.steps.entity).setIcon('fa-light fa-database').setCols(1);\n if (!readonly) {\n fieldset.setDescription(i18n.placeholders.fieldsNext);\n }\n\n fieldset.formField(i18n.fields.entity, (field) => {\n field.path('source.entity.entityName').lookupBox({\n entity: CREATE_USER_QUERY_ENTITY_CATALOG,\n valueField: 'id',\n textField: 'id',\n columns: ['name', 'module_id'],\n look: 'select',\n searchable: true,\n allowClear: !readonly,\n validations: readonly ? undefined : [{ rule: 'required' }],\n });\n if (readonly) {\n field.readonly(true);\n }\n });\n });\n}\n\nfunction fillEntityFieldsStep(\n layout: ILayoutBuilder,\n entityName: string,\n groups: AXPUserQueryEntityFieldGroupView[],\n): void {\n layout.flex((flex) => {\n flex.setDirection('column').setGap('16px').setAlignItems('stretch');\n flex.fieldset((fieldset) => {\n fieldset\n .setTitle(entityName)\n .setDescription(i18n.placeholders.selectedEntityHint)\n .setIcon('fa-light fa-database')\n .setLook('group');\n });\n\n for (const group of groups) {\n renderFieldGroup(flex, group);\n }\n });\n}\n\nfunction renderFieldGroup(\n layout: FieldGroupLayoutHost,\n group: AXPUserQueryEntityFieldGroupView,\n fieldGroupsPath = 'source.entity.fieldGroups',\n): void {\n if (group.kind === 'relation' && (group.children?.length ?? 0) > 0) {\n layout.panel((panel) => {\n panel.setCaption(group.title).setIcon('fa-light fa-link').setLook('outline');\n if (group.items.length) {\n panel.fieldset((fieldset) => {\n appendFieldGroupList(fieldset, group, i18n.fields.hostFields, fieldGroupsPath);\n });\n }\n for (const child of group.children ?? []) {\n renderFieldGroupOnPanel(panel, child, fieldGroupsPath);\n }\n });\n return;\n }\n\n layout.fieldset((fieldset) => {\n appendFieldGroupList(fieldset, group, group.title, fieldGroupsPath);\n });\n}\n\nfunction renderFieldGroupOnPanel(\n panel: IPanelContainerBuilder,\n group: AXPUserQueryEntityFieldGroupView,\n fieldGroupsPath = 'source.entity.fieldGroups',\n): void {\n if ((group.children?.length ?? 0) > 0) {\n panel.panel((inner) => {\n inner.setCaption(group.title).setIcon('fa-light fa-link').setLook('outline');\n if (group.items.length) {\n inner.fieldset((fieldset) => {\n appendFieldGroupList(fieldset, group, i18n.fields.hostFields, fieldGroupsPath);\n });\n }\n for (const child of group.children ?? []) {\n renderFieldGroupOnPanel(inner, child, fieldGroupsPath);\n }\n });\n return;\n }\n\n panel.fieldset((fieldset) => {\n appendFieldGroupList(fieldset, group, group.title, fieldGroupsPath);\n });\n}\n\nfunction appendFieldGroupList(\n fieldset: IFieldsetContainerBuilder,\n group: AXPUserQueryEntityFieldGroupView,\n title: string,\n fieldGroupsPath = 'source.entity.fieldGroups',\n): void {\n fieldset.setTitle(title).setIcon(fieldGroupIcon(group.kind)).setCols(1);\n if (group.kind === 'host') {\n fieldset.setDescription(\n fieldGroupsPath.startsWith('source.api') ? i18n.placeholders.apiFields : i18n.placeholders.entityFields,\n );\n }\n\n if (!group.items.length) {\n return;\n }\n\n fieldset.formField(' ', (field) => {\n field.path(`${fieldGroupsPath}.${group.id}`).selectionList({\n dataSource: group.items,\n valueField: 'path',\n textField: 'text',\n multiple: true,\n searchable: group.items.length > 8,\n direction: { id: 'vertical' } as never,\n } as never);\n });\n}\n\nfunction fieldGroupIcon(kind: AXPUserQueryEntityFieldGroupView['kind']): string {\n if (kind === 'relation') {\n return 'fa-light fa-link';\n }\n if (kind === 'lookup') {\n return 'fa-light fa-diagram-nested';\n }\n return 'fa-light fa-list';\n}\n\nfunction fillHintStep(layout: ILayoutBuilder, titleKey: string, descriptionKey: string): void {\n layout.fieldset((fieldset) => {\n fieldset.setTitle(titleKey).setDescription(descriptionKey).setIcon('fa-light fa-diagram-project').setLook('group');\n });\n}\n\nfunction fillStaticSourceStep(layout: ILayoutBuilder): void {\n layout.fieldset((fieldset) => {\n fieldset\n .setTitle(i18n.steps.source)\n .setDescription(i18n.placeholders.itemsHint)\n .setIcon('fa-light fa-list')\n .setCols(1)\n .formField(' ', (field) => {\n field\n .path('source.static.items')\n .setShowLabel(false)\n .customWidget(AXPWidgetsList.Layouts.RepeaterLayout, {\n hasControls: true,\n allowReorder: true,\n children: staticItemRepeaterChildren(),\n })\n .layout(1);\n });\n });\n}\n\nfunction staticItemRepeaterChildren(): AXPWidgetNode[] {\n return [\n {\n type: AXPWidgetsList.Layouts.FlexLayout,\n mode: 'edit',\n options: {\n flexDirection: 'row',\n gap: '12px',\n alignItems: 'stretch',\n },\n children: [\n staticItemRepeaterField(i18n.fields.value, 'value'),\n staticItemRepeaterField(i18n.fields.title, 'title'),\n ],\n },\n ];\n}\n\nfunction staticItemRepeaterField(label: string, path: string): AXPWidgetNode {\n return {\n type: AXPWidgetsList.Layouts.FlexItemLayout,\n options: { grow: 1 },\n children: [\n {\n type: AXPWidgetsList.Layouts.FormField,\n options: { label, showLabel: true },\n children: [\n {\n type: AXPWidgetsList.Editors.TextBox,\n path,\n name: path,\n mode: 'edit',\n },\n ],\n },\n ],\n };\n}\n\nfunction fillApiSourceStep(layout: ILayoutBuilder): void {\n layout.fieldset((fieldset) => {\n fieldset\n .setTitle(i18n.steps.source)\n .setDescription(i18n.placeholders.apiFieldsNext)\n .setIcon('fa-light fa-cloud-arrow-up')\n .setCols(1)\n .formField(i18n.fields.connection, (field) => {\n field\n .path('source.api.connectionId')\n .lookupBox({\n entity: 'IntegrationManagement.IntegrationConnection',\n searchable: true,\n allowClear: true,\n })\n .layout(1);\n })\n .formField(i18n.fields.request, (field) => {\n field.path('source.api.request').customWidget(REST_API_GENERATOR_WIDGET_NAME, {}).layout(1);\n });\n });\n}\n\nfunction fillContractPlaceholderStep(layout: ILayoutBuilder): void {\n layout.fieldset((fieldset) => {\n fieldset\n .setTitle(i18n.steps.contract)\n .setDescription(i18n.placeholders.contract)\n .setIcon('fa-light fa-file-contract')\n .setLook('group');\n });\n}\n\n//#endregion\n\n//#region ----- Guards & helpers -----\n\nasync function canLeaveSourceStep(\n payload: AXPStepWizardGuardPayload,\n args: AXPOpenCreateUserQueryWizardArgs,\n): Promise<boolean> {\n if (payload.step?.id !== 'source') {\n return true;\n }\n\n const context = (payload.context ?? {}) as AXPUserQueryWizardContext;\n const errorKey = sourceStepErrorKey(args.sourceKind, context);\n if (!errorKey) {\n return true;\n }\n\n await showWizardWarning(args, errorKey);\n return false;\n}\n\nasync function canLeaveEntityFieldsStep(\n payload: AXPStepWizardGuardPayload,\n args: AXPOpenCreateUserQueryWizardArgs,\n groups: AXPUserQueryEntityFieldGroupView[],\n): Promise<boolean> {\n if (payload.step?.id !== 'fields') {\n return true;\n }\n\n if (countFieldGroupItems(groups) === 0) {\n return true;\n }\n\n const context = (payload.context ?? {}) as AXPUserQueryWizardContext;\n const selected = collectSelectedFieldGroupPaths(context.source?.entity?.fieldGroups, groups).filter(\n (path) => path !== 'id',\n );\n if (selected.length > 0) {\n return true;\n }\n\n await showWizardWarning(args, i18n.errors.fieldsRequired);\n return false;\n}\n\nfunction sourceStepErrorKey(\n sourceKind: AXPUserQuerySourceKind,\n context: AXPUserQueryWizardContext,\n): string | null {\n if (sourceKind === 'static') {\n const hasValue = (context.source?.static?.items ?? []).some((row) => String(row?.value ?? '').trim());\n return hasValue ? null : i18n.errors.staticRequired;\n }\n\n if (sourceKind === 'api') {\n const url = context.source?.api?.request?.url?.trim() ?? '';\n return url ? null : i18n.errors.apiUrlRequired;\n }\n\n return null;\n}\n\nfunction createInitialContext(\n sourceKind: AXPUserQuerySourceKind,\n entityName = '',\n fields: string[] = [],\n fieldGroups: Record<string, string[]> = {},\n): AXPUserQueryWizardContext {\n const items: AXPUserQueryStaticItem[] = [{ value: '', title: '' }];\n\n return {\n sourceKind,\n source: {\n kind: sourceKind,\n entity: { entityName, fields, fieldGroups },\n static: { items },\n api: { request: createEmptyRestApiOutput() },\n },\n };\n}\n\nfunction countFieldGroupItems(groups: AXPUserQueryEntityFieldGroupView[]): number {\n let count = 0;\n const walk = (group: AXPUserQueryEntityFieldGroupView): void => {\n count += group.items.length;\n for (const child of group.children ?? []) {\n walk(child);\n }\n };\n for (const group of groups) {\n walk(group);\n }\n return count;\n}\n\nasync function toFieldGroupViews(\n groups: AXPUserQueryEntityFieldGroup[],\n translationService: AXTranslationService,\n): Promise<AXPUserQueryEntityFieldGroupView[]> {\n const hostTitle = resolveLabel(translationService, i18n.fields.hostFields, 'Fields');\n\n const mapGroup = async (group: AXPUserQueryEntityFieldGroup): Promise<AXPUserQueryEntityFieldGroupView> => {\n const resolvedName = resolveLabel(translationService, group.title, group.fallback);\n let title = resolvedName;\n if (group.kind === 'host') {\n title = hostTitle;\n } else if (group.kind === 'relation') {\n title = await formatRelatedGroupTitle(translationService, resolvedName);\n }\n\n const children = group.children?.length\n ? await Promise.all(group.children.map((child) => mapGroup(child)))\n : undefined;\n\n return {\n id: group.id,\n kind: group.kind,\n title,\n items: group.items.map((item) => ({\n path: item.path,\n text: resolveLabel(translationService, item.title, item.fallback),\n })),\n children,\n };\n };\n\n return Promise.all(groups.map((group) => mapGroup(group)));\n}\n\nasync function formatRelatedGroupTitle(\n translationService: AXTranslationService,\n name: string,\n): Promise<string> {\n const translated = await translationService.translateAsync(i18n.placeholders.relatedTo, { params: { name } });\n return typeof translated === 'string' && translated.trim() ? translated.trim() : name;\n}\n\nfunction resolveLabel(translationService: AXTranslationService, value: unknown, fallback: string): string {\n if (value == null || value === '') {\n return fallback;\n }\n\n const resolved = translationService.resolve(value as never);\n const text = typeof resolved === 'string' ? resolved.trim() : '';\n return text || fallback;\n}\n\nasync function showWizardWarning(\n args: AXPOpenCreateUserQueryWizardArgs,\n errorKey: string,\n params?: Record<string, string>,\n color: 'warning' | 'success' = 'warning',\n): Promise<void> {\n const message = await args.translationService.translateAsync(errorKey, params ? { params } : undefined);\n args.toastService.show({\n color,\n content: message,\n closeButton: true,\n timeOut: 4000,\n timeOutProgress: true,\n });\n}\n\nfunction dialogTitleKey(sourceKind: AXPUserQuerySourceKind): string {\n if (sourceKind === 'static') {\n return i18n.titles.static;\n }\n if (sourceKind === 'api') {\n return i18n.titles.api;\n }\n return i18n.titles.entity;\n}\n\nfunction sourceStepIcon(sourceKind: AXPUserQuerySourceKind): string {\n if (sourceKind === 'static') {\n return 'fa-light fa-list';\n }\n if (sourceKind === 'api') {\n return 'fa-light fa-cloud-arrow-up';\n }\n return 'fa-light fa-database';\n}\n\n//#endregion\n","//#region ----- Imports -----\n\nimport { AXPLayoutBuilderService } from '@acorex-platform/framework-client/layout/builder';\nimport { AXPEntityResolver } from '@acorex-platform/framework-client/layout/entity';\nimport {\n AXPCommand,\n entityActionDataRecord,\n resolveEntityActionCommandInput,\n type AXPCommandExecuteResultPromise,\n type AXPEntityActionCommandInput,\n} from '@acorex-platform/framework-shared/runtime';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { Injectable, inject } from '@angular/core';\n\nimport { openCreateUserQueryWizard } from './create-user-query.wizard';\nimport type { AXPUserQuerySourceKind } from './create-user-query.types';\n\n//#endregion\n\n//#region ----- Command -----\n\n/**\n * Opens the user-query create wizard. Step 1 configures the source; nothing is persisted.\n */\n@Injectable({ providedIn: 'root' })\nexport class AXMCreateUserQueryCommand implements AXPCommand<AXPEntityActionCommandInput> {\n //#region ----- Services & Dependencies -----\n\n private readonly layoutBuilder = inject(AXPLayoutBuilderService);\n private readonly entityResolver = inject(AXPEntityResolver);\n private readonly toastService = inject(AXToastService);\n private readonly translationService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ----- Execution -----\n\n async execute(input: AXPEntityActionCommandInput = {}): AXPCommandExecuteResultPromise {\n const sourceKind = resolveSourceKind(input);\n\n await openCreateUserQueryWizard({\n layoutBuilder: this.layoutBuilder,\n toastService: this.toastService,\n translationService: this.translationService,\n entityResolver: this.entityResolver,\n sourceKind,\n });\n\n return {\n success: true,\n kind: 'object',\n data: { sourceKind },\n metadata: { refresh: false },\n };\n }\n\n //#endregion\n}\n\n//#endregion\n\n//#region ----- Helpers -----\n\nfunction resolveSourceKind(input: AXPEntityActionCommandInput): AXPUserQuerySourceKind {\n const resolved = resolveEntityActionCommandInput(input);\n const data = entityActionDataRecord(resolved.data) ?? {};\n const options = (resolved.options ?? {}) as Record<string, unknown>;\n const process = (options['process'] ?? {}) as Record<string, unknown>;\n const processData = (process['data'] ?? {}) as Record<string, unknown>;\n const raw = data['sourceKind'] ?? processData['sourceKind'];\n\n if (raw === 'static' || raw === 'api' || raw === 'advanced' || raw === 'entity') {\n return raw;\n }\n\n return 'entity';\n}\n\n//#endregion\n"],"names":["i18n"],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ import { RootConfig } from '@acorex-platform/module-platform-management-client/contracts';
2
+
3
+ const CREATE_USER_QUERY_COMMAND_KEY = 'PlatformManagement:CreateUserQuery';
4
+ const CREATE_USER_QUERY_WIZARD_NAME = 'create-user-query-wizard';
5
+ const CREATE_USER_QUERY_ENTITY_CATALOG = `${RootConfig.module.name}.${RootConfig.entities.entityDefinition.name}`;
6
+ const CREATE_USER_QUERY_I18N = {
7
+ titles: {
8
+ entity: '@platform-management:query-definitions.wizard.create.titles.entity',
9
+ static: '@platform-management:query-definitions.wizard.create.titles.static-list',
10
+ api: '@platform-management:query-definitions.wizard.create.titles.external-api',
11
+ advanced: '@platform-management:query-definitions.wizard.create.titles.advanced',
12
+ },
13
+ steps: {
14
+ source: '@platform-management:query-definitions.wizard.create.steps.source',
15
+ entity: '@platform-management:query-definitions.wizard.create.steps.entity',
16
+ fields: '@platform-management:query-definitions.wizard.create.steps.fields',
17
+ contract: '@platform-management:query-definitions.wizard.create.steps.contract',
18
+ },
19
+ fields: {
20
+ entity: '@platform-management:query-definitions.wizard.create.fields.entity',
21
+ fields: '@platform-management:query-definitions.wizard.create.fields.fields',
22
+ hostFields: '@platform-management:query-definitions.wizard.create.fields.host-fields',
23
+ value: '@platform-management:query-definitions.wizard.create.fields.value',
24
+ title: '@platform-management:query-definitions.wizard.create.fields.title',
25
+ connection: '@platform-management:query-definitions.wizard.create.fields.connection',
26
+ method: '@platform-management:query-definitions.wizard.create.fields.method',
27
+ path: '@platform-management:query-definitions.wizard.create.fields.path',
28
+ request: '@platform-management:query-definitions.wizard.create.fields.request',
29
+ sample: '@platform-management:query-definitions.wizard.create.fields.sample',
30
+ status: '@platform-management:query-definitions.wizard.create.fields.status',
31
+ response: '@platform-management:query-definitions.wizard.create.fields.response',
32
+ },
33
+ import: {
34
+ title: '@platform-management:query-definitions.wizard.create.import.title',
35
+ placeholder: '@platform-management:query-definitions.wizard.create.import.placeholder',
36
+ apply: '@platform-management:query-definitions.wizard.create.import.apply',
37
+ parseFailed: '@platform-management:query-definitions.wizard.create.errors.parse-failed',
38
+ },
39
+ methods: {
40
+ get: '@platform-management:query-definitions.wizard.create.methods.get',
41
+ post: '@platform-management:query-definitions.wizard.create.methods.post',
42
+ },
43
+ placeholders: {
44
+ contract: '@platform-management:query-definitions.wizard.create.placeholders.contract',
45
+ advanced: '@platform-management:query-definitions.wizard.create.placeholders.advanced',
46
+ itemsHint: '@platform-management:query-definitions.wizard.create.items-hint',
47
+ entityFields: '@platform-management:query-definitions.wizard.create.placeholders.entity-fields',
48
+ fieldsNext: '@platform-management:query-definitions.wizard.create.placeholders.fields-next',
49
+ selectedEntityHint: '@platform-management:query-definitions.wizard.create.placeholders.selected-entity-hint',
50
+ relatedTo: '@platform-management:query-definitions.wizard.create.placeholders.related-to',
51
+ apiFieldsNext: '@platform-management:query-definitions.wizard.create.placeholders.api-fields-next',
52
+ selectedApiHint: '@platform-management:query-definitions.wizard.create.placeholders.selected-api-hint',
53
+ apiFields: '@platform-management:query-definitions.wizard.create.placeholders.api-fields',
54
+ apiTestOk: '@platform-management:query-definitions.wizard.create.placeholders.api-test-ok',
55
+ },
56
+ errors: {
57
+ entityRequired: '@platform-management:query-definitions.wizard.create.errors.entity-required',
58
+ entityLoadFailed: '@platform-management:query-definitions.wizard.create.errors.entity-load-failed',
59
+ fieldsRequired: '@platform-management:query-definitions.wizard.create.errors.fields-required',
60
+ staticRequired: '@platform-management:query-definitions.wizard.create.errors.static-required',
61
+ apiConnectionRequired: '@platform-management:query-definitions.wizard.create.errors.api-connection-required',
62
+ apiPathRequired: '@platform-management:query-definitions.wizard.create.errors.api-path-required',
63
+ apiUrlRequired: '@platform-management:query-definitions.wizard.create.errors.api-url-required',
64
+ apiTestFailed: '@platform-management:query-definitions.wizard.create.errors.api-test-failed',
65
+ apiTestNetwork: '@platform-management:query-definitions.wizard.create.errors.api-test-network',
66
+ },
67
+ };
68
+ //#endregion
69
+
70
+ export { CREATE_USER_QUERY_I18N as C, CREATE_USER_QUERY_WIZARD_NAME as a, CREATE_USER_QUERY_ENTITY_CATALOG as b };
71
+ //# sourceMappingURL=acorex-platform-module-platform-management-client-create-user-query.types-DdygAori.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-platform-module-platform-management-client-create-user-query.types-DdygAori.mjs","sources":["../../../../libs/modules/platform-management/client/src/lib/features/query-definition/create-user-query.types.ts"],"sourcesContent":["import type { AXRestApiOutput } from '@acorex/components/rest-api-generator';\nimport { RootConfig } from '@acorex-platform/module-platform-management-client/contracts';\n\n//#region ----- Types -----\n\nexport type AXPUserQuerySourceKind = 'entity' | 'static' | 'api' | 'advanced';\n\nexport interface AXPUserQueryStaticItem {\n value: string;\n title: string;\n}\n\nexport type AXPUserQueryEntityFieldKind = 'host' | 'lookup' | 'relation';\n\nexport interface AXPUserQueryEntityFieldItem {\n path: string;\n text: string;\n}\n\nexport interface AXPUserQueryEntityFieldGroup {\n id: string;\n kind: AXPUserQueryEntityFieldKind;\n title: unknown;\n fallback: string;\n items: Array<{ path: string; title?: unknown; fallback: string }>;\n children?: AXPUserQueryEntityFieldGroup[];\n}\n\nexport interface AXPUserQueryEntityFieldGroupView {\n id: string;\n kind: AXPUserQueryEntityFieldKind;\n title: string;\n items: AXPUserQueryEntityFieldItem[];\n children?: AXPUserQueryEntityFieldGroupView[];\n}\n\nexport interface AXPUserQueryApiTestResult {\n ok: boolean;\n status: number | string;\n body: unknown;\n}\n\nexport interface AXPUserQueryWizardSource {\n kind: AXPUserQuerySourceKind;\n entity?: {\n entityName?: string;\n fields?: string[];\n fieldGroups?: Record<string, string[]>;\n };\n static?: {\n items: AXPUserQueryStaticItem[];\n };\n api?: {\n connectionId?: unknown;\n request?: AXRestApiOutput;\n lastTest?: AXPUserQueryApiTestResult;\n fields?: string[];\n fieldGroups?: Record<string, string[]>;\n };\n}\n\nexport interface AXPUserQueryWizardContext {\n sourceKind: AXPUserQuerySourceKind;\n source: AXPUserQueryWizardSource;\n}\n\nexport const CREATE_USER_QUERY_COMMAND_KEY = 'PlatformManagement:CreateUserQuery';\n\nexport const CREATE_USER_QUERY_WIZARD_NAME = 'create-user-query-wizard';\n\nexport const CREATE_USER_QUERY_ENTITY_CATALOG = `${RootConfig.module.name}.${RootConfig.entities.entityDefinition.name}`;\n\nexport const CREATE_USER_QUERY_I18N = {\n titles: {\n entity: '@platform-management:query-definitions.wizard.create.titles.entity',\n static: '@platform-management:query-definitions.wizard.create.titles.static-list',\n api: '@platform-management:query-definitions.wizard.create.titles.external-api',\n advanced: '@platform-management:query-definitions.wizard.create.titles.advanced',\n },\n steps: {\n source: '@platform-management:query-definitions.wizard.create.steps.source',\n entity: '@platform-management:query-definitions.wizard.create.steps.entity',\n fields: '@platform-management:query-definitions.wizard.create.steps.fields',\n contract: '@platform-management:query-definitions.wizard.create.steps.contract',\n },\n fields: {\n entity: '@platform-management:query-definitions.wizard.create.fields.entity',\n fields: '@platform-management:query-definitions.wizard.create.fields.fields',\n hostFields: '@platform-management:query-definitions.wizard.create.fields.host-fields',\n value: '@platform-management:query-definitions.wizard.create.fields.value',\n title: '@platform-management:query-definitions.wizard.create.fields.title',\n connection: '@platform-management:query-definitions.wizard.create.fields.connection',\n method: '@platform-management:query-definitions.wizard.create.fields.method',\n path: '@platform-management:query-definitions.wizard.create.fields.path',\n request: '@platform-management:query-definitions.wizard.create.fields.request',\n sample: '@platform-management:query-definitions.wizard.create.fields.sample',\n status: '@platform-management:query-definitions.wizard.create.fields.status',\n response: '@platform-management:query-definitions.wizard.create.fields.response',\n },\n import: {\n title: '@platform-management:query-definitions.wizard.create.import.title',\n placeholder: '@platform-management:query-definitions.wizard.create.import.placeholder',\n apply: '@platform-management:query-definitions.wizard.create.import.apply',\n parseFailed: '@platform-management:query-definitions.wizard.create.errors.parse-failed',\n },\n methods: {\n get: '@platform-management:query-definitions.wizard.create.methods.get',\n post: '@platform-management:query-definitions.wizard.create.methods.post',\n },\n placeholders: {\n contract: '@platform-management:query-definitions.wizard.create.placeholders.contract',\n advanced: '@platform-management:query-definitions.wizard.create.placeholders.advanced',\n itemsHint: '@platform-management:query-definitions.wizard.create.items-hint',\n entityFields: '@platform-management:query-definitions.wizard.create.placeholders.entity-fields',\n fieldsNext: '@platform-management:query-definitions.wizard.create.placeholders.fields-next',\n selectedEntityHint: '@platform-management:query-definitions.wizard.create.placeholders.selected-entity-hint',\n relatedTo: '@platform-management:query-definitions.wizard.create.placeholders.related-to',\n apiFieldsNext: '@platform-management:query-definitions.wizard.create.placeholders.api-fields-next',\n selectedApiHint: '@platform-management:query-definitions.wizard.create.placeholders.selected-api-hint',\n apiFields: '@platform-management:query-definitions.wizard.create.placeholders.api-fields',\n apiTestOk: '@platform-management:query-definitions.wizard.create.placeholders.api-test-ok',\n },\n errors: {\n entityRequired: '@platform-management:query-definitions.wizard.create.errors.entity-required',\n entityLoadFailed: '@platform-management:query-definitions.wizard.create.errors.entity-load-failed',\n fieldsRequired: '@platform-management:query-definitions.wizard.create.errors.fields-required',\n staticRequired: '@platform-management:query-definitions.wizard.create.errors.static-required',\n apiConnectionRequired: '@platform-management:query-definitions.wizard.create.errors.api-connection-required',\n apiPathRequired: '@platform-management:query-definitions.wizard.create.errors.api-path-required',\n apiUrlRequired: '@platform-management:query-definitions.wizard.create.errors.api-url-required',\n apiTestFailed: '@platform-management:query-definitions.wizard.create.errors.api-test-failed',\n apiTestNetwork: '@platform-management:query-definitions.wizard.create.errors.api-test-network',\n },\n} as const;\n\n//#endregion\n"],"names":[],"mappings":";;AAkEO,MAAM,6BAA6B,GAAG,oCAAoC;AAE1E,MAAM,6BAA6B,GAAG;AAEtC,MAAM,gCAAgC,GAAG,CAAA,EAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAA,CAAA,EAAI,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI;AAE/G,MAAM,sBAAsB,GAAG;AACpC,IAAA,MAAM,EAAE;AACN,QAAA,MAAM,EAAE,oEAAoE;AAC5E,QAAA,MAAM,EAAE,yEAAyE;AACjF,QAAA,GAAG,EAAE,0EAA0E;AAC/E,QAAA,QAAQ,EAAE,sEAAsE;AACjF,KAAA;AACD,IAAA,KAAK,EAAE;AACL,QAAA,MAAM,EAAE,mEAAmE;AAC3E,QAAA,MAAM,EAAE,mEAAmE;AAC3E,QAAA,MAAM,EAAE,mEAAmE;AAC3E,QAAA,QAAQ,EAAE,qEAAqE;AAChF,KAAA;AACD,IAAA,MAAM,EAAE;AACN,QAAA,MAAM,EAAE,oEAAoE;AAC5E,QAAA,MAAM,EAAE,oEAAoE;AAC5E,QAAA,UAAU,EAAE,yEAAyE;AACrF,QAAA,KAAK,EAAE,mEAAmE;AAC1E,QAAA,KAAK,EAAE,mEAAmE;AAC1E,QAAA,UAAU,EAAE,wEAAwE;AACpF,QAAA,MAAM,EAAE,oEAAoE;AAC5E,QAAA,IAAI,EAAE,kEAAkE;AACxE,QAAA,OAAO,EAAE,qEAAqE;AAC9E,QAAA,MAAM,EAAE,oEAAoE;AAC5E,QAAA,MAAM,EAAE,oEAAoE;AAC5E,QAAA,QAAQ,EAAE,sEAAsE;AACjF,KAAA;AACD,IAAA,MAAM,EAAE;AACN,QAAA,KAAK,EAAE,mEAAmE;AAC1E,QAAA,WAAW,EAAE,yEAAyE;AACtF,QAAA,KAAK,EAAE,mEAAmE;AAC1E,QAAA,WAAW,EAAE,0EAA0E;AACxF,KAAA;AACD,IAAA,OAAO,EAAE;AACP,QAAA,GAAG,EAAE,kEAAkE;AACvE,QAAA,IAAI,EAAE,mEAAmE;AAC1E,KAAA;AACD,IAAA,YAAY,EAAE;AACZ,QAAA,QAAQ,EAAE,4EAA4E;AACtF,QAAA,QAAQ,EAAE,4EAA4E;AACtF,QAAA,SAAS,EAAE,iEAAiE;AAC5E,QAAA,YAAY,EAAE,iFAAiF;AAC/F,QAAA,UAAU,EAAE,+EAA+E;AAC3F,QAAA,kBAAkB,EAAE,wFAAwF;AAC5G,QAAA,SAAS,EAAE,8EAA8E;AACzF,QAAA,aAAa,EAAE,mFAAmF;AAClG,QAAA,eAAe,EAAE,qFAAqF;AACtG,QAAA,SAAS,EAAE,8EAA8E;AACzF,QAAA,SAAS,EAAE,+EAA+E;AAC3F,KAAA;AACD,IAAA,MAAM,EAAE;AACN,QAAA,cAAc,EAAE,6EAA6E;AAC7F,QAAA,gBAAgB,EAAE,gFAAgF;AAClG,QAAA,cAAc,EAAE,6EAA6E;AAC7F,QAAA,cAAc,EAAE,6EAA6E;AAC7F,QAAA,qBAAqB,EAAE,qFAAqF;AAC5G,QAAA,eAAe,EAAE,+EAA+E;AAChG,QAAA,cAAc,EAAE,8EAA8E;AAC9F,QAAA,aAAa,EAAE,6EAA6E;AAC5F,QAAA,cAAc,EAAE,8EAA8E;AAC/F,KAAA;;AAGH;;;;"}
@@ -0,0 +1,231 @@
1
+ import { AXPopupService } from '@acorex/components/popup';
2
+ import { AXToastService } from '@acorex/components/toast';
3
+ import { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';
4
+ import { AXPSettingsService, AXPCommonSettings } from '@acorex-platform/framework-client/common';
5
+ import { resolveEntityActionCommandInput, entityActionDataRecord } from '@acorex-platform/framework-shared/runtime';
6
+ import * as i0 from '@angular/core';
7
+ import { viewChild, signal, computed, ChangeDetectionStrategy, ViewEncapsulation, Component, inject, Injectable } from '@angular/core';
8
+ import { AXPMenuCustomizerComponent, AXPThemeLayoutBlockComponent } from '@acorex-platform/framework-client/layout/components';
9
+ import { AXPPopupLayoutBaseComponent, AXPPopupLayoutComponent, AXPPopupLayoutBase } from '@acorex-platform/framework-client/layout/views';
10
+
11
+ //#endregion
12
+ //#region ---- Menu Customizer Popup Component ----
13
+ /**
14
+ * Popup wrapper for the menu customizer component.
15
+ * Provides a popup layout with actions for managing menu customizations.
16
+ *
17
+ * Pass the following data when opening the popup:
18
+ * - scopeKey: string - The scope key for menu customizations
19
+ * - showToolbar?: boolean - Whether to show the toolbar (default: true)
20
+ * - allowAddItems?: boolean - Whether to allow adding items (default: true)
21
+ * - dragBehavior?: AXTreeViewDragBehavior - Drag behavior (default: 'move')
22
+ * - dragArea?: AXTreeViewDragArea - Drag area (default: 'handler')
23
+ */
24
+ class AXPMenuCustomizerPopupComponent extends AXPPopupLayoutBaseComponent {
25
+ constructor() {
26
+ super(...arguments);
27
+ //#region ---- Component State ----
28
+ /** Reference to the menu customizer component */
29
+ this.menuCustomizer = viewChild(AXPMenuCustomizerComponent, /* @ts-ignore */
30
+ ...(ngDevMode ? [{ debugName: "menuCustomizer" }] : /* istanbul ignore next */ []));
31
+ /** The scope key for menu customizations (set by popup service) */
32
+ this.scopeKey = signal('', /* @ts-ignore */
33
+ ...(ngDevMode ? [{ debugName: "scopeKey" }] : /* istanbul ignore next */ []));
34
+ /** Whether to show the toolbar */
35
+ this.showToolbar = signal(true, /* @ts-ignore */
36
+ ...(ngDevMode ? [{ debugName: "showToolbar" }] : /* istanbul ignore next */ []));
37
+ /** Whether to allow adding custom items */
38
+ this.allowAddItems = signal(true, /* @ts-ignore */
39
+ ...(ngDevMode ? [{ debugName: "allowAddItems" }] : /* istanbul ignore next */ []));
40
+ /** Drag behavior for the tree view */
41
+ this.dragBehavior = signal('both', /* @ts-ignore */
42
+ ...(ngDevMode ? [{ debugName: "dragBehavior" }] : /* istanbul ignore next */ []));
43
+ /** Drag area for the tree view */
44
+ this.dragArea = signal('handler', /* @ts-ignore */
45
+ ...(ngDevMode ? [{ debugName: "dragArea" }] : /* istanbul ignore next */ []));
46
+ /** Whether the component is ready to render (scopeKey is set) */
47
+ this.isReady = computed(() => this.scopeKey() !== '', /* @ts-ignore */
48
+ ...(ngDevMode ? [{ debugName: "isReady" }] : /* istanbul ignore next */ []));
49
+ }
50
+ //#endregion
51
+ //#region ---- Lifecycle Methods ----
52
+ async ngOnInit() {
53
+ await super.ngOnInit();
54
+ // Popup-specific initialization can go here
55
+ }
56
+ //#endregion
57
+ //#region ---- UI Handlers ----
58
+ /**
59
+ * Returns the primary menu items for the popup layout.
60
+ */
61
+ getPrimaryMenuItems() {
62
+ return [
63
+ {
64
+ title: '@general:actions.close.title',
65
+ icon: 'fa-solid fa-xmark',
66
+ command: {
67
+ name: 'close',
68
+ },
69
+ },
70
+ ];
71
+ }
72
+ /**
73
+ * Handles when changes are saved
74
+ */
75
+ onSaved() {
76
+ this.close(true);
77
+ }
78
+ /**
79
+ * Handles when customization is cancelled
80
+ */
81
+ onCancelled() {
82
+ this.close(false);
83
+ }
84
+ /**
85
+ * Executes popup commands
86
+ */
87
+ execute(command) {
88
+ if (command.name === 'close') {
89
+ this.close(false);
90
+ }
91
+ }
92
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPMenuCustomizerPopupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
93
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPMenuCustomizerPopupComponent, isStandalone: true, selector: "axp-menu-customizer-popup", host: { classAttribute: "axp-menu-customizer-popup" }, providers: [
94
+ {
95
+ provide: AXPPopupLayoutBase,
96
+ useExisting: AXPMenuCustomizerPopupComponent,
97
+ },
98
+ ], viewQueries: [{ propertyName: "menuCustomizer", first: true, predicate: AXPMenuCustomizerComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
99
+ <axp-popup-layout>
100
+ <axp-page-content>
101
+ @if (isReady()) {
102
+ <axp-menu-customizer
103
+ [scopeKey]="scopeKey()"
104
+ [showToolbar]="showToolbar()"
105
+ [allowAddItems]="allowAddItems()"
106
+ [dragBehavior]="dragBehavior()"
107
+ [dragArea]="dragArea()"
108
+ (saved)="onSaved()"
109
+ (cancelled)="onCancelled()"
110
+ ></axp-menu-customizer>
111
+ }
112
+ </axp-page-content>
113
+ </axp-popup-layout>
114
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: AXTranslationModule }, { kind: "component", type: AXPPopupLayoutComponent, selector: "axp-popup-layout" }, { kind: "component", type: AXPThemeLayoutBlockComponent, selector: " axp-page-content, axp-page-footer-container, axp-page-footer, axp-page-header, axp-page-header-container, axp-page-toolbar, axp-layout-content, axp-layout-page-content, axp-layout-sections, axp-layout-body, axp-layout-page-body, axp-layout-prefix, axp-layout-suffix, axp-layout-title-bar, axp-layout-title, axp-layout-title-actions, axp-layout-nav-button, axp-layout-description, axp-layout-breadcrumbs, axp-layout-list-action, " }, { kind: "component", type: AXPMenuCustomizerComponent, selector: "axp-menu-customizer", inputs: ["scopeKey", "showToolbar", "allowAddItems", "dragBehavior", "dragArea"], outputs: ["saved", "cancelled"] }], changeDetection: i0.ChangeDetectionStrategy.Eager, encapsulation: i0.ViewEncapsulation.None }); }
115
+ }
116
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPMenuCustomizerPopupComponent, decorators: [{
117
+ type: Component,
118
+ args: [{
119
+ selector: 'axp-menu-customizer-popup',
120
+ template: `
121
+ <axp-popup-layout>
122
+ <axp-page-content>
123
+ @if (isReady()) {
124
+ <axp-menu-customizer
125
+ [scopeKey]="scopeKey()"
126
+ [showToolbar]="showToolbar()"
127
+ [allowAddItems]="allowAddItems()"
128
+ [dragBehavior]="dragBehavior()"
129
+ [dragArea]="dragArea()"
130
+ (saved)="onSaved()"
131
+ (cancelled)="onCancelled()"
132
+ ></axp-menu-customizer>
133
+ }
134
+ </axp-page-content>
135
+ </axp-popup-layout>
136
+ `,
137
+ imports: [
138
+ AXTranslationModule,
139
+ AXPPopupLayoutComponent,
140
+ AXPThemeLayoutBlockComponent,
141
+ AXPMenuCustomizerComponent
142
+ ],
143
+ encapsulation: ViewEncapsulation.None,
144
+ providers: [
145
+ {
146
+ provide: AXPPopupLayoutBase,
147
+ useExisting: AXPMenuCustomizerPopupComponent,
148
+ },
149
+ ],
150
+ changeDetection: ChangeDetectionStrategy.Eager,
151
+ host: { class: 'axp-menu-customizer-popup' },
152
+ }]
153
+ }], propDecorators: { menuCustomizer: [{ type: i0.ViewChild, args: [i0.forwardRef(() => AXPMenuCustomizerComponent), { isSignal: true }] }] } });
154
+
155
+ //#region ---- Imports ----
156
+ //#endregion
157
+ //#region ---- Helpers ----
158
+ function resolveCustomizeMenuInput(input = {}) {
159
+ const resolved = resolveEntityActionCommandInput(input);
160
+ const data = (entityActionDataRecord(resolved.data) ?? {});
161
+ const options = (resolved.options ?? {});
162
+ return { data, options };
163
+ }
164
+ //#endregion
165
+ //#region ---- Customize menu command ----
166
+ /**
167
+ * Opens the menu customizer popup for an entity scope and shows a success toast on save.
168
+ * Replaces the former `customize-menu` workflow (popup step + success toast).
169
+ */
170
+ class AXMCustomizeMenuCommand {
171
+ constructor() {
172
+ this.popupService = inject(AXPopupService);
173
+ this.translateService = inject(AXTranslationService);
174
+ this.toastService = inject(AXToastService);
175
+ this.settingsService = inject(AXPSettingsService);
176
+ }
177
+ async execute(input = {}) {
178
+ const { data, options } = resolveCustomizeMenuInput(input);
179
+ const entityId = data['id'];
180
+ if (!entityId) {
181
+ return {
182
+ success: false,
183
+ message: { text: 'Menu customizer requires entity data with an id property.' },
184
+ };
185
+ }
186
+ const scopePrefix = options.scopePrefix ?? 'entity';
187
+ const scopeKey = `${scopePrefix}:${String(entityId)}`;
188
+ const customTitle = options.title;
189
+ const defaultTitle = await this.translateService.translateAsync('@platform-management:menu-management.components.menu-customizer-popup.title');
190
+ const entityTitle = data['title'] ?? data['name'] ?? entityId;
191
+ const title = customTitle ?? `${defaultTitle} - ${entityTitle}`;
192
+ const result = await this.popupService.open(AXPMenuCustomizerPopupComponent, {
193
+ title,
194
+ size: 'lg',
195
+ data: {
196
+ scopeKey: signal(scopeKey),
197
+ showToolbar: signal(options.showToolbar ?? true),
198
+ allowAddItems: signal(options.allowAddItems ?? true),
199
+ dragBehavior: signal(options.dragBehavior ?? 'both'),
200
+ dragArea: signal(options.dragArea ?? 'handler'),
201
+ },
202
+ });
203
+ if (result?.data !== true) {
204
+ return { success: true, kind: 'object', data: { saved: false } };
205
+ }
206
+ await this.showSuccessToast();
207
+ return { success: true, kind: 'object', data: { saved: true } };
208
+ }
209
+ async showSuccessToast() {
210
+ const enableOperationToasts = await this.settingsService.get(AXPCommonSettings.EnableOperationToasts);
211
+ if (!enableOperationToasts) {
212
+ return;
213
+ }
214
+ this.toastService.show({
215
+ color: 'success',
216
+ title: await this.translateService.translateAsync('@platform-management:menu-management.messages.success.customization-saved'),
217
+ closeButton: true,
218
+ timeOut: 3000,
219
+ timeOutProgress: true,
220
+ });
221
+ }
222
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMCustomizeMenuCommand, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
223
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMCustomizeMenuCommand, providedIn: 'root' }); }
224
+ }
225
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMCustomizeMenuCommand, decorators: [{
226
+ type: Injectable,
227
+ args: [{ providedIn: 'root' }]
228
+ }] });
229
+
230
+ export { AXMCustomizeMenuCommand };
231
+ //# sourceMappingURL=acorex-platform-module-platform-management-client-customize-menu.command-2319iHsD.mjs.map