@acorex/modules 21.0.0-next.45 → 21.0.0-next.47

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/fesm2022/{acorex-modules-ai-management-agent.entity-D6-0_Ms3.mjs → acorex-modules-ai-management-agent.entity-Bnt9zkci.mjs} +15 -1
  2. package/fesm2022/acorex-modules-ai-management-agent.entity-Bnt9zkci.mjs.map +1 -0
  3. package/fesm2022/acorex-modules-ai-management.mjs +53 -165
  4. package/fesm2022/acorex-modules-ai-management.mjs.map +1 -1
  5. package/fesm2022/{acorex-modules-common-search-popup.component-BbRyjGia.mjs → acorex-modules-common-search-popup.component-CVuE0xgM.mjs} +14 -7
  6. package/fesm2022/acorex-modules-common-search-popup.component-CVuE0xgM.mjs.map +1 -0
  7. package/fesm2022/acorex-modules-common.mjs +2 -2
  8. package/fesm2022/{acorex-modules-conversation-acorex-modules-conversation-BJU2_R9O.mjs → acorex-modules-conversation-acorex-modules-conversation-F7nQo1GU.mjs} +749 -335
  9. package/fesm2022/acorex-modules-conversation-acorex-modules-conversation-F7nQo1GU.mjs.map +1 -0
  10. package/fesm2022/acorex-modules-conversation-assist-delegated-agent-detail-popup.component-BB5Uyydt.mjs +287 -0
  11. package/fesm2022/acorex-modules-conversation-assist-delegated-agent-detail-popup.component-BB5Uyydt.mjs.map +1 -0
  12. package/fesm2022/{acorex-modules-conversation-comments-page.component-Bg6m7UTG.mjs → acorex-modules-conversation-comments-page.component-QnDogSDy.mjs} +2 -2
  13. package/fesm2022/{acorex-modules-conversation-comments-page.component-Bg6m7UTG.mjs.map → acorex-modules-conversation-comments-page.component-QnDogSDy.mjs.map} +1 -1
  14. package/fesm2022/acorex-modules-conversation-start-assist-chat.command-DRlWzEDp.mjs +45 -0
  15. package/fesm2022/acorex-modules-conversation-start-assist-chat.command-DRlWzEDp.mjs.map +1 -0
  16. package/fesm2022/acorex-modules-conversation.mjs +1 -1
  17. package/fesm2022/{acorex-modules-dashboard-management-acorex-modules-dashboard-management-D11VudG8.mjs → acorex-modules-dashboard-management-acorex-modules-dashboard-management-kk0CINL1.mjs} +5 -5
  18. package/fesm2022/acorex-modules-dashboard-management-acorex-modules-dashboard-management-kk0CINL1.mjs.map +1 -0
  19. package/fesm2022/{acorex-modules-dashboard-management-index-DB3Uh1wL.mjs → acorex-modules-dashboard-management-index-Bhm8mAON.mjs} +2 -2
  20. package/fesm2022/{acorex-modules-dashboard-management-index-DB3Uh1wL.mjs.map → acorex-modules-dashboard-management-index-Bhm8mAON.mjs.map} +1 -1
  21. package/fesm2022/acorex-modules-dashboard-management.mjs +1 -1
  22. package/fesm2022/acorex-modules-document-management.mjs +8 -5
  23. package/fesm2022/acorex-modules-document-management.mjs.map +1 -1
  24. package/fesm2022/acorex-modules-person-core.mjs +4 -0
  25. package/fesm2022/acorex-modules-person-core.mjs.map +1 -1
  26. package/fesm2022/{acorex-modules-platform-dev-tools-menu.provider-BFueKnuF.mjs → acorex-modules-platform-dev-tools-menu.provider-DDjYvQr7.mjs} +6 -2
  27. package/fesm2022/acorex-modules-platform-dev-tools-menu.provider-DDjYvQr7.mjs.map +1 -0
  28. package/fesm2022/acorex-modules-platform-dev-tools.mjs +42 -5
  29. package/fesm2022/acorex-modules-platform-dev-tools.mjs.map +1 -1
  30. package/fesm2022/acorex-modules-project-management.mjs +33 -3
  31. package/fesm2022/acorex-modules-project-management.mjs.map +1 -1
  32. package/fesm2022/acorex-modules-report-management.mjs +12 -8
  33. package/fesm2022/acorex-modules-report-management.mjs.map +1 -1
  34. package/fesm2022/{acorex-modules-task-management-acorex-modules-task-management-DDUq9FpA.mjs → acorex-modules-task-management-acorex-modules-task-management-BL2IOcx3.mjs} +63 -6
  35. package/fesm2022/acorex-modules-task-management-acorex-modules-task-management-BL2IOcx3.mjs.map +1 -0
  36. package/fesm2022/{acorex-modules-task-management-task-board.page-C6j-_aSD.mjs → acorex-modules-task-management-task-board.page-DUIHtqnr.mjs} +138 -68
  37. package/fesm2022/acorex-modules-task-management-task-board.page-DUIHtqnr.mjs.map +1 -0
  38. package/fesm2022/acorex-modules-task-management.mjs +1 -1
  39. package/fesm2022/{acorex-modules-workflow-management-activity-command-configurator-widget-edit.component-Dj6LkQeZ.mjs → acorex-modules-workflow-management-activity-command-configurator-widget-edit.component-CYyr1kQk.mjs} +3 -3
  40. package/fesm2022/{acorex-modules-workflow-management-activity-command-configurator-widget-edit.component-Dj6LkQeZ.mjs.map → acorex-modules-workflow-management-activity-command-configurator-widget-edit.component-CYyr1kQk.mjs.map} +1 -1
  41. package/fesm2022/{acorex-modules-workflow-management-index-Eh5DDK-V.mjs → acorex-modules-workflow-management-index-DC_9M9dk.mjs} +3 -3
  42. package/fesm2022/{acorex-modules-workflow-management-index-Eh5DDK-V.mjs.map → acorex-modules-workflow-management-index-DC_9M9dk.mjs.map} +1 -1
  43. package/fesm2022/{acorex-modules-workflow-management-index-V4OesZTq.mjs → acorex-modules-workflow-management-index-jin24dmb.mjs} +3 -3
  44. package/fesm2022/{acorex-modules-workflow-management-index-V4OesZTq.mjs.map → acorex-modules-workflow-management-index-jin24dmb.mjs.map} +1 -1
  45. package/fesm2022/{acorex-modules-workflow-management-workflow-instance.entity-B_V3uMSI.mjs → acorex-modules-workflow-management-workflow-instance.entity-BnKT3Wgh.mjs} +2 -2
  46. package/fesm2022/{acorex-modules-workflow-management-workflow-instance.entity-B_V3uMSI.mjs.map → acorex-modules-workflow-management-workflow-instance.entity-BnKT3Wgh.mjs.map} +1 -1
  47. package/fesm2022/acorex-modules-workflow-management.mjs +11 -20
  48. package/fesm2022/acorex-modules-workflow-management.mjs.map +1 -1
  49. package/package.json +2 -2
  50. package/types/acorex-modules-ai-management.d.ts +19 -22
  51. package/types/acorex-modules-conversation.d.ts +31 -39
  52. package/types/acorex-modules-dashboard-management.d.ts +2 -2
  53. package/types/acorex-modules-platform-dev-tools.d.ts +16 -2
  54. package/types/acorex-modules-report-management.d.ts +8 -1
  55. package/types/acorex-modules-task-management.d.ts +26 -1
  56. package/types/acorex-modules-workflow-management.d.ts +2 -3
  57. package/fesm2022/acorex-modules-ai-management-agent.entity-D6-0_Ms3.mjs.map +0 -1
  58. package/fesm2022/acorex-modules-common-search-popup.component-BbRyjGia.mjs.map +0 -1
  59. package/fesm2022/acorex-modules-conversation-acorex-modules-conversation-BJU2_R9O.mjs.map +0 -1
  60. package/fesm2022/acorex-modules-conversation-assist-delegated-agent-detail-popup.component-DX2JPckF.mjs +0 -324
  61. package/fesm2022/acorex-modules-conversation-assist-delegated-agent-detail-popup.component-DX2JPckF.mjs.map +0 -1
  62. package/fesm2022/acorex-modules-dashboard-management-acorex-modules-dashboard-management-D11VudG8.mjs.map +0 -1
  63. package/fesm2022/acorex-modules-platform-dev-tools-menu.provider-BFueKnuF.mjs.map +0 -1
  64. package/fesm2022/acorex-modules-task-management-acorex-modules-task-management-DDUq9FpA.mjs.map +0 -1
  65. package/fesm2022/acorex-modules-task-management-task-board.page-C6j-_aSD.mjs.map +0 -1
  66. package/fesm2022/acorex-modules-workflow-management-workflow-task-popover.component-l37iXJIY.mjs +0 -362
  67. package/fesm2022/acorex-modules-workflow-management-workflow-task-popover.component-l37iXJIY.mjs.map +0 -1
@@ -1,2 +1,2 @@
1
- export { e as AXMPermissionsKeys, f as AXMSearchCommandProvider, g as AXMSettingProvider, h as AXMTaskManagementEntityProvider, i as AXMTaskManagementMenuProvider, j as AXMTaskManagementModule, k as AXPTaskBoardModule, d as AXPTaskBoardService, l as AXPTaskBoardShortcut, m as AXPTaskBoardShortcutViewComponent, o as AXPTaskBoardWidget, p as AXPTaskBoardWidgetViewComponent, q as AXPTaskPopoverComponent, r as AXPTaskTypeDataSourceDefinition, s as AXPWorkflowTaskProvider, t as AXP_TASK_MANAGEMENT_DASHBOARD_SUB_BOARD, u as AXP_TASK_MANAGEMENT_DASHBOARD_SUB_SHORTCUT, v as AXP_TASK_MANAGEMENT_DASHBOARD_WIDGET_CATEGORY, w as AXP_WORKFLOW_TASK_PROVIDER, R as RootConfig, x as taskAssignmentFactory, y as taskChecklistItemFactory, z as taskContextFactory, B as taskDependencyFactory, C as taskFactory, D as taskStatusFactory, E as taskTemplateFactory, F as taskTypeFactory, G as timeLogFactory } from './acorex-modules-task-management-acorex-modules-task-management-DDUq9FpA.mjs';
1
+ export { e as AXMPermissionsKeys, f as AXMSearchCommandProvider, g as AXMSettingProvider, h as AXMTaskManagementEntityProvider, i as AXMTaskManagementMenuProvider, j as AXMTaskManagementModule, k as AXM_TASK_BOARD_UNASSIGNED_ASSIGNEE_ID, l as AXM_TASK_VIEW_ALL_PERMISSION, m as AXPTaskBoardModule, d as AXPTaskBoardService, o as AXPTaskBoardShortcut, p as AXPTaskBoardShortcutViewComponent, q as AXPTaskBoardWidget, r as AXPTaskBoardWidgetViewComponent, s as AXPTaskPopoverComponent, t as AXPTaskTypeDataSourceDefinition, u as AXPWorkflowTaskProvider, v as AXP_TASK_MANAGEMENT_DASHBOARD_SUB_BOARD, w as AXP_TASK_MANAGEMENT_DASHBOARD_SUB_SHORTCUT, x as AXP_TASK_MANAGEMENT_DASHBOARD_WIDGET_CATEGORY, y as AXP_WORKFLOW_TASK_PROVIDER, R as RootConfig, c as canViewAllTaskAssignees, z as isTaskBoardUnassignedAssigneeId, B as matchesTaskBoardAssigneeFilter, C as matchesTaskBoardAssigneeUserIdsFilter, n as normalizeTaskBoardAssigneeIds, D as taskAssignmentFactory, E as taskChecklistItemFactory, F as taskContextFactory, G as taskDependencyFactory, H as taskFactory, I as taskStatusFactory, J as taskTemplateFactory, K as taskTypeFactory, L as timeLogFactory } from './acorex-modules-task-management-acorex-modules-task-management-BL2IOcx3.mjs';
2
2
  //# sourceMappingURL=acorex-modules-task-management.mjs.map
@@ -11,7 +11,7 @@ import * as i4 from '@acorex/components/search-box';
11
11
  import { AXSearchBoxModule } from '@acorex/components/search-box';
12
12
  import * as i3 from '@acorex/components/select-box';
13
13
  import { AXSelectBoxModule } from '@acorex/components/select-box';
14
- import * as i5$1 from '@acorex/core/translation';
14
+ import * as i7 from '@acorex/core/translation';
15
15
  import { AXTranslationService, AXTranslationModule } from '@acorex/core/translation';
16
16
  import { AXPLayoutBuilderService } from '@acorex/platform/layout/builder';
17
17
  import { AXPActivityDefinitionService } from '@acorex/platform/workflow';
@@ -205,7 +205,7 @@ class AXMActivityCommandConfiguratorComponent {
205
205
  }
206
206
  }
