@acorex/modules 20.2.4-next.1 → 20.2.4-next.3

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 (141) hide show
  1. package/conversation/index.d.ts +1 -0
  2. package/customer-management/index.d.ts +167 -0
  3. package/document-management/index.d.ts +99 -13
  4. package/fesm2022/acorex-modules-conversation.mjs +49 -32
  5. package/fesm2022/acorex-modules-conversation.mjs.map +1 -1
  6. package/fesm2022/acorex-modules-customer-management-acorex-modules-customer-management-OQ1bNJgq.mjs +679 -0
  7. package/fesm2022/acorex-modules-customer-management-acorex-modules-customer-management-OQ1bNJgq.mjs.map +1 -0
  8. package/fesm2022/acorex-modules-customer-management-activity.entity-DMe1FSzX.mjs +98 -0
  9. package/fesm2022/acorex-modules-customer-management-activity.entity-DMe1FSzX.mjs.map +1 -0
  10. package/fesm2022/acorex-modules-customer-management-customer-segment.entity-BwaPguXv.mjs +83 -0
  11. package/fesm2022/acorex-modules-customer-management-customer-segment.entity-BwaPguXv.mjs.map +1 -0
  12. package/fesm2022/acorex-modules-customer-management-customer-type.entity--593B7S-.mjs +95 -0
  13. package/fesm2022/acorex-modules-customer-management-customer-type.entity--593B7S-.mjs.map +1 -0
  14. package/fesm2022/acorex-modules-customer-management-customer.entity-Bh9tz06I.mjs +344 -0
  15. package/fesm2022/acorex-modules-customer-management-customer.entity-Bh9tz06I.mjs.map +1 -0
  16. package/fesm2022/acorex-modules-customer-management-deal-contact-role.entity-CZIIOqbm.mjs +147 -0
  17. package/fesm2022/acorex-modules-customer-management-deal-contact-role.entity-CZIIOqbm.mjs.map +1 -0
  18. package/fesm2022/acorex-modules-customer-management-lead.entity-DGtsH0mF.mjs +97 -0
  19. package/fesm2022/acorex-modules-customer-management-lead.entity-DGtsH0mF.mjs.map +1 -0
  20. package/fesm2022/acorex-modules-customer-management-lifecycle-stage.entity-BAsoYXzc.mjs +72 -0
  21. package/fesm2022/acorex-modules-customer-management-lifecycle-stage.entity-BAsoYXzc.mjs.map +1 -0
  22. package/fesm2022/acorex-modules-customer-management-opportunity-stage.entity-CwWixlpD.mjs +72 -0
  23. package/fesm2022/acorex-modules-customer-management-opportunity-stage.entity-CwWixlpD.mjs.map +1 -0
  24. package/fesm2022/acorex-modules-customer-management-opportunity.entity-U0QaZb0W.mjs +188 -0
  25. package/fesm2022/acorex-modules-customer-management-opportunity.entity-U0QaZb0W.mjs.map +1 -0
  26. package/fesm2022/acorex-modules-customer-management-sales-pipeline.entity-BKl_WTld.mjs +72 -0
  27. package/fesm2022/acorex-modules-customer-management-sales-pipeline.entity-BKl_WTld.mjs.map +1 -0
  28. package/fesm2022/acorex-modules-customer-management-sales-territory.entity-DKV0CYPg.mjs +72 -0
  29. package/fesm2022/acorex-modules-customer-management-sales-territory.entity-DKV0CYPg.mjs.map +1 -0
  30. package/fesm2022/acorex-modules-customer-management.mjs +2 -0
  31. package/fesm2022/acorex-modules-customer-management.mjs.map +1 -0
  32. package/fesm2022/{acorex-modules-document-management-acorex-modules-document-management-BCTTw-hI.mjs → acorex-modules-document-management-acorex-modules-document-management-uQnZ0m0T.mjs} +1437 -428
  33. package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-uQnZ0m0T.mjs.map +1 -0
  34. package/fesm2022/{acorex-modules-document-management-attachment-widget.component-C80j1Gn7.mjs → acorex-modules-document-management-attachment-widget.component-Be8WgyUR.mjs} +2 -2
  35. package/fesm2022/{acorex-modules-document-management-attachment-widget.component-C80j1Gn7.mjs.map → acorex-modules-document-management-attachment-widget.component-Be8WgyUR.mjs.map} +1 -1
  36. package/fesm2022/{acorex-modules-document-management-create-folder-dialog.component-BFnvHSjH.mjs → acorex-modules-document-management-create-folder-dialog.component-BlyK5a50.mjs} +4 -4
  37. package/fesm2022/{acorex-modules-document-management-create-folder-dialog.component-BFnvHSjH.mjs.map → acorex-modules-document-management-create-folder-dialog.component-BlyK5a50.mjs.map} +1 -1
  38. package/fesm2022/{acorex-modules-document-management-details-view.component-7OR6bXr-.mjs → acorex-modules-document-management-details-view.component-BlTJ_p5m.mjs} +2 -2
  39. package/fesm2022/{acorex-modules-document-management-details-view.component-7OR6bXr-.mjs.map → acorex-modules-document-management-details-view.component-BlTJ_p5m.mjs.map} +1 -1
  40. package/fesm2022/{acorex-modules-document-management-document-distribution-popup.component-DB4JJ3w7.mjs → acorex-modules-document-management-document-distribution-popup.component-BFL8zeml.mjs} +4 -4
  41. package/fesm2022/acorex-modules-document-management-document-distribution-popup.component-BFL8zeml.mjs.map +1 -0
  42. package/fesm2022/{acorex-modules-document-management-document-send-to-review-popup.component-CtpLvPIr.mjs → acorex-modules-document-management-document-send-to-review-popup.component-CoymgoD7.mjs} +4 -4
  43. package/fesm2022/acorex-modules-document-management-document-send-to-review-popup.component-CoymgoD7.mjs.map +1 -0
  44. package/fesm2022/{acorex-modules-document-management-document-signature-popup.component-BOjb2k4S.mjs → acorex-modules-document-management-document-signature-popup.component-BONQz9u3.mjs} +4 -4
  45. package/fesm2022/{acorex-modules-document-management-document-signature-popup.component-BOjb2k4S.mjs.map → acorex-modules-document-management-document-signature-popup.component-BONQz9u3.mjs.map} +1 -1
  46. package/fesm2022/{acorex-modules-document-management-drive-choose.component-B66hegSh.mjs → acorex-modules-document-management-drive-choose.component-B1CoE7aP.mjs} +4 -4
  47. package/fesm2022/{acorex-modules-document-management-drive-choose.component-B66hegSh.mjs.map → acorex-modules-document-management-drive-choose.component-B1CoE7aP.mjs.map} +1 -1
  48. package/fesm2022/{acorex-modules-document-management-drive.component-DZhd1DUn.mjs → acorex-modules-document-management-drive.component-I5pzEVVg.mjs} +5 -5
  49. package/fesm2022/{acorex-modules-document-management-drive.component-DZhd1DUn.mjs.map → acorex-modules-document-management-drive.component-I5pzEVVg.mjs.map} +1 -1
  50. package/fesm2022/{acorex-modules-document-management-large-icons-view.component-DJn6kyvL.mjs → acorex-modules-document-management-large-icons-view.component-9GtpGvk4.mjs} +2 -2
  51. package/fesm2022/{acorex-modules-document-management-large-icons-view.component-DJn6kyvL.mjs.map → acorex-modules-document-management-large-icons-view.component-9GtpGvk4.mjs.map} +1 -1
  52. package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-BeR4aIqh.mjs → acorex-modules-document-management-large-tiles-view.component-ByBZUD_u.mjs} +2 -2
  53. package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-BeR4aIqh.mjs.map → acorex-modules-document-management-large-tiles-view.component-ByBZUD_u.mjs.map} +1 -1
  54. package/fesm2022/{acorex-modules-document-management-list-view.component-oDeeGScM.mjs → acorex-modules-document-management-list-view.component-ClW5GdHG.mjs} +2 -2
  55. package/fesm2022/{acorex-modules-document-management-list-view.component-oDeeGScM.mjs.map → acorex-modules-document-management-list-view.component-ClW5GdHG.mjs.map} +1 -1
  56. package/fesm2022/{acorex-modules-document-management-meta-choose-popup.component-BbPbZmkc.mjs → acorex-modules-document-management-meta-choose-popup.component-DXTdVhrh.mjs} +3 -3
  57. package/fesm2022/{acorex-modules-document-management-meta-choose-popup.component-BbPbZmkc.mjs.map → acorex-modules-document-management-meta-choose-popup.component-DXTdVhrh.mjs.map} +1 -1
  58. package/fesm2022/{acorex-modules-document-management-permission-definition.provider-CMEJt7pe.mjs → acorex-modules-document-management-permission-definition.provider-CljbPHm-.mjs} +2 -2
  59. package/fesm2022/{acorex-modules-document-management-permission-definition.provider-CMEJt7pe.mjs.map → acorex-modules-document-management-permission-definition.provider-CljbPHm-.mjs.map} +1 -1
  60. package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-Da9v8nVj.mjs → acorex-modules-document-management-rename-node-dialog.component-xeY0XzAG.mjs} +4 -4
  61. package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-Da9v8nVj.mjs.map → acorex-modules-document-management-rename-node-dialog.component-xeY0XzAG.mjs.map} +1 -1
  62. package/fesm2022/{acorex-modules-document-management-small-icons-view.component-Wfms-st6.mjs → acorex-modules-document-management-small-icons-view.component--GP3AYPi.mjs} +2 -2
  63. package/fesm2022/{acorex-modules-document-management-small-icons-view.component-Wfms-st6.mjs.map → acorex-modules-document-management-small-icons-view.component--GP3AYPi.mjs.map} +1 -1
  64. package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-DSDfR1nj.mjs → acorex-modules-document-management-small-tiles-view.component-BVxR6ndq.mjs} +2 -2
  65. package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-DSDfR1nj.mjs.map → acorex-modules-document-management-small-tiles-view.component-BVxR6ndq.mjs.map} +1 -1
  66. package/fesm2022/acorex-modules-document-management.mjs +1 -1
  67. package/fesm2022/{acorex-modules-help-desk-acorex-modules-help-desk-Bvoh_GpG.mjs → acorex-modules-help-desk-acorex-modules-help-desk-UzQZBc6W.mjs} +19 -79
  68. package/fesm2022/acorex-modules-help-desk-acorex-modules-help-desk-UzQZBc6W.mjs.map +1 -0
  69. package/fesm2022/{acorex-modules-help-desk-capture-screen.component-DIMqm4q_.mjs → acorex-modules-help-desk-capture-screen.component-C4veMiCB.mjs} +4 -4
  70. package/fesm2022/{acorex-modules-help-desk-capture-screen.component-DIMqm4q_.mjs.map → acorex-modules-help-desk-capture-screen.component-C4veMiCB.mjs.map} +1 -1
  71. package/fesm2022/acorex-modules-help-desk.mjs +1 -1
  72. package/fesm2022/acorex-modules-log-management.mjs +261 -10
  73. package/fesm2022/acorex-modules-log-management.mjs.map +1 -1
  74. package/fesm2022/{acorex-modules-meeting-management-meeting-publish-popup.component-PcBFprq3.mjs → acorex-modules-meeting-management-meeting-publish-popup.component-BKZy7M-X.mjs} +2 -2
  75. package/fesm2022/acorex-modules-meeting-management-meeting-publish-popup.component-BKZy7M-X.mjs.map +1 -0
  76. package/fesm2022/acorex-modules-meeting-management.mjs +51 -11
  77. package/fesm2022/acorex-modules-meeting-management.mjs.map +1 -1
  78. package/fesm2022/{acorex-modules-organization-management-branch.entity-B_CYwiX9.mjs → acorex-modules-organization-management-branch.entity-Dres_jqx.mjs} +4 -2
  79. package/fesm2022/acorex-modules-organization-management-branch.entity-Dres_jqx.mjs.map +1 -0
  80. package/fesm2022/{acorex-modules-organization-management-department.entity-BbBrK4BN.mjs → acorex-modules-organization-management-department.entity-Cot-9HVC.mjs} +4 -2
  81. package/fesm2022/acorex-modules-organization-management-department.entity-Cot-9HVC.mjs.map +1 -0
  82. package/fesm2022/{acorex-modules-organization-management-division.entity-DdX7LcCU.mjs → acorex-modules-organization-management-division.entity-Dg68kBto.mjs} +11 -5
  83. package/fesm2022/acorex-modules-organization-management-division.entity-Dg68kBto.mjs.map +1 -0
  84. package/fesm2022/acorex-modules-organization-management-employee-skill.entity-DoQcCwQz.mjs +296 -0
  85. package/fesm2022/acorex-modules-organization-management-employee-skill.entity-DoQcCwQz.mjs.map +1 -0
  86. package/fesm2022/{acorex-modules-organization-management-employee.entity-zDTyY9NK.mjs → acorex-modules-organization-management-employee.entity-BuvyXqnP.mjs} +92 -311
  87. package/fesm2022/acorex-modules-organization-management-employee.entity-BuvyXqnP.mjs.map +1 -0
  88. package/fesm2022/{acorex-modules-organization-management-role.entity-BdjgFsgo.mjs → acorex-modules-organization-management-position.entity-DK-i78ck.mjs} +18 -93
  89. package/fesm2022/acorex-modules-organization-management-position.entity-DK-i78ck.mjs.map +1 -0
  90. package/fesm2022/{acorex-modules-organization-management-position.entity-DT7EyvrR.mjs → acorex-modules-organization-management-role.entity-DVoKtduv.mjs} +10 -25
  91. package/fesm2022/acorex-modules-organization-management-role.entity-DVoKtduv.mjs.map +1 -0
  92. package/fesm2022/{acorex-modules-organization-management-team.entity-DkRLWl0u.mjs → acorex-modules-organization-management-team.entity-D6iNAU4g.mjs} +14 -12
  93. package/fesm2022/acorex-modules-organization-management-team.entity-D6iNAU4g.mjs.map +1 -0
  94. package/fesm2022/acorex-modules-organization-management.mjs +59 -154
  95. package/fesm2022/acorex-modules-organization-management.mjs.map +1 -1
  96. package/fesm2022/{acorex-modules-party-management-acorex-modules-party-management-BFyD7IcC.mjs → acorex-modules-party-management-acorex-modules-party-management-BY6hXmhQ.mjs} +42 -7
  97. package/fesm2022/acorex-modules-party-management-acorex-modules-party-management-BY6hXmhQ.mjs.map +1 -0
  98. package/fesm2022/acorex-modules-party-management-industry.entity-CALiUOAF.mjs +91 -0
  99. package/fesm2022/acorex-modules-party-management-industry.entity-CALiUOAF.mjs.map +1 -0
  100. package/fesm2022/{acorex-modules-party-management-party-identifier-type.entity-BYsWpup7.mjs → acorex-modules-party-management-party-identifier-type.entity-BTkKl8Ka.mjs} +2 -2
  101. package/fesm2022/{acorex-modules-party-management-party-identifier-type.entity-BYsWpup7.mjs.map → acorex-modules-party-management-party-identifier-type.entity-BTkKl8Ka.mjs.map} +1 -1
  102. package/fesm2022/{acorex-modules-party-management-party-identifier.entity-DSn4lsX-.mjs → acorex-modules-party-management-party-identifier.entity-eDKHu-Ek.mjs} +2 -2
  103. package/fesm2022/{acorex-modules-party-management-party-identifier.entity-DSn4lsX-.mjs.map → acorex-modules-party-management-party-identifier.entity-eDKHu-Ek.mjs.map} +1 -1
  104. package/fesm2022/{acorex-modules-party-management-party-relationship.entity-BG5zuKPH.mjs → acorex-modules-party-management-party-relationship.entity-BNTNx-oY.mjs} +2 -2
  105. package/fesm2022/{acorex-modules-party-management-party-relationship.entity-BG5zuKPH.mjs.map → acorex-modules-party-management-party-relationship.entity-BNTNx-oY.mjs.map} +1 -1
  106. package/fesm2022/{acorex-modules-party-management-party-role.entity-jCTZL0mT.mjs → acorex-modules-party-management-party-role.entity-iETQVgTK.mjs} +3 -3
  107. package/fesm2022/acorex-modules-party-management-party-role.entity-iETQVgTK.mjs.map +1 -0
  108. package/fesm2022/{acorex-modules-party-management-party.entity-BwAAZRJc.mjs → acorex-modules-party-management-party.entity-lRpTfdRp.mjs} +7 -7
  109. package/fesm2022/acorex-modules-party-management-party.entity-lRpTfdRp.mjs.map +1 -0
  110. package/fesm2022/acorex-modules-party-management.mjs +1 -1
  111. package/fesm2022/acorex-modules-project-management.mjs +1 -1
  112. package/fesm2022/acorex-modules-project-management.mjs.map +1 -1
  113. package/fesm2022/acorex-modules-report-management.mjs +289 -160
  114. package/fesm2022/acorex-modules-report-management.mjs.map +1 -1
  115. package/fesm2022/acorex-modules-security-management.mjs +50 -243
  116. package/fesm2022/acorex-modules-security-management.mjs.map +1 -1
  117. package/fesm2022/{acorex-modules-task-management-task-board.page-BBbHu2jz.mjs → acorex-modules-task-management-task-board.page-DsaCXemI.mjs} +5 -5
  118. package/fesm2022/acorex-modules-task-management-task-board.page-DsaCXemI.mjs.map +1 -0
  119. package/fesm2022/acorex-modules-task-management.mjs +2 -2
  120. package/fesm2022/acorex-modules-task-management.mjs.map +1 -1
  121. package/organization-management/index.d.ts +49 -16
  122. package/package.json +5 -1
  123. package/party-management/index.d.ts +6 -0
  124. package/report-management/index.d.ts +234 -231
  125. package/security-management/index.d.ts +1 -4
  126. package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-BCTTw-hI.mjs.map +0 -1
  127. package/fesm2022/acorex-modules-document-management-document-distribution-popup.component-DB4JJ3w7.mjs.map +0 -1
  128. package/fesm2022/acorex-modules-document-management-document-send-to-review-popup.component-CtpLvPIr.mjs.map +0 -1
  129. package/fesm2022/acorex-modules-help-desk-acorex-modules-help-desk-Bvoh_GpG.mjs.map +0 -1
  130. package/fesm2022/acorex-modules-meeting-management-meeting-publish-popup.component-PcBFprq3.mjs.map +0 -1
  131. package/fesm2022/acorex-modules-organization-management-branch.entity-B_CYwiX9.mjs.map +0 -1
  132. package/fesm2022/acorex-modules-organization-management-department.entity-BbBrK4BN.mjs.map +0 -1
  133. package/fesm2022/acorex-modules-organization-management-division.entity-DdX7LcCU.mjs.map +0 -1
  134. package/fesm2022/acorex-modules-organization-management-employee.entity-zDTyY9NK.mjs.map +0 -1
  135. package/fesm2022/acorex-modules-organization-management-position.entity-DT7EyvrR.mjs.map +0 -1
  136. package/fesm2022/acorex-modules-organization-management-role.entity-BdjgFsgo.mjs.map +0 -1
  137. package/fesm2022/acorex-modules-organization-management-team.entity-DkRLWl0u.mjs.map +0 -1
  138. package/fesm2022/acorex-modules-party-management-acorex-modules-party-management-BFyD7IcC.mjs.map +0 -1
  139. package/fesm2022/acorex-modules-party-management-party-role.entity-jCTZL0mT.mjs.map +0 -1
  140. package/fesm2022/acorex-modules-party-management-party.entity-BwAAZRJc.mjs.map +0 -1
  141. package/fesm2022/acorex-modules-task-management-task-board.page-BBbHu2jz.mjs.map +0 -1
