@acorex/modules 21.0.0-next.14 → 21.0.0-next.16

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 (127) hide show
  1. package/assessment-management/README.md +11 -0
  2. package/assessment-management/index.d.ts +122 -24
  3. package/common/index.d.ts +6 -1
  4. package/data-management/index.d.ts +67 -48
  5. package/document-management/index.d.ts +261 -76
  6. package/fesm2022/{acorex-modules-assessment-management-acorex-modules-assessment-management-ClgGS32i.mjs → acorex-modules-assessment-management-acorex-modules-assessment-management-HgaOIA2U.mjs} +950 -468
  7. package/fesm2022/acorex-modules-assessment-management-acorex-modules-assessment-management-HgaOIA2U.mjs.map +1 -0
  8. package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-column.component-UmXUT6Xn.mjs → acorex-modules-assessment-management-answers-viewer-widget-column.component-DyxE9Xec.mjs} +2 -2
  9. package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-column.component-UmXUT6Xn.mjs.map → acorex-modules-assessment-management-answers-viewer-widget-column.component-DyxE9Xec.mjs.map} +1 -1
  10. package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-edit.component-vVfXtden.mjs → acorex-modules-assessment-management-answers-viewer-widget-edit.component-DC2Ep3r1.mjs} +2 -2
  11. package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-edit.component-vVfXtden.mjs.map → acorex-modules-assessment-management-answers-viewer-widget-edit.component-DC2Ep3r1.mjs.map} +1 -1
  12. package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-view.component-C75zxKgV.mjs → acorex-modules-assessment-management-answers-viewer-widget-view.component-iKqac5PE.mjs} +2 -2
  13. package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-view.component-C75zxKgV.mjs.map → acorex-modules-assessment-management-answers-viewer-widget-view.component-iKqac5PE.mjs.map} +1 -1
  14. package/fesm2022/{acorex-modules-assessment-management-assessment-case.entity-CjhC5YAF.mjs → acorex-modules-assessment-management-assessment-case.entity-CsCMlcvF.mjs} +3 -3
  15. package/fesm2022/acorex-modules-assessment-management-assessment-case.entity-CsCMlcvF.mjs.map +1 -0
  16. package/fesm2022/{acorex-modules-assessment-management-assessment-session.entity-B_IDiEzp.mjs → acorex-modules-assessment-management-assessment-session.entity-BkNVe3FO.mjs} +2 -2
  17. package/fesm2022/{acorex-modules-assessment-management-assessment-session.entity-B_IDiEzp.mjs.map → acorex-modules-assessment-management-assessment-session.entity-BkNVe3FO.mjs.map} +1 -1
  18. package/fesm2022/{acorex-modules-assessment-management-fill-assessment-session.command-zT5u3h_s.mjs → acorex-modules-assessment-management-fill-assessment-session.command-Dgeh3E5f.mjs} +32 -33
  19. package/fesm2022/acorex-modules-assessment-management-fill-assessment-session.command-Dgeh3E5f.mjs.map +1 -0
  20. package/fesm2022/{acorex-modules-assessment-management-preview-questionnaire.command-BIXy9eut.mjs → acorex-modules-assessment-management-preview-questionnaire.command-NcZlE6DU.mjs} +24 -8
  21. package/fesm2022/acorex-modules-assessment-management-preview-questionnaire.command-NcZlE6DU.mjs.map +1 -0
  22. package/fesm2022/{acorex-modules-assessment-management-question-bank-item.entity-BWYLXvCp.mjs → acorex-modules-assessment-management-question-bank-item.entity-vNxSmJuv.mjs} +2 -2
  23. package/fesm2022/{acorex-modules-assessment-management-question-bank-item.entity-BWYLXvCp.mjs.map → acorex-modules-assessment-management-question-bank-item.entity-vNxSmJuv.mjs.map} +1 -1
  24. package/fesm2022/{acorex-modules-assessment-management-questionnaire-builder-edit.component-3wVcKQGE.mjs → acorex-modules-assessment-management-questionnaire-builder-edit.component-CbfHOFT1.mjs} +20 -4
  25. package/fesm2022/acorex-modules-assessment-management-questionnaire-builder-edit.component-CbfHOFT1.mjs.map +1 -0
  26. package/fesm2022/{acorex-modules-assessment-management-questionnaire-builder-view.component-meuUo7Vx.mjs → acorex-modules-assessment-management-questionnaire-builder-view.component-DDqDjzwH.mjs} +3 -3
  27. package/fesm2022/acorex-modules-assessment-management-questionnaire-builder-view.component-DDqDjzwH.mjs.map +1 -0
  28. package/fesm2022/{acorex-modules-assessment-management-questionnaire-builder.component-CGgUUkOY.mjs → acorex-modules-assessment-management-questionnaire-builder.component-BOnwdWj7.mjs} +11 -5
  29. package/fesm2022/acorex-modules-assessment-management-questionnaire-builder.component-BOnwdWj7.mjs.map +1 -0
  30. package/fesm2022/acorex-modules-assessment-management-questionnaire-viewer-popup.component-BX8Q2Kfn.mjs +392 -0
  31. package/fesm2022/acorex-modules-assessment-management-questionnaire-viewer-popup.component-BX8Q2Kfn.mjs.map +1 -0
  32. package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer.service-D3k3J93r.mjs → acorex-modules-assessment-management-questionnaire-viewer.service-CSdVNxV2.mjs} +21 -6
  33. package/fesm2022/acorex-modules-assessment-management-questionnaire-viewer.service-CSdVNxV2.mjs.map +1 -0
  34. package/fesm2022/{acorex-modules-assessment-management-questionnaire.entity-C8sX0d_p.mjs → acorex-modules-assessment-management-questionnaire.entity-DFQIvlza.mjs} +138 -23
  35. package/fesm2022/acorex-modules-assessment-management-questionnaire.entity-DFQIvlza.mjs.map +1 -0
  36. package/fesm2022/{acorex-modules-assessment-management-view-session-answers.command-Czq7cj9R.mjs → acorex-modules-assessment-management-view-session-answers.command-CMmE72Kt.mjs} +3 -3
  37. package/fesm2022/{acorex-modules-assessment-management-view-session-answers.command-Czq7cj9R.mjs.map → acorex-modules-assessment-management-view-session-answers.command-CMmE72Kt.mjs.map} +1 -1
  38. package/fesm2022/acorex-modules-assessment-management.mjs +1 -1
  39. package/fesm2022/{acorex-modules-auth-acorex-modules-auth-DHSmTid9.mjs → acorex-modules-auth-acorex-modules-auth-CZuDhBx5.mjs} +15 -15
  40. package/fesm2022/acorex-modules-auth-acorex-modules-auth-CZuDhBx5.mjs.map +1 -0
  41. package/fesm2022/{acorex-modules-auth-app-chooser.component-BgnYEXEl.mjs → acorex-modules-auth-app-chooser.component-DJE47I8p.mjs} +2 -2
  42. package/fesm2022/{acorex-modules-auth-app-chooser.component-BgnYEXEl.mjs.map → acorex-modules-auth-app-chooser.component-DJE47I8p.mjs.map} +1 -1
  43. package/fesm2022/{acorex-modules-auth-login.module-BvhI4dAz.mjs → acorex-modules-auth-login.module-CI_lkyb7.mjs} +4 -4
  44. package/fesm2022/{acorex-modules-auth-login.module-BvhI4dAz.mjs.map → acorex-modules-auth-login.module-CI_lkyb7.mjs.map} +1 -1
  45. package/fesm2022/{acorex-modules-auth-master.layout-D4zZR1Gr.mjs → acorex-modules-auth-master.layout-CdY380qS.mjs} +2 -2
  46. package/fesm2022/{acorex-modules-auth-master.layout-D4zZR1Gr.mjs.map → acorex-modules-auth-master.layout-CdY380qS.mjs.map} +1 -1
  47. package/fesm2022/{acorex-modules-auth-oauth-callback.component-DniYj9Tx.mjs → acorex-modules-auth-oauth-callback.component-BvPk9b3e.mjs} +2 -2
  48. package/fesm2022/{acorex-modules-auth-oauth-callback.component-DniYj9Tx.mjs.map → acorex-modules-auth-oauth-callback.component-BvPk9b3e.mjs.map} +1 -1
  49. package/fesm2022/{acorex-modules-auth-password.component-mvQ4KY3g.mjs → acorex-modules-auth-password.component-CefISnvd.mjs} +2 -2
  50. package/fesm2022/{acorex-modules-auth-password.component-mvQ4KY3g.mjs.map → acorex-modules-auth-password.component-CefISnvd.mjs.map} +1 -1
  51. package/fesm2022/{acorex-modules-auth-password.component-CZkZAj32.mjs → acorex-modules-auth-password.component-Dw_v_EFQ.mjs} +2 -2
  52. package/fesm2022/{acorex-modules-auth-password.component-CZkZAj32.mjs.map → acorex-modules-auth-password.component-Dw_v_EFQ.mjs.map} +1 -1
  53. package/fesm2022/{acorex-modules-auth-routes-6Ulmk7si.mjs → acorex-modules-auth-routes-CwcJHbAi.mjs} +2 -2
  54. package/fesm2022/{acorex-modules-auth-routes-6Ulmk7si.mjs.map → acorex-modules-auth-routes-CwcJHbAi.mjs.map} +1 -1
  55. package/fesm2022/{acorex-modules-auth-tenant-chooser.component-3OkOSTkm.mjs → acorex-modules-auth-tenant-chooser.component-DFhTYEDt.mjs} +2 -2
  56. package/fesm2022/{acorex-modules-auth-tenant-chooser.component-3OkOSTkm.mjs.map → acorex-modules-auth-tenant-chooser.component-DFhTYEDt.mjs.map} +1 -1
  57. package/fesm2022/{acorex-modules-auth-two-factor.module-DtrVmYAu.mjs → acorex-modules-auth-two-factor.module-BOZB6sLo.mjs} +2 -2
  58. package/fesm2022/{acorex-modules-auth-two-factor.module-DtrVmYAu.mjs.map → acorex-modules-auth-two-factor.module-BOZB6sLo.mjs.map} +1 -1
  59. package/fesm2022/{acorex-modules-auth-user-sessions.component-Co18_D9H.mjs → acorex-modules-auth-user-sessions.component-BnrnXg4G.mjs} +2 -2
  60. package/fesm2022/{acorex-modules-auth-user-sessions.component-Co18_D9H.mjs.map → acorex-modules-auth-user-sessions.component-BnrnXg4G.mjs.map} +1 -1
  61. package/fesm2022/acorex-modules-auth.mjs +1 -1
  62. package/fesm2022/acorex-modules-calendar-management.mjs +4 -3
  63. package/fesm2022/acorex-modules-calendar-management.mjs.map +1 -1
  64. package/fesm2022/acorex-modules-common.mjs +35 -29
  65. package/fesm2022/acorex-modules-common.mjs.map +1 -1
  66. package/fesm2022/acorex-modules-data-management.mjs +333 -342
  67. package/fesm2022/acorex-modules-data-management.mjs.map +1 -1
  68. package/fesm2022/acorex-modules-document-management.mjs +2716 -527
  69. package/fesm2022/acorex-modules-document-management.mjs.map +1 -1
  70. package/fesm2022/acorex-modules-human-capital-management-leave-request-task-popover.component-yGvT9kSL.mjs +381 -0
  71. package/fesm2022/acorex-modules-human-capital-management-leave-request-task-popover.component-yGvT9kSL.mjs.map +1 -0
  72. package/fesm2022/{acorex-modules-human-capital-management-leave-request.entity-CviI9xJC.mjs → acorex-modules-human-capital-management-leave-request.entity-BDSyXKSF.mjs} +2 -2
  73. package/fesm2022/acorex-modules-human-capital-management-leave-request.entity-BDSyXKSF.mjs.map +1 -0
  74. package/fesm2022/{acorex-modules-human-capital-management-leave-type.entity-CY81Nohl.mjs → acorex-modules-human-capital-management-leave-type.entity-YitcNesR.mjs} +6 -2
  75. package/fesm2022/acorex-modules-human-capital-management-leave-type.entity-YitcNesR.mjs.map +1 -0
  76. package/fesm2022/acorex-modules-human-capital-management.mjs +696 -351
  77. package/fesm2022/acorex-modules-human-capital-management.mjs.map +1 -1
  78. package/fesm2022/acorex-modules-locale-management.mjs +11 -2
  79. package/fesm2022/acorex-modules-locale-management.mjs.map +1 -1
  80. package/fesm2022/acorex-modules-notification-management.mjs +1 -1
  81. package/fesm2022/acorex-modules-notification-management.mjs.map +1 -1
  82. package/fesm2022/{acorex-modules-settings-management-acorex-modules-settings-management-BRVfUYiM.mjs → acorex-modules-settings-management-acorex-modules-settings-management-Dpjfgmg9.mjs} +6 -6
  83. package/fesm2022/{acorex-modules-settings-management-acorex-modules-settings-management-BRVfUYiM.mjs.map → acorex-modules-settings-management-acorex-modules-settings-management-Dpjfgmg9.mjs.map} +1 -1
  84. package/fesm2022/{acorex-modules-settings-management-permission-definition.provider-WSxrvAsV.mjs → acorex-modules-settings-management-permission-definition.provider-nYV8iDwJ.mjs} +2 -2
  85. package/fesm2022/{acorex-modules-settings-management-permission-definition.provider-WSxrvAsV.mjs.map → acorex-modules-settings-management-permission-definition.provider-nYV8iDwJ.mjs.map} +1 -1
  86. package/fesm2022/{acorex-modules-settings-management-setting-page.component-MYnJYUxE.mjs → acorex-modules-settings-management-setting-page.component-B1lhCtl_.mjs} +2 -2
  87. package/fesm2022/{acorex-modules-settings-management-setting-page.component-MYnJYUxE.mjs.map → acorex-modules-settings-management-setting-page.component-B1lhCtl_.mjs.map} +1 -1
  88. package/fesm2022/{acorex-modules-settings-management-setting-view.component-Cq80snth.mjs → acorex-modules-settings-management-setting-view.component-CAX1kFy2.mjs} +2 -2
  89. package/fesm2022/{acorex-modules-settings-management-setting-view.component-Cq80snth.mjs.map → acorex-modules-settings-management-setting-view.component-CAX1kFy2.mjs.map} +1 -1
  90. package/fesm2022/acorex-modules-settings-management.mjs +1 -1
  91. package/fesm2022/acorex-modules-system-insight.mjs +4 -3
  92. package/fesm2022/acorex-modules-system-insight.mjs.map +1 -1
  93. package/fesm2022/{acorex-modules-task-management-task-board.page-B_S373L-.mjs → acorex-modules-task-management-task-board.page-CuP9U1h8.mjs} +60 -53
  94. package/fesm2022/acorex-modules-task-management-task-board.page-CuP9U1h8.mjs.map +1 -0
  95. package/fesm2022/acorex-modules-task-management.mjs +11 -39
  96. package/fesm2022/acorex-modules-task-management.mjs.map +1 -1
  97. package/fesm2022/acorex-modules-workflow-management-cartable-page.component-Bso0XRkJ.mjs +296 -0
  98. package/fesm2022/acorex-modules-workflow-management-cartable-page.component-Bso0XRkJ.mjs.map +1 -0
  99. package/fesm2022/acorex-modules-workflow-management-index-xB36g4F1.mjs +469 -0
  100. package/fesm2022/acorex-modules-workflow-management-index-xB36g4F1.mjs.map +1 -0
  101. package/fesm2022/acorex-modules-workflow-management.mjs +2507 -681
  102. package/fesm2022/acorex-modules-workflow-management.mjs.map +1 -1
  103. package/human-capital-management/index.d.ts +79 -19
  104. package/package.json +16 -16
  105. package/task-management/index.d.ts +1 -12
  106. package/workflow-management/index.d.ts +265 -220
  107. package/fesm2022/acorex-modules-assessment-management-acorex-modules-assessment-management-ClgGS32i.mjs.map +0 -1
  108. package/fesm2022/acorex-modules-assessment-management-assessment-case.entity-CjhC5YAF.mjs.map +0 -1
  109. package/fesm2022/acorex-modules-assessment-management-fill-assessment-session.command-zT5u3h_s.mjs.map +0 -1
  110. package/fesm2022/acorex-modules-assessment-management-preview-questionnaire.command-BIXy9eut.mjs.map +0 -1
  111. package/fesm2022/acorex-modules-assessment-management-questionnaire-builder-edit.component-3wVcKQGE.mjs.map +0 -1
  112. package/fesm2022/acorex-modules-assessment-management-questionnaire-builder-view.component-meuUo7Vx.mjs.map +0 -1
  113. package/fesm2022/acorex-modules-assessment-management-questionnaire-builder.component-CGgUUkOY.mjs.map +0 -1
  114. package/fesm2022/acorex-modules-assessment-management-questionnaire-viewer-popup.component-kVnWtedV.mjs +0 -416
  115. package/fesm2022/acorex-modules-assessment-management-questionnaire-viewer-popup.component-kVnWtedV.mjs.map +0 -1
  116. package/fesm2022/acorex-modules-assessment-management-questionnaire-viewer.service-D3k3J93r.mjs.map +0 -1
  117. package/fesm2022/acorex-modules-assessment-management-questionnaire.entity-C8sX0d_p.mjs.map +0 -1
  118. package/fesm2022/acorex-modules-auth-acorex-modules-auth-DHSmTid9.mjs.map +0 -1
  119. package/fesm2022/acorex-modules-human-capital-management-leave-request.entity-CviI9xJC.mjs.map +0 -1
  120. package/fesm2022/acorex-modules-human-capital-management-leave-type.entity-CY81Nohl.mjs.map +0 -1
  121. package/fesm2022/acorex-modules-task-management-task-board.page-B_S373L-.mjs.map +0 -1
  122. package/fesm2022/acorex-modules-workflow-management-activity-definition.entity-BbBEPTBa.mjs +0 -258
  123. package/fesm2022/acorex-modules-workflow-management-activity-definition.entity-BbBEPTBa.mjs.map +0 -1
  124. package/fesm2022/acorex-modules-workflow-management-workflow-definition.entity-nJMBL0qt.mjs +0 -371
  125. package/fesm2022/acorex-modules-workflow-management-workflow-definition.entity-nJMBL0qt.mjs.map +0 -1
  126. package/fesm2022/acorex-modules-workflow-management-workflow-instance.entity-Pso0oRN5.mjs +0 -313
  127. package/fesm2022/acorex-modules-workflow-management-workflow-instance.entity-Pso0oRN5.mjs.map +0 -1
@@ -0,0 +1,296 @@
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