@acorex-platform/module-data-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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-platform-module-data-management-client-index-pdq6oaHN.mjs","sources":["../../../../libs/modules/data-management/client/src/lib/features/meta-data/meta-data-form/meta-data-form-page/meta-data-form-page.component.ts","../../../../libs/modules/data-management/client/src/lib/features/meta-data/meta-data-form/meta-data-form-page/meta-data-form-page.component.html","../../../../libs/modules/data-management/client/src/lib/features/meta-data/meta-data-form/meta-data-form-page/meta-data-form-page-component.provider.ts"],"sourcesContent":["import {\n type AXPContextChangeEvent,\n type AXPExecuteCommand,\n type AXPWidgetNode,\n} from '@acorex-platform/framework-shared/core';\nimport { AXPEntity } from '@acorex-platform/framework-shared/entity';\nimport type { AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport {\n AXPPageLayoutBase,\n AXPPageLayoutBaseComponent,\n type AXPLayoutDetailsViewAction,\n} from '@acorex-platform/framework-client/layout/views';\nimport { AXPWidgetCoreModule } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXPEntityDefinitionRegistryService } from '@acorex-platform/framework-client/layout/entity';\n\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, input, signal, type Signal } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { get, isEqual, merge } from 'lodash';\nimport { META_DATA_FORM_FIELD } from '../../config';\n\nconst META_DATA_FORM_PAGE_SAVE_COMMAND = 'EntityMetaDataFormPage:Save';\nconst META_DATA_FORM_PAGE_DISCARD_COMMAND = 'EntityMetaDataFormPage:Discard';\n\nconst META_DATA_FORM_SECTION_LOOKS = ['card', 'fieldset', 'group', 'container'] as const;\n\nfunction readPageSectionLook(entity: AXPEntity, field: string): string {\n const extensions = (entity as AXPEntity & { extensions?: Record<string, unknown> }).extensions;\n const metaDataForm = extensions?.['metaDataForm'] as Record<string, { display?: { page?: { look?: unknown } } }> | undefined;\n const look = metaDataForm?.[field]?.display?.page?.look;\n if (typeof look === 'string' && (META_DATA_FORM_SECTION_LOOKS as readonly string[]).includes(look)) {\n return look;\n }\n return 'card';\n}\n\n//#region ----- Component -----\n\n/**\n * Page component that renders the meta-data form on the record detail side menu.\n * Used when the meta-data-form plugin has display: 'page'.\n */\n@Component({\n selector: 'axp-meta-data-form-page',\n standalone: true,\n imports: [AXPWidgetCoreModule],\n templateUrl: './meta-data-form-page.component.html',\n providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXPMetaDataFormPageComponent,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.axp-page-layout-base]': 'true',\n },\n})\nexport class AXPMetaDataFormPageComponent extends AXPPageLayoutBaseComponent {\n //#region ----- Inputs -----\n\n /** Default `{}`: avoid NG0950 before page-component-renderer calls setInput. */\n rootContext = input<Record<string, unknown>>({});\n\n pageConfig = input<Record<string, unknown>>();\n\n //#endregion\n\n //#region ----- Services & Dependencies -----\n\n private route = inject(ActivatedRoute);\n private entityRegistry = inject(AXPEntityDefinitionRegistryService);\n private hostPageLayout = inject(AXPPageLayoutBase, { optional: true, skipSelf: true });\n\n //#endregion\n\n //#region ----- State Signals -----\n\n private entityDef = signal<AXPEntity | null>(null);\n private localContext = signal<Record<string, unknown> | null>(null);\n protected isDirty = signal(false);\n private isSaving = signal(false);\n private previousRecordId = signal<string | undefined>(undefined);\n /** Recreates the inner widget container on discard so the form resets. */\n protected widgetRenderKey = signal(0);\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n constructor() {\n super();\n\n effect((onCleanup) => {\n const moduleName = this.route.snapshot.parent?.paramMap.get('module');\n const entityName = this.route.snapshot.paramMap.get('entity');\n if (!moduleName || !entityName) {\n this.entityDef.set(null);\n return;\n }\n let cancelled = false;\n this.entityRegistry.resolve(moduleName, entityName).then((entity) => {\n if (!cancelled) {\n this.entityDef.set(entity);\n }\n });\n onCleanup(() => {\n cancelled = true;\n });\n });\n\n effect(() => {\n const recordId = this.recordId();\n if (!recordId || recordId === this.previousRecordId()) {\n return;\n }\n this.previousRecordId.set(recordId);\n this.localContext.set(null);\n this.isDirty.set(false);\n this.widgetRenderKey.update((key) => key + 1);\n });\n }\n\n //#endregion\n\n //#region ----- Computed Properties -----\n\n context: Signal<Record<string, unknown>> = computed(() => {\n const local = this.localContext();\n if (local != null) {\n return local;\n }\n return this.rootContext() ?? {};\n });\n\n protected fieldName = computed(() => {\n const config = this.pageConfig();\n return config && typeof (config as { field?: string }).field === 'string'\n ? (config as { field: string }).field\n : META_DATA_FORM_FIELD;\n });\n\n protected recordId = computed((): string | undefined => {\n const id = this.rootContext()?.['id'];\n if (typeof id === 'string' && id.length > 0) {\n return id;\n }\n if (typeof id === 'number' && !Number.isNaN(id)) {\n return String(id);\n }\n return undefined;\n });\n\n node = computed<AXPWidgetNode | null>(() => {\n const field = this.fieldName();\n const entity = this.entityDef();\n if (!entity?.properties) {\n return null;\n }\n const prop = entity.properties.find((p: { name: string }) => p.name === field);\n if (!prop?.schema?.interface) {\n return null;\n }\n const widget = prop.schema.interface;\n return {\n type: widget.type,\n path: field,\n name: field,\n children: widget.children,\n valueTransforms: widget.valueTransforms,\n options: merge({}, widget.options, { look: readPageSectionLook(entity, field) }),\n } as AXPWidgetNode;\n });\n\n //#endregion\n\n //#region ----- Unsaved Changes -----\n\n override hasUnsavedChanges(): boolean {\n return this.isDirty();\n }\n\n //#endregion\n\n //#region ----- Event Handlers -----\n\n override async getPrimaryMenuItems(): Promise<AXPLayoutDetailsViewAction[]> {\n const dirty = this.isDirty();\n const saving = this.isSaving();\n\n const saveTitle = (await this.translateService.translateAsync('@general:actions.save.title')) || 'Save';\n const discardTitle = (await this.translateService.translateAsync('@general:actions.discard.title')) || 'Discard';\n\n return [\n {\n title: discardTitle,\n icon: 'fa-light fa-rotate-left',\n zone: 'footer',\n priority: 'secondary',\n color: 'default',\n visible: dirty,\n disabled: saving,\n command: { name: META_DATA_FORM_PAGE_DISCARD_COMMAND, options: {} },\n },\n {\n title: saveTitle,\n icon: 'fa-light fa-floppy-disk',\n zone: 'footer',\n priority: 'primary',\n color: 'primary',\n visible: dirty,\n disabled: saving,\n command: { name: META_DATA_FORM_PAGE_SAVE_COMMAND, options: {} },\n },\n ];\n }\n\n onContextChanged(event: AXPContextChangeEvent): void {\n if (event.state !== 'changed' || this.isSaving()) {\n return;\n }\n\n const field = this.fieldName();\n const metaData = get(event.data, field);\n const base = this.localContext() ?? this.rootContext() ?? {};\n this.localContext.set({ ...base, [field]: metaData });\n this.isDirty.set(!isEqual(metaData ?? null, get(this.rootContext(), field) ?? null));\n this.recompute();\n }\n\n override execute(command: AXPExecuteCommand): void | Promise<void> {\n if (command.name === META_DATA_FORM_PAGE_DISCARD_COMMAND) {\n this.handleDiscard();\n return;\n }\n if (command.name !== META_DATA_FORM_PAGE_SAVE_COMMAND) {\n return;\n }\n return this.handleSave() as unknown as Promise<void>;\n }\n\n //#endregion\n\n //#region ----- Persistence -----\n\n private handleDiscard(): void {\n this.localContext.set(null);\n this.isDirty.set(false);\n this.widgetRenderKey.update((key) => key + 1);\n this.recompute();\n }\n\n private async handleSave(): AXPCommandExecuteResultPromise {\n const field = this.fieldName();\n const id = this.recordId();\n const entity = this.entityDef();\n const updateExec = entity?.commands?.update?.execute as\n | ((payload: Record<string, unknown>) => Promise<unknown>)\n | undefined;\n const ctx = this.localContext() ?? this.rootContext() ?? {};\n const metaData = get(ctx, field);\n\n if (!field || !id || !updateExec) {\n return {\n success: false,\n message: {\n text: await this.translateService.translateAsync('@general:messages.entity.invalid-data'),\n },\n };\n }\n\n this.isSaving.set(true);\n this.recompute();\n try {\n await updateExec({ id, [field]: metaData });\n\n const root = this.rootContext();\n if (root && typeof root === 'object') {\n root[field] = metaData;\n }\n this.localContext.set({ ...(root ?? {}), [field]: metaData });\n this.isDirty.set(false);\n this.recompute();\n\n this.toastService.show({\n color: 'success',\n title: await this.translateService.translateAsync('@general:messages.generic.success.title'),\n content: await this.translateService.translateAsync('@general:messages.generic.success.description'),\n location: 'bottom-center',\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n return { success: true, kind: 'object', data: undefined };\n } catch {\n this.toastService.show({\n color: 'danger',\n title: await this.translateService.translateAsync('@general:messages.error.title'),\n content: await this.translateService.translateAsync('@general:messages.entity.update-failed'),\n });\n return { success: false };\n } finally {\n this.isSaving.set(false);\n this.recompute();\n }\n }\n\n protected override recompute(): void {\n super.recompute();\n const maybeLayout = this.hostPageLayout as unknown as { recompute?: () => void };\n maybeLayout?.recompute?.();\n }\n\n //#endregion\n}\n\n//#endregion\n","@for (renderKey of [widgetRenderKey()]; track renderKey) {\n <axp-widgets-container [context]=\"context()\" (onContextChanged)=\"onContextChanged($event)\">\n <!--------------------------------------------------------------->\n <!-- ----- Metadata form widget when the field node is resolved ----- -->\n @if (node(); as n) {\n <ng-container axp-widget-renderer [node]=\"n\" [mode]=\"'edit'\"></ng-container>\n }\n </axp-widgets-container>\n}\n","import {\n AXPPageComponentDefinition,\n AXPPageComponentProvider,\n} from '@acorex-platform/framework-client/layout/components';\nimport { Injectable } from '@angular/core';\nimport { META_DATA_FORM_PAGE_COMPONENT_KEY } from '../meta-data-form.plugin';\n\n@Injectable()\nexport class AXMMetaDataFormPageComponentProvider implements AXPPageComponentProvider {\n async components(): Promise<AXPPageComponentDefinition[]> {\n return [\n {\n key: META_DATA_FORM_PAGE_COMPONENT_KEY,\n loader: () => import('./meta-data-form-page.component').then((m) => m.AXPMetaDataFormPageComponent),\n },\n ];\n }\n}\n"],"names":["i1"],"mappings":"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"}