@@ -2,10 +2,10 @@ import { AXPSessionService, AXPAuthGuard, AXP_PERMISSION_DEFINITION_PROVIDER } f
2
2
  import { AXPSearchCommandProvider, createAllQueryView, createQueryView, AXPEntityCommandScope, AXPEntityQueryType, AXPFileTypeProviderService, AXP_FILE_TYPE_INFO_PROVIDER, AXPFileStorageService, AXPSettingService, AXPLockService, AXP_MENU_PROVIDER, AXP_SETTING_DEFINITION_PROVIDER, AXP_SEARCH_PROVIDER } from '@acorex/platform/common';
3
3
  import { AXPEntityService, AXMEntityCrudServiceImpl, ensureListActions, actionExists, AXP_ENTITY_CONFIG_TOKEN, AXP_ENTITY_DEFINITION_LOADER, AXP_ENTITY_ACTION_PLUGIN } from '@acorex/platform/layout/entity';
4
4
  import * as i0 from '@angular/core';
5
- import { inject, Injector, Injectable, NgModule, ChangeDetectionStrategy, Component, signal, viewChild, afterNextRender, computed, input, effect, ViewEncapsulation, output, HostBinding } from '@angular/core';
5
+ import { inject, Injector, Injectable, NgModule, ChangeDetectionStrategy, Component, signal, computed, viewChild, afterNextRender, input, effect, ViewEncapsulation, output, HostBinding } from '@angular/core';
6
6
  import { firstValueFrom } from 'rxjs';
7
7
  import * as i1$2 from '@acorex/platform/layout/builder';
8
- import { AXPWidgetsCatalog, AXPValueWidgetComponent, AXPLayoutBuilderModule, AXP_WIDGETS_ADVANCE_CATEGORY, AXPWidgetGroupEnum, AXP_WIDGETS_EDITOR_CATEGORY } from '@acorex/platform/layout/builder';
8
+ import { AXPWidgetsCatalog, AXPValueWidgetComponent, AXPLayoutBuilderModule, AXP_WIDGETS_ADVANCE_CATEGORY, AXPWidgetGroupEnum, AXP_WIDGETS_EDITOR_CATEGORY, AXPColumnWidgetComponent } from '@acorex/platform/layout/builder';
9
9
  import { RouterModule, ROUTES } from '@angular/router';
10
10
  import * as i7 from '@acorex/components/collapse';
11
11
  import { AXCollapseModule } from '@acorex/components/collapse';
@@ -22,17 +22,17 @@ import * as i1$1 from '@angular/forms';
22
22
  import { FormsModule } from '@angular/forms';
23
23
  import get from 'lodash-es/get';
24
24
  import set from 'lodash-es/set';
25
- import { AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_LABEL_PROPERTY, AXP_READONLY_PROPERTY, AXP_DISABLED_PROPERTY } from '@acorex/platform/widgets';
25
+ import { AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_LABEL_PROPERTY, AXP_READONLY_PROPERTY, AXP_DISABLED_PROPERTY, AXP_ALLOW_MULTIPLE_PROPERTY, AXP_DOWNLOADABLE_PROPERTY, AXP_DESCRIPTION_PROPERTY, AXP_REQUIRED_VALIDATION_PROPERTY, AXP_BEHAVIOR_PROPERTY_GROUP, AXPFileUploaderWidgetService } from '@acorex/platform/widgets';
26
26
  import * as i3$2 from '@acorex/components/media-viewer';
27
27
  import { AXMediaViewerContainerComponent, AXMediaViewerModule } from '@acorex/components/media-viewer';
28
28
  import * as i3$4 from '@acorex/platform/workflow';
29
29
  import { AXPWorkflowAction, AXPWorkflowService, AXPWorkflowTaskProvider, AXPWorkflowModule, AXP_WORKFLOW_TASK_PROVIDER } from '@acorex/platform/workflow';
30
30
  import { AXPopupService } from '@acorex/components/popup';
31
31
  import { AXUploaderService } from '@acorex/components/uploader';
32
- import * as i3$1 from '@acorex/core/translation';
32
+ import * as i5 from '@acorex/core/translation';
33
33
  import { AXTranslationService, AXTranslationModule } from '@acorex/core/translation';
34
34
  import * as i1$5 from '@acorex/platform/layout/components';
35
- import { AXPComponentSlotModule, AXP_TASK_BADGE_PROVIDERS } from '@acorex/platform/layout/components';
35
+ import { AXPDynamicFormComponent, AXPComponentSlotModule, AXP_TASK_BADGE_PROVIDERS } from '@acorex/platform/layout/components';
36
36
  import * as i1$4 from '@angular/common';
37
37
  import { CommonModule } from '@angular/common';
38
38
  import * as i1$3 from '@acorex/components/button';
@@ -42,10 +42,10 @@ import { AXCheckBoxModule } from '@acorex/components/check-box';
42
42
  import { AXPPlatformScope, AXPDistributedEventListenerService } from '@acorex/platform/core';
43
43
  import { AXDialogService } from '@acorex/components/dialog';
44
44
  import { AXFileService } from '@acorex/core/file';
45
- import { castArray, set as set$1, get as get$1, cloneDeep } from 'lodash-es';
46
- import { AXBasePageComponent } from '@acorex/components/page';
47
- import * as i5 from '@acorex/components/dropdown-button';
45
+ import { castArray, get as get$1, cloneDeep } from 'lodash-es';
46
+ import * as i3$1 from '@acorex/components/dropdown-button';
48
47
  import { AXDropdownButtonModule } from '@acorex/components/dropdown-button';
48
+ import { AXBasePageComponent } from '@acorex/components/page';
49
49
  import { AXLoadingModule } from '@acorex/components/loading';
50
50
  import * as i3$3 from '@acorex/components/menu';
51
51
  import { AXMenuModule } from '@acorex/components/menu';
@@ -66,6 +66,12 @@ const RootConfig = {
66
66
  icon: 'fa-light fa-books',
67
67
  },
68
68
  entities: {
69
+ documentRelated: {
70
+ name: 'DocumentRelated',
71
+ title: `t("document", { scope: "${config.i18n}" })`,
72
+ titlePlural: `t("documentPlural", { scope: "${config.i18n}" })`,
73
+ icon: 'fa-light fa-default',
74
+ },
69
75
  distributionInteraction: {
70
76
  name: 'DistributionInteraction',
71
77
  title: `t("distributionInteraction", { scope: "${config.i18n}" })`,
@@ -149,6 +155,8 @@ class AXMEntityProvider {
149
155
  return (await Promise.resolve().then(function () { return index$1; })).distributionFactory(this.injector);
150
156
  case RootConfig.entities.distributionInteraction.name:
151
157
  return (await Promise.resolve().then(function () { return index$1; })).distributionInteractionFactory(this.injector);
158
+ case RootConfig.entities.documentRelated.name:
159
+ return (await Promise.resolve().then(function () { return index$1; })).documentRelatedFactory(this.injector);
152
160
  }
153
161
  }
154
162
  return null;
@@ -467,7 +475,7 @@ async function documentFactory(injector) {
467
475
  options: {
468
476
  maxFileSize: ` {{context.eval("type.maxSize")}} `,
469
477
  multiple: ` {{context.eval("type.multiple")}} `,
470
- accept: ` {{context.eval("type.multiple")}} `,
478
+ // accept: ` {{context.eval("type.multiple")}} `,
471
479
  },
472
480
  },
473
481
  },
@@ -636,7 +644,9 @@ async function documentFactory(injector) {
636
644
  queries: {
637
645
  byKey: {
638
646
  execute: async (id) => {
639
- return await dataService.getOne(id);
647
+ const x = await dataService.getOne(id);
648
+ console.log(x);
649
+ return x;
640
650
  },
641
651
  type: AXPEntityQueryType.Single,
642
652
  },
@@ -816,16 +826,16 @@ async function documentFactory(injector) {
816
826
  },
817
827
  },
818
828
  },
819
- {
820
- name: 'fileId',
821
- layout: {
822
- positions: {
823
- lg: {
824
- colSpan: 12,
825
- },
826
- },
827
- },
828
- },
829
+ // {
830
+ // name: 'fileId',
831
+ // layout: {
832
+ // positions: {
833
+ // lg: {
834
+ // colSpan: 12,
835
+ // },
836
+ // },
837
+ // },
838
+ // },
829
839
  // {
830
840
  // name: 'file',
831
841
  // layout: {