207
207
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMActivityCommandConfiguratorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
208
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXMActivityCommandConfiguratorComponent, isStandalone: true, selector: "axm-activity-command-configurator", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, viewQueries: [{ propertyName: "activitySelectBox", first: true, predicate: ["activitySelectBox"], descendants: true, isSignal: true }], ngImport: i0, template: "<!-- Activity Selector & Info Container -->\n<div class=\"__activity-container\">\n <!-- Edit Mode: Show Select Box -->\n @if (isEditMode()) {\n <div class=\"__activity-selector\">\n <ax-select-box\n #activitySelectBox\n [ngModel]=\"selectedCommandKey()\"\n [dataSource]=\"activityItems()\"\n [placeholder]=\"('@general:actions.select.title' | translate | async) ?? ''\"\n [readonly]=\"readonly()\"\n valueField=\"value\"\n textField=\"text\"\n [itemTemplate]=\"itemTemplate\"\n [selectedTemplate]=\"selectedTemplate\"\n (onValueChanged)=\"onActivityChange($event)\"\n (onClosed)=\"exitEditMode()\"\n >\n <ax-search-box></ax-search-box>\n <ax-clear-button></ax-clear-button>\n </ax-select-box>\n </div>\n }\n\n <!-- View Mode: Show Activity Info -->\n @if (!isEditMode()) {\n @if (selectedCommandKey() && selectedActivity(); as activity) {\n <div class=\"__activity-info\">\n <div class=\"__activity-header\" [class.__editable]=\"!readonly()\" (click)=\"enterEditMode()\">\n <div>\n @if (activity.icon) {\n <i [class]=\"activity.icon\"></i>\n }\n <div>\n <span>{{ selectedActivityViewTitle() }}</span>\n @if (selectedActivityViewDescription()) {\n <p>{{ selectedActivityViewDescription() }}</p>\n }\n </div>\n </div>\n\n <div class=\"__action-buttons\" (click)=\"$event.stopPropagation()\">\n @if (canConfigure()) {\n <ax-button\n [disabled]=\"readonly()\"\n [title]=\"('@general:actions.configure.title' | translate | async) ?? ''\"\n look=\"blank\"\n size=\"sm\"\n (onClick)=\"openConfigure()\"\n >\n <i class=\"fa-solid fa-cog\"></i>\n </ax-button>\n }\n </div>\n </div>\n </div>\n } @else {\n <!-- Empty State (Clickable to Edit) -->\n <div class=\"__activity-empty\" [class.__editable]=\"!readonly()\" (click)=\"enterEditMode()\">\n <i class=\"fa-light fa-bolt\"></i>\n <span>\n {{ ('@workflow-management:automations.entities.automation.fields.command.placeholder' | translate | async) ?? 'Select activity' }}\n </span>\n </div>\n }\n }\n\n\n <!-- Item Template (Dropdown Items) -->\n <ng-template #itemTemplate let-context>\n @let item = context.data;\n <div class=\"__item-template ax-flex ax-w-full ax-items-center ax-gap-3 ax-p-2\">\n @if (item.icon) {\n <i [class]=\"item.icon + ' ax-text-base ax-w-5 ax-text-center'\"></i>\n }\n <div class=\"ax-flex ax-items-center ax-gap-2 ax-flex-1 ax-min-w-0\">\n <div class=\"ax-text-sm ax-font-medium\">{{ item.text }}</div>\n @if (item.description) {\n <div class=\"ax-text-xs ax-text-neutral-600\">{{ item.description }}</div>\n }\n </div>\n </div>\n </ng-template>\n\n <!-- Selected Template -->\n <ng-template #selectedTemplate let-item>\n <div class=\"__selected-template\">\n @if (item?.data?.icon) {\n <i [class]=\"item.data.icon\"></i>\n }\n <span>{{ item?.data?.text }}</span>\n </div>\n </ng-template>\n</div>\n", styles: ["axm-activity-command-configurator{display:flex;flex-direction:column}.__activity-container{border-radius:.375rem;border-width:1px;padding:1rem;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface));transition:all .2s ease}.__activity-selector{display:flex;flex-direction:column}.__activity-selector ax-select-box{width:100%}.__activity-info{display:flex;flex-direction:column;gap:.75rem}.__activity-info .__activity-header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.375rem .5rem}.__activity-info .__activity-header.__editable{cursor:pointer}.__activity-info .__activity-header.__editable:hover{border-radius:.375rem;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-lighter-surface),var(--tw-bg-opacity, 1))}.__activity-info .__activity-header:not(.__editable){cursor:not-allowed}.__activity-info .__activity-header>div:first-child{display:flex;flex:1 1 0%;align-items:center;gap:.5rem}.__activity-info .__activity-header>div:first-child i{font-size:1rem;line-height:1.5rem;flex-shrink:0}.__activity-info .__activity-header>div:first-child>div{display:flex;flex:1 1 0%;flex-direction:column;gap:.125rem}.__activity-info .__activity-header>div:first-child>div>span{font-size:.875rem;line-height:1.25rem;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.__activity-info .__activity-header>div:first-child>div>p{margin:0;font-size:.75rem;line-height:1rem;line-height:1.625;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.__activity-info .__action-buttons{display:flex;align-items:center;gap:.25rem;flex-shrink:0}.__activity-empty{display:flex;align-items:center;gap:.5rem;padding:.5rem}.__activity-empty.__editable{cursor:pointer}.__activity-empty.__editable:hover{border-radius:.375rem;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-lighter-surface),var(--tw-bg-opacity, 1))}.__activity-empty:not(.__editable){cursor:not-allowed}.__activity-empty>i{font-size:1rem;line-height:1.5rem;--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1))}.__activity-empty>span{font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.__item-template>i{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center}.__item-template>div>div:first-child{flex-shrink:0}.__item-template>div>div:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.__selected-template{display:flex;align-items:center;gap:.5rem}.__selected-template>i{font-size:.875rem;line-height:1.25rem}.__selected-template>span{font-size:.875rem;line-height:1.25rem;font-weight:500}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXFormModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXSelectBoxModule }, { kind: "component", type: i3.AXSelectBoxComponent, selector: "ax-select-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "minValue", "maxValue", "value", "state", "name", "id", "type", "look", "multiple", "valueField", "textField", "disabledField", "textTemplate", "selectedItems", "isItemTruncated", "showItemTooltip", "itemHeight", "maxVisibleItems", "dataSource", "minRecordsForSearch", "caption", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "dropdownWidth", "searchBoxAutoFocus"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onOpened", "onClosed", "onItemSelected", "onItemClick"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXSearchBoxModule }, { kind: "component", type: i4.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "class", "delayTime", "type", "autoSearch"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i5.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i5$1.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
208
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXMActivityCommandConfiguratorComponent, isStandalone: true, selector: "axm-activity-command-configurator", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, viewQueries: [{ propertyName: "activitySelectBox", first: true, predicate: ["activitySelectBox"], descendants: true, isSignal: true }], ngImport: i0, template: "<!-- Activity Selector & Info Container -->\n<div class=\"__activity-container\">\n <!-- Edit Mode: Show Select Box -->\n @if (isEditMode()) {\n <div class=\"__activity-selector\">\n <ax-select-box\n #activitySelectBox\n [ngModel]=\"selectedCommandKey()\"\n [dataSource]=\"activityItems()\"\n [placeholder]=\"('@general:actions.select.title' | translate | async) ?? ''\"\n [readonly]=\"readonly()\"\n valueField=\"value\"\n textField=\"text\"\n [itemTemplate]=\"itemTemplate\"\n [selectedTemplate]=\"selectedTemplate\"\n (onValueChanged)=\"onActivityChange($event)\"\n (onClosed)=\"exitEditMode()\"\n >\n <ax-search-box></ax-search-box>\n <ax-clear-button></ax-clear-button>\n </ax-select-box>\n </div>\n }\n\n <!-- View Mode: Show Activity Info -->\n @if (!isEditMode()) {\n @if (selectedCommandKey() && selectedActivity(); as activity) {\n <div class=\"__activity-info\">\n <div class=\"__activity-header\" [class.__editable]=\"!readonly()\" (click)=\"enterEditMode()\">\n <div>\n @if (activity.icon) {\n <i [class]=\"activity.icon\"></i>\n }\n <div>\n <span>{{ selectedActivityViewTitle() }}</span>\n @if (selectedActivityViewDescription()) {\n <p>{{ selectedActivityViewDescription() }}</p>\n }\n </div>\n </div>\n\n <div class=\"__action-buttons\" (click)=\"$event.stopPropagation()\">\n @if (canConfigure()) {\n <ax-button\n [disabled]=\"readonly()\"\n [title]=\"('@general:actions.configure.title' | translate | async) ?? ''\"\n look=\"blank\"\n size=\"sm\"\n (onClick)=\"openConfigure()\"\n >\n <i class=\"fa-solid fa-cog\"></i>\n </ax-button>\n }\n </div>\n </div>\n </div>\n } @else {\n <!-- Empty State (Clickable to Edit) -->\n <div class=\"__activity-empty\" [class.__editable]=\"!readonly()\" (click)=\"enterEditMode()\">\n <i class=\"fa-light fa-bolt\"></i>\n <span>\n {{ ('@workflow-management:automations.entities.automation.fields.command.placeholder' | translate | async) ?? 'Select activity' }}\n </span>\n </div>\n }\n }\n\n\n <!-- Item Template (Dropdown Items) -->\n <ng-template #itemTemplate let-context>\n @let item = context.data;\n <div class=\"__item-template ax-flex ax-w-full ax-items-center ax-gap-3 ax-p-2\">\n @if (item.icon) {\n <i [class]=\"item.icon + ' ax-text-base ax-w-5 ax-text-center'\"></i>\n }\n <div class=\"ax-flex ax-items-center ax-gap-2 ax-flex-1 ax-min-w-0\">\n <div class=\"ax-text-sm ax-font-medium\">{{ item.text }}</div>\n @if (item.description) {\n <div class=\"ax-text-xs ax-text-neutral-600\">{{ item.description }}</div>\n }\n </div>\n </div>\n </ng-template>\n\n <!-- Selected Template -->\n <ng-template #selectedTemplate let-item>\n <div class=\"__selected-template\">\n @if (item?.data?.icon) {\n <i [class]=\"item.data.icon\"></i>\n }\n <span>{{ item?.data?.text }}</span>\n </div>\n </ng-template>\n</div>\n", styles: ["axm-activity-command-configurator{display:flex;flex-direction:column}.__activity-container{border-radius:.375rem;border-width:1px;padding:1rem;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface));transition:all .2s ease}.__activity-selector{display:flex;flex-direction:column}.__activity-selector ax-select-box{width:100%}.__activity-info{display:flex;flex-direction:column;gap:.75rem}.__activity-info .__activity-header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.375rem .5rem}.__activity-info .__activity-header.__editable{cursor:pointer}.__activity-info .__activity-header.__editable:hover{border-radius:.375rem;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-lighter-surface),var(--tw-bg-opacity, 1))}.__activity-info .__activity-header:not(.__editable){cursor:not-allowed}.__activity-info .__activity-header>div:first-child{display:flex;flex:1 1 0%;align-items:center;gap:.5rem}.__activity-info .__activity-header>div:first-child i{font-size:1rem;line-height:1.5rem;flex-shrink:0}.__activity-info .__activity-header>div:first-child>div{display:flex;flex:1 1 0%;flex-direction:column;gap:.125rem}.__activity-info .__activity-header>div:first-child>div>span{font-size:.875rem;line-height:1.25rem;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.__activity-info .__activity-header>div:first-child>div>p{margin:0;font-size:.75rem;line-height:1rem;line-height:1.625;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.__activity-info .__action-buttons{display:flex;align-items:center;gap:.25rem;flex-shrink:0}.__activity-empty{display:flex;align-items:center;gap:.5rem;padding:.5rem}.__activity-empty.__editable{cursor:pointer}.__activity-empty.__editable:hover{border-radius:.375rem;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-lighter-surface),var(--tw-bg-opacity, 1))}.__activity-empty:not(.__editable){cursor:not-allowed}.__activity-empty>i{font-size:1rem;line-height:1.5rem;--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1))}.__activity-empty>span{font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.__item-template>i{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center}.__item-template>div>div:first-child{flex-shrink:0}.__item-template>div>div:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.__selected-template{display:flex;align-items:center;gap:.5rem}.__selected-template>i{font-size:.875rem;line-height:1.25rem}.__selected-template>span{font-size:.875rem;line-height:1.25rem;font-weight:500}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXFormModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXSelectBoxModule }, { kind: "component", type: i3.AXSelectBoxComponent, selector: "ax-select-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "minValue", "maxValue", "value", "state", "name", "id", "type", "look", "multiple", "valueField", "textField", "disabledField", "textTemplate", "selectedItems", "isItemTruncated", "showItemTooltip", "itemHeight", "maxVisibleItems", "dataSource", "minRecordsForSearch", "caption", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "dropdownWidth", "searchBoxAutoFocus"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onOpened", "onClosed", "onItemSelected", "onItemClick"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXSearchBoxModule }, { kind: "component", type: i4.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "class", "delayTime", "type", "autoSearch"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i5.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
209
209
  }
210
210
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMActivityCommandConfiguratorComponent, decorators: [{
211
211
  type: Component,
@@ -305,4 +305,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
305
305
  }], propDecorators: { valueModel: [{ type: i0.Input, args: [{ isSignal: true, alias: "valueModel", required: false }] }, { type: i0.Output, args: ["valueModelChange"] }] } });
306
306
 
307
307
  export { AXMActivityCommandConfiguratorWidgetEditComponent };
