@acorex/modules 19.4.3 → 19.4.5

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 (148) hide show
  1. package/conversation/README.md +113 -2
  2. package/conversation/index.d.ts +2 -14
  3. package/conversation/lib/const.d.ts +25 -6
  4. package/conversation/lib/conversation.module.d.ts +32 -3
  5. package/conversation/lib/entities/index.d.ts +2 -0
  6. package/conversation/lib/entities/message/index.d.ts +3 -0
  7. package/conversation/lib/entities/message/message.entity.d.ts +3 -0
  8. package/conversation/lib/entities/message/message.service.d.ts +10 -0
  9. package/conversation/lib/entities/message/message.types.d.ts +20 -0
  10. package/conversation/lib/entities/room/index.d.ts +3 -0
  11. package/conversation/lib/entities/room/room.entity.d.ts +3 -0
  12. package/conversation/lib/entities/room/room.service.d.ts +10 -0
  13. package/conversation/lib/entities/room/room.types.d.ts +8 -0
  14. package/conversation/lib/entity.provider.d.ts +12 -0
  15. package/conversation/lib/features/chat/chat-preview.helper.d.ts +68 -0
  16. package/conversation/lib/features/chat/chat.component.d.ts +42 -0
  17. package/conversation/lib/features/chat/chat.service.d.ts +101 -0
  18. package/conversation/lib/features/chat/chat.type.d.ts +38 -0
  19. package/conversation/lib/{entities → features}/chat/components/chat-item/chat-item.component.d.ts +6 -1
  20. package/conversation/lib/{entities → features}/chat/components/chat-preview/chat-preview.component.d.ts +3 -0
  21. package/conversation/lib/features/chat/index.d.ts +5 -0
  22. package/conversation/lib/{entities/comments/pages → features/comment}/comment-list-view.component.d.ts +12 -12
  23. package/conversation/lib/features/comment/comment.service.d.ts +66 -0
  24. package/conversation/lib/features/comment/comment.type.d.ts +45 -0
  25. package/conversation/lib/features/comment/index.d.ts +4 -0
  26. package/conversation/lib/features/index.d.ts +2 -0
  27. package/document-management/lib/entities/folder/folder.types.d.ts +3 -2
  28. package/document-management/lib/features/document-explorer/components/create-folder-dialog/create-folder-dialog.component.d.ts +5 -2
  29. package/document-management/lib/features/document-explorer/document-explorer.component.d.ts +22 -20
  30. package/document-management/lib/features/document-explorer/document-explorer.viewmodel.d.ts +22 -2
  31. package/document-management/lib/features/document-explorer/views/attachement-widget/attachment-widget.component.d.ts +52 -33
  32. package/document-management/lib/features/document-explorer/views/detail-panel/detail-panel.component.d.ts +52 -33
  33. package/document-management/lib/features/document-explorer/views/details/details-view.component.d.ts +52 -33
  34. package/document-management/lib/features/document-explorer/views/large-icons/large-icons-view.component.d.ts +52 -33
  35. package/document-management/lib/features/document-explorer/views/large-tiles/large-tiles-view.component.d.ts +52 -33
  36. package/document-management/lib/features/document-explorer/views/list/list-view.component.d.ts +52 -33
  37. package/document-management/lib/features/document-explorer/views/small-icons/small-icons-view.component.d.ts +52 -33
  38. package/document-management/lib/features/document-explorer/views/small-tiles/small-tiles-view.component.d.ts +52 -33
  39. package/document-management/lib/features/drive/drive.component.d.ts +52 -31
  40. package/document-management/lib/features/drive-choose/drive-choose.component.d.ts +49 -28
  41. package/document-management/lib/features/shared/components/document-type-choose-file/document-type-choose-file.component.d.ts +6 -6
  42. package/document-management/lib/features/shared/components/folder-path-breadcrumbs/folder-path-breadcrumbs.component.d.ts +21 -2
  43. package/document-management/lib/features/shared/document-manager.service.d.ts +177 -45
  44. package/document-management/lib/features/shared/document-manager.types.d.ts +2 -1
  45. package/document-management/lib/features/shared/index.d.ts +1 -0
  46. package/fesm2022/acorex-modules-application-management-module-designer.component-BJp8imYd.mjs +315 -0
  47. package/fesm2022/acorex-modules-application-management-module-designer.component-BJp8imYd.mjs.map +1 -0
  48. package/fesm2022/acorex-modules-application-management.mjs +1 -1
  49. package/fesm2022/acorex-modules-common.mjs +7 -0
  50. package/fesm2022/acorex-modules-common.mjs.map +1 -1
  51. package/fesm2022/acorex-modules-conversation.mjs +2382 -820
  52. package/fesm2022/acorex-modules-conversation.mjs.map +1 -1
  53. package/fesm2022/{acorex-modules-document-management-acorex-modules-document-management-BpmG6Dyx.mjs → acorex-modules-document-management-acorex-modules-document-management-BATdoqJi.mjs} +1679 -2019
  54. package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-BATdoqJi.mjs.map +1 -0
  55. package/fesm2022/{acorex-modules-document-management-attachment-widget.component-DIF_t4fE.mjs → acorex-modules-document-management-attachment-widget.component-C1-gQepw.mjs} +2 -2
  56. package/fesm2022/{acorex-modules-document-management-attachment-widget.component-DIF_t4fE.mjs.map → acorex-modules-document-management-attachment-widget.component-C1-gQepw.mjs.map} +1 -1
  57. package/fesm2022/acorex-modules-document-management-create-folder-dialog.component-ZMvsadWt.mjs +144 -0
  58. package/fesm2022/acorex-modules-document-management-create-folder-dialog.component-ZMvsadWt.mjs.map +1 -0
  59. package/fesm2022/{acorex-modules-document-management-details-view.component-D0RIYrHB.mjs → acorex-modules-document-management-details-view.component-CvHIETNf.mjs} +2 -2
  60. package/fesm2022/{acorex-modules-document-management-details-view.component-D0RIYrHB.mjs.map → acorex-modules-document-management-details-view.component-CvHIETNf.mjs.map} +1 -1
  61. package/fesm2022/{acorex-modules-document-management-drive-choose.component-DMAQr0nK.mjs → acorex-modules-document-management-drive-choose.component-UTy9OISj.mjs} +29 -9
  62. package/fesm2022/acorex-modules-document-management-drive-choose.component-UTy9OISj.mjs.map +1 -0
  63. package/fesm2022/acorex-modules-document-management-drive.component-Crh10Z5J.mjs +363 -0
  64. package/fesm2022/acorex-modules-document-management-drive.component-Crh10Z5J.mjs.map +1 -0
  65. package/fesm2022/{acorex-modules-document-management-large-icons-view.component-C686Ec7s.mjs → acorex-modules-document-management-large-icons-view.component-BuV7MPG5.mjs} +2 -2
  66. package/fesm2022/{acorex-modules-document-management-large-icons-view.component-C686Ec7s.mjs.map → acorex-modules-document-management-large-icons-view.component-BuV7MPG5.mjs.map} +1 -1
  67. package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-0GpMVYv5.mjs → acorex-modules-document-management-large-tiles-view.component-CwYwVxoG.mjs} +2 -2
  68. package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-0GpMVYv5.mjs.map → acorex-modules-document-management-large-tiles-view.component-CwYwVxoG.mjs.map} +1 -1
  69. package/fesm2022/{acorex-modules-document-management-list-view.component-C1inszTC.mjs → acorex-modules-document-management-list-view.component-BHEwRA3m.mjs} +2 -2
  70. package/fesm2022/{acorex-modules-document-management-list-view.component-C1inszTC.mjs.map → acorex-modules-document-management-list-view.component-BHEwRA3m.mjs.map} +1 -1
  71. package/fesm2022/{acorex-modules-document-management-permission-definition.provider-B7lgRLHi.mjs → acorex-modules-document-management-permission-definition.provider-B3qaYwRL.mjs} +2 -2
  72. package/fesm2022/{acorex-modules-document-management-permission-definition.provider-B7lgRLHi.mjs.map → acorex-modules-document-management-permission-definition.provider-B3qaYwRL.mjs.map} +1 -1
  73. package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-C9k8WgDG.mjs → acorex-modules-document-management-rename-node-dialog.component-CrcJm9jP.mjs} +5 -5
  74. package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-C9k8WgDG.mjs.map → acorex-modules-document-management-rename-node-dialog.component-CrcJm9jP.mjs.map} +1 -1
  75. package/fesm2022/{acorex-modules-document-management-small-icons-view.component-BGcUzNCv.mjs → acorex-modules-document-management-small-icons-view.component-CD5UORaq.mjs} +2 -2
  76. package/fesm2022/{acorex-modules-document-management-small-icons-view.component-BGcUzNCv.mjs.map → acorex-modules-document-management-small-icons-view.component-CD5UORaq.mjs.map} +1 -1
  77. package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-CumumWvO.mjs → acorex-modules-document-management-small-tiles-view.component-cpc_xfbT.mjs} +2 -2
  78. package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-CumumWvO.mjs.map → acorex-modules-document-management-small-tiles-view.component-cpc_xfbT.mjs.map} +1 -1
  79. package/fesm2022/acorex-modules-document-management.mjs +1 -1
  80. package/fesm2022/{acorex-modules-issue-management-acorex-modules-issue-management-ErtEMU89.mjs → acorex-modules-issue-management-acorex-modules-issue-management-DbVfrgVX.mjs} +5 -5
  81. package/fesm2022/acorex-modules-issue-management-acorex-modules-issue-management-DbVfrgVX.mjs.map +1 -0
  82. package/fesm2022/{acorex-modules-issue-management-capture-screen.component-B6k0Zn9C.mjs → acorex-modules-issue-management-capture-screen.component-_9mwJVkz.mjs} +2 -2
  83. package/fesm2022/{acorex-modules-issue-management-capture-screen.component-B6k0Zn9C.mjs.map → acorex-modules-issue-management-capture-screen.component-_9mwJVkz.mjs.map} +1 -1
  84. package/fesm2022/acorex-modules-issue-management.mjs +1 -1
  85. package/fesm2022/acorex-modules-notification-management.mjs +5 -5
  86. package/fesm2022/acorex-modules-notification-management.mjs.map +1 -1
  87. package/fesm2022/{acorex-modules-organization-management-org-chart.page-CP8zz-Bc.mjs → acorex-modules-organization-management-org-chart.page-CrOUUr4c.mjs} +1 -2
  88. package/fesm2022/acorex-modules-organization-management-org-chart.page-CrOUUr4c.mjs.map +1 -0
  89. package/fesm2022/acorex-modules-organization-management.mjs +2 -2
  90. package/fesm2022/{acorex-modules-platform-management-acorex-modules-platform-management-C9ZApxct.mjs → acorex-modules-platform-management-acorex-modules-platform-management-DtXOjIIK.mjs} +326 -87
  91. package/fesm2022/acorex-modules-platform-management-acorex-modules-platform-management-DtXOjIIK.mjs.map +1 -0
  92. package/fesm2022/{acorex-modules-platform-management-list-version.component-D50Xundj.mjs → acorex-modules-platform-management-list-version.component-DY4yMd8n.mjs} +2 -2
  93. package/fesm2022/{acorex-modules-platform-management-list-version.component-D50Xundj.mjs.map → acorex-modules-platform-management-list-version.component-DY4yMd8n.mjs.map} +1 -1
  94. package/fesm2022/{acorex-modules-platform-management-settings.provider-DsHGn3AZ.mjs → acorex-modules-platform-management-settings.provider-BO-1dmVc.mjs} +2 -2
  95. package/fesm2022/{acorex-modules-platform-management-settings.provider-DsHGn3AZ.mjs.map → acorex-modules-platform-management-settings.provider-BO-1dmVc.mjs.map} +1 -1
  96. package/fesm2022/acorex-modules-platform-management.mjs +1 -1
  97. package/fesm2022/acorex-modules-project-management.mjs +108 -0
  98. package/fesm2022/acorex-modules-project-management.mjs.map +1 -1
  99. package/fesm2022/acorex-modules-settings-management.mjs +20 -21
  100. package/fesm2022/acorex-modules-settings-management.mjs.map +1 -1
  101. package/fesm2022/acorex-modules-training-management.mjs +1 -1
  102. package/fesm2022/acorex-modules-training-management.mjs.map +1 -1
  103. package/fesm2022/acorex-modules-workflow-management-task-board.page-3_Tn2GeA.mjs +305 -0
  104. package/fesm2022/acorex-modules-workflow-management-task-board.page-3_Tn2GeA.mjs.map +1 -0
  105. package/fesm2022/acorex-modules-workflow-management.mjs +123 -0
  106. package/fesm2022/acorex-modules-workflow-management.mjs.map +1 -0
  107. package/package.json +20 -16
  108. package/platform-management/lib/task-board.provider.d.ts +14 -0
  109. package/project-management/lib/task-board.provider.d.ts +14 -0
  110. package/settings-management/lib/settings-management.module.d.ts +1 -1
  111. package/workflow-management/README.md +3 -0
  112. package/workflow-management/index.d.ts +2 -0
  113. package/workflow-management/lib/const.d.ts +11 -0
  114. package/workflow-management/lib/features/task-board/index.d.ts +2 -0
  115. package/workflow-management/lib/features/task-board/settings.keys.d.ts +5 -0
  116. package/workflow-management/lib/features/task-board/task-board.module.d.ts +6 -0
  117. package/workflow-management/lib/features/task-board/task-board.page.d.ts +76 -0
  118. package/workflow-management/lib/features/task-board/task-board.service.d.ts +13 -0
  119. package/workflow-management/lib/features/task-board/task-board.viewmodel.d.ts +20 -0
  120. package/workflow-management/lib/features/task-board/views/task-board-calendar-view/task-board-calendar-view.page.d.ts +25 -0
  121. package/workflow-management/lib/workflow-management.module.d.ts +8 -0
  122. package/conversation/lib/entities/chat/chat.module.d.ts +0 -28
  123. package/conversation/lib/entities/chat/chat.service.d.ts +0 -14
  124. package/conversation/lib/entities/chat/chat.type.d.ts +0 -22
  125. package/conversation/lib/entities/chat/components/chat-item-footer/chat-item-footer.component.d.ts +0 -5
  126. package/conversation/lib/entities/chat/components/chat-item-header/chat-item-header.component.d.ts +0 -12
  127. package/conversation/lib/entities/chat/components/chat-preview-header/chat-preview-header.component.d.ts +0 -7
  128. package/conversation/lib/entities/chat/pages/chat/chat.component.d.ts +0 -23
  129. package/conversation/lib/entities/comments/comment.module.d.ts +0 -26
  130. package/conversation/lib/entities/comments/comments.service.d.ts +0 -13
  131. package/conversation/lib/entities/comments/comments.type.d.ts +0 -74
  132. package/document-management/lib/features/widgets/document-attachment/document-attachment-widget-column.component.d.ts +0 -6
  133. package/document-management/lib/features/widgets/document-attachment/document-attachment-widget-edit.component.d.ts +0 -212
  134. package/document-management/lib/features/widgets/document-attachment/document-attachment-widget-print.component.d.ts +0 -6
  135. package/document-management/lib/features/widgets/document-attachment/document-attachment-widget-view.component.d.ts +0 -6
  136. package/document-management/lib/features/widgets/document-attachment/document-attachment-widget.config.d.ts +0 -7
  137. package/document-management/lib/features/widgets/document-attachment/index.d.ts +0 -5
  138. package/document-management/lib/features/widgets/index.d.ts +0 -1
  139. package/fesm2022/acorex-modules-application-management-module-designer.component-BRh6mzWA.mjs +0 -315
  140. package/fesm2022/acorex-modules-application-management-module-designer.component-BRh6mzWA.mjs.map +0 -1
  141. package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-BpmG6Dyx.mjs.map +0 -1
  142. package/fesm2022/acorex-modules-document-management-create-folder-dialog.component-CCvKUDsw.mjs +0 -141
  143. package/fesm2022/acorex-modules-document-management-create-folder-dialog.component-CCvKUDsw.mjs.map +0 -1
  144. package/fesm2022/acorex-modules-document-management-drive-choose.component-DMAQr0nK.mjs.map +0 -1
  145. package/fesm2022/acorex-modules-issue-management-acorex-modules-issue-management-ErtEMU89.mjs.map +0 -1
  146. package/fesm2022/acorex-modules-organization-management-org-chart.page-CP8zz-Bc.mjs.map +0 -1
  147. package/fesm2022/acorex-modules-platform-management-acorex-modules-platform-management-C9ZApxct.mjs.map +0 -1
  148. /package/conversation/lib/{entities/comments/pages → features/comment}/comment-lookup-popup.component.d.ts +0 -0
