@acorex-platform/framework-client 0.0.50 → 0.0.51

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (19) hide show
  1. package/fesm2022/{acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-hnSCB5Jk.mjs → acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-DS3F1_EN.mjs} +134 -10
  2. package/fesm2022/acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-DS3F1_EN.mjs.map +1 -0
  3. package/fesm2022/{acorex-platform-framework-client-layout-entity-attachments-page.component-CXH8my5J.mjs → acorex-platform-framework-client-layout-entity-attachments-page.component-CWeKcj8t.mjs} +2 -2
  4. package/fesm2022/{acorex-platform-framework-client-layout-entity-attachments-page.component-CXH8my5J.mjs.map → acorex-platform-framework-client-layout-entity-attachments-page.component-CWeKcj8t.mjs.map} +1 -1
  5. package/fesm2022/{acorex-platform-framework-client-layout-entity-bulk-entity.command-4sIDztpl.mjs → acorex-platform-framework-client-layout-entity-bulk-entity.command-CgsgFxT8.mjs} +2 -2
  6. package/fesm2022/{acorex-platform-framework-client-layout-entity-bulk-entity.command-4sIDztpl.mjs.map → acorex-platform-framework-client-layout-entity-bulk-entity.command-CgsgFxT8.mjs.map} +1 -1
  7. package/fesm2022/{acorex-platform-framework-client-layout-entity-gallery-page.component-C8gS3h8S.mjs → acorex-platform-framework-client-layout-entity-gallery-page.component-Pfp7Lw_A.mjs} +2 -2
  8. package/fesm2022/{acorex-platform-framework-client-layout-entity-gallery-page.component-C8gS3h8S.mjs.map → acorex-platform-framework-client-layout-entity-gallery-page.component-Pfp7Lw_A.mjs.map} +1 -1
  9. package/fesm2022/acorex-platform-framework-client-layout-entity.mjs +1 -1
  10. package/fesm2022/{acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-D8XNBdpK.mjs → acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-CWvC9Eh2.mjs} +30 -14
  11. package/fesm2022/{acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-D8XNBdpK.mjs.map → acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-CWvC9Eh2.mjs.map} +1 -1
  12. package/fesm2022/{acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-CIVK5DZ9.mjs → acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-MHOUqz2l.mjs} +2 -2
  13. package/fesm2022/{acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-CIVK5DZ9.mjs.map → acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-MHOUqz2l.mjs.map} +1 -1
  14. package/fesm2022/{acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-Bk5gF_QH.mjs → acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-oLFeaHdz.mjs} +2 -2
  15. package/fesm2022/{acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-Bk5gF_QH.mjs.map → acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-oLFeaHdz.mjs.map} +1 -1
  16. package/fesm2022/acorex-platform-framework-client-layout-widgets.mjs +1 -1
  17. package/package.json +2 -2
  18. package/types/acorex-platform-framework-client-layout-entity.d.ts +9 -0
  19. package/fesm2022/acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-hnSCB5Jk.mjs.map +0 -1
@@ -1,7 +1,7 @@
1
1
  import { AXPPageLayoutBaseComponent, AXPPageLayoutBase } from '@acorex-platform/framework-client/layout/views';
2
2
  import * as i1 from '@acorex-platform/framework-client/layout/widget-core';
3
3
  import { AXPWidgetCoreModule } from '@acorex-platform/framework-client/layout/widget-core';
4
- import { A as AXPEntityDefinitionRegistryService, p as persistedAttachments } from './acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-hnSCB5Jk.mjs';
4
+ import { A as AXPEntityDefinitionRegistryService, p as persistedAttachments } from './acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-DS3F1_EN.mjs';
5
5
  import * as i0 from '@angular/core';
6
6
  import { input, inject, DestroyRef, viewChild, signal, computed, effect, ChangeDetectionStrategy, Component } from '@angular/core';
7
7
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
@@ -387,4 +387,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
387
387
  }], ctorParameters: () => [], propDecorators: { rootContext: [{ type: i0.Input, args: [{ isSignal: true, alias: "rootContext", required: false }] }], pageConfig: [{ type: i0.Input, args: [{ isSignal: true, alias: "pageConfig", required: false }] }], containerRef: [{ type: i0.ViewChild, args: ['containerRef', { isSignal: true }] }] } });
388
388
 
389
389
  export { AXMAttachmentsPageComponent };
