@acorex/modules 21.0.0-next.12 → 21.0.0-next.13

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 (34) hide show
  1. package/data-management/index.d.ts +35 -2
  2. package/document-management/index.d.ts +76 -261
  3. package/fesm2022/acorex-modules-data-management.mjs +231 -2
  4. package/fesm2022/acorex-modules-data-management.mjs.map +1 -1
  5. package/fesm2022/acorex-modules-document-management.mjs +529 -2717
  6. package/fesm2022/acorex-modules-document-management.mjs.map +1 -1
  7. package/fesm2022/{acorex-modules-human-capital-management-leave-request.entity-BDSyXKSF.mjs → acorex-modules-human-capital-management-leave-request.entity-CviI9xJC.mjs} +2 -2
  8. package/fesm2022/acorex-modules-human-capital-management-leave-request.entity-CviI9xJC.mjs.map +1 -0
  9. package/fesm2022/acorex-modules-human-capital-management.mjs +350 -695
  10. package/fesm2022/acorex-modules-human-capital-management.mjs.map +1 -1
  11. package/fesm2022/{acorex-modules-task-management-task-board.page-Cgxdk78j.mjs → acorex-modules-task-management-task-board.page-B_S373L-.mjs} +47 -54
  12. package/fesm2022/acorex-modules-task-management-task-board.page-B_S373L-.mjs.map +1 -0
  13. package/fesm2022/acorex-modules-task-management.mjs +39 -11
  14. package/fesm2022/acorex-modules-task-management.mjs.map +1 -1
  15. package/fesm2022/acorex-modules-workflow-management-activity-definition.entity-BbBEPTBa.mjs +258 -0
  16. package/fesm2022/acorex-modules-workflow-management-activity-definition.entity-BbBEPTBa.mjs.map +1 -0
  17. package/fesm2022/acorex-modules-workflow-management-workflow-definition.entity-nJMBL0qt.mjs +371 -0
  18. package/fesm2022/acorex-modules-workflow-management-workflow-definition.entity-nJMBL0qt.mjs.map +1 -0
  19. package/fesm2022/acorex-modules-workflow-management-workflow-instance.entity-Pso0oRN5.mjs +313 -0
  20. package/fesm2022/acorex-modules-workflow-management-workflow-instance.entity-Pso0oRN5.mjs.map +1 -0
  21. package/fesm2022/acorex-modules-workflow-management.mjs +710 -2536
  22. package/fesm2022/acorex-modules-workflow-management.mjs.map +1 -1
  23. package/human-capital-management/index.d.ts +19 -79
  24. package/package.json +14 -14
  25. package/task-management/index.d.ts +12 -1
  26. package/workflow-management/index.d.ts +220 -265
  27. package/fesm2022/acorex-modules-human-capital-management-leave-request-task-popover.component-yGvT9kSL.mjs +0 -381
  28. package/fesm2022/acorex-modules-human-capital-management-leave-request-task-popover.component-yGvT9kSL.mjs.map +0 -1
  29. package/fesm2022/acorex-modules-human-capital-management-leave-request.entity-BDSyXKSF.mjs.map +0 -1
  30. package/fesm2022/acorex-modules-task-management-task-board.page-Cgxdk78j.mjs.map +0 -1
  31. package/fesm2022/acorex-modules-workflow-management-cartable-page.component-Bso0XRkJ.mjs +0 -296
  32. package/fesm2022/acorex-modules-workflow-management-cartable-page.component-Bso0XRkJ.mjs.map +0 -1
  33. package/fesm2022/acorex-modules-workflow-management-index-xB36g4F1.mjs +0 -469
  34. package/fesm2022/acorex-modules-workflow-management-index-xB36g4F1.mjs.map +0 -1