@@ -3,7 +3,7 @@ import * as i2$2 from '@acorex/platform/layout/components';
3
3
  import { AXPThemeLayoutBlockComponent, AXPComponentSlotModule } from '@acorex/platform/layout/components';
4
4
  import { AXMEntityCrudServiceImpl, AXPEntityDefinitionRegistryService, AXPEntityResolver, AXPEntityService, AXP_ENTITY_CONFIG_TOKEN, AXP_ENTITY_DEFINITION_LOADER } from '@acorex/platform/layout/entity';
5
5
  import * as i3$2 from '@acorex/platform/workflow';
6
- import { AXPWorkflowAction, AXPWorkflowService, AXPWorkflowModule } from '@acorex/platform/workflow';
6
+ import { AXPWorkflowAction, AXPWorkflowService, AXPWorkflowTaskProvider, AXPWorkflowModule, AXP_WORKFLOW_TASK_PROVIDER } from '@acorex/platform/workflow';
7
7
  import * as i0 from '@angular/core';
8
8
  import { Injectable, inject, signal, HostListener, Component, Input, Injector, NgModule } from '@angular/core';
9
9
  import { ROUTES } from '@angular/router';
@@ -43,9 +43,9 @@ import { AXDropdownModule } from '@acorex/components/dropdown';
43
43
  import { AXPopoverModule } from '@acorex/components/popover';