390
- //# sourceMappingURL=acorex-platform-framework-client-layout-entity-attachments-page.component-CXH8my5J.mjs.map
390
+ //# sourceMappingURL=acorex-platform-framework-client-layout-entity-attachments-page.component-CWeKcj8t.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-framework-client-layout-entity-attachments-page.component-CXH8my5J.mjs","sources":["../../../../../libs/framework/client/layout/entity/src/lib/features/attachments-plugin/attachments-page/attachments-page.component.ts"],"sourcesContent":["\n\nimport { type AXPActionMenuItem, AXPContextChangeEvent, AXPExecuteCommand, AXPRuntimeCommandResult, type AXPWidgetNode } from '@acorex-platform/framework-shared/core';\nimport { AXPEntity } from '@acorex-platform/framework-shared/entity';\n\nimport {\n AXPPageLayoutBase,\n AXPPageLayoutBaseComponent,\n type AXPLayoutDetailsViewAction,\n} from '@acorex-platform/framework-client/layout/views';\nimport { AXPWidgetContainerComponent, AXPWidgetCoreModule, type AXPWidgetCoreElement, type AXPWidgetCoreElementAPI } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXPEntityDefinitionRegistryService } from '../../../entity-registery.service';\n\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n inject,\n input,\n signal,\n Signal,\n viewChild,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ActivatedRoute } from '@angular/router';\nimport { get, merge } from 'lodash-es';\nimport { Subject, Subscription } from 'rxjs';\nimport type { AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport {\n persistedAttachments,\n type AXPFileUploaderUploadActionDescriptor,\n} from '../../../widgets/file-uploader-widget';\n\nconst ATTACHMENTS_PAGE_SAVE_COMMAND = 'EntityAttachmentsPage:Save';\nconst ATTACHMENTS_PAGE_DISCARD_COMMAND = 'EntityAttachmentsPage:Discard';\nconst ATTACHMENTS_PAGE_UPLOAD_COMMAND = 'EntityAttachmentsPage:Upload';\n\ntype AttachmentsUploaderApi = AXPWidgetCoreElementAPI & {\n onDirtyChange?: Subject<boolean>;\n onUploadActionsChanged?: Subject<void>;\n getUploadActions?: () => AXPFileUploaderUploadActionDescriptor[];\n runUploadAction?: (plugin: string) => void | Promise<void>;\n markSaved?: () => void;\n syncBaseline?: (saved: unknown) => void;\n discardToBaseline?: () => void;\n isDirty?: () => boolean;\n};\n\n//#region ---- Attachments Page Component ----\n\n/**\n * Page component that renders the attachments property using the file-uploader widget.\n * Used when attachments plugin has display: 'page'.\n * Exposes Save/Discard footer actions (same pattern as questionnaire-questions-page).\n */\n@Component({\n selector: 'axm-attachments-page',\n standalone: true,\n imports: [AXPWidgetCoreModule],\n providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMAttachmentsPageComponent,\n },\n ],\n template: `\n @for (renderKey of [widgetRenderKey()]; track renderKey) {\n <axp-widgets-container #containerRef [context]=\"context()\" (onContextChanged)=\"onContextChanged($event)\">\n @if (node(); as n) {\n <ng-container axp-widget-renderer [node]=\"n\" [mode]=\"'edit'\"></ng-container>\n }\n </axp-widgets-container>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.axp-page-layout-base]': 'true',\n },\n})\nexport class AXMAttachmentsPageComponent extends AXPPageLayoutBaseComponent {\n /** Default `{}`: avoid NG0950 before page-component-renderer calls setInput. */\n rootContext = input<Record<string, unknown>>({});\n pageConfig = input<Record<string, unknown>>();\n\n private route = inject(ActivatedRoute);\n private entityRegistry = inject(AXPEntityDefinitionRegistryService);\n private hostPageLayout = inject(AXPPageLayoutBase, { optional: true, skipSelf: true });\n private destroyRef = inject(DestroyRef);\n\n private containerRef = viewChild<AXPWidgetContainerComponent>('containerRef');\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 file list resets. */\n protected widgetRenderKey = signal(0);\n private widgetWireGeneration = 0;\n private dirtySubscription?: Subscription;\n private uploadActionsSubscription?: Subscription;\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 ctx = this.rootContext();\n const recordId = typeof ctx?.['id'] === 'string' && ctx['id'].length > 0 ? ctx['id'] : undefined;\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 effect(() => {\n const field = this.fieldName();\n const node = this.node();\n const renderKey = this.widgetRenderKey();\n if (!node || !field) {\n return;\n }\n void this.wireUploaderWidget(field, renderKey);\n });\n }\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 : 'attachments';\n });\n\n protected recordId = computed((): string | undefined => {\n const id = this.rootContext()?.['id'];\n return typeof id === 'string' && id.length > 0 ? id : 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),\n } as AXPWidgetNode;\n });\n\n protected showAddItemButton = computed(() => {\n const options = this.node()?.options;\n return options?.['showAddItemButton'] !== false;\n });\n\n //#region ---- Unsaved Changes ----\n\n override hasUnsavedChanges(): boolean {\n return this.isDirty();\n }\n\n //#endregion\n\n override async getPrimaryMenuItems(): Promise<AXPLayoutDetailsViewAction[]> {\n const dirty = this.isDirty();\n const saving = this.isSaving();\n\n const uploadActions = this.showAddItemButton() ? [] : await this.buildUploadPrimaryActions();\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 ...uploadActions,\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: ATTACHMENTS_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: ATTACHMENTS_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 attachments = get(event.data, field);\n const base = this.localContext() ?? this.rootContext() ?? {};\n this.localContext.set({ ...base, [field]: attachments });\n }\n\n override execute(command: AXPExecuteCommand): void | Promise<void> {\n if (command.name === ATTACHMENTS_PAGE_DISCARD_COMMAND) {\n this.handleDiscard();\n return;\n }\n if (command.name === ATTACHMENTS_PAGE_UPLOAD_COMMAND) {\n void this.handleUploadAction(command);\n return;\n }\n if (command.name !== ATTACHMENTS_PAGE_SAVE_COMMAND) {\n return;\n }\n return this.handleSave() as unknown as Promise<void>;\n }\n\n private handleDiscard(): void {\n const field = this.fieldName();\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 attachments = 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]: attachments });\n\n const persisted = persistedAttachments(attachments);\n\n // Keep displaying saved attachments; drop soft-deleted rows (onContextChanged is skipped while isSaving).\n this.localContext.set({ ...(this.rootContext() ?? {}), [field]: persisted });\n\n const uploader = await this.getUploaderWidget();\n uploader?.markSaved?.();\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 private async wireUploaderWidget(field: string, renderKey: number): Promise<void> {\n const generation = ++this.widgetWireGeneration;\n const container = this.containerRef();\n if (!container) {\n return;\n }\n\n const widget = await container.find(field);\n if (!widget || generation !== this.widgetWireGeneration) {\n return;\n }\n\n this.dirtySubscription?.unsubscribe();\n const api = (widget as AXPWidgetCoreElement).api() as AttachmentsUploaderApi;\n const savedAttachments = get(this.rootContext(), field);\n api.syncBaseline?.(savedAttachments);\n\n if (api.onDirtyChange instanceof Subject) {\n this.dirtySubscription = api.onDirtyChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((dirty) => {\n if (generation !== this.widgetWireGeneration) {\n return;\n }\n this.isDirty.set(dirty);\n this.recompute();\n });\n this.isDirty.set(api.isDirty?.() ?? false);\n this.recompute();\n }\n\n if (api.onUploadActionsChanged instanceof Subject) {\n this.uploadActionsSubscription?.unsubscribe();\n this.uploadActionsSubscription = api.onUploadActionsChanged\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n if (generation !== this.widgetWireGeneration) {\n return;\n }\n this.recompute();\n });\n }\n }\n\n private async buildUploadPrimaryActions(): Promise<AXPLayoutDetailsViewAction[]> {\n const uploader = await this.getUploaderWidget();\n const actions = uploader?.getUploadActions?.() ?? [];\n const readonly = Boolean(this.node()?.options?.['readonly']);\n\n if (readonly || actions.length === 0) {\n return [];\n }\n\n const items: AXPActionMenuItem[] = [];\n for (const action of actions) {\n items.push({\n title: action.textKey ?? action.text ?? action.plugin,\n icon: this.normalizePageDropdownIcon(action.icon),\n command: {\n name: ATTACHMENTS_PAGE_UPLOAD_COMMAND,\n options: { plugin: action.plugin },\n },\n });\n }\n\n return [\n {\n title: '@general:actions.add-item.title',\n icon: 'fa-light fa-plus',\n zone: 'header',\n priority: 'primary',\n color: 'primary',\n items,\n },\n ];\n }\n\n /** Page layout dropdown renders `fa-light {{ icon }}`; strip existing style prefix from widget actions. */\n private normalizePageDropdownIcon(icon?: string): string {\n if (!icon) {\n return 'fa-file-arrow-up';\n }\n return icon.replace(/^(fa-light|fa-solid|fa-regular)\\s+/, '');\n }\n\n private async handleUploadAction(command: AXPExecuteCommand): Promise<void> {\n const plugin = command.options?.['plugin'];\n if (typeof plugin !== 'string' || plugin.length === 0) {\n return;\n }\n const uploader = await this.getUploaderWidget();\n await uploader?.runUploadAction?.(plugin);\n }\n\n private async getUploaderWidget(): Promise<AttachmentsUploaderApi | undefined> {\n const container = this.containerRef();\n if (!container) {\n return undefined;\n }\n const widget = await container.find(this.fieldName());\n if (!widget) {\n return undefined;\n }\n return (widget as AXPWidgetCoreElement).api() as AttachmentsUploaderApi;\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\n//#endregion\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-framework-client-layout-entity-attachments-page.component-CWeKcj8t.mjs","sources":["../../../../../libs/framework/client/layout/entity/src/lib/features/attachments-plugin/attachments-page/attachments-page.component.ts"],"sourcesContent":["\n\nimport { type AXPActionMenuItem, AXPContextChangeEvent, AXPExecuteCommand, AXPRuntimeCommandResult, type AXPWidgetNode } from '@acorex-platform/framework-shared/core';\nimport { AXPEntity } from '@acorex-platform/framework-shared/entity';\n\nimport {\n AXPPageLayoutBase,\n AXPPageLayoutBaseComponent,\n type AXPLayoutDetailsViewAction,\n} from '@acorex-platform/framework-client/layout/views';\nimport { AXPWidgetContainerComponent, AXPWidgetCoreModule, type AXPWidgetCoreElement, type AXPWidgetCoreElementAPI } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXPEntityDefinitionRegistryService } from '../../../entity-registery.service';\n\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n inject,\n input,\n signal,\n Signal,\n viewChild,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ActivatedRoute } from '@angular/router';\nimport { get, merge } from 'lodash-es';\nimport { Subject, Subscription } from 'rxjs';\nimport type { AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport {\n persistedAttachments,\n type AXPFileUploaderUploadActionDescriptor,\n} from '../../../widgets/file-uploader-widget';\n\nconst ATTACHMENTS_PAGE_SAVE_COMMAND = 'EntityAttachmentsPage:Save';\nconst ATTACHMENTS_PAGE_DISCARD_COMMAND = 'EntityAttachmentsPage:Discard';\nconst ATTACHMENTS_PAGE_UPLOAD_COMMAND = 'EntityAttachmentsPage:Upload';\n\ntype AttachmentsUploaderApi = AXPWidgetCoreElementAPI & {\n onDirtyChange?: Subject<boolean>;\n onUploadActionsChanged?: Subject<void>;\n getUploadActions?: () => AXPFileUploaderUploadActionDescriptor[];\n runUploadAction?: (plugin: string) => void | Promise<void>;\n markSaved?: () => void;\n syncBaseline?: (saved: unknown) => void;\n discardToBaseline?: () => void;\n isDirty?: () => boolean;\n};\n\n//#region ---- Attachments Page Component ----\n\n/**\n * Page component that renders the attachments property using the file-uploader widget.\n * Used when attachments plugin has display: 'page'.\n * Exposes Save/Discard footer actions (same pattern as questionnaire-questions-page).\n */\n@Component({\n selector: 'axm-attachments-page',\n standalone: true,\n imports: [AXPWidgetCoreModule],\n providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMAttachmentsPageComponent,\n },\n ],\n template: `\n @for (renderKey of [widgetRenderKey()]; track renderKey) {\n <axp-widgets-container #containerRef [context]=\"context()\" (onContextChanged)=\"onContextChanged($event)\">\n @if (node(); as n) {\n <ng-container axp-widget-renderer [node]=\"n\" [mode]=\"'edit'\"></ng-container>\n }\n </axp-widgets-container>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.axp-page-layout-base]': 'true',\n },\n})\nexport class AXMAttachmentsPageComponent extends AXPPageLayoutBaseComponent {\n /** Default `{}`: avoid NG0950 before page-component-renderer calls setInput. */\n rootContext = input<Record<string, unknown>>({});\n pageConfig = input<Record<string, unknown>>();\n\n private route = inject(ActivatedRoute);\n private entityRegistry = inject(AXPEntityDefinitionRegistryService);\n private hostPageLayout = inject(AXPPageLayoutBase, { optional: true, skipSelf: true });\n private destroyRef = inject(DestroyRef);\n\n private containerRef = viewChild<AXPWidgetContainerComponent>('containerRef');\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 file list resets. */\n protected widgetRenderKey = signal(0);\n private widgetWireGeneration = 0;\n private dirtySubscription?: Subscription;\n private uploadActionsSubscription?: Subscription;\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 ctx = this.rootContext();\n const recordId = typeof ctx?.['id'] === 'string' && ctx['id'].length > 0 ? ctx['id'] : undefined;\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 effect(() => {\n const field = this.fieldName();\n const node = this.node();\n const renderKey = this.widgetRenderKey();\n if (!node || !field) {\n return;\n }\n void this.wireUploaderWidget(field, renderKey);\n });\n }\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 : 'attachments';\n });\n\n protected recordId = computed((): string | undefined => {\n const id = this.rootContext()?.['id'];\n return typeof id === 'string' && id.length > 0 ? id : 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),\n } as AXPWidgetNode;\n });\n\n protected showAddItemButton = computed(() => {\n const options = this.node()?.options;\n return options?.['showAddItemButton'] !== false;\n });\n\n //#region ---- Unsaved Changes ----\n\n override hasUnsavedChanges(): boolean {\n return this.isDirty();\n }\n\n //#endregion\n\n override async getPrimaryMenuItems(): Promise<AXPLayoutDetailsViewAction[]> {\n const dirty = this.isDirty();\n const saving = this.isSaving();\n\n const uploadActions = this.showAddItemButton() ? [] : await this.buildUploadPrimaryActions();\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 ...uploadActions,\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: ATTACHMENTS_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: ATTACHMENTS_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 attachments = get(event.data, field);\n const base = this.localContext() ?? this.rootContext() ?? {};\n this.localContext.set({ ...base, [field]: attachments });\n }\n\n override execute(command: AXPExecuteCommand): void | Promise<void> {\n if (command.name === ATTACHMENTS_PAGE_DISCARD_COMMAND) {\n this.handleDiscard();\n return;\n }\n if (command.name === ATTACHMENTS_PAGE_UPLOAD_COMMAND) {\n void this.handleUploadAction(command);\n return;\n }\n if (command.name !== ATTACHMENTS_PAGE_SAVE_COMMAND) {\n return;\n }\n return this.handleSave() as unknown as Promise<void>;\n }\n\n private handleDiscard(): void {\n const field = this.fieldName();\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 attachments = 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]: attachments });\n\n const persisted = persistedAttachments(attachments);\n\n // Keep displaying saved attachments; drop soft-deleted rows (onContextChanged is skipped while isSaving).\n this.localContext.set({ ...(this.rootContext() ?? {}), [field]: persisted });\n\n const uploader = await this.getUploaderWidget();\n uploader?.markSaved?.();\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 private async wireUploaderWidget(field: string, renderKey: number): Promise<void> {\n const generation = ++this.widgetWireGeneration;\n const container = this.containerRef();\n if (!container) {\n return;\n }\n\n const widget = await container.find(field);\n if (!widget || generation !== this.widgetWireGeneration) {\n return;\n }\n\n this.dirtySubscription?.unsubscribe();\n const api = (widget as AXPWidgetCoreElement).api() as AttachmentsUploaderApi;\n const savedAttachments = get(this.rootContext(), field);\n api.syncBaseline?.(savedAttachments);\n\n if (api.onDirtyChange instanceof Subject) {\n this.dirtySubscription = api.onDirtyChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((dirty) => {\n if (generation !== this.widgetWireGeneration) {\n return;\n }\n this.isDirty.set(dirty);\n this.recompute();\n });\n this.isDirty.set(api.isDirty?.() ?? false);\n this.recompute();\n }\n\n if (api.onUploadActionsChanged instanceof Subject) {\n this.uploadActionsSubscription?.unsubscribe();\n this.uploadActionsSubscription = api.onUploadActionsChanged\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n if (generation !== this.widgetWireGeneration) {\n return;\n }\n this.recompute();\n });\n }\n }\n\n private async buildUploadPrimaryActions(): Promise<AXPLayoutDetailsViewAction[]> {\n const uploader = await this.getUploaderWidget();\n const actions = uploader?.getUploadActions?.() ?? [];\n const readonly = Boolean(this.node()?.options?.['readonly']);\n\n if (readonly || actions.length === 0) {\n return [];\n }\n\n const items: AXPActionMenuItem[] = [];\n for (const action of actions) {\n items.push({\n title: action.textKey ?? action.text ?? action.plugin,\n icon: this.normalizePageDropdownIcon(action.icon),\n command: {\n name: ATTACHMENTS_PAGE_UPLOAD_COMMAND,\n options: { plugin: action.plugin },\n },\n });\n }\n\n return [\n {\n title: '@general:actions.add-item.title',\n icon: 'fa-light fa-plus',\n zone: 'header',\n priority: 'primary',\n color: 'primary',\n items,\n },\n ];\n }\n\n /** Page layout dropdown renders `fa-light {{ icon }}`; strip existing style prefix from widget actions. */\n private normalizePageDropdownIcon(icon?: string): string {\n if (!icon) {\n return 'fa-file-arrow-up';\n }\n return icon.replace(/^(fa-light|fa-solid|fa-regular)\\s+/, '');\n }\n\n private async handleUploadAction(command: AXPExecuteCommand): Promise<void> {\n const plugin = command.options?.['plugin'];\n if (typeof plugin !== 'string' || plugin.length === 0) {\n return;\n }\n const uploader = await this.getUploaderWidget();\n await uploader?.runUploadAction?.(plugin);\n }\n\n private async getUploaderWidget(): Promise<AttachmentsUploaderApi | undefined> {\n const container = this.containerRef();\n if (!container) {\n return undefined;\n }\n const widget = await container.find(this.fieldName());\n if (!widget) {\n return undefined;\n }\n return (widget as AXPWidgetCoreElement).api() as AttachmentsUploaderApi;\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\n//#endregion\n"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ import { AXPRealtimeConnectionPort } from '@acorex-platform/framework-client/rea
9
9
  import { AXPBulkCommandService, AXPBulkProgressChannel } from '@acorex-platform/framework-client/runtime';
10
10
  import * as i0 from '@angular/core';
11
11
  import { inject, Injectable } from '@angular/core';
12
- import { b as buildSelectedIdsFilter, n as newBulkExecutionId, w as watchBulkProgress, s as settleAfterLoadingDialog, r as resolveBulkFailureBody, a as showOperationResultToast } from './acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-hnSCB5Jk.mjs';
12
+ import { b as buildSelectedIdsFilter, n as newBulkExecutionId, w as watchBulkProgress, s as settleAfterLoadingDialog, r as resolveBulkFailureBody, a as showOperationResultToast } from './acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-DS3F1_EN.mjs';
13
13
 
14
14
  //#region ---- Imports ----
15
15
  //#endregion
@@ -187,4 +187,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
187
187
  }] });
188
188
 
189
189
  export { AXPBulkEntityCommand };