308
- //# sourceMappingURL=acorex-modules-workflow-management-activity-command-configurator-widget-edit.component-Dj6LkQeZ.mjs.map
308
+ //# sourceMappingURL=acorex-modules-workflow-management-activity-command-configurator-widget-edit.component-CYyr1kQk.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-modules-workflow-management-activity-command-configurator-widget-edit.component-Dj6LkQeZ.mjs","sources":["../../../../libs/modules/workflow-management/src/lib/features/activity-command-configurator/activity-command-configurator.component.ts","../../../../libs/modules/workflow-management/src/lib/features/activity-command-configurator/activity-command-configurator.component.html","../../../../libs/modules/workflow-management/src/lib/features/activity-command-configurator/activity-command-configurator-widget-edit.component.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXSelectBoxComponent, AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport {\n AXPDynamicFormDefinition,\n AXPDynamicFormFieldDefinition,\n AXPDynamicFormGroupDefinition,\n AXPLayoutBuilderService,\n} from '@acorex/platform/layout/builder';\nimport { AXPActivityDefinition, AXPActivityDefinitionService } from '@acorex/platform/workflow';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n model,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\n//#endregion\n\nexport interface ActivityCommandValue {\n commandKey: string;\n params?: Record<string, unknown>;\n}\n\n//#region ---- Component ----\n\n/**\n * Activity command configurator component.\n * Mirrors AXPWidgetFieldConfiguratorComponent pattern: select activity from list,\n * show activity info in view mode, configure button opens dynamic form for activity inputs.\n */\n@Component({\n selector: 'axm-activity-command-configurator',\n templateUrl: './activity-command-configurator.component.html',\n styleUrl: './activity-command-configurator.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n CommonModule,\n FormsModule,\n AXFormModule,\n AXButtonModule,\n AXSelectBoxModule,\n AXTranslationModule,\n AXSearchBoxModule,\n AXDecoratorModule,\n ],\n})\nexport class AXMActivityCommandConfiguratorComponent {\n //#region ---- Inputs ----\n\n value = model<ActivityCommandValue>({ commandKey: '', params: {} });\n\n label = input<string>('@workflow-management:automations.entities.automation.fields.command.title');\n\n readonly = input<boolean>(false);\n\n //#endregion\n\n //#region ---- Services & Dependencies ----\n\n private readonly activityService = inject(AXPActivityDefinitionService);\n private readonly layoutBuilder = inject(AXPLayoutBuilderService);\n private readonly multiLanguageResolver = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- Class Properties ----\n\n protected selectedCommandKey = signal<string>('');\n\n protected isEditMode = signal<boolean>(false);\n\n protected activities = signal<AXPActivityDefinition[]>([]);\n\n protected activityItems = computed(() =>\n this.activities()\n .map((a) => ({\n value: a.name,\n text: this.multiLanguageResolver.resolve(a.title) || a.name,\n description: this.multiLanguageResolver.resolve(a.description),\n icon: a.icon,\n }))\n .sort((a, b) => a.text.localeCompare(b.text)),\n );\n\n protected selectedActivity = computed(() => {\n const key = this.selectedCommandKey();\n if (!key) return null;\n return this.activities().find((a) => a.name === key) ?? null;\n });\n\n /** Resolved title for view mode (activity definition may store multi-language maps). */\n protected selectedActivityViewTitle = computed(() => {\n const a = this.selectedActivity();\n if (!a) return '';\n return this.multiLanguageResolver.resolve(a.title) || a.name;\n });\n\n /** Resolved description for view mode. */\n protected selectedActivityViewDescription = computed(() => {\n const a = this.selectedActivity();\n if (!a) return '';\n return this.multiLanguageResolver.resolve(a.description);\n });\n\n protected canConfigure = computed(() => {\n const activity = this.selectedActivity();\n return !!activity?.inputs && activity.inputs.length > 0;\n });\n\n protected activitySelectBox = viewChild<AXSelectBoxComponent>('activitySelectBox');\n\n //#endregion\n\n //#region ---- Lifecycle ----\n\n constructor() {\n this.loadActivities();\n\n effect(() => {\n const v = this.value();\n const key = v?.commandKey ?? '';\n if (this.selectedCommandKey() !== key) {\n this.selectedCommandKey.set(key);\n if (key) {\n this.isEditMode.set(false);\n } else {\n this.isEditMode.set(true);\n }\n }\n });\n\n effect(() => {\n if (!this.isEditMode()) return;\n const select = this.activitySelectBox();\n if (select) {\n setTimeout(() => {\n select.focus?.();\n (select as { open?: () => void }).open?.();\n }, 0);\n }\n });\n }\n\n //#endregion\n\n //#region ---- Event Handlers ----\n\n protected enterEditMode(): void {\n if (this.readonly()) return;\n this.isEditMode.set(true);\n }\n\n protected exitEditMode(): void {\n this.isEditMode.set(false);\n }\n\n protected onActivityChange(event: { value?: string | null }): void {\n if (this.readonly()) return;\n const newKey = (event?.value ?? '') as string;\n\n if (this.selectedCommandKey() === newKey) return;\n\n this.selectedCommandKey.set(newKey);\n\n if (!newKey) {\n this.value.set({ commandKey: '', params: {} });\n this.isEditMode.set(true);\n return;\n }\n\n const current = this.value();\n this.value.set({\n commandKey: newKey,\n params: current?.commandKey === newKey ? (current.params ?? {}) : {},\n });\n this.isEditMode.set(false);\n }\n\n protected openConfigure(): void {\n if (!this.canConfigure() || this.readonly()) return;\n\n const activity = this.selectedActivity();\n if (!activity?.inputs?.length) return;\n\n let params: Record<string, unknown> = {};\n const current = this.value();\n if (current?.params && Object.keys(current.params).length > 0) {\n params = { ...current.params };\n }\n\n const groups: AXPDynamicFormGroupDefinition[] = [\n {\n name: 'inputs',\n title: this.multiLanguageResolver.resolve(activity.title) || activity.name,\n description: this.multiLanguageResolver.resolve(activity.description),\n parameters: activity.inputs.map<AXPDynamicFormFieldDefinition>((inputDef) => ({\n path: `params.${inputDef.name}`,\n title: inputDef.title,\n description: inputDef.description,\n validationRules: inputDef.validations,\n widget: {\n path: `params.${inputDef.name}`,\n type: inputDef.interface.type,\n options: { ...(inputDef.interface.options ?? {}) },\n },\n })),\n },\n ];\n\n const formDefinition: AXPDynamicFormDefinition = { groups };\n\n this.layoutBuilder\n .create()\n .dialog<{ success: boolean }>((dialog) => {\n dialog\n .setTitle(this.multiLanguageResolver.resolve(activity.title) || activity.name || 'Configure Activity')\n .setSize('md')\n .setCloseButton(true)\n .setContext({ params })\n .content((layout) => {\n layout.mode('edit');\n layout.dynamicForm(formDefinition);\n })\n .setActions((actions) => {\n actions.cancel('@general:actions.cancel.title').submit('@general:actions.save.title');\n })\n .onAction((dialogRef) => {\n const ctx = dialogRef.context() as { params?: Record<string, unknown> } | null;\n const action = dialogRef.action();\n if (!ctx || action === 'cancel') return { success: false };\n\n const updatedParams = ctx.params ?? {};\n this.value.set({\n commandKey: this.selectedCommandKey(),\n params: updatedParams,\n });\n return { success: true };\n });\n })\n .show();\n }\n\n //#endregion\n\n //#region ---- Private Methods ----\n\n private async loadActivities(): Promise<void> {\n try {\n const list = await this.activityService.getAllActivities();\n this.activities.set(list ?? []);\n } catch {\n this.activities.set([]);\n }\n }\n\n //#endregion\n}\n\n//#endregion\n","<!-- Activity Selector & Info Container -->\n<div class=\"__activity-container\">\n <!-- Edit Mode: Show Select Box -->\n @if (isEditMode()) {\n <div class=\"__activity-selector\">\n <ax-select-box\n #activitySelectBox\n [ngModel]=\"selectedCommandKey()\"\n [dataSource]=\"activityItems()\"\n [placeholder]=\"('@general:actions.select.title' | translate | async) ?? ''\"\n [readonly]=\"readonly()\"\n valueField=\"value\"\n textField=\"text\"\n [itemTemplate]=\"itemTemplate\"\n [selectedTemplate]=\"selectedTemplate\"\n (onValueChanged)=\"onActivityChange($event)\"\n (onClosed)=\"exitEditMode()\"\n >\n <ax-search-box></ax-search-box>\n <ax-clear-button></ax-clear-button>\n </ax-select-box>\n </div>\n }\n\n <!-- View Mode: Show Activity Info -->\n @if (!isEditMode()) {\n @if (selectedCommandKey() && selectedActivity(); as activity) {\n <div class=\"__activity-info\">\n <div class=\"__activity-header\" [class.__editable]=\"!readonly()\" (click)=\"enterEditMode()\">\n <div>\n @if (activity.icon) {\n <i [class]=\"activity.icon\"></i>\n }\n <div>\n <span>{{ selectedActivityViewTitle() }}</span>\n @if (selectedActivityViewDescription()) {\n <p>{{ selectedActivityViewDescription() }}</p>\n }\n </div>\n </div>\n\n <div class=\"__action-buttons\" (click)=\"$event.stopPropagation()\">\n @if (canConfigure()) {\n <ax-button\n [disabled]=\"readonly()\"\n [title]=\"('@general:actions.configure.title' | translate | async) ?? ''\"\n look=\"blank\"\n size=\"sm\"\n (onClick)=\"openConfigure()\"\n >\n <i class=\"fa-solid fa-cog\"></i>\n </ax-button>\n }\n </div>\n </div>\n </div>\n } @else {\n <!-- Empty State (Clickable to Edit) -->\n <div class=\"__activity-empty\" [class.__editable]=\"!readonly()\" (click)=\"enterEditMode()\">\n <i class=\"fa-light fa-bolt\"></i>\n <span>\n {{ ('@workflow-management:automations.entities.automation.fields.command.placeholder' | translate | async) ?? 'Select activity' }}\n </span>\n </div>\n }\n }\n\n\n <!-- Item Template (Dropdown Items) -->\n <ng-template #itemTemplate let-context>\n @let item = context.data;\n <div class=\"__item-template ax-flex ax-w-full ax-items-center ax-gap-3 ax-p-2\">\n @if (item.icon) {\n <i [class]=\"item.icon + ' ax-text-base ax-w-5 ax-text-center'\"></i>\n }\n <div class=\"ax-flex ax-items-center ax-gap-2 ax-flex-1 ax-min-w-0\">\n <div class=\"ax-text-sm ax-font-medium\">{{ item.text }}</div>\n @if (item.description) {\n <div class=\"ax-text-xs ax-text-neutral-600\">{{ item.description }}</div>\n }\n </div>\n </div>\n </ng-template>\n\n <!-- Selected Template -->\n <ng-template #selectedTemplate let-item>\n <div class=\"__selected-template\">\n @if (item?.data?.icon) {\n <i [class]=\"item.data.icon\"></i>\n }\n <span>{{ item?.data?.text }}</span>\n </div>\n </ng-template>\n</div>\n","//#region ---- Imports ----\n\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, computed, effect, model, signal, untracked } from '@angular/core';\nimport { isEqual } from 'lodash-es';\nimport {\n AXMActivityCommandConfiguratorComponent,\n ActivityCommandValue,\n} from './activity-command-configurator.component';\n\n//#endregion\n\n//#region ---- Component ----\n\n/**\n * Widget edit component for activity-command-configurator.\n * Mirrors AXPWidgetFieldConfiguratorWidgetEditComponent: wraps the configurator,\n * syncs value <-> model via effects, uses isInitialized to avoid premature render.\n */\n@Component({\n selector: 'axm-activity-command-configurator-widget-edit',\n template: `\n @if (isInitialized()) {\n <axm-activity-command-configurator\n [(value)]=\"valueModel\"\n [label]=\"label()\"\n [readonly]=\"readonly()\"\n ></axm-activity-command-configurator>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXMActivityCommandConfiguratorComponent],\n})\nexport class AXMActivityCommandConfiguratorWidgetEditComponent extends AXPValueWidgetComponent<ActivityCommandValue> {\n //#region ---- Computed Properties ----\n\n protected readonly readonly = computed<boolean>(() => (this.options()['readonly'] as boolean) ?? false);\n protected label = computed<string>(() => (this.options()['label'] as string) || 'Activity');\n\n //#endregion\n\n //#region ---- State Signals ----\n\n protected isInitialized = signal(false);\n\n //#endregion\n\n //#region ---- Models ----\n\n protected valueModel = model<ActivityCommandValue>({ commandKey: '', params: {} });\n\n //#endregion\n\n //#region ---- Effects ----\n\n private syncValueToConfigurator = effect(() => {\n const value = this.getValue();\n\n const normalized: ActivityCommandValue =\n value && typeof value === 'object' && 'commandKey' in value\n ? { commandKey: (value as ActivityCommandValue).commandKey ?? '', params: (value as ActivityCommandValue).params ?? {} }\n : { commandKey: '', params: {} };\n\n const currentModel = untracked(() => this.valueModel());\n\n if (!isEqual(normalized, currentModel)) {\n untracked(() => {\n this.valueModel.set(normalized);\n });\n }\n\n untracked(() => {\n if (!this.isInitialized()) {\n this.isInitialized.set(true);\n }\n });\n });\n\n private syncConfiguratorToValue = effect(() => {\n const modelValue = this.valueModel();\n\n if (!untracked(() => this.isInitialized())) return;\n\n const currentValue = untracked(() => this.getValue());\n const normalizedCurrent: ActivityCommandValue =\n currentValue && typeof currentValue === 'object' && 'commandKey' in currentValue\n ? { commandKey: (currentValue as ActivityCommandValue).commandKey ?? '', params: (currentValue as ActivityCommandValue).params ?? {} }\n : { commandKey: '', params: {} };\n\n if (!isEqual(modelValue, normalizedCurrent)) {\n untracked(() => {\n this.setValue(modelValue ?? { commandKey: '', params: {} });\n });\n }\n });\n\n //#endregion\n}\n\n//#endregion\n"],"names":["i6","i7"],"mappings":"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"}
1
+ {"version":3,"file":"acorex-modules-workflow-management-activity-command-configurator-widget-edit.component-CYyr1kQk.mjs","sources":["../../../../libs/modules/workflow-management/src/lib/features/activity-command-configurator/activity-command-configurator.component.ts","../../../../libs/modules/workflow-management/src/lib/features/activity-command-configurator/activity-command-configurator.component.html","../../../../libs/modules/workflow-management/src/lib/features/activity-command-configurator/activity-command-configurator-widget-edit.component.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXSelectBoxComponent, AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport {\n AXPDynamicFormDefinition,\n AXPDynamicFormFieldDefinition,\n AXPDynamicFormGroupDefinition,\n AXPLayoutBuilderService,\n} from '@acorex/platform/layout/builder';\nimport { AXPActivityDefinition, AXPActivityDefinitionService } from '@acorex/platform/workflow';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n model,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\n//#endregion\n\nexport interface ActivityCommandValue {\n commandKey: string;\n params?: Record<string, unknown>;\n}\n\n//#region ---- Component ----\n\n/**\n * Activity command configurator component.\n * Mirrors AXPWidgetFieldConfiguratorComponent pattern: select activity from list,\n * show activity info in view mode, configure button opens dynamic form for activity inputs.\n */\n@Component({\n selector: 'axm-activity-command-configurator',\n templateUrl: './activity-command-configurator.component.html',\n styleUrl: './activity-command-configurator.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n CommonModule,\n FormsModule,\n AXFormModule,\n AXButtonModule,\n AXSelectBoxModule,\n AXTranslationModule,\n AXSearchBoxModule,\n AXDecoratorModule,\n ],\n})\nexport class AXMActivityCommandConfiguratorComponent {\n //#region ---- Inputs ----\n\n value = model<ActivityCommandValue>({ commandKey: '', params: {} });\n\n label = input<string>('@workflow-management:automations.entities.automation.fields.command.title');\n\n readonly = input<boolean>(false);\n\n //#endregion\n\n //#region ---- Services & Dependencies ----\n\n private readonly activityService = inject(AXPActivityDefinitionService);\n private readonly layoutBuilder = inject(AXPLayoutBuilderService);\n private readonly multiLanguageResolver = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- Class Properties ----\n\n protected selectedCommandKey = signal<string>('');\n\n protected isEditMode = signal<boolean>(false);\n\n protected activities = signal<AXPActivityDefinition[]>([]);\n\n protected activityItems = computed(() =>\n this.activities()\n .map((a) => ({\n value: a.name,\n text: this.multiLanguageResolver.resolve(a.title) || a.name,\n description: this.multiLanguageResolver.resolve(a.description),\n icon: a.icon,\n }))\n .sort((a, b) => a.text.localeCompare(b.text)),\n );\n\n protected selectedActivity = computed(() => {\n const key = this.selectedCommandKey();\n if (!key) return null;\n return this.activities().find((a) => a.name === key) ?? null;\n });\n\n /** Resolved title for view mode (activity definition may store multi-language maps). */\n protected selectedActivityViewTitle = computed(() => {\n const a = this.selectedActivity();\n if (!a) return '';\n return this.multiLanguageResolver.resolve(a.title) || a.name;\n });\n\n /** Resolved description for view mode. */\n protected selectedActivityViewDescription = computed(() => {\n const a = this.selectedActivity();\n if (!a) return '';\n return this.multiLanguageResolver.resolve(a.description);\n });\n\n protected canConfigure = computed(() => {\n const activity = this.selectedActivity();\n return !!activity?.inputs && activity.inputs.length > 0;\n });\n\n protected activitySelectBox = viewChild<AXSelectBoxComponent>('activitySelectBox');\n\n //#endregion\n\n //#region ---- Lifecycle ----\n\n constructor() {\n this.loadActivities();\n\n effect(() => {\n const v = this.value();\n const key = v?.commandKey ?? '';\n if (this.selectedCommandKey() !== key) {\n this.selectedCommandKey.set(key);\n if (key) {\n this.isEditMode.set(false);\n } else {\n this.isEditMode.set(true);\n }\n }\n });\n\n effect(() => {\n if (!this.isEditMode()) return;\n const select = this.activitySelectBox();\n if (select) {\n setTimeout(() => {\n select.focus?.();\n (select as { open?: () => void }).open?.();\n }, 0);\n }\n });\n }\n\n //#endregion\n\n //#region ---- Event Handlers ----\n\n protected enterEditMode(): void {\n if (this.readonly()) return;\n this.isEditMode.set(true);\n }\n\n protected exitEditMode(): void {\n this.isEditMode.set(false);\n }\n\n protected onActivityChange(event: { value?: string | null }): void {\n if (this.readonly()) return;\n const newKey = (event?.value ?? '') as string;\n\n if (this.selectedCommandKey() === newKey) return;\n\n this.selectedCommandKey.set(newKey);\n\n if (!newKey) {\n this.value.set({ commandKey: '', params: {} });\n this.isEditMode.set(true);\n return;\n }\n\n const current = this.value();\n this.value.set({\n commandKey: newKey,\n params: current?.commandKey === newKey ? (current.params ?? {}) : {},\n });\n this.isEditMode.set(false);\n }\n\n protected openConfigure(): void {\n if (!this.canConfigure() || this.readonly()) return;\n\n const activity = this.selectedActivity();\n if (!activity?.inputs?.length) return;\n\n let params: Record<string, unknown> = {};\n const current = this.value();\n if (current?.params && Object.keys(current.params).length > 0) {\n params = { ...current.params };\n }\n\n const groups: AXPDynamicFormGroupDefinition[] = [\n {\n name: 'inputs',\n title: this.multiLanguageResolver.resolve(activity.title) || activity.name,\n description: this.multiLanguageResolver.resolve(activity.description),\n parameters: activity.inputs.map<AXPDynamicFormFieldDefinition>((inputDef) => ({\n path: `params.${inputDef.name}`,\n title: inputDef.title,\n description: inputDef.description,\n validationRules: inputDef.validations,\n widget: {\n path: `params.${inputDef.name}`,\n type: inputDef.interface.type,\n options: { ...(inputDef.interface.options ?? {}) },\n },\n })),\n },\n ];\n\n const formDefinition: AXPDynamicFormDefinition = { groups };\n\n this.layoutBuilder\n .create()\n .dialog<{ success: boolean }>((dialog) => {\n dialog\n .setTitle(this.multiLanguageResolver.resolve(activity.title) || activity.name || 'Configure Activity')\n .setSize('md')\n .setCloseButton(true)\n .setContext({ params })\n .content((layout) => {\n layout.mode('edit');\n layout.dynamicForm(formDefinition);\n })\n .setActions((actions) => {\n actions.cancel('@general:actions.cancel.title').submit('@general:actions.save.title');\n })\n .onAction((dialogRef) => {\n const ctx = dialogRef.context() as { params?: Record<string, unknown> } | null;\n const action = dialogRef.action();\n if (!ctx || action === 'cancel') return { success: false };\n\n const updatedParams = ctx.params ?? {};\n this.value.set({\n commandKey: this.selectedCommandKey(),\n params: updatedParams,\n });\n return { success: true };\n });\n })\n .show();\n }\n\n //#endregion\n\n //#region ---- Private Methods ----\n\n private async loadActivities(): Promise<void> {\n try {\n const list = await this.activityService.getAllActivities();\n this.activities.set(list ?? []);\n } catch {\n this.activities.set([]);\n }\n }\n\n //#endregion\n}\n\n//#endregion\n","<!-- Activity Selector & Info Container -->\n<div class=\"__activity-container\">\n <!-- Edit Mode: Show Select Box -->\n @if (isEditMode()) {\n <div class=\"__activity-selector\">\n <ax-select-box\n #activitySelectBox\n [ngModel]=\"selectedCommandKey()\"\n [dataSource]=\"activityItems()\"\n [placeholder]=\"('@general:actions.select.title' | translate | async) ?? ''\"\n [readonly]=\"readonly()\"\n valueField=\"value\"\n textField=\"text\"\n [itemTemplate]=\"itemTemplate\"\n [selectedTemplate]=\"selectedTemplate\"\n (onValueChanged)=\"onActivityChange($event)\"\n (onClosed)=\"exitEditMode()\"\n >\n <ax-search-box></ax-search-box>\n <ax-clear-button></ax-clear-button>\n </ax-select-box>\n </div>\n }\n\n <!-- View Mode: Show Activity Info -->\n @if (!isEditMode()) {\n @if (selectedCommandKey() && selectedActivity(); as activity) {\n <div class=\"__activity-info\">\n <div class=\"__activity-header\" [class.__editable]=\"!readonly()\" (click)=\"enterEditMode()\">\n <div>\n @if (activity.icon) {\n <i [class]=\"activity.icon\"></i>\n }\n <div>\n <span>{{ selectedActivityViewTitle() }}</span>\n @if (selectedActivityViewDescription()) {\n <p>{{ selectedActivityViewDescription() }}</p>\n }\n </div>\n </div>\n\n <div class=\"__action-buttons\" (click)=\"$event.stopPropagation()\">\n @if (canConfigure()) {\n <ax-button\n [disabled]=\"readonly()\"\n [title]=\"('@general:actions.configure.title' | translate | async) ?? ''\"\n look=\"blank\"\n size=\"sm\"\n (onClick)=\"openConfigure()\"\n >\n <i class=\"fa-solid fa-cog\"></i>\n </ax-button>\n }\n </div>\n </div>\n </div>\n } @else {\n <!-- Empty State (Clickable to Edit) -->\n <div class=\"__activity-empty\" [class.__editable]=\"!readonly()\" (click)=\"enterEditMode()\">\n <i class=\"fa-light fa-bolt\"></i>\n <span>\n {{ ('@workflow-management:automations.entities.automation.fields.command.placeholder' | translate | async) ?? 'Select activity' }}\n </span>\n </div>\n }\n }\n\n\n <!-- Item Template (Dropdown Items) -->\n <ng-template #itemTemplate let-context>\n @let item = context.data;\n <div class=\"__item-template ax-flex ax-w-full ax-items-center ax-gap-3 ax-p-2\">\n @if (item.icon) {\n <i [class]=\"item.icon + ' ax-text-base ax-w-5 ax-text-center'\"></i>\n }\n <div class=\"ax-flex ax-items-center ax-gap-2 ax-flex-1 ax-min-w-0\">\n <div class=\"ax-text-sm ax-font-medium\">{{ item.text }}</div>\n @if (item.description) {\n <div class=\"ax-text-xs ax-text-neutral-600\">{{ item.description }}</div>\n }\n </div>\n </div>\n </ng-template>\n\n <!-- Selected Template -->\n <ng-template #selectedTemplate let-item>\n <div class=\"__selected-template\">\n @if (item?.data?.icon) {\n <i [class]=\"item.data.icon\"></i>\n }\n <span>{{ item?.data?.text }}</span>\n </div>\n </ng-template>\n</div>\n","//#region ---- Imports ----\n\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, computed, effect, model, signal, untracked } from '@angular/core';\nimport { isEqual } from 'lodash-es';\nimport {\n AXMActivityCommandConfiguratorComponent,\n ActivityCommandValue,\n} from './activity-command-configurator.component';\n\n//#endregion\n\n//#region ---- Component ----\n\n/**\n * Widget edit component for activity-command-configurator.\n * Mirrors AXPWidgetFieldConfiguratorWidgetEditComponent: wraps the configurator,\n * syncs value <-> model via effects, uses isInitialized to avoid premature render.\n */\n@Component({\n selector: 'axm-activity-command-configurator-widget-edit',\n template: `\n @if (isInitialized()) {\n <axm-activity-command-configurator\n [(value)]=\"valueModel\"\n [label]=\"label()\"\n [readonly]=\"readonly()\"\n ></axm-activity-command-configurator>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXMActivityCommandConfiguratorComponent],\n})\nexport class AXMActivityCommandConfiguratorWidgetEditComponent extends AXPValueWidgetComponent<ActivityCommandValue> {\n //#region ---- Computed Properties ----\n\n protected readonly readonly = computed<boolean>(() => (this.options()['readonly'] as boolean) ?? false);\n protected label = computed<string>(() => (this.options()['label'] as string) || 'Activity');\n\n //#endregion\n\n //#region ---- State Signals ----\n\n protected isInitialized = signal(false);\n\n //#endregion\n\n //#region ---- Models ----\n\n protected valueModel = model<ActivityCommandValue>({ commandKey: '', params: {} });\n\n //#endregion\n\n //#region ---- Effects ----\n\n private syncValueToConfigurator = effect(() => {\n const value = this.getValue();\n\n const normalized: ActivityCommandValue =\n value && typeof value === 'object' && 'commandKey' in value\n ? { commandKey: (value as ActivityCommandValue).commandKey ?? '', params: (value as ActivityCommandValue).params ?? {} }\n : { commandKey: '', params: {} };\n\n const currentModel = untracked(() => this.valueModel());\n\n if (!isEqual(normalized, currentModel)) {\n untracked(() => {\n this.valueModel.set(normalized);\n });\n }\n\n untracked(() => {\n if (!this.isInitialized()) {\n this.isInitialized.set(true);\n }\n });\n });\n\n private syncConfiguratorToValue = effect(() => {\n const modelValue = this.valueModel();\n\n if (!untracked(() => this.isInitialized())) return;\n\n const currentValue = untracked(() => this.getValue());\n const normalizedCurrent: ActivityCommandValue =\n currentValue && typeof currentValue === 'object' && 'commandKey' in currentValue\n ? { commandKey: (currentValue as ActivityCommandValue).commandKey ?? '', params: (currentValue as ActivityCommandValue).params ?? {} }\n : { commandKey: '', params: {} };\n\n if (!isEqual(modelValue, normalizedCurrent)) {\n untracked(() => {\n this.setValue(modelValue ?? { commandKey: '', params: {} });\n });\n }\n });\n\n //#endregion\n}\n\n//#endregion\n"],"names":["i6"],"mappings":"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"}
@@ -9,7 +9,7 @@ import * as i3 from '@acorex/components/label';
9
9
  import { AXLabelModule } from '@acorex/components/label';