@@ -2940,7 +2950,7 @@ async function reviewFactory(injector) {
2940
2950
  interface: {
2941
2951
  type: AXPWidgetsCatalog.lookup,
2942
2952
  options: {
2943
- entity: 'SecurityManagement.users',
2953
+ entity: 'SecurityManagement.User',
2944
2954
  multiple: false,
2945
2955
  textField: 'username',
2946
2956
  valueField: 'id',
@@ -3067,7 +3077,7 @@ async function reviewFactory(injector) {
3067
3077
  interface: {
3068
3078
  type: AXPWidgetsCatalog.lookup,
3069
3079
  options: {
3070
- entity: 'SecurityManagement.users',
3080
+ entity: 'SecurityManagement.User',
3071
3081
  multiple: false,
3072
3082
  textField: 'name',
3073
3083
  valueField: 'id',
@@ -3956,169 +3966,605 @@ async function distributionInteractionFactory(injector) {
3956
3966
  return entityDef;
3957
3967
  }
3958
3968
 
3959
- var index$1 = /*#__PURE__*/Object.freeze({
3960
- __proto__: null,
3961
- AXMDistributionInteractionService: AXMDistributionInteractionService,
3962
- AXMDistributionInteractionServiceImpl: AXMDistributionInteractionServiceImpl,
3963
- AXMDistributionService: AXMDistributionService,
3964
- AXMDistributionServiceImpl: AXMDistributionServiceImpl,
3965
- AXMDocumentManagementDocumentEntityModule: AXMDocumentManagementDocumentEntityModule,
3966
- AXMDocumentManagementDocumentTypeEntityModule: AXMDocumentManagementDocumentTypeEntityModule,
3967
- AXMDocumentManagementDocumentTypeMetaDefinitionEntityModule: AXMDocumentManagementDocumentTypeMetaDefinitionEntityModule,
3968
- AXMDocumentManagementDocumentTypeMetaDefinitionEntityService: AXMDocumentManagementDocumentTypeMetaDefinitionEntityService,
3969
- AXMDocumentManagementDocumentTypeMetaDefinitionEntityServiceImpl: AXMDocumentManagementDocumentTypeMetaDefinitionEntityServiceImpl,
3970
- AXMDocumentManagementDocumentTypeMetaValueEntityModule: AXMDocumentManagementDocumentTypeMetaValueEntityModule,
3971
- AXMDocumentManagementDocumentTypeMetaValueEntityService: AXMDocumentManagementDocumentTypeMetaValueEntityService,
3972
- AXMDocumentManagementDocumentTypeMetaValueEntityServiceImpl: AXMDocumentManagementDocumentTypeMetaValueEntityServiceImpl,
3973
- AXMDocumentManagementDocumentTypeStatusDefinitionEntityModule: AXMDocumentManagementDocumentTypeStatusDefinitionEntityModule,
3974
- AXMDocumentManagementDocumentTypeStatusDefinitionEntityService: AXMDocumentManagementDocumentTypeStatusDefinitionEntityService,
3975
- AXMDocumentManagementDocumentTypeStatusDefinitionEntityServiceImpl: AXMDocumentManagementDocumentTypeStatusDefinitionEntityServiceImpl,
3976
- AXMDocumentService: AXMDocumentService,
3977
- AXMDocumentServiceImpl: AXMDocumentServiceImpl,
3978
- AXMDocumentTypeService: AXMDocumentTypeService,
3979
- AXMDocumentTypeServiceImpl: AXMDocumentTypeServiceImpl,
3980
- AXMFolderService: AXMFolderService,
3981
- AXMFolderServiceImpl: AXMFolderServiceImpl,
3982
- AXMReviewService: AXMReviewService,
3983
- AXMReviewServiceImpl: AXMReviewServiceImpl,
3984
- canTransition: canTransition,
3985
- distributionFactory: distributionFactory,
3986
- distributionInteractionFactory: distributionInteractionFactory,
3987
- documentFactory: documentFactory,
3988
- documentTypeFactory: documentTypeFactory,
3989
- documentTypeMetaDefinitionfactory: documentTypeMetaDefinitionfactory,
3990
- documentTypeMetaValueFactory: documentTypeMetaValueFactory,
3991
- documentTypeStatusDefinitionFactory: documentTypeStatusDefinitionFactory,
3992
- folderFactory: folderFactory,
3993
- getNextStatus: getNextStatus,
3994
- reviewFactory: reviewFactory
3995
- });
3996
-
3997
- class AXMImageFileTypeProvider {
3998
- async items() {
3999
- return [
3969
+ async function documentRelatedFactory(injector) {
3970
+ const dataService = injector.get(AXMDocumentService);
3971
+ const i18n = RootConfig.config.i18n;
3972
+ const entityDef = {
3973
+ module: RootConfig.module.name,
3974
+ name: RootConfig.entities.documentRelated.name,
3975
+ source: '',
3976
+ title: RootConfig.entities.documentRelated.title,
3977
+ formats: {
3978
+ individual: RootConfig.entities.documentRelated.title,
3979
+ plural: RootConfig.entities.documentRelated.titlePlural,
3980
+ searchResult: {
3981
+ title: '{{ title }}',
3982
+ description: RootConfig.module.title,
3983
+ },
3984
+ },
3985
+ relatedEntities: [],
3986
+ groups: [
4000
3987
  {
4001
- name: 'image',
4002
- title: 'Image',
4003
- icon: 'fa-light fa-image ax-text-purple-500',
4004
- extensions: [
4005
- {
4006
- name: 'jpg',
4007
- title: 'JPEG',
4008
- icon: 'fa-light fa-image ax-text-purple-500',
4009
- meta: [],
3988
+ id: 'section',
3989
+ title: RootConfig.entities.documentRelated.title,
3990
+ },
3991
+ ],
3992
+ properties: [
3993
+ {
3994
+ name: 'name',
3995
+ title: 't("name", { scope: "common" })',
3996
+ groupId: 'section',
3997
+ schema: {
3998
+ dataType: 'string',
3999
+ readonly: true,
4000
+ interface: {
4001
+ type: AXPWidgetsCatalog.text,
4002
+ options: {
4003
+ placeholder: 't("name", { scope: "common" })',
4004
+ },
4010
4005
  },
4011
- {
4012
- name: 'png',
4013
- title: 'PNG',
4014
- icon: 'fa-light fa-image ax-text-purple-500',
4015
- meta: [],
4006
+ },
4007
+ },
4008
+ {
4009
+ name: 'size',
4010
+ title: 't("size", { scope: "common" })',
4011
+ groupId: 'section',
4012
+ schema: {
4013
+ dataType: 'string',
4014
+ readonly: true,
4015
+ interface: {
4016
+ type: AXPWidgetsCatalog.number,
4017
+ options: {},
4016
4018
  },
4019
+ },
4020
+ validations: [
4017
4021
  {
4018
- name: 'gif',
4019
- title: 'GIF',
4020
- icon: 'fa-light fa-image ax-text-purple-500',
4021
- meta: [
4022
- {
4023
- name: 'duration',
4024
- title: 'Duration',
4025
- interface: async () => {
4026
- return {
4027
- type: AXPWidgetsCatalog.text,
4028
- options: {
4029
- validations: [
4030
- {
4031
- rule: "required"
4032
- }
4033
- ]
4034
- },
4035
- path: 'gift.duration',
4036
- };
4037
- },
4038
- },
4039
- ],
4022
+ rule: 'required',
4040
4023
  },
4041
4024
  ],
4042
- meta: [
4043
- {
4044
- name: 'width',
4045
- title: 'Width',
4046
- interface: async () => {
4047
- return {
4048
- type: AXPWidgetsCatalog.text,
4049
- options: {
4050
- validations: [
4051
- {
4052
- rule: "required"
4053
- }
4054
- ]
4055
- },
4056
- path: 'image.width',
4057
- };
4025
+ },
4026
+ {
4027
+ name: 'type',
4028
+ title: 't("type", { scope: "common" })',
4029
+ groupId: 'section',
4030
+ schema: {
4031
+ dataType: 'string',
4032
+ readonly: true,
4033
+ interface: {
4034
+ type: AXPWidgetsCatalog.lookup,
4035
+ options: {
4036
+ entity: `${RootConfig.module.name}.${RootConfig.entities.documentType.name}`,
4037
+ expose: 'type',
4058
4038
  },
4059
4039
  },
4040
+ },
4041
+ validations: [
4060
4042
  {
4061
- name: 'height',
4062
- title: 'Height',
4063
- interface: async () => {
4064
- return {
4065
- type: AXPWidgetsCatalog.text,
4066
- options: {},
4067
- path: 'image.height',
4068
- };
4069
- },
4043
+ rule: 'required',
4070
4044
  },
4071
4045
  ],
4072
4046
  },
4073
- ];
4074
- }
4075
- }
4076
-
4077
- class AXMVideoFileTypeProvider {
4078
- async items() {
4079
- return [
4080
4047
  {
4081
- name: 'video',
4082
- title: 'Video',
4083
- icon: 'fa-light fa-video ax-text-red-500',
4084
- extensions: [
4085
- {
4086
- name: 'mp4',
4087
- title: 'MP4',
4088
- icon: 'fa-light fa-video ax-text-red-500',
4089
- meta: [],
4090
- },
4091
- {
4092
- name: 'avi',
4093
- title: 'AVI',
4094
- icon: 'fa-light fa-video ax-text-red-500',
4095
- meta: [],
4048
+ name: 'metaData',
4049
+ title: `t("metaData", { scope: "${i18n}" })`,
4050
+ groupId: 'section',
4051
+ schema: {
4052
+ dataType: 'object',
4053
+ readonly: true,
4054
+ interface: {
4055
+ type: AXPWidgetsCatalog.blockLayout,
4056
+ options: {},
4057
+ // children: 'context.eval("type.meta")'
4058
+ children: []
4096
4059
  },
4060
+ },
4061
+ validations: [
4097
4062
  {
4098
- name: 'mkv',
4099
- title: 'MKV',
4100
- icon: 'fa-light fa-video ax-text-red-500',
4101
- meta: [],
4063
+ rule: 'required',
4102
4064
  },
4103
4065
  ],
4104
4066
  },
4105
- ];
4106
- }
4107
- }
4108
-
4109
- class AXMDocumentFileTypeProvider {
4110
- async items() {
4111
- return [
4112
4067
  {
4113
- name: 'document',
4114
- title: 'Document',
4115
- icon: 'fa-light fa-file-lines ax-text-blue-600',
4116
- extensions: [
4117
- {
4118
- name: 'pdf',
4119
- title: 'PDF',
4120
- icon: 'fa-light fa-file-pdf ax-text-red-600',
4121
- meta: [],
4068
+ name: 'fileId',
4069
+ title: `t("file", { scope: "${i18n}" })`,
4070
+ groupId: 'section',
4071
+ schema: {
4072
+ dataType: 'string',
4073
+ readonly: true,
4074
+ interface: {
4075
+ type: AXPWidgetsCatalog.fileUploader,
4076
+ options: {
4077
+ maxFileSize: ` {{context.eval("type.maxSize")}} `,
4078
+ multiple: ` {{context.eval("type.multiple")}} `,
4079
+ // accept: ` {{context.eval("type.multiple")}} `,
4080
+ },
4081
+ },
4082
+ },
4083
+ validations: [
4084
+ {
4085
+ rule: 'required',
4086
+ },
4087
+ ],
4088
+ },
4089
+ ],
4090
+ columns: [
4091
+ { name: 'name' },
4092
+ { name: 'fileId' },
4093
+ { name: 'type' },
4094
+ { name: 'size' }
4095
+ ],
4096
+ commands: {
4097
+ create: {
4098
+ execute: async (data) => {
4099
+ const res = await dataService.insertOne(data);
4100
+ return { id: res };
4101
+ },
4102
+ },
4103
+ delete: {
4104
+ execute: async (id) => {
4105
+ return await dataService.deleteOne(id);
4106
+ },
4107
+ },
4108
+ update: {
4109
+ execute: async (data) => {
4110
+ return await dataService.updateOne(data.id, data);
4111
+ },
4112
+ },
4113
+ },
4114
+ queries: {
4115
+ byKey: {
4116
+ execute: async (id) => {
4117
+ const x = await dataService.getOne(id);
4118
+ console.log(x);
4119
+ return x;
4120
+ },
4121
+ type: AXPEntityQueryType.Single,
4122
+ },
4123
+ list: {
4124
+ execute: async (e) => {
4125
+ const x = await dataService.query({
4126
+ skip: e.skip,
4127
+ take: e.take,
4128
+ filter: e.filter,
4129
+ });
4130
+ return x;
4131
+ },
4132
+ type: AXPEntityQueryType.List,
4133
+ },
4134
+ },
4135
+ interfaces: {
4136
+ master: {
4137
+ create: {
4138
+ sections: [
4139
+ {
4140
+ id: 'section',
4141
+ },
4142
+ ],
4143
+ properties: [
4144
+ {
4145
+ name: 'metaData',
4146
+ layout: {
4147
+ positions: {
4148
+ lg: {
4149
+ colSpan: 12,
4150
+ },
4151
+ },
4152
+ },
4153
+ },
4154
+ {
4155
+ name: 'fileId',
4156
+ layout: {
4157
+ positions: {
4158
+ lg: {
4159
+ colSpan: 12,
4160
+ },
4161
+ },
4162
+ },
4163
+ },
4164
+ ],
4165
+ },
4166
+ update: {
4167
+ sections: [
4168
+ {
4169
+ id: 'section',
4170
+ },
4171
+ ],
4172
+ properties: [
4173
+ {
4174
+ name: 'name',
4175
+ layout: {
4176
+ positions: {
4177
+ lg: {
4178
+ colSpan: 6,
4179
+ },
4180
+ },
4181
+ },
4182
+ },
4183
+ {
4184
+ name: 'type',
4185
+ layout: {
4186
+ positions: {
4187
+ lg: {
4188
+ colSpan: 12,
4189
+ },
4190
+ },
4191
+ },
4192
+ },
4193
+ {
4194
+ name: 'metaData',
4195
+ layout: {
4196
+ positions: {
4197
+ lg: {
4198
+ colSpan: 12,
4199
+ },
4200
+ },
4201
+ },
4202
+ },
4203
+ {
4204
+ name: 'file',
4205
+ layout: {
4206
+ positions: {
4207
+ lg: {
4208
+ colSpan: 12,
4209
+ },
4210
+ },
4211
+ },
4212
+ },
4213
+ ],
4214
+ },
4215
+ single: {
4216
+ title: '{{title}}',
4217
+ sections: [
4218
+ {
4219
+ id: 'section',
4220
+ layout: {
4221
+ positions: {
4222
+ lg: {
4223
+ colSpan: 12,
4224
+ },
4225
+ },
4226
+ },
4227
+ },
4228
+ ],
4229
+ properties: [
4230
+ {
4231
+ name: 'metaData',
4232
+ layout: {
4233
+ positions: {
4234
+ lg: {
4235
+ colSpan: 6,
4236
+ },
4237
+ }
4238
+ },
4239
+ },
4240
+ {
4241
+ name: 'fileId',
4242
+ layout: {
4243
+ positions: {
4244
+ lg: {
4245
+ colSpan: 12,
4246
+ },
4247
+ },
4248
+ },
4249
+ },
4250
+ ],
4251
+ actions: [
4252
+ {
4253
+ title: `t("document-review.send-review.title", { scope: "${i18n}" })`,
4254
+ command: {
4255
+ name: 'send-to-review',
4256
+ options: {
4257
+ id: '{{context.eval("id")}}',
4258
+ title: '{{context.eval("title")}}',
4259
+ },
4260
+ },
4261
+ priority: 'primary',
4262
+ type: 'sent',
4263
+ scope: AXPEntityCommandScope.TypeLevel,
4264
+ disabled: '{{context.eval("status") != "Draft"}}',
4265
+ },
4266
+ {
4267
+ title: `t("document-review.submit-review.title", { scope: "${i18n}" })`,
4268
+ command: {
4269
+ name: 'submit-review',
4270
+ options: {
4271
+ id: '{{context.eval("reviewRecordId")}}',
4272
+ decoration: {
4273
+ header: {
4274
+ title: '{{ context.eval("title") }}',
4275
+ },
4276
+ },
4277
+ },
4278
+ },
4279
+ priority: 'primary',
4280
+ type: 'review',
4281
+ scope: AXPEntityCommandScope.TypeLevel,
4282
+ disabled: '{{context.eval("status") != "PendingReview"}}',
4283
+ },
4284
+ {
4285
+ title: `t("distributed", { scope: "${i18n}" })`,
4286
+ command: {
4287
+ name: 'distributed',
4288
+ options: {
4289
+ id: '{{context.eval("id")}}',
4290
+ title: '{{context.eval("title")}}',
4291
+ },
4292
+ },
4293
+ priority: 'primary',
4294
+ type: 'review',
4295
+ scope: AXPEntityCommandScope.TypeLevel,
4296
+ disabled: '{{context.eval("status") != "Reviewed" && context.eval("status") != "Completed"}}',
4297
+ },
4298
+ ],
4299
+ },
4300
+ list: {
4301
+ actions: [
4302
+ {
4303
+ title: 't("detail", { scope: "common" })',
4304
+ command: 'open-entity',
4305
+ priority: 'secondary',
4306
+ type: 'view',
4307
+ default: true,
4308
+ scope: AXPEntityCommandScope.Individual,
4309
+ },
4310
+ {
4311
+ title: `t("document-review.send-review.title", { scope: "${i18n}" })`,
4312
+ icon: 'fa-light fa-shield-check',
4313
+ command: {
4314
+ name: 'send-to-review',
4315
+ options: {
4316
+ id: '{{context.eval("id")}}',
4317
+ title: '{{context.eval("title")}}',
4318
+ },
4319
+ },
4320
+ priority: 'secondary',
4321
+ type: 'sent',
4322
+ scope: AXPEntityCommandScope.Individual,
4323
+ disabled: '{{context.eval("status") != "Draft"}}',
4324
+ },
4325
+ {
4326
+ title: `t("document-review.submit-review.title", { scope: "${i18n}" })`,
4327
+ icon: 'fa-light fa-ballot-check',
4328
+ command: {
4329
+ name: 'submit-review',
4330
+ options: {
4331
+ id: '{{context.eval("reviewRecordId")}}',
4332
+ // reviewedAt : '{{ variables.execute("now") }}',
4333
+ decoration: {
4334
+ header: {
4335
+ title: '{{ context.eval("title") + " - version: " + context.eval("version") }}',
4336
+ },
4337
+ },
4338
+ },
4339
+ },
4340
+ priority: 'secondary',
4341
+ type: 'review',
4342
+ scope: AXPEntityCommandScope.Individual,
4343
+ disabled: '{{context.eval("status") != "PendingReview"}}',
4344
+ },
4345
+ {
4346
+ title: `t("distributed", { scope: "${i18n}" })`,
4347
+ icon: 'fa-light fa-chart-network',
4348
+ command: {
4349
+ name: 'distributed',
4350
+ options: {
4351
+ id: '{{context.eval("id")}}',
4352
+ title: '{{context.eval("title")}}',
4353
+ },
4354
+ },
4355
+ priority: 'secondary',
4356
+ type: 'review',
4357
+ scope: AXPEntityCommandScope.Individual,
4358
+ disabled: '{{context.eval("status") != "Reviewed" && context.eval("status") != "Completed"}}',
4359
+ },
4360
+ ],
4361
+ views: [
4362
+ createAllQueryView({ sorts: [{ name: 'name', dir: 'asc' }] }),
4363
+ createQueryView('Draft', `t("draft", { scope: "${i18n}" })`, true, {
4364
+ conditions: [
4365
+ {
4366
+ name: 'status',
4367
+ operator: {
4368
+ type: 'equal',
4369
+ },
4370
+ value: 'Draft',
4371
+ },
4372
+ ],
4373
+ }),
4374
+ createQueryView('PendingReview', `t("pending", { scope: "${i18n}" })`, true, {
4375
+ conditions: [
4376
+ {
4377
+ name: 'status',
4378
+ operator: {
4379
+ type: 'equal',
4380
+ },
4381
+ value: 'PendingReview',
4382
+ },
4383
+ ],
4384
+ }),
4385
+ createQueryView('Reviewed', `t("reviewed", { scope: "${i18n}" })`, true, {
4386
+ conditions: [
4387
+ {
4388
+ name: 'status',
4389
+ operator: {
4390
+ type: 'equal',
4391
+ },
4392
+ value: 'Reviewed',
4393
+ },
4394
+ ],
4395
+ }),
4396
+ ],
4397
+ },
4398
+ },
4399
+ },
4400
+ };
4401
+ return entityDef;
4402
+ }
4403
+
4404
+ var index$1 = /*#__PURE__*/Object.freeze({
4405
+ __proto__: null,
4406
+ AXMDistributionInteractionService: AXMDistributionInteractionService,
4407
+ AXMDistributionInteractionServiceImpl: AXMDistributionInteractionServiceImpl,
4408
+ AXMDistributionService: AXMDistributionService,
4409
+ AXMDistributionServiceImpl: AXMDistributionServiceImpl,
4410
+ AXMDocumentManagementDocumentEntityModule: AXMDocumentManagementDocumentEntityModule,
4411
+ AXMDocumentManagementDocumentTypeEntityModule: AXMDocumentManagementDocumentTypeEntityModule,
4412
+ AXMDocumentManagementDocumentTypeMetaDefinitionEntityModule: AXMDocumentManagementDocumentTypeMetaDefinitionEntityModule,
4413
+ AXMDocumentManagementDocumentTypeMetaDefinitionEntityService: AXMDocumentManagementDocumentTypeMetaDefinitionEntityService,
4414
+ AXMDocumentManagementDocumentTypeMetaDefinitionEntityServiceImpl: AXMDocumentManagementDocumentTypeMetaDefinitionEntityServiceImpl,
4415
+ AXMDocumentManagementDocumentTypeMetaValueEntityModule: AXMDocumentManagementDocumentTypeMetaValueEntityModule,
4416
+ AXMDocumentManagementDocumentTypeMetaValueEntityService: AXMDocumentManagementDocumentTypeMetaValueEntityService,
4417
+ AXMDocumentManagementDocumentTypeMetaValueEntityServiceImpl: AXMDocumentManagementDocumentTypeMetaValueEntityServiceImpl,
4418
+ AXMDocumentManagementDocumentTypeStatusDefinitionEntityModule: AXMDocumentManagementDocumentTypeStatusDefinitionEntityModule,
4419
+ AXMDocumentManagementDocumentTypeStatusDefinitionEntityService: AXMDocumentManagementDocumentTypeStatusDefinitionEntityService,
4420
+ AXMDocumentManagementDocumentTypeStatusDefinitionEntityServiceImpl: AXMDocumentManagementDocumentTypeStatusDefinitionEntityServiceImpl,
4421
+ AXMDocumentService: AXMDocumentService,
4422
+ AXMDocumentServiceImpl: AXMDocumentServiceImpl,
4423
+ AXMDocumentTypeService: AXMDocumentTypeService,
4424
+ AXMDocumentTypeServiceImpl: AXMDocumentTypeServiceImpl,
4425
+ AXMFolderService: AXMFolderService,
4426
+ AXMFolderServiceImpl: AXMFolderServiceImpl,
4427
+ AXMReviewService: AXMReviewService,
4428
+ AXMReviewServiceImpl: AXMReviewServiceImpl,
4429
+ canTransition: canTransition,
4430
+ distributionFactory: distributionFactory,
4431
+ distributionInteractionFactory: distributionInteractionFactory,
4432
+ documentFactory: documentFactory,
4433
+ documentRelatedFactory: documentRelatedFactory,
4434
+ documentTypeFactory: documentTypeFactory,
4435
+ documentTypeMetaDefinitionfactory: documentTypeMetaDefinitionfactory,
4436
+ documentTypeMetaValueFactory: documentTypeMetaValueFactory,
4437
+ documentTypeStatusDefinitionFactory: documentTypeStatusDefinitionFactory,
4438
+ folderFactory: folderFactory,
4439
+ getNextStatus: getNextStatus,
4440
+ reviewFactory: reviewFactory
4441
+ });
4442
+
4443
+ class AXMImageFileTypeProvider {
4444
+ async items() {
4445
+ return [
4446
+ {
4447
+ name: 'image',
4448
+ title: 'Image',
4449
+ icon: 'fa-light fa-image ax-text-purple-500',
4450
+ extensions: [
4451
+ {
4452
+ name: 'jpg',
4453
+ title: 'JPEG',
4454
+ icon: 'fa-light fa-image ax-text-purple-500',
4455
+ meta: [],
4456
+ },
4457
+ {
4458
+ name: 'png',
4459
+ title: 'PNG',
4460
+ icon: 'fa-light fa-image ax-text-purple-500',
4461
+ meta: [],
4462
+ },
4463
+ {
4464
+ name: 'gif',
4465
+ title: 'GIF',
4466
+ icon: 'fa-light fa-image ax-text-purple-500',
4467
+ meta: [
4468
+ {
4469
+ name: 'duration',
4470
+ title: 'Duration',
4471
+ interface: async () => {
4472
+ return {
4473
+ type: AXPWidgetsCatalog.text,
4474
+ options: {
4475
+ validations: [
4476
+ {
4477
+ rule: "required"
4478
+ }
4479
+ ]
4480
+ },
4481
+ path: 'gift.duration',
4482
+ };
4483
+ },
4484
+ },
4485
+ ],
4486
+ },
4487
+ ],
4488
+ meta: [
4489
+ {
4490
+ name: 'width',
4491
+ title: 'Width',
4492
+ interface: async () => {
4493
+ return {
4494
+ type: AXPWidgetsCatalog.text,
4495
+ options: {
4496
+ validations: [
4497
+ {
4498
+ rule: "required"
4499
+ }
4500
+ ]
4501
+ },
4502
+ path: 'image.width',
4503
+ };
4504
+ },
4505
+ },
4506
+ {
4507
+ name: 'height',
4508
+ title: 'Height',
4509
+ interface: async () => {
4510
+ return {
4511
+ type: AXPWidgetsCatalog.text,
4512
+ options: {},
4513
+ path: 'image.height',
4514
+ };
4515
+ },
4516
+ },
4517
+ ],
4518
+ },
4519
+ ];
4520
+ }
4521
+ }
4522
+
4523
+ class AXMVideoFileTypeProvider {
4524
+ async items() {
4525
+ return [
4526
+ {
4527
+ name: 'video',
4528
+ title: 'Video',
4529
+ icon: 'fa-light fa-video ax-text-red-500',
4530
+ extensions: [
4531
+ {
4532
+ name: 'mp4',
4533
+ title: 'MP4',
4534
+ icon: 'fa-light fa-video ax-text-red-500',
4535
+ meta: [],
4536
+ },
4537
+ {
4538
+ name: 'avi',
4539
+ title: 'AVI',
4540
+ icon: 'fa-light fa-video ax-text-red-500',
4541
+ meta: [],
4542
+ },
4543
+ {
4544
+ name: 'mkv',
4545
+ title: 'MKV',
4546
+ icon: 'fa-light fa-video ax-text-red-500',
4547
+ meta: [],
4548
+ },
4549
+ ],
4550
+ },
4551
+ ];
4552
+ }
4553
+ }
4554
+
4555
+ class AXMDocumentFileTypeProvider {
4556
+ async items() {
4557
+ return [
4558
+ {
4559
+ name: 'document',
4560
+ title: 'Document',
4561
+ icon: 'fa-light fa-file-lines ax-text-blue-600',
4562
+ extensions: [
4563
+ {
4564
+ name: 'pdf',
4565
+ title: 'PDF',
4566
+ icon: 'fa-light fa-file-pdf ax-text-red-600',
4567
+ meta: [],
4122
4568
  },
4123
4569
  {
4124
4570
  name: 'doc',
@@ -4840,7 +5286,7 @@ class AXMSendToReviewConfirmAction extends AXPWorkflowAction {
4840
5286
  async execute(context) {
4841
5287
  const documentId = context.getVariable('options.id');
4842
5288
  const documentTitle = context.getVariable('options.title');
4843
- const comp = await import('./acorex-modules-document-management-document-send-to-review-popup.component-CtpLvPIr.mjs').then((m) => m.AXMDocumentSendToReviewPopupComponent);
5289
+ const comp = await import('./acorex-modules-document-management-document-send-to-review-popup.component-CoymgoD7.mjs').then((m) => m.AXMDocumentSendToReviewPopupComponent);
4844
5290
  const result = await this.popupService.open(comp, {
4845
5291
  title: await this.translationService.translateAsync('document-review.confirm-send.title', {
4846
5292
  scope: 'document-management',
@@ -5026,7 +5472,7 @@ class AXMDocumentDistributionPopupAction extends AXPWorkflowAction {
5026
5472
  async execute(context) {
5027
5473
  const documentId = context.getVariable('options.id');
5028
5474
  const documentTitle = context.getVariable('options.title');
5029
- const comp = await import('./acorex-modules-document-management-document-distribution-popup.component-DB4JJ3w7.mjs')
5475
+ const comp = await import('./acorex-modules-document-management-document-distribution-popup.component-BFL8zeml.mjs')
5030
5476
  .then(x => x.AXMDocumentDistributionPopupComponent);
5031
5477
  const result = await this.popupService.open(comp, {
5032
5478
  title: await this.translationService.translateAsync('document-distribution.title', {
@@ -5163,7 +5609,7 @@ class AXMDocumentSignaturePopupAction extends AXPWorkflowAction {
5163
5609
  const documentId = context.getVariable('options.id');
5164
5610
  const documentTitle = context.getVariable('options.title');
5165
5611
  const fileId = context.getVariable('options.fileId');
5166
- const comp = await import('./acorex-modules-document-management-document-signature-popup.component-BOjb2k4S.mjs')
5612
+ const comp = await import('./acorex-modules-document-management-document-signature-popup.component-BONQz9u3.mjs')
5167
5613
  .then(x => x.AXMDocumentSignaturePopupComponent);
5168
5614
  console.log(fileId);
5169
5615
  const result = await this.popupService.open(comp, {
@@ -5326,6 +5772,120 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
5326
5772
  type: Injectable
5327
5773
  }], ctorParameters: () => [] });
5328
5774
 
5775
+ class DocumentAttachmentsService {
5776
+ constructor() {
5777
+ this.fileService = inject(AXFileService);
5778
+ this.documentTypeService = inject(AXMDocumentTypeService);
5779
+ this.popupService = inject(AXPopupService);
5780
+ this.workflowService = inject(AXPWorkflowService);
5781
+ this.documentService = inject(AXMDocumentService);
5782
+ }
5783
+ async attachFile(fileType, options) {
5784
+ // Validate input data
5785
+ this.validateAttachmentOptions(options);
5786
+ const fileTypeEntity = await this.resolveFileType(fileType);
5787
+ const files = await this.chooseFiles(fileTypeEntity, options?.multiple);
5788
+ if (files.length === 0) {
5789
+ return false;
5790
+ }
5791
+ const popupData = {
5792
+ documentType: fileTypeEntity,
5793
+ files: this.mapFilesToFileListItems(files),
5794
+ parentId: options?.folderId ?? '',
5795
+ };
5796
+ const result = await this.openDocumentTypeChooseFilePopup(`Select ${fileTypeEntity.title}`, popupData);
5797
+ return this.handlePopupResult(result);
5798
+ }
5799
+ async updateAttachedFile(fileId, options) {
5800
+ const file = await this.documentService.getOne(fileId);
5801
+ if (!file) {
5802
+ throw new Error('File not found');
5803
+ }
5804
+ const popupData = {
5805
+ documentType: file.documentType,
5806
+ files: [file.fileId],
5807
+ parentId: options?.folderId ?? '',
5808
+ metaData: file.meta,
5809
+ documentId: fileId,
5810
+ };
5811
+ const result = await this.openDocumentTypeChooseFilePopup(`Edit ${file.name}`, popupData);
5812
+ return this.handlePopupResult(result);
5813
+ }
5814
+ validateAttachmentOptions(options) {
5815
+ if (!((options?.entityId && options?.entityRecordId) || options?.folderId)) {
5816
+ throw new Error('You must provide either both entityId and entityRecordId, or folderId.');
5817
+ }
5818
+ }
5819
+ async resolveFileType(fileType) {
5820
+ if (typeof fileType === 'string') {
5821
+ const fileTypeId = fileType;
5822
+ const fileTypeEntity = await this.documentTypeService.getOne(fileTypeId);
5823
+ if (!fileTypeEntity) {
5824
+ throw new Error('File type not found');
5825
+ }
5826
+ return fileTypeEntity;
5827
+ }
5828
+ return fileType;
5829
+ }
5830
+ async chooseFiles(fileTypeEntity, multiple) {
5831
+ const acceptTypes = fileTypeEntity.type.selectedItems.map((item) => `.${item.name.split('.')[1]}`).join(',');
5832
+ console.log(acceptTypes);
5833
+ return await this.fileService.choose({
5834
+ multiple: multiple ?? false,
5835
+ accept: acceptTypes,
5836
+ });
5837
+ }
5838
+ mapFilesToFileListItems(files) {
5839
+ return files.map((file) => ({
5840
+ name: file.name,
5841
+ size: file.size,
5842
+ type: file.type,
5843
+ status: 'attached',
5844
+ source: {
5845
+ kind: 'blob',
5846
+ value: file,
5847
+ },
5848
+ }));
5849
+ }
5850
+ async openDocumentTypeChooseFilePopup(title, data) {
5851
+ const comp = (await Promise.resolve().then(function () { return index; })).AXMDocumentTypeChooseFileComponent;
5852
+ return await this.popupService.open(comp, {
5853
+ title,
5854
+ data,
5855
+ });
5856
+ }
5857
+ async handlePopupResult(result) {
5858
+ if (result?.data?.cancel) {
5859
+ return false;
5860
+ }
5861
+ if (this.shouldExecuteWorkflow(result)) {
5862
+ return await this.executeWorkflow(result.data.fileIds[0]);
5863
+ }
5864
+ return true;
5865
+ }
5866
+ shouldExecuteWorkflow(result) {
5867
+ return !!(result?.data?.isReviewSent && result.data.fileIds && result.data.fileIds.length > 0);
5868
+ }
5869
+ async executeWorkflow(fileId) {
5870
+ console.log('Executing workflow for file:', fileId);
5871
+ const workflowResult = await this.workflowService.execute('send-to-review', {
5872
+ options: {
5873
+ id: fileId,
5874
+ },
5875
+ });
5876
+ console.log('Workflow result:', workflowResult);
5877
+ return true;
5878
+ }
5879
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: DocumentAttachmentsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
5880
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: DocumentAttachmentsService, providedIn: 'root' }); }
5881
+ }
5882
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: DocumentAttachmentsService, decorators: [{
5883
+ type: Injectable,
5884
+ args: [{
5885
+ providedIn: 'root',
5886
+ }]
5887
+ }] });
5888
+
5329
5889
  //#region ---- Imports ----
5330
5890
  //#endregion
5331
5891
  //#region ---- Service Implementation ----
@@ -5346,6 +5906,7 @@ class AXMDocumentManagerService {
5346
5906
  this.workflow = inject(AXPWorkflowService);
5347
5907
  this.translate = inject(AXTranslationService);
5348
5908
  this.reviewService = inject(AXMReviewService);
5909
+ this.attachmentsService = inject(DocumentAttachmentsService);
5349
5910
  //#endregion
5350
5911
  //#region ---- Private Properties ----
5351
5912
  this.scopedDriveCache = new Map();
@@ -5676,16 +6237,16 @@ class AXMDocumentManagerService {
5676
6237
  async downloadFile(node) {
5677
6238
  // const file = await this.documentService.getOne(node.id);
5678
6239
  if (node.fileId) {
5679
- if (node.fileId.startsWith('http')) {
6240
+ if (node.fileId.source?.value && typeof node.fileId.source.value === 'string' && node.fileId.source.value?.startsWith('http')) {
5680
6241
  const link = document.createElement('a');
5681
- link.href = node.fileId;
6242
+ link.href = node.fileId.source.value;
5682
6243
  link.download = node.name;
5683
6244
  document.body.appendChild(link);
5684
6245
  link.click();
5685
6246
  document.body.removeChild(link);
5686
6247
  return;
5687
6248
  }
5688
- const fileInfo = await this.fileService.getInfo(node.fileId);
6249
+ const fileInfo = await this.fileService.getInfo(node.fileId.id ?? '');
5689
6250
  const link = document.createElement('a');
5690
6251
  link.href = fileInfo.url ?? '';
5691
6252
  link.download = node.name; // Set the desired file name
@@ -5762,7 +6323,7 @@ class AXMDocumentManagerService {
5762
6323
  * Moves a node to another location
5763
6324
  */
5764
6325
  async moveTo(options) {
5765
- const comp = (await import('./acorex-modules-document-management-drive-choose.component-B66hegSh.mjs')).AXMDocumentDriveChooseComponent;
6326
+ const comp = (await import('./acorex-modules-document-management-drive-choose.component-B1CoE7aP.mjs')).AXMDocumentDriveChooseComponent;
5766
6327
  const popup = await this.popupService.open(comp, {
5767
6328
  title: `Choose ${options.browseMode == 'file' ? 'File' : 'Folder'}`,
5768
6329
  data: {
@@ -5795,7 +6356,7 @@ class AXMDocumentManagerService {
5795
6356
  * Copies a node to another location
5796
6357
  */
5797
6358
  async copyTo(options) {
5798
- const comp = (await import('./acorex-modules-document-management-drive-choose.component-B66hegSh.mjs')).AXMDocumentDriveChooseComponent;
6359
+ const comp = (await import('./acorex-modules-document-management-drive-choose.component-B1CoE7aP.mjs')).AXMDocumentDriveChooseComponent;
5799
6360
  const popup = await this.popupService.open(comp, {
5800
6361
  title: `Choose ${options.browseMode == 'file' ? 'File' : 'Folder'}`,
5801
6362
  data: {
@@ -5900,178 +6461,109 @@ class AXMDocumentManagerService {
5900
6461
  * Uploads file by document type to a specific folder
5901
6462
  */
5902
6463
  async uploadFileByType(folderId, docTypeId) {
5903
- const folder = await this.folderService.getOne(folderId);
5904
- var docType = folder.documentTypes?.find((dt) => dt.id === docTypeId);
5905
- if (folder && docType != null) {
5906
- const comp = (await Promise.resolve().then(function () { return index; })).AXMDocumentTypeChooseFileComponent;
5907
- const result = await this.popupService.open(comp, {
5908
- title: `Select ${docType.title}`,
5909
- data: {
5910
- documentType: docType,
5911
- },
5912
- });
5913
- if (result.data != null) {
5914
- const { uploads, result: metaContext, isReviewSent } = result.data;
5915
- for (const listItem of uploads) {
5916
- // listItem is AXPFileListItem
5917
- let actualFile;
5918
- if (listItem.source?.kind === 'blob' && listItem.source.value instanceof Blob) {
5919
- actualFile = listItem.source.value;
5920
- }
5921
- if (!actualFile) {
5922
- console.warn(`Skipping item without a valid blob source in uploadFileByType: ${listItem.name}`);
5923
- continue;
5924
- }
5925
- const f = await this.fileService.save({
5926
- category: 'document',
5927
- file: actualFile,
5928
- refId: folderId,
5929
- refType: `${RootConfig.module.name}.${RootConfig.entities.folder.name}`,
5930
- name: listItem.name,
5931
- });
5932
- await this.fileService.commit(f.fileId);
5933
- const docId = await this.documentService.insertOne({
5934
- fileId: f.fileId,
5935
- meta: metaContext,
5936
- parentId: folderId,
5937
- size: listItem.size ?? 0,
5938
- name: listItem.name,
5939
- title: listItem.name,
5940
- documentType: docType,
5941
- version: docType.enableVersioning ? 1 : undefined,
5942
- status: docType.requiresReview ? (isReviewSent ? 'PendingReview' : 'Draft') : 'Completed',
5943
- });
5944
- if (isReviewSent) {
5945
- const comp = await import('./acorex-modules-document-management-document-send-to-review-popup.component-CtpLvPIr.mjs').then((m) => m.AXMDocumentSendToReviewPopupComponent);
5946
- const result = await this.popupService.open(comp, {
5947
- title: await this.translate.translateAsync('document-review.confirm-send.title', {
5948
- scope: 'document-management',
5949
- params: { title: listItem.name },
5950
- }),
5951
- data: {
5952
- documentId: docId,
5953
- documentTitle: listItem.name,
5954
- },
5955
- });
5956
- if (result.data != null && result.data.confirmed) {
5957
- const reviewRecordID = await this.reviewService.insertOne({
5958
- documentId: docId,
5959
- // document : docType,
5960
- version: 1,
5961
- reviewStatus: 'Pending',
5962
- modifiedBy: this.sessionService.user,
5963
- reviewerId: result.data.assignedTo,
5964
- });
5965
- await this.documentService.updateOne(docId, {
5966
- reviewRecordId: reviewRecordID,
5967
- });
5968
- }
5969
- }
5970
- }
5971
- return true;
5972
- }
5973
- else {
5974
- return false;
5975
- }
5976
- }
5977
- return false;
6464
+ const result = await this.attachmentsService.attachFile(docTypeId, {
6465
+ multiple: true,
6466
+ folderId: folderId,
6467
+ });
6468
+ return result;
5978
6469
  }
5979
6470
  /**
5980
6471
  * Uploads file by document type to a specific folder
5981
6472
  */
5982
6473
  async updateUploadFileByType(node) {
5983
- const comp = (await Promise.resolve().then(function () { return index; })).AXMDocumentTypeChooseFileComponent;
5984
- const editableFile = await this.documentService.getOne(node.id);
5985
- if (editableFile.documentType) {
5986
- const docType = editableFile.documentType;
5987
- // Transform meta object to extract only values
5988
- const transformedMeta = editableFile.meta
5989
- ? Object.fromEntries(Object.entries(editableFile.meta).map(([key, obj]) => [key, obj.value]))
5990
- : {};
5991
- const result = await this.popupService.open(comp, {
5992
- title: `Edit ${editableFile.name}`,
5993
- data: {
5994
- documentType: docType,
5995
- defaultContext: {
5996
- ...transformedMeta,
5997
- uploads: [
5998
- {
5999
- name: editableFile.name,
6000
- size: editableFile.size,
6001
- status: 'uploaded',
6002
- source: {
6003
- kind: 'fileId',
6004
- value: editableFile.fileId,
6005
- },
6006
- },
6007
- ],
6008
- },
6009
- },
6010
- });
6011
- if (result.data != null) {
6012
- const { uploads, result: metaContext, isReviewSent } = result.data;
6013
- let newFileId;
6014
- const itemUpload = uploads[0];
6015
- if (!(itemUpload.source?.kind == 'fileId' && itemUpload.source.value == editableFile.fileId)) {
6016
- const f = await this.fileService.save({
6017
- category: 'document',
6018
- file: itemUpload.source?.value,
6019
- //refId: folderId,
6020
- refId: node.parentId ?? '',
6021
- refType: `${RootConfig.module.name}.${RootConfig.entities.folder.name}`,
6022
- name: itemUpload.name,
6023
- });
6024
- await this.fileService.commit(f.fileId);
6025
- newFileId = f.fileId;
6026
- }
6027
- if (newFileId != undefined || metaContext != editableFile.meta) {
6028
- const newVersion = docType.enableVersioning ? (editableFile.version ?? 1) + 1 : undefined;
6029
- let reviewRecordID = undefined;
6030
- if (isReviewSent) {
6031
- const comp = await import('./acorex-modules-document-management-document-send-to-review-popup.component-CtpLvPIr.mjs').then((m) => m.AXMDocumentSendToReviewPopupComponent);
6032
- const result = await this.popupService.open(comp, {
6033
- title: await this.translate.translateAsync('document-review.confirm-send.title', {
6034
- scope: 'document-management',
6035
- params: { title: editableFile.name },
6036
- }),
6037
- data: {
6038
- documentId: editableFile.id,
6039
- documentTitle: editableFile.name,
6040
- },
6041
- });
6042
- if (result.data != null && result.data.confirmed) {
6043
- reviewRecordID = await this.reviewService.insertOne({
6044
- documentId: node.id,
6045
- version: newVersion ?? 0,
6046
- reviewStatus: 'Pending',
6047
- modifiedBy: this.sessionService.user,
6048
- reviewerId: result.data.assignedTo,
6049
- });
6050
- }
6051
- }
6052
- await this.documentService.updateOne(node.id, {
6053
- fileId: newFileId ?? editableFile.fileId,
6054
- meta: metaContext,
6055
- version: newVersion,
6056
- reviewRecordId: reviewRecordID,
6057
- status: docType.requiresReview ? (isReviewSent ? 'PendingReview' : 'Draft') : 'Completed',
6058
- });
6059
- }
6060
- return true;
6061
- }
6062
- else {
6063
- return false;
6064
- }
6474
+ const result = await this.attachmentsService.updateAttachedFile(node.id, {
6475
+ folderId: node.parentId ?? '',
6476
+ });
6477
+ return result;
6478
+ }
6479
+ // const editableFile = await this.documentService.getOne(node.id);
6480
+ /*
6481
+ if (editableFile.documentType) {
6482
+ const docType = editableFile.documentType;
6483
+
6484
+ const result = await this.popupService.open(comp, {
6485
+ title: `Edit ${editableFile.name}`,
6486
+ data: {
6487
+ documentType: docType,
6488
+ files: [editableFile.fileId],
6489
+ parentId: node.parentId,
6490
+ metaData: editableFile.meta,
6491
+ },
6492
+ });
6493
+ if (result.data != null) {
6494
+ const { uploads, result: metaContext, isReviewSent } = result.data;
6495
+
6496
+ let newFileId: string | undefined;
6497
+
6498
+ const itemUpload: AXPFileListItem = uploads[0];
6499
+ if (!(itemUpload.source?.kind == 'fileId' && itemUpload.source.value == editableFile.fileId)) {
6500
+ const f = await this.fileService.save({
6501
+ category: 'document',
6502
+ file: itemUpload.source?.value as File,
6503
+ //refId: folderId,
6504
+ refId: node.parentId ?? '',
6505
+ refType: `${RootConfig.module.name}.${RootConfig.entities.folder.name}`,
6506
+ name: itemUpload.name,
6507
+ });
6508
+ await this.fileService.commit(f.fileId);
6509
+
6510
+ newFileId = f.fileId;
6065
6511
  }
6066
- else {
6067
- return false;
6512
+
6513
+ if (newFileId != undefined || metaContext != editableFile.meta) {
6514
+ const newVersion = docType.enableVersioning ? (editableFile.version ?? 1) + 1 : undefined;
6515
+ let reviewRecordID = undefined;
6516
+ if (isReviewSent) {
6517
+ const comp = await import('../workflow/document-review/document-send-to-review-popup.component').then(
6518
+ (m) => m.AXMDocumentSendToReviewPopupComponent,
6519
+ );
6520
+ const result = await this.popupService.open(comp, {
6521
+ title: await this.translate.translateAsync('document-review.confirm-send.title', {
6522
+ scope: 'document-management',
6523
+ params: { title: editableFile.name },
6524
+ }),
6525
+ data: {
6526
+ documentId: editableFile.id,
6527
+ documentTitle: editableFile.name,
6528
+ },
6529
+ });
6530
+
6531
+ if (result.data != null && result.data.confirmed) {
6532
+ reviewRecordID = await this.reviewService.insertOne({
6533
+ documentId: node.id,
6534
+ version: newVersion ?? 0,
6535
+ reviewStatus: 'Pending',
6536
+ modifiedBy: this.sessionService.user as AXPApplicationUserReference,
6537
+ reviewerId: result.data.assignedTo,
6538
+ });
6539
+ }
6540
+ }
6541
+
6542
+ await this.documentService.updateOne(node.id, {
6543
+ fileId: newFileId ?? editableFile.fileId,
6544
+ meta: metaContext,
6545
+ version: newVersion,
6546
+ reviewRecordId: reviewRecordID,
6547
+ status: docType.requiresReview ? (isReviewSent ? 'PendingReview' : 'Draft') : 'Completed',
6548
+ });
6068
6549
  }
6550
+
6551
+ return true;
6552
+ } else {
6553
+ return false;
6554
+ }
6555
+ } else {
6556
+ return false;
6069
6557
  }
6070
- //#endregion
6071
- //#region ---- Dialog Operations ----
6072
- /**
6073
- * Shows share dialog for a node
6074
- */
6558
+ }
6559
+
6560
+ //#endregion
6561
+
6562
+ //#region ---- Dialog Operations ----
6563
+
6564
+ /**
6565
+ * Shows share dialog for a node
6566
+ */
6075
6567
  async showShareDialog(node) {
6076
6568
  const comp = (await import('./acorex-modules-document-management-share-dialog.component-mBEu2KpG.mjs')).AXMShareDialogComponent;
6077
6569
  const popup = await this.popupService.open(comp, {
@@ -6141,7 +6633,7 @@ class AXMDocumentManagerService {
6141
6633
  * Shows folder edit dialog
6142
6634
  */
6143
6635
  async showFolderEditDialog(node) {
6144
- const comp = (await import('./acorex-modules-document-management-create-folder-dialog.component-BFnvHSjH.mjs'))
6636
+ const comp = (await import('./acorex-modules-document-management-create-folder-dialog.component-BlyK5a50.mjs'))
6145
6637
  .AXMCreateFolderDialog;
6146
6638
  const popup = await this.popupService.open(comp, {
6147
6639
  title: await this.translate.translateAsync('@document-management:actions.update-folder'),
@@ -6155,7 +6647,7 @@ class AXMDocumentManagerService {
6155
6647
  * Shows create folder dialog
6156
6648
  */
6157
6649
  async showCreateFolderDialog(parentId) {
6158
- const comp = (await import('./acorex-modules-document-management-create-folder-dialog.component-BFnvHSjH.mjs'))
6650
+ const comp = (await import('./acorex-modules-document-management-create-folder-dialog.component-BlyK5a50.mjs'))
6159
6651
  .AXMCreateFolderDialog;
6160
6652
  const popup = await this.popupService.open(comp, {
6161
6653
  title: await this.translate.translateAsync('@document-management:actions.create-folder'),
@@ -6169,7 +6661,7 @@ class AXMDocumentManagerService {
6169
6661
  * Shows rename popup for a node
6170
6662
  */
6171
6663
  async showRenamePopup(node) {
6172
- const comp = (await import('./acorex-modules-document-management-rename-node-dialog.component-Da9v8nVj.mjs'))
6664
+ const comp = (await import('./acorex-modules-document-management-rename-node-dialog.component-xeY0XzAG.mjs'))
6173
6665
  .AXMRenameNodeDialog;
6174
6666
  const popup = await this.popupService.open(comp, {
6175
6667
  title: 't("actions.rename")',
@@ -6195,7 +6687,7 @@ class AXMDocumentManagerService {
6195
6687
  * Shows choose file dialog
6196
6688
  */
6197
6689
  async showChooseFileDialog(scope) {
6198
- const comp = (await import('./acorex-modules-document-management-drive-choose.component-B66hegSh.mjs')).AXMDocumentDriveChooseComponent;
6690
+ const comp = (await import('./acorex-modules-document-management-drive-choose.component-B1CoE7aP.mjs')).AXMDocumentDriveChooseComponent;
6199
6691
  const result = await this.popupService.open(comp, {
6200
6692
  title: await this.translate.translateAsync('@document-management:actions.choose-from-drive'),
6201
6693
  data: {
@@ -6365,78 +6857,144 @@ class ScopedDriveService {
6365
6857
  class AXMDocumentTypeChooseFileComponent extends AXBasePageComponent {
6366
6858
  constructor() {
6367
6859
  super(...arguments);
6368
- this.defaultContext = {};
6369
- this.context = signal({}, ...(ngDevMode ? [{ debugName: "context" }] : []));
6370
- this.resultObject = {};
6371
- this.uploadNode = signal({
6372
- name: 'uploads',
6373
- path: 'uploads',
6374
- type: 'file-uploader',
6375
- options: {
6376
- accept: '.pdf',
6377
- multiple: false,
6378
- },
6379
- }, ...(ngDevMode ? [{ debugName: "uploadNode" }] : []));
6380
- }
6381
- async ngOnInit() {
6382
- this.context.set(this.defaultContext);
6383
- this.uploadNode.update((old) => {
6860
+ this.documentService = inject(AXMDocumentService);
6861
+ //update Data
6862
+ this.metaData = {};
6863
+ this.formDefinition = signal({
6864
+ groups: [],
6865
+ }, ...(ngDevMode ? [{ debugName: "formDefinition" }] : []));
6866
+ this.formContext = signal({}, ...(ngDevMode ? [{ debugName: "formContext" }] : []));
6867
+ this.defaultLayout = computed(() => {
6384
6868
  return {
6385
- ...old,
6386
- options: {
6387
- multiple: false,
6388
- accept: this.documentType.name == 'any'
6389
- ? ''
6390
- : this.documentType.type.selectedItems.map((i) => `.${i.name.split('.')[1]}`).join(','),
6869
+ positions: {
6870
+ default: {
6871
+ colSpan: 12,
6872
+ },
6391
6873
  },
6392
6874
  };
6393
- });
6394
- for (const i of this.documentType.meta) {
6395
- if (!get(i, '__node__')) {
6396
- const node = typeof i.interface == 'function'
6397
- ? await i.interface()
6398
- : JSON.parse(i.interface)['children'][0]['children'][0];
6399
- set$1(i, '__node__', node);
6400
- if (get(i, 'isRequired')) {
6401
- // node.
6402
- }
6403
- }
6404
- }
6875
+ }, ...(ngDevMode ? [{ debugName: "defaultLayout" }] : []));
6405
6876
  }
6406
- handleContextChanged(e) {
6407
- this.context.set(e.data);
6877
+ async ngOnInit() {
6878
+ this.isLoading = true;
6879
+ //
6880
+ await this.renderForm();
6881
+ //
6882
+ this.isLoading = false;
6408
6883
  }
6409
6884
  handleCancel() {
6410
- this.close();
6885
+ this.close({
6886
+ cancel: true,
6887
+ });
6888
+ }
6889
+ async renderForm() {
6890
+ const groups = await Promise.all(this.files.map(async (item, index) => {
6891
+ return {
6892
+ name: item.id ?? item.name,
6893
+ title: item.name,
6894
+ parameters: [
6895
+ ...(await Promise.all(this.documentType.meta.map(async (meta) => {
6896
+ let node = typeof meta.interface === 'function'
6897
+ ? await meta.interface()
6898
+ : JSON.parse(meta.interface)['children'][0]['children'][0];
6899
+ node = {
6900
+ ...node,
6901
+ path: `files[${index}].${meta.name}`,
6902
+ defaultValue: this.metaData[meta.name]?.value,
6903
+ };
6904
+ return {
6905
+ path: `files[${index}].${meta.name}`,
6906
+ title: meta.title,
6907
+ widget: node,
6908
+ };
6909
+ }))),
6910
+ {
6911
+ path: `files[${index}].file`,
6912
+ title: 'File',
6913
+ widget: {
6914
+ path: `files[${index}].file`,
6915
+ type: 'file-uploader',
6916
+ defaultValue: [item],
6917
+ options: {
6918
+ fileEditable: false,
6919
+ readonly: true,
6920
+ accept: this.documentType.type.selectedItems.map((item) => `.${item.name.split('.')[1]}`).join(','),
6921
+ },
6922
+ },
6923
+ },
6924
+ ],
6925
+ };
6926
+ }));
6927
+ this.formDefinition.set({
6928
+ groups,
6929
+ });
6411
6930
  }
6412
- handleSubmit(isReviewSent = false) {
6413
- const contextData = this.context();
6414
- const uploads = contextData.uploads;
6415
- delete contextData.uploads;
6416
- const result = Object.keys(contextData).reduce((result, key) => {
6417
- const metaItem = this.documentType.meta.find(m => m.name === key);
6418
- result[key] = {
6419
- value: contextData[key],
6420
- title: metaItem?.title,
6931
+ handleContextChange(event) {
6932
+ this.formContext.set(event);
6933
+ }
6934
+ /**
6935
+ * Extracts meta data from FileContextItem by filtering out non-meta properties
6936
+ */
6937
+ extractMetaFromFileContext(item) {
6938
+ const meta = {};
6939
+ // Get all keys from the item
6940
+ const keys = Object.keys(item ?? {});
6941
+ // Filter out known properties and extract meta fields
6942
+ keys.forEach((key) => {
6943
+ // Skip known properties
6944
+ if (['file'].includes(key)) {
6945
+ return;
6946
+ }
6947
+ // Add the remaining properties as meta
6948
+ meta[key] = {
6421
6949
  name: key,
6950
+ title: this.documentType.meta.find((meta) => meta.name === key)?.title ?? key,
6951
+ value: item?.[key],
6422
6952
  };
6423
- return result;
6424
- }, {});
6425
- this.close({
6426
- uploads: uploads,
6427
- result: result,
6428
- isReviewSent: isReviewSent,
6429
6953
  });
6954
+ return meta;
6430
6955
  }
6431
- getNode(meta) {
6432
- return get(meta, '__node__');
6956
+ async handleSubmit(isReviewSent = false) {
6957
+ this.isLoading = true;
6958
+ if (this.documentId) {
6959
+ await this.documentService.updateOne(this.documentId, {
6960
+ meta: this.extractMetaFromFileContext(this.formContext()['files'][0]),
6961
+ });
6962
+ this.isLoading = false;
6963
+ this.close({
6964
+ isReviewSent: isReviewSent,
6965
+ fileIds: [this.documentId],
6966
+ cancel: false,
6967
+ });
6968
+ }
6969
+ else {
6970
+ const promises = this.formContext()['files'].map(async (item) => {
6971
+ const f = item.file[0];
6972
+ const file = await this.documentService.insertOne({
6973
+ fileId: f,
6974
+ name: f.name,
6975
+ title: f.name,
6976
+ documentType: this.documentType,
6977
+ parentId: this.parentId,
6978
+ size: f.size || 0,
6979
+ meta: this.extractMetaFromFileContext(item),
6980
+ });
6981
+ return file;
6982
+ });
6983
+ const fileIds = await Promise.all(promises);
6984
+ this.isLoading = false;
6985
+ this.close({
6986
+ isReviewSent: isReviewSent,
6987
+ fileIds: fileIds,
6988
+ cancel: false,
6989
+ });
6990
+ }
6433
6991
  }
6434
6992
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMDocumentTypeChooseFileComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
6435
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.6", type: AXMDocumentTypeChooseFileComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<ax-content>\n <div class=\"ax-flex ax-flex-col ax-py-4 ax-px-6\">\n <axp-widgets-container [context]=\"context()\" (onContextChanged)=\"handleContextChanged($event)\">\n <ax-form>\n <div class=\"ax-flex ax-flex-col ax-gap-2\">\n @for (doc of documentType.meta; track doc.name) {\n <ax-form-field>\n <ax-label>{{ doc.title }}</ax-label>\n <ng-container axp-widget-renderer [node]=\"getNode(doc)\" [mode]=\"'edit'\"></ng-container>\n </ax-form-field>\n } \n <ng-container axp-widget-renderer [node]=\"uploadNode()\" mode=\"edit\"></ng-container>\n </div>\n </ax-form>\n </axp-widgets-container>\n </div>\n</ax-content>\n<ax-footer>\n <ax-suffix>\n <ax-button [text]=\"'cancel' | translate | async\" (onClick)=\"handleCancel()\"> </ax-button>\n\n <ax-dropdown-button color=\"primary\" [text]=\"'submit' | translate | async\" look=\"solid\"\n (onClick)=\"handleSubmit()\">\n <ax-button-item-list>\n <ax-button-item [text]=\"('@document-management:submitAndSendForReview' | translate | async)!\"\n (onClick)=\"handleSubmit(true)\">\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-button>\n </ax-suffix>\n</ax-footer>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type:
6993
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.6", type: AXMDocumentTypeChooseFileComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<ax-content>\n <div class=\"ax-flex ax-flex-col ax-py-4 ax-px-6\">\n <axp-dynamic-form \n [formDefinition]=\"formDefinition()\" \n [context]=\"formContext()\"\n [layoutConfig]=\"defaultLayout()\" \n [layoutStyle]=\"'compact'\" \n (contextChange)=\"handleContextChange($event)\"\n >\n </axp-dynamic-form>\n </div>\n</ax-content>\n<ax-footer>\n <ax-suffix>\n <ax-button [text]=\"'cancel' | translate | async\" (onClick)=\"handleCancel()\"> </ax-button>\n\n @if(files.length == 1) {\n <ax-dropdown-button color=\"primary\" [text]=\"('@common:submit' | translate | async)!\" look=\"solid\"\n (onClick)=\"handleSubmit()\">\n <ax-button-item-list>\n <ax-button-item [text]=\"('@document-management:submitAndSendForReview' | translate | async)!\"\n (onClick)=\"handleSubmit(true)\">\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-button>\n }@else{\n <ax-button color=\"primary\" [text]=\"('@common:submit' | translate | async)!\" (onClick)=\"handleSubmit()\" look=\"solid\"> </ax-button>\n }\n </ax-suffix>\n</ax-footer>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type:
6436
6994
  //
6437
- AXButtonModule }, { kind: "component", type: i1$3.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: "component", type: i1$3.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i1$3.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.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: AXFormModule }, { kind: "component", type: i3.AXFormFieldComponent, selector: "ax-form-field", inputs: ["labelMode"] }, { kind: "component", type: i3.AXFormComponent, selector: "ax-form", inputs: ["labelMode", "look", "messageStyle", "updateOn"], outputs: ["onValidate", "updateOnChange"] }, { kind: "ngmodule", type: AXLabelModule }, { kind: "component", type: i4.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "ngmodule", type: AXSelectBoxModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXDropdownButtonModule }, { kind: "component", type: i5.AXDropdownButtonComponent, selector: "ax-dropdown-button", inputs: ["disabled", "size", "color", "look", "text", "type", "mode"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "lookChange", "colorChange", "disabledChange"] }, { kind: "ngmodule", type:
6995
+ AXButtonModule }, { kind: "component", type: i1$3.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: "component", type: i1$3.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i1$3.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.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: AXFormModule }, { kind: "ngmodule", type: AXLabelModule }, { kind: "ngmodule", type: AXSelectBoxModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXDropdownButtonModule }, { kind: "component", type: i3$1.AXDropdownButtonComponent, selector: "ax-dropdown-button", inputs: ["disabled", "size", "color", "look", "text", "type", "mode"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "lookChange", "colorChange", "disabledChange"] }, { kind: "ngmodule", type:
6438
6996
  //
6439
- AXPLayoutBuilderModule }, { kind: "component", type: i1$2.AXPWidgetContainerComponent, selector: "axp-widgets-container", inputs: ["context", "functions"], outputs: ["onContextChanged"] }, { kind: "directive", type: i1$2.AXPWidgetRendererDirective, selector: "[axp-widget-renderer]", inputs: ["parentNode", "index", "mode", "node"], outputs: ["onOptionsChanged", "onValueChanged"], exportAs: ["widgetRenderer"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i3$1.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6997
+ AXPLayoutBuilderModule }, { kind: "component", type: AXPDynamicFormComponent, selector: "axp-dynamic-form", inputs: ["formDefinition", "context", "layoutStyle", "layoutConfig"], outputs: ["contextChange", "contextInitiated", "validityChange"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6440
6998
  }
6441
6999
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMDocumentTypeChooseFileComponent, decorators: [{
6442
7000
  type: Component,
@@ -6452,7 +7010,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
6452
7010
  AXDropdownButtonModule,
6453
7011
  //
6454
7012
  AXPLayoutBuilderModule,
6455
- ], template: "<ax-content>\n <div class=\"ax-flex ax-flex-col ax-py-4 ax-px-6\">\n <axp-widgets-container [context]=\"context()\" (onContextChanged)=\"handleContextChanged($event)\">\n <ax-form>\n <div class=\"ax-flex ax-flex-col ax-gap-2\">\n @for (doc of documentType.meta; track doc.name) {\n <ax-form-field>\n <ax-label>{{ doc.title }}</ax-label>\n <ng-container axp-widget-renderer [node]=\"getNode(doc)\" [mode]=\"'edit'\"></ng-container>\n </ax-form-field>\n } \n <ng-container axp-widget-renderer [node]=\"uploadNode()\" mode=\"edit\"></ng-container>\n </div>\n </ax-form>\n </axp-widgets-container>\n </div>\n</ax-content>\n<ax-footer>\n <ax-suffix>\n <ax-button [text]=\"'cancel' | translate | async\" (onClick)=\"handleCancel()\"> </ax-button>\n\n <ax-dropdown-button color=\"primary\" [text]=\"'submit' | translate | async\" look=\"solid\"\n (onClick)=\"handleSubmit()\">\n <ax-button-item-list>\n <ax-button-item [text]=\"('@document-management:submitAndSendForReview' | translate | async)!\"\n (onClick)=\"handleSubmit(true)\">\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-button>\n </ax-suffix>\n</ax-footer>\n" }]
7013
+ AXPDynamicFormComponent,
7014
+ ], template: "<ax-content>\n <div class=\"ax-flex ax-flex-col ax-py-4 ax-px-6\">\n <axp-dynamic-form \n [formDefinition]=\"formDefinition()\" \n [context]=\"formContext()\"\n [layoutConfig]=\"defaultLayout()\" \n [layoutStyle]=\"'compact'\" \n (contextChange)=\"handleContextChange($event)\"\n >\n </axp-dynamic-form>\n </div>\n</ax-content>\n<ax-footer>\n <ax-suffix>\n <ax-button [text]=\"'cancel' | translate | async\" (onClick)=\"handleCancel()\"> </ax-button>\n\n @if(files.length == 1) {\n <ax-dropdown-button color=\"primary\" [text]=\"('@common:submit' | translate | async)!\" look=\"solid\"\n (onClick)=\"handleSubmit()\">\n <ax-button-item-list>\n <ax-button-item [text]=\"('@document-management:submitAndSendForReview' | translate | async)!\"\n (onClick)=\"handleSubmit(true)\">\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-button>\n }@else{\n <ax-button color=\"primary\" [text]=\"('@common:submit' | translate | async)!\" (onClick)=\"handleSubmit()\" look=\"solid\"> </ax-button>\n }\n </ax-suffix>\n</ax-footer>\n" }]
6456
7015
  }] });
6457
7016
 
6458
7017
  class AXMFileViewerPopupComponent extends AXBasePageComponent {
@@ -7452,13 +8011,13 @@ class AXMDocumentExplorerComponent {
7452
8011
  this.showContextMenu = input(true, ...(ngDevMode ? [{ debugName: "showContextMenu" }] : []));
7453
8012
  this.view = signal(null, ...(ngDevMode ? [{ debugName: "view" }] : []));
7454
8013
  this.viewMap = {
7455
- list: async () => (await import('./acorex-modules-document-management-list-view.component-oDeeGScM.mjs')).AXMDocumentExplorerListViewComponent,
7456
- 'small-tiles': async () => (await import('./acorex-modules-document-management-small-tiles-view.component-DSDfR1nj.mjs')).AXMDocumentExplorerSmallTilesViewComponent,
7457
- 'large-tiles': async () => (await import('./acorex-modules-document-management-large-tiles-view.component-BeR4aIqh.mjs')).AXMDocumentExplorerLargeTilesViewComponent,
7458
- details: async () => (await import('./acorex-modules-document-management-details-view.component-7OR6bXr-.mjs')).AXMDocumentExplorerDetailsViewComponent,
7459
- 'large-icons': async () => (await import('./acorex-modules-document-management-large-icons-view.component-DJn6kyvL.mjs')).AXMDocumentExplorerLargeIconsViewComponent,
7460
- 'small-icons': async () => (await import('./acorex-modules-document-management-small-icons-view.component-Wfms-st6.mjs')).AXMDocumentExplorerSmallIconsViewComponent,
7461
- 'attachment': async () => (await import('./acorex-modules-document-management-attachment-widget.component-C80j1Gn7.mjs')).AXMDocumentExplorerAttachmentComponent,
8014
+ list: async () => (await import('./acorex-modules-document-management-list-view.component-ClW5GdHG.mjs')).AXMDocumentExplorerListViewComponent,
8015
+ 'small-tiles': async () => (await import('./acorex-modules-document-management-small-tiles-view.component-BVxR6ndq.mjs')).AXMDocumentExplorerSmallTilesViewComponent,
8016
+ 'large-tiles': async () => (await import('./acorex-modules-document-management-large-tiles-view.component-ByBZUD_u.mjs')).AXMDocumentExplorerLargeTilesViewComponent,
8017
+ details: async () => (await import('./acorex-modules-document-management-details-view.component-BlTJ_p5m.mjs')).AXMDocumentExplorerDetailsViewComponent,
8018
+ 'large-icons': async () => (await import('./acorex-modules-document-management-large-icons-view.component-9GtpGvk4.mjs')).AXMDocumentExplorerLargeIconsViewComponent,
8019
+ 'small-icons': async () => (await import('./acorex-modules-document-management-small-icons-view.component--GP3AYPi.mjs')).AXMDocumentExplorerSmallIconsViewComponent,
8020
+ 'attachment': async () => (await import('./acorex-modules-document-management-attachment-widget.component-Be8WgyUR.mjs')).AXMDocumentExplorerAttachmentComponent,
7462
8021
  };
7463
8022
  this.#effect = effect(() => {
7464
8023
  if (this.vm.loadingFolderId() == null) {
@@ -7569,28 +8128,26 @@ class AXPFileUploaderWidgetExtensionComponent {
7569
8128
  const result = await this.driveService.showChooseFileDialog(scope);
7570
8129
  // First set all files to uploading status
7571
8130
  this.host.setValue([...this.host.getValue() ?? [], ...result.map(item => ({
7572
- id: item.fileId,
7573
- name: item.name,
7574
- size: item.size,
8131
+ ...item.fileId,
7575
8132
  status: 'uploading',
7576
8133
  }))]);
7577
8134
  // Then process each file
7578
8135
  for await (const item of result) {
7579
- if (!item.fileId || item.type === 'folder') {
8136
+ if (!item.fileId?.id || item.type === 'folder') {
7580
8137
  continue;
7581
8138
  }
7582
8139
  try {
7583
- const storageInfo = await this.fileStorageService.getInfo(item.fileId);
8140
+ const storageInfo = await this.fileStorageService.getInfo(item.fileId.id);
7584
8141
  if (!storageInfo) {
7585
8142
  console.warn(`Could not retrieve storage info for fileId: ${item.fileId}`);
7586
8143
  // Remove the failed file
7587
8144
  const currentFiles = this.host.getValue();
7588
- this.host.setValue(currentFiles.filter(f => f.id !== item.fileId));
8145
+ this.host.setValue(currentFiles.filter(f => f.id !== (item.fileId?.id ?? '')));
7589
8146
  continue;
7590
8147
  }
7591
8148
  // Update the file status to uploaded
7592
8149
  const currentFiles = this.host.getValue();
7593
- const fileIndex = currentFiles.findIndex(f => f.id === item.fileId);
8150
+ const fileIndex = currentFiles.findIndex(f => f.id === (item.fileId?.id ?? ''));
7594
8151
  if (fileIndex !== -1) {
7595
8152
  const updatedFiles = [...currentFiles];
7596
8153
  updatedFiles[fileIndex] = {
@@ -7608,7 +8165,7 @@ class AXPFileUploaderWidgetExtensionComponent {
7608
8165
  console.error(`Error processing fileId ${item.fileId}:`, error);
7609
8166
  // Remove the failed file
7610
8167
  const currentFiles = this.host.getValue();
7611
- this.host.setValue(currentFiles.filter(f => f.id !== item.fileId));
8168
+ this.host.setValue(currentFiles.filter(f => f.id !== (item.fileId?.id ?? '')));
7612
8169
  }
7613
8170
  }
7614
8171
  }
@@ -7627,7 +8184,7 @@ class AXPFileUploaderWidgetExtensionComponent {
7627
8184
  // Angular
7628
8185
  CommonModule }, { kind: "ngmodule", type:
7629
8186
  // ACoreX
7630
- AXFormModule }, { kind: "ngmodule", type: AXTextBoxModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$3.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "ngmodule", type: AXLabelModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i2.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: AXCheckBoxModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i3$1.AXTranslatorPipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
8187
+ AXFormModule }, { kind: "ngmodule", type: AXTextBoxModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$3.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "ngmodule", type: AXLabelModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i2.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: AXCheckBoxModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.AXTranslatorPipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
7631
8188
  }
7632
8189
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPFileUploaderWidgetExtensionComponent, decorators: [{
7633
8190
  type: Component,
@@ -7763,7 +8320,7 @@ class AXMetaListItemComponent {
7763
8320
  }
7764
8321
  </div>
7765
8322
  </div>
7766
- `, isInline: true, styles: [".axp-meta-list-item{display:flex;align-items:center;justify-content:space-between;border-radius:.375rem;padding-left:.5rem;padding-right:.5rem;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s;animation-duration:.2s}.axp-meta-list-item:hover{background-color:rgb(var(--ax-sys-color-lighter-surface));color:rgb(var(--ax-sys-color-on-lighter-surface));border-color:rgb(var(--ax-sys-color-border-lighter-surface))}.axp-meta-list-item.__deleted{--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-danger-500),var(--tw-border-opacity, 1))}.axp-meta-list-item.__deleted{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-danger-50),var(--tw-bg-opacity, 1))}.axp-meta-list-item.__deleted .__content{opacity:.6}.axp-meta-list-item .__content{flex:1 1 0%}.axp-meta-list-item .__content .__header{display:flex}.axp-meta-list-item .__content .__header{align-items:center}.axp-meta-list-item .__content .__header{justify-content:space-between}.axp-meta-list-item .__content .__header .__info{flex:1 1 0%}.axp-meta-list-item .__content .__header .__info .__title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.axp-meta-list-item .__content .__header .__info .__title{text-align:start}.axp-meta-list-item .__content .__header .__info .__title{font-size:.875rem;line-height:1.25rem}.axp-meta-list-item .__content .__header .__info .__title{font-weight:500}.axp-meta-list-item .__content .__header .__info .__subtitle .__required-badge{display:inline-flex}.axp-meta-list-item .__content .__header .__info .__subtitle .__required-badge{align-items:center}.axp-meta-list-item .__content .__header .__info .__subtitle .__required-badge{border-radius:9999px}.axp-meta-list-item .__content .__header .__info .__subtitle .__required-badge{padding-left:.5rem;padding-right:.5rem}.axp-meta-list-item .__content .__header .__info .__subtitle .__required-badge{padding-top:.25rem;padding-bottom:.25rem}.axp-meta-list-item .__content .__header .__info .__subtitle .__required-badge{font-size:.75rem;line-height:1rem}.axp-meta-list-item .__content .__header .__info .__subtitle .__required-badge{font-weight:500}.axp-meta-list-item .__content .__header .__info .__subtitle .__required-badge{--tw-bg-opacity: 1;background-color:rgb(255 237 213 / var(--tw-bg-opacity, 1))}.axp-meta-list-item .__content .__header .__info .__subtitle .__required-badge{--tw-text-opacity: 1;color:rgb(154 52 18 / var(--tw-text-opacity, 1))}.axp-meta-list-item .__actions{margin-left:auto}.axp-meta-list-item .__actions{display:flex}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$3.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i2.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: AXTranslationModule }, { kind: "directive", type: i3$1.AXTranslatorDirective, selector: "[translate]" }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8323
+ `, isInline: true, styles: [".axp-meta-list-item{display:flex;align-items:center;justify-content:space-between;border-radius:.375rem;padding-left:.5rem;padding-right:.5rem;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s;animation-duration:.2s}.axp-meta-list-item:hover{background-color:rgb(var(--ax-sys-color-lighter-surface));color:rgb(var(--ax-sys-color-on-lighter-surface));border-color:rgb(var(--ax-sys-color-border-lighter-surface))}.axp-meta-list-item.__deleted{--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-danger-500),var(--tw-border-opacity, 1))}.axp-meta-list-item.__deleted{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-danger-50),var(--tw-bg-opacity, 1))}.axp-meta-list-item.__deleted .__content{opacity:.6}.axp-meta-list-item .__content{flex:1 1 0%}.axp-meta-list-item .__content .__header{display:flex}.axp-meta-list-item .__content .__header{align-items:center}.axp-meta-list-item .__content .__header{justify-content:space-between}.axp-meta-list-item .__content .__header .__info{flex:1 1 0%}.axp-meta-list-item .__content .__header .__info .__title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.axp-meta-list-item .__content .__header .__info .__title{text-align:start}.axp-meta-list-item .__content .__header .__info .__title{font-size:.875rem;line-height:1.25rem}.axp-meta-list-item .__content .__header .__info .__title{font-weight:500}.axp-meta-list-item .__content .__header .__info .__subtitle .__required-badge{display:inline-flex}.axp-meta-list-item .__content .__header .__info .__subtitle .__required-badge{align-items:center}.axp-meta-list-item .__content .__header .__info .__subtitle .__required-badge{border-radius:9999px}.axp-meta-list-item .__content .__header .__info .__subtitle .__required-badge{padding-left:.5rem;padding-right:.5rem}.axp-meta-list-item .__content .__header .__info .__subtitle .__required-badge{padding-top:.25rem;padding-bottom:.25rem}.axp-meta-list-item .__content .__header .__info .__subtitle .__required-badge{font-size:.75rem;line-height:1rem}.axp-meta-list-item .__content .__header .__info .__subtitle .__required-badge{font-weight:500}.axp-meta-list-item .__content .__header .__info .__subtitle .__required-badge{--tw-bg-opacity: 1;background-color:rgb(255 237 213 / var(--tw-bg-opacity, 1))}.axp-meta-list-item .__content .__header .__info .__subtitle .__required-badge{--tw-text-opacity: 1;color:rgb(154 52 18 / var(--tw-text-opacity, 1))}.axp-meta-list-item .__actions{margin-left:auto}.axp-meta-list-item .__actions{display:flex}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$3.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i2.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: AXTranslationModule }, { kind: "directive", type: i5.AXTranslatorDirective, selector: "[translate]" }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7767
8324
  }
7768
8325
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMetaListItemComponent, decorators: [{
7769
8326
  type: Component,
@@ -7930,7 +8487,7 @@ class AXPMetaSelectorWidgetEditComponent extends AXPValueWidgetComponent {
7930
8487
  * Handle adding new metadata items
7931
8488
  */
7932
8489
  async handleAddClick() {
7933
- const comp = (await import('./acorex-modules-document-management-meta-choose-popup.component-BbPbZmkc.mjs')).AXPMetaChoosePopupComponent;
8490
+ const comp = (await import('./acorex-modules-document-management-meta-choose-popup.component-DXTdVhrh.mjs')).AXPMetaChoosePopupComponent;
7934
8491
  const result = await this.popupService.open(comp, {
7935
8492
  title: 'Meta Selector',
7936
8493
  data: {
@@ -7958,7 +8515,7 @@ class AXPMetaSelectorWidgetEditComponent extends AXPValueWidgetComponent {
7958
8515
  * Handle editing a metadata item
7959
8516
  */
7960
8517
  async handleMetaEdit(item) {
7961
- const comp = (await import('./acorex-modules-document-management-meta-choose-popup.component-BbPbZmkc.mjs')).AXPMetaChoosePopupComponent;
8518
+ const comp = (await import('./acorex-modules-document-management-meta-choose-popup.component-DXTdVhrh.mjs')).AXPMetaChoosePopupComponent;
7962
8519
  const result = await this.popupService.open(comp, {
7963
8520
  title: 'Edit Meta Selector',
7964
8521
  data: {
@@ -8034,7 +8591,7 @@ class AXPMetaSelectorWidgetEditComponent extends AXPValueWidgetComponent {
8034
8591
  </div>
8035
8592
 
8036
8593
  </div>
8037
- `, isInline: true, styles: [".axp-meta-selector-widget-edit .__header{display:flex}.axp-meta-selector-widget-edit .__header{justify-content:flex-end}.axp-meta-selector-widget-edit .__header{border-bottom-width:1px}.axp-meta-selector-widget-edit .__header,.axp-meta-selector-widget-edit .__content{padding:.5rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXSelectBoxModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$3.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i2.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: AXTranslationModule }, { kind: "directive", type: i3$1.AXTranslatorDirective, selector: "[translate]" }, { kind: "component", type: AXMetaListComponent, selector: "axp-meta-list", inputs: ["metaItems"], outputs: ["onRemove", "onRevert", "onEdit"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8594
+ `, isInline: true, styles: [".axp-meta-selector-widget-edit .__header{display:flex}.axp-meta-selector-widget-edit .__header{justify-content:flex-end}.axp-meta-selector-widget-edit .__header{border-bottom-width:1px}.axp-meta-selector-widget-edit .__header,.axp-meta-selector-widget-edit .__content{padding:.5rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXSelectBoxModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$3.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i2.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: AXTranslationModule }, { kind: "directive", type: i5.AXTranslatorDirective, selector: "[translate]" }, { kind: "component", type: AXMetaListComponent, selector: "axp-meta-list", inputs: ["metaItems"], outputs: ["onRemove", "onRevert", "onEdit"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8038
8595
  }
8039
8596
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPMetaSelectorWidgetEditComponent, decorators: [{
8040
8597
  type: Component,
@@ -8122,6 +8679,458 @@ const AXPMetaSelectorWidget = {
8122
8679
  },
8123
8680
  };
8124
8681
 
8682
+ const AXPDocumentUploaderWidget = {
8683
+ name: 'document-uploader',
8684
+ title: 'Document Uploader',
8685
+ description: 'Uploads and manages documents with metadata',
8686
+ icon: 'fa-light fa-file-upload',
8687
+ categories: AXP_WIDGETS_EDITOR_CATEGORY,
8688
+ groups: [AXPWidgetGroupEnum.FormElement],
8689
+ type: 'editor',
8690
+ properties: [
8691
+ AXP_NAME_PROPERTY,
8692
+ AXP_DATA_PATH_PROPERTY,
8693
+ AXP_READONLY_PROPERTY,
8694
+ AXP_DISABLED_PROPERTY,
8695
+ AXP_ALLOW_MULTIPLE_PROPERTY,
8696
+ AXP_DOWNLOADABLE_PROPERTY,
8697
+ AXP_DESCRIPTION_PROPERTY,
8698
+ AXP_REQUIRED_VALIDATION_PROPERTY,
8699
+ {
8700
+ name: 'accept',
8701
+ title: 'Accept',
8702
+ group: AXP_BEHAVIOR_PROPERTY_GROUP,
8703
+ schema: {
8704
+ dataType: 'string',
8705
+ interface: {
8706
+ name: 'accept',
8707
+ path: 'options.accept',
8708
+ type: 'text',
8709
+ },
8710
+ },
8711
+ visible: true,
8712
+ },
8713
+ {
8714
+ name: 'fileEditable',
8715
+ title: 'File Editable',
8716
+ group: AXP_BEHAVIOR_PROPERTY_GROUP,
8717
+ schema: {
8718
+ dataType: 'boolean',
8719
+ interface: {
8720
+ name: 'fileEditable',
8721
+ path: 'options.fileEditable',
8722
+ type: 'checkbox',
8723
+ },
8724
+ },
8725
+ visible: true,
8726
+ },
8727
+ ],
8728
+ components: {
8729
+ designer: {
8730
+ component: () => Promise.resolve().then(function () { return documentUploaderDesigner_component; }).then((c) => c.AXPDocumentUploaderWidgetDesignerComponent),
8731
+ },
8732
+ view: {
8733
+ component: () => Promise.resolve().then(function () { return documentUploaderView_component; }).then((c) => c.AXPDocumentUploaderWidgetViewComponent),
8734
+ },
8735
+ edit: {
8736
+ component: () => Promise.resolve().then(function () { return documentUploaderEdit_component; }).then((c) => c.AXPDocumentUploaderWidgetEditComponent),
8737
+ },
8738
+ filter: {
8739
+ component: () => Promise.resolve().then(function () { return documentUploaderFilter_component; }).then((c) => c.AXPDocumentUploaderWidgetFilterComponent),
8740
+ },
8741
+ column: {
8742
+ component: () => Promise.resolve().then(function () { return documentUploaderColumn_component; }).then((c) => c.AXPDocumentUploaderWidgetColumnComponent),
8743
+ },
8744
+ print: {
8745
+ component: () => Promise.resolve().then(function () { return documentUploaderPrint_component; }).then((c) => c.AXPDocumentUploaderWidgetPrintComponent),
8746
+ },
8747
+ },
8748
+ };
8749
+
8750
+ class AXPDocumentUploaderWidgetDesignerComponent extends AXPValueWidgetComponent {
8751
+ constructor() {
8752
+ super(...arguments);
8753
+ this.placeholder = computed(() => this.options()["placeholder"] || "Click to upload files", ...(ngDevMode ? [{ debugName: "placeholder" }] : []));
8754
+ this.disabled = computed(() => this.options()["disabled"], ...(ngDevMode ? [{ debugName: "disabled" }] : []));
8755
+ this.readonly = computed(() => this.options()["readonly"], ...(ngDevMode ? [{ debugName: "readonly" }] : []));
8756
+ this.hasClearButton = computed(() => this.options()['hasClearButton'], ...(ngDevMode ? [{ debugName: "hasClearButton" }] : []));
8757
+ this.fileCount = computed(() => (this.getValue() ?? []).length, ...(ngDevMode ? [{ debugName: "fileCount" }] : []));
8758
+ this.hasFiles = computed(() => this.fileCount() > 0, ...(ngDevMode ? [{ debugName: "hasFiles" }] : []));
8759
+ }
8760
+ get __class() {
8761
+ const cls = {};
8762
+ cls[`ax-block`] = true;
8763
+ cls[`ax-flex-1`] = true;
8764
+ return cls;
8765
+ }
8766
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPDocumentUploaderWidgetDesignerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
8767
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.6", type: AXPDocumentUploaderWidgetDesignerComponent, isStandalone: true, selector: "axp-document-uploader-widget-designer", host: { properties: { "class": "this.__class" } }, usesInheritance: true, ngImport: i0, template: `
8768
+ <div class="ax-flex ax-flex-col ax-gap-2 ax-p-2 ax-border ax-rounded ax-border-dashed ax-border-gray-300">
8769
+ <div class="ax-flex ax-items-center ax-gap-2">
8770
+ <i class="fa-light fa-file-upload ax-text-gray-400"></i>
8771
+ <span class="ax-text-sm ax-text-gray-600">{{ placeholder() }}</span>
8772
+ </div>
8773
+ @if(hasFiles()){
8774
+ <div class="ax-text-xs ax-text-gray-500">
8775
+ {{ fileCount() }} file(s) selected
8776
+ </div>
8777
+ }
8778
+ </div>
8779
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "ngmodule", type: AXLabelModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8780
+ }
8781
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPDocumentUploaderWidgetDesignerComponent, decorators: [{
8782
+ type: Component,
8783
+ args: [{
8784
+ selector: 'axp-document-uploader-widget-designer',
8785
+ template: `
8786
+ <div class="ax-flex ax-flex-col ax-gap-2 ax-p-2 ax-border ax-rounded ax-border-dashed ax-border-gray-300">
8787
+ <div class="ax-flex ax-items-center ax-gap-2">
8788
+ <i class="fa-light fa-file-upload ax-text-gray-400"></i>
8789
+ <span class="ax-text-sm ax-text-gray-600">{{ placeholder() }}</span>
8790
+ </div>
8791
+ @if(hasFiles()){
8792
+ <div class="ax-text-xs ax-text-gray-500">
8793
+ {{ fileCount() }} file(s) selected
8794
+ </div>
8795
+ }
8796
+ </div>
8797
+ `,
8798
+ changeDetection: ChangeDetectionStrategy.OnPush,
8799
+ imports: [FormsModule, AXButtonModule, AXDecoratorModule, AXFormModule, AXLabelModule, AXTranslationModule, CommonModule]
8800
+ }]
8801
+ }], propDecorators: { __class: [{
8802
+ type: HostBinding,
8803
+ args: ['class']
8804
+ }] } });
8805
+
8806
+ var documentUploaderDesigner_component = /*#__PURE__*/Object.freeze({
8807
+ __proto__: null,
8808
+ AXPDocumentUploaderWidgetDesignerComponent: AXPDocumentUploaderWidgetDesignerComponent
8809
+ });
8810
+
8811
+ class AXPDocumentUploaderWidgetEditComponent extends AXPValueWidgetComponent {
8812
+ constructor() {
8813
+ super(...arguments);
8814
+ this.fileService = inject(AXFileService);
8815
+ this.readonly = computed(() => this.options()['readonly'], ...(ngDevMode ? [{ debugName: "readonly" }] : []));
8816
+ this.formDefinition = signal({
8817
+ groups: [],
8818
+ }, ...(ngDevMode ? [{ debugName: "formDefinition" }] : []));
8819
+ this.formContext = signal({}, ...(ngDevMode ? [{ debugName: "formContext" }] : []));
8820
+ this.defaultLayout = computed(() => {
8821
+ return {
8822
+ positions: {
8823
+ default: {
8824
+ colSpan: 12,
8825
+ },
8826
+ },
8827
+ };
8828
+ }, ...(ngDevMode ? [{ debugName: "defaultLayout" }] : []));
8829
+ }
8830
+ ngOnInit() {
8831
+ this.renderForm();
8832
+ //
8833
+ super.ngOnInit();
8834
+ }
8835
+ async renderForm() {
8836
+ const groups = await Promise.all(this.getValue().map(async (item, index) => {
8837
+ const docType = item.documentType;
8838
+ return {
8839
+ name: item.id ?? item.name,
8840
+ title: item.name,
8841
+ parameters: [
8842
+ ...(await Promise.all(Object.values(item.meta ?? {}).map(async (m) => {
8843
+ const meta = docType?.meta.find((meta) => meta.name === m.name);
8844
+ let node = typeof meta?.interface === 'function'
8845
+ ? await meta?.interface()
8846
+ : JSON.parse(meta?.interface)['children'][0]['children'][0];
8847
+ node = {
8848
+ ...node,
8849
+ path: `files[${index}].${meta?.name}`,
8850
+ defaultValue: m.value,
8851
+ };
8852
+ return {
8853
+ path: `files[${index}].${meta?.name}`,
8854
+ title: meta?.title,
8855
+ widget: node,
8856
+ };
8857
+ }))),
8858
+ {
8859
+ path: `files[${index}].file`,
8860
+ title: 'File',
8861
+ widget: {
8862
+ path: `files[${index}].file`,
8863
+ type: 'file-uploader',
8864
+ defaultValue: [item],
8865
+ options: {
8866
+ fileEditable: false,
8867
+ readonly: true,
8868
+ accept: docType?.type.selectedItems.map((item) => `.${item.name.split('.')[1]}`).join(','),
8869
+ },
8870
+ },
8871
+ },
8872
+ ],
8873
+ };
8874
+ }));
8875
+ this.formDefinition.set({
8876
+ groups,
8877
+ });
8878
+ }
8879
+ handleContextChange(event) {
8880
+ this.formContext.set(event);
8881
+ console.log(this.formContext());
8882
+ }
8883
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPDocumentUploaderWidgetEditComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
8884
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.6", type: AXPDocumentUploaderWidgetEditComponent, isStandalone: true, selector: "axp-document-uploader-widget-edit", usesInheritance: true, ngImport: i0, template: `
8885
+ <div class="ax-flex ax-flex-col ax-py-4 ax-px-6">
8886
+ <axp-dynamic-form
8887
+ [formDefinition]="formDefinition()"
8888
+ [context]="formContext()"
8889
+ [layoutConfig]="defaultLayout()"
8890
+ [layoutStyle]="'compact'"
8891
+ (contextChange)="handleContextChange($event)"
8892
+ >
8893
+ </axp-dynamic-form>
8894
+ </div>
8895
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "ngmodule", type: AXLabelModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: CommonModule }, { kind: "component", type: AXPDynamicFormComponent, selector: "axp-dynamic-form", inputs: ["formDefinition", "context", "layoutStyle", "layoutConfig"], outputs: ["contextChange", "contextInitiated", "validityChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8896
+ }
8897
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPDocumentUploaderWidgetEditComponent, decorators: [{
8898
+ type: Component,
8899
+ args: [{
8900
+ selector: 'axp-document-uploader-widget-edit',
8901
+ template: `
8902
+ <div class="ax-flex ax-flex-col ax-py-4 ax-px-6">
8903
+ <axp-dynamic-form
8904
+ [formDefinition]="formDefinition()"
8905
+ [context]="formContext()"
8906
+ [layoutConfig]="defaultLayout()"
8907
+ [layoutStyle]="'compact'"
8908
+ (contextChange)="handleContextChange($event)"
8909
+ >
8910
+ </axp-dynamic-form>
8911
+ </div>
8912
+ `,
8913
+ changeDetection: ChangeDetectionStrategy.OnPush,
8914
+ imports: [
8915
+ FormsModule,
8916
+ AXButtonModule,
8917
+ AXDecoratorModule,
8918
+ AXFormModule,
8919
+ AXLabelModule,
8920
+ AXTranslationModule,
8921
+ CommonModule,
8922
+ AXPDynamicFormComponent,
8923
+ ],
8924
+ }]
8925
+ }] });
8926
+
8927
+ var documentUploaderEdit_component = /*#__PURE__*/Object.freeze({
8928
+ __proto__: null,
8929
+ AXPDocumentUploaderWidgetEditComponent: AXPDocumentUploaderWidgetEditComponent
8930
+ });
8931
+
8932
+ class AXPDocumentUploaderWidgetViewComponent extends AXPValueWidgetComponent {
8933
+ constructor() {
8934
+ super(...arguments);
8935
+ this.fileUploaderNode = computed(() => ({
8936
+ type: 'file-uploader',
8937
+ path: `${this.path}.fileId`,
8938
+ options: {
8939
+ readOnly: true,
8940
+ },
8941
+ }), ...(ngDevMode ? [{ debugName: "fileUploaderNode" }] : []));
8942
+ }
8943
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPDocumentUploaderWidgetViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
8944
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.6", type: AXPDocumentUploaderWidgetViewComponent, isStandalone: true, selector: "axp-document-uploader-widget-view", usesInheritance: true, ngImport: i0, template: `
8945
+ <ng-container axp-widget-renderer [node]="fileUploaderNode()" [mode]="'view'"> </ng-container>
8946
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXPLayoutBuilderModule }, { kind: "directive", type: i1$2.AXPWidgetRendererDirective, selector: "[axp-widget-renderer]", inputs: ["parentNode", "index", "mode", "node"], outputs: ["onOptionsChanged", "onValueChanged"], exportAs: ["widgetRenderer"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8947
+ }
8948
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPDocumentUploaderWidgetViewComponent, decorators: [{
8949
+ type: Component,
8950
+ args: [{
8951
+ selector: 'axp-document-uploader-widget-view',
8952
+ template: `
8953
+ <ng-container axp-widget-renderer [node]="fileUploaderNode()" [mode]="'view'"> </ng-container>
8954
+ `,
8955
+ changeDetection: ChangeDetectionStrategy.OnPush,
8956
+ imports: [CommonModule, AXButtonModule, AXDecoratorModule, AXTranslationModule, AXPLayoutBuilderModule]
8957
+ }]
8958
+ }] });
8959
+
8960
+ var documentUploaderView_component = /*#__PURE__*/Object.freeze({
8961
+ __proto__: null,
8962
+ AXPDocumentUploaderWidgetViewComponent: AXPDocumentUploaderWidgetViewComponent
8963
+ });
8964
+
8965
+ class AXPDocumentUploaderWidgetFilterComponent extends AXPValueWidgetComponent {
8966
+ constructor() {
8967
+ super(...arguments);
8968
+ this.hasFiles = computed(() => this.options()['hasFiles'] || false, ...(ngDevMode ? [{ debugName: "hasFiles" }] : []));
8969
+ this.noFiles = computed(() => this.options()['noFiles'] || false, ...(ngDevMode ? [{ debugName: "noFiles" }] : []));
8970
+ }
8971
+ toggleHasFiles() {
8972
+ const currentOptions = this.options();
8973
+ this.setOptions({
8974
+ ...currentOptions,
8975
+ hasFiles: !this.hasFiles()
8976
+ });
8977
+ }
8978
+ toggleNoFiles() {
8979
+ const currentOptions = this.options();
8980
+ this.setOptions({
8981
+ ...currentOptions,
8982
+ noFiles: !this.noFiles()
8983
+ });
8984
+ }
8985
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPDocumentUploaderWidgetFilterComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
8986
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.6", type: AXPDocumentUploaderWidgetFilterComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: `
8987
+ <div class="ax-flex ax-flex-col ax-gap-2">
8988
+ <ax-label>File Filter</ax-label>
8989
+ <div class="ax-flex ax-gap-2">
8990
+ <ax-button
8991
+ [text]="'Has Files'"
8992
+ [color]="hasFiles() ? 'primary' : 'secondary'"
8993
+ [look]="hasFiles() ? 'solid' : 'outline'"
8994
+ (onClick)="toggleHasFiles()">
8995
+ </ax-button>
8996
+ <ax-button
8997
+ [text]="'No Files'"
8998
+ [color]="noFiles() ? 'primary' : 'secondary'"
8999
+ [look]="noFiles() ? 'solid' : 'outline'"
9000
+ (onClick)="toggleNoFiles()">
9001
+ </ax-button>
9002
+ </div>
9003
+ </div>
9004
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$3.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "ngmodule", type: AXLabelModule }, { kind: "component", type: i4.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
9005
+ }
9006
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPDocumentUploaderWidgetFilterComponent, decorators: [{
9007
+ type: Component,
9008
+ args: [{
9009
+ template: `
9010
+ <div class="ax-flex ax-flex-col ax-gap-2">
9011
+ <ax-label>File Filter</ax-label>
9012
+ <div class="ax-flex ax-gap-2">
9013
+ <ax-button
9014
+ [text]="'Has Files'"
9015
+ [color]="hasFiles() ? 'primary' : 'secondary'"
9016
+ [look]="hasFiles() ? 'solid' : 'outline'"
9017
+ (onClick)="toggleHasFiles()">
9018
+ </ax-button>
9019
+ <ax-button
9020
+ [text]="'No Files'"
9021
+ [color]="noFiles() ? 'primary' : 'secondary'"
9022
+ [look]="noFiles() ? 'solid' : 'outline'"
9023
+ (onClick)="toggleNoFiles()">
9024
+ </ax-button>
9025
+ </div>
9026
+ </div>
9027
+ `,
9028
+ changeDetection: ChangeDetectionStrategy.OnPush,
9029
+ imports: [FormsModule, AXButtonModule, AXDecoratorModule, AXFormModule, AXLabelModule, AXTranslationModule, CommonModule],
9030
+ inputs: []
9031
+ }]
9032
+ }] });
9033
+
9034
+ var documentUploaderFilter_component = /*#__PURE__*/Object.freeze({
9035
+ __proto__: null,
9036
+ AXPDocumentUploaderWidgetFilterComponent: AXPDocumentUploaderWidgetFilterComponent
9037
+ });
9038
+
9039
+ class AXPDocumentUploaderWidgetColumnComponent extends AXPColumnWidgetComponent {
9040
+ constructor() {
9041
+ super(...arguments);
9042
+ this.count = computed(() => {
9043
+ const value = castArray(this.rawValue ?? []);
9044
+ return value.length;
9045
+ }, ...(ngDevMode ? [{ debugName: "count" }] : []));
9046
+ this.fileService = inject(AXPFileUploaderWidgetService);
9047
+ }
9048
+ async openFileList() {
9049
+ this.fileService.showFileList({
9050
+ files: castArray(this.rawValue ?? []),
9051
+ readOnly: true,
9052
+ });
9053
+ }
9054
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPDocumentUploaderWidgetColumnComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
9055
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.6", type: AXPDocumentUploaderWidgetColumnComponent, isStandalone: true, selector: "ng-component", inputs: { rawValue: "rawValue", rowData: "rowData" }, usesInheritance: true, ngImport: i0, template: `
9056
+ <span class="ax-cursor-pointer ax-text-primary ax-underline" (click)="openFileList()">
9057
+ {{ count() }} {{ '@document-management:file' | translate | async }}
9058
+ </span>
9059
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
9060
+ }
9061
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPDocumentUploaderWidgetColumnComponent, decorators: [{
9062
+ type: Component,
9063
+ args: [{
9064
+ template: `
9065
+ <span class="ax-cursor-pointer ax-text-primary ax-underline" (click)="openFileList()">
9066
+ {{ count() }} {{ '@document-management:file' | translate | async }}
9067
+ </span>
9068
+ `,
9069
+ changeDetection: ChangeDetectionStrategy.OnPush,
9070
+ imports: [CommonModule, AXTranslationModule],
9071
+ inputs: ['rawValue', 'rowData']
9072
+ }]
9073
+ }] });
9074
+
9075
+ var documentUploaderColumn_component = /*#__PURE__*/Object.freeze({
9076
+ __proto__: null,
9077
+ AXPDocumentUploaderWidgetColumnComponent: AXPDocumentUploaderWidgetColumnComponent
9078
+ });
9079
+
9080
+ class AXPDocumentUploaderWidgetPrintComponent extends AXPValueWidgetComponent {
9081
+ constructor() {
9082
+ super(...arguments);
9083
+ this.hasFiles = computed(() => (this.getValue() ?? []).length > 0, ...(ngDevMode ? [{ debugName: "hasFiles" }] : []));
9084
+ }
9085
+ formatFileSize(bytes) {
9086
+ if (!bytes)
9087
+ return '0 B';
9088
+ const sizes = ['B', 'KB', 'MB', 'GB'];
9089
+ const i = Math.floor(Math.log(bytes) / Math.log(1024));
9090
+ return Math.round(bytes / Math.pow(1024, i) * 100) / 100 + ' ' + sizes[i];
9091
+ }
9092
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPDocumentUploaderWidgetPrintComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
9093
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.6", type: AXPDocumentUploaderWidgetPrintComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: `
9094
+ <div class="ax-flex ax-flex-col ax-gap-1">
9095
+ @if(hasFiles()){
9096
+ @for(file of getValue(); track file.id) {
9097
+ <div class="ax-text-sm">
9098
+ {{ file.name }} ({{ formatFileSize(file.size) }})
9099
+ </div>
9100
+ }
9101
+ } @else {
9102
+ <span class="ax-text-gray-500">No files</span>
9103
+ }
9104
+ </div>
9105
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
9106
+ }
9107
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPDocumentUploaderWidgetPrintComponent, decorators: [{
9108
+ type: Component,
9109
+ args: [{
9110
+ template: `
9111
+ <div class="ax-flex ax-flex-col ax-gap-1">
9112
+ @if(hasFiles()){
9113
+ @for(file of getValue(); track file.id) {
9114
+ <div class="ax-text-sm">
9115
+ {{ file.name }} ({{ formatFileSize(file.size) }})
9116
+ </div>
9117
+ }
9118
+ } @else {
9119
+ <span class="ax-text-gray-500">No files</span>
9120
+ }
9121
+ </div>
9122
+ `,
9123
+ changeDetection: ChangeDetectionStrategy.OnPush,
9124
+ imports: [CommonModule],
9125
+ inputs: []
9126
+ }]
9127
+ }] });
9128
+
9129
+ var documentUploaderPrint_component = /*#__PURE__*/Object.freeze({
9130
+ __proto__: null,
9131
+ AXPDocumentUploaderWidgetPrintComponent: AXPDocumentUploaderWidgetPrintComponent
9132
+ });
9133
+
8125
9134
  class AXMDocumentReviewTaskProvider extends AXPWorkflowTaskProvider {
8126
9135
  constructor() {
8127
9136
  super(...arguments);
@@ -8506,11 +9515,11 @@ function routesFacory() {
8506
9515
  children: [
8507
9516
  {
8508
9517
  path: '',
8509
- loadComponent: () => import('./acorex-modules-document-management-drive.component-DZhd1DUn.mjs').then((c) => c.AXMDocumentDriveComponent),
9518
+ loadComponent: () => import('./acorex-modules-document-management-drive.component-I5pzEVVg.mjs').then((c) => c.AXMDocumentDriveComponent),
8510
9519
  },
8511
9520
  {
8512
9521
  path: ':id',
8513
- loadComponent: () => import('./acorex-modules-document-management-drive.component-DZhd1DUn.mjs').then((c) => c.AXMDocumentDriveComponent),
9522
+ loadComponent: () => import('./acorex-modules-document-management-drive.component-I5pzEVVg.mjs').then((c) => c.AXMDocumentDriveComponent),
8514
9523
  },
8515
9524
  ],
8516
9525
  },
@@ -8564,7 +9573,7 @@ class AXMDocumentManagementModule {
8564
9573
  provide: AXP_PERMISSION_DEFINITION_PROVIDER,
8565
9574
  useFactory: async () => {
8566
9575
  const injector = inject(Injector);
8567
- const provider = (await import('./acorex-modules-document-management-permission-definition.provider-CMEJt7pe.mjs')).AXMPermissionDefinitionProvider;
9576
+ const provider = (await import('./acorex-modules-document-management-permission-definition.provider-CljbPHm-.mjs')).AXMPermissionDefinitionProvider;
8568
9577
  return new provider(injector);
8569
9578
  },
8570
9579
  multi: true,
@@ -8599,7 +9608,7 @@ class AXMDocumentManagementModule {
8599
9608
  AXMDocumentManagementDocumentTypeEntityModule,
8600
9609
  AXMDocumentManagementDocumentEntityModule,
8601
9610
  AXPLayoutBuilderModule.forChild({
8602
- widgets: [AXmFileTypeExtensionWidget, AXPMetaSelectorWidget],
9611
+ widgets: [AXmFileTypeExtensionWidget, AXPMetaSelectorWidget, AXPDocumentUploaderWidget],
8603
9612
  }),
8604
9613
  AXMFileTypeModule,
8605
9614
  AXMediaViewerModule.forRoot(),
@@ -8637,7 +9646,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
8637
9646
  AXMDocumentManagementDocumentTypeEntityModule,
8638
9647
  AXMDocumentManagementDocumentEntityModule,
8639
9648
  AXPLayoutBuilderModule.forChild({
8640
- widgets: [AXmFileTypeExtensionWidget, AXPMetaSelectorWidget],
9649
+ widgets: [AXmFileTypeExtensionWidget, AXPMetaSelectorWidget, AXPDocumentUploaderWidget],
8641
9650
  }),
8642
9651
  AXMFileTypeModule,
8643
9652
  AXMediaViewerModule.forRoot(),
@@ -8702,7 +9711,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
8702
9711
  provide: AXP_PERMISSION_DEFINITION_PROVIDER,
8703
9712
  useFactory: async () => {
8704
9713
  const injector = inject(Injector);
8705
- const provider = (await import('./acorex-modules-document-management-permission-definition.provider-CMEJt7pe.mjs')).AXMPermissionDefinitionProvider;
9714
+ const provider = (await import('./acorex-modules-document-management-permission-definition.provider-CljbPHm-.mjs')).AXMPermissionDefinitionProvider;
8706
9715
  return new provider(injector);
8707
9716
  },
8708
9717
  multi: true,
@@ -8737,5 +9746,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
8737
9746
  * Generated bundle index. Do not edit.
8738
9747
  */
8739
9748
 
8740
- export { AXPDocumentExplorerViewModel as A, AXMDocumentManagementDocumentTypeStatusDefinitionEntityService as B, AXMDocumentManagementDocumentTypeStatusDefinitionEntityServiceImpl as C, folderFactory as D, AXMFolderService as E, AXMFolderServiceImpl as F, reviewFactory as G, AXMReviewService as H, AXMReviewServiceImpl as I, distributionFactory as J, AXMDistributionService as K, AXMDistributionServiceImpl as L, distributionInteractionFactory as M, AXMDistributionInteractionServiceImpl as N, AXMEntityProvider as O, AXMMenuProvider as P, AXMSearchCommandProvider as Q, RootConfig as R, AXMSettingProvider as S, AXMDocumentManagerService as a, AXMDocumentExplorerComponent as b, AXMPermissionsKeys as c, AXMDistributionInteractionService as d, AXMFolderPathBreadcrumbsComponent as e, AXMDocumentTypeService as f, AXMDocumentManagementModule as g, documentFactory as h, AXMDocumentManagementDocumentEntityModule as i, AXMDocumentService as j, AXMDocumentServiceImpl as k, getNextStatus as l, canTransition as m, documentTypeFactory as n, AXMDocumentManagementDocumentTypeEntityModule as o, AXMDocumentTypeServiceImpl as p, documentTypeMetaDefinitionfactory as q, AXMDocumentManagementDocumentTypeMetaDefinitionEntityModule as r, AXMDocumentManagementDocumentTypeMetaDefinitionEntityService as s, AXMDocumentManagementDocumentTypeMetaDefinitionEntityServiceImpl as t, documentTypeMetaValueFactory as u, AXMDocumentManagementDocumentTypeMetaValueEntityModule as v, AXMDocumentManagementDocumentTypeMetaValueEntityService as w, AXMDocumentManagementDocumentTypeMetaValueEntityServiceImpl as x, documentTypeStatusDefinitionFactory as y, AXMDocumentManagementDocumentTypeStatusDefinitionEntityModule as z };
8741
- //# sourceMappingURL=acorex-modules-document-management-acorex-modules-document-management-BCTTw-hI.mjs.map
9749
+ export { AXPDocumentExplorerViewModel as A, AXMDocumentManagementDocumentTypeStatusDefinitionEntityService as B, AXMDocumentManagementDocumentTypeStatusDefinitionEntityServiceImpl as C, folderFactory as D, AXMFolderService as E, AXMFolderServiceImpl as F, reviewFactory as G, AXMReviewService as H, AXMReviewServiceImpl as I, distributionFactory as J, AXMDistributionService as K, AXMDistributionServiceImpl as L, distributionInteractionFactory as M, AXMDistributionInteractionServiceImpl as N, documentRelatedFactory as O, AXMEntityProvider as P, AXMMenuProvider as Q, RootConfig as R, AXMSearchCommandProvider as S, AXMSettingProvider as T, AXPDocumentUploaderWidget as U, AXPDocumentUploaderWidgetDesignerComponent as V, AXPDocumentUploaderWidgetEditComponent as W, AXPDocumentUploaderWidgetViewComponent as X, AXPDocumentUploaderWidgetFilterComponent as Y, AXPDocumentUploaderWidgetColumnComponent as Z, AXPDocumentUploaderWidgetPrintComponent as _, AXMDocumentManagerService as a, AXMDocumentExplorerComponent as b, AXMPermissionsKeys as c, AXMDistributionInteractionService as d, AXMFolderPathBreadcrumbsComponent as e, AXMDocumentTypeService as f, AXMDocumentManagementModule as g, documentFactory as h, AXMDocumentManagementDocumentEntityModule as i, AXMDocumentService as j, AXMDocumentServiceImpl as k, getNextStatus as l, canTransition as m, documentTypeFactory as n, AXMDocumentManagementDocumentTypeEntityModule as o, AXMDocumentTypeServiceImpl as p, documentTypeMetaDefinitionfactory as q, AXMDocumentManagementDocumentTypeMetaDefinitionEntityModule as r, AXMDocumentManagementDocumentTypeMetaDefinitionEntityService as s, AXMDocumentManagementDocumentTypeMetaDefinitionEntityServiceImpl as t, documentTypeMetaValueFactory as u, AXMDocumentManagementDocumentTypeMetaValueEntityModule as v, AXMDocumentManagementDocumentTypeMetaValueEntityService as w, AXMDocumentManagementDocumentTypeMetaValueEntityServiceImpl as x, documentTypeStatusDefinitionFactory as y, AXMDocumentManagementDocumentTypeStatusDefinitionEntityModule as z };
9750
+ //# sourceMappingURL=acorex-modules-document-management-acorex-modules-document-management-uQnZ0m0T.mjs.map