190
- //# sourceMappingURL=acorex-platform-framework-client-layout-entity-bulk-entity.command-4sIDztpl.mjs.map
190
+ //# sourceMappingURL=acorex-platform-framework-client-layout-entity-bulk-entity.command-CgsgFxT8.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-framework-client-layout-entity-bulk-entity.command-4sIDztpl.mjs","sources":["../../../../../libs/framework/client/layout/entity/src/lib/commands/bulk-entity.command.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXDialogService } from '@acorex/components/dialog';\nimport { AXLoadingDialogService } from '@acorex/components/loading-dialog';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport {\n AXPSettingsService,\n extractRequestErrorInfo,\n platformErrorI18nKey,\n} from '@acorex-platform/framework-client/common';\nimport type { AXDataSourceFilterOption, AXPRuntimeCommandResult } from '@acorex-platform/framework-shared/core';\nimport { runtimeCommandPayloadData } from '@acorex-platform/framework-shared/core';\nimport type {\n AXPBulkCommandRequest,\n AXPBulkCommandResultData,\n AXPCommandExecuteResultPromise,\n AXPEntityActionCommandInput,\n} from '@acorex-platform/framework-shared/runtime';\nimport { resolveEntityActionCommandInput } from '@acorex-platform/framework-shared/runtime';\nimport { AXPRealtimeConnectionPort } from '@acorex-platform/framework-client/realtime';\nimport { AXPBulkCommandService, AXPBulkProgressChannel } from '@acorex-platform/framework-client/runtime';\nimport { AXPCommand } from '@acorex-platform/framework-shared/runtime';\nimport { Injectable, inject } from '@angular/core';\n\nimport { resolveBulkFailureBody } from '../utils/bulk-failure-message.util';\nimport { buildSelectedIdsFilter } from '../utils/bulk-filter.util';\nimport { settleAfterLoadingDialog } from '../utils/close-loading-dialog.util';\nimport { showOperationResultToast } from '../utils/operation-result-toast.util';\nimport { newBulkExecutionId, watchBulkProgress } from '../utils/bulk-progress-watch.util';\n\n//#endregion\n\n//#region ---- Types ----\n\nexport interface AXPBulkEntityCommandOptions {\n /** Server command key to fan out (required). */\n command?: string;\n /** Entity used to resolve the filter. Defaults to root `entity`. */\n entity?: string;\n /** Override filter. When omitted, builds `id in [...]` from selected rows. */\n filter?: AXDataSourceFilterOption;\n /** Field name for each item id in the inner command input. Default: `id`. */\n idField?: string;\n /** Shared input merged into each inner command call. */\n input?: Record<string, unknown>;\n maxItems?: number;\n concurrency?: number;\n confirm?: {\n title?: string;\n message?: string;\n };\n skipConfirm?: boolean;\n}\n\nexport type AXPBulkEntityCommandInput = AXPEntityActionCommandInput & {\n options?: AXPBulkEntityCommandOptions;\n};\n\n//#endregion\n\n//#region ---- Helpers ----\n\nfunction resolveInput(input: AXPBulkEntityCommandInput = {}): {\n entity?: string;\n data?: unknown;\n options: AXPBulkEntityCommandOptions;\n} {\n const context = resolveEntityActionCommandInput(input);\n const options = {\n ...((context.options as AXPBulkEntityCommandOptions | undefined) ?? {}),\n };\n return {\n entity: options.entity ?? context.entity,\n data: context.data,\n options,\n };\n}\n\n//#endregion\n\n//#region ---- Bulk entity command ----\n\n/**\n * Frontend orchestrator for filter-only server bulk commands.\n * Builds a filter from selected rows (or uses options.filter) and calls `POST /runtime/commands/bulk`.\n */\n@Injectable({ providedIn: 'root' })\nexport class AXPBulkEntityCommand\n implements AXPCommand<AXPBulkEntityCommandInput, AXPBulkCommandResultData>\n{\n private readonly dialogService = inject(AXDialogService);\n private readonly loadingDialog = inject(AXLoadingDialogService);\n private readonly toastService = inject(AXToastService);\n private readonly translationService = inject(AXTranslationService);\n private readonly settingsService = inject(AXPSettingsService);\n private readonly bulkCommands = inject(AXPBulkCommandService);\n private readonly bulkProgress = inject(AXPBulkProgressChannel);\n private readonly realtime = inject(AXPRealtimeConnectionPort, { optional: true });\n\n async execute(\n input: AXPBulkEntityCommandInput = {},\n ): AXPCommandExecuteResultPromise<AXPBulkCommandResultData> {\n const resolved = resolveInput(input);\n const commandName = resolved.options.command?.trim();\n const entity = resolved.entity?.trim();\n\n if (!commandName) {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync('@general:messages.entity.invalid-data'),\n },\n };\n }\n if (!entity) {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync('@general:messages.entity.invalid-data'),\n },\n };\n }\n\n const filter = resolved.options.filter ?? buildSelectedIdsFilter(resolved.data);\n if (!filter) {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync('@general:workflow.no-item'),\n },\n };\n }\n\n if (!resolved.options.skipConfirm) {\n const confirmed = await this.dialogService.confirm(\n await this.translationService.translateAsync(\n resolved.options.confirm?.title ?? '@general:workflow.bulk.confirm-title',\n ),\n await this.translationService.translateAsync(\n resolved.options.confirm?.message ?? '@general:workflow.bulk.confirm-message',\n ),\n 'primary',\n 'horizontal',\n false,\n 'cancel',\n );\n if (!confirmed.result) {\n return { success: false };\n }\n }\n\n const loading = this.loadingDialog.show({\n title: await this.translationService.translateAsync('@general:workflow.bulk.processing-title'),\n mode: 'determinate',\n progressValue: 0,\n status: await this.translationService.translateAsync('@general:workflow.bulk.processing-status'),\n text: '',\n });\n\n const executionId = newBulkExecutionId();\n const progressWatch = watchBulkProgress(\n this.bulkProgress,\n executionId,\n (progress) => {\n const total = progress.total > 0 ? progress.total : 0;\n const current = Math.min(total, progress.current);\n if (total > 0) {\n void this.translationService\n .translateAsync('@general:workflow.progress-count', {\n params: { current, total },\n })\n .then((text) => {\n loading.setProgressText(text);\n loading.setProgressStatus(text);\n });\n loading.setProgressValue(Math.round((current / total) * 100));\n }\n },\n this.realtime,\n );\n\n let result: AXPRuntimeCommandResult<AXPBulkCommandResultData>;\n try {\n const request: AXPBulkCommandRequest = {\n name: commandName,\n entity,\n filter,\n input: resolved.options.input,\n idField: resolved.options.idField,\n maxItems: resolved.options.maxItems,\n concurrency: resolved.options.concurrency,\n executionId,\n };\n\n result = await this.bulkCommands.execute(request);\n } catch (error: unknown) {\n const info = extractRequestErrorInfo(error);\n return {\n success: false,\n message: {\n type: 'error',\n code: info?.code,\n text:\n platformErrorI18nKey(info?.code) ??\n info?.message ??\n '@general:workflow.bulk.fail-body',\n details: info?.details,\n },\n };\n } finally {\n await progressWatch.flush();\n progressWatch.stop();\n loading.close();\n await settleAfterLoadingDialog();\n }\n\n const data =\n runtimeCommandPayloadData(result) ??\n (result.message?.details as AXPBulkCommandResultData | undefined) ?? {\n total: 0,\n succeeded: 0,\n failed: 0,\n results: [],\n };\n await this.presentResult(data);\n return result.success\n ? { success: true, kind: 'object', data, metadata: { ...(result.metadata ?? {}), refresh: false } }\n : { success: false, message: result.message ?? { details: data }, metadata: result.metadata };\n }\n\n private async presentResult(data: AXPBulkCommandResultData): Promise<void> {\n if (data.succeeded > 0 && data.failed === 0) {\n await this.showResultToast(\n 'success',\n '@general:workflow.bulk.success-title',\n await this.translationService.translateAsync('@general:workflow.bulk.success-body', {\n params: { item: data.succeeded },\n }),\n );\n return;\n }\n\n if (data.succeeded > 0 && data.failed > 0) {\n const body = await resolveBulkFailureBody(this.translationService, data.results, {\n summaryKey: '@general:workflow.bulk.partial-body',\n summaryWithReasonKey: '@general:workflow.bulk.partial-body-with-reason',\n summaryParams: { success: data.succeeded, fail: data.failed },\n singleShowsReasonOnly: false,\n });\n await this.showResultToast('warning', '@general:workflow.bulk.partial-title', body);\n return;\n }\n\n const body = await resolveBulkFailureBody(this.translationService, data.results, {\n summaryKey: '@general:workflow.bulk.fail-body',\n summaryWithReasonKey: '@general:workflow.bulk.fail-body-with-reason',\n summaryParams: { item: data.failed || data.total },\n singleShowsReasonOnly: true,\n });\n await this.showResultToast('danger', '@general:workflow.bulk.fail-title', body);\n }\n\n private async showResultToast(\n color: 'success' | 'warning' | 'danger' | 'primary',\n titleKey: string,\n content: string,\n ): Promise<void> {\n await showOperationResultToast(this.toastService, this.translationService, this.settingsService, {\n color,\n title: await this.translationService.translateAsync(titleKey),\n content,\n });\n }\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-framework-client-layout-entity-bulk-entity.command-CgsgFxT8.mjs","sources":["../../../../../libs/framework/client/layout/entity/src/lib/commands/bulk-entity.command.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXDialogService } from '@acorex/components/dialog';\nimport { AXLoadingDialogService } from '@acorex/components/loading-dialog';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport {\n AXPSettingsService,\n extractRequestErrorInfo,\n platformErrorI18nKey,\n} from '@acorex-platform/framework-client/common';\nimport type { AXDataSourceFilterOption, AXPRuntimeCommandResult } from '@acorex-platform/framework-shared/core';\nimport { runtimeCommandPayloadData } from '@acorex-platform/framework-shared/core';\nimport type {\n AXPBulkCommandRequest,\n AXPBulkCommandResultData,\n AXPCommandExecuteResultPromise,\n AXPEntityActionCommandInput,\n} from '@acorex-platform/framework-shared/runtime';\nimport { resolveEntityActionCommandInput } from '@acorex-platform/framework-shared/runtime';\nimport { AXPRealtimeConnectionPort } from '@acorex-platform/framework-client/realtime';\nimport { AXPBulkCommandService, AXPBulkProgressChannel } from '@acorex-platform/framework-client/runtime';\nimport { AXPCommand } from '@acorex-platform/framework-shared/runtime';\nimport { Injectable, inject } from '@angular/core';\n\nimport { resolveBulkFailureBody } from '../utils/bulk-failure-message.util';\nimport { buildSelectedIdsFilter } from '../utils/bulk-filter.util';\nimport { settleAfterLoadingDialog } from '../utils/close-loading-dialog.util';\nimport { showOperationResultToast } from '../utils/operation-result-toast.util';\nimport { newBulkExecutionId, watchBulkProgress } from '../utils/bulk-progress-watch.util';\n\n//#endregion\n\n//#region ---- Types ----\n\nexport interface AXPBulkEntityCommandOptions {\n /** Server command key to fan out (required). */\n command?: string;\n /** Entity used to resolve the filter. Defaults to root `entity`. */\n entity?: string;\n /** Override filter. When omitted, builds `id in [...]` from selected rows. */\n filter?: AXDataSourceFilterOption;\n /** Field name for each item id in the inner command input. Default: `id`. */\n idField?: string;\n /** Shared input merged into each inner command call. */\n input?: Record<string, unknown>;\n maxItems?: number;\n concurrency?: number;\n confirm?: {\n title?: string;\n message?: string;\n };\n skipConfirm?: boolean;\n}\n\nexport type AXPBulkEntityCommandInput = AXPEntityActionCommandInput & {\n options?: AXPBulkEntityCommandOptions;\n};\n\n//#endregion\n\n//#region ---- Helpers ----\n\nfunction resolveInput(input: AXPBulkEntityCommandInput = {}): {\n entity?: string;\n data?: unknown;\n options: AXPBulkEntityCommandOptions;\n} {\n const context = resolveEntityActionCommandInput(input);\n const options = {\n ...((context.options as AXPBulkEntityCommandOptions | undefined) ?? {}),\n };\n return {\n entity: options.entity ?? context.entity,\n data: context.data,\n options,\n };\n}\n\n//#endregion\n\n//#region ---- Bulk entity command ----\n\n/**\n * Frontend orchestrator for filter-only server bulk commands.\n * Builds a filter from selected rows (or uses options.filter) and calls `POST /runtime/commands/bulk`.\n */\n@Injectable({ providedIn: 'root' })\nexport class AXPBulkEntityCommand\n implements AXPCommand<AXPBulkEntityCommandInput, AXPBulkCommandResultData>\n{\n private readonly dialogService = inject(AXDialogService);\n private readonly loadingDialog = inject(AXLoadingDialogService);\n private readonly toastService = inject(AXToastService);\n private readonly translationService = inject(AXTranslationService);\n private readonly settingsService = inject(AXPSettingsService);\n private readonly bulkCommands = inject(AXPBulkCommandService);\n private readonly bulkProgress = inject(AXPBulkProgressChannel);\n private readonly realtime = inject(AXPRealtimeConnectionPort, { optional: true });\n\n async execute(\n input: AXPBulkEntityCommandInput = {},\n ): AXPCommandExecuteResultPromise<AXPBulkCommandResultData> {\n const resolved = resolveInput(input);\n const commandName = resolved.options.command?.trim();\n const entity = resolved.entity?.trim();\n\n if (!commandName) {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync('@general:messages.entity.invalid-data'),\n },\n };\n }\n if (!entity) {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync('@general:messages.entity.invalid-data'),\n },\n };\n }\n\n const filter = resolved.options.filter ?? buildSelectedIdsFilter(resolved.data);\n if (!filter) {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync('@general:workflow.no-item'),\n },\n };\n }\n\n if (!resolved.options.skipConfirm) {\n const confirmed = await this.dialogService.confirm(\n await this.translationService.translateAsync(\n resolved.options.confirm?.title ?? '@general:workflow.bulk.confirm-title',\n ),\n await this.translationService.translateAsync(\n resolved.options.confirm?.message ?? '@general:workflow.bulk.confirm-message',\n ),\n 'primary',\n 'horizontal',\n false,\n 'cancel',\n );\n if (!confirmed.result) {\n return { success: false };\n }\n }\n\n const loading = this.loadingDialog.show({\n title: await this.translationService.translateAsync('@general:workflow.bulk.processing-title'),\n mode: 'determinate',\n progressValue: 0,\n status: await this.translationService.translateAsync('@general:workflow.bulk.processing-status'),\n text: '',\n });\n\n const executionId = newBulkExecutionId();\n const progressWatch = watchBulkProgress(\n this.bulkProgress,\n executionId,\n (progress) => {\n const total = progress.total > 0 ? progress.total : 0;\n const current = Math.min(total, progress.current);\n if (total > 0) {\n void this.translationService\n .translateAsync('@general:workflow.progress-count', {\n params: { current, total },\n })\n .then((text) => {\n loading.setProgressText(text);\n loading.setProgressStatus(text);\n });\n loading.setProgressValue(Math.round((current / total) * 100));\n }\n },\n this.realtime,\n );\n\n let result: AXPRuntimeCommandResult<AXPBulkCommandResultData>;\n try {\n const request: AXPBulkCommandRequest = {\n name: commandName,\n entity,\n filter,\n input: resolved.options.input,\n idField: resolved.options.idField,\n maxItems: resolved.options.maxItems,\n concurrency: resolved.options.concurrency,\n executionId,\n };\n\n result = await this.bulkCommands.execute(request);\n } catch (error: unknown) {\n const info = extractRequestErrorInfo(error);\n return {\n success: false,\n message: {\n type: 'error',\n code: info?.code,\n text:\n platformErrorI18nKey(info?.code) ??\n info?.message ??\n '@general:workflow.bulk.fail-body',\n details: info?.details,\n },\n };\n } finally {\n await progressWatch.flush();\n progressWatch.stop();\n loading.close();\n await settleAfterLoadingDialog();\n }\n\n const data =\n runtimeCommandPayloadData(result) ??\n (result.message?.details as AXPBulkCommandResultData | undefined) ?? {\n total: 0,\n succeeded: 0,\n failed: 0,\n results: [],\n };\n await this.presentResult(data);\n return result.success\n ? { success: true, kind: 'object', data, metadata: { ...(result.metadata ?? {}), refresh: false } }\n : { success: false, message: result.message ?? { details: data }, metadata: result.metadata };\n }\n\n private async presentResult(data: AXPBulkCommandResultData): Promise<void> {\n if (data.succeeded > 0 && data.failed === 0) {\n await this.showResultToast(\n 'success',\n '@general:workflow.bulk.success-title',\n await this.translationService.translateAsync('@general:workflow.bulk.success-body', {\n params: { item: data.succeeded },\n }),\n );\n return;\n }\n\n if (data.succeeded > 0 && data.failed > 0) {\n const body = await resolveBulkFailureBody(this.translationService, data.results, {\n summaryKey: '@general:workflow.bulk.partial-body',\n summaryWithReasonKey: '@general:workflow.bulk.partial-body-with-reason',\n summaryParams: { success: data.succeeded, fail: data.failed },\n singleShowsReasonOnly: false,\n });\n await this.showResultToast('warning', '@general:workflow.bulk.partial-title', body);\n return;\n }\n\n const body = await resolveBulkFailureBody(this.translationService, data.results, {\n summaryKey: '@general:workflow.bulk.fail-body',\n summaryWithReasonKey: '@general:workflow.bulk.fail-body-with-reason',\n summaryParams: { item: data.failed || data.total },\n singleShowsReasonOnly: true,\n });\n await this.showResultToast('danger', '@general:workflow.bulk.fail-title', body);\n }\n\n private async showResultToast(\n color: 'success' | 'warning' | 'danger' | 'primary',\n titleKey: string,\n content: string,\n ): Promise<void> {\n await showOperationResultToast(this.toastService, this.translationService, this.settingsService, {\n color,\n title: await this.translationService.translateAsync(titleKey),\n content,\n });\n }\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { AXPPageLayoutBaseComponent, AXPPageLayoutBase } from '@acorex-platform/framework-client/layout/views';
2
2
  import * as i1 from '@acorex-platform/framework-client/layout/widget-core';