10
10
  import * as i4 from '@acorex/components/loading';
11
11
  import { AXLoadingModule } from '@acorex/components/loading';
12
- import * as i5 from '@acorex/core/translation';
12
+ import * as i7 from '@acorex/core/translation';
13
13
  import { AXTranslationModule } from '@acorex/core/translation';
14
14
  import { AXPPageLayoutBaseComponent, AXPPageLayoutBase } from '@acorex/platform/layout/views';
15
15
  import { AXPWorkflowDefinitionService } from '@acorex/platform/workflow';
@@ -267,7 +267,7 @@ class AXMWorkflowInstanceActivityInstancesPageComponent extends AXPPageLayoutBas
267
267
  provide: AXPPageLayoutBase,
268
268
  useExisting: AXMWorkflowInstanceActivityInstancesPageComponent,
269
269
  },
270
- ], usesInheritance: true, ngImport: i0, template: "<div class=\"axm-workflow-activity-instances-page ax-block ax-p-4 ax-min-h-[30vh] ax-overflow-y-auto\">\n @if (definitionLoading()) {\n <div class=\"axm-workflow-activity-instances-page__state\">\n <ax-loading></ax-loading>\n </div>\n } @else {\n @if (rows().length === 0) {\n <p class=\"axm-workflow-activity-instances-page__state ax-typo-caption\">\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.empty' | translate | async }}\n </p>\n } @else {\n <div class=\"axm-workflow-activity-instances-page__list\">\n @for (row of rows(); track row.contextId) {\n <div class=\"axm-workflow-activity-instances-page__card ax-block\">\n <div class=\"axm-workflow-activity-instances-page__header\">\n <h3 [textContent]=\"row.activityTitle\" class=\"axm-workflow-activity-instances-page__title\"></h3>\n <div class=\"axm-workflow-activity-instances-page__header-status\">\n <span class=\"axm-workflow-activity-instances-page__status-label\">\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.status' | translate | async }}\n </span>\n <span\n class=\"ax-inline-flex ax-items-center ax-rounded-md ax-px-2.5 ax-py-1 ax-text-xs ax-font-semibold ax-leading-none axp-status-chip\"\n [ngClass]=\"'axp-status-chip--' + statusChipModifier(row.status)\"\n >\n {{ row.status }}\n </span>\n </div>\n </div>\n\n <div class=\"axm-workflow-activity-instances-page__meta-grid\" role=\"list\">\n <div class=\"axm-workflow-activity-instances-page__meta-pair\" role=\"listitem\">\n <span class=\"axm-workflow-activity-instances-page__meta-k\">\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.activity-type' | translate | async }}\n </span>\n <span\n class=\"axm-workflow-activity-instances-page__meta-v\"\n [attr.title]=\"row.activityTypeName\"\n [textContent]=\"row.activityTypeName\"\n ></span>\n </div>\n <div class=\"axm-workflow-activity-instances-page__meta-pair\" role=\"listitem\">\n <span class=\"axm-workflow-activity-instances-page__meta-k\">\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.node-id' | translate | async }}\n </span>\n <span\n class=\"axm-workflow-activity-instances-page__meta-v axm-workflow-activity-instances-page__meta-v--code\"\n [attr.title]=\"row.nodeId\"\n [textContent]=\"row.nodeId\"\n ></span>\n </div>\n <div class=\"axm-workflow-activity-instances-page__meta-pair\" role=\"listitem\">\n <span class=\"axm-workflow-activity-instances-page__meta-k\">\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.outcome' | translate | async }}\n </span>\n <span\n class=\"axm-workflow-activity-instances-page__meta-v\"\n [attr.title]=\"row.outcomeDisplay\"\n [textContent]=\"row.outcomeDisplay\"\n ></span>\n </div>\n <div class=\"axm-workflow-activity-instances-page__meta-pair\" role=\"listitem\">\n <span class=\"axm-workflow-activity-instances-page__meta-k\">\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.started-at' | translate | async }}\n </span>\n <span\n class=\"axm-workflow-activity-instances-page__meta-v\"\n [attr.title]=\"row.startedAt || '\u2014'\"\n [textContent]=\"row.startedAt || '\u2014'\"\n ></span>\n </div>\n <div class=\"axm-workflow-activity-instances-page__meta-pair\" role=\"listitem\">\n <span class=\"axm-workflow-activity-instances-page__meta-k\">\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.completed-at' | translate | async }}\n </span>\n <span\n class=\"axm-workflow-activity-instances-page__meta-v\"\n [attr.title]=\"row.completedAt || '\u2014'\"\n [textContent]=\"row.completedAt || '\u2014'\"\n ></span>\n </div>\n <div class=\"axm-workflow-activity-instances-page__meta-pair\" role=\"listitem\">\n <span class=\"axm-workflow-activity-instances-page__meta-k\">\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.performed-by' | translate | async }}\n </span>\n <span\n class=\"axm-workflow-activity-instances-page__meta-v\"\n [attr.title]=\"row.performedByDisplay\"\n [textContent]=\"row.performedByDisplay\"\n ></span>\n </div>\n </div>\n\n <div class=\"axm-workflow-activity-instances-page__json-row\">\n <div class=\"axm-workflow-activity-instances-page__field axm-workflow-activity-instances-page__field--full\">\n <ax-label>\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.input' | translate | async }}\n </ax-label>\n <div class=\"axm-workflow-activity-instances-page__json-viewer\">\n <ax-json-viewer [json]=\"toViewerRoot(row.inputForViewer)\"></ax-json-viewer>\n </div>\n </div>\n <div class=\"axm-workflow-activity-instances-page__field axm-workflow-activity-instances-page__field--full\">\n <ax-label>\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.output' | translate | async }}\n </ax-label>\n <div class=\"axm-workflow-activity-instances-page__json-viewer\">\n <ax-json-viewer [json]=\"toViewerRoot(row.outputForViewer)\"></ax-json-viewer>\n </div>\n </div>\n </div>\n\n @if (row.isHumanTask) {\n <div class=\"axm-workflow-activity-instances-page__field axm-workflow-activity-instances-page__field--full\">\n <ax-label>\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.human-assignees' | translate | async }}\n </ax-label>\n <div class=\"axm-workflow-activity-instances-page__value\" [textContent]=\"row.humanAssigneesDisplay\"></div>\n </div>\n }\n </div>\n }\n </div>\n }\n }\n</div>\n", styles: [".axm-workflow-activity-instances-page{box-sizing:border-box}.axm-workflow-activity-instances-page__state{display:flex;align-items:center;justify-content:center;min-height:8rem}.axm-workflow-activity-instances-page__list{display:flex;flex-direction:column;gap:1.25rem}.axm-workflow-activity-instances-page__card{border:1px solid rgb(var(--ax-sys-color-outline));border-radius:var(--ax-radius-md, .5rem);padding:1.25rem 1.5rem;background:rgb(var(--ax-sys-color-surface))}.axm-workflow-activity-instances-page__header{display:flex;flex-wrap:nowrap;align-items:flex-start;justify-content:space-between;gap:1rem 1.5rem;margin-bottom:.875rem;min-width:0}.axm-workflow-activity-instances-page__title{margin:0;flex:1 1 auto;min-width:0;font-size:1.25rem;line-height:1.3;font-weight:700;letter-spacing:-.01em;color:rgb(var(--ax-sys-color-on-surface))}.axm-workflow-activity-instances-page__header-status{display:flex;flex:0 0 auto;flex-wrap:nowrap;align-items:center;gap:.5rem;max-width:min(100%,22rem);min-width:0}.axm-workflow-activity-instances-page__status-label{flex:0 0 auto;font-size:.75rem;font-weight:500;line-height:1.2;white-space:nowrap;color:rgb(var(--ax-sys-color-on-surface-variant))}.axm-workflow-activity-instances-page__meta-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem 1.5rem;margin:0;margin-bottom:.5rem;padding:.75rem 0 .5rem;list-style:none;border-bottom:1px solid rgb(var(--ax-sys-color-outline-variant))}@media(max-width:29.99rem){.axm-workflow-activity-instances-page__meta-grid{grid-template-columns:1fr}}.axm-workflow-activity-instances-page__meta-pair{display:flex;min-width:0;flex-direction:column;align-items:stretch;gap:.3rem}.axm-workflow-activity-instances-page__meta-k{flex:0 0 auto;font-size:.6875rem;font-weight:600;line-height:1.2;text-transform:uppercase;letter-spacing:.04em;color:rgb(var(--ax-sys-color-on-surface-variant))}.axm-workflow-activity-instances-page__meta-v{min-width:0;overflow:hidden;font-size:.875rem;line-height:1.25;text-overflow:ellipsis;white-space:nowrap;color:rgb(var(--ax-sys-color-on-surface))}.axm-workflow-activity-instances-page__meta-v--code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.8125rem}.axm-workflow-activity-instances-page__json-row{display:grid;grid-template-columns:1fr;gap:.75rem;margin-top:.5rem}@media(min-width:64rem){.axm-workflow-activity-instances-page__json-row{grid-template-columns:1fr 1fr;align-items:start}}.axm-workflow-activity-instances-page__field{min-width:0;display:flex;flex-direction:column;gap:.25rem}.axm-workflow-activity-instances-page__field--full{margin-top:.5rem;min-width:0}.axm-workflow-activity-instances-page__json-viewer{max-height:18rem;overflow:auto;border-radius:var(--ax-radius-sm, .25rem);border:1px solid rgb(var(--ax-sys-color-outline));background:rgb(var(--ax-sys-color-surface));padding:.25rem}.axm-workflow-activity-instances-page__value{font-size:.875rem;line-height:1.4;word-break:break-word;color:rgb(var(--ax-sys-color-on-surface))}.axm-workflow-activity-instances-page__value--code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.8125rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: AXJsonViewerModule }, { kind: "component", type: i2.JsonViewerComponent, selector: "ax-json-viewer", inputs: ["json"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "ngmodule", type: AXLabelModule }, { kind: "component", type: i3.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i4.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
270
+ ], usesInheritance: true, ngImport: i0, template: "<div class=\"axm-workflow-activity-instances-page ax-block ax-p-4 ax-min-h-[30vh] ax-overflow-y-auto\">\n @if (definitionLoading()) {\n <div class=\"axm-workflow-activity-instances-page__state\">\n <ax-loading></ax-loading>\n </div>\n } @else {\n @if (rows().length === 0) {\n <p class=\"axm-workflow-activity-instances-page__state ax-typo-caption\">\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.empty' | translate | async }}\n </p>\n } @else {\n <div class=\"axm-workflow-activity-instances-page__list\">\n @for (row of rows(); track row.contextId) {\n <div class=\"axm-workflow-activity-instances-page__card ax-block\">\n <div class=\"axm-workflow-activity-instances-page__header\">\n <h3 [textContent]=\"row.activityTitle\" class=\"axm-workflow-activity-instances-page__title\"></h3>\n <div class=\"axm-workflow-activity-instances-page__header-status\">\n <span class=\"axm-workflow-activity-instances-page__status-label\">\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.status' | translate | async }}\n </span>\n <span\n class=\"ax-inline-flex ax-items-center ax-rounded-md ax-px-2.5 ax-py-1 ax-text-xs ax-font-semibold ax-leading-none axp-status-chip\"\n [ngClass]=\"'axp-status-chip--' + statusChipModifier(row.status)\"\n >\n {{ row.status }}\n </span>\n </div>\n </div>\n\n <div class=\"axm-workflow-activity-instances-page__meta-grid\" role=\"list\">\n <div class=\"axm-workflow-activity-instances-page__meta-pair\" role=\"listitem\">\n <span class=\"axm-workflow-activity-instances-page__meta-k\">\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.activity-type' | translate | async }}\n </span>\n <span\n class=\"axm-workflow-activity-instances-page__meta-v\"\n [attr.title]=\"row.activityTypeName\"\n [textContent]=\"row.activityTypeName\"\n ></span>\n </div>\n <div class=\"axm-workflow-activity-instances-page__meta-pair\" role=\"listitem\">\n <span class=\"axm-workflow-activity-instances-page__meta-k\">\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.node-id' | translate | async }}\n </span>\n <span\n class=\"axm-workflow-activity-instances-page__meta-v axm-workflow-activity-instances-page__meta-v--code\"\n [attr.title]=\"row.nodeId\"\n [textContent]=\"row.nodeId\"\n ></span>\n </div>\n <div class=\"axm-workflow-activity-instances-page__meta-pair\" role=\"listitem\">\n <span class=\"axm-workflow-activity-instances-page__meta-k\">\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.outcome' | translate | async }}\n </span>\n <span\n class=\"axm-workflow-activity-instances-page__meta-v\"\n [attr.title]=\"row.outcomeDisplay\"\n [textContent]=\"row.outcomeDisplay\"\n ></span>\n </div>\n <div class=\"axm-workflow-activity-instances-page__meta-pair\" role=\"listitem\">\n <span class=\"axm-workflow-activity-instances-page__meta-k\">\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.started-at' | translate | async }}\n </span>\n <span\n class=\"axm-workflow-activity-instances-page__meta-v\"\n [attr.title]=\"row.startedAt || '\u2014'\"\n [textContent]=\"row.startedAt || '\u2014'\"\n ></span>\n </div>\n <div class=\"axm-workflow-activity-instances-page__meta-pair\" role=\"listitem\">\n <span class=\"axm-workflow-activity-instances-page__meta-k\">\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.completed-at' | translate | async }}\n </span>\n <span\n class=\"axm-workflow-activity-instances-page__meta-v\"\n [attr.title]=\"row.completedAt || '\u2014'\"\n [textContent]=\"row.completedAt || '\u2014'\"\n ></span>\n </div>\n <div class=\"axm-workflow-activity-instances-page__meta-pair\" role=\"listitem\">\n <span class=\"axm-workflow-activity-instances-page__meta-k\">\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.performed-by' | translate | async }}\n </span>\n <span\n class=\"axm-workflow-activity-instances-page__meta-v\"\n [attr.title]=\"row.performedByDisplay\"\n [textContent]=\"row.performedByDisplay\"\n ></span>\n </div>\n </div>\n\n <div class=\"axm-workflow-activity-instances-page__json-row\">\n <div class=\"axm-workflow-activity-instances-page__field axm-workflow-activity-instances-page__field--full\">\n <ax-label>\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.input' | translate | async }}\n </ax-label>\n <div class=\"axm-workflow-activity-instances-page__json-viewer\">\n <ax-json-viewer [json]=\"toViewerRoot(row.inputForViewer)\"></ax-json-viewer>\n </div>\n </div>\n <div class=\"axm-workflow-activity-instances-page__field axm-workflow-activity-instances-page__field--full\">\n <ax-label>\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.output' | translate | async }}\n </ax-label>\n <div class=\"axm-workflow-activity-instances-page__json-viewer\">\n <ax-json-viewer [json]=\"toViewerRoot(row.outputForViewer)\"></ax-json-viewer>\n </div>\n </div>\n </div>\n\n @if (row.isHumanTask) {\n <div class=\"axm-workflow-activity-instances-page__field axm-workflow-activity-instances-page__field--full\">\n <ax-label>\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.human-assignees' | translate | async }}\n </ax-label>\n <div class=\"axm-workflow-activity-instances-page__value\" [textContent]=\"row.humanAssigneesDisplay\"></div>\n </div>\n }\n </div>\n }\n </div>\n }\n }\n</div>\n", styles: [".axm-workflow-activity-instances-page{box-sizing:border-box}.axm-workflow-activity-instances-page__state{display:flex;align-items:center;justify-content:center;min-height:8rem}.axm-workflow-activity-instances-page__list{display:flex;flex-direction:column;gap:1.25rem}.axm-workflow-activity-instances-page__card{border:1px solid rgb(var(--ax-sys-color-outline));border-radius:var(--ax-radius-md, .5rem);padding:1.25rem 1.5rem;background:rgb(var(--ax-sys-color-surface))}.axm-workflow-activity-instances-page__header{display:flex;flex-wrap:nowrap;align-items:flex-start;justify-content:space-between;gap:1rem 1.5rem;margin-bottom:.875rem;min-width:0}.axm-workflow-activity-instances-page__title{margin:0;flex:1 1 auto;min-width:0;font-size:1.25rem;line-height:1.3;font-weight:700;letter-spacing:-.01em;color:rgb(var(--ax-sys-color-on-surface))}.axm-workflow-activity-instances-page__header-status{display:flex;flex:0 0 auto;flex-wrap:nowrap;align-items:center;gap:.5rem;max-width:min(100%,22rem);min-width:0}.axm-workflow-activity-instances-page__status-label{flex:0 0 auto;font-size:.75rem;font-weight:500;line-height:1.2;white-space:nowrap;color:rgb(var(--ax-sys-color-on-surface-variant))}.axm-workflow-activity-instances-page__meta-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem 1.5rem;margin:0;margin-bottom:.5rem;padding:.75rem 0 .5rem;list-style:none;border-bottom:1px solid rgb(var(--ax-sys-color-outline-variant))}@media(max-width:29.99rem){.axm-workflow-activity-instances-page__meta-grid{grid-template-columns:1fr}}.axm-workflow-activity-instances-page__meta-pair{display:flex;min-width:0;flex-direction:column;align-items:stretch;gap:.3rem}.axm-workflow-activity-instances-page__meta-k{flex:0 0 auto;font-size:.6875rem;font-weight:600;line-height:1.2;text-transform:uppercase;letter-spacing:.04em;color:rgb(var(--ax-sys-color-on-surface-variant))}.axm-workflow-activity-instances-page__meta-v{min-width:0;overflow:hidden;font-size:.875rem;line-height:1.25;text-overflow:ellipsis;white-space:nowrap;color:rgb(var(--ax-sys-color-on-surface))}.axm-workflow-activity-instances-page__meta-v--code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.8125rem}.axm-workflow-activity-instances-page__json-row{display:grid;grid-template-columns:1fr;gap:.75rem;margin-top:.5rem}@media(min-width:64rem){.axm-workflow-activity-instances-page__json-row{grid-template-columns:1fr 1fr;align-items:start}}.axm-workflow-activity-instances-page__field{min-width:0;display:flex;flex-direction:column;gap:.25rem}.axm-workflow-activity-instances-page__field--full{margin-top:.5rem;min-width:0}.axm-workflow-activity-instances-page__json-viewer{max-height:18rem;overflow:auto;border-radius:var(--ax-radius-sm, .25rem);border:1px solid rgb(var(--ax-sys-color-outline));background:rgb(var(--ax-sys-color-surface));padding:.25rem}.axm-workflow-activity-instances-page__value{font-size:.875rem;line-height:1.4;word-break:break-word;color:rgb(var(--ax-sys-color-on-surface))}.axm-workflow-activity-instances-page__value--code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.8125rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: AXJsonViewerModule }, { kind: "component", type: i2.JsonViewerComponent, selector: "ax-json-viewer", inputs: ["json"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "ngmodule", type: AXLabelModule }, { kind: "component", type: i3.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i4.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
271
271
  }