44
44
  import get from 'lodash-es/get';
45
45
  import { AXPSessionService } from '@acorex/platform/auth';
46
- import { firstValueFrom } from 'rxjs';
47
46
  import { AXDialogService } from '@acorex/components/dialog';
48
47
  import { SwUpdate } from '@angular/service-worker';
48
+ import { firstValueFrom } from 'rxjs';
49
49
 
50
50
  const config = {
51
51
  i18n: 'platform-management',
@@ -3576,6 +3576,11 @@ function sanitizeForStorage(obj) {
3576
3576
  // File objects are handled separately, return as is
3577
3577
  return obj;
3578
3578
  }
3579
+ // Handle Blob objects
3580
+ if (obj instanceof Blob) {
3581
+ // Blob objects are handled separately
3582
+ return obj;
3583
+ }
3579
3584
  // Handle regular objects
3580
3585
  const cleanedObj = {};
3581
3586
  for (const [key, value] of Object.entries(obj)) {
@@ -3694,7 +3699,7 @@ async function promotionEntityFactory(injector) {
3694
3699
  interface: {
3695
3700
  type: AXPWidgetsCatalog.fileUploader,
3696
3701
  options: {
3697
- multiple: true,
3702
+ multiple: false,
3698
3703
  },
3699
3704
  },
3700
3705
  },
@@ -3838,23 +3843,81 @@ async function promotionEntityFactory(injector) {
3838
3843
  // First deeply sanitize the data object to remove non-serializable content
3839
3844
  data = sanitizeForStorage(data);
3840
3845
  // Convert array of File objects to serializable format for IndexedDB storage
3841
- data.imageId = await Promise.all((data.imageId || []).map(async (file) => {
3842
- if (file instanceof File) {
3843
- return {
3844
- name: file.name,
3845
- type: file.type,
3846
- size: file.size,
3847
- lastModified: file.lastModified,
3848
- // Convert File to base64 string for storage
3849
- data: await new Promise((resolve) => {
3850
- const reader = new FileReader();
3851
- reader.onloadend = () => resolve(reader.result);
3852
- reader.readAsDataURL(file);
3853
- })
3854
- };
3855
- }
3856
- return file;
3857
- }));
3846
+ if (data.imageId && Array.isArray(data.imageId)) {
3847
+ const processedFiles = await Promise.all((data.imageId || []).map(async (file) => {
3848
+ if (file instanceof File) {
3849
+ return {
3850
+ name: file.name,
3851
+ type: file.type,
3852
+ size: file.size,
3853
+ lastModified: file.lastModified,
3854
+ // Convert File to base64 string for storage
3855
+ data: await new Promise((resolve) => {
3856
+ const reader = new FileReader();
3857
+ reader.onloadend = () => resolve(reader.result);
3858
+ reader.readAsDataURL(file);
3859
+ })
3860
+ };
3861
+ }
3862
+ // Handle new file structure with source.value containing the blob
3863
+ else if (file && file.source && file.source.value) {
3864
+ try {
3865
+ const blob = file.source.value;
3866
+ // Ensure we're working with a proper Blob object
3867
+ if (blob instanceof Blob) {
3868
+ return {
3869
+ id: file.id || null,
3870
+ name: file.name || 'file',
3871
+ type: file.type || blob.type || 'application/octet-stream',
3872
+ size: file.size || blob.size || 0,
3873
+ status: file.status || 'attached',
3874
+ // Convert Blob to base64 string for storage
3875
+ data: await new Promise((resolve) => {
3876
+ const reader = new FileReader();
3877
+ reader.onloadend = () => resolve(reader.result);
3878
+ reader.readAsDataURL(blob);
3879
+ })
3880
+ };
3881
+ }
3882
+ else {
3883
+ console.warn('Invalid blob in file.source.value', file);
3884
+ return {
3885
+ name: file.name || 'file',
3886
+ type: file.type || 'application/octet-stream',
3887
+ size: file.size || 0,
3888
+ status: file.status || 'attached'
3889
+ };
3890
+ }
3891
+ }
3892
+ catch (error) {
3893
+ console.error('Error processing file for storage', error);
3894
+ return {
3895
+ name: file.name || 'file',
3896
+ type: file.type || 'application/octet-stream',
3897
+ size: file.size || 0,
3898
+ status: file.status || 'attached'
3899
+ };
3900
+ }
3901
+ }
3902
+ // If it's already a serialized object with data property, keep it as is
3903
+ else if (file && file.data && typeof file.data === 'string') {
3904
+ return file;
3905
+ }
3906
+ // For any other format, return a clean version without complex objects
3907
+ else if (file) {
3908
+ return {
3909
+ id: file.id || null,
3910
+ name: file.name || 'unknown',
3911
+ type: file.type || 'application/octet-stream',
3912
+ size: file.size || 0,
3913
+ status: file.status || 'attached'
3914
+ };
3915
+ }
3916
+ return null;
3917
+ }));
3918
+ // Filter out nulls after awaiting the promise
3919
+ data.imageId = processedFiles.filter(Boolean);
3920
+ }
3858
3921
  const res = await dataService.insertOne(data);
3859
3922
  // Return the same ID format that was used for storage
3860
3923
  return { id: res };
@@ -3871,7 +3934,7 @@ async function promotionEntityFactory(injector) {
3871
3934
  data = sanitizeForStorage(data);
3872
3935
  // Convert array of File objects to serializable format for IndexedDB storage
3873
3936
  if (data.imageId && Array.isArray(data.imageId)) {
3874
- data.imageId = await Promise.all((data.imageId || []).map(async (file) => {
3937
+ const processedFiles = await Promise.all((data.imageId || []).map(async (file) => {
3875
3938
  if (file instanceof File) {
3876
3939
  return {
3877
3940
  name: file.name,
@@ -3886,8 +3949,64 @@ async function promotionEntityFactory(injector) {
3886
3949
  })
3887
3950
  };
3888
3951
  }
3889
- return file;
3952
+ // Handle new file structure with source.value containing the blob
3953
+ else if (file && file.source && file.source.value) {
3954
+ try {
3955
+ const blob = file.source.value;
3956
+ // Ensure we're working with a proper Blob object
3957
+ if (blob instanceof Blob) {
3958
+ return {
3959
+ id: file.id || null,
3960
+ name: file.name || 'file',
3961
+ type: file.type || blob.type || 'application/octet-stream',
3962
+ size: file.size || blob.size || 0,
3963
+ status: file.status || 'attached',
3964
+ // Convert Blob to base64 string for storage
3965
+ data: await new Promise((resolve) => {
3966
+ const reader = new FileReader();
3967
+ reader.onloadend = () => resolve(reader.result);
3968
+ reader.readAsDataURL(blob);
3969
+ })
3970
+ };
3971
+ }
3972
+ else {
3973
+ console.warn('Invalid blob in file.source.value', file);
3974
+ return {
3975
+ name: file.name || 'file',
3976
+ type: file.type || 'application/octet-stream',
3977
+ size: file.size || 0,
3978
+ status: file.status || 'attached'
3979
+ };
3980
+ }
3981
+ }
3982
+ catch (error) {
3983
+ console.error('Error processing file for storage', error);
3984
+ return {
3985
+ name: file.name || 'file',
3986
+ type: file.type || 'application/octet-stream',
3987
+ size: file.size || 0,
3988
+ status: file.status || 'attached'
3989
+ };
3990
+ }
3991
+ }
3992
+ // If it's already a serialized object with data property, keep it as is
3993
+ else if (file && file.data && typeof file.data === 'string') {
3994
+ return file;
3995
+ }
3996
+ // For any other format, return a clean version without complex objects
3997
+ else if (file) {
3998
+ return {
3999
+ id: file.id || null,
4000
+ name: file.name || 'unknown',
4001
+ type: file.type || 'application/octet-stream',
4002
+ size: file.size || 0,
4003
+ status: file.status || 'attached'
4004
+ };
4005
+ }
4006
+ return null;
3890
4007
  }));
4008
+ // Filter out nulls after awaiting the promise
4009
+ data.imageId = processedFiles.filter(Boolean);
3891
4010
  }
3892
4011
  return await dataService.updateOne(data.id, data);
3893
4012
  },
@@ -4260,6 +4379,23 @@ async function promotionEntityFactory(injector) {
4260
4379
  type: 'update',
4261
4380
  scope: AXPEntityCommandScope.Individual,
4262
4381
  },
4382
+ //TODO: add this to the entity
4383
+ {
4384
+ title: 't("upload.title", { scope: "common" })',
4385
+ command: {
4386
+ name: 'show-file-uploader-popup',
4387
+ options: {
4388
+ id: '{{ context.eval("id") }}',
4389
+ files: '{{ context.eval("imageId") }}',
4390
+ multiple: false,
4391
+ accept: 'image/*',
4392
+ key: 'imageId',
4393
+ }
4394
+ },
4395
+ priority: 'secondary',
4396
+ type: 'update',
4397
+ scope: AXPEntityCommandScope.Individual,
4398
+ },
4263
4399
  ],
4264
4400
  views: [
4265
4401
  createAllQueryView({ sorts: [{ name: 'title', dir: 'asc' }] }),
@@ -4669,7 +4805,7 @@ class AXMPlatformManagementCommonModule {
4669
4805
  provide: AXP_SETTING_DEFINITION_PROVIDER,
4670
4806
  useFactory: async () => {
4671
4807
  const injector = inject(Injector);
4672
- const provider = (await import('./acorex-modules-platform-management-settings.provider-DsHGn3AZ.mjs')).AXMRegionalSettingProvider;
4808
+ const provider = (await import('./acorex-modules-platform-management-settings.provider-BO-1dmVc.mjs')).AXMRegionalSettingProvider;
4673
4809
  return new provider(injector);
4674
4810
  },
4675
4811
  multi: true
@@ -4708,7 +4844,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImpo
4708
4844
  provide: AXP_SETTING_DEFINITION_PROVIDER,
4709
4845
  useFactory: async () => {
4710
4846
  const injector = inject(Injector);
4711
- const provider = (await import('./acorex-modules-platform-management-settings.provider-DsHGn3AZ.mjs')).AXMRegionalSettingProvider;
4847
+ const provider = (await import('./acorex-modules-platform-management-settings.provider-BO-1dmVc.mjs')).AXMRegionalSettingProvider;
4712
4848
  return new provider(injector);
4713
4849
  },
4714
4850
  multi: true
@@ -4953,7 +5089,7 @@ class AXMShowReleaseNotesPopupAction extends AXPWorkflowAction {
4953
5089
  }
4954
5090
  async execute(context) {
4955
5091
  const scope = RootConfig.config.i18n;
4956
- const comp = await (await import('./acorex-modules-platform-management-list-version.component-D50Xundj.mjs')).AXMListVersionComponent;
5092
+ const comp = await (await import('./acorex-modules-platform-management-list-version.component-DY4yMd8n.mjs')).AXMListVersionComponent;
4957
5093
  this.popupService.open(comp, {
4958
5094
  title: `t('release-notes',{scope: "${scope}"})`,
4959
5095
  });
@@ -5019,6 +5155,77 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImpo
5019
5155
  type: Injectable
5020
5156
  }], ctorParameters: () => [{ type: i0.Injector }] });
5021
5157
 
5158
+ class AXPUpdaterService {
5159
+ constructor() {
5160
+ const swUpdate = inject(SwUpdate, { optional: true });
5161
+ const dialogService = inject(AXDialogService);
5162
+ const translateService = inject(AXTranslationService);
5163
+ if (swUpdate?.isEnabled) {
5164
+ swUpdate.versionUpdates.subscribe((event) => {
5165
+ if (event.type === 'VERSION_READY') {
5166
+ console.log('New version available');
5167
+ const scope = RootConfig.config.i18n;
5168
+ const dialog = dialogService.open({
5169
+ icon: 'fa-regular fa-info',
5170
+ content: translateService.translateSync('updater.content', { scope: scope }),
5171
+ title: translateService.translateSync('updater.title', { scope: scope }),
5172
+ type: 'primary',
5173
+ orientation: 'horizontal',
5174
+ buttons: [
5175
+ {
5176
+ text: translateService.translateSync('updater.update', { scope: scope }),
5177
+ color: 'primary',
5178
+ onClick: async (e) => {
5179
+ try {
5180
+ document.location.reload();
5181
+ dialog.close();
5182
+ }
5183
+ catch (error) {
5184
+ console.error(error);
5185
+ }
5186
+ },
5187
+ },
5188
+ {
5189
+ text: translateService.translateSync('updater.cancel', { scope: scope }),
5190
+ color: 'default',
5191
+ autofocus: true,
5192
+ onClick: (e) => {
5193
+ dialog.close();
5194
+ },
5195
+ },
5196
+ ],
5197
+ closeButton: false,
5198
+ });
5199
+ }
5200
+ });
5201
+ }
5202
+ }
5203
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPUpdaterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
5204
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPUpdaterService, providedIn: 'root' }); }
5205
+ }
5206
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPUpdaterService, decorators: [{
5207
+ type: Injectable,
5208
+ args: [{ providedIn: 'root' }]
5209
+ }], ctorParameters: () => [] });
5210
+
5211
+ class AXMUpdaterModule {
5212
+ constructor(updaterService) {
5213
+ this.updaterService = updaterService;
5214
+ }
5215
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXMUpdaterModule, deps: [{ token: AXPUpdaterService }], target: i0.ɵɵFactoryTarget.NgModule }); }
5216
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.10", ngImport: i0, type: AXMUpdaterModule }); }
5217
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXMUpdaterModule, providers: [AXPUpdaterService] }); }
5218
+ }
5219
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXMUpdaterModule, decorators: [{
5220
+ type: NgModule,
5221
+ args: [{
5222
+ imports: [],
5223
+ exports: [],
5224
+ declarations: [],
5225
+ providers: [AXPUpdaterService],
5226
+ }]
5227
+ }], ctorParameters: () => [{ type: AXPUpdaterService }] });
5228
+
5022
5229
  class AXMMenuProvider {
5023
5230
  constructor() {
5024
5231
  this.entityService = inject(AXPEntityService);
@@ -5181,76 +5388,98 @@ class AXMMenuProvider {
5181
5388
  }
5182
5389
  }
5183
5390
 
5184
- class AXPUpdaterService {
5391
+ class AXPTaskBoardTaskProvider extends AXPWorkflowTaskProvider {
5185
5392
  constructor() {
5186
- const swUpdate = inject(SwUpdate, { optional: true });
5187
- const dialogService = inject(AXDialogService);
5188
- const translateService = inject(AXTranslationService);
5189
- if (swUpdate?.isEnabled) {
5190
- swUpdate.versionUpdates.subscribe((event) => {
5191
- if (event.type === 'VERSION_READY') {
5192
- console.log('New version available');
5193
- const scope = RootConfig.config.i18n;
5194
- const dialog = dialogService.open({
5195
- icon: 'fa-regular fa-info',
5196
- content: translateService.translateSync('updater.content', { scope: scope }),
5197
- title: translateService.translateSync('updater.title', { scope: scope }),
5198
- type: 'primary',
5199
- orientation: 'horizontal',
5200
- buttons: [
5201
- {
5202
- text: translateService.translateSync('updater.update', { scope: scope }),
5203
- color: 'primary',
5204
- onClick: async (e) => {
5205
- try {
5206
- document.location.reload();
5207
- dialog.close();
5208
- }
5209
- catch (error) {
5210
- console.error(error);
5211
- }
5393
+ super(...arguments);
5394
+ this.calendarService = inject(AXCalendarService);
5395
+ this.list = [
5396
+ {
5397
+ id: 3,
5398
+ title: 'Platform important task',
5399
+ endDate: this.calendarService.create(new Date()).add('day', 1).date,
5400
+ startDate: new Date(),
5401
+ description: 'Platform important task description',
5402
+ textColor: 'rgba(var(--ax-sys-color-on-warning-surface))',
5403
+ backgroundColor: 'rgba(var(--ax-sys-color-warning-surface))',
5404
+ allDay: true,
5405
+ data: {
5406
+ actions: [
5407
+ {
5408
+ name: 'edit',
5409
+ title: 'Edit',
5410
+ icon: 'fa-light fa-pencil',
5411
+ command: {
5412
+ name: 'edit',
5413
+ options: {
5414
+ taskId: 3,
5212
5415
  },
5213
5416
  },
5214
- {
5215
- text: translateService.translateSync('updater.cancel', { scope: scope }),
5216
- color: 'default',
5217
- autofocus: true,
5218
- onClick: (e) => {
5219
- dialog.close();
5417
+ },
5418
+ ],
5419
+ },
5420
+ },
5421
+ {
5422
+ id: 4,
5423
+ endDate: this.calendarService.create(new Date()).add('hour', 1).date,
5424
+ startDate: new Date(),
5425
+ title: 'Platform important task 2',
5426
+ data: {
5427
+ actions: [
5428
+ {
5429
+ name: 'edit',
5430
+ title: 'Edit',
5431
+ icon: 'fa-light fa-pencil',
5432
+ command: {
5433
+ name: 'edit',
5434
+ options: {
5435
+ taskId: 4,
5220
5436
  },
5221
5437
  },
5222
- ],
5223
- closeButton: false,
5224
- });
5225
- }
5226
- });
5438
+ },
5439
+ ],
5440
+ },
5441
+ },
5442
+ ];
5443
+ }
5444
+ get name() {
5445
+ return 'platform-tasks';
5446
+ }
5447
+ get title() {
5448
+ return 'Platform Tasks';
5449
+ }
5450
+ get icon() {
5451
+ return 'fa-square-terminal';
5452
+ }
5453
+ async getTasks(options) {
5454
+ return this.list;
5455
+ }
5456
+ async updateTask(id, range) {
5457
+ const item = this.list.find((t) => t.id === id);
5458
+ if (!item) {
5459
+ throw new Error('Item not found');
5460
+ }
5461
+ item.startDate = range.from;
5462
+ item.endDate = range.end;
5463
+ if (this.isDurationMoreThan24Hours(item.startDate, item.endDate)) {
5464
+ item.allDay = true;
5465
+ }
5466
+ else {
5467
+ item.allDay = false;
5227
5468
  }
5469
+ this.list = this.list.map((t) => (t.id === id ? item : t));
5470
+ return item;
5228
5471
  }
5229
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPUpdaterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
5230
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPUpdaterService, providedIn: 'root' }); }
5231
- }
5232
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPUpdaterService, decorators: [{
5233
- type: Injectable,
5234
- args: [{ providedIn: 'root' }]
5235
- }], ctorParameters: () => [] });
5236
-
5237
- class AXMUpdaterModule {
5238
- constructor(updaterService) {
5239
- this.updaterService = updaterService;
5472
+ isDurationMoreThan24Hours(date1, date2) {
5473
+ const millisecondsIn24Hours = 24 * 60 * 60 * 1000 - 1;
5474
+ const differenceInMilliseconds = Math.abs(date1.getTime() - date2.getTime());
5475
+ return differenceInMilliseconds >= millisecondsIn24Hours;
5476
+ }
5477
+ async executeCommand(command) {
5478
+ return {
5479
+ success: true,
5480
+ };
5240
5481
  }
5241
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXMUpdaterModule, deps: [{ token: AXPUpdaterService }], target: i0.ɵɵFactoryTarget.NgModule }); }
5242
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.10", ngImport: i0, type: AXMUpdaterModule }); }
5243
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXMUpdaterModule, providers: [AXPUpdaterService] }); }
5244
5482
  }