3
3
  import { AXPWidgetCoreModule } from '@acorex-platform/framework-client/layout/widget-core';
4
- import { A as AXPEntityDefinitionRegistryService } from './acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-hnSCB5Jk.mjs';
4
+ import { A as AXPEntityDefinitionRegistryService } from './acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-DS3F1_EN.mjs';
5
5
  import * as i0 from '@angular/core';
6
6
  import { input, inject, signal, computed, effect, ChangeDetectionStrategy, Component } from '@angular/core';
7
7
  import { ActivatedRoute } from '@angular/router';
@@ -265,4 +265,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
265
265
  }], ctorParameters: () => [], propDecorators: { rootContext: [{ type: i0.Input, args: [{ isSignal: true, alias: "rootContext", required: false }] }], pageConfig: [{ type: i0.Input, args: [{ isSignal: true, alias: "pageConfig", required: false }] }] } });
266
266
 
267
267
  export { AXMGalleryPageComponent };
268
- //# sourceMappingURL=acorex-platform-framework-client-layout-entity-gallery-page.component-C8gS3h8S.mjs.map
268
+ //# sourceMappingURL=acorex-platform-framework-client-layout-entity-gallery-page.component-Pfp7Lw_A.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-framework-client-layout-entity-gallery-page.component-C8gS3h8S.mjs","sources":["../../../../../libs/framework/client/layout/entity/src/lib/features/gallery-plugin/gallery-page/gallery-page.component.ts"],"sourcesContent":["import {\n type AXPContextChangeEvent,\n type AXPExecuteCommand,\n type AXPRuntimeCommandResult,\n type AXPWidgetNode,\n} from '@acorex-platform/framework-shared/core';\nimport { AXPEntity } from '@acorex-platform/framework-shared/entity';\n\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 '../../../entity-registery.service';\n\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n signal,\n Signal,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { get, merge } from 'lodash-es';\nimport type { AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\n\nconst GALLERY_PAGE_SAVE_COMMAND = 'EntityGalleryPage:Save';\nconst GALLERY_PAGE_DISCARD_COMMAND = 'EntityGalleryPage:Discard';\n\n//#region ---- Gallery Page Component ----\n\n/**\n * Page component that renders the file list property using the file-viewer widget.\n * Used when gallery plugin has display: 'page'.\n * Exposes Save/Discard footer actions.\n */\n@Component({\n selector: 'axm-gallery-page',\n standalone: true,\n imports: [AXPWidgetCoreModule],\n providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMGalleryPageComponent,\n },\n ],\n template: `\n @for (renderKey of [widgetRenderKey()]; track renderKey) {\n <axp-widgets-container [context]=\"context()\" (onContextChanged)=\"onContextChanged($event)\">\n @if (node(); as n) {\n <ng-container axp-widget-renderer [node]=\"n\" [mode]=\"'edit'\"></ng-container>\n }\n </axp-widgets-container>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.axp-page-layout-base]': 'true',\n },\n})\nexport class AXMGalleryPageComponent extends AXPPageLayoutBaseComponent {\n /** Default `{}`: avoid NG0950 before page-component-renderer calls setInput. */\n rootContext = input<Record<string, unknown>>({});\n pageConfig = input<Record<string, unknown>>();\n\n private route = inject(ActivatedRoute);\n private entityRegistry = inject(AXPEntityDefinitionRegistryService);\n private hostPageLayout = inject(AXPPageLayoutBase, { optional: true, skipSelf: true });\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 gallery resets. */\n protected widgetRenderKey = signal(0);\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 ctx = this.rootContext();\n const recordId = typeof ctx?.['id'] === 'string' && ctx['id'].length > 0 ? ctx['id'] : undefined;\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 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 : 'gallery';\n });\n\n protected recordId = computed((): string | undefined => {\n const id = this.rootContext()?.['id'];\n return typeof id === 'string' && id.length > 0 ? id : 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),\n } as AXPWidgetNode;\n });\n\n //#region ---- Unsaved Changes ----\n\n override hasUnsavedChanges(): boolean {\n return this.isDirty();\n }\n\n //#endregion\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: GALLERY_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: GALLERY_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 gallery = get(event.data, field);\n const base = this.localContext() ?? this.rootContext() ?? {};\n this.localContext.set({ ...base, [field]: gallery });\n this.isDirty.set(true);\n this.recompute();\n }\n\n override execute(command: AXPExecuteCommand): void | Promise<void> {\n if (command.name === GALLERY_PAGE_DISCARD_COMMAND) {\n this.handleDiscard();\n return;\n }\n if (command.name !== GALLERY_PAGE_SAVE_COMMAND) {\n return;\n }\n return this.handleSave() as unknown as Promise<void>;\n }\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 gallery = 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]: gallery });\n\n this.localContext.set({ ...(this.rootContext() ?? {}), [field]: gallery });\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\n//#endregion\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-framework-client-layout-entity-gallery-page.component-Pfp7Lw_A.mjs","sources":["../../../../../libs/framework/client/layout/entity/src/lib/features/gallery-plugin/gallery-page/gallery-page.component.ts"],"sourcesContent":["import {\n type AXPContextChangeEvent,\n type AXPExecuteCommand,\n type AXPRuntimeCommandResult,\n type AXPWidgetNode,\n} from '@acorex-platform/framework-shared/core';\nimport { AXPEntity } from '@acorex-platform/framework-shared/entity';\n\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 '../../../entity-registery.service';\n\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n signal,\n Signal,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { get, merge } from 'lodash-es';\nimport type { AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\n\nconst GALLERY_PAGE_SAVE_COMMAND = 'EntityGalleryPage:Save';\nconst GALLERY_PAGE_DISCARD_COMMAND = 'EntityGalleryPage:Discard';\n\n//#region ---- Gallery Page Component ----\n\n/**\n * Page component that renders the file list property using the file-viewer widget.\n * Used when gallery plugin has display: 'page'.\n * Exposes Save/Discard footer actions.\n */\n@Component({\n selector: 'axm-gallery-page',\n standalone: true,\n imports: [AXPWidgetCoreModule],\n providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMGalleryPageComponent,\n },\n ],\n template: `\n @for (renderKey of [widgetRenderKey()]; track renderKey) {\n <axp-widgets-container [context]=\"context()\" (onContextChanged)=\"onContextChanged($event)\">\n @if (node(); as n) {\n <ng-container axp-widget-renderer [node]=\"n\" [mode]=\"'edit'\"></ng-container>\n }\n </axp-widgets-container>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.axp-page-layout-base]': 'true',\n },\n})\nexport class AXMGalleryPageComponent extends AXPPageLayoutBaseComponent {\n /** Default `{}`: avoid NG0950 before page-component-renderer calls setInput. */\n rootContext = input<Record<string, unknown>>({});\n pageConfig = input<Record<string, unknown>>();\n\n private route = inject(ActivatedRoute);\n private entityRegistry = inject(AXPEntityDefinitionRegistryService);\n private hostPageLayout = inject(AXPPageLayoutBase, { optional: true, skipSelf: true });\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 gallery resets. */\n protected widgetRenderKey = signal(0);\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 ctx = this.rootContext();\n const recordId = typeof ctx?.['id'] === 'string' && ctx['id'].length > 0 ? ctx['id'] : undefined;\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 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 : 'gallery';\n });\n\n protected recordId = computed((): string | undefined => {\n const id = this.rootContext()?.['id'];\n return typeof id === 'string' && id.length > 0 ? id : 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),\n } as AXPWidgetNode;\n });\n\n //#region ---- Unsaved Changes ----\n\n override hasUnsavedChanges(): boolean {\n return this.isDirty();\n }\n\n //#endregion\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: GALLERY_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: GALLERY_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 gallery = get(event.data, field);\n const base = this.localContext() ?? this.rootContext() ?? {};\n this.localContext.set({ ...base, [field]: gallery });\n this.isDirty.set(true);\n this.recompute();\n }\n\n override execute(command: AXPExecuteCommand): void | Promise<void> {\n if (command.name === GALLERY_PAGE_DISCARD_COMMAND) {\n this.handleDiscard();\n return;\n }\n if (command.name !== GALLERY_PAGE_SAVE_COMMAND) {\n return;\n }\n return this.handleSave() as unknown as Promise<void>;\n }\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 gallery = 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]: gallery });\n\n this.localContext.set({ ...(this.rootContext() ?? {}), [field]: gallery });\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\n//#endregion\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export { c as ATTACHMENTS_PAGE_COMPONENT_KEY, d as AXMEntityCrudService, e as AXMEntityCrudServiceImpl, f as AXPCategoryTreeService, g as AXPClientLocalPluginModule, h as AXPCreateEntityCommand, i as AXPDataSeederService, j as AXPDeleteEntityCommand, k as AXPDomainQueryEntityDefinitionLoader, l as AXPEditFileUploaderCommand, m as AXPEntityBulkPatchPerformService, o as AXPEntityCardComponent, q as AXPEntityCardFieldsResolver, t as AXPEntityCardSelectActionName, u as AXPEntityCardSkeletonComponent, v as AXPEntityCategoryTreeSelectorComponent, x as AXPEntityCategoryWidget, y as AXPEntityCategoryWidgetColumnComponent, z as AXPEntityCategoryWidgetEditComponent, B as AXPEntityCategoryWidgetViewComponent, C as AXPEntityCommandTriggerViewModel, D as AXPEntityCreateViewElementViewModel, E as AXPEntityCreateViewModelFactory, F as AXPEntityCreateViewSectionViewModel, G as AXPEntityDataProvider, H as AXPEntityDataProviderImpl, I as AXPEntityDataSelectorRowActionsService, J as AXPEntityDataSelectorService, K as AXPEntityDefinitionProviderWidget, L as AXPEntityDefinitionProviderWidgetEditComponent, A as AXPEntityDefinitionRegistryService, M as AXPEntityDeletePerformService, N as AXPEntityDetailListViewModel, O as AXPEntityDetailPopoverComponent, P as AXPEntityDetailPopoverService, Q as AXPEntityDetailViewModelFactory, R as AXPEntityDetailViewModelResolver, S as AXPEntityEventDispatcherService, T as AXPEntityFormBuilderService, U as AXPEntityLifecycleHookKeys, V as AXPEntityListPersistenceModeDefault, W as AXPEntityListTableService, X as AXPEntityListToolbarService, Y as AXPEntityListViewCardFieldViewModel, Z as AXPEntityListViewColumnViewModel, _ as AXPEntityListViewModelFactory, $ as AXPEntityListViewModelResolver, a0 as AXPEntityListWidget, a1 as AXPEntityListWidgetViewComponent, a2 as AXPEntityMasterCreateViewModel, a3 as AXPEntityMasterListCardSelectActionName, a4 as AXPEntityMasterListViewModel, a5 as AXPEntityMasterListViewQueryViewModel, a6 as AXPEntityMasterSingleElementViewModel, a7 as AXPEntityMasterSingleViewGroupViewModel, a8 as AXPEntityMasterSingleViewModel, a9 as AXPEntityMasterUpdateElementViewModel, aa as AXPEntityMasterUpdateViewModel, ab as AXPEntityMasterUpdateViewModelFactory, ac as AXPEntityMiddlewareSkipContext, ad as AXPEntityModule, ae as AXPEntityPreloadFiltersContainerComponent, af as AXPEntityPreloadFiltersViewModel, ag as AXPEntityPreloadFiltersViewModelResolver, ah as AXPEntityResolver, ai as AXPEntityRuntimeAccessorService, aj as AXPEntityService, ak as AXPEntityStorageService, al as AXPEntityUpdateViewSectionViewModel, am as AXPFileListComponent, an as AXPFileUploaderLoadFilesQuery, ao as AXPFileUploaderSaveFilesCommand, ap as AXPFileUploaderWidget, aq as AXPFileUploaderWidgetColumnComponent, ar as AXPFileUploaderWidgetEditComponent, as as AXPFileUploaderWidgetService, at as AXPFileUploaderWidgetViewComponent, au as AXPGetEntityDetailsQuery, av as AXPLayoutOrderingConfigService, aw as AXPLookupByKeyCacheService, ax as AXPLookupWidget, ay as AXPLookupWidgetColumnComponent, az as AXPLookupWidgetEditComponent, aA as AXPLookupWidgetViewComponent, aB as AXPMiddlewareAbortError, aC as AXPMiddlewareEntityService, aC as AXPMiddlewareEntityStorageService, aD as AXPMultiSourceDefinitionProviderContext, aE as AXPMultiSourceDefinitionProviderService, aF as AXPMultiSourceFederatedSearchService, aG as AXPMultiSourceSelectorComponent, aH as AXPMultiSourceSelectorService, aI as AXPMultiSourceSelectorWidget, aJ as AXPMultiSourceSelectorWidgetColumnComponent, aK as AXPMultiSourceSelectorWidgetEditComponent, aL as AXPMultiSourceSelectorWidgetViewComponent, aM as AXPMultiSourceType, aN as AXPOpenEntityDetailsCommand, aO as AXPOpenEntityListCommand, aP as AXPRelatedColumnEnrichmentService, aQ as AXPRelatedColumnMetadataResolver, aR as AXPSelectorStructureWidget, aS as AXPSelectorStructureWidgetColumnComponent, aT as AXPSelectorStructureWidgetEditComponent, aU as AXPSelectorStructureWidgetViewComponent, aV as AXPShowFileUploaderPopupCommand, aW as AXPTruncatedBreadcrumbComponent, aX as AXPUpdateEntityCommand, aY as AXPUpdateEntityStatusCommand, aZ as AXPViewEntityDetailsCommand, a_ as AXP_APPEARANCE_SECTION_ORDER, a$ as AXP_CATEGORY_TREE_ROOT_TITLE_I18N_KEY, b0 as AXP_CLASSIFICATION_SECTION_ORDER, b1 as AXP_CLIENT_LOCAL_DEFAULT_MAX_ITEMS, b2 as AXP_CLIENT_LOCAL_PLUGIN_NAME, b3 as AXP_DATA_SEEDER_TOKEN, b4 as AXP_ENTITY_ACTION_PLUGIN, b5 as AXP_ENTITY_CONFIG_TOKEN, b6 as AXP_ENTITY_DEFINITION_LOADER, b7 as AXP_ENTITY_MIDDLEWARE, b8 as AXP_ENTITY_MODIFIER, b9 as AXP_ENTITY_STORAGE_MIDDLEWARE, ba as AXP_MULTI_SOURCE_DEFINITION_PROVIDER, bb as DEFAULT_COLUMN_ORDER, bc as DEFAULT_PAIR_SPAN_RULES, bd as DEFAULT_PROPERTY_ORDER, be as DEFAULT_SECTION_ORDER, bf as ENTITY_FORM_ACTION_FIRST_STEP_CONTINUE, bg as ENTITY_LIST_LAYOUT_META, bh as ENTITY_LIST_ROUTE_CONTEXT_SESSION_KEY, bi as ENTITY_MASTER_LIST_TRACE_NS, bj as EntityBuilder, bk as EntityDataAccessor, bl as GALLERY_PAGE_COMPONENT_KEY, bm as TREE_CHILDREN_QUERY_TAKE, bn as actionExists, bo as applyDataSourcePagingWithoutLoad, bp as attachmentFieldCount, bq as attachmentNeedsHydration, br as attachmentsPlugin, bs as attachmentsSemanticallyEqual, bt as axpBuildEntityListPageContextSnapshot, bu as axpCreateEntityAiToolInputDefaults, bv as axpCreateEntityCommandDefinition, bw as axpDeleteEntityCommandDefinition, bx as axpOpenEntityListCommandDefinition, by as axpRunEntityListPageContextAction, bz as axpShowFileUploaderPopupCommandDefinition, bA as axpUpdateEntityStatusCommandDefinition, bB as buildDataSourceTraceSnapshot, bC as canPersistEntityListState, bD as clientLocalPlugin, bE as cloneLayoutArrays, bF as columnOrderingMiddleware, bG as columnOrderingMiddlewareProvider, bH as columnWidthMiddleware, bI as columnWidthMiddlewareProvider, bJ as committedAttachments, bK as composeEntityMiddlewares, bL as composeEntityStorageMiddlewares, bM as computeEntityAggregates, bN as configureEntityListColumnsSettingsMigrateDrop, bO as configureEntityListColumnsSettingsVersion, bP as createColumnOrderingMiddlewareProvider, bQ as createEntityCardDisplayScope, bR as createEntityCardLogicScope, bS as createEntityMiddlewareContext, bT as createEntityStorageContext, bU as createLayoutOrderingMiddlewareProvider, bV as defaultCardLayoutMiddleware, bW as defaultCardLayoutMiddlewareProvider, bX as defaultMultiLanguageMiddleware, bY as defaultMultiLanguageMiddlewareProvider, bZ as defaultSortPresetsMiddleware, b_ as defaultSortPresetsMiddlewareProvider, b$ as detectEntityChanges, c0 as dispatchEntityModifiedSideEffects, c1 as ensureHierarchicalRootFilter, c2 as ensureLayoutPropertyView, c3 as ensureLayoutSection, c4 as ensureListActions, c5 as entityCreateBridgeMiddleware, c6 as entityDeleteBridgeMiddleware, c7 as entityGetOneBridgeMiddleware, c8 as entityListInstanceCurrentViewPath, c9 as entityListInstanceFilterPath, ca as entityListStylingRulesPath, cb as entityQueryBridgeMiddleware, cc as entityStorageCreateBridgeMiddleware, cd as entityStorageDeleteBridgeMiddleware, ce as entityStorageGetOneBridgeMiddleware, cf as entityStorageQueryBridgeMiddleware, cg as entityStorageUpdateBridgeMiddleware, ch as entityUpdateBridgeMiddleware, ci as eventDispatchMiddleware, cj as filterEntityMiddlewares, ck as filterEntityStorageMiddlewares, cl as filterSortEntityRows, cm as filterTouchesParentKey, cn as findEntityListRowDataInTree, co as fingerprintAttachmentItem, cp as fingerprintAttachments, cq as fireEntityLifecycleHook, cr as formatLookupItemDisplay, cs as formatLookupItemDisplayAsync, ct as galleryPlugin, cu as getDataSourcePageIndex, cv as getEntityListColumnsSettingsMigrateDrop, cw as getEntityListColumnsSettingsVersion, cx as getEntityListRowId, cy as getMasterInterfacePropertySortKey, cz as hasFileUploaderTitleOrDescriptionFields, cA as hydrateAttachmentFieldToFileList, cB as isAXPMiddlewareAbortError, cC as isAttachmentFieldPresentOnRow, cD as isAttachmentListEntry, cE as isAttachmentStorageRef, cF as isCategoryEntity, cG as isCategoryFilter, cH as isFileListItem, cI as isFileUploaderEditDialogAuto, cJ as isLegacyEntityDataSelectorOptions, cK as layoutOrderingMiddlewareFactory, cL as layoutOrderingMiddlewareProvider, cM as mapEntityStorageErrorToCommandResult, cN as mapLegacyEntityDataSelectorOptions, cO as mergeEntityListViewAndPersistedFilters, cP as normalizeEntityCardHeaderDisplayValue, cQ as normalizeEntityDataSelectorColumnSpecs, cR as normalizeEntityDataSelectorOptions, cS as normalizeEntityFieldToFileList, cT as normalizeEntityListPersistenceMode, cU as normalizeListPaging, p as persistedAttachments, cV as prefetchClientLocalRelated, cW as provideEntity, cX as provideEntityMiddlewareBridge, cY as provideEntityRealtimeHandlers, cZ as provideEntityStorageMiddlewareBridge, c_ as provideLocalEntityCatalog, c$ as readPersistedEntityListInstanceCurrentView, d0 as readPersistedEntityListInstanceFilters, d1 as readPersistedEntityListStylingRules, d2 as resetPagingForTreeChildrenLoad, d3 as resolveAttachmentFieldPath, d4 as resolveEntityCardBadgeColorValue, d5 as resolveEntityCardHeaderValue, d6 as resolveEntityMasterFieldStylingClass, d7 as resolveEntityMasterRecordStylingClass, d8 as resolveEntityMasterStylingClass, d9 as resolveEntityPluginDetailPageOrder, da as resolveFileUploaderEditDialog, db as resolveFileUploaderEntityScope, dc as resolveLookupDisplayField, dd as resolveLookupDisplayTemplate, de as resolveLookupEntityCacheKey, df as resolveLookupEntityKey, dg as resolveMasterInterfacePropertyOrder, dh as restoreEntityListExpandedRows, di as runEntityMiddlewarePipeline, dj as runEntityQuery, dk as runEntityStorageMiddlewarePipeline, dl as searchResultDescriptionMiddleware, dm as searchResultDescriptionMiddlewareProvider, dn as shouldLoadEntityListStateFromStorage, dp as shouldResetEntityListStateOnRouteEntry, dq as traceEntityMasterList } from './acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-hnSCB5Jk.mjs';
1
+ export { c as ATTACHMENTS_PAGE_COMPONENT_KEY, d as AXMEntityCrudService, e as AXMEntityCrudServiceImpl, f as AXPCategoryTreeService, g as AXPClientLocalPluginModule, h as AXPCreateEntityCommand, i as AXPDataSeederService, j as AXPDeleteEntityCommand, k as AXPDomainQueryEntityDefinitionLoader, l as AXPEditFileUploaderCommand, m as AXPEntityBulkPatchPerformService, o as AXPEntityCardComponent, q as AXPEntityCardFieldsResolver, t as AXPEntityCardSelectActionName, u as AXPEntityCardSkeletonComponent, v as AXPEntityCategoryTreeSelectorComponent, x as AXPEntityCategoryWidget, y as AXPEntityCategoryWidgetColumnComponent, z as AXPEntityCategoryWidgetEditComponent, B as AXPEntityCategoryWidgetViewComponent, C as AXPEntityCommandTriggerViewModel, D as AXPEntityCreateViewElementViewModel, E as AXPEntityCreateViewModelFactory, F as AXPEntityCreateViewSectionViewModel, G as AXPEntityDataProvider, H as AXPEntityDataProviderImpl, I as AXPEntityDataSelectorRowActionsService, J as AXPEntityDataSelectorService, K as AXPEntityDefinitionProviderWidget, L as AXPEntityDefinitionProviderWidgetEditComponent, A as AXPEntityDefinitionRegistryService, M as AXPEntityDeletePerformService, N as AXPEntityDetailListViewModel, O as AXPEntityDetailPopoverComponent, P as AXPEntityDetailPopoverService, Q as AXPEntityDetailViewModelFactory, R as AXPEntityDetailViewModelResolver, S as AXPEntityEventDispatcherService, T as AXPEntityFormBuilderService, U as AXPEntityLifecycleHookKeys, V as AXPEntityListPersistenceModeDefault, W as AXPEntityListTableService, X as AXPEntityListToolbarService, Y as AXPEntityListViewCardFieldViewModel, Z as AXPEntityListViewColumnViewModel, _ as AXPEntityListViewModelFactory, $ as AXPEntityListViewModelResolver, a0 as AXPEntityListWidget, a1 as AXPEntityListWidgetViewComponent, a2 as AXPEntityMasterCreateViewModel, a3 as AXPEntityMasterListCardSelectActionName, a4 as AXPEntityMasterListViewModel, a5 as AXPEntityMasterListViewQueryViewModel, a6 as AXPEntityMasterSingleElementViewModel, a7 as AXPEntityMasterSingleViewGroupViewModel, a8 as AXPEntityMasterSingleViewModel, a9 as AXPEntityMasterUpdateElementViewModel, aa as AXPEntityMasterUpdateViewModel, ab as AXPEntityMasterUpdateViewModelFactory, ac as AXPEntityMiddlewareSkipContext, ad as AXPEntityModule, ae as AXPEntityPreloadFiltersContainerComponent, af as AXPEntityPreloadFiltersViewModel, ag as AXPEntityPreloadFiltersViewModelResolver, ah as AXPEntityResolver, ai as AXPEntityRuntimeAccessorService, aj as AXPEntityService, ak as AXPEntityStorageService, al as AXPEntityUpdateViewSectionViewModel, am as AXPFileListComponent, an as AXPFileUploaderLoadFilesQuery, ao as AXPFileUploaderSaveFilesCommand, ap as AXPFileUploaderWidget, aq as AXPFileUploaderWidgetColumnComponent, ar as AXPFileUploaderWidgetEditComponent, as as AXPFileUploaderWidgetService, at as AXPFileUploaderWidgetViewComponent, au as AXPGetEntityDetailsQuery, av as AXPLayoutOrderingConfigService, aw as AXPLookupByKeyCacheService, ax as AXPLookupWidget, ay as AXPLookupWidgetColumnComponent, az as AXPLookupWidgetEditComponent, aA as AXPLookupWidgetViewComponent, aB as AXPMiddlewareAbortError, aC as AXPMiddlewareEntityService, aC as AXPMiddlewareEntityStorageService, aD as AXPMultiSourceDefinitionProviderContext, aE as AXPMultiSourceDefinitionProviderService, aF as AXPMultiSourceFederatedSearchService, aG as AXPMultiSourceSelectorComponent, aH as AXPMultiSourceSelectorService, aI as AXPMultiSourceSelectorWidget, aJ as AXPMultiSourceSelectorWidgetColumnComponent, aK as AXPMultiSourceSelectorWidgetEditComponent, aL as AXPMultiSourceSelectorWidgetViewComponent, aM as AXPMultiSourceType, aN as AXPOpenEntityDetailsCommand, aO as AXPOpenEntityListCommand, aP as AXPRelatedColumnEnrichmentService, aQ as AXPRelatedColumnMetadataResolver, aR as AXPSelectorStructureWidget, aS as AXPSelectorStructureWidgetColumnComponent, aT as AXPSelectorStructureWidgetEditComponent, aU as AXPSelectorStructureWidgetViewComponent, aV as AXPShowFileUploaderPopupCommand, aW as AXPTruncatedBreadcrumbComponent, aX as AXPUpdateEntityCommand, aY as AXPUpdateEntityStatusCommand, aZ as AXPViewEntityDetailsCommand, a_ as AXP_APPEARANCE_SECTION_ORDER, a$ as AXP_CATEGORY_TREE_ROOT_TITLE_I18N_KEY, b0 as AXP_CLASSIFICATION_SECTION_ORDER, b1 as AXP_CLIENT_LOCAL_DEFAULT_MAX_ITEMS, b2 as AXP_CLIENT_LOCAL_PLUGIN_NAME, b3 as AXP_DATA_SEEDER_TOKEN, b4 as AXP_ENTITY_ACTION_PLUGIN, b5 as AXP_ENTITY_CONFIG_TOKEN, b6 as AXP_ENTITY_DEFINITION_LOADER, b7 as AXP_ENTITY_MIDDLEWARE, b8 as AXP_ENTITY_MODIFIER, b9 as AXP_ENTITY_STORAGE_MIDDLEWARE, ba as AXP_MULTI_SOURCE_DEFINITION_PROVIDER, bb as DEFAULT_COLUMN_ORDER, bc as DEFAULT_PAIR_SPAN_RULES, bd as DEFAULT_PROPERTY_ORDER, be as DEFAULT_SECTION_ORDER, bf as ENTITY_FORM_ACTION_FIRST_STEP_CONTINUE, bg as ENTITY_LIST_LAYOUT_META, bh as ENTITY_LIST_ROUTE_CONTEXT_SESSION_KEY, bi as ENTITY_MASTER_LIST_TRACE_NS, bj as EntityBuilder, bk as EntityDataAccessor, bl as GALLERY_PAGE_COMPONENT_KEY, bm as TREE_CHILDREN_QUERY_TAKE, bn as actionExists, bo as applyDataSourcePagingWithoutLoad, bp as attachmentFieldCount, bq as attachmentNeedsHydration, br as attachmentsPlugin, bs as attachmentsSemanticallyEqual, bt as axpBuildEntityListPageContextSnapshot, bu as axpCreateEntityAiToolInputDefaults, bv as axpCreateEntityCommandDefinition, bw as axpDeleteEntityCommandDefinition, bx as axpOpenEntityListCommandDefinition, by as axpRunEntityListPageContextAction, bz as axpShowFileUploaderPopupCommandDefinition, bA as axpUpdateEntityStatusCommandDefinition, bB as buildDataSourceTraceSnapshot, bC as canPersistEntityListState, bD as clientLocalPlugin, bE as cloneLayoutArrays, bF as columnOrderingMiddleware, bG as columnOrderingMiddlewareProvider, bH as columnWidthMiddleware, bI as columnWidthMiddlewareProvider, bJ as committedAttachments, bK as composeEntityMiddlewares, bL as composeEntityStorageMiddlewares, bM as computeEntityAggregates, bN as configureEntityListColumnsSettingsMigrateDrop, bO as configureEntityListColumnsSettingsVersion, bP as createColumnOrderingMiddlewareProvider, bQ as createEntityCardDisplayScope, bR as createEntityCardLogicScope, bS as createEntityMiddlewareContext, bT as createEntityStorageContext, bU as createLayoutOrderingMiddlewareProvider, bV as defaultCardLayoutMiddleware, bW as defaultCardLayoutMiddlewareProvider, bX as defaultMultiLanguageMiddleware, bY as defaultMultiLanguageMiddlewareProvider, bZ as defaultSortPresetsMiddleware, b_ as defaultSortPresetsMiddlewareProvider, b$ as detectEntityChanges, c0 as dispatchEntityModifiedSideEffects, c1 as ensureHierarchicalRootFilter, c2 as ensureLayoutPropertyView, c3 as ensureLayoutSection, c4 as ensureListActions, c5 as entityCreateBridgeMiddleware, c6 as entityDeleteBridgeMiddleware, c7 as entityGetOneBridgeMiddleware, c8 as entityListInstanceCurrentViewPath, c9 as entityListInstanceFilterPath, ca as entityListStylingRulesPath, cb as entityQueryBridgeMiddleware, cc as entityStorageCreateBridgeMiddleware, cd as entityStorageDeleteBridgeMiddleware, ce as entityStorageGetOneBridgeMiddleware, cf as entityStorageQueryBridgeMiddleware, cg as entityStorageUpdateBridgeMiddleware, ch as entityUpdateBridgeMiddleware, ci as eventDispatchMiddleware, cj as filterEntityMiddlewares, ck as filterEntityStorageMiddlewares, cl as filterSortEntityRows, cm as filterTouchesParentKey, cn as findEntityListRowDataInTree, co as fingerprintAttachmentItem, cp as fingerprintAttachments, cq as fireEntityLifecycleHook, cr as formatLookupItemDisplay, cs as formatLookupItemDisplayAsync, ct as galleryPlugin, cu as getDataSourcePageIndex, cv as getEntityListColumnsSettingsMigrateDrop, cw as getEntityListColumnsSettingsVersion, cx as getEntityListRowId, cy as getMasterInterfacePropertySortKey, cz as hasFileUploaderTitleOrDescriptionFields, cA as hydrateAttachmentFieldToFileList, cB as isAXPMiddlewareAbortError, cC as isAttachmentFieldPresentOnRow, cD as isAttachmentListEntry, cE as isAttachmentStorageRef, cF as isCategoryEntity, cG as isCategoryFilter, cH as isFileListItem, cI as isFileUploaderEditDialogAuto, cJ as isLegacyEntityDataSelectorOptions, cK as layoutOrderingMiddlewareFactory, cL as layoutOrderingMiddlewareProvider, cM as mapEntityStorageErrorToCommandResult, cN as mapLegacyEntityDataSelectorOptions, cO as mergeEntityListViewAndPersistedFilters, cP as normalizeEntityCardHeaderDisplayValue, cQ as normalizeEntityDataSelectorColumnSpecs, cR as normalizeEntityDataSelectorOptions, cS as normalizeEntityFieldToFileList, cT as normalizeEntityListPersistenceMode, cU as normalizeListPaging, p as persistedAttachments, cV as prefetchClientLocalRelated, cW as provideEntity, cX as provideEntityMiddlewareBridge, cY as provideEntityRealtimeHandlers, cZ as provideEntityStorageMiddlewareBridge, c_ as provideLocalEntityCatalog, c$ as readPersistedEntityListInstanceCurrentView, d0 as readPersistedEntityListInstanceFilters, d1 as readPersistedEntityListStylingRules, d2 as resetPagingForTreeChildrenLoad, d3 as resolveAttachmentFieldPath, d4 as resolveEntityCardBadgeColorValue, d5 as resolveEntityCardHeaderValue, d6 as resolveEntityMasterFieldStylingClass, d7 as resolveEntityMasterRecordStylingClass, d8 as resolveEntityMasterStylingClass, d9 as resolveEntityPluginDetailPageOrder, da as resolveFileUploaderEditDialog, db as resolveFileUploaderEntityScope, dc as resolveLookupDisplayField, dd as resolveLookupDisplayTemplate, de as resolveLookupEntityCacheKey, df as resolveLookupEntityKey, dg as resolveMasterInterfacePropertyOrder, dh as restoreEntityListExpandedRows, di as runEntityMiddlewarePipeline, dj as runEntityQuery, dk as runEntityStorageMiddlewarePipeline, dl as searchResultDescriptionMiddleware, dm as searchResultDescriptionMiddlewareProvider, dn as shouldLoadEntityListStateFromStorage, dp as shouldResetEntityListStateOnRouteEntry, dq as traceEntityMasterList } from './acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-DS3F1_EN.mjs';
2
2
  export * from '@acorex-platform/framework-shared/entity';