272
272
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMWorkflowInstanceActivityInstancesPageComponent, decorators: [{
273
273
  type: Component,
@@ -292,4 +292,4 @@ var workflowInstanceActivityInstancesPage_component = /*#__PURE__*/Object.freeze
292
292
  });
293
293
 
294
294
  export { AXMWorkflowInstanceActivityInstancesPageComponent, AXMWorkflowInstanceActivityInstancesPageComponentProvider, WORKFLOW_INSTANCE_ACTIVITY_INSTANCES_PAGE_COMPONENT_KEY };
295
- //# sourceMappingURL=acorex-modules-workflow-management-index-Eh5DDK-V.mjs.map
295
+ //# sourceMappingURL=acorex-modules-workflow-management-index-DC_9M9dk.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-modules-workflow-management-index-Eh5DDK-V.mjs","sources":["../../../../libs/modules/workflow-management/src/lib/features/workflow-instance-activity-instances-page/WORKFLOW_INSTANCE_ACTIVITY_INSTANCES_PAGE_COMPONENT_KEY.ts","../../../../libs/modules/workflow-management/src/lib/features/workflow-instance-activity-instances-page/workflow-instance-activity-instances-page-component.provider.ts","../../../../libs/modules/workflow-management/src/lib/features/workflow-instance-activity-instances-page/workflow-instance-activity-instances-page.component.ts","../../../../libs/modules/workflow-management/src/lib/features/workflow-instance-activity-instances-page/workflow-instance-activity-instances-page.component.html"],"sourcesContent":["/** Component key for the Workflow Instance Activity instances tab. Register via AXP_PAGE_COMPONENT_PROVIDER. */\nexport const WORKFLOW_INSTANCE_ACTIVITY_INSTANCES_PAGE_COMPONENT_KEY =\n 'workflow-instance-activity-instances-page';\n","import {\n AXPPageComponentDefinition,\n AXPPageComponentProvider,\n} from '@acorex/platform/layout/components';\nimport { Injectable } from '@angular/core';\nimport { WORKFLOW_INSTANCE_ACTIVITY_INSTANCES_PAGE_COMPONENT_KEY } from './WORKFLOW_INSTANCE_ACTIVITY_INSTANCES_PAGE_COMPONENT_KEY';\n\n//#region ---- Workflow Instance Activity Instances Page Component Provider ----\n\n@Injectable()\nexport class AXMWorkflowInstanceActivityInstancesPageComponentProvider implements AXPPageComponentProvider {\n async components(): Promise<AXPPageComponentDefinition[]> {\n return [\n {\n key: WORKFLOW_INSTANCE_ACTIVITY_INSTANCES_PAGE_COMPONENT_KEY,\n loader: () =>\n import('./workflow-instance-activity-instances-page.component').then(\n (m) => m.AXMWorkflowInstanceActivityInstancesPageComponent,\n ),\n },\n ];\n }\n}\n\n//#endregion\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, input, signal, untracked } from '@angular/core';\nimport { AXJsonViewerModule } from '@acorex/components/json-viewer';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPPageLayoutBase, AXPPageLayoutBaseComponent } from '@acorex/platform/layout/views';\nimport {\n AXPWorkflowActivityInstance,\n AXPWorkflowDefinition,\n AXPWorkflowInstance,\n AXPActivityExecutionContextState,\n AXPWorkflowDefinitionService,\n} from '@acorex/platform/workflow';\n\n//#region ---- Types ----\n\n/** One row in the readonly Activity instances list (derived from engine state, definition graph, and persisted audit keys). */\nexport interface AXMWorkflowActivityInstanceViewRow {\n contextId: string;\n nodeId: string;\n activityTitle: string;\n activityTypeName: string;\n isHumanTask: boolean;\n status: string;\n startedAt: string;\n completedAt: string | null;\n /** Connection port / outcome that was taken after this step (from workflow state variables). */\n outcomeDisplay: string;\n /** Input from graph definition — passed to `ax-json-viewer`. */\n inputForViewer: unknown;\n /** Captured output for this step — passed to `ax-json-viewer`. */\n outputForViewer: unknown;\n humanAssigneesDisplay: string;\n /** Who performed the step (from persisted `completedByLabel` / `completedByUserId` when available). */\n performedByDisplay: string;\n}\n\n//#endregion\n\n//#region ---- Helpers (display only) ----\n\nfunction formatReadableActivityName(value: string): string {\n return value\n .replace(/^workflow-activity:/, '')\n .replace(/([a-z])([A-Z])/g, '$1 $2')\n .replace(/[-_]/g, ' ')\n .split(' ')\n .filter((token) => token.length > 0)\n .map((token) => token.charAt(0).toUpperCase() + token.slice(1))\n .join(' ');\n}\n\nfunction normalizeUserIds(value: unknown): string[] {\n if (value == null) {\n return [];\n }\n if (Array.isArray(value)) {\n return value.filter((v): v is string => typeof v === 'string' && v.trim().length > 0);\n }\n if (typeof value === 'string' && value.trim().length > 0) {\n return [value.trim()];\n }\n return [];\n}\n\nfunction formatHumanAssigneesFromPayload(payload: Record<string, unknown> | null | undefined): string {\n if (!payload) {\n return '';\n }\n const assigned = normalizeUserIds(payload['assignedUserIds']);\n const candidateUsers = normalizeUserIds(payload['candidateUserIds']);\n const candidateRoles = normalizeUserIds(payload['candidateRoleIds']);\n const labels = [\n ...assigned.map((id) => `User:${id}`),\n ...candidateUsers.map((id) => `Candidate:${id}`),\n ...candidateRoles.map((id) => `Role:${id}`),\n ];\n const unique = [...new Set(labels)];\n return unique.length > 0 ? unique.join(', ') : '';\n}\n\nfunction formatPerformedBy(\n label: unknown,\n id: unknown,\n empty: string,\n): string {\n const ls = label != null && String(label).trim() !== '' ? String(label).trim() : '';\n const idStr = id != null && String(id).trim() !== '' ? String(id).trim() : '';\n if (ls && idStr) {\n return `${ls} (${idStr})`;\n }\n if (ls) {\n return ls;\n }\n if (idStr) {\n return idStr;\n }\n return empty;\n}\n\nfunction resolveActivityTitle(\n graphActivity: AXPWorkflowActivityInstance | undefined,\n nodeId: string,\n): string {\n const rawTitle = graphActivity?.inputs?.['title'];\n if (typeof rawTitle === 'string' && rawTitle.trim().length > 0) {\n return rawTitle.trim();\n }\n if (graphActivity?.name) {\n return formatReadableActivityName(graphActivity.name);\n }\n return formatReadableActivityName(nodeId);\n}\n\nfunction resolveOutputForViewer(\n props: Record<string, unknown>,\n nodeId: string,\n ctx: AXPActivityExecutionContextState,\n): unknown {\n const key = `${nodeId}_activityOutput`;\n if (key in props && props[key] !== undefined) {\n return props[key];\n }\n if (ctx.activityState != null) {\n return ctx.activityState;\n }\n const p = ctx.properties;\n if (p && typeof p === 'object' && Object.keys(p as object).length > 0) {\n return p;\n }\n return null;\n}\n\nfunction buildRows(\n instance: AXPWorkflowInstance | null | undefined,\n definition: AXPWorkflowDefinition | null | undefined,\n emptyAssigneesLabel: string,\n notAvailableLabel: string,\n): AXMWorkflowActivityInstanceViewRow[] {\n if (!instance?.workflowState) {\n return [];\n }\n const props = (instance.workflowState.properties ?? {}) as Record<string, unknown>;\n const contexts = instance.workflowState.activityExecutionContexts ?? [];\n const activities = definition?.graph?.activities ?? [];\n const findActivity = (nodeId: string) => activities.find((a) => a.id === nodeId);\n const extended = instance as AXPWorkflowInstance & {\n bookmarks?: Array<{\n activityId?: string;\n payload?: Record<string, unknown> | null;\n isConsumed?: boolean;\n consumed?: boolean;\n }>;\n };\n const bookmarks = extended.bookmarks ?? [];\n\n const rows: AXMWorkflowActivityInstanceViewRow[] = contexts.map(\n (ctx: AXPActivityExecutionContextState) => {\n const nodeId = ctx.scheduledActivityNodeId;\n const graphActivity = findActivity(nodeId);\n const isHumanTask =\n graphActivity?.name === 'workflow-activity:human-task' ||\n graphActivity?.name === 'workflow-activity:cartable';\n const bookmark = bookmarks.find((b) => b.activityId === nodeId);\n const payload = bookmark?.payload && typeof bookmark.payload === 'object' ? bookmark.payload : null;\n let humanAssignees = isHumanTask ? formatHumanAssigneesFromPayload(payload) : '';\n if (isHumanTask && !humanAssignees) {\n humanAssignees = emptyAssigneesLabel;\n }\n\n const outKey = `${nodeId}_outcome`;\n const outcomeRaw = props[outKey];\n const outcomeDisplay =\n outcomeRaw !== undefined && outcomeRaw !== null && String(outcomeRaw).length > 0\n ? String(outcomeRaw)\n : notAvailableLabel;\n\n const inputForViewer: unknown = graphActivity?.inputs ?? null;\n\n const outputForViewer = resolveOutputForViewer(props, nodeId, ctx);\n\n const labelKey = `${nodeId}_completedByLabel`;\n const idKey = `${nodeId}_completedByUserId`;\n const performedByDisplay = formatPerformedBy(props[labelKey], props[idKey], notAvailableLabel);\n\n return {\n contextId: ctx.id,\n nodeId,\n activityTitle: resolveActivityTitle(graphActivity, nodeId),\n activityTypeName: graphActivity?.name ?? notAvailableLabel,\n isHumanTask,\n status: String(ctx.status ?? ''),\n startedAt: ctx.startedAt ?? '',\n completedAt: ctx.completedAt ?? null,\n outcomeDisplay,\n inputForViewer,\n outputForViewer,\n humanAssigneesDisplay: isHumanTask ? humanAssignees : notAvailableLabel,\n performedByDisplay,\n };\n },\n );\n\n rows.sort((a, b) => {\n const ta = new Date(a.startedAt).getTime();\n const tb = new Date(b.startedAt).getTime();\n if (ta !== tb) {\n return ta - tb;\n }\n return a.contextId.localeCompare(b.contextId);\n });\n\n return rows;\n}\n\n//#endregion\n\n//#region ---- Component ----\n\n/**\n * Readonly entity detail page: lists activity execution contexts for a workflow instance.\n * Data: `rootContext.workflowInstance` + definition loaded by `definitionId`, plus audit keys on\n * `workflowState.properties` (`_outcome`, `_activityOutput`, `_completedByUserId` / `_completedByLabel`).\n */\n@Component({\n selector: 'axm-workflow-instance-activity-instances-page',\n standalone: true,\n imports: [\n CommonModule,\n AXJsonViewerModule,\n AXDecoratorModule,\n AXLabelModule,\n AXLoadingModule,\n AXTranslationModule,\n ],\n templateUrl: './workflow-instance-activity-instances-page.component.html',\n styleUrl: './workflow-instance-activity-instances-page.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMWorkflowInstanceActivityInstancesPageComponent,\n },\n ],\n})\nexport class AXMWorkflowInstanceActivityInstancesPageComponent extends AXPPageLayoutBaseComponent {\n //#region ---- Inputs ----\n\n rootContext = input<Record<string, unknown>>();\n\n pageConfig = input<Record<string, unknown>>();\n\n //#endregion\n\n //#region ---- Services & Dependencies ----\n\n private readonly workflowDefinitionService = inject(AXPWorkflowDefinitionService);\n\n //#endregion\n\n //#region ---- Definition load ----\n\n private readonly definition = signal<AXPWorkflowDefinition | null>(null);\n protected readonly definitionLoading = signal(false);\n private loadSeq = 0;\n\n //#endregion\n\n constructor() {\n super();\n effect(() => {\n const ctx = this.rootContext();\n const defId =\n ctx && typeof ctx === 'object' && typeof (ctx as Record<string, unknown>)['definitionId'] === 'string'\n ? ((ctx as Record<string, unknown>)['definitionId'] as string)\n : undefined;\n if (!defId) {\n untracked(() => {\n this.definition.set(null);\n this.definitionLoading.set(false);\n });\n return;\n }\n const seq = ++this.loadSeq;\n void (async () => {\n this.definitionLoading.set(true);\n try {\n const def = await this.workflowDefinitionService.getWorkflowByName(defId);\n if (seq !== this.loadSeq) {\n return;\n }\n untracked(() => this.definition.set(def ?? null));\n } finally {\n if (seq === this.loadSeq) {\n this.definitionLoading.set(false);\n }\n }\n })();\n });\n }\n\n /**\n * Maps activity execution status to `status-chips.scss` modifier classes (uses theme `--ax-sys-color-*` tokens).\n */\n statusChipModifier(status: string): 'primary' | 'success' | 'warning' | 'danger' | 'neutral' | 'secondary' {\n const s = (status ?? '').trim().toLowerCase();\n if (s === 'running' || s === 'pending' || s === 'executing') {\n return 'primary';\n }\n if (s === 'completed' || s === 'succeeded' || s === 'success') {\n return 'success';\n }\n if (s === 'canceled' || s === 'cancelled') {\n return 'neutral';\n }\n if (s === 'faulted' || s === 'failed' || s === 'error') {\n return 'danger';\n }\n if (s === 'suspended' || s === 'waiting') {\n return 'warning';\n }\n return 'secondary';\n }\n\n /**\n * Normalizes a value for `ax-json-viewer` (expects a root object; primitives/arrays are wrapped like the platform json-viewer widget).\n */\n toViewerRoot(value: unknown): Record<string, unknown> {\n if (value === null || value === undefined) {\n return {};\n }\n if (typeof value === 'object' && !Array.isArray(value)) {\n return value as Record<string, unknown>;\n }\n return { value };\n }\n\n //#region ---- View rows ----\n\n protected readonly rows = computed(() => {\n const ctx = this.rootContext();\n const wi = ctx?.['workflowInstance'] as AXPWorkflowInstance | undefined;\n const def = this.definition();\n return buildRows(wi, def ?? null, '—', '—');\n });\n\n //#endregion\n}\n\n//#endregion\n","<div class=\"axm-workflow-activity-instances-page ax-block ax-p-4 ax-min-h-[30vh] ax-overflow-y-auto\">\n @if (definitionLoading()) {\n <div class=\"axm-workflow-activity-instances-page__state\">\n <ax-loading></ax-loading>\n </div>\n } @else {\n @if (rows().length === 0) {\n <p class=\"axm-workflow-activity-instances-page__state ax-typo-caption\">\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.empty' | translate | async }}\n </p>\n } @else {\n <div class=\"axm-workflow-activity-instances-page__list\">\n @for (row of rows(); track row.contextId) {\n <div class=\"axm-workflow-activity-instances-page__card ax-block\">\n <div class=\"axm-workflow-activity-instances-page__header\">\n <h3 [textContent]=\"row.activityTitle\" class=\"axm-workflow-activity-instances-page__title\"></h3>\n <div class=\"axm-workflow-activity-instances-page__header-status\">\n <span class=\"axm-workflow-activity-instances-page__status-label\">\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.status' | translate | async }}\n </span>\n <span\n class=\"ax-inline-flex ax-items-center ax-rounded-md ax-px-2.5 ax-py-1 ax-text-xs ax-font-semibold ax-leading-none axp-status-chip\"\n [ngClass]=\"'axp-status-chip--' + statusChipModifier(row.status)\"\n >\n {{ row.status }}\n </span>\n </div>\n </div>\n\n <div class=\"axm-workflow-activity-instances-page__meta-grid\" role=\"list\">\n <div class=\"axm-workflow-activity-instances-page__meta-pair\" role=\"listitem\">\n <span class=\"axm-workflow-activity-instances-page__meta-k\">\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.activity-type' | translate | async }}\n </span>\n <span\n class=\"axm-workflow-activity-instances-page__meta-v\"\n [attr.title]=\"row.activityTypeName\"\n [textContent]=\"row.activityTypeName\"\n ></span>\n </div>\n <div class=\"axm-workflow-activity-instances-page__meta-pair\" role=\"listitem\">\n <span class=\"axm-workflow-activity-instances-page__meta-k\">\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.node-id' | translate | async }}\n </span>\n <span\n class=\"axm-workflow-activity-instances-page__meta-v axm-workflow-activity-instances-page__meta-v--code\"\n [attr.title]=\"row.nodeId\"\n [textContent]=\"row.nodeId\"\n ></span>\n </div>\n <div class=\"axm-workflow-activity-instances-page__meta-pair\" role=\"listitem\">\n <span class=\"axm-workflow-activity-instances-page__meta-k\">\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.outcome' | translate | async }}\n </span>\n <span\n class=\"axm-workflow-activity-instances-page__meta-v\"\n [attr.title]=\"row.outcomeDisplay\"\n [textContent]=\"row.outcomeDisplay\"\n ></span>\n </div>\n <div class=\"axm-workflow-activity-instances-page__meta-pair\" role=\"listitem\">\n <span class=\"axm-workflow-activity-instances-page__meta-k\">\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.started-at' | translate | async }}\n </span>\n <span\n class=\"axm-workflow-activity-instances-page__meta-v\"\n [attr.title]=\"row.startedAt || '—'\"\n [textContent]=\"row.startedAt || '—'\"\n ></span>\n </div>\n <div class=\"axm-workflow-activity-instances-page__meta-pair\" role=\"listitem\">\n <span class=\"axm-workflow-activity-instances-page__meta-k\">\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.completed-at' | translate | async }}\n </span>\n <span\n class=\"axm-workflow-activity-instances-page__meta-v\"\n [attr.title]=\"row.completedAt || '—'\"\n [textContent]=\"row.completedAt || '—'\"\n ></span>\n </div>\n <div class=\"axm-workflow-activity-instances-page__meta-pair\" role=\"listitem\">\n <span class=\"axm-workflow-activity-instances-page__meta-k\">\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.performed-by' | translate | async }}\n </span>\n <span\n class=\"axm-workflow-activity-instances-page__meta-v\"\n [attr.title]=\"row.performedByDisplay\"\n [textContent]=\"row.performedByDisplay\"\n ></span>\n </div>\n </div>\n\n <div class=\"axm-workflow-activity-instances-page__json-row\">\n <div class=\"axm-workflow-activity-instances-page__field axm-workflow-activity-instances-page__field--full\">\n <ax-label>\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.input' | translate | async }}\n </ax-label>\n <div class=\"axm-workflow-activity-instances-page__json-viewer\">\n <ax-json-viewer [json]=\"toViewerRoot(row.inputForViewer)\"></ax-json-viewer>\n </div>\n </div>\n <div class=\"axm-workflow-activity-instances-page__field axm-workflow-activity-instances-page__field--full\">\n <ax-label>\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.output' | translate | async }}\n </ax-label>\n <div class=\"axm-workflow-activity-instances-page__json-viewer\">\n <ax-json-viewer [json]=\"toViewerRoot(row.outputForViewer)\"></ax-json-viewer>\n </div>\n </div>\n </div>\n\n @if (row.isHumanTask) {\n <div class=\"axm-workflow-activity-instances-page__field axm-workflow-activity-instances-page__field--full\">\n <ax-label>\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.human-assignees' | translate | async }}\n </ax-label>\n <div class=\"axm-workflow-activity-instances-page__value\" [textContent]=\"row.humanAssigneesDisplay\"></div>\n </div>\n }\n </div>\n }\n </div>\n }\n }\n</div>\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-modules-workflow-management-index-DC_9M9dk.mjs","sources":["../../../../libs/modules/workflow-management/src/lib/features/workflow-instance-activity-instances-page/WORKFLOW_INSTANCE_ACTIVITY_INSTANCES_PAGE_COMPONENT_KEY.ts","../../../../libs/modules/workflow-management/src/lib/features/workflow-instance-activity-instances-page/workflow-instance-activity-instances-page-component.provider.ts","../../../../libs/modules/workflow-management/src/lib/features/workflow-instance-activity-instances-page/workflow-instance-activity-instances-page.component.ts","../../../../libs/modules/workflow-management/src/lib/features/workflow-instance-activity-instances-page/workflow-instance-activity-instances-page.component.html"],"sourcesContent":["/** Component key for the Workflow Instance Activity instances tab. Register via AXP_PAGE_COMPONENT_PROVIDER. */\nexport const WORKFLOW_INSTANCE_ACTIVITY_INSTANCES_PAGE_COMPONENT_KEY =\n 'workflow-instance-activity-instances-page';\n","import {\n AXPPageComponentDefinition,\n AXPPageComponentProvider,\n} from '@acorex/platform/layout/components';\nimport { Injectable } from '@angular/core';\nimport { WORKFLOW_INSTANCE_ACTIVITY_INSTANCES_PAGE_COMPONENT_KEY } from './WORKFLOW_INSTANCE_ACTIVITY_INSTANCES_PAGE_COMPONENT_KEY';\n\n//#region ---- Workflow Instance Activity Instances Page Component Provider ----\n\n@Injectable()\nexport class AXMWorkflowInstanceActivityInstancesPageComponentProvider implements AXPPageComponentProvider {\n async components(): Promise<AXPPageComponentDefinition[]> {\n return [\n {\n key: WORKFLOW_INSTANCE_ACTIVITY_INSTANCES_PAGE_COMPONENT_KEY,\n loader: () =>\n import('./workflow-instance-activity-instances-page.component').then(\n (m) => m.AXMWorkflowInstanceActivityInstancesPageComponent,\n ),\n },\n ];\n }\n}\n\n//#endregion\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, input, signal, untracked } from '@angular/core';\nimport { AXJsonViewerModule } from '@acorex/components/json-viewer';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPPageLayoutBase, AXPPageLayoutBaseComponent } from '@acorex/platform/layout/views';\nimport {\n AXPWorkflowActivityInstance,\n AXPWorkflowDefinition,\n AXPWorkflowInstance,\n AXPActivityExecutionContextState,\n AXPWorkflowDefinitionService,\n} from '@acorex/platform/workflow';\n\n//#region ---- Types ----\n\n/** One row in the readonly Activity instances list (derived from engine state, definition graph, and persisted audit keys). */\nexport interface AXMWorkflowActivityInstanceViewRow {\n contextId: string;\n nodeId: string;\n activityTitle: string;\n activityTypeName: string;\n isHumanTask: boolean;\n status: string;\n startedAt: string;\n completedAt: string | null;\n /** Connection port / outcome that was taken after this step (from workflow state variables). */\n outcomeDisplay: string;\n /** Input from graph definition — passed to `ax-json-viewer`. */\n inputForViewer: unknown;\n /** Captured output for this step — passed to `ax-json-viewer`. */\n outputForViewer: unknown;\n humanAssigneesDisplay: string;\n /** Who performed the step (from persisted `completedByLabel` / `completedByUserId` when available). */\n performedByDisplay: string;\n}\n\n//#endregion\n\n//#region ---- Helpers (display only) ----\n\nfunction formatReadableActivityName(value: string): string {\n return value\n .replace(/^workflow-activity:/, '')\n .replace(/([a-z])([A-Z])/g, '$1 $2')\n .replace(/[-_]/g, ' ')\n .split(' ')\n .filter((token) => token.length > 0)\n .map((token) => token.charAt(0).toUpperCase() + token.slice(1))\n .join(' ');\n}\n\nfunction normalizeUserIds(value: unknown): string[] {\n if (value == null) {\n return [];\n }\n if (Array.isArray(value)) {\n return value.filter((v): v is string => typeof v === 'string' && v.trim().length > 0);\n }\n if (typeof value === 'string' && value.trim().length > 0) {\n return [value.trim()];\n }\n return [];\n}\n\nfunction formatHumanAssigneesFromPayload(payload: Record<string, unknown> | null | undefined): string {\n if (!payload) {\n return '';\n }\n const assigned = normalizeUserIds(payload['assignedUserIds']);\n const candidateUsers = normalizeUserIds(payload['candidateUserIds']);\n const candidateRoles = normalizeUserIds(payload['candidateRoleIds']);\n const labels = [\n ...assigned.map((id) => `User:${id}`),\n ...candidateUsers.map((id) => `Candidate:${id}`),\n ...candidateRoles.map((id) => `Role:${id}`),\n ];\n const unique = [...new Set(labels)];\n return unique.length > 0 ? unique.join(', ') : '';\n}\n\nfunction formatPerformedBy(\n label: unknown,\n id: unknown,\n empty: string,\n): string {\n const ls = label != null && String(label).trim() !== '' ? String(label).trim() : '';\n const idStr = id != null && String(id).trim() !== '' ? String(id).trim() : '';\n if (ls && idStr) {\n return `${ls} (${idStr})`;\n }\n if (ls) {\n return ls;\n }\n if (idStr) {\n return idStr;\n }\n return empty;\n}\n\nfunction resolveActivityTitle(\n graphActivity: AXPWorkflowActivityInstance | undefined,\n nodeId: string,\n): string {\n const rawTitle = graphActivity?.inputs?.['title'];\n if (typeof rawTitle === 'string' && rawTitle.trim().length > 0) {\n return rawTitle.trim();\n }\n if (graphActivity?.name) {\n return formatReadableActivityName(graphActivity.name);\n }\n return formatReadableActivityName(nodeId);\n}\n\nfunction resolveOutputForViewer(\n props: Record<string, unknown>,\n nodeId: string,\n ctx: AXPActivityExecutionContextState,\n): unknown {\n const key = `${nodeId}_activityOutput`;\n if (key in props && props[key] !== undefined) {\n return props[key];\n }\n if (ctx.activityState != null) {\n return ctx.activityState;\n }\n const p = ctx.properties;\n if (p && typeof p === 'object' && Object.keys(p as object).length > 0) {\n return p;\n }\n return null;\n}\n\nfunction buildRows(\n instance: AXPWorkflowInstance | null | undefined,\n definition: AXPWorkflowDefinition | null | undefined,\n emptyAssigneesLabel: string,\n notAvailableLabel: string,\n): AXMWorkflowActivityInstanceViewRow[] {\n if (!instance?.workflowState) {\n return [];\n }\n const props = (instance.workflowState.properties ?? {}) as Record<string, unknown>;\n const contexts = instance.workflowState.activityExecutionContexts ?? [];\n const activities = definition?.graph?.activities ?? [];\n const findActivity = (nodeId: string) => activities.find((a) => a.id === nodeId);\n const extended = instance as AXPWorkflowInstance & {\n bookmarks?: Array<{\n activityId?: string;\n payload?: Record<string, unknown> | null;\n isConsumed?: boolean;\n consumed?: boolean;\n }>;\n };\n const bookmarks = extended.bookmarks ?? [];\n\n const rows: AXMWorkflowActivityInstanceViewRow[] = contexts.map(\n (ctx: AXPActivityExecutionContextState) => {\n const nodeId = ctx.scheduledActivityNodeId;\n const graphActivity = findActivity(nodeId);\n const isHumanTask =\n graphActivity?.name === 'workflow-activity:human-task' ||\n graphActivity?.name === 'workflow-activity:cartable';\n const bookmark = bookmarks.find((b) => b.activityId === nodeId);\n const payload = bookmark?.payload && typeof bookmark.payload === 'object' ? bookmark.payload : null;\n let humanAssignees = isHumanTask ? formatHumanAssigneesFromPayload(payload) : '';\n if (isHumanTask && !humanAssignees) {\n humanAssignees = emptyAssigneesLabel;\n }\n\n const outKey = `${nodeId}_outcome`;\n const outcomeRaw = props[outKey];\n const outcomeDisplay =\n outcomeRaw !== undefined && outcomeRaw !== null && String(outcomeRaw).length > 0\n ? String(outcomeRaw)\n : notAvailableLabel;\n\n const inputForViewer: unknown = graphActivity?.inputs ?? null;\n\n const outputForViewer = resolveOutputForViewer(props, nodeId, ctx);\n\n const labelKey = `${nodeId}_completedByLabel`;\n const idKey = `${nodeId}_completedByUserId`;\n const performedByDisplay = formatPerformedBy(props[labelKey], props[idKey], notAvailableLabel);\n\n return {\n contextId: ctx.id,\n nodeId,\n activityTitle: resolveActivityTitle(graphActivity, nodeId),\n activityTypeName: graphActivity?.name ?? notAvailableLabel,\n isHumanTask,\n status: String(ctx.status ?? ''),\n startedAt: ctx.startedAt ?? '',\n completedAt: ctx.completedAt ?? null,\n outcomeDisplay,\n inputForViewer,\n outputForViewer,\n humanAssigneesDisplay: isHumanTask ? humanAssignees : notAvailableLabel,\n performedByDisplay,\n };\n },\n );\n\n rows.sort((a, b) => {\n const ta = new Date(a.startedAt).getTime();\n const tb = new Date(b.startedAt).getTime();\n if (ta !== tb) {\n return ta - tb;\n }\n return a.contextId.localeCompare(b.contextId);\n });\n\n return rows;\n}\n\n//#endregion\n\n//#region ---- Component ----\n\n/**\n * Readonly entity detail page: lists activity execution contexts for a workflow instance.\n * Data: `rootContext.workflowInstance` + definition loaded by `definitionId`, plus audit keys on\n * `workflowState.properties` (`_outcome`, `_activityOutput`, `_completedByUserId` / `_completedByLabel`).\n */\n@Component({\n selector: 'axm-workflow-instance-activity-instances-page',\n standalone: true,\n imports: [\n CommonModule,\n AXJsonViewerModule,\n AXDecoratorModule,\n AXLabelModule,\n AXLoadingModule,\n AXTranslationModule,\n ],\n templateUrl: './workflow-instance-activity-instances-page.component.html',\n styleUrl: './workflow-instance-activity-instances-page.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMWorkflowInstanceActivityInstancesPageComponent,\n },\n ],\n})\nexport class AXMWorkflowInstanceActivityInstancesPageComponent extends AXPPageLayoutBaseComponent {\n //#region ---- Inputs ----\n\n rootContext = input<Record<string, unknown>>();\n\n pageConfig = input<Record<string, unknown>>();\n\n //#endregion\n\n //#region ---- Services & Dependencies ----\n\n private readonly workflowDefinitionService = inject(AXPWorkflowDefinitionService);\n\n //#endregion\n\n //#region ---- Definition load ----\n\n private readonly definition = signal<AXPWorkflowDefinition | null>(null);\n protected readonly definitionLoading = signal(false);\n private loadSeq = 0;\n\n //#endregion\n\n constructor() {\n super();\n effect(() => {\n const ctx = this.rootContext();\n const defId =\n ctx && typeof ctx === 'object' && typeof (ctx as Record<string, unknown>)['definitionId'] === 'string'\n ? ((ctx as Record<string, unknown>)['definitionId'] as string)\n : undefined;\n if (!defId) {\n untracked(() => {\n this.definition.set(null);\n this.definitionLoading.set(false);\n });\n return;\n }\n const seq = ++this.loadSeq;\n void (async () => {\n this.definitionLoading.set(true);\n try {\n const def = await this.workflowDefinitionService.getWorkflowByName(defId);\n if (seq !== this.loadSeq) {\n return;\n }\n untracked(() => this.definition.set(def ?? null));\n } finally {\n if (seq === this.loadSeq) {\n this.definitionLoading.set(false);\n }\n }\n })();\n });\n }\n\n /**\n * Maps activity execution status to `status-chips.scss` modifier classes (uses theme `--ax-sys-color-*` tokens).\n */\n statusChipModifier(status: string): 'primary' | 'success' | 'warning' | 'danger' | 'neutral' | 'secondary' {\n const s = (status ?? '').trim().toLowerCase();\n if (s === 'running' || s === 'pending' || s === 'executing') {\n return 'primary';\n }\n if (s === 'completed' || s === 'succeeded' || s === 'success') {\n return 'success';\n }\n if (s === 'canceled' || s === 'cancelled') {\n return 'neutral';\n }\n if (s === 'faulted' || s === 'failed' || s === 'error') {\n return 'danger';\n }\n if (s === 'suspended' || s === 'waiting') {\n return 'warning';\n }\n return 'secondary';\n }\n\n /**\n * Normalizes a value for `ax-json-viewer` (expects a root object; primitives/arrays are wrapped like the platform json-viewer widget).\n */\n toViewerRoot(value: unknown): Record<string, unknown> {\n if (value === null || value === undefined) {\n return {};\n }\n if (typeof value === 'object' && !Array.isArray(value)) {\n return value as Record<string, unknown>;\n }\n return { value };\n }\n\n //#region ---- View rows ----\n\n protected readonly rows = computed(() => {\n const ctx = this.rootContext();\n const wi = ctx?.['workflowInstance'] as AXPWorkflowInstance | undefined;\n const def = this.definition();\n return buildRows(wi, def ?? null, '—', '—');\n });\n\n //#endregion\n}\n\n//#endregion\n","<div class=\"axm-workflow-activity-instances-page ax-block ax-p-4 ax-min-h-[30vh] ax-overflow-y-auto\">\n @if (definitionLoading()) {\n <div class=\"axm-workflow-activity-instances-page__state\">\n <ax-loading></ax-loading>\n </div>\n } @else {\n @if (rows().length === 0) {\n <p class=\"axm-workflow-activity-instances-page__state ax-typo-caption\">\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.empty' | translate | async }}\n </p>\n } @else {\n <div class=\"axm-workflow-activity-instances-page__list\">\n @for (row of rows(); track row.contextId) {\n <div class=\"axm-workflow-activity-instances-page__card ax-block\">\n <div class=\"axm-workflow-activity-instances-page__header\">\n <h3 [textContent]=\"row.activityTitle\" class=\"axm-workflow-activity-instances-page__title\"></h3>\n <div class=\"axm-workflow-activity-instances-page__header-status\">\n <span class=\"axm-workflow-activity-instances-page__status-label\">\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.status' | translate | async }}\n </span>\n <span\n class=\"ax-inline-flex ax-items-center ax-rounded-md ax-px-2.5 ax-py-1 ax-text-xs ax-font-semibold ax-leading-none axp-status-chip\"\n [ngClass]=\"'axp-status-chip--' + statusChipModifier(row.status)\"\n >\n {{ row.status }}\n </span>\n </div>\n </div>\n\n <div class=\"axm-workflow-activity-instances-page__meta-grid\" role=\"list\">\n <div class=\"axm-workflow-activity-instances-page__meta-pair\" role=\"listitem\">\n <span class=\"axm-workflow-activity-instances-page__meta-k\">\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.activity-type' | translate | async }}\n </span>\n <span\n class=\"axm-workflow-activity-instances-page__meta-v\"\n [attr.title]=\"row.activityTypeName\"\n [textContent]=\"row.activityTypeName\"\n ></span>\n </div>\n <div class=\"axm-workflow-activity-instances-page__meta-pair\" role=\"listitem\">\n <span class=\"axm-workflow-activity-instances-page__meta-k\">\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.node-id' | translate | async }}\n </span>\n <span\n class=\"axm-workflow-activity-instances-page__meta-v axm-workflow-activity-instances-page__meta-v--code\"\n [attr.title]=\"row.nodeId\"\n [textContent]=\"row.nodeId\"\n ></span>\n </div>\n <div class=\"axm-workflow-activity-instances-page__meta-pair\" role=\"listitem\">\n <span class=\"axm-workflow-activity-instances-page__meta-k\">\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.outcome' | translate | async }}\n </span>\n <span\n class=\"axm-workflow-activity-instances-page__meta-v\"\n [attr.title]=\"row.outcomeDisplay\"\n [textContent]=\"row.outcomeDisplay\"\n ></span>\n </div>\n <div class=\"axm-workflow-activity-instances-page__meta-pair\" role=\"listitem\">\n <span class=\"axm-workflow-activity-instances-page__meta-k\">\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.started-at' | translate | async }}\n </span>\n <span\n class=\"axm-workflow-activity-instances-page__meta-v\"\n [attr.title]=\"row.startedAt || '—'\"\n [textContent]=\"row.startedAt || '—'\"\n ></span>\n </div>\n <div class=\"axm-workflow-activity-instances-page__meta-pair\" role=\"listitem\">\n <span class=\"axm-workflow-activity-instances-page__meta-k\">\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.completed-at' | translate | async }}\n </span>\n <span\n class=\"axm-workflow-activity-instances-page__meta-v\"\n [attr.title]=\"row.completedAt || '—'\"\n [textContent]=\"row.completedAt || '—'\"\n ></span>\n </div>\n <div class=\"axm-workflow-activity-instances-page__meta-pair\" role=\"listitem\">\n <span class=\"axm-workflow-activity-instances-page__meta-k\">\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.performed-by' | translate | async }}\n </span>\n <span\n class=\"axm-workflow-activity-instances-page__meta-v\"\n [attr.title]=\"row.performedByDisplay\"\n [textContent]=\"row.performedByDisplay\"\n ></span>\n </div>\n </div>\n\n <div class=\"axm-workflow-activity-instances-page__json-row\">\n <div class=\"axm-workflow-activity-instances-page__field axm-workflow-activity-instances-page__field--full\">\n <ax-label>\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.input' | translate | async }}\n </ax-label>\n <div class=\"axm-workflow-activity-instances-page__json-viewer\">\n <ax-json-viewer [json]=\"toViewerRoot(row.inputForViewer)\"></ax-json-viewer>\n </div>\n </div>\n <div class=\"axm-workflow-activity-instances-page__field axm-workflow-activity-instances-page__field--full\">\n <ax-label>\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.output' | translate | async }}\n </ax-label>\n <div class=\"axm-workflow-activity-instances-page__json-viewer\">\n <ax-json-viewer [json]=\"toViewerRoot(row.outputForViewer)\"></ax-json-viewer>\n </div>\n </div>\n </div>\n\n @if (row.isHumanTask) {\n <div class=\"axm-workflow-activity-instances-page__field axm-workflow-activity-instances-page__field--full\">\n <ax-label>\n {{ '@workflow-management:workflow-instances.entities.workflow-instance.pages.activity-instances.field.human-assignees' | translate | async }}\n </ax-label>\n <div class=\"axm-workflow-activity-instances-page__value\" [textContent]=\"row.humanAssigneesDisplay\"></div>\n </div>\n }\n </div>\n }\n </div>\n }\n }\n</div>\n"],"names":["i5"],"mappings":"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"}
@@ -8,7 +8,7 @@ import * as i4 from '@acorex/components/search-box';
8
8
  import { AXSearchBoxModule } from '@acorex/components/search-box';