@@ -1,296 +0,0 @@
1
- import * as i5$1 from '@angular/common';
2
- import { CommonModule } from '@angular/common';
3
- import * as i0 from '@angular/core';
4
- import { inject, signal, computed, ChangeDetectionStrategy, Component } from '@angular/core';
5
- import { FormsModule } from '@angular/forms';
6
- import * as i2 from '@acorex/components/button';
7
- import { AXButtonModule } from '@acorex/components/button';
8
- import { AXButtonGroupModule } from '@acorex/components/button-group';
9
- import * as i2$1 from '@acorex/components/decorators';
10
- import { AXDecoratorModule } from '@acorex/components/decorators';
11
- import * as i3 from '@acorex/components/label';
12
- import { AXLabelModule } from '@acorex/components/label';
13
- import * as i4 from '@acorex/components/search-box';
14
- import { AXSearchBoxModule } from '@acorex/components/search-box';
15
- import * as i5 from '@acorex/components/select-box';
16
- import { AXSelectBoxModule } from '@acorex/components/select-box';
17
- import * as i6 from '@acorex/components/loading';
18
- import { AXLoadingModule } from '@acorex/components/loading';
19
- import * as i9 from '@acorex/core/date-time';
20
- import { AXDateTimeModule } from '@acorex/core/date-time';
21
- import * as i7 from '@acorex/core/translation';
22
- import { AXTranslationModule } from '@acorex/core/translation';
23
- import { AXPEntityService } from '@acorex/platform/layout/entity';
24
- import { AXPPageLayoutBaseComponent, AXPPageLayoutComponent, AXPPageLayoutBase } from '@acorex/platform/layout/views';
25
- import { AXPThemeLayoutBlockComponent } from '@acorex/platform/layout/components';
26
- import { AXPCommandService } from '@acorex/platform/runtime';
27
- import { Router } from '@angular/router';
28
- import { AXMWorkflowManagementWorkItemEntityService, RootConfig } from './acorex-modules-workflow-management.mjs';
29
- import { AXPActivityDefinitionService } from '@acorex/platform/workflow';
30
-
31
- class AXMCartablePageComponent extends AXPPageLayoutBaseComponent {
32
- constructor() {
33
- super(...arguments);
34
- //#region ---- Services & Dependencies ----
35
- this.workItemService = inject(AXMWorkflowManagementWorkItemEntityService);
36
- this.entityService = inject(AXPEntityService);
37
- this.commandService = inject(AXPCommandService);
38
- this.router = inject(Router);
39
- this.activityDefinitionService = inject(AXPActivityDefinitionService);
40
- //#endregion
41
- //#region ---- State ----
42
- this.activeTab = signal('all', ...(ngDevMode ? [{ debugName: "activeTab" }] : []));
43
- this.workItems = signal([], ...(ngDevMode ? [{ debugName: "workItems" }] : []));
44
- this.isLoading = signal(false, ...(ngDevMode ? [{ debugName: "isLoading" }] : []));
45
- this.searchQuery = signal('', ...(ngDevMode ? [{ debugName: "searchQuery" }] : []));
46
- this.selectedStatus = signal('all', ...(ngDevMode ? [{ debugName: "selectedStatus" }] : []));
47
- this.selectedPriority = signal('all', ...(ngDevMode ? [{ debugName: "selectedPriority" }] : []));
48
- this.selectedKind = signal('all', ...(ngDevMode ? [{ debugName: "selectedKind" }] : []));
49
- this.workItemOutcomes = signal(new Map(), ...(ngDevMode ? [{ debugName: "workItemOutcomes" }] : []));
50
- //#endregion
51
- //#region ---- Computed Properties ----
52
- this.filteredWorkItems = computed(() => {
53
- let items = this.workItems();
54
- // Filter by tab
55
- const tab = this.activeTab();
56
- if (tab === 'my-tasks') {
57
- const currentUserId = this.sessionService.user?.id;
58
- items = items.filter((item) => item.assignedUserId === currentUserId || item.claimedByUserId === currentUserId);
59
- }
60
- else if (tab === 'pending') {
61
- items = items.filter((item) => item.status === 'Pending');
62
- }
63
- else if (tab === 'in-progress') {
64
- items = items.filter((item) => item.status === 'InProgress');
65
- }
66
- else if (tab === 'completed') {
67
- items = items.filter((item) => item.status === 'Completed');
68
- }
69
- else if (tab === 'cancelled') {
70
- items = items.filter((item) => item.status === 'Cancelled');
71
- }
72
- // Filter by search query
73
- const query = this.searchQuery().toLowerCase();
74
- if (query) {
75
- items = items.filter((item) => item.title?.toLowerCase().includes(query) ||
76
- item.description?.toLowerCase().includes(query) ||
77
- item.activityName?.toLowerCase().includes(query));
78
- }
79
- // Filter by status
80
- const status = this.selectedStatus();
81
- if (status && status !== 'all') {
82
- items = items.filter((item) => item.status === status);
83
- }
84
- // Filter by priority
85
- const priority = this.selectedPriority();
86
- if (priority && priority !== 'all') {
87
- items = items.filter((item) => item.priority === priority);
88
- }
89
- // Filter by kind
90
- const kind = this.selectedKind();
91
- if (kind && kind !== 'all') {
92
- items = items.filter((item) => item.kind === kind);
93
- }
94
- return items;
95
- }, ...(ngDevMode ? [{ debugName: "filteredWorkItems" }] : []));
96
- }
97
- //#endregion
98
- //#region ---- Page Layout Overrides ----
99
- async ngOnInit() {
100
- await super.ngOnInit();
101
- await this.loadWorkItems();
102
- }
103
- async getPageTitle() {
104
- return await this.translateService.translateAsync('@workflow-management:cartable.components.cartable-page.title');
105
- }
106
- //#endregion
107
- //#region ---- Data Loading ----
108
- async loadWorkItems() {
109
- this.isLoading.set(true);
110
- try {
111
- const result = await this.workItemService.query({
112
- skip: 0,
113
- take: 1000, // Load all for now
114
- sort: [{ name: 'createdAt', dir: 'desc' }],
115
- });
116
- const items = result.items || [];
117
- this.workItems.set(items);
118
- // Load outcomes for each work item
119
- const outcomesMap = new Map();
120
- for (const item of items) {
121
- if (item.status === 'Claimed' || item.status === 'InProgress') {
122
- const outcomes = await this.getActivityOutcomes(item);
123
- outcomesMap.set(item.id, outcomes);
124
- }
125
- }
126
- this.workItemOutcomes.set(outcomesMap);
127
- }
128
- catch (error) {
129
- console.error('[CartablePage] Error loading work items:', error);
130
- }
131
- finally {
132
- this.isLoading.set(false);
133
- }
134
- }
135
- //#endregion
136
- //#region ---- UI Handlers ----
137
- switchTab(tab) {
138
- this.activeTab.set(tab);
139
- }
140
- handleSearchChange(event) {
141
- this.searchQuery.set(event.value || '');
142
- }
143
- handleStatusChange(event) {
144
- this.selectedStatus.set(event.value || 'all');
145
- }
146
- handlePriorityChange(event) {
147
- this.selectedPriority.set(event.value || 'all');
148
- }
149
- handleKindChange(event) {
150
- this.selectedKind.set(event.value || 'all');
151
- }
152
- async handleClaim(workItem) {
153
- try {
154
- const result = await this.commandService.execute('WorkflowManagement.WorkItem:Claim', {
155
- workItemId: workItem.id,
156
- });
157
- if (result?.success) {
158
- await this.loadWorkItems();
159
- }
160
- }
161
- catch (error) {
162
- console.error('[CartablePage] Error claiming work item:', error);
163
- }
164
- }
165
- async handleComplete(workItem, outcome) {
166
- try {
167
- const result = await this.commandService.execute('WorkflowManagement.WorkItem:Complete', {
168
- workItemId: workItem.id,
169
- outcome,
170
- });
171
- if (result?.success) {
172
- const data = result.data;
173
- // Reload work items to reflect updated status
174
- await this.loadWorkItems();
175
- // If there's a next task, show it to the user
176
- if (data?.nextTask) {
177
- const nextTask = data.nextTask;
178
- const activityName = nextTask.activityType || nextTask.activityName || 'Unknown';
179
- this.toastService.show({
180
- color: 'primary',
181
- title: 'Next Activity',
182
- content: `Workflow continues with: ${activityName}`,
183
- closeButton: true,
184
- timeOut: 5000,
185
- });
186
- }
187
- else if (data?.state?.status === 'completed') {
188
- this.toastService.show({
189
- color: 'success',
190
- title: 'Workflow Completed',
191
- content: 'The workflow has been completed successfully.',
192
- closeButton: true,
193
- timeOut: 5000,
194
- });
195
- }
196
- }
197
- }
198
- catch (error) {
199
- console.error('[CartablePage] Error completing work item:', error);
200
- }
201
- }
202
- async getActivityOutcomes(workItem) {
203
- if (!workItem.activityName) {
204
- return ['Done'];
205
- }
206
- try {
207
- const activityDef = await this.activityDefinitionService.getActivityByName(workItem.activityName);
208
- if (activityDef?.outcomes && activityDef.outcomes.length > 0) {
209
- return activityDef.outcomes;
210
- }
211
- }
212
- catch (error) {
213
- console.error('[CartablePage] Error getting activity definition:', error);
214
- }
215
- // Default outcomes based on activity type
216
- if (workItem.activityName === 'workflow-activity:show-confirm-popup') {
217
- return ['ok', 'cancel'];
218
- }
219
- return ['Done'];
220
- }
221
- getOutcomeLabel(outcome) {
222
- // Map common outcomes to user-friendly labels
223
- const labelMap = {
224
- 'ok': '@workflow-management:cartable.actions.outcomes.ok',
225
- 'cancel': '@workflow-management:cartable.actions.outcomes.cancel',
226
- 'done': '@workflow-management:cartable.actions.outcomes.done',
227
- 'submit': '@workflow-management:cartable.actions.outcomes.submit',
228
- 'approve': '@workflow-management:cartable.actions.outcomes.approve',
229
- 'reject': '@workflow-management:cartable.actions.outcomes.reject',
230
- 'signed': '@workflow-management:cartable.actions.outcomes.signed',
231
- };
232
- return labelMap[outcome.toLowerCase()] || outcome;
233
- }
234
- getOutcomeColor(outcome) {
235
- const colorMap = {
236
- 'ok': 'success',
237
- 'done': 'success',
238
- 'submit': 'success',
239
- 'approve': 'success',
240
- 'signed': 'success',
241
- 'cancel': 'danger',
242
- 'reject': 'danger',
243
- };
244
- return colorMap[outcome.toLowerCase()] || 'primary';
245
- }
246
- async handleCancel(workItem) {
247
- try {
248
- const result = await this.commandService.execute('WorkflowManagement.WorkItem:Cancel', {
249
- workItemId: workItem.id,
250
- });
251
- if (result?.success) {
252
- await this.loadWorkItems();
253
- }
254
- }
255
- catch (error) {
256
- console.error('[CartablePage] Error cancelling work item:', error);
257
- }
258
- }
259
- async handleViewDetails(workItem) {
260
- const path = this.entityService.createPath(RootConfig.module.name, RootConfig.entities.workItem.name, workItem.id);
261
- await this.router.navigate([path]);
262
- }
263
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMCartablePageComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
264
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: AXMCartablePageComponent, isStandalone: true, selector: "axm-cartable-page", providers: [
265
- {
266
- provide: AXPPageLayoutBase,
267
- useExisting: AXMCartablePageComponent,
268
- },
269
- ], usesInheritance: true, ngImport: i0, template: "<axp-page-layout *translate=\"let t\">\n <axp-page-toolbar>\n <axp-layout-prefix>\n <!-- Search and Filters -->\n <div class=\"ax-flex ax-gap-4 ax-items-end ax-flex-wrap\">\n <!-- Search -->\n <div class=\"ax-flex-1 ax-min-w-64\">\n <ax-search-box\n [(value)]=\"searchQuery\"\n (onValueChanged)=\"handleSearchChange($event)\"\n [placeholder]=\"t('@general:actions.search.title', { scope: 'general' }) | async\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n </div>\n\n <!-- Filters -->\n <div class=\"ax-flex ax-gap-4 ax-flex-wrap\">\n <div class=\"ax-flex ax-flex-col ax-gap-1\">\n <ax-label>{{ '@workflow-management:cartable.components.cartable-page.filters.status.title' | translate | async }}</ax-label>\n <ax-select-box\n [value]=\"selectedStatus()\"\n (onValueChanged)=\"handleStatusChange($event)\"\n [dataSource]=\"[\n { value: 'all', text: ('@general:terms.interface.selection.all-items' | translate | async) || 'All' },\n { value: 'Pending', text: t('@workflow-management:work-items.states.pending') | async },\n { value: 'Claimed', text: t('@workflow-management:work-items.states.claimed') | async },\n { value: 'InProgress', text: t('@workflow-management:work-items.states.in-progress') | async },\n { value: 'Completed', text: t('@workflow-management:work-items.states.completed') | async },\n { value: 'Cancelled', text: t('@workflow-management:work-items.states.cancelled') | async },\n ]\"\n [valueField]=\"'value'\"\n [textField]=\"'text'\"\n class=\"ax-w-48\"\n ></ax-select-box>\n </div>\n\n <div class=\"ax-flex ax-flex-col ax-gap-1\">\n <ax-label>{{ '@workflow-management:cartable.components.cartable-page.filters.priority.title' | translate | async }}</ax-label>\n <ax-select-box\n [value]=\"selectedPriority()\"\n (onValueChanged)=\"handlePriorityChange($event)\"\n [dataSource]=\"[\n { value: 'all', text: ('@general:terms.interface.selection.all-items' | translate | async) || 'All' },\n { value: 'Low', text: t('@workflow-management:work-items.priorities.low') | async },\n { value: 'Normal', text: t('@workflow-management:work-items.priorities.normal') | async },\n { value: 'High', text: t('@workflow-management:work-items.priorities.high') | async },\n { value: 'Urgent', text: t('@workflow-management:work-items.priorities.urgent') | async },\n ]\"\n [valueField]=\"'value'\"\n [textField]=\"'text'\"\n class=\"ax-w-48\"\n ></ax-select-box>\n </div>\n\n <div class=\"ax-flex ax-flex-col ax-gap-1\">\n <ax-label>{{ '@workflow-management:cartable.components.cartable-page.filters.kind.title' | translate | async }}</ax-label>\n <ax-select-box\n [value]=\"selectedKind()\"\n (onValueChanged)=\"handleKindChange($event)\"\n [dataSource]=\"[\n { value: 'all', text: ('@general:terms.interface.selection.all-items' | translate | async) || 'All' },\n { value: 'HumanTask', text: t('@workflow-management:work-items.kinds.human-task') | async },\n { value: 'Approval', text: t('@workflow-management:work-items.kinds.approval') | async },\n { value: 'Review', text: t('@workflow-management:work-items.kinds.review') | async },\n { value: 'Notification', text: t('@workflow-management:work-items.kinds.notification') | async },\n { value: 'Other', text: t('@workflow-management:work-items.kinds.other') | async },\n ]\"\n [valueField]=\"'value'\"\n [textField]=\"'text'\"\n class=\"ax-w-48\"\n ></ax-select-box>\n </div>\n </div>\n </div>\n </axp-layout-prefix>\n </axp-page-toolbar>\n\n <axp-page-content>\n <axp-layout-body>\n <!-- Work Items List -->\n @if (isLoading()) {\n <div class=\"ax-flex ax-justify-center ax-items-center ax-h-64\">\n <ax-loading></ax-loading>\n </div>\n } @else if (filteredWorkItems().length === 0) {\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-64 ax-text-center\">\n <i class=\"fa-light fa-clipboard-list ax-text-6xl ax-text-secondary ax-mb-4\"></i>\n <h3 class=\"ax-text-xl ax-font-bold ax-mb-2\">\n {{\n '@workflow-management:cartable.components.cartable-page.empty-states.no-work-items.title'\n | translate\n | async\n }}\n </h3>\n <p class=\"ax-text-secondary\">\n {{\n '@workflow-management:cartable.components.cartable-page.empty-states.no-work-items.description'\n | translate\n | async\n }}\n </p>\n </div>\n } @else {\n <div class=\"ax-space-y-4\">\n @for (workItem of filteredWorkItems(); track workItem.id) {\n <div class=\"ax-border ax-rounded ax-p-4 ax-shadow-sm hover:ax-shadow-md ax-transition-shadow\">\n <div class=\"ax-flex ax-justify-between ax-items-start ax-mb-2\">\n <div class=\"ax-flex-1\">\n <h3 class=\"ax-text-lg ax-font-semibold ax-mb-1\">{{ workItem.title }}</h3>\n @if (workItem.description) {\n <p class=\"ax-text-sm ax-text-secondary ax-mb-2\">{{ workItem.description }}</p>\n }\n <div class=\"ax-flex ax-gap-4 ax-flex-wrap ax-text-xs ax-text-secondary\">\n <span class=\"ax-flex ax-items-center ax-gap-1\">\n <ax-icon icon=\"fa-light fa-tag\"></ax-icon>\n @switch (workItem.status) {\n @case ('Pending') {\n {{ '@workflow-management:work-items.states.pending' | translate | async }}\n }\n @case ('Claimed') {\n {{ '@workflow-management:work-items.states.claimed' | translate | async }}\n }\n @case ('InProgress') {\n {{ '@workflow-management:work-items.states.in-progress' | translate | async }}\n }\n @case ('Completed') {\n {{ '@workflow-management:work-items.states.completed' | translate | async }}\n }\n @case ('Cancelled') {\n {{ '@workflow-management:work-items.states.cancelled' | translate | async }}\n }\n @case ('Rejected') {\n {{ '@workflow-management:work-items.states.rejected' | translate | async }}\n }\n @default {\n {{ workItem.status }}\n }\n }\n </span>\n <span class=\"ax-flex ax-items-center ax-gap-1\">\n <ax-icon icon=\"fa-light fa-flag\"></ax-icon>\n @switch (workItem.priority) {\n @case ('Low') {\n {{ '@workflow-management:work-items.priorities.low' | translate | async }}\n }\n @case ('Normal') {\n {{ '@workflow-management:work-items.priorities.normal' | translate | async }}\n }\n @case ('High') {\n {{ '@workflow-management:work-items.priorities.high' | translate | async }}\n }\n @case ('Urgent') {\n {{ '@workflow-management:work-items.priorities.urgent' | translate | async }}\n }\n @default {\n {{ workItem.priority }}\n }\n }\n </span>\n <span class=\"ax-flex ax-items-center ax-gap-1\">\n <ax-icon icon=\"fa-light fa-puzzle-piece\"></ax-icon>\n @switch (workItem.kind) {\n @case ('HumanTask') {\n {{ '@workflow-management:work-items.kinds.human-task' | translate | async }}\n }\n @case ('Approval') {\n {{ '@workflow-management:work-items.kinds.approval' | translate | async }}\n }\n @case ('Review') {\n {{ '@workflow-management:work-items.kinds.review' | translate | async }}\n }\n @case ('Notification') {\n {{ '@workflow-management:work-items.kinds.notification' | translate | async }}\n }\n @case ('Other') {\n {{ '@workflow-management:work-items.kinds.other' | translate | async }}\n }\n @default {\n {{ workItem.kind }}\n }\n }\n </span>\n @if (workItem.dueDate) {\n <span class=\"ax-flex ax-items-center ax-gap-1\">\n <ax-icon icon=\"fa-light fa-calendar\"></ax-icon>\n {{ workItem.dueDate | axDate: 'short' }}\n </span>\n }\n </div>\n </div>\n <div class=\"ax-flex ax-gap-2\">\n @if (workItem.status === 'Pending' && !workItem.claimedByUserId) {\n <ax-button\n [text]=\"'@workflow-management:cartable.actions.claim.title' | translate | async\"\n color=\"primary\"\n look=\"twotone\"\n class=\"ax-sm\"\n (onClick)=\"handleClaim(workItem)\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-hand\"></ax-icon>\n </ax-prefix>\n </ax-button>\n }\n @if (workItem.status === 'Claimed' || workItem.status === 'InProgress') {\n @for (outcome of workItemOutcomes().get(workItem.id) || []; track outcome) {\n <ax-button\n [text]=\"getOutcomeLabel(outcome) | translate | async\"\n [color]=\"getOutcomeColor(outcome)\"\n look=\"twotone\"\n class=\"ax-sm\"\n (onClick)=\"handleComplete(workItem, outcome)\"\n >\n <ax-prefix>\n @if (outcome.toLowerCase() === 'ok' || outcome.toLowerCase() === 'done' || outcome.toLowerCase() === 'approve' || outcome.toLowerCase() === 'signed') {\n <ax-icon icon=\"fa-light fa-check\"></ax-icon>\n } @else if (outcome.toLowerCase() === 'cancel' || outcome.toLowerCase() === 'reject') {\n <ax-icon icon=\"fa-light fa-times\"></ax-icon>\n } @else {\n <ax-icon icon=\"fa-light fa-circle\"></ax-icon>\n }\n </ax-prefix>\n </ax-button>\n }\n }\n @if (workItem.status !== 'Completed' && workItem.status !== 'Cancelled') {\n <ax-button\n [text]=\"'@workflow-management:cartable.actions.cancel.title' | translate | async\"\n color=\"danger\"\n look=\"twotone\"\n class=\"ax-sm\"\n (onClick)=\"handleCancel(workItem)\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-times\"></ax-icon>\n </ax-prefix>\n </ax-button>\n }\n <ax-button\n [text]=\"'@workflow-management:cartable.actions.view-details.title' | translate | async\"\n look=\"twotone\"\n class=\"ax-sm\"\n (onClick)=\"handleViewDetails(workItem)\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-eye\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n </div>\n </div>\n }\n </div>\n }\n </axp-layout-body>\n </axp-page-content>\n</axp-page-layout>\n", styles: [":host{display:block;height:100%}axp-page-content{display:block;height:100%;overflow-y:auto}axp-theme-layout-block{display:block;padding:1rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { 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: AXButtonGroupModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i2$1.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "component", type: i2$1.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXLabelModule }, { kind: "component", type: i3.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { 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: AXSelectBoxModule }, { kind: "component", type: i5.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: AXLoadingModule }, { kind: "component", type: i6.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "ngmodule", type: AXDateTimeModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i7.AXTranslatorDirective, selector: "[translate]" }, { kind: "component", type: AXPPageLayoutComponent, selector: "axp-page-layout" }, { kind: "component", type: AXPThemeLayoutBlockComponent, selector: " axp-page-content, axp-page-footer-container, axp-page-footer, axp-page-header, axp-page-header-container, axp-page-toolbar, axp-layout-content, axp-layout-page-content, axp-layout-sections, axp-layout-body, axp-layout-page-body, axp-layout-prefix, axp-layout-suffix, axp-layout-title-bar, axp-layout-title, axp-layout-title-actions, axp-layout-nav-button, axp-layout-description, axp-layout-breadcrumbs, axp-layout-list-action, " }, { kind: "pipe", type: i5$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i9.AXDateTimePipe, name: "axDate" }, { kind: "pipe", type: i7.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
270
- }
271
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMCartablePageComponent, decorators: [{
272
- type: Component,
273
- args: [{ selector: 'axm-cartable-page', standalone: true, imports: [
274
- CommonModule,
275
- FormsModule,
276
- AXButtonModule,
277
- AXButtonGroupModule,
278
- AXDecoratorModule,
279
- AXLabelModule,
280
- AXSearchBoxModule,
281
- AXSelectBoxModule,
282
- AXLoadingModule,
283
- AXDateTimeModule,
284
- AXTranslationModule,
285
- AXPPageLayoutComponent,
286
- AXPThemeLayoutBlockComponent,
287
- ], providers: [
288
- {
289
- provide: AXPPageLayoutBase,
290
- useExisting: AXMCartablePageComponent,
291
- },
292
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<axp-page-layout *translate=\"let t\">\n <axp-page-toolbar>\n <axp-layout-prefix>\n <!-- Search and Filters -->\n <div class=\"ax-flex ax-gap-4 ax-items-end ax-flex-wrap\">\n <!-- Search -->\n <div class=\"ax-flex-1 ax-min-w-64\">\n <ax-search-box\n [(value)]=\"searchQuery\"\n (onValueChanged)=\"handleSearchChange($event)\"\n [placeholder]=\"t('@general:actions.search.title', { scope: 'general' }) | async\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n </div>\n\n <!-- Filters -->\n <div class=\"ax-flex ax-gap-4 ax-flex-wrap\">\n <div class=\"ax-flex ax-flex-col ax-gap-1\">\n <ax-label>{{ '@workflow-management:cartable.components.cartable-page.filters.status.title' | translate | async }}</ax-label>\n <ax-select-box\n [value]=\"selectedStatus()\"\n (onValueChanged)=\"handleStatusChange($event)\"\n [dataSource]=\"[\n { value: 'all', text: ('@general:terms.interface.selection.all-items' | translate | async) || 'All' },\n { value: 'Pending', text: t('@workflow-management:work-items.states.pending') | async },\n { value: 'Claimed', text: t('@workflow-management:work-items.states.claimed') | async },\n { value: 'InProgress', text: t('@workflow-management:work-items.states.in-progress') | async },\n { value: 'Completed', text: t('@workflow-management:work-items.states.completed') | async },\n { value: 'Cancelled', text: t('@workflow-management:work-items.states.cancelled') | async },\n ]\"\n [valueField]=\"'value'\"\n [textField]=\"'text'\"\n class=\"ax-w-48\"\n ></ax-select-box>\n </div>\n\n <div class=\"ax-flex ax-flex-col ax-gap-1\">\n <ax-label>{{ '@workflow-management:cartable.components.cartable-page.filters.priority.title' | translate | async }}</ax-label>\n <ax-select-box\n [value]=\"selectedPriority()\"\n (onValueChanged)=\"handlePriorityChange($event)\"\n [dataSource]=\"[\n { value: 'all', text: ('@general:terms.interface.selection.all-items' | translate | async) || 'All' },\n { value: 'Low', text: t('@workflow-management:work-items.priorities.low') | async },\n { value: 'Normal', text: t('@workflow-management:work-items.priorities.normal') | async },\n { value: 'High', text: t('@workflow-management:work-items.priorities.high') | async },\n { value: 'Urgent', text: t('@workflow-management:work-items.priorities.urgent') | async },\n ]\"\n [valueField]=\"'value'\"\n [textField]=\"'text'\"\n class=\"ax-w-48\"\n ></ax-select-box>\n </div>\n\n <div class=\"ax-flex ax-flex-col ax-gap-1\">\n <ax-label>{{ '@workflow-management:cartable.components.cartable-page.filters.kind.title' | translate | async }}</ax-label>\n <ax-select-box\n [value]=\"selectedKind()\"\n (onValueChanged)=\"handleKindChange($event)\"\n [dataSource]=\"[\n { value: 'all', text: ('@general:terms.interface.selection.all-items' | translate | async) || 'All' },\n { value: 'HumanTask', text: t('@workflow-management:work-items.kinds.human-task') | async },\n { value: 'Approval', text: t('@workflow-management:work-items.kinds.approval') | async },\n { value: 'Review', text: t('@workflow-management:work-items.kinds.review') | async },\n { value: 'Notification', text: t('@workflow-management:work-items.kinds.notification') | async },\n { value: 'Other', text: t('@workflow-management:work-items.kinds.other') | async },\n ]\"\n [valueField]=\"'value'\"\n [textField]=\"'text'\"\n class=\"ax-w-48\"\n ></ax-select-box>\n </div>\n </div>\n </div>\n </axp-layout-prefix>\n </axp-page-toolbar>\n\n <axp-page-content>\n <axp-layout-body>\n <!-- Work Items List -->\n @if (isLoading()) {\n <div class=\"ax-flex ax-justify-center ax-items-center ax-h-64\">\n <ax-loading></ax-loading>\n </div>\n } @else if (filteredWorkItems().length === 0) {\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-64 ax-text-center\">\n <i class=\"fa-light fa-clipboard-list ax-text-6xl ax-text-secondary ax-mb-4\"></i>\n <h3 class=\"ax-text-xl ax-font-bold ax-mb-2\">\n {{\n '@workflow-management:cartable.components.cartable-page.empty-states.no-work-items.title'\n | translate\n | async\n }}\n </h3>\n <p class=\"ax-text-secondary\">\n {{\n '@workflow-management:cartable.components.cartable-page.empty-states.no-work-items.description'\n | translate\n | async\n }}\n </p>\n </div>\n } @else {\n <div class=\"ax-space-y-4\">\n @for (workItem of filteredWorkItems(); track workItem.id) {\n <div class=\"ax-border ax-rounded ax-p-4 ax-shadow-sm hover:ax-shadow-md ax-transition-shadow\">\n <div class=\"ax-flex ax-justify-between ax-items-start ax-mb-2\">\n <div class=\"ax-flex-1\">\n <h3 class=\"ax-text-lg ax-font-semibold ax-mb-1\">{{ workItem.title }}</h3>\n @if (workItem.description) {\n <p class=\"ax-text-sm ax-text-secondary ax-mb-2\">{{ workItem.description }}</p>\n }\n <div class=\"ax-flex ax-gap-4 ax-flex-wrap ax-text-xs ax-text-secondary\">\n <span class=\"ax-flex ax-items-center ax-gap-1\">\n <ax-icon icon=\"fa-light fa-tag\"></ax-icon>\n @switch (workItem.status) {\n @case ('Pending') {\n {{ '@workflow-management:work-items.states.pending' | translate | async }}\n }\n @case ('Claimed') {\n {{ '@workflow-management:work-items.states.claimed' | translate | async }}\n }\n @case ('InProgress') {\n {{ '@workflow-management:work-items.states.in-progress' | translate | async }}\n }\n @case ('Completed') {\n {{ '@workflow-management:work-items.states.completed' | translate | async }}\n }\n @case ('Cancelled') {\n {{ '@workflow-management:work-items.states.cancelled' | translate | async }}\n }\n @case ('Rejected') {\n {{ '@workflow-management:work-items.states.rejected' | translate | async }}\n }\n @default {\n {{ workItem.status }}\n }\n }\n </span>\n <span class=\"ax-flex ax-items-center ax-gap-1\">\n <ax-icon icon=\"fa-light fa-flag\"></ax-icon>\n @switch (workItem.priority) {\n @case ('Low') {\n {{ '@workflow-management:work-items.priorities.low' | translate | async }}\n }\n @case ('Normal') {\n {{ '@workflow-management:work-items.priorities.normal' | translate | async }}\n }\n @case ('High') {\n {{ '@workflow-management:work-items.priorities.high' | translate | async }}\n }\n @case ('Urgent') {\n {{ '@workflow-management:work-items.priorities.urgent' | translate | async }}\n }\n @default {\n {{ workItem.priority }}\n }\n }\n </span>\n <span class=\"ax-flex ax-items-center ax-gap-1\">\n <ax-icon icon=\"fa-light fa-puzzle-piece\"></ax-icon>\n @switch (workItem.kind) {\n @case ('HumanTask') {\n {{ '@workflow-management:work-items.kinds.human-task' | translate | async }}\n }\n @case ('Approval') {\n {{ '@workflow-management:work-items.kinds.approval' | translate | async }}\n }\n @case ('Review') {\n {{ '@workflow-management:work-items.kinds.review' | translate | async }}\n }\n @case ('Notification') {\n {{ '@workflow-management:work-items.kinds.notification' | translate | async }}\n }\n @case ('Other') {\n {{ '@workflow-management:work-items.kinds.other' | translate | async }}\n }\n @default {\n {{ workItem.kind }}\n }\n }\n </span>\n @if (workItem.dueDate) {\n <span class=\"ax-flex ax-items-center ax-gap-1\">\n <ax-icon icon=\"fa-light fa-calendar\"></ax-icon>\n {{ workItem.dueDate | axDate: 'short' }}\n </span>\n }\n </div>\n </div>\n <div class=\"ax-flex ax-gap-2\">\n @if (workItem.status === 'Pending' && !workItem.claimedByUserId) {\n <ax-button\n [text]=\"'@workflow-management:cartable.actions.claim.title' | translate | async\"\n color=\"primary\"\n look=\"twotone\"\n class=\"ax-sm\"\n (onClick)=\"handleClaim(workItem)\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-hand\"></ax-icon>\n </ax-prefix>\n </ax-button>\n }\n @if (workItem.status === 'Claimed' || workItem.status === 'InProgress') {\n @for (outcome of workItemOutcomes().get(workItem.id) || []; track outcome) {\n <ax-button\n [text]=\"getOutcomeLabel(outcome) | translate | async\"\n [color]=\"getOutcomeColor(outcome)\"\n look=\"twotone\"\n class=\"ax-sm\"\n (onClick)=\"handleComplete(workItem, outcome)\"\n >\n <ax-prefix>\n @if (outcome.toLowerCase() === 'ok' || outcome.toLowerCase() === 'done' || outcome.toLowerCase() === 'approve' || outcome.toLowerCase() === 'signed') {\n <ax-icon icon=\"fa-light fa-check\"></ax-icon>\n } @else if (outcome.toLowerCase() === 'cancel' || outcome.toLowerCase() === 'reject') {\n <ax-icon icon=\"fa-light fa-times\"></ax-icon>\n } @else {\n <ax-icon icon=\"fa-light fa-circle\"></ax-icon>\n }\n </ax-prefix>\n </ax-button>\n }\n }\n @if (workItem.status !== 'Completed' && workItem.status !== 'Cancelled') {\n <ax-button\n [text]=\"'@workflow-management:cartable.actions.cancel.title' | translate | async\"\n color=\"danger\"\n look=\"twotone\"\n class=\"ax-sm\"\n (onClick)=\"handleCancel(workItem)\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-times\"></ax-icon>\n </ax-prefix>\n </ax-button>\n }\n <ax-button\n [text]=\"'@workflow-management:cartable.actions.view-details.title' | translate | async\"\n look=\"twotone\"\n class=\"ax-sm\"\n (onClick)=\"handleViewDetails(workItem)\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-eye\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n </div>\n </div>\n }\n </div>\n }\n </axp-layout-body>\n </axp-page-content>\n</axp-page-layout>\n", styles: [":host{display:block;height:100%}axp-page-content{display:block;height:100%;overflow-y:auto}axp-theme-layout-block{display:block;padding:1rem}\n"] }]
293
- }] });
294
-
295
- export { AXMCartablePageComponent };
296
- //# sourceMappingURL=acorex-modules-workflow-management-cartable-page.component-Bso0XRkJ.mjs.map