3
3
  export { collectNestedCreateHiddenProperties, entityDetailsCreateActions, entityDetailsCreateActionsDeferredParent, entityDetailsCrudActions, entityDetailsEditAction, entityDetailsNewEditAction, entityDetailsReferenceCondition, entityDetailsReferenceCreateActions, entityDetailsSimpleCondition, entityDetailsViewAction, entityMasterBulkDeleteAction, entityMasterCreateAction, entityMasterCrudActions, entityMasterDeleteAction, entityMasterEditAction, entityMasterRecordActions, entityMasterViewAction, entityOverrideDetailsViewAction, mergeForeignKeyFieldIntoCreateActions } from '@acorex-platform/framework-shared/entity';
4
4
  export { AXP_ENTITY_DEFINITION_CRUD_SERVICE } from '@acorex-platform/framework-client/domain';
@@ -113,7 +113,7 @@ import * as i1$h from '@acorex/components/button-group';
113
113
  import { AXButtonGroupModule } from '@acorex/components/button-group';
114
114
  import { AXKBDComponent, AXKBDItemComponent } from '@acorex/components/kbd';
115
115
  import { provideFileViewer } from '@acorex/components/file-viewer';
116
- import { mergeDefinitionAndCustomQueryViews, toRelatedListViewQuery, isCustomQueryView, isQueryViewDirty, isQueryViewColumnVisible, mergeHiddenFiltersWithViewConditions, applyQueryViewToColumnQueries, snapshotCustomQueryView, createCustomQueryViewName, removePersistedCustomQueryView, queryViewConditionsToFilterQueries, upsertPersistedCustomQueryView, readPersistedCustomQueryViews, normalizeEntityMasterListLayoutType } from '@acorex-platform/framework-shared/entity';
116
+ import { mergeDefinitionAndCustomQueryViews, toRelatedListViewQuery, isCustomQueryView, isQueryViewDirty, isQueryViewColumnVisible, mergeHiddenScopeFilters, mergeHiddenFiltersWithViewConditions, applyQueryViewToColumnQueries, snapshotCustomQueryView, createCustomQueryViewName, removePersistedCustomQueryView, queryViewConditionsToFilterQueries, upsertPersistedCustomQueryView, readPersistedCustomQueryViews, normalizeEntityMasterListLayoutType } from '@acorex-platform/framework-shared/entity';
117
117
  import * as i3$8 from '@acorex/components/time-duration';