5245
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXMUpdaterModule, decorators: [{
5246
- type: NgModule,
5247
- args: [{
5248
- imports: [],
5249
- exports: [],
5250
- declarations: [],
5251
- providers: [AXPUpdaterService],
5252
- }]
5253
- }], ctorParameters: () => [{ type: AXPUpdaterService }] });
5254
5483
 
5255
5484
  function routesFactory() {
5256
5485
  const config = inject(AXP_ENTITY_CONFIG_TOKEN);
@@ -5341,6 +5570,11 @@ class AXMPlatformManagementModule {
5341
5570
  useClass: AXPReleaseNotesSettingProvider,
5342
5571
  multi: true,
5343
5572
  },
5573
+ {
5574
+ provide: AXP_WORKFLOW_TASK_PROVIDER,
5575
+ useClass: AXPTaskBoardTaskProvider,
5576
+ multi: true,
5577
+ },
5344
5578
  AppVersionCheckService,
5345
5579
  AppTermsCheckService,
5346
5580
  ], imports: [AXMUpdaterModule,
@@ -5496,6 +5730,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImpo
5496
5730
  useClass: AXPReleaseNotesSettingProvider,
5497
5731
  multi: true,
5498
5732
  },
5733
+ {
5734
+ provide: AXP_WORKFLOW_TASK_PROVIDER,
5735
+ useClass: AXPTaskBoardTaskProvider,
5736
+ multi: true,
5737
+ },
5499
5738
  AppVersionCheckService,
