@acorex-platform/framework-client 2.0.0-next.1 → 2.0.0-next.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/acorex-platform-framework-client-common.mjs +30 -1
- package/fesm2022/acorex-platform-framework-client-common.mjs.map +1 -1
- package/fesm2022/{acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-DToXUL54.mjs → acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-CA19c8sx.mjs} +9 -12
- package/fesm2022/{acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-DToXUL54.mjs.map → acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-CA19c8sx.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-framework-client-layout-entity-attachments-page.component-DqssRhIG.mjs → acorex-platform-framework-client-layout-entity-attachments-page.component-Dxp4kGsa.mjs} +2 -2
- package/fesm2022/{acorex-platform-framework-client-layout-entity-attachments-page.component-DqssRhIG.mjs.map → acorex-platform-framework-client-layout-entity-attachments-page.component-Dxp4kGsa.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-framework-client-layout-entity-bulk-entity.command-Deq-a9MQ.mjs → acorex-platform-framework-client-layout-entity-bulk-entity.command-fnICGK0s.mjs} +2 -2
- package/fesm2022/{acorex-platform-framework-client-layout-entity-bulk-entity.command-Deq-a9MQ.mjs.map → acorex-platform-framework-client-layout-entity-bulk-entity.command-fnICGK0s.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-framework-client-layout-entity-file-list-popup.component-J30yrJMo.mjs → acorex-platform-framework-client-layout-entity-file-list-popup.component-BxTbTlUr.mjs} +2 -2
- package/fesm2022/{acorex-platform-framework-client-layout-entity-file-list-popup.component-J30yrJMo.mjs.map → acorex-platform-framework-client-layout-entity-file-list-popup.component-BxTbTlUr.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-framework-client-layout-entity-gallery-page.component-BqqxD8cX.mjs → acorex-platform-framework-client-layout-entity-gallery-page.component-D0WZheYu.mjs} +2 -2
- package/fesm2022/{acorex-platform-framework-client-layout-entity-gallery-page.component-BqqxD8cX.mjs.map → acorex-platform-framework-client-layout-entity-gallery-page.component-D0WZheYu.mjs.map} +1 -1
- package/fesm2022/acorex-platform-framework-client-layout-entity.mjs +1 -1
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-BYPl8uyp.mjs → acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-1UJh0Qj4.mjs} +6 -19
- package/fesm2022/acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-1UJh0Qj4.mjs.map +1 -0
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-IU_-eHQS.mjs → acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-SHCgo4UC.mjs} +2 -2
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-IU_-eHQS.mjs.map → acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-SHCgo4UC.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-ET8ZuuCj.mjs → acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-BYsrp8LT.mjs} +2 -2
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-ET8ZuuCj.mjs.map → acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-BYsrp8LT.mjs.map} +1 -1
- package/fesm2022/acorex-platform-framework-client-layout-widgets.mjs +1 -1
- package/layout/widget-core/README.md +1 -1
- package/layout/widgets/README.md +2 -2
- package/package.json +6 -6
- package/types/acorex-platform-framework-client-common.d.ts +7 -1
- package/types/acorex-platform-framework-client-layout-entity.d.ts +1 -0
- package/types/acorex-platform-framework-client-layout-widgets.d.ts +1 -6
- package/fesm2022/acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-BYPl8uyp.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, c as readLiveAttachmentValue, d as saveAttachmentsThroughEntityUpdate, p as persistedAttachments, e as attachmentNeedsHydration } from './acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-
|
|
4
|
+
import { A as AXPEntityDefinitionRegistryService, c as readLiveAttachmentValue, d as saveAttachmentsThroughEntityUpdate, p as persistedAttachments, e as attachmentNeedsHydration } from './acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-CA19c8sx.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';
|
|
@@ -392,4 +392,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
392
392
|
}], 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 }] }] } });
|
|
393
393
|
|
|
394
394
|
export { AXMAttachmentsPageComponent };
|
|
395
|
-
//# sourceMappingURL=acorex-platform-framework-client-layout-entity-attachments-page.component-
|
|
395
|
+
//# sourceMappingURL=acorex-platform-framework-client-layout-entity-attachments-page.component-Dxp4kGsa.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-framework-client-layout-entity-attachments-page.component-DqssRhIG.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 attachmentNeedsHydration,\n persistedAttachments,\n readLiveAttachmentValue,\n saveAttachmentsThroughEntityUpdate,\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 live = this.containerRef()?.contextService.data() as Record<string, unknown> | undefined;\n const attachments = readLiveAttachmentValue(live, 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 saveAttachmentsThroughEntityUpdate(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 // Storage refs are hydrated by the widget. Baselining them here marks the\n // loaded file list dirty as soon as hydration replaces the placeholder.\n if (!attachmentNeedsHydration(savedAttachments)) {\n api.syncBaseline?.(savedAttachments);\n }\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-Dxp4kGsa.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 attachmentNeedsHydration,\n persistedAttachments,\n readLiveAttachmentValue,\n saveAttachmentsThroughEntityUpdate,\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 live = this.containerRef()?.contextService.data() as Record<string, unknown> | undefined;\n const attachments = readLiveAttachmentValue(live, 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 saveAttachmentsThroughEntityUpdate(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 // Storage refs are hydrated by the widget. Baselining them here marks the\n // loaded file list dirty as soon as hydration replaces the placeholder.\n if (!attachmentNeedsHydration(savedAttachments)) {\n api.syncBaseline?.(savedAttachments);\n }\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-
|
|
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-CA19c8sx.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-
|
|
190
|
+
//# sourceMappingURL=acorex-platform-framework-client-layout-entity-bulk-entity.command-fnICGK0s.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-framework-client-layout-entity-bulk-entity.command-Deq-a9MQ.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-fnICGK0s.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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"}
|
|
@@ -13,7 +13,7 @@ import * as i0 from '@angular/core';
|
|
|
13
13
|
import { input, computed, linkedSignal, viewChild, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
14
14
|
import * as i1$1 from '@acorex-platform/framework-client/layout/widget-core';
|
|
15
15
|
import { AXPWidgetContainerComponent, AXPWidgetCoreModule } from '@acorex-platform/framework-client/layout/widget-core';
|
|
16
|
-
import { c as readLiveAttachmentValue } from './acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-
|
|
16
|
+
import { c as readLiveAttachmentValue } from './acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-CA19c8sx.mjs';
|
|
17
17
|
|
|
18
18
|
class AXPFileListPopupComponent extends AXBasePageComponent {
|
|
19
19
|
constructor() {
|
|
@@ -125,4 +125,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
125
125
|
}], propDecorators: { files: [{ type: i0.Input, args: [{ isSignal: true, alias: "files", required: false }] }], isReadonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "isReadonly", required: false }] }], multiple: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiple", required: false }] }], fileEditable: [{ type: i0.Input, args: [{ isSignal: true, alias: "fileEditable", required: false }] }], accept: [{ type: i0.Input, args: [{ isSignal: true, alias: "accept", required: false }] }], maxFileSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxFileSize", required: false }] }], entityName: [{ type: i0.Input, args: [{ isSignal: true, alias: "entityName", required: false }] }], entityId: [{ type: i0.Input, args: [{ isSignal: true, alias: "entityId", required: false }] }], entityField: [{ type: i0.Input, args: [{ isSignal: true, alias: "entityField", required: false }] }], plugins: [{ type: i0.Input, args: [{ isSignal: true, alias: "plugins", required: false }] }], showAddItemButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "showAddItemButton", required: false }] }], editDialog: [{ type: i0.Input, args: [{ isSignal: true, alias: "editDialog", required: false }] }], containerRef: [{ type: i0.ViewChild, args: [i0.forwardRef(() => AXPWidgetContainerComponent), { isSignal: true }] }] } });
|
|
126
126
|
|
|
127
127
|
export { AXPFileListPopupComponent };
|
|
128
|
-
//# sourceMappingURL=acorex-platform-framework-client-layout-entity-file-list-popup.component-
|
|
128
|
+
//# sourceMappingURL=acorex-platform-framework-client-layout-entity-file-list-popup.component-BxTbTlUr.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-framework-client-layout-entity-file-list-popup.component-J30yrJMo.mjs","sources":["../../../../../libs/framework/client/layout/entity/src/lib/widgets/file-uploader-widget/file-list-popup/file-list-popup.component.ts","../../../../../libs/framework/client/layout/entity/src/lib/widgets/file-uploader-widget/file-list-popup/file-list-popup.component.html"],"sourcesContent":["import { AXPContextChangeEvent, AXPFileListItem, type AXPWidgetNode } from '@acorex-platform/framework-shared/core';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXCheckBoxModule } from '@acorex/components/check-box';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXTranslationModule } from '@acorex/core/translation';\n\nimport { CommonModule } from '@angular/common';\nimport { Component, computed, input, linkedSignal, viewChild, ChangeDetectionStrategy } from '@angular/core';\nimport { AXPWidgetContainerComponent, AXPWidgetCoreModule } from '@acorex-platform/framework-client/layout/widget-core';\nimport { readLiveAttachmentValue } from '../save-attachments-field';\nimport type { AXPFileUploaderEditDialogOptions } from '../file-uploader-widget.types';\n\n@Component({\n imports: [\n CommonModule,\n //\n AXLabelModule,\n AXCheckBoxModule,\n AXDecoratorModule,\n AXButtonModule,\n AXTranslationModule,\n //\n AXPWidgetCoreModule,\n ],\n changeDetection: ChangeDetectionStrategy.Eager,\n templateUrl: './file-list-popup.component.html',\n})\nexport class AXPFileListPopupComponent extends AXBasePageComponent {\n //#region ---- Component Properties ----\n\n /** Hydrated file rows only; storage prefixes are resolved in entity/mock middleware before UI. */\n files = input<AXPFileListItem[]>([]);\n /**\n * When true, same as file-uploader `options.readonly` (no add/upload, list actions download-only).\n * Use property name `isReadonly` in popup `data` so host/popup binding resolves the input.\n */\n isReadonly = input<boolean>(false);\n multiple = input<boolean>(true);\n fileEditable = input<boolean>(true);\n /** Undefined matches the attachments page: no type filter. */\n accept = input<string | undefined>(undefined);\n /** 0 matches the attachments page: no size cap. */\n maxFileSize = input<number>(0);\n entityName = input<string | undefined>(undefined);\n entityId = input<string | undefined>(undefined);\n entityField = input<string | undefined>(undefined);\n /** Same as widget plugins (e.g. document) so hooks/actions run in popup too. */\n plugins = input<{ name: string; options?: unknown }[]>([]);\n showAddItemButton = input<boolean>(true);\n /** File edit dialog options (mode + visible fields). */\n editDialog = input<AXPFileUploaderEditDialogOptions | undefined>(undefined);\n\n //#endregion\n\n //#region ---- Computed Properties ----\n\n /**\n * Always render the edit widget so `options` (readonly, plugins, editDialog, …) match the entity form.\n * Readonly behavior comes from `node.options.readonly`, not from view mode.\n */\n protected mode = computed(() => 'edit' as const);\n\n //#endregion\n\n //#region ---- Context & Node Management ----\n\n protected context = linkedSignal<Record<string, unknown>>(() => ({}));\n\n private containerRef = viewChild(AXPWidgetContainerComponent);\n\n protected onContextChanged(event: AXPContextChangeEvent) {\n this.context.set(event.data);\n }\n\n /** Resolves input that may be a signal (input()) or a raw value when popup injects data. */\n private resolveInput<T>(value: (() => T) | T, fallback: T): T {\n return typeof value === 'function' ? (value as () => T)() : (value ?? fallback);\n }\n\n protected node = computed<AXPWidgetNode>(() => ({\n type: 'attachments',\n path: 'files',\n defaultValue: Array.isArray(this.files()) ? this.files() : [],\n options: {\n readonly: this.isReadonly(),\n multiple: this.multiple(),\n accept: this.accept(),\n maxFileSize: this.maxFileSize(),\n fileEditable: this.fileEditable(),\n showAddItemButton: this.showAddItemButton(),\n plugins: this.resolveInput(this.plugins, []),\n editDialog: this.editDialog(),\n entityName: this.entityName(),\n entityId: this.entityId(),\n entityField: this.entityField(),\n },\n }));\n\n //#endregion\n\n //#region ---- UI Handlers ----\n\n apply() {\n const live = this.containerRef()?.contextService.data() as Record<string, unknown> | undefined;\n const files = readLiveAttachmentValue(live, this.context(), 'files');\n this.close({\n data: { files },\n });\n }\n\n //#endregion\n}\n","<div class=\"p-2\">\n <axp-widgets-container #containerRef [context]=\"context()\" (onContextChanged)=\"onContextChanged($event)\">\n <ng-container axp-widget-renderer [node]=\"node()\" [mode]=\"mode()\"></ng-container>\n </axp-widgets-container>\n</div>\n<ax-footer>\n <ax-suffix>\n @if (isReadonly()) {\n <ax-button [text]=\"'@general:actions.close.title' | translate | async\" (click)=\"close()\"></ax-button>\n } @else {\n <ax-button [text]=\"'@general:actions.discard.title' | translate | async\" (click)=\"close()\"></ax-button>\n <ax-button\n [text]=\"'@general:actions.apply.title' | translate | async\"\n (click)=\"apply()\"\n [color]=\"'primary'\"\n ></ax-button>\n }\n </ax-suffix>\n</ax-footer>\n"],"names":["i1","i3","i4","i5"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-platform-framework-client-layout-entity-file-list-popup.component-BxTbTlUr.mjs","sources":["../../../../../libs/framework/client/layout/entity/src/lib/widgets/file-uploader-widget/file-list-popup/file-list-popup.component.ts","../../../../../libs/framework/client/layout/entity/src/lib/widgets/file-uploader-widget/file-list-popup/file-list-popup.component.html"],"sourcesContent":["import { AXPContextChangeEvent, AXPFileListItem, type AXPWidgetNode } from '@acorex-platform/framework-shared/core';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXCheckBoxModule } from '@acorex/components/check-box';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXTranslationModule } from '@acorex/core/translation';\n\nimport { CommonModule } from '@angular/common';\nimport { Component, computed, input, linkedSignal, viewChild, ChangeDetectionStrategy } from '@angular/core';\nimport { AXPWidgetContainerComponent, AXPWidgetCoreModule } from '@acorex-platform/framework-client/layout/widget-core';\nimport { readLiveAttachmentValue } from '../save-attachments-field';\nimport type { AXPFileUploaderEditDialogOptions } from '../file-uploader-widget.types';\n\n@Component({\n imports: [\n CommonModule,\n //\n AXLabelModule,\n AXCheckBoxModule,\n AXDecoratorModule,\n AXButtonModule,\n AXTranslationModule,\n //\n AXPWidgetCoreModule,\n ],\n changeDetection: ChangeDetectionStrategy.Eager,\n templateUrl: './file-list-popup.component.html',\n})\nexport class AXPFileListPopupComponent extends AXBasePageComponent {\n //#region ---- Component Properties ----\n\n /** Hydrated file rows only; storage prefixes are resolved in entity/mock middleware before UI. */\n files = input<AXPFileListItem[]>([]);\n /**\n * When true, same as file-uploader `options.readonly` (no add/upload, list actions download-only).\n * Use property name `isReadonly` in popup `data` so host/popup binding resolves the input.\n */\n isReadonly = input<boolean>(false);\n multiple = input<boolean>(true);\n fileEditable = input<boolean>(true);\n /** Undefined matches the attachments page: no type filter. */\n accept = input<string | undefined>(undefined);\n /** 0 matches the attachments page: no size cap. */\n maxFileSize = input<number>(0);\n entityName = input<string | undefined>(undefined);\n entityId = input<string | undefined>(undefined);\n entityField = input<string | undefined>(undefined);\n /** Same as widget plugins (e.g. document) so hooks/actions run in popup too. */\n plugins = input<{ name: string; options?: unknown }[]>([]);\n showAddItemButton = input<boolean>(true);\n /** File edit dialog options (mode + visible fields). */\n editDialog = input<AXPFileUploaderEditDialogOptions | undefined>(undefined);\n\n //#endregion\n\n //#region ---- Computed Properties ----\n\n /**\n * Always render the edit widget so `options` (readonly, plugins, editDialog, …) match the entity form.\n * Readonly behavior comes from `node.options.readonly`, not from view mode.\n */\n protected mode = computed(() => 'edit' as const);\n\n //#endregion\n\n //#region ---- Context & Node Management ----\n\n protected context = linkedSignal<Record<string, unknown>>(() => ({}));\n\n private containerRef = viewChild(AXPWidgetContainerComponent);\n\n protected onContextChanged(event: AXPContextChangeEvent) {\n this.context.set(event.data);\n }\n\n /** Resolves input that may be a signal (input()) or a raw value when popup injects data. */\n private resolveInput<T>(value: (() => T) | T, fallback: T): T {\n return typeof value === 'function' ? (value as () => T)() : (value ?? fallback);\n }\n\n protected node = computed<AXPWidgetNode>(() => ({\n type: 'attachments',\n path: 'files',\n defaultValue: Array.isArray(this.files()) ? this.files() : [],\n options: {\n readonly: this.isReadonly(),\n multiple: this.multiple(),\n accept: this.accept(),\n maxFileSize: this.maxFileSize(),\n fileEditable: this.fileEditable(),\n showAddItemButton: this.showAddItemButton(),\n plugins: this.resolveInput(this.plugins, []),\n editDialog: this.editDialog(),\n entityName: this.entityName(),\n entityId: this.entityId(),\n entityField: this.entityField(),\n },\n }));\n\n //#endregion\n\n //#region ---- UI Handlers ----\n\n apply() {\n const live = this.containerRef()?.contextService.data() as Record<string, unknown> | undefined;\n const files = readLiveAttachmentValue(live, this.context(), 'files');\n this.close({\n data: { files },\n });\n }\n\n //#endregion\n}\n","<div class=\"p-2\">\n <axp-widgets-container #containerRef [context]=\"context()\" (onContextChanged)=\"onContextChanged($event)\">\n <ng-container axp-widget-renderer [node]=\"node()\" [mode]=\"mode()\"></ng-container>\n </axp-widgets-container>\n</div>\n<ax-footer>\n <ax-suffix>\n @if (isReadonly()) {\n <ax-button [text]=\"'@general:actions.close.title' | translate | async\" (click)=\"close()\"></ax-button>\n } @else {\n <ax-button [text]=\"'@general:actions.discard.title' | translate | async\" (click)=\"close()\"></ax-button>\n <ax-button\n [text]=\"'@general:actions.apply.title' | translate | async\"\n (click)=\"apply()\"\n [color]=\"'primary'\"\n ></ax-button>\n }\n </ax-suffix>\n</ax-footer>\n"],"names":["i1","i3","i4","i5"],"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-
|
|
4
|
+
import { A as AXPEntityDefinitionRegistryService } from './acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-CA19c8sx.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-
|
|
268
|
+
//# sourceMappingURL=acorex-platform-framework-client-layout-entity-gallery-page.component-D0WZheYu.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-framework-client-layout-entity-gallery-page.component-BqqxD8cX.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-D0WZheYu.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 { f as ATTACHMENTS_PAGE_COMPONENT_KEY, g as AXMEntityCrudService, h as AXMEntityCrudServiceImpl, i as AXPCategoryTreeService, j as AXPClientLocalPluginModule, k as AXPCreateEntityCommand, l as AXPDataSeederService, m as AXPDeleteEntityCommand, o as AXPDomainQueryEntityDefinitionLoader, q as AXPEditFileUploaderCommand, t as AXPEntityBulkPatchPerformService, u as AXPEntityCardComponent, v as AXPEntityCardFieldsResolver, x as AXPEntityCardSelectActionName, y as AXPEntityCardSkeletonComponent, z as AXPEntityCategoryTreeSelectorComponent, B as AXPEntityCategoryWidget, C as AXPEntityCategoryWidgetColumnComponent, D as AXPEntityCategoryWidgetEditComponent, E as AXPEntityCategoryWidgetViewComponent, F as AXPEntityCommandTriggerViewModel, G as AXPEntityCreateViewElementViewModel, H as AXPEntityCreateViewModelFactory, I as AXPEntityCreateViewSectionViewModel, J as AXPEntityDataProvider, K as AXPEntityDataProviderImpl, L as AXPEntityDataSelectorRowActionsService, M as AXPEntityDataSelectorService, N as AXPEntityDefinitionProviderWidget, O as AXPEntityDefinitionProviderWidgetEditComponent, A as AXPEntityDefinitionRegistryService, P as AXPEntityDeletePerformService, Q as AXPEntityDetailListViewModel, R as AXPEntityDetailPopoverComponent, S as AXPEntityDetailPopoverService, T as AXPEntityDetailViewModelFactory, U as AXPEntityDetailViewModelResolver, V as AXPEntityEventDispatcherService, W as AXPEntityFormBuilderService, X as AXPEntityLifecycleHookKeys, Y as AXPEntityListPersistenceModeDefault, Z as AXPEntityListTableService, _ as AXPEntityListToolbarService, $ as AXPEntityListViewCardFieldViewModel, a0 as AXPEntityListViewColumnViewModel, a1 as AXPEntityListViewModelFactory, a2 as AXPEntityListViewModelResolver, a3 as AXPEntityListWidget, a4 as AXPEntityListWidgetViewComponent, a5 as AXPEntityMasterCreateViewModel, a6 as AXPEntityMasterListCardSelectActionName, a7 as AXPEntityMasterListViewModel, a8 as AXPEntityMasterListViewQueryViewModel, a9 as AXPEntityMasterSingleElementViewModel, aa as AXPEntityMasterSingleViewGroupViewModel, ab as AXPEntityMasterSingleViewModel, ac as AXPEntityMasterUpdateElementViewModel, ad as AXPEntityMasterUpdateViewModel, ae as AXPEntityMasterUpdateViewModelFactory, af as AXPEntityMiddlewareSkipContext, ag as AXPEntityModule, ah as AXPEntityPreloadFiltersContainerComponent, ai as AXPEntityPreloadFiltersViewModel, aj as AXPEntityPreloadFiltersViewModelResolver, ak as AXPEntityResolver, al as AXPEntityRuntimeAccessorService, am as AXPEntityService, an as AXPEntityStorageService, ao as AXPEntityUpdateViewSectionViewModel, ap as AXPFileListComponent, aq as AXPFileUploaderLoadFilesQuery, ar as AXPFileUploaderSaveFilesCommand, as as AXPFileUploaderWidget, at as AXPFileUploaderWidgetColumnComponent, au as AXPFileUploaderWidgetEditComponent, av as AXPFileUploaderWidgetService, aw as AXPFileUploaderWidgetViewComponent, ax as AXPGetEntityDetailsQuery, ay as AXPLayoutOrderingConfigService, az as AXPLookupByKeyCacheService, aA as AXPLookupWidget, aB as AXPLookupWidgetColumnComponent, aC as AXPLookupWidgetEditComponent, aD as AXPLookupWidgetViewComponent, aE as AXPMiddlewareAbortError, aF as AXPMiddlewareEntityService, aF as AXPMiddlewareEntityStorageService, aG as AXPMultiSourceDefinitionProviderContext, aH as AXPMultiSourceDefinitionProviderService, aI as AXPMultiSourceFederatedSearchService, aJ as AXPMultiSourceSelectorComponent, aK as AXPMultiSourceSelectorService, aL as AXPMultiSourceSelectorWidget, aM as AXPMultiSourceSelectorWidgetColumnComponent, aN as AXPMultiSourceSelectorWidgetEditComponent, aO as AXPMultiSourceSelectorWidgetViewComponent, aP as AXPMultiSourceType, aQ as AXPOpenEntityDetailsCommand, aR as AXPOpenEntityListCommand, aS as AXPRelatedColumnEnrichmentService, aT as AXPRelatedColumnMetadataResolver, aU as AXPSelectorStructureWidget, aV as AXPSelectorStructureWidgetColumnComponent, aW as AXPSelectorStructureWidgetEditComponent, aX as AXPSelectorStructureWidgetViewComponent, aY as AXPShowFileUploaderPopupCommand, aZ as AXPTruncatedBreadcrumbComponent, a_ as AXPUpdateEntityCommand, a$ as AXPUpdateEntityStatusCommand, b0 as AXPViewEntityDetailsCommand, b1 as AXP_APPEARANCE_SECTION_ORDER, b2 as AXP_CATEGORY_TREE_ROOT_TITLE_I18N_KEY, b3 as AXP_CLASSIFICATION_SECTION_ORDER, b4 as AXP_CLIENT_LOCAL_DEFAULT_MAX_ITEMS, b5 as AXP_CLIENT_LOCAL_PLUGIN_NAME, b6 as AXP_DATA_SEEDER_TOKEN, b7 as AXP_ENTITY_ACTION_PLUGIN, b8 as AXP_ENTITY_CONFIG_TOKEN, b9 as AXP_ENTITY_DEFINITION_LOADER, ba as AXP_ENTITY_MIDDLEWARE, bb as AXP_ENTITY_MODIFIER, bc as AXP_ENTITY_STORAGE_MIDDLEWARE, bd as AXP_LOOKUP_FILTER_DEFAULT_OPERATOR, be as AXP_MULTI_SOURCE_DEFINITION_PROVIDER, bf as DEFAULT_COLUMN_ORDER, bg as DEFAULT_PAIR_SPAN_RULES, bh as DEFAULT_PROPERTY_ORDER, bi as DEFAULT_SECTION_ORDER, bj as ENTITY_FORM_ACTION_FIRST_STEP_CONTINUE, bk as ENTITY_LIST_LAYOUT_META, bl as ENTITY_LIST_ROUTE_CONTEXT_SESSION_KEY, bm as ENTITY_MASTER_LIST_TRACE_NS, bn as EntityBuilder, bo as EntityDataAccessor, bp as GALLERY_PAGE_COMPONENT_KEY, bq as TREE_CHILDREN_QUERY_TAKE, br as actionExists, bs as applyDataSourcePagingWithoutLoad, bt as attachmentFieldCount, e as attachmentNeedsHydration, bu as attachmentsPlugin, bv as attachmentsSemanticallyEqual, bw as axpBuildEntityListPageContextSnapshot, bx as axpCreateEntityAiToolInputDefaults, by as axpCreateEntityCommandDefinition, bz as axpDeleteEntityCommandDefinition, bA as axpOpenEntityListCommandDefinition, bB as axpRunEntityListPageContextAction, bC as axpShowFileUploaderPopupCommandDefinition, bD as axpUpdateEntityStatusCommandDefinition, bE as buildDataSourceTraceSnapshot, bF as canPersistEntityListState, bG as clientLocalPlugin, bH as cloneLayoutArrays, bI as columnOrderingMiddleware, bJ as columnOrderingMiddlewareProvider, bK as columnWidthMiddleware, bL as columnWidthMiddlewareProvider, bM as committedAttachments, bN as composeEntityMiddlewares, bO as composeEntityStorageMiddlewares, bP as computeEntityAggregates, bQ as configureEntityListColumnsSettingsMigrateDrop, bR as configureEntityListColumnsSettingsVersion, bS as createColumnOrderingMiddlewareProvider, bT as createEntityCardDisplayScope, bU as createEntityCardLogicScope, bV as createEntityMiddlewareContext, bW as createEntityStorageContext, bX as createLayoutOrderingMiddlewareProvider, bY as defaultCardLayoutMiddleware, bZ as defaultCardLayoutMiddlewareProvider, b_ as defaultMultiLanguageMiddleware, b$ as defaultMultiLanguageMiddlewareProvider, c0 as defaultSortPresetsMiddleware, c1 as defaultSortPresetsMiddlewareProvider, c2 as detectEntityChanges, c3 as dispatchEntityModifiedSideEffects, c4 as ensureHierarchicalRootFilter, c5 as ensureLayoutPropertyView, c6 as ensureLayoutSection, c7 as ensureListActions, c8 as entityCreateBridgeMiddleware, c9 as entityDeleteBridgeMiddleware, ca as entityGetOneBridgeMiddleware, cb as entityListInstanceCurrentViewPath, cc as entityListInstanceFilterPath, cd as entityListStylingRulesPath, ce as entityQueryBridgeMiddleware, cf as entityStorageCreateBridgeMiddleware, cg as entityStorageDeleteBridgeMiddleware, ch as entityStorageGetOneBridgeMiddleware, ci as entityStorageQueryBridgeMiddleware, cj as entityStorageUpdateBridgeMiddleware, ck as entityUpdateBridgeMiddleware, cl as eventDispatchMiddleware, cm as filterEntityMiddlewares, cn as filterEntityStorageMiddlewares, co as filterSortEntityRows, cp as filterTouchesParentKey, cq as findEntityListRowDataInTree, cr as fingerprintAttachmentItem, cs as fingerprintAttachments, ct as fireEntityLifecycleHook, cu as formatLookupItemDisplay, cv as formatLookupItemDisplayAsync, cw as galleryPlugin, cx as getDataSourcePageIndex, cy as getEntityListColumnsSettingsMigrateDrop, cz as getEntityListColumnsSettingsVersion, cA as getEntityListRowId, cB as getMasterInterfacePropertySortKey, cC as hasFileUploaderTitleOrDescriptionFields, cD as hydrateAttachmentFieldToFileList, cE as isAXPMiddlewareAbortError, cF as isAttachmentFieldPresentOnRow, cG as isAttachmentListEntry, cH as isAttachmentStorageRef, cI as isCategoryEntity, cJ as isCategoryFilter, cK as isFileListItem, cL as isFileUploaderEditDialogAuto, cM as isLegacyEntityDataSelectorOptions, cN as layoutOrderingMiddlewareFactory, cO as layoutOrderingMiddlewareProvider, cP as mapEntityStorageErrorToCommandResult, cQ as mapLegacyEntityDataSelectorOptions, cR as mergeEntityListViewAndPersistedFilters, cS as normalizeEntityCardHeaderDisplayValue, cT as normalizeEntityDataSelectorColumnSpecs, cU as normalizeEntityDataSelectorOptions, cV as normalizeEntityFieldToFileList, cW as normalizeEntityListPersistenceMode, cX as normalizeListPaging, p as persistedAttachments, cY as prefetchClientLocalRelated, cZ as provideEntity, c_ as provideEntityMiddlewareBridge, c$ as provideEntityRealtimeHandlers, d0 as provideEntityStorageMiddlewareBridge, d1 as provideLocalEntityCatalog, c as readLiveAttachmentValue, d2 as readPersistedEntityListInstanceCurrentView, d3 as readPersistedEntityListInstanceFilters, d4 as readPersistedEntityListStylingRules, d5 as resetPagingForTreeChildrenLoad, d6 as resolveAttachmentFieldPath, d7 as resolveEntityCardBadgeColorValue, d8 as resolveEntityCardHeaderValue, d9 as resolveEntityMasterFieldStylingClass, da as resolveEntityMasterRecordStylingClass, db as resolveEntityMasterStylingClass, dc as resolveEntityPluginDetailPageOrder, dd as resolveFileUploaderEditDialog, de as resolveFileUploaderEntityScope, df as resolveLookupDisplayField, dg as resolveLookupDisplayTemplate, dh as resolveLookupEntityCacheKey, di as resolveLookupEntityKey, dj as resolveMasterInterfacePropertyOrder, dk as restoreEntityListExpandedRows, dl as runEntityMiddlewarePipeline, dm as runEntityQuery, dn as runEntityStorageMiddlewarePipeline, d as saveAttachmentsThroughEntityUpdate, dp as searchResultDescriptionMiddleware, dq as searchResultDescriptionMiddlewareProvider, dr as shouldLoadEntityListStateFromStorage, ds as shouldResetEntityListStateOnRouteEntry, dt as traceEntityMasterList } from './acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-DToXUL54.mjs';
|
|
1
|
+
export { f as ATTACHMENTS_PAGE_COMPONENT_KEY, g as AXMEntityCrudService, h as AXMEntityCrudServiceImpl, i as AXPCategoryTreeService, j as AXPClientLocalPluginModule, k as AXPCreateEntityCommand, l as AXPDataSeederService, m as AXPDeleteEntityCommand, o as AXPDomainQueryEntityDefinitionLoader, q as AXPEditFileUploaderCommand, t as AXPEntityBulkPatchPerformService, u as AXPEntityCardComponent, v as AXPEntityCardFieldsResolver, x as AXPEntityCardSelectActionName, y as AXPEntityCardSkeletonComponent, z as AXPEntityCategoryTreeSelectorComponent, B as AXPEntityCategoryWidget, C as AXPEntityCategoryWidgetColumnComponent, D as AXPEntityCategoryWidgetEditComponent, E as AXPEntityCategoryWidgetViewComponent, F as AXPEntityCommandTriggerViewModel, G as AXPEntityCreateViewElementViewModel, H as AXPEntityCreateViewModelFactory, I as AXPEntityCreateViewSectionViewModel, J as AXPEntityDataProvider, K as AXPEntityDataProviderImpl, L as AXPEntityDataSelectorRowActionsService, M as AXPEntityDataSelectorService, N as AXPEntityDefinitionProviderWidget, O as AXPEntityDefinitionProviderWidgetEditComponent, A as AXPEntityDefinitionRegistryService, P as AXPEntityDeletePerformService, Q as AXPEntityDetailListViewModel, R as AXPEntityDetailPopoverComponent, S as AXPEntityDetailPopoverService, T as AXPEntityDetailViewModelFactory, U as AXPEntityDetailViewModelResolver, V as AXPEntityEventDispatcherService, W as AXPEntityFormBuilderService, X as AXPEntityLifecycleHookKeys, Y as AXPEntityListPersistenceModeDefault, Z as AXPEntityListTableService, _ as AXPEntityListToolbarService, $ as AXPEntityListViewCardFieldViewModel, a0 as AXPEntityListViewColumnViewModel, a1 as AXPEntityListViewModelFactory, a2 as AXPEntityListViewModelResolver, a3 as AXPEntityListWidget, a4 as AXPEntityListWidgetViewComponent, a5 as AXPEntityMasterCreateViewModel, a6 as AXPEntityMasterListCardSelectActionName, a7 as AXPEntityMasterListViewModel, a8 as AXPEntityMasterListViewQueryViewModel, a9 as AXPEntityMasterSingleElementViewModel, aa as AXPEntityMasterSingleViewGroupViewModel, ab as AXPEntityMasterSingleViewModel, ac as AXPEntityMasterUpdateElementViewModel, ad as AXPEntityMasterUpdateViewModel, ae as AXPEntityMasterUpdateViewModelFactory, af as AXPEntityMiddlewareSkipContext, ag as AXPEntityModule, ah as AXPEntityPreloadFiltersContainerComponent, ai as AXPEntityPreloadFiltersViewModel, aj as AXPEntityPreloadFiltersViewModelResolver, ak as AXPEntityResolver, al as AXPEntityRuntimeAccessorService, am as AXPEntityService, an as AXPEntityStorageService, ao as AXPEntityUpdateViewSectionViewModel, ap as AXPFileListComponent, aq as AXPFileUploaderLoadFilesQuery, ar as AXPFileUploaderSaveFilesCommand, as as AXPFileUploaderWidget, at as AXPFileUploaderWidgetColumnComponent, au as AXPFileUploaderWidgetEditComponent, av as AXPFileUploaderWidgetService, aw as AXPFileUploaderWidgetViewComponent, ax as AXPGetEntityDetailsQuery, ay as AXPLayoutOrderingConfigService, az as AXPLookupByKeyCacheService, aA as AXPLookupWidget, aB as AXPLookupWidgetColumnComponent, aC as AXPLookupWidgetEditComponent, aD as AXPLookupWidgetViewComponent, aE as AXPMiddlewareAbortError, aF as AXPMiddlewareEntityService, aF as AXPMiddlewareEntityStorageService, aG as AXPMultiSourceDefinitionProviderContext, aH as AXPMultiSourceDefinitionProviderService, aI as AXPMultiSourceFederatedSearchService, aJ as AXPMultiSourceSelectorComponent, aK as AXPMultiSourceSelectorService, aL as AXPMultiSourceSelectorWidget, aM as AXPMultiSourceSelectorWidgetColumnComponent, aN as AXPMultiSourceSelectorWidgetEditComponent, aO as AXPMultiSourceSelectorWidgetViewComponent, aP as AXPMultiSourceType, aQ as AXPOpenEntityDetailsCommand, aR as AXPOpenEntityListCommand, aS as AXPRelatedColumnEnrichmentService, aT as AXPRelatedColumnMetadataResolver, aU as AXPSelectorStructureWidget, aV as AXPSelectorStructureWidgetColumnComponent, aW as AXPSelectorStructureWidgetEditComponent, aX as AXPSelectorStructureWidgetViewComponent, aY as AXPShowFileUploaderPopupCommand, aZ as AXPTruncatedBreadcrumbComponent, a_ as AXPUpdateEntityCommand, a$ as AXPUpdateEntityStatusCommand, b0 as AXPViewEntityDetailsCommand, b1 as AXP_APPEARANCE_SECTION_ORDER, b2 as AXP_CATEGORY_TREE_ROOT_TITLE_I18N_KEY, b3 as AXP_CLASSIFICATION_SECTION_ORDER, b4 as AXP_CLIENT_LOCAL_DEFAULT_MAX_ITEMS, b5 as AXP_CLIENT_LOCAL_PLUGIN_NAME, b6 as AXP_DATA_SEEDER_TOKEN, b7 as AXP_ENTITY_ACTION_PLUGIN, b8 as AXP_ENTITY_CONFIG_TOKEN, b9 as AXP_ENTITY_DEFINITION_LOADER, ba as AXP_ENTITY_MIDDLEWARE, bb as AXP_ENTITY_MODIFIER, bc as AXP_ENTITY_STORAGE_MIDDLEWARE, bd as AXP_LOOKUP_FILTER_DEFAULT_OPERATOR, be as AXP_MULTI_SOURCE_DEFINITION_PROVIDER, bf as DEFAULT_COLUMN_ORDER, bg as DEFAULT_PAIR_SPAN_RULES, bh as DEFAULT_PROPERTY_ORDER, bi as DEFAULT_SECTION_ORDER, bj as ENTITY_FORM_ACTION_FIRST_STEP_CONTINUE, bk as ENTITY_LIST_LAYOUT_META, bl as ENTITY_LIST_ROUTE_CONTEXT_SESSION_KEY, bm as ENTITY_MASTER_LIST_TRACE_NS, bn as EntityBuilder, bo as EntityDataAccessor, bp as GALLERY_PAGE_COMPONENT_KEY, bq as TREE_CHILDREN_QUERY_TAKE, br as actionExists, bs as applyDataSourcePagingWithoutLoad, bt as attachmentFieldCount, e as attachmentNeedsHydration, bu as attachmentsPlugin, bv as attachmentsSemanticallyEqual, bw as axpBuildEntityListPageContextSnapshot, bx as axpCreateEntityAiToolInputDefaults, by as axpCreateEntityCommandDefinition, bz as axpDeleteEntityCommandDefinition, bA as axpOpenEntityListCommandDefinition, bB as axpRunEntityListPageContextAction, bC as axpShowFileUploaderPopupCommandDefinition, bD as axpUpdateEntityStatusCommandDefinition, bE as buildDataSourceTraceSnapshot, bF as canPersistEntityListState, bG as clientLocalPlugin, bH as cloneLayoutArrays, bI as columnOrderingMiddleware, bJ as columnOrderingMiddlewareProvider, bK as columnWidthMiddleware, bL as columnWidthMiddlewareProvider, bM as committedAttachments, bN as composeEntityMiddlewares, bO as composeEntityStorageMiddlewares, bP as computeEntityAggregates, bQ as configureEntityListColumnsSettingsMigrateDrop, bR as configureEntityListColumnsSettingsVersion, bS as createColumnOrderingMiddlewareProvider, bT as createEntityCardDisplayScope, bU as createEntityCardLogicScope, bV as createEntityMiddlewareContext, bW as createEntityStorageContext, bX as createLayoutOrderingMiddlewareProvider, bY as defaultCardLayoutMiddleware, bZ as defaultCardLayoutMiddlewareProvider, b_ as defaultMultiLanguageMiddleware, b$ as defaultMultiLanguageMiddlewareProvider, c0 as defaultSortPresetsMiddleware, c1 as defaultSortPresetsMiddlewareProvider, c2 as detectEntityChanges, c3 as dispatchEntityModifiedSideEffects, c4 as ensureHierarchicalRootFilter, c5 as ensureLayoutPropertyView, c6 as ensureLayoutSection, c7 as ensureListActions, c8 as entityCreateBridgeMiddleware, c9 as entityDeleteBridgeMiddleware, ca as entityGetOneBridgeMiddleware, cb as entityListInstanceCurrentViewPath, cc as entityListInstanceFilterPath, cd as entityListStylingRulesPath, ce as entityQueryBridgeMiddleware, cf as entityStorageCreateBridgeMiddleware, cg as entityStorageDeleteBridgeMiddleware, ch as entityStorageGetOneBridgeMiddleware, ci as entityStorageQueryBridgeMiddleware, cj as entityStorageUpdateBridgeMiddleware, ck as entityUpdateBridgeMiddleware, cl as eventDispatchMiddleware, cm as filterEntityMiddlewares, cn as filterEntityStorageMiddlewares, co as filterSortEntityRows, cp as filterTouchesParentKey, cq as findEntityListRowDataInTree, cr as fingerprintAttachmentItem, cs as fingerprintAttachments, ct as fireEntityLifecycleHook, cu as formatLookupItemDisplay, cv as formatLookupItemDisplayAsync, cw as galleryPlugin, cx as getDataSourcePageIndex, cy as getEntityListColumnsSettingsMigrateDrop, cz as getEntityListColumnsSettingsVersion, cA as getEntityListRowId, cB as getMasterInterfacePropertySortKey, cC as hasFileUploaderTitleOrDescriptionFields, cD as hydrateAttachmentFieldToFileList, cE as isAXPMiddlewareAbortError, cF as isAttachmentFieldPresentOnRow, cG as isAttachmentListEntry, cH as isAttachmentStorageRef, cI as isCategoryEntity, cJ as isCategoryFilter, cK as isFileListItem, cL as isFileUploaderEditDialogAuto, cM as isLegacyEntityDataSelectorOptions, cN as layoutOrderingMiddlewareFactory, cO as layoutOrderingMiddlewareProvider, cP as mapEntityStorageErrorToCommandResult, cQ as mapLegacyEntityDataSelectorOptions, cR as mergeEntityListViewAndPersistedFilters, cS as normalizeEntityCardHeaderDisplayValue, cT as normalizeEntityDataSelectorColumnSpecs, cU as normalizeEntityDataSelectorOptions, cV as normalizeEntityFieldToFileList, cW as normalizeEntityListPersistenceMode, cX as normalizeListPaging, p as persistedAttachments, cY as prefetchClientLocalRelated, cZ as provideEntity, c_ as provideEntityMiddlewareBridge, c$ as provideEntityRealtimeHandlers, d0 as provideEntityStorageMiddlewareBridge, d1 as provideLocalEntityCatalog, c as readLiveAttachmentValue, d2 as readPersistedEntityListInstanceCurrentView, d3 as readPersistedEntityListInstanceFilters, d4 as readPersistedEntityListStylingRules, d5 as resetPagingForTreeChildrenLoad, d6 as resolveAttachmentFieldPath, d7 as resolveEntityCardBadgeColorValue, d8 as resolveEntityCardHeaderValue, d9 as resolveEntityMasterFieldStylingClass, da as resolveEntityMasterRecordStylingClass, db as resolveEntityMasterStylingClass, dc as resolveEntityPluginDetailPageOrder, dd as resolveFileUploaderEditDialog, de as resolveFileUploaderEntityScope, df as resolveLookupDisplayField, dg as resolveLookupDisplayTemplate, dh as resolveLookupEntityCacheKey, di as resolveLookupEntityKey, dj as resolveMasterInterfacePropertyOrder, dk as restoreEntityListExpandedRows, dl as runEntityMiddlewarePipeline, dm as runEntityQuery, dn as runEntityStorageMiddlewarePipeline, d as saveAttachmentsThroughEntityUpdate, dp as searchResultDescriptionMiddleware, dq as searchResultDescriptionMiddlewareProvider, dr as shouldLoadEntityListStateFromStorage, ds as shouldResetEntityListStateOnRouteEntry, dt as traceEntityMasterList } from './acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-CA19c8sx.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';
|
|
@@ -20,7 +20,7 @@ import * as i1$8 from '@acorex/components/text-box';
|
|
|
20
20
|
import { AXTextBoxModule } from '@acorex/components/text-box';
|
|
21
21
|
import * as i1$6 from '@acorex/core/translation';
|
|
22
22
|
import { AXTranslationModule, AXTranslationService, resolveMultiLanguageString as resolveMultiLanguageString$1 } from '@acorex/core/translation';
|
|
23
|
-
import { AXP_LOCALE_MANAGEMENT_PORT, AXPFilterOperatorMiddlewareService, AXPCleanNestedFilters, ALL_DEFAULT_OPERATORS, AXPClipBoardService, AXPSettingsService, DATE_OPERATORS, BOOLEAN_OPERATORS, NUMBER_OPERATORS, STRING_OPERATORS, resolveDateFilterPresets, findManualPresetIdByOperation, applyDateFilterPreset, AXPFileStorageService, resolveStoredImageDisplayUrl, AXP_INTEGRATION_RUNTIME_PROVIDER, commandMessageTextForError, normalizePositiveNumberOption, resolveEntityRowDisplayText, resolveEntityRowDisplayTitle, downloadGraphicFromElement, printGraphicFromElement, AXPStatusDefinitionProviderService, isStoredImageFileId, AXP_ENTITY_LIST_DISPLAY_MODE_DEFAULT, AXPCommonSettings } from '@acorex-platform/framework-client/common';
|
|
23
|
+
import { AXP_LOCALE_MANAGEMENT_PORT, AXPFilterOperatorMiddlewareService, AXPCleanNestedFilters, ALL_DEFAULT_OPERATORS, AXPClipBoardService, AXPSettingsService, DATE_OPERATORS, BOOLEAN_OPERATORS, NUMBER_OPERATORS, STRING_OPERATORS, resolveDateFilterPresets, findManualPresetIdByOperation, applyDateFilterPreset, isPendingCascadeFilter, AXPFileStorageService, resolveStoredImageDisplayUrl, AXP_INTEGRATION_RUNTIME_PROVIDER, commandMessageTextForError, normalizePositiveNumberOption, resolveEntityRowDisplayText, resolveEntityRowDisplayTitle, downloadGraphicFromElement, printGraphicFromElement, AXPStatusDefinitionProviderService, isStoredImageFileId, AXP_ENTITY_LIST_DISPLAY_MODE_DEFAULT, AXPCommonSettings } from '@acorex-platform/framework-client/common';
|
|
24
24
|
import { AXPDeviceService, setupPopupFooterKeyboardShortcuts, ensureRuntimeSurfaceClass, AXPColorPaletteService, AXPDebugService, FORM_DIRTY_TRACE_NS, applyFilterArray, AXPTagService, AXPExpressionEvaluatorService, AXPHookService, AXPDataGenerator, AXPLogoComponent, AXPEntityBroadcastService, applyQueryArray, chordToKbdItemKeys, objectKeyValueTransforms } from '@acorex-platform/framework-client/core';
|
|
25
25
|
import * as i1$5 from '@angular/common';
|
|
26
26
|
import { CommonModule, AsyncPipe, NgTemplateOutlet } from '@angular/common';
|
|
@@ -8453,25 +8453,12 @@ class AXPSelectBoxWidgetEditComponent extends AXPDataListWidgetComponent {
|
|
|
8453
8453
|
...(ngDevMode ? [{ debugName: "filterMode" }] : /* istanbul ignore next */ []));
|
|
8454
8454
|
this.lookupMode = computed(() => (this.multiple() ? 'multi-select' : 'drop-down-list'), /* @ts-ignore */
|
|
8455
8455
|
...(ngDevMode ? [{ debugName: "lookupMode" }] : /* istanbul ignore next */ []));
|
|
8456
|
-
/**
|
|
8457
|
-
* True when a cascade/parent filter is configured but required values are still empty
|
|
8458
|
-
* (e.g. state select before country is chosen).
|
|
8459
|
-
* `not-in` / `nin` are not cascade — treating them as pending disables the control
|
|
8460
|
-
* (not-allowed cursor, empty list). Hide already-picked options with `excludeIds`, not `filter`.
|
|
8461
|
-
*/
|
|
8456
|
+
/** Parent cascade with an empty value. Structurally empty filters and top-level not-in stay enabled. */
|
|
8462
8457
|
this.hasPendingCascadeFilter = computed(() => {
|
|
8463
8458
|
if (this.filterMode()) {
|
|
8464
8459
|
return false;
|
|
8465
8460
|
}
|
|
8466
|
-
|
|
8467
|
-
if (!rawFilter) {
|
|
8468
|
-
return false;
|
|
8469
|
-
}
|
|
8470
|
-
const operatorType = String(rawFilter.operator?.type ?? '').toLowerCase();
|
|
8471
|
-
if (operatorType === 'not-in' || operatorType === 'nin') {
|
|
8472
|
-
return false;
|
|
8473
|
-
}
|
|
8474
|
-
return AXPCleanNestedFilters([rawFilter]).length === 0;
|
|
8461
|
+
return isPendingCascadeFilter(this.filter());
|
|
8475
8462
|
}, /* @ts-ignore */
|
|
8476
8463
|
...(ngDevMode ? [{ debugName: "hasPendingCascadeFilter" }] : /* istanbul ignore next */ []));
|
|
8477
8464
|
/** Only swap datasource when cascade parent is missing. */
|
|
@@ -19943,7 +19930,7 @@ const AXPRepeaterWidget = {
|
|
|
19943
19930
|
component: () => Promise.resolve().then(function () { return repeaterWidgetDesigner_component; }).then((c) => c.AXPRepeaterWidgetDesignerComponent),
|
|
19944
19931
|
},
|
|
19945
19932
|
column: {
|
|
19946
|
-
component: () => import('./acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-
|
|
19933
|
+
component: () => import('./acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-SHCgo4UC.mjs').then((c) => c.AXPRepeaterWidgetColumnComponent),
|
|
19947
19934
|
},
|
|
19948
19935
|
},
|
|
19949
19936
|
};
|
|
@@ -33318,7 +33305,7 @@ const AXPTextBlockWidget = {
|
|
|
33318
33305
|
component: () => Promise.resolve().then(function () { return textBlockWidgetView_component; }).then((c) => c.AXPTextBlockWidgetViewComponent),
|
|
33319
33306
|
},
|
|
33320
33307
|
designer: {
|
|
33321
|
-
component: () => import('./acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-
|
|
33308
|
+
component: () => import('./acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-BYsrp8LT.mjs').then((c) => c.AXPTextBlockWidgetDesignerComponent),
|
|
33322
33309
|
},
|
|
33323
33310
|
},
|
|
33324
33311
|
};
|
|
@@ -34102,4 +34089,4 @@ var getWidgetsForAi_query = /*#__PURE__*/Object.freeze({
|
|
|
34102
34089
|
*/
|
|
34103
34090
|
|
|
34104
34091
|
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, AXPLargeTextWidgetPrintComponent 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, AXPDataListColumnFooterComponent as a9, AXPFlexWidget as aA, AXPFlexWidgetDesignerComponent as aB, AXPFlexWidgetViewComponent as aC, AXPGetWidgetsForAIQuery as aD, AXPGreaterThanExpressionValidationWidget as aE, AXPGreaterThanValidationWidgetEditComponent as aF, AXPGridItemOptionsWidget as aG, AXPGridItemOptionsWidgetEditComponent as aH, AXPGridOptionsWidget as aI, AXPGridOptionsWidgetEditComponent as aJ, AXPImageMarkerPopupComponent as aK, AXPImageMarkerWidget as aL, AXPImageMarkerWidgetColumnComponent as aM, AXPImageMarkerWidgetEditComponent as aN, AXPImageMarkerWidgetViewComponent as aO, AXPIntegrationConnectionActionsService as aP, AXPIntegrationConnectionsPanelWidget as aQ, AXPIntegrationConnectionsPanelWidgetEditComponent as aR, AXPItemConfiguratorWidget as aS, AXPItemConfiguratorWidgetColumnComponent as aT, AXPItemConfiguratorWidgetEditComponent as aU, AXPJsonViewerWidget as aV, AXPJsonViewerWidgetEditComponent as aW, AXPJsonViewerWidgetViewComponent as aX, AXPLargeTextWidget as aY, AXPLargeTextWidgetColumnComponent as aZ, AXPLargeTextWidgetEditComponent as a_, AXPDataListWidget as aa, AXPDataListWidgetViewComponent as ab, AXPDataSourceOptionsWidget as ac, AXPDataSourceOptionsWidgetEditComponent as ad, AXPDateTimeBoxWidget as ae, AXPDateTimeBoxWidgetColumnComponent as af, AXPDateTimeBoxWidgetEditComponent as ag, AXPDateTimeBoxWidgetViewComponent as ah, AXPDirectionWidget as ai, AXPDirectionWidgetEditComponent as aj, AXPDragDropListWidget as ak, AXPEqualValidationWidget as al, AXPEqualValidationWidgetEditComponent as am, AXPFieldsetWidget as an, AXPFieldsetWidgetDesignerComponent as ao, AXPFieldsetWidgetViewComponent as ap, AXPFileViewerWidget as aq, AXPFileViewerWidgetEditComponent as ar, AXPFileViewerWidgetViewComponent as as, AXPFlexItemOptionsWidget as at, AXPFlexItemOptionsWidgetEditComponent as au, AXPFlexItemWidget as av, AXPFlexItemWidgetDesignerComponent as aw, AXPFlexItemWidgetViewComponent as ax, AXPFlexOptionsWidget as ay, AXPFlexOptionsWidgetEditComponent as az, AXPAdvancedGridItemWidget as b, AXPSelectBoxWidgetColumnComponent as b$, AXPLargeTextWidgetViewComponent as b0, AXPLessThanExpressionValidationWidget as b1, AXPLessThanValidationWidgetEditComponent as b2, AXPListStylingRulesExtendedWidget as b3, AXPListWidgetColumnComponent as b4, AXPListWidgetEditComponent as b5, AXPListWidgetViewComponent as b6, AXPLocalDataSourceSheetWidget as b7, AXPLocalDataSourceSheetWidgetEditComponent as b8, AXPMapWidgetEditComponent as b9, AXPProviderSelectWidgetColumnComponent as bA, AXPProviderSelectWidgetEditBase as bB, AXPProviderSelectWidgetViewComponent as bC, AXPQrcodeViewerService as bD, AXPQrcodeWidget as bE, AXPQrcodeWidgetColumnComponent as bF, AXPQrcodeWidgetEditComponent as bG, AXPQrcodeWidgetViewComponent as bH, AXPRatePickerWidget as bI, AXPRatePickerWidgetColumnComponent as bJ, AXPRatePickerWidgetEditComponent as bK, AXPRatePickerWidgetViewComponent as bL, AXPRegularExpressionValidationWidget as bM, AXPRegularExpressionValidationWidgetEditComponent as bN, AXPRepeaterWidget as bO, AXPRepeaterWidgetDesignerComponent as bP, AXPRepeaterWidgetEditComponent as bQ, AXPRepeaterWidgetViewComponent as bR, AXPRequiredValidationWidget as bS, AXPRequiredValidationWidgetEditComponent as bT, AXPRichTextWidget as bU, AXPRichTextWidgetColumnComponent as bV, AXPRichTextWidgetEditComponent as bW, AXPRichTextWidgetPrintComponent as bX, AXPRichTextWidgetViewComponent as bY, AXPSchedulerPickerWidget as bZ, AXPSelectBoxWidget as b_, AXPMapWidgetViewComponent as ba, AXPMaxLengthExpressionValidationWidget as bb, AXPMaxLengthValidationWidgetEditComponent as bc, AXPMinLengthExpressionValidationWidget as bd, AXPMinLengthValidationWidgetEditComponent as be, AXPNodeRendererWidget as bf, AXPNodeRendererWidgetDesignerComponent as bg, AXPNodeRendererWidgetEditComponent as bh, AXPNodeRendererWidgetViewComponent as bi, AXPNumberBoxWidget as bj, AXPNumberBoxWidgetColumnComponent as bk, AXPNumberBoxWidgetEditComponent as bl, AXPNumberBoxWidgetPrintComponent as bm, AXPNumberBoxWidgetViewComponent as bn, AXPOutcomeResultsViewerWidget as bo, AXPOutcomeResultsViewerWidgetViewComponent as bp, AXPPageWidget as bq, AXPPageWidgetViewComponent as br, AXPPasswordBoxWidget as bs, AXPPasswordBoxWidgetColumnComponent as bt, AXPPasswordBoxWidgetEditComponent as bu, AXPPasswordBoxWidgetViewComponent as bv, AXPProgressBarWidget as bw, AXPProgressBarWidgetColumnComponent as bx, AXPProgressBarWidgetEditComponent as by, AXPProgressBarWidgetViewComponent as bz, AXPAdvancedGridItemWidgetDesignerComponent as c, AXP_Flex_Box_Justify_Options as c$, AXPSelectBoxWidgetEditComponent as c0, AXPSelectBoxWidgetViewComponent as c1, AXPSelectLanguagePopup as c2, AXPSelectionListWidget as c3, AXPSelectionListWidgetColumnComponent as c4, AXPSelectionListWidgetDesignerComponent as c5, AXPSelectionListWidgetEditComponent as c6, AXPSelectionListWidgetViewComponent as c7, AXPSignatureWidget as c8, AXPSignatureWidgetColumnComponent as c9, AXPTemplateBoxWidgetEditComponent as cA, AXPTemplateBoxWidgetPrintComponent as cB, AXPTemplateBoxWidgetViewComponent as cC, AXPTextBoxWidget as cD, AXPTextBoxWidgetColumnComponent as cE, AXPTextBoxWidgetEditComponent as cF, AXPTextBoxWidgetPrintComponent as cG, AXPTextBoxWidgetViewComponent as cH, AXPToggleWidget as cI, AXPToggleWidgetColumnComponent as cJ, AXPToggleWidgetEditComponent as cK, AXPToggleWidgetPrintComponent as cL, AXPToggleWidgetViewComponent as cM, AXPWidgetFieldConfiguratorWidget as cN, AXPWidgetFieldConfiguratorWidgetColumnComponent as cO, AXPWidgetFieldConfiguratorWidgetEditComponent as cP, AXPWidgetsModule as cQ, AXP_ABSOLUTE_UNITS as cR, AXP_BORDER_RADIUS_UNITS as cS, AXP_BORDER_WIDTH_UNITS as cT, AXP_CONDITION_CLAUSE_WIDGET_NAME as cU, AXP_DATA_LIST_CMD_DELETE as cV, AXP_DATA_LIST_CMD_EDIT as cW, AXP_DATA_LIST_PENDING_DELETE_KEY as cX, AXP_DATETIME_FILTER_DEFAULT_OPERATOR as cY, AXP_Flex_Box_Align_Options as cZ, AXP_Flex_Box_Alignments as c_, AXPSignatureWidgetEditComponent as ca, AXPSignatureWidgetViewComponent as cb, AXPSpacingWidget as cc, AXPSpacingWidgetEditComponent as cd, AXPStatusChipComponent as ce, AXPStatusWidget as cf, AXPStatusWidgetColumnComponent as cg, AXPStatusWidgetEditComponent as ch, AXPStatusWidgetViewComponent as ci, AXPStepWizardWidget as cj, AXPStepWizardWidgetDesignerComponent as ck, AXPStepWizardWidgetViewComponent as cl, AXPStopwatchWidget as cm, AXPStopwatchWidgetViewComponent as cn, AXPTableItemWidget as co, AXPTableItemWidgetDesignerComponent as cp, AXPTableItemWidgetViewComponent as cq, AXPTableWidget as cr, AXPTableWidgetDesignerComponent as cs, AXPTableWidgetViewComponent as ct, AXPTagEditorWidget as cu, AXPTagEditorWidgetColumnComponent as cv, AXPTagEditorWidgetEditComponent as cw, AXPTagEditorWidgetViewComponent as cx, AXPTemplateBoxWidget as cy, AXPTemplateBoxWidgetColumnComponent as cz, AXPAdvancedGridItemWidgetViewComponent as d, AXP_Grid_Box_Align_Items_Options as d0, AXP_Grid_Box_Alignments as d1, AXP_Grid_Box_Justify_Items_Options as d2, AXP_LIST_STYLING_RULES_WIDGET_NAME as d3, AXP_LOCAL_DATA_SOURCE_SHEET_WIDGET_NAME as d4, AXP_RELATIVE_UNITS as d5, AXP_RELATIVE_UNITS_NO_PERCENT as d6, AXP_ROW_EXPR_PREFIX as d7, AXP_SELECT_COLUMN_RESOLVE_QUERY as d8, AXP_SELECT_FILTER_DEFAULT_OPERATOR 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 };
|
|
34105
|
-
//# sourceMappingURL=acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-
|
|
34092
|
+
//# sourceMappingURL=acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-1UJh0Qj4.mjs.map
|