118
118
  import { AXTimeDurationModule } from '@acorex/components/time-duration';
119
119
  import * as i1$i from '@acorex/components/alert';
@@ -19453,7 +19453,7 @@ const AXPRepeaterWidget = {
19453
19453
  component: () => Promise.resolve().then(function () { return repeaterWidgetDesigner_component; }).then((c) => c.AXPRepeaterWidgetDesignerComponent),
19454
19454
  },
19455
19455
  column: {
19456
- component: () => import('./acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-CIVK5DZ9.mjs').then((c) => c.AXPRepeaterWidgetColumnComponent),
19456
+ component: () => import('./acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-MHOUqz2l.mjs').then((c) => c.AXPRepeaterWidgetColumnComponent),
19457
19457
  },
19458
19458
  },
19459
19459
  };
@@ -27571,9 +27571,9 @@ class AXPListToolbarWidgetViewComponent extends AXPValueWidgetComponent {
27571
27571
  ...(ngDevMode ? [{ debugName: "viewPopover" }] : /* istanbul ignore next */ []));
27572
27572
  this.filterTriggerMode = signal('manual', /* @ts-ignore */
27573
27573
  ...(ngDevMode ? [{ debugName: "filterTriggerMode" }] : /* istanbul ignore next */ []));
27574
- this.previousFilterQueries = signal(this.getValue()?.filters || [], /* @ts-ignore */
27574
+ this.previousFilterQueries = signal([], /* @ts-ignore */
27575
27575
  ...(ngDevMode ? [{ debugName: "previousFilterQueries" }] : /* istanbul ignore next */ []));
27576
- this.currentFilterQueries = signal(this.getValue()?.filters || [], /* @ts-ignore */
27576
+ this.currentFilterQueries = signal([], /* @ts-ignore */
27577
27577
  ...(ngDevMode ? [{ debugName: "currentFilterQueries" }] : /* istanbul ignore next */ []));
27578
27578
  //filters
27579
27579
  this.filterDefinitions = computed(() => this.options()['filterDefinitions'] || [], /* @ts-ignore */
@@ -27598,9 +27598,9 @@ class AXPListToolbarWidgetViewComponent extends AXPValueWidgetComponent {
27598
27598
  return selected?.sorts ?? [];
27599
27599
  }, /* @ts-ignore */
27600
27600
  ...(ngDevMode ? [{ debugName: "defaultSorts" }] : /* istanbul ignore next */ []));
27601
- // initials — seed once (like master toolbar); do not live-bind getValue().filters
27602
- // or every emit resets axp-query-filters context and select labels fall back to raw keys.
27603
- this.initialFilters = signal(this.getValue()?.filters || [], /* @ts-ignore */
27601
+ // Seed once after the widget path exists. Field init runs before fullPath, so getValue() is empty there.
27602
+ // Do not live-bind getValue().filters — every emit would reset axp-query-filters context.
27603
+ this.initialFilters = signal([], /* @ts-ignore */
27604
27604
  ...(ngDevMode ? [{ debugName: "initialFilters" }] : /* istanbul ignore next */ []));
27605
27605
  this.initialColumns = computed(() => this.getValue()?.columns ?? [], /* @ts-ignore */
27606
27606
  ...(ngDevMode ? [{ debugName: "initialColumns" }] : /* istanbul ignore next */ []));
@@ -27651,6 +27651,16 @@ class AXPListToolbarWidgetViewComponent extends AXPValueWidgetComponent {
27651
27651
  }, /* @ts-ignore */
27652
27652
  ...(ngDevMode ? [{ debugName: "pickerColumns" }] : /* istanbul ignore next */ []));
27653
27653
  }
27654
+ ngOnInit() {
27655
+ super.ngOnInit();
27656
+ const filters = this.getValue()?.filters;
27657
+ if (!Array.isArray(filters)) {
27658
+ return;
27659
+ }
27660
+ this.initialFilters.set(filters);
27661
+ this.currentFilterQueries.set(filters);
27662
+ this.previousFilterQueries.set(filters);
27663
+ }
27654
27664
  async loadSettings() {
27655
27665
  const filterTriggerMode = await this.settingsService.get(AXPCommonSettings.EntityFilterApplyMode);
27656
27666
  this.filterTriggerMode.set((filterTriggerMode?.value ?? 'auto'));
@@ -27661,19 +27671,25 @@ class AXPListToolbarWidgetViewComponent extends AXPValueWidgetComponent {
27661
27671
  #customViewsEffect;
27662
27672
  //actions
27663
27673
  applyFilters() {
27664
- this.previousFilterQueries.set(this.currentFilterQueries());
27665
- this.setValue({ ...this.getValue(), filters: this.currentFilterQueries() });
27674
+ const filters = this.filtersWithHiddenScope(this.currentFilterQueries());
27675
+ this.currentFilterQueries.set(filters);
27676
+ this.previousFilterQueries.set(filters);
27677
+ this.setValue({ ...this.getValue(), filters });
27666
27678
  }
27667
27679
  onFiltersChanged(filters) {
27668
- if (!isEqual(this.getValue()?.filters || [], filters)) {
27680
+ const next = this.filtersWithHiddenScope(filters);
27681
+ if (!isEqual(this.getValue()?.filters || [], next)) {
27669
27682
  if (this.filterTriggerMode() === 'auto') {
27670
- this.setValue({ ...this.getValue(), filters });
27683
+ this.setValue({ ...this.getValue(), filters: next });
27671
27684
  }
27672
27685
  else {
27673
- this.currentFilterQueries.set(filters);
27686
+ this.currentFilterQueries.set(next);
27674
27687
  }
27675
27688
  }
27676
27689
  }
27690
+ filtersWithHiddenScope(incoming) {
27691
+ return mergeHiddenScopeFilters(this.getValue()?.filters, incoming);
27692
+ }
27677
27693
  onColumnsChanged(columns) {
27678
27694
  if (!isEqual(this.getValue()?.columns || [], columns)) {
27679
27695
  this.setValue({ ...this.getValue(), columns });
@@ -32628,7 +32644,7 @@ const AXPTextBlockWidget = {
32628
32644
  component: () => Promise.resolve().then(function () { return textBlockWidgetView_component; }).then((c) => c.AXPTextBlockWidgetViewComponent),
32629
32645
  },
32630
32646
  designer: {
32631
- component: () => import('./acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-Bk5gF_QH.mjs').then((c) => c.AXPTextBlockWidgetDesignerComponent),
32647
+ component: () => import('./acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-oLFeaHdz.mjs').then((c) => c.AXPTextBlockWidgetDesignerComponent),
32632
32648
  },
32633
32649
  },
32634
32650
  };
@@ -33410,4 +33426,4 @@ var getWidgetsForAi_query = /*#__PURE__*/Object.freeze({
33410
33426
  */
33411
33427
 
33412
33428
  export { AXPConditionClauseWidget as $, AXP_REPEATER_ENTITY_BY_KEY_LOOKUP as A, AXPCallbackValidationWidgetEditComponent as B, AXPCheckBoxWidget as C, AXPCheckBoxWidgetColumnComponent as D, AXPCheckBoxWidgetDesignerComponent as E, AXPCheckBoxWidgetEditComponent as F, AXPCheckBoxWidgetPrintComponent as G, AXPCheckBoxWidgetViewComponent as H, AXPCodeEditorWidget as I, AXPColorBoxWidget as J, AXPColorBoxWidgetColumnComponent as K, AXPColorBoxWidgetDesignerComponent as L, AXPColorBoxWidgetEditComponent as M, AXPColorBoxWidgetViewComponent as N, AXPColorChooserWidget as O, AXPColorChooserWidgetColumnComponent as P, AXPColorChooserWidgetDesignerComponent as Q, AXPColorChooserWidgetEditComponent as R, AXPColorChooserWidgetViewComponent as S, AXPColorPaletteWidget as T, AXPColorPaletteWidgetColumnComponent as U, AXPColorPaletteWidgetDesignerComponent as V, AXPColorPaletteWidgetEditComponent as W, AXPColorPaletteWidgetViewComponent as X, AXPConditionBuilderWidget as Y, AXPConditionBuilderWidgetEditComponent as Z, AXPConditionBuilderWidgetViewComponent as _, textBlockContentClass as a, AXPLargeTextWidget as a$, AXPConditionClauseWidgetEditComponent as a0, AXPConnectedDragDropListsWidget as a1, AXPConnectedListsWidgetColumnComponent as a2, AXPConnectedListsWidgetEditComponent as a3, AXPConnectedListsWidgetViewComponent as a4, AXPContactWidget as a5, AXPContactWidgetColumnComponent as a6, AXPContactWidgetEditComponent as a7, AXPContactWidgetViewComponent as a8, AXPDataListWidget as a9, AXPFlexItemWidgetViewComponent as aA, AXPFlexOptionsWidget as aB, AXPFlexOptionsWidgetEditComponent as aC, AXPFlexWidget as aD, AXPFlexWidgetDesignerComponent as aE, AXPFlexWidgetViewComponent as aF, AXPGetWidgetsForAIQuery as aG, AXPGreaterThanExpressionValidationWidget as aH, AXPGreaterThanValidationWidgetEditComponent as aI, AXPGridItemOptionsWidget as aJ, AXPGridItemOptionsWidgetEditComponent as aK, AXPGridOptionsWidget as aL, AXPGridOptionsWidgetEditComponent as aM, AXPImageMarkerPopupComponent as aN, AXPImageMarkerWidget as aO, AXPImageMarkerWidgetColumnComponent as aP, AXPImageMarkerWidgetEditComponent as aQ, AXPImageMarkerWidgetViewComponent as aR, AXPIntegrationConnectionActionsService as aS, AXPIntegrationConnectionsPanelWidget as aT, AXPIntegrationConnectionsPanelWidgetEditComponent as aU, AXPItemConfiguratorWidget as aV, AXPItemConfiguratorWidgetColumnComponent as aW, AXPItemConfiguratorWidgetEditComponent as aX, AXPJsonViewerWidget as aY, AXPJsonViewerWidgetEditComponent as aZ, AXPJsonViewerWidgetViewComponent as a_, AXPDataListWidgetViewComponent as aa, AXPDataSourceOptionsWidget as ab, AXPDataSourceOptionsWidgetEditComponent as ac, AXPDateTimeBoxWidget as ad, AXPDateTimeBoxWidgetColumnComponent as ae, AXPDateTimeBoxWidgetEditComponent as af, AXPDateTimeBoxWidgetViewComponent as ag, AXPDirectionWidget as ah, AXPDirectionWidgetEditComponent as ai, AXPDragDropListWidget as aj, AXPEditorJsWidget as ak, AXPEditorJsWidgetColumnComponent as al, AXPEditorJsWidgetEditComponent as am, AXPEditorJsWidgetViewComponent as an, AXPEqualValidationWidget as ao, AXPEqualValidationWidgetEditComponent as ap, AXPFieldsetWidget as aq, AXPFieldsetWidgetDesignerComponent as ar, AXPFieldsetWidgetViewComponent as as, AXPFileViewerWidget as at, AXPFileViewerWidgetEditComponent as au, AXPFileViewerWidgetViewComponent as av, AXPFlexItemOptionsWidget as aw, AXPFlexItemOptionsWidgetEditComponent as ax, AXPFlexItemWidget as ay, AXPFlexItemWidgetDesignerComponent as az, AXPAdvancedGridItemWidget as b, AXPRichTextWidgetViewComponent as b$, AXPLargeTextWidgetColumnComponent as b0, AXPLargeTextWidgetEditComponent as b1, AXPLargeTextWidgetPrintComponent as b2, AXPLargeTextWidgetViewComponent as b3, AXPLessThanExpressionValidationWidget as b4, AXPLessThanValidationWidgetEditComponent as b5, AXPListStylingRulesExtendedWidget as b6, AXPListWidgetColumnComponent as b7, AXPListWidgetEditComponent as b8, AXPListWidgetViewComponent as b9, AXPProgressBarWidgetColumnComponent as bA, AXPProgressBarWidgetEditComponent as bB, AXPProgressBarWidgetViewComponent as bC, AXPProviderSelectWidgetColumnComponent as bD, AXPProviderSelectWidgetEditBase as bE, AXPProviderSelectWidgetViewComponent as bF, AXPQrcodeViewerService as bG, AXPQrcodeWidget as bH, AXPQrcodeWidgetColumnComponent as bI, AXPQrcodeWidgetEditComponent as bJ, AXPQrcodeWidgetViewComponent as bK, AXPRatePickerWidget as bL, AXPRatePickerWidgetColumnComponent as bM, AXPRatePickerWidgetEditComponent as bN, AXPRatePickerWidgetViewComponent as bO, AXPRegularExpressionValidationWidget as bP, AXPRegularExpressionValidationWidgetEditComponent as bQ, AXPRepeaterWidget as bR, AXPRepeaterWidgetDesignerComponent as bS, AXPRepeaterWidgetEditComponent as bT, AXPRepeaterWidgetViewComponent as bU, AXPRequiredValidationWidget as bV, AXPRequiredValidationWidgetEditComponent as bW, AXPRichTextWidget as bX, AXPRichTextWidgetColumnComponent as bY, AXPRichTextWidgetEditComponent as bZ, AXPRichTextWidgetPrintComponent as b_, AXPLocalDataSourceSheetWidget as ba, AXPLocalDataSourceSheetWidgetEditComponent as bb, AXPMapWidgetEditComponent as bc, AXPMapWidgetViewComponent as bd, AXPMaxLengthExpressionValidationWidget as be, AXPMaxLengthValidationWidgetEditComponent as bf, AXPMinLengthExpressionValidationWidget as bg, AXPMinLengthValidationWidgetEditComponent as bh, AXPNodeRendererWidget as bi, AXPNodeRendererWidgetDesignerComponent as bj, AXPNodeRendererWidgetEditComponent as bk, AXPNodeRendererWidgetViewComponent as bl, AXPNumberBoxWidget as bm, AXPNumberBoxWidgetColumnComponent as bn, AXPNumberBoxWidgetEditComponent as bo, AXPNumberBoxWidgetPrintComponent as bp, AXPNumberBoxWidgetViewComponent as bq, AXPOutcomeResultsViewerWidget as br, AXPOutcomeResultsViewerWidgetViewComponent as bs, AXPPageWidget as bt, AXPPageWidgetViewComponent as bu, AXPPasswordBoxWidget as bv, AXPPasswordBoxWidgetColumnComponent as bw, AXPPasswordBoxWidgetEditComponent as bx, AXPPasswordBoxWidgetViewComponent as by, AXPProgressBarWidget as bz, AXPAdvancedGridItemWidgetDesignerComponent as c, AXP_Flex_Box_Align_Options as c$, AXPSchedulerPickerWidget as c0, AXPSelectBoxWidget as c1, AXPSelectBoxWidgetColumnComponent as c2, AXPSelectBoxWidgetEditComponent as c3, AXPSelectBoxWidgetViewComponent as c4, AXPSelectLanguagePopup as c5, AXPSelectionListWidget as c6, AXPSelectionListWidgetColumnComponent as c7, AXPSelectionListWidgetDesignerComponent as c8, AXPSelectionListWidgetEditComponent as c9, AXPTagEditorWidgetViewComponent as cA, AXPTemplateBoxWidget as cB, AXPTemplateBoxWidgetColumnComponent as cC, AXPTemplateBoxWidgetEditComponent as cD, AXPTemplateBoxWidgetPrintComponent as cE, AXPTemplateBoxWidgetViewComponent as cF, AXPTextBoxWidget as cG, AXPTextBoxWidgetColumnComponent as cH, AXPTextBoxWidgetEditComponent as cI, AXPTextBoxWidgetPrintComponent as cJ, AXPTextBoxWidgetViewComponent as cK, AXPToggleWidget as cL, AXPToggleWidgetColumnComponent as cM, AXPToggleWidgetEditComponent as cN, AXPToggleWidgetPrintComponent as cO, AXPToggleWidgetViewComponent as cP, AXPWidgetFieldConfiguratorWidget as cQ, AXPWidgetFieldConfiguratorWidgetColumnComponent as cR, AXPWidgetFieldConfiguratorWidgetEditComponent as cS, AXPWidgetsModule as cT, AXP_ABSOLUTE_UNITS as cU, AXP_BORDER_RADIUS_UNITS as cV, AXP_BORDER_WIDTH_UNITS as cW, AXP_CONDITION_CLAUSE_WIDGET_NAME as cX, AXP_DATA_LIST_CMD_DELETE as cY, AXP_DATA_LIST_CMD_EDIT as cZ, AXP_DATA_LIST_PENDING_DELETE_KEY as c_, AXPSelectionListWidgetViewComponent as ca, AXPSignatureWidget as cb, AXPSignatureWidgetColumnComponent as cc, AXPSignatureWidgetEditComponent as cd, AXPSignatureWidgetViewComponent as ce, AXPSpacingWidget as cf, AXPSpacingWidgetEditComponent as cg, AXPStatusChipComponent as ch, AXPStatusWidget as ci, AXPStatusWidgetColumnComponent as cj, AXPStatusWidgetEditComponent as ck, AXPStatusWidgetViewComponent as cl, AXPStepWizardWidget as cm, AXPStepWizardWidgetDesignerComponent as cn, AXPStepWizardWidgetViewComponent as co, AXPStopwatchWidget as cp, AXPStopwatchWidgetViewComponent as cq, AXPTableItemWidget as cr, AXPTableItemWidgetDesignerComponent as cs, AXPTableItemWidgetViewComponent as ct, AXPTableWidget as cu, AXPTableWidgetDesignerComponent as cv, AXPTableWidgetViewComponent as cw, AXPTagEditorWidget as cx, AXPTagEditorWidgetColumnComponent as cy, AXPTagEditorWidgetEditComponent as cz, AXPAdvancedGridItemWidgetViewComponent as d, AXP_Flex_Box_Alignments as d0, AXP_Flex_Box_Justify_Options as d1, AXP_Grid_Box_Align_Items_Options as d2, AXP_Grid_Box_Alignments as d3, AXP_Grid_Box_Justify_Items_Options as d4, AXP_LIST_STYLING_RULES_WIDGET_NAME as d5, AXP_LOCAL_DATA_SOURCE_SHEET_WIDGET_NAME as d6, AXP_RELATIVE_UNITS as d7, AXP_RELATIVE_UNITS_NO_PERCENT as d8, AXP_ROW_EXPR_PREFIX as d9, AXP_SPACING_UNITS as da, AXP_default_Border_Box_Units as db, AXP_default_Border_Box_Value as dc, AXP_default_Spacing_Box_Units as dd, AXP_default_Spacing_Box_Value as de, DEFAULT_QRCODE_SIZE as df, DEFAULT_STRATEGY_CONFIG as dg, STRATEGY_CONFIG_TOKEN as dh, applyLeafVisibilityToDataListColumnTree as di, flattenDataListWidgetColumns as dj, formatConditionBuilderChip as dk, formatConditionBuilderSentence as dl, isDataListColumnBand as dm, prepareNodeRendererChild as dn, resolveColorChooserGroups as dp, resolveDataListColumnWidth as dq, tokensToPlainText as dr, AXPAdvancedGridOptionsWidget as e, AXPAdvancedGridOptionsWidgetEditComponent as f, AXPAdvancedGridWidget as g, AXPAdvancedGridWidgetDesignerComponent as h, AXPAdvancedGridWidgetViewComponent as i, AXPAvatarWidget as j, AXPAvatarWidgetColumnComponent as k, AXPAvatarWidgetDesignerComponent as l, AXPAvatarWidgetEditComponent as m, AXPAvatarWidgetViewComponent as n, AXPBetweenExpressionValidationWidget as o, AXPBetweenValidationWidgetEditComponent as p, AXPBlockWidget as q, AXPBlockWidgetDesignerComponent as r, AXPBlockWidgetViewComponent as s, textBlockStyleAttribute as t, AXPBorderWidget as u, AXPBorderWidgetEditComponent as v, AXPButtonWidget as w, AXPButtonWidgetColumnComponent as x, AXPButtonWidgetViewComponent as y, AXPCallbackValidationWidget as z };
33413
- //# sourceMappingURL=acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-D8XNBdpK.mjs.map
33429
+ //# sourceMappingURL=acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-CWvC9Eh2.mjs.map