5500
5739
  AppTermsCheckService,
5501
5740
  ],
@@ -5509,4 +5748,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImpo
5509
5748
  */
5510
5749
 
5511
5750
  export { AXPRegionalSetting as A, AXMGlossaryServiceImpl as B, metaDataDefinitionFactory as C, AXMMetaDataDefinitionService as D, AXMPMetaDataDefinitionServiceImpl as E, metaDataDefinitionCategoryEntityFactory as F, AXMMetaDataDefinitionCategoryService as G, AXMMetaDataDefinitionCategoryServiceImpl as H, AXMPromotionSlotComponent as I, promotionEntityFactory as J, AXMAppPromotionService as K, AXMPromotionServiceImpl as L, AXPRegionalStoreService as M, AXMUpdaterModule as N, AXPUpdaterService as O, RootConfig as R, AXMAppVersionService as a, AXMPlatformManagementModule as b, appTermEntityEntityFactory as c, AXMAppTermService as d, AXMAppTermServiceImpl as e, AXMListTermsComponent as f, AXMNotifyNewTermPopupAction as g, AXMTermUpdateSettingAction as h, AXMNewTermWorkflow as i, appVersionEntityEntityFactory as j, AXMAppVersionServiceImpl as k, AXMNotifyAppComponent as l, AXMAppVersionSlotComponent as m, AXMChangeLogPopupAction as n, AXMChangeLogUpdateSettingAction as o, AXMWhatsNewWorkflow as p, AXMCheckNewVersionAction as q, AXMCheckNewVersionWorkflow as r, dataSourceEntityFactory as s, AXMDataSourceService as t, AXMDataSourceServiceImpl as u, globalVariableEntityFactory as v, AXMGlobalVariablesService as w, AXMGlobalVariablesServiceImpl as x, glossaryEntityFactory as y, AXMGlossaryService as z };
5512
- //# sourceMappingURL=acorex-modules-platform-management-acorex-modules-platform-management-C9ZApxct.mjs.map
5751
+ //# sourceMappingURL=acorex-modules-platform-management-acorex-modules-platform-management-DtXOjIIK.mjs.map