9
9
  import * as i3 from '@acorex/components/select-box';
10
10
  import { AXSelectBoxModule } from '@acorex/components/select-box';
11
- import * as i5$1 from '@acorex/core/translation';
11
+ import * as i7 from '@acorex/core/translation';
12
12
  import { AXTranslationService, AXTranslationModule } from '@acorex/core/translation';
13
13
  import { AXPBroadcastEventService, AXPDataGenerator } from '@acorex/platform/core';
14
14
  import { AXPPropertyViewerComponent, buildPropertyViewerTabsFromProperties } from '@acorex/platform/layout/components';
@@ -678,7 +678,7 @@ class AXMWorkflowDefinitionActivitiesPageComponent extends AXPPageLayoutBaseComp
678
678
  provide: AXPPageLayoutBase,
679
679
  useExisting: AXMWorkflowDefinitionActivitiesPageComponent,
680
680
  },
681
- ], viewQueries: [{ propertyName: "propertyViewerRef", first: true, predicate: AXPPropertyViewerComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"axm-workflow-definition-activities\">\n <div class=\"axm-workflow-definition-activities__columns\">\n <section class=\"axm-workflow-definition-activities__list\" aria-label=\"Activity steps\">\n @if (activities().length === 0) {\n <p class=\"axm-workflow-definition-activities__empty\">\n {{\n ('@workflow-management:workflow-definitions.entities.workflow-definition.pages.activities.empty'\n | translate\n | async) ?? ''\n }}\n </p>\n }\n @for (row of activities(); track row.id) {\n <div\n class=\"axm-workflow-definition-activities__row\"\n [class.axm-workflow-definition-activities__row--selected]=\"selectedRowId() === row.id\"\n (click)=\"selectRow(row.id)\"\n >\n <div class=\"axm-workflow-definition-activities__row-main\">\n <ax-select-box\n class=\"axm-workflow-definition-activities__select\"\n [ngModel]=\"row.name\"\n [dataSource]=\"activitySelectOptions()\"\n valueField=\"value\"\n textField=\"text\"\n [placeholder]=\"\n ('@workflow-management:workflow-definitions.entities.workflow-definition.pages.activities.select-activity'\n | translate\n | async) ?? ''\n \"\n (onValueChanged)=\"onActivityTypeChange(row.id, $event)\"\n >\n <ax-search-box></ax-search-box>\n <ax-clear-button></ax-clear-button>\n </ax-select-box>\n </div>\n <div class=\"axm-workflow-definition-activities__row-actions\" (click)=\"$event.stopPropagation()\">\n <ax-button\n class=\"ax-flat\"\n color=\"danger\"\n [attr.aria-label]=\"('@general:actions.delete.title' | translate | async) ?? ''\"\n (onClick)=\"removeStep(row.id)\"\n >\n <i class=\"fa-light fa-trash\"></i>\n </ax-button>\n </div>\n </div>\n }\n </section>\n\n <section class=\"axm-workflow-definition-activities__editor\" aria-label=\"Activity editor\">\n @if (activities().length > 0) {\n <div class=\"axm-workflow-definition-activities__start\">\n <span class=\"axm-workflow-definition-activities__field-label\">\n {{\n ('@workflow-management:workflow-definitions.entities.workflow-definition.pages.activities.start-activity'\n | translate\n | async) ?? ''\n }}\n </span>\n <ax-select-box\n class=\"axm-workflow-definition-activities__select\"\n [ngModel]=\"startActivityId()\"\n [dataSource]=\"startActivityItems()\"\n valueField=\"value\"\n textField=\"text\"\n (onValueChanged)=\"onStartActivityChange($event)\"\n ></ax-select-box>\n </div>\n }\n\n @if (selectedRow(); as row) {\n @if (row.name.trim() !== '') {\n <div class=\"axm-workflow-definition-activities__connections\">\n <h3 class=\"axm-workflow-definition-activities__section-title\">\n {{\n ('@workflow-management:workflow-definitions.entities.workflow-definition.pages.activities.connections.title'\n | translate\n | async) ?? ''\n }}\n </h3>\n <p class=\"axm-workflow-definition-activities__section-hint\">\n {{\n ('@workflow-management:workflow-definitions.entities.workflow-definition.pages.activities.connections.hint'\n | translate\n | async) ?? ''\n }}\n </p>\n @for (outcome of selectedActivityOutcomeRows(); track outcome.port) {\n <div class=\"axm-workflow-definition-activities__connection-row\">\n <span class=\"axm-workflow-definition-activities__outcome\">{{ outcome.label }}</span>\n <ax-select-box\n class=\"axm-workflow-definition-activities__select axm-workflow-definition-activities__connection-target\"\n [ngModel]=\"connectionSelectValue(row.id, outcome.port)\"\n [dataSource]=\"connectionTargetsFor(row.id)\"\n valueField=\"value\"\n textField=\"text\"\n [placeholder]=\"\n ('@workflow-management:workflow-definitions.entities.workflow-definition.pages.activities.connection-target-placeholder'\n | translate\n | async) ?? ''\n \"\n (onValueChanged)=\"onOutgoingConnectionChange(row.id, outcome.port, $event)\"\n ></ax-select-box>\n </div>\n }\n </div>\n }\n\n @if (viewerTabs().length > 0) {\n <div class=\"axm-workflow-definition-activities__inputs\">\n <h3 class=\"axm-workflow-definition-activities__section-title\">\n {{\n ('@workflow-management:workflow-definitions.entities.workflow-definition.pages.activities.inputs.title'\n | translate\n | async) ?? ''\n }}\n </h3>\n <axp-property-viewer\n [tabsInput]=\"viewerTabs()\"\n mode=\"advanced\"\n (onChanged)=\"onViewerChanged($event)\"\n ></axp-property-viewer>\n </div>\n } @else if (row.name.trim() === '') {\n <p class=\"axm-workflow-definition-activities__hint\">\n {{\n ('@workflow-management:workflow-definitions.entities.workflow-definition.pages.activities.editor-placeholder'\n | translate\n | async) ?? ''\n }}\n </p>\n }\n } @else if (activities().length > 0) {\n <p class=\"axm-workflow-definition-activities__hint\">\n {{\n ('@workflow-management:workflow-definitions.entities.workflow-definition.pages.activities.select-step'\n | translate\n | async) ?? ''\n }}\n </p>\n }\n </section>\n </div>\n</div>\n", styles: [".axm-workflow-definition-activities{display:flex;flex-direction:column;gap:1rem;min-height:280px}.axm-workflow-definition-activities__columns{display:grid;grid-template-columns:minmax(260px,1fr) minmax(340px,2fr);gap:1.25rem;align-items:start}@media(max-width:960px){.axm-workflow-definition-activities__columns{grid-template-columns:1fr}.axm-workflow-definition-activities__editor{position:static;max-height:none}}.axm-workflow-definition-activities__list{display:flex;flex-direction:column;gap:.5rem;max-height:calc(100vh - 220px);overflow-y:auto;padding-inline-end:4px}.axm-workflow-definition-activities__row{display:flex;flex-direction:row;align-items:flex-start;gap:.5rem;padding:.65rem .75rem;border-radius:var(--ax-radius-md, 6px);border:1px solid var(--ax-border-color, rgba(0, 0, 0, .08));background:var(--ax-surface-color, #fff);cursor:pointer;flex-shrink:0}.axm-workflow-definition-activities__row--selected{border-color:var(--ax-primary-color, #2563eb);box-shadow:0 0 0 1px var(--ax-primary-color, #2563eb)}.axm-workflow-definition-activities__row-main{flex:1;min-width:0}.axm-workflow-definition-activities__select{width:100%}.axm-workflow-definition-activities__row-actions{display:flex;flex-wrap:wrap;gap:.25rem;flex-shrink:0}.axm-workflow-definition-activities__editor{position:sticky;top:.75rem;align-self:start;max-height:calc(100vh - 220px);overflow-y:auto;padding:.75rem;border-radius:var(--ax-radius-md, 6px);border:1px solid var(--ax-border-color, rgba(0, 0, 0, .08));background:var(--ax-surface-color, #fff);box-shadow:0 1px 2px #0000000a}.axm-workflow-definition-activities__start{display:flex;flex-direction:column;gap:.35rem;margin-bottom:1rem;padding-bottom:1rem;border-bottom:1px solid var(--ax-border-color, rgba(0, 0, 0, .08))}.axm-workflow-definition-activities__field-label{font-size:.8125rem;font-weight:600;color:var(--ax-text-secondary-color, #64748b)}.axm-workflow-definition-activities__connections{margin-bottom:1.25rem}.axm-workflow-definition-activities__inputs{margin-top:.25rem}.axm-workflow-definition-activities__section-title{margin:0 0 .35rem;font-size:1rem;font-weight:600}.axm-workflow-definition-activities__section-hint{margin:0 0 .75rem;font-size:.8125rem;color:var(--ax-text-secondary-color, #64748b)}.axm-workflow-definition-activities__connection-row{display:grid;grid-template-columns:minmax(72px,.35fr) 1fr;gap:.5rem .75rem;align-items:center;margin-bottom:.5rem}@media(max-width:520px){.axm-workflow-definition-activities__connection-row{grid-template-columns:1fr}}.axm-workflow-definition-activities__outcome{font-size:.8125rem;font-weight:600;color:var(--ax-text-color, #1e293b);word-break:break-word}.axm-workflow-definition-activities__connection-target{min-width:0}.axm-workflow-definition-activities__empty,.axm-workflow-definition-activities__hint{margin:0;color:var(--ax-text-secondary-color, #64748b);font-size:.9375rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i5.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "ngmodule", type: AXSelectBoxModule }, { kind: "component", type: i3.AXSelectBoxComponent, selector: "ax-select-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "minValue", "maxValue", "value", "state", "name", "id", "type", "look", "multiple", "valueField", "textField", "disabledField", "textTemplate", "selectedItems", "isItemTruncated", "showItemTooltip", "itemHeight", "maxVisibleItems", "dataSource", "minRecordsForSearch", "caption", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "dropdownWidth", "searchBoxAutoFocus"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onOpened", "onClosed", "onItemSelected", "onItemClick"] }, { kind: "ngmodule", type: AXSearchBoxModule }, { kind: "component", type: i4.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "class", "delayTime", "type", "autoSearch"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXFormModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "component", type: AXPPropertyViewerComponent, selector: "axp-property-viewer", inputs: ["tabsInput", "mode", "bindingExpressionEditorMode"], outputs: ["onChanged"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i5$1.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
681
+ ], viewQueries: [{ propertyName: "propertyViewerRef", first: true, predicate: AXPPropertyViewerComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"axm-workflow-definition-activities\">\n <div class=\"axm-workflow-definition-activities__columns\">\n <section class=\"axm-workflow-definition-activities__list\" aria-label=\"Activity steps\">\n @if (activities().length === 0) {\n <p class=\"axm-workflow-definition-activities__empty\">\n {{\n ('@workflow-management:workflow-definitions.entities.workflow-definition.pages.activities.empty'\n | translate\n | async) ?? ''\n }}\n </p>\n }\n @for (row of activities(); track row.id) {\n <div\n class=\"axm-workflow-definition-activities__row\"\n [class.axm-workflow-definition-activities__row--selected]=\"selectedRowId() === row.id\"\n (click)=\"selectRow(row.id)\"\n >\n <div class=\"axm-workflow-definition-activities__row-main\">\n <ax-select-box\n class=\"axm-workflow-definition-activities__select\"\n [ngModel]=\"row.name\"\n [dataSource]=\"activitySelectOptions()\"\n valueField=\"value\"\n textField=\"text\"\n [placeholder]=\"\n ('@workflow-management:workflow-definitions.entities.workflow-definition.pages.activities.select-activity'\n | translate\n | async) ?? ''\n \"\n (onValueChanged)=\"onActivityTypeChange(row.id, $event)\"\n >\n <ax-search-box></ax-search-box>\n <ax-clear-button></ax-clear-button>\n </ax-select-box>\n </div>\n <div class=\"axm-workflow-definition-activities__row-actions\" (click)=\"$event.stopPropagation()\">\n <ax-button\n class=\"ax-flat\"\n color=\"danger\"\n [attr.aria-label]=\"('@general:actions.delete.title' | translate | async) ?? ''\"\n (onClick)=\"removeStep(row.id)\"\n >\n <i class=\"fa-light fa-trash\"></i>\n </ax-button>\n </div>\n </div>\n }\n </section>\n\n <section class=\"axm-workflow-definition-activities__editor\" aria-label=\"Activity editor\">\n @if (activities().length > 0) {\n <div class=\"axm-workflow-definition-activities__start\">\n <span class=\"axm-workflow-definition-activities__field-label\">\n {{\n ('@workflow-management:workflow-definitions.entities.workflow-definition.pages.activities.start-activity'\n | translate\n | async) ?? ''\n }}\n </span>\n <ax-select-box\n class=\"axm-workflow-definition-activities__select\"\n [ngModel]=\"startActivityId()\"\n [dataSource]=\"startActivityItems()\"\n valueField=\"value\"\n textField=\"text\"\n (onValueChanged)=\"onStartActivityChange($event)\"\n ></ax-select-box>\n </div>\n }\n\n @if (selectedRow(); as row) {\n @if (row.name.trim() !== '') {\n <div class=\"axm-workflow-definition-activities__connections\">\n <h3 class=\"axm-workflow-definition-activities__section-title\">\n {{\n ('@workflow-management:workflow-definitions.entities.workflow-definition.pages.activities.connections.title'\n | translate\n | async) ?? ''\n }}\n </h3>\n <p class=\"axm-workflow-definition-activities__section-hint\">\n {{\n ('@workflow-management:workflow-definitions.entities.workflow-definition.pages.activities.connections.hint'\n | translate\n | async) ?? ''\n }}\n </p>\n @for (outcome of selectedActivityOutcomeRows(); track outcome.port) {\n <div class=\"axm-workflow-definition-activities__connection-row\">\n <span class=\"axm-workflow-definition-activities__outcome\">{{ outcome.label }}</span>\n <ax-select-box\n class=\"axm-workflow-definition-activities__select axm-workflow-definition-activities__connection-target\"\n [ngModel]=\"connectionSelectValue(row.id, outcome.port)\"\n [dataSource]=\"connectionTargetsFor(row.id)\"\n valueField=\"value\"\n textField=\"text\"\n [placeholder]=\"\n ('@workflow-management:workflow-definitions.entities.workflow-definition.pages.activities.connection-target-placeholder'\n | translate\n | async) ?? ''\n \"\n (onValueChanged)=\"onOutgoingConnectionChange(row.id, outcome.port, $event)\"\n ></ax-select-box>\n </div>\n }\n </div>\n }\n\n @if (viewerTabs().length > 0) {\n <div class=\"axm-workflow-definition-activities__inputs\">\n <h3 class=\"axm-workflow-definition-activities__section-title\">\n {{\n ('@workflow-management:workflow-definitions.entities.workflow-definition.pages.activities.inputs.title'\n | translate\n | async) ?? ''\n }}\n </h3>\n <axp-property-viewer\n [tabsInput]=\"viewerTabs()\"\n mode=\"advanced\"\n (onChanged)=\"onViewerChanged($event)\"\n ></axp-property-viewer>\n </div>\n } @else if (row.name.trim() === '') {\n <p class=\"axm-workflow-definition-activities__hint\">\n {{\n ('@workflow-management:workflow-definitions.entities.workflow-definition.pages.activities.editor-placeholder'\n | translate\n | async) ?? ''\n }}\n </p>\n }\n } @else if (activities().length > 0) {\n <p class=\"axm-workflow-definition-activities__hint\">\n {{\n ('@workflow-management:workflow-definitions.entities.workflow-definition.pages.activities.select-step'\n | translate\n | async) ?? ''\n }}\n </p>\n }\n </section>\n </div>\n</div>\n", styles: [".axm-workflow-definition-activities{display:flex;flex-direction:column;gap:1rem;min-height:280px}.axm-workflow-definition-activities__columns{display:grid;grid-template-columns:minmax(260px,1fr) minmax(340px,2fr);gap:1.25rem;align-items:start}@media(max-width:960px){.axm-workflow-definition-activities__columns{grid-template-columns:1fr}.axm-workflow-definition-activities__editor{position:static;max-height:none}}.axm-workflow-definition-activities__list{display:flex;flex-direction:column;gap:.5rem;max-height:calc(100vh - 220px);overflow-y:auto;padding-inline-end:4px}.axm-workflow-definition-activities__row{display:flex;flex-direction:row;align-items:flex-start;gap:.5rem;padding:.65rem .75rem;border-radius:var(--ax-radius-md, 6px);border:1px solid var(--ax-border-color, rgba(0, 0, 0, .08));background:var(--ax-surface-color, #fff);cursor:pointer;flex-shrink:0}.axm-workflow-definition-activities__row--selected{border-color:var(--ax-primary-color, #2563eb);box-shadow:0 0 0 1px var(--ax-primary-color, #2563eb)}.axm-workflow-definition-activities__row-main{flex:1;min-width:0}.axm-workflow-definition-activities__select{width:100%}.axm-workflow-definition-activities__row-actions{display:flex;flex-wrap:wrap;gap:.25rem;flex-shrink:0}.axm-workflow-definition-activities__editor{position:sticky;top:.75rem;align-self:start;max-height:calc(100vh - 220px);overflow-y:auto;padding:.75rem;border-radius:var(--ax-radius-md, 6px);border:1px solid var(--ax-border-color, rgba(0, 0, 0, .08));background:var(--ax-surface-color, #fff);box-shadow:0 1px 2px #0000000a}.axm-workflow-definition-activities__start{display:flex;flex-direction:column;gap:.35rem;margin-bottom:1rem;padding-bottom:1rem;border-bottom:1px solid var(--ax-border-color, rgba(0, 0, 0, .08))}.axm-workflow-definition-activities__field-label{font-size:.8125rem;font-weight:600;color:var(--ax-text-secondary-color, #64748b)}.axm-workflow-definition-activities__connections{margin-bottom:1.25rem}.axm-workflow-definition-activities__inputs{margin-top:.25rem}.axm-workflow-definition-activities__section-title{margin:0 0 .35rem;font-size:1rem;font-weight:600}.axm-workflow-definition-activities__section-hint{margin:0 0 .75rem;font-size:.8125rem;color:var(--ax-text-secondary-color, #64748b)}.axm-workflow-definition-activities__connection-row{display:grid;grid-template-columns:minmax(72px,.35fr) 1fr;gap:.5rem .75rem;align-items:center;margin-bottom:.5rem}@media(max-width:520px){.axm-workflow-definition-activities__connection-row{grid-template-columns:1fr}}.axm-workflow-definition-activities__outcome{font-size:.8125rem;font-weight:600;color:var(--ax-text-color, #1e293b);word-break:break-word}.axm-workflow-definition-activities__connection-target{min-width:0}.axm-workflow-definition-activities__empty,.axm-workflow-definition-activities__hint{margin:0;color:var(--ax-text-secondary-color, #64748b);font-size:.9375rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i5.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "ngmodule", type: AXSelectBoxModule }, { kind: "component", type: i3.AXSelectBoxComponent, selector: "ax-select-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "minValue", "maxValue", "value", "state", "name", "id", "type", "look", "multiple", "valueField", "textField", "disabledField", "textTemplate", "selectedItems", "isItemTruncated", "showItemTooltip", "itemHeight", "maxVisibleItems", "dataSource", "minRecordsForSearch", "caption", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "dropdownWidth", "searchBoxAutoFocus"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onOpened", "onClosed", "onItemSelected", "onItemClick"] }, { kind: "ngmodule", type: AXSearchBoxModule }, { kind: "component", type: i4.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "class", "delayTime", "type", "autoSearch"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXFormModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "component", type: AXPPropertyViewerComponent, selector: "axp-property-viewer", inputs: ["tabsInput", "mode", "bindingExpressionEditorMode"], outputs: ["onChanged"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
682
682
  }
683
683
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMWorkflowDefinitionActivitiesPageComponent, decorators: [{
684
684
  type: Component,
@@ -723,4 +723,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
723
723
  }] });
724
724
 
725
725
  export { AXMWorkflowDefinitionActivitiesPageComponent, AXMWorkflowDefinitionActivitiesPageComponentProvider, WORKFLOW_DEFINITION_ACTIVITIES_PAGE_COMPONENT_KEY };
726
- //# sourceMappingURL=acorex-modules-workflow-management-index-V4OesZTq.mjs.map
726
+ //# sourceMappingURL=acorex-modules-workflow-management-index-jin24dmb.mjs.map