@acorex/modules 20.2.2 → 20.2.4-next.0

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 (176) hide show
  1. package/common/index.d.ts +16 -8
  2. package/content-management/index.d.ts +48 -3
  3. package/document-management/index.d.ts +27 -24
  4. package/fesm2022/{acorex-modules-auth-acorex-modules-auth-CdZ9BHOa.mjs → acorex-modules-auth-acorex-modules-auth-C8p1VeqM.mjs} +10 -10
  5. package/fesm2022/{acorex-modules-auth-acorex-modules-auth-CdZ9BHOa.mjs.map → acorex-modules-auth-acorex-modules-auth-C8p1VeqM.mjs.map} +1 -1
  6. package/fesm2022/{acorex-modules-auth-app-chooser.component-D4ehfpnB.mjs → acorex-modules-auth-app-chooser.component-CDKLbD_u.mjs} +2 -2
  7. package/fesm2022/{acorex-modules-auth-app-chooser.component-D4ehfpnB.mjs.map → acorex-modules-auth-app-chooser.component-CDKLbD_u.mjs.map} +1 -1
  8. package/fesm2022/{acorex-modules-auth-login.module-BHRC357P.mjs → acorex-modules-auth-login.module-DGPRxnXo.mjs} +4 -4
  9. package/fesm2022/{acorex-modules-auth-login.module-BHRC357P.mjs.map → acorex-modules-auth-login.module-DGPRxnXo.mjs.map} +1 -1
  10. package/fesm2022/{acorex-modules-auth-master.layout-DAYMmpBW.mjs → acorex-modules-auth-master.layout-BNFGuQQs.mjs} +2 -2
  11. package/fesm2022/{acorex-modules-auth-master.layout-DAYMmpBW.mjs.map → acorex-modules-auth-master.layout-BNFGuQQs.mjs.map} +1 -1
  12. package/fesm2022/{acorex-modules-auth-oauth-callback.component-B0Q3w45s.mjs → acorex-modules-auth-oauth-callback.component-B3sSFdOA.mjs} +2 -2
  13. package/fesm2022/{acorex-modules-auth-oauth-callback.component-B0Q3w45s.mjs.map → acorex-modules-auth-oauth-callback.component-B3sSFdOA.mjs.map} +1 -1
  14. package/fesm2022/{acorex-modules-auth-password.component-BJpxtJYh.mjs → acorex-modules-auth-password.component-Dyox9sR4.mjs} +2 -2
  15. package/fesm2022/{acorex-modules-auth-password.component-BJpxtJYh.mjs.map → acorex-modules-auth-password.component-Dyox9sR4.mjs.map} +1 -1
  16. package/fesm2022/acorex-modules-auth-password.component-ln2kDKPR.mjs +226 -0
  17. package/fesm2022/acorex-modules-auth-password.component-ln2kDKPR.mjs.map +1 -0
  18. package/fesm2022/{acorex-modules-auth-routes-hvqL2dCH.mjs → acorex-modules-auth-routes-7vr8T08D.mjs} +2 -2
  19. package/fesm2022/{acorex-modules-auth-routes-hvqL2dCH.mjs.map → acorex-modules-auth-routes-7vr8T08D.mjs.map} +1 -1
  20. package/fesm2022/{acorex-modules-auth-two-factor.module-kPuT8yUw.mjs → acorex-modules-auth-two-factor.module-D6XCUP_A.mjs} +2 -2
  21. package/fesm2022/{acorex-modules-auth-two-factor.module-kPuT8yUw.mjs.map → acorex-modules-auth-two-factor.module-D6XCUP_A.mjs.map} +1 -1
  22. package/fesm2022/{acorex-modules-auth-user-sessions.component-Chx_jTSJ.mjs → acorex-modules-auth-user-sessions.component-B5aBDmdR.mjs} +2 -2
  23. package/fesm2022/{acorex-modules-auth-user-sessions.component-Chx_jTSJ.mjs.map → acorex-modules-auth-user-sessions.component-B5aBDmdR.mjs.map} +1 -1
  24. package/fesm2022/acorex-modules-auth.mjs +1 -1
  25. package/fesm2022/acorex-modules-calendar-management.mjs +1 -1
  26. package/fesm2022/acorex-modules-calendar-management.mjs.map +1 -1
  27. package/fesm2022/acorex-modules-common.mjs +503 -235
  28. package/fesm2022/acorex-modules-common.mjs.map +1 -1
  29. package/fesm2022/acorex-modules-content-management.mjs +378 -457
  30. package/fesm2022/acorex-modules-content-management.mjs.map +1 -1
  31. package/fesm2022/acorex-modules-conversation.mjs +119 -4
  32. package/fesm2022/acorex-modules-conversation.mjs.map +1 -1
  33. package/fesm2022/acorex-modules-dashboard-management.mjs +9 -9
  34. package/fesm2022/acorex-modules-dashboard-management.mjs.map +1 -1
  35. package/fesm2022/acorex-modules-data-management.mjs +0 -1
  36. package/fesm2022/acorex-modules-data-management.mjs.map +1 -1
  37. package/fesm2022/{acorex-modules-document-management-acorex-modules-document-management-C4G6L94e.mjs → acorex-modules-document-management-acorex-modules-document-management-D9oPjJnn.mjs} +875 -142
  38. package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-D9oPjJnn.mjs.map +1 -0
  39. package/fesm2022/{acorex-modules-document-management-attachment-widget.component-CbDcYxEZ.mjs → acorex-modules-document-management-attachment-widget.component-CcWvTWv0.mjs} +2 -2
  40. package/fesm2022/{acorex-modules-document-management-attachment-widget.component-CbDcYxEZ.mjs.map → acorex-modules-document-management-attachment-widget.component-CcWvTWv0.mjs.map} +1 -1
  41. package/fesm2022/{acorex-modules-document-management-create-folder-dialog.component-BCs4aZKn.mjs → acorex-modules-document-management-create-folder-dialog.component-DPFIPNE_.mjs} +2 -2
  42. package/fesm2022/{acorex-modules-document-management-create-folder-dialog.component-BCs4aZKn.mjs.map → acorex-modules-document-management-create-folder-dialog.component-DPFIPNE_.mjs.map} +1 -1
  43. package/fesm2022/{acorex-modules-document-management-details-view.component-v1VroVv-.mjs → acorex-modules-document-management-details-view.component-BKNvUhdl.mjs} +2 -2
  44. package/fesm2022/{acorex-modules-document-management-details-view.component-v1VroVv-.mjs.map → acorex-modules-document-management-details-view.component-BKNvUhdl.mjs.map} +1 -1
  45. package/fesm2022/acorex-modules-document-management-document-send-to-review-popup.component-CtpLvPIr.mjs +116 -0
  46. package/fesm2022/acorex-modules-document-management-document-send-to-review-popup.component-CtpLvPIr.mjs.map +1 -0
  47. package/fesm2022/{acorex-modules-document-management-drive-choose.component-C5gJtH7_.mjs → acorex-modules-document-management-drive-choose.component-BOPjvKlN.mjs} +2 -2
  48. package/fesm2022/{acorex-modules-document-management-drive-choose.component-C5gJtH7_.mjs.map → acorex-modules-document-management-drive-choose.component-BOPjvKlN.mjs.map} +1 -1
  49. package/fesm2022/{acorex-modules-document-management-drive.component-D5OwpnAP.mjs → acorex-modules-document-management-drive.component-DutBXTtm.mjs} +2 -2
  50. package/fesm2022/{acorex-modules-document-management-drive.component-D5OwpnAP.mjs.map → acorex-modules-document-management-drive.component-DutBXTtm.mjs.map} +1 -1
  51. package/fesm2022/{acorex-modules-document-management-large-icons-view.component-DkHt-dTD.mjs → acorex-modules-document-management-large-icons-view.component-DX2_xsbq.mjs} +2 -2
  52. package/fesm2022/{acorex-modules-document-management-large-icons-view.component-DkHt-dTD.mjs.map → acorex-modules-document-management-large-icons-view.component-DX2_xsbq.mjs.map} +1 -1
  53. package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-D2nA00k3.mjs → acorex-modules-document-management-large-tiles-view.component-CshjCgG5.mjs} +2 -2
  54. package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-D2nA00k3.mjs.map → acorex-modules-document-management-large-tiles-view.component-CshjCgG5.mjs.map} +1 -1
  55. package/fesm2022/{acorex-modules-document-management-list-view.component-RaW67V7O.mjs → acorex-modules-document-management-list-view.component-DdLTVccZ.mjs} +2 -2
  56. package/fesm2022/{acorex-modules-document-management-list-view.component-RaW67V7O.mjs.map → acorex-modules-document-management-list-view.component-DdLTVccZ.mjs.map} +1 -1
  57. package/fesm2022/{acorex-modules-document-management-meta-choose-popup.component-BZu8EbTh.mjs → acorex-modules-document-management-meta-choose-popup.component-BomZu2bT.mjs} +2 -2
  58. package/fesm2022/acorex-modules-document-management-meta-choose-popup.component-BomZu2bT.mjs.map +1 -0
  59. package/fesm2022/{acorex-modules-document-management-permission-definition.provider-B6nu7fmX.mjs → acorex-modules-document-management-permission-definition.provider-_AXz3sdF.mjs} +2 -2
  60. package/fesm2022/{acorex-modules-document-management-permission-definition.provider-B6nu7fmX.mjs.map → acorex-modules-document-management-permission-definition.provider-_AXz3sdF.mjs.map} +1 -1
  61. package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component--6V1Zaoz.mjs → acorex-modules-document-management-rename-node-dialog.component-DZRAXwFy.mjs} +2 -2
  62. package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component--6V1Zaoz.mjs.map → acorex-modules-document-management-rename-node-dialog.component-DZRAXwFy.mjs.map} +1 -1
  63. package/fesm2022/{acorex-modules-document-management-small-icons-view.component-Cl1MKsX9.mjs → acorex-modules-document-management-small-icons-view.component-DG3AbQJO.mjs} +2 -2
  64. package/fesm2022/{acorex-modules-document-management-small-icons-view.component-Cl1MKsX9.mjs.map → acorex-modules-document-management-small-icons-view.component-DG3AbQJO.mjs.map} +1 -1
  65. package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-xoO1Loxt.mjs → acorex-modules-document-management-small-tiles-view.component-Cx9jczo-.mjs} +2 -2
  66. package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-xoO1Loxt.mjs.map → acorex-modules-document-management-small-tiles-view.component-Cx9jczo-.mjs.map} +1 -1
  67. package/fesm2022/acorex-modules-document-management.mjs +1 -1
  68. package/fesm2022/{acorex-modules-form-template-management-acorex-modules-form-template-management-CeQnu6WW.mjs → acorex-modules-form-template-management-acorex-modules-form-template-management-CLSHVjDE.mjs} +34 -12
  69. package/fesm2022/acorex-modules-form-template-management-acorex-modules-form-template-management-CLSHVjDE.mjs.map +1 -0
  70. package/fesm2022/{acorex-modules-form-template-management-category.entity-DmrE2Pfz.mjs → acorex-modules-form-template-management-category.entity-BBjVWSJ_.mjs} +2 -2
  71. package/fesm2022/{acorex-modules-form-template-management-category.entity-DmrE2Pfz.mjs.map → acorex-modules-form-template-management-category.entity-BBjVWSJ_.mjs.map} +1 -1
  72. package/fesm2022/{acorex-modules-form-template-management-permission-definition.provider-CfOa446m.mjs → acorex-modules-form-template-management-permission-definition.provider-I8BY9RVh.mjs} +2 -2
  73. package/fesm2022/{acorex-modules-form-template-management-permission-definition.provider-CfOa446m.mjs.map → acorex-modules-form-template-management-permission-definition.provider-I8BY9RVh.mjs.map} +1 -1
  74. package/fesm2022/{acorex-modules-form-template-management-settings.provider-hLlHnm-I.mjs → acorex-modules-form-template-management-settings.provider-B8ip0Ou_.mjs} +2 -2
  75. package/fesm2022/{acorex-modules-form-template-management-settings.provider-hLlHnm-I.mjs.map → acorex-modules-form-template-management-settings.provider-B8ip0Ou_.mjs.map} +1 -1
  76. package/fesm2022/{acorex-modules-form-template-management-template-picker.component-bxYZqmYR.mjs → acorex-modules-form-template-management-template-picker.component-BNM3RyDv.mjs} +2 -3
  77. package/fesm2022/acorex-modules-form-template-management-template-picker.component-BNM3RyDv.mjs.map +1 -0
  78. package/fesm2022/{acorex-modules-form-template-management-template-widget-edit.component-D_Ys5kRT.mjs → acorex-modules-form-template-management-template-widget-edit.component-DFfvdZqJ.mjs} +2 -2
  79. package/fesm2022/{acorex-modules-form-template-management-template-widget-edit.component-D_Ys5kRT.mjs.map → acorex-modules-form-template-management-template-widget-edit.component-DFfvdZqJ.mjs.map} +1 -1
  80. package/fesm2022/{acorex-modules-form-template-management-template.entity-CvlwS8TY.mjs → acorex-modules-form-template-management-template.entity-BCpgfVMz.mjs} +10 -14
  81. package/fesm2022/acorex-modules-form-template-management-template.entity-BCpgfVMz.mjs.map +1 -0
  82. package/fesm2022/{acorex-modules-form-template-management-viewer-popup.component-CE13nuke.mjs → acorex-modules-form-template-management-viewer-popup.component-DDfjwbrL.mjs} +2 -2
  83. package/fesm2022/{acorex-modules-form-template-management-viewer-popup.component-CE13nuke.mjs.map → acorex-modules-form-template-management-viewer-popup.component-DDfjwbrL.mjs.map} +1 -1
  84. package/fesm2022/acorex-modules-form-template-management.mjs +1 -1
  85. package/fesm2022/{acorex-modules-issue-management-acorex-modules-issue-management-CTFlKzqy.mjs → acorex-modules-help-desk-acorex-modules-help-desk-CAibWOZT.mjs} +77 -36
  86. package/fesm2022/acorex-modules-help-desk-acorex-modules-help-desk-CAibWOZT.mjs.map +1 -0
  87. package/fesm2022/acorex-modules-help-desk-capture-screen.component-BSBozesT.mjs +28 -0
  88. package/fesm2022/acorex-modules-help-desk-capture-screen.component-BSBozesT.mjs.map +1 -0
  89. package/fesm2022/acorex-modules-help-desk.mjs +2 -0
  90. package/fesm2022/acorex-modules-help-desk.mjs.map +1 -0
  91. package/fesm2022/acorex-modules-identifier-management.mjs +81 -39
  92. package/fesm2022/acorex-modules-identifier-management.mjs.map +1 -1
  93. package/fesm2022/acorex-modules-location-management.mjs +4 -3
  94. package/fesm2022/acorex-modules-location-management.mjs.map +1 -1
  95. package/fesm2022/acorex-modules-log-management.mjs +0 -1
  96. package/fesm2022/acorex-modules-log-management.mjs.map +1 -1
  97. package/fesm2022/acorex-modules-meeting-management-meeting-publish-popup.component-PcBFprq3.mjs +121 -0
  98. package/fesm2022/acorex-modules-meeting-management-meeting-publish-popup.component-PcBFprq3.mjs.map +1 -0
  99. package/fesm2022/acorex-modules-meeting-management.mjs +2899 -0
  100. package/fesm2022/acorex-modules-meeting-management.mjs.map +1 -0
  101. package/fesm2022/acorex-modules-notification-management-notification-page.component-TLxLpxzE.mjs +544 -0
  102. package/fesm2022/acorex-modules-notification-management-notification-page.component-TLxLpxzE.mjs.map +1 -0
  103. package/fesm2022/acorex-modules-notification-management.mjs +145 -126
  104. package/fesm2022/acorex-modules-notification-management.mjs.map +1 -1
  105. package/fesm2022/{acorex-modules-organization-management-employee.entity-CSY_U9Bl.mjs → acorex-modules-organization-management-employee.entity-CRc2YjNR.mjs} +114 -68
  106. package/fesm2022/acorex-modules-organization-management-employee.entity-CRc2YjNR.mjs.map +1 -0
  107. package/fesm2022/acorex-modules-organization-management.mjs +22 -1
  108. package/fesm2022/acorex-modules-organization-management.mjs.map +1 -1
  109. package/fesm2022/{acorex-modules-party-management-acorex-modules-party-management-B8X8tXFw.mjs → acorex-modules-party-management-acorex-modules-party-management-BUc-9XOG.mjs} +6 -6
  110. package/fesm2022/{acorex-modules-party-management-acorex-modules-party-management-B8X8tXFw.mjs.map → acorex-modules-party-management-acorex-modules-party-management-BUc-9XOG.mjs.map} +1 -1
  111. package/fesm2022/{acorex-modules-party-management-party-identifier-type.entity-b8aNBCpT.mjs → acorex-modules-party-management-party-identifier-type.entity-Bgq-y9TN.mjs} +2 -2
  112. package/fesm2022/{acorex-modules-party-management-party-identifier-type.entity-b8aNBCpT.mjs.map → acorex-modules-party-management-party-identifier-type.entity-Bgq-y9TN.mjs.map} +1 -1
  113. package/fesm2022/{acorex-modules-party-management-party-identifier.entity-B_5MSDF1.mjs → acorex-modules-party-management-party-identifier.entity-CP47qbc-.mjs} +12 -10
  114. package/fesm2022/acorex-modules-party-management-party-identifier.entity-CP47qbc-.mjs.map +1 -0
  115. package/fesm2022/{acorex-modules-party-management-party-relationship.entity-CLAAuCde.mjs → acorex-modules-party-management-party-relationship.entity-pGea5plN.mjs} +2 -2
  116. package/fesm2022/{acorex-modules-party-management-party-relationship.entity-CLAAuCde.mjs.map → acorex-modules-party-management-party-relationship.entity-pGea5plN.mjs.map} +1 -1
  117. package/fesm2022/{acorex-modules-party-management-party-role.entity-C5BeakjX.mjs → acorex-modules-party-management-party-role.entity-CDt7Rxu7.mjs} +7 -7
  118. package/fesm2022/acorex-modules-party-management-party-role.entity-CDt7Rxu7.mjs.map +1 -0
  119. package/fesm2022/{acorex-modules-party-management-party.entity-Blwg8o3o.mjs → acorex-modules-party-management-party.entity-DAvqOPic.mjs} +4 -4
  120. package/fesm2022/acorex-modules-party-management-party.entity-DAvqOPic.mjs.map +1 -0
  121. package/fesm2022/acorex-modules-party-management.mjs +1 -1
  122. package/fesm2022/{acorex-modules-platform-management-list-version.component-DTfLeVbH.mjs → acorex-modules-platform-management-list-version.component-kFe_wuWc.mjs} +3 -3
  123. package/fesm2022/{acorex-modules-platform-management-list-version.component-DTfLeVbH.mjs.map → acorex-modules-platform-management-list-version.component-kFe_wuWc.mjs.map} +1 -1
  124. package/fesm2022/acorex-modules-platform-management.mjs +12 -232
  125. package/fesm2022/acorex-modules-platform-management.mjs.map +1 -1
  126. package/fesm2022/acorex-modules-project-management.mjs +98 -97
  127. package/fesm2022/acorex-modules-project-management.mjs.map +1 -1
  128. package/fesm2022/{acorex-modules-report-management-report-create-root.component-CPR6H1R1.mjs → acorex-modules-report-management-report-create-root.component-L-7aG8op.mjs} +2 -2
  129. package/fesm2022/acorex-modules-report-management-report-create-root.component-L-7aG8op.mjs.map +1 -0
  130. package/fesm2022/acorex-modules-report-management.mjs +1 -1
  131. package/fesm2022/acorex-modules-security-management.mjs +5 -5
  132. package/fesm2022/acorex-modules-security-management.mjs.map +1 -1
  133. package/fesm2022/{acorex-modules-settings-management-setting-page.component-BWXHxXwS.mjs → acorex-modules-settings-management-setting-page.component-D-NKWNvS.mjs} +11 -1
  134. package/fesm2022/acorex-modules-settings-management-setting-page.component-D-NKWNvS.mjs.map +1 -0
  135. package/fesm2022/acorex-modules-settings-management.mjs +1 -1
  136. package/fesm2022/{acorex-modules-workflow-management-task-board.page-2UTqXn3s.mjs → acorex-modules-task-management-task-board.page-DbpqZaC7.mjs} +16 -11
  137. package/fesm2022/acorex-modules-task-management-task-board.page-DbpqZaC7.mjs.map +1 -0
  138. package/fesm2022/acorex-modules-task-management.mjs +3026 -2821
  139. package/fesm2022/acorex-modules-task-management.mjs.map +1 -1
  140. package/fesm2022/acorex-modules-workflow-management.mjs +39 -1
  141. package/fesm2022/acorex-modules-workflow-management.mjs.map +1 -1
  142. package/form-template-management/index.d.ts +3 -0
  143. package/help-desk/README.md +3 -0
  144. package/{issue-management → help-desk}/index.d.ts +12 -12
  145. package/identifier-management/index.d.ts +15 -16
  146. package/meeting-management/README.md +29 -0
  147. package/meeting-management/index.d.ts +248 -0
  148. package/notification-management/index.d.ts +6 -4
  149. package/package.json +24 -20
  150. package/platform-management/index.d.ts +1 -12
  151. package/task-management/index.d.ts +34 -2
  152. package/workflow-management/index.d.ts +4 -33
  153. package/fesm2022/acorex-modules-auth-password.component-NAY46d_2.mjs +0 -226
  154. package/fesm2022/acorex-modules-auth-password.component-NAY46d_2.mjs.map +0 -1
  155. package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-C4G6L94e.mjs.map +0 -1
  156. package/fesm2022/acorex-modules-document-management-meta-choose-popup.component-BZu8EbTh.mjs.map +0 -1
  157. package/fesm2022/acorex-modules-form-template-management-acorex-modules-form-template-management-CeQnu6WW.mjs.map +0 -1
  158. package/fesm2022/acorex-modules-form-template-management-template-picker.component-bxYZqmYR.mjs.map +0 -1
  159. package/fesm2022/acorex-modules-form-template-management-template.entity-CvlwS8TY.mjs.map +0 -1
  160. package/fesm2022/acorex-modules-issue-management-acorex-modules-issue-management-CTFlKzqy.mjs.map +0 -1
  161. package/fesm2022/acorex-modules-issue-management-capture-screen.component-DDvum8EG.mjs +0 -28
  162. package/fesm2022/acorex-modules-issue-management-capture-screen.component-DDvum8EG.mjs.map +0 -1
  163. package/fesm2022/acorex-modules-issue-management.mjs +0 -2
  164. package/fesm2022/acorex-modules-issue-management.mjs.map +0 -1
  165. package/fesm2022/acorex-modules-organization-management-employee.entity-CSY_U9Bl.mjs.map +0 -1
  166. package/fesm2022/acorex-modules-party-management-party-identifier.entity-B_5MSDF1.mjs.map +0 -1
  167. package/fesm2022/acorex-modules-party-management-party-role.entity-C5BeakjX.mjs.map +0 -1
  168. package/fesm2022/acorex-modules-party-management-party.entity-Blwg8o3o.mjs.map +0 -1
  169. package/fesm2022/acorex-modules-platform-management-list-terms.component-B1gl5xfT.mjs +0 -93
  170. package/fesm2022/acorex-modules-platform-management-list-terms.component-B1gl5xfT.mjs.map +0 -1
  171. package/fesm2022/acorex-modules-report-management-report-create-root.component-CPR6H1R1.mjs.map +0 -1
  172. package/fesm2022/acorex-modules-settings-management-setting-page.component-BWXHxXwS.mjs.map +0 -1
  173. package/fesm2022/acorex-modules-workflow-management-acorex-modules-workflow-management-BfE17ZXY.mjs +0 -244
  174. package/fesm2022/acorex-modules-workflow-management-acorex-modules-workflow-management-BfE17ZXY.mjs.map +0 -1
  175. package/fesm2022/acorex-modules-workflow-management-task-board.page-2UTqXn3s.mjs.map +0 -1
  176. package/issue-management/README.md +0 -3
@@ -1,6 +1,6 @@
1
1
  import { AXPSessionService, AXPAuthGuard, AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex/platform/auth';
2
- import { AXPSearchCommandProvider, createAllQueryView, 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
- import { AXPEntityService, AXMEntityCrudServiceImpl, AXP_ENTITY_CONFIG_TOKEN, AXP_ENTITY_DEFINITION_LOADER } from '@acorex/platform/layout/entity';
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
+ import { AXPEntityService, AXMEntityCrudServiceImpl, AXPEntityDefinitionRegistryService, ensureListActions, actionExists, AXP_ENTITY_CONFIG_TOKEN, AXP_ENTITY_DEFINITION_LOADER, AXP_ENTITY_STORAGE_MIDDLEWARE, AXP_ENTITY_ACTION_PLUGIN } from '@acorex/platform/layout/entity';
4
4
  import * as i0 from '@angular/core';
5
5
  import { inject, Injector, Injectable, NgModule, ChangeDetectionStrategy, Component, signal, viewChild, afterNextRender, computed, input, effect, ViewEncapsulation, output, HostBinding } from '@angular/core';
6
6
  import { firstValueFrom } from 'rxjs';
@@ -26,10 +26,9 @@ import { AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_LABEL_PROPERTY, AXP_READ
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
- import { AXPWorkflowAction, AXPWorkflowService, AXPWorkflowModule } from '@acorex/platform/workflow';
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 { AXDialogService } from '@acorex/components/dialog';
33
32
  import * as i3$1 from '@acorex/core/translation';
34
33
  import { AXTranslationService, AXTranslationModule } from '@acorex/core/translation';
35
34
  import * as i1$5 from '@acorex/platform/layout/components';
@@ -40,7 +39,8 @@ import * as i1$3 from '@acorex/components/button';
40
39
  import { AXButtonModule } from '@acorex/components/button';
41
40
  import { AXTextBoxModule } from '@acorex/components/text-box';
42
41
  import { AXCheckBoxModule } from '@acorex/components/check-box';
43
- import { AXPPlatformScope } from '@acorex/platform/core';
42
+ import { AXPPlatformScope, AXPDistributedEventListenerService } from '@acorex/platform/core';
43
+ import { AXDialogService } from '@acorex/components/dialog';
44
44
  import { AXFileService } from '@acorex/core/file';
45
45
  import { castArray, set as set$1, get as get$1, cloneDeep } from 'lodash-es';
46
46
  import { AXBasePageComponent } from '@acorex/components/page';
@@ -247,6 +247,7 @@ class AXMMenuProvider {
247
247
  data: {
248
248
  // requiredPermission: [AXMPermissionsKeys.DocumentManagement.Review.Management]
249
249
  },
250
+ badgeKey: 'review-badge',
250
251
  priority: 4,
251
252
  },
252
253
  {
@@ -358,21 +359,21 @@ async function documentFactory(injector) {
358
359
  // hidden: '{{context.eval("toggle")}}',
359
360
  actions: [],
360
361
  },
361
- {
362
- entity: `${RootConfig.module.name}.${RootConfig.entities.distribution.name}`,
363
- columns: ['version'],
364
- conditions: [
365
- {
366
- name: 'documentId',
367
- operator: {
368
- type: 'equal',
369
- },
370
- value: '{{context.eval("id")}}',
371
- },
372
- ],
373
- // hidden: '{{context.eval("toggle")}}',
374
- actions: [],
375
- },
362
+ // {
363
+ // entity: `${RootConfig.module.name}.${RootConfig.entities.distribution.name}`,
364
+ // columns: ['version'],
365
+ // conditions: [
366
+ // {
367
+ // name: 'documentId',
368
+ // operator: {
369
+ // type: 'equal',
370
+ // },
371
+ // value: '{{context.eval("id")}}',
372
+ // },
373
+ // ],
374
+ // // hidden: '{{context.eval("toggle")}}',
375
+ // actions: [],
376
+ // },
376
377
  ],
377
378
  groups: [
378
379
  {
@@ -434,7 +435,7 @@ async function documentFactory(injector) {
434
435
  },
435
436
  {
436
437
  name: 'metaData',
437
- title: 't("metaData", { scope: "common" })',
438
+ title: `t("metaData", { scope: "${i18n}" })`,
438
439
  groupId: 'section',
439
440
  schema: {
440
441
  dataType: 'string',
@@ -453,10 +454,11 @@ async function documentFactory(injector) {
453
454
  ],
454
455
  },
455
456
  {
456
- name: 'file',
457
+ name: 'fileData',
457
458
  title: `t("file", { scope: "${i18n}" })`,
458
459
  groupId: 'section',
459
460
  schema: {
461
+ // defaultValue: "{{ uploader.convert(context.eval('file'), context.eval('name'), context.eval('size')) }}",
460
462
  dataType: 'string',
461
463
  readonly: true,
462
464
  interface: {
@@ -487,6 +489,18 @@ async function documentFactory(injector) {
487
489
  },
488
490
  },
489
491
  },
492
+ {
493
+ name: 'size',
494
+ title: `t("size", { scope: "${i18n}" })`,
495
+ schema: {
496
+ dataType: 'number',
497
+ readonly: true,
498
+ interface: {
499
+ type: AXPWidgetsCatalog.number,
500
+ options: {},
501
+ },
502
+ },
503
+ },
490
504
  {
491
505
  name: 'status',
492
506
  title: `t("status", { scope: "${i18n}" })`,
@@ -499,6 +513,9 @@ async function documentFactory(injector) {
499
513
  inline: {
500
514
  enabled: true,
501
515
  },
516
+ advance: {
517
+ enabled: true,
518
+ },
502
519
  },
503
520
  },
504
521
  schema: {
@@ -512,8 +529,91 @@ async function documentFactory(injector) {
512
529
  },
513
530
  },
514
531
  },
532
+ {
533
+ name: 'documentReview',
534
+ title: `t("documentReview", { scope: "${i18n}" })`,
535
+ schema: {
536
+ dataType: 'string',
537
+ readonly: true,
538
+ interface: {
539
+ type: AXPWidgetsCatalog.text,
540
+ options: {
541
+ content: `{{ context.eval('documentReview') }}`,
542
+ },
543
+ },
544
+ },
545
+ },
546
+ {
547
+ name: 'documentReviewReviewer',
548
+ title: `t("documentReview", { scope: "${i18n}" })`,
549
+ schema: {
550
+ dataType: 'string',
551
+ readonly: true,
552
+ interface: {
553
+ type: AXPWidgetsCatalog.text,
554
+ options: {
555
+ content: `{{ context.eval('documentReviewReviewer') }}`,
556
+ },
557
+ },
558
+ },
559
+ },
560
+ {
561
+ name: 'documentReviewComment',
562
+ title: `t("documentReview", { scope: "${i18n}" })`,
563
+ schema: {
564
+ dataType: 'string',
565
+ readonly: true,
566
+ interface: {
567
+ type: AXPWidgetsCatalog.richText,
568
+ options: {
569
+ content: `{{ context.eval('documentReviewComment') }}`,
570
+ },
571
+ },
572
+ },
573
+ },
574
+ {
575
+ name: 'documentReviewStatus',
576
+ title: `t("documentReview", { scope: "${i18n}" })`,
577
+ schema: {
578
+ defaultValue: '{{context.eval("documentReview.reviewStatus") == "Approve"}}',
579
+ dataType: 'string',
580
+ readonly: true,
581
+ interface: {
582
+ type: AXPWidgetsCatalog.toggle,
583
+ options: {
584
+ content: `{{ context.eval('documentReviewComment') }}`,
585
+ },
586
+ },
587
+ },
588
+ },
589
+ ],
590
+ columns: [
591
+ { name: 'name' },
592
+ { name: 'status' },
593
+ { name: 'version' },
594
+ { name: 'fileData' },
595
+ {
596
+ name: 'documentReviewReviewer',
597
+ title: `t("reviewer", { scope: "${i18n}" })`,
598
+ options: {
599
+ dataPath: 'documentReview.reviewer.title',
600
+ },
601
+ },
602
+ {
603
+ name: 'documentReviewComment',
604
+ title: `t("comment", { scope: "${i18n}" })`,
605
+ options: {
606
+ dataPath: 'documentReview.comment',
607
+ },
608
+ },
609
+ {
610
+ name: 'documentReviewStatus',
611
+ title: `t("approve", { scope: "${i18n}" })`,
612
+ options: {
613
+ dataPath: 'documentReview.reviewStatus',
614
+ },
615
+ },
515
616
  ],
516
- columns: [{ name: 'name' }, { name: 'status' }, { name: 'version' }],
517
617
  commands: {
518
618
  create: {
519
619
  execute: async (data) => {
@@ -564,6 +664,7 @@ async function documentFactory(injector) {
564
664
  filters: allFilters,
565
665
  },
566
666
  });
667
+ console.log(x);
567
668
  return x;
568
669
  },
569
670
  type: AXPEntityQueryType.List,
@@ -609,7 +710,7 @@ async function documentFactory(injector) {
609
710
  },
610
711
  },
611
712
  {
612
- name: 'file',
713
+ name: 'fileData',
613
714
  layout: {
614
715
  positions: {
615
716
  lg: {
@@ -658,7 +759,7 @@ async function documentFactory(injector) {
658
759
  // },
659
760
  // },
660
761
  // {
661
- // name: 'file',
762
+ // name: 'fileData',
662
763
  // layout: {
663
764
  // positions: {
664
765
  // lg: {
@@ -699,13 +800,23 @@ async function documentFactory(injector) {
699
800
  layout: {
700
801
  positions: {
701
802
  lg: {
702
- colSpan: 12,
803
+ colSpan: 6,
703
804
  },
704
805
  },
705
806
  },
706
807
  },
707
808
  {
708
809
  name: 'metaData',
810
+ layout: {
811
+ positions: {
812
+ lg: {
813
+ colSpan: 6,
814
+ },
815
+ },
816
+ },
817
+ },
818
+ {
819
+ name: 'fileData',
709
820
  layout: {
710
821
  positions: {
711
822
  lg: {
@@ -770,14 +881,14 @@ async function documentFactory(injector) {
770
881
  decoration: {
771
882
  header: {
772
883
  title: '{{ context.eval("title") + " - version: " + context.eval("version") }}',
773
- }
774
- }
775
- }
884
+ },
885
+ },
886
+ },
776
887
  },
777
888
  priority: 'primary',
778
889
  type: 'review',
779
890
  scope: AXPEntityCommandScope.TypeLevel,
780
- hidden: '{{context.eval("status") == "PendingReview"}}',
891
+ disabled: '{{context.eval("status") != "PendingReview"}}',
781
892
  },
782
893
  {
783
894
  title: `t("distributed", { scope: "${i18n}" })`,
@@ -786,39 +897,112 @@ async function documentFactory(injector) {
786
897
  options: {
787
898
  id: '{{context.eval("id")}}',
788
899
  title: '{{context.eval("title")}}',
789
- }
900
+ },
790
901
  },
791
902
  priority: 'primary',
792
903
  type: 'review',
793
904
  scope: AXPEntityCommandScope.TypeLevel,
905
+ disabled: '{{context.eval("status") != "Reviewed" && context.eval("status") != "Completed"}}',
906
+ },
907
+ ],
908
+ },
909
+ list: {
910
+ actions: [
911
+ {
912
+ title: 't("detail", { scope: "common" })',
913
+ command: 'open-entity',
914
+ priority: 'secondary',
915
+ type: 'view',
916
+ default: true,
917
+ scope: AXPEntityCommandScope.Individual,
794
918
  },
795
919
  {
796
- title: `t("document-signature.sign.title", { scope: "${i18n}" })`,
920
+ title: `t("document-review.send-review.title", { scope: "${i18n}" })`,
921
+ icon: 'fa-light fa-shield-check',
797
922
  command: {
798
- name: 'document-signature',
923
+ name: 'send-to-review',
799
924
  options: {
800
925
  id: '{{context.eval("id")}}',
801
926
  title: '{{context.eval("title")}}',
802
- }
927
+ },
803
928
  },
804
929
  priority: 'secondary',
805
- type: 'sign',
806
- scope: AXPEntityCommandScope.TypeLevel,
807
- hidden: '{{context.eval("status") != "Distributed"}}',
930
+ type: 'sent',
931
+ scope: AXPEntityCommandScope.Individual,
932
+ disabled: '{{context.eval("status") != "Draft"}}',
808
933
  },
809
- ],
810
- },
811
- list: {
812
- actions: [
813
934
  {
814
- title: 't("detail", { scope: "common" })',
815
- command: 'open-entity',
935
+ title: `t("document-review.submit-review.title", { scope: "${i18n}" })`,
936
+ icon: 'fa-light fa-ballot-check',
937
+ command: {
938
+ name: 'submit-review',
939
+ options: {
940
+ id: '{{context.eval("reviewRecordId")}}',
941
+ // reviewedAt : '{{ variables.execute("now") }}',
942
+ decoration: {
943
+ header: {
944
+ title: '{{ context.eval("title") + " - version: " + context.eval("version") }}',
945
+ },
946
+ },
947
+ },
948
+ },
816
949
  priority: 'secondary',
817
- type: 'view',
950
+ type: 'review',
818
951
  scope: AXPEntityCommandScope.Individual,
952
+ disabled: '{{context.eval("status") != "PendingReview"}}',
953
+ },
954
+ {
955
+ title: `t("distributed", { scope: "${i18n}" })`,
956
+ icon: 'fa-light fa-chart-network',
957
+ command: {
958
+ name: 'distributed',
959
+ options: {
960
+ id: '{{context.eval("id")}}',
961
+ title: '{{context.eval("title")}}',
962
+ },
963
+ },
964
+ priority: 'secondary',
965
+ type: 'review',
966
+ scope: AXPEntityCommandScope.Individual,
967
+ disabled: '{{context.eval("status") != "Reviewed" && context.eval("status") != "Completed"}}',
819
968
  },
820
969
  ],
821
- views: [createAllQueryView({ sorts: [{ name: 'name', dir: 'asc' }] })],
970
+ views: [
971
+ createAllQueryView({ sorts: [{ name: 'name', dir: 'asc' }] }),
972
+ createQueryView('Draft', `t("draft", { scope: "${i18n}" })`, true, {
973
+ conditions: [
974
+ {
975
+ name: 'status',
976
+ operator: {
977
+ type: 'equal',
978
+ },
979
+ value: 'Draft',
980
+ },
981
+ ],
982
+ }),
983
+ createQueryView('PendingReview', `t("pending", { scope: "${i18n}" })`, true, {
984
+ conditions: [
985
+ {
986
+ name: 'status',
987
+ operator: {
988
+ type: 'equal',
989
+ },
990
+ value: 'PendingReview',
991
+ },
992
+ ],
993
+ }),
994
+ createQueryView('Reviewed', `t("reviewed", { scope: "${i18n}" })`, true, {
995
+ conditions: [
996
+ {
997
+ name: 'status',
998
+ operator: {
999
+ type: 'equal',
1000
+ },
1001
+ value: 'Reviewed',
1002
+ },
1003
+ ],
1004
+ }),
1005
+ ],
822
1006
  },
823
1007
  },
824
1008
  },
@@ -2747,19 +2931,6 @@ async function reviewFactory(injector) {
2747
2931
  name: 'reviewerId',
2748
2932
  title: `t("reviewer", { scope: "${i18n}" })`,
2749
2933
  groupId: 'section',
2750
- options: {
2751
- sort: {
2752
- enabled: true,
2753
- },
2754
- filter: {
2755
- advance: {
2756
- enabled: true,
2757
- },
2758
- inline: {
2759
- enabled: true,
2760
- },
2761
- },
2762
- },
2763
2934
  schema: {
2764
2935
  dataType: 'string',
2765
2936
  defaultValue: "{{ session.currentUser().id }}",
@@ -2768,11 +2939,11 @@ async function reviewFactory(injector) {
2768
2939
  options: {
2769
2940
  entity: 'SecurityManagement.users',
2770
2941
  multiple: false,
2771
- textField: 'name',
2942
+ textField: 'username',
2772
2943
  valueField: 'id',
2773
2944
  expose: [
2774
2945
  { source: 'id', target: 'reviewer.id' },
2775
- { source: 'name', target: 'reviewer.name' },
2946
+ { source: 'username', target: 'reviewer.username' },
2776
2947
  ],
2777
2948
  },
2778
2949
  },
@@ -2908,7 +3079,7 @@ async function reviewFactory(injector) {
2908
3079
  ],
2909
3080
  columns: [
2910
3081
  { name: 'documentId', options: { dataPath: 'document.name' } },
2911
- { name: 'reviewerId', options: { dataPath: 'reviewerId.displayName' } },
3082
+ { name: 'reviewerId', options: { dataPath: 'reviewer.title' } },
2912
3083
  { name: 'status' },
2913
3084
  { name: 'comment' },
2914
3085
  { name: 'reviewedAt' },
@@ -2922,10 +3093,12 @@ async function reviewFactory(injector) {
2922
3093
  if (!data.reviewedAt) {
2923
3094
  data.reviewedAt = new Date();
2924
3095
  }
3096
+ //TODO for test
3097
+ data.reviewStatus = 'Approved';
2925
3098
  // Create the review record
2926
3099
  const res = await dataService.insertOne(data);
2927
3100
  // Update document status based on review status
2928
- await updateDocumentStatus(data.documentId, data.status, injector);
3101
+ await updateDocumentStatus(data.documentId, data.reviewStatus, injector);
2929
3102
  return { id: res };
2930
3103
  },
2931
3104
  },
@@ -2938,10 +3111,12 @@ async function reviewFactory(injector) {
2938
3111
  execute: async (data) => {
2939
3112
  // Update reviewedAt to current date
2940
3113
  data.reviewedAt = new Date();
3114
+ //TODO for test
3115
+ data.reviewStatus = 'Approved';
2941
3116
  // Update the review record
2942
3117
  const result = await dataService.updateOne(data.id, data);
2943
3118
  // Update document status based on review status
2944
- await updateDocumentStatus(data.documentId, data.status, injector);
3119
+ await updateDocumentStatus(data.documentId, data.reviewStatus, injector);
2945
3120
  return result;
2946
3121
  },
2947
3122
  },
@@ -2959,7 +3134,9 @@ async function reviewFactory(injector) {
2959
3134
  },
2960
3135
  list: {
2961
3136
  execute: async (e) => {
2962
- return await dataService.query({ skip: e.skip, take: e.take, filter: e.filter });
3137
+ const a = await dataService.query({ skip: e.skip, take: e.take, filter: e.filter });
3138
+ console.log(a);
3139
+ return a;
2963
3140
  },
2964
3141
  type: AXPEntityQueryType.List,
2965
3142
  },
@@ -3191,23 +3368,7 @@ async function reviewFactory(injector) {
3191
3368
  actions: [],
3192
3369
  },
3193
3370
  list: {
3194
- actions: [
3195
- {
3196
- title: 't("detail", { scope: "common" })',
3197
- command: 'open-entity',
3198
- priority: 'secondary',
3199
- type: 'view',
3200
- scope: AXPEntityCommandScope.Individual,
3201
- default: true,
3202
- },
3203
- {
3204
- title: 't("detail", { scope: "common" })',
3205
- command: 'open-entity',
3206
- priority: 'secondary',
3207
- type: 'view',
3208
- scope: AXPEntityCommandScope.Individual,
3209
- },
3210
- ],
3371
+ actions: [],
3211
3372
  views: [
3212
3373
  createAllQueryView({
3213
3374
  sorts: [{ name: 'reviewedAt', dir: 'desc' }],
@@ -4687,20 +4848,25 @@ const AXMUploadWorkflow = {
4687
4848
  class AXMSendToReviewConfirmAction extends AXPWorkflowAction {
4688
4849
  constructor() {
4689
4850
  super(...arguments);
4690
- this.dialogService = inject(AXDialogService);
4851
+ this.popupService = inject(AXPopupService);
4691
4852
  this.translationService = inject(AXTranslationService);
4692
4853
  }
4693
- //private documentService = inject(AXMDocumentService);
4694
4854
  async execute(context) {
4695
4855
  const documentId = context.getVariable('options.id');
4696
4856
  const documentTitle = context.getVariable('options.title');
4697
- const dialogResult = await this.dialogService.confirm(await this.translationService.translateAsync('document-review.confirm-send.title', {
4698
- scope: 'document-management',
4699
- }), await this.translationService.translateAsync('document-review.confirm-send.message', {
4700
- scope: 'document-management',
4701
- params: { title: documentTitle },
4702
- }), 'primary', 'horizontal', false, 'cancel');
4703
- context.setOutput('confirmed', dialogResult.result);
4857
+ const comp = await import('./acorex-modules-document-management-document-send-to-review-popup.component-CtpLvPIr.mjs').then((m) => m.AXMDocumentSendToReviewPopupComponent);
4858
+ const result = await this.popupService.open(comp, {
4859
+ title: await this.translationService.translateAsync('document-review.confirm-send.title', {
4860
+ scope: 'document-management',
4861
+ params: { title: documentTitle },
4862
+ }),
4863
+ data: {
4864
+ documentId: documentId,
4865
+ documentTitle: documentTitle,
4866
+ },
4867
+ });
4868
+ context.setOutput('confirmed', result.data.confirmed);
4869
+ context.setVariable('assignTo', result.data.assignedTo);
4704
4870
  }
4705
4871
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMSendToReviewConfirmAction, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
4706
4872
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMSendToReviewConfirmAction }); }
@@ -4733,6 +4899,7 @@ class AXMUpdateDocumentStatusAction extends AXPWorkflowAction {
4733
4899
  name: document.updatedBy ?? '',
4734
4900
  title: document.updatedBy ?? '',
4735
4901
  },
4902
+ reviewerId: context.getVariable('assignTo'),
4736
4903
  });
4737
4904
  await this.documentService.updateOne(documentId, {
4738
4905
  status: 'PendingReview',
@@ -4806,6 +4973,16 @@ const AXMSendToReviewWorkflow = {
4806
4973
  },
4807
4974
  },
4808
4975
  };
4976
+ class AXMChangeEntityAction extends AXPWorkflowAction {
4977
+ async execute(context) {
4978
+ context.setVariable('entity', `${RootConfig.module.name}.${RootConfig.entities.document.name}`);
4979
+ }
4980
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMChangeEntityAction, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
4981
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMChangeEntityAction }); }
4982
+ }
4983
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMChangeEntityAction, decorators: [{
4984
+ type: Injectable
4985
+ }] });
4809
4986
  /**
4810
4987
  * Workflow for submitting review
4811
4988
  */
@@ -4823,6 +5000,26 @@ const AXMSubmitReviewWorkflow = {
4823
5000
  },
4824
5001
  },
4825
5002
  },
5003
+ nextSteps: [
5004
+ {
5005
+ conditions: [{ type: 'SINGLE', expression: 'context.getOutput("result") == true' }],
5006
+ nextStepId: 'change-entity',
5007
+ },
5008
+ {
5009
+ conditions: [{ type: 'SINGLE', expression: 'context.getOutput("result") == false' }],
5010
+ nextStepId: 'show-error',
5011
+ },
5012
+ ],
5013
+ },
5014
+ 'change-entity': {
5015
+ id: 'change-entity',
5016
+ action: 'AXMChangeEntityAction',
5017
+ nextSteps: [
5018
+ {
5019
+ nextStepId: 'reload-entity',
5020
+ conditions: [],
5021
+ },
5022
+ ],
4826
5023
  },
4827
5024
  'reload-entity': {
4828
5025
  id: 'reload-entity',
@@ -4882,7 +5079,6 @@ class AXMCreateDistributionRecordsAction extends AXPWorkflowAction {
4882
5079
  try {
4883
5080
  const documentId = context.getVariable('options.id');
4884
5081
  const assignedTo = context.getOutput('assignedTo');
4885
- debugger;
4886
5082
  const document = await this.documentService.getOne(documentId);
4887
5083
  this.distributionService.insertOne({
4888
5084
  documentId,
@@ -5103,22 +5299,43 @@ const AXMDocumentSignatureWorkflow = {
5103
5299
  },
5104
5300
  };
5105
5301
 
5106
- class AXMTaskBadgeProviderSample1 {
5302
+ class AXMDocumentReviewBadgeProvider {
5107
5303
  constructor() {
5304
+ this.documentReviewService = inject(AXMDocumentService);
5108
5305
  this.count = signal(0, ...(ngDevMode ? [{ debugName: "count" }] : []));
5109
- this.key = 'badge-1';
5110
- this.count.set(10);
5306
+ this.key = 'review-badge';
5307
+ this.getCount();
5111
5308
  }
5112
- }
5113
- class AXMTaskBadgeProviderSample2 {
5114
- constructor() {
5115
- this.count = signal(5, ...(ngDevMode ? [{ debugName: "count" }] : []));
5116
- this.key = 'badge-2';
5117
- setInterval(() => {
5118
- this.count.update(c => c + 1);
5119
- }, 30000);
5309
+ async getCount() {
5310
+ // Base filter for requiresReview
5311
+ const baseFilters = [
5312
+ {
5313
+ field: 'documentType.requiresReview',
5314
+ operator: { type: 'equal' },
5315
+ value: true,
5316
+ },
5317
+ {
5318
+ field: 'status',
5319
+ operator: { type: 'equal' },
5320
+ value: 'PendingReview',
5321
+ },
5322
+ ];
5323
+ const x = await this.documentReviewService.query({
5324
+ skip: 0,
5325
+ take: 1,
5326
+ filter: {
5327
+ logic: 'and',
5328
+ filters: baseFilters,
5329
+ },
5330
+ });
5331
+ this.count.set(x.total);
5120
5332
  }
5333
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMDocumentReviewBadgeProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
5334
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMDocumentReviewBadgeProvider }); }
5121
5335
  }
5336
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMDocumentReviewBadgeProvider, decorators: [{
5337
+ type: Injectable
5338
+ }], ctorParameters: () => [] });
5122
5339
 
5123
5340
  //#region ---- Imports ----
5124
5341
  //#endregion
@@ -5556,7 +5773,7 @@ class AXMDocumentManagerService {
5556
5773
  * Moves a node to another location
5557
5774
  */
5558
5775
  async moveTo(options) {
5559
- const comp = (await import('./acorex-modules-document-management-drive-choose.component-C5gJtH7_.mjs')).AXMDocumentDriveChooseComponent;
5776
+ const comp = (await import('./acorex-modules-document-management-drive-choose.component-BOPjvKlN.mjs')).AXMDocumentDriveChooseComponent;
5560
5777
  const popup = await this.popupService.open(comp, {
5561
5778
  title: `Choose ${options.browseMode == 'file' ? 'File' : 'Folder'}`,
5562
5779
  data: {
@@ -5589,7 +5806,7 @@ class AXMDocumentManagerService {
5589
5806
  * Copies a node to another location
5590
5807
  */
5591
5808
  async copyTo(options) {
5592
- const comp = (await import('./acorex-modules-document-management-drive-choose.component-C5gJtH7_.mjs')).AXMDocumentDriveChooseComponent;
5809
+ const comp = (await import('./acorex-modules-document-management-drive-choose.component-BOPjvKlN.mjs')).AXMDocumentDriveChooseComponent;
5593
5810
  const popup = await this.popupService.open(comp, {
5594
5811
  title: `Choose ${options.browseMode == 'file' ? 'File' : 'Folder'}`,
5595
5812
  data: {
@@ -5736,16 +5953,30 @@ class AXMDocumentManagerService {
5736
5953
  status: docType.requiresReview ? (isReviewSent ? 'PendingReview' : 'Draft') : 'Completed',
5737
5954
  });
5738
5955
  if (isReviewSent) {
5739
- const reviewRecordID = await this.reviewService.insertOne({
5740
- documentId: docId,
5741
- // document : docType,
5742
- version: 1,
5743
- reviewStatus: 'Pending',
5744
- modifiedBy: this.sessionService.user,
5745
- });
5746
- await this.documentService.updateOne(docId, {
5747
- reviewRecordId: reviewRecordID,
5956
+ const comp = await import('./acorex-modules-document-management-document-send-to-review-popup.component-CtpLvPIr.mjs').then((m) => m.AXMDocumentSendToReviewPopupComponent);
5957
+ const result = await this.popupService.open(comp, {
5958
+ title: await this.translate.translateAsync('document-review.confirm-send.title', {
5959
+ scope: 'document-management',
5960
+ params: { title: listItem.name },
5961
+ }),
5962
+ data: {
5963
+ documentId: docId,
5964
+ documentTitle: listItem.name,
5965
+ },
5748
5966
  });
5967
+ if (result.data != null && result.data.confirmed) {
5968
+ const reviewRecordID = await this.reviewService.insertOne({
5969
+ documentId: docId,
5970
+ // document : docType,
5971
+ version: 1,
5972
+ reviewStatus: 'Pending',
5973
+ modifiedBy: this.sessionService.user,
5974
+ reviewerId: result.data.assignedTo,
5975
+ });
5976
+ await this.documentService.updateOne(docId, {
5977
+ reviewRecordId: reviewRecordID,
5978
+ });
5979
+ }
5749
5980
  }
5750
5981
  }
5751
5982
  return true;
@@ -5808,12 +6039,26 @@ class AXMDocumentManagerService {
5808
6039
  const newVersion = docType.enableVersioning ? (editableFile.version ?? 1) + 1 : undefined;
5809
6040
  let reviewRecordID = undefined;
5810
6041
  if (isReviewSent) {
5811
- reviewRecordID = await this.reviewService.insertOne({
5812
- documentId: node.id,
5813
- version: newVersion ?? 0,
5814
- reviewStatus: 'Pending',
5815
- modifiedBy: this.sessionService.user,
6042
+ const comp = await import('./acorex-modules-document-management-document-send-to-review-popup.component-CtpLvPIr.mjs').then((m) => m.AXMDocumentSendToReviewPopupComponent);
6043
+ const result = await this.popupService.open(comp, {
6044
+ title: await this.translate.translateAsync('document-review.confirm-send.title', {
6045
+ scope: 'document-management',
6046
+ params: { title: editableFile.name },
6047
+ }),
6048
+ data: {
6049
+ documentId: editableFile.id,
6050
+ documentTitle: editableFile.name,
6051
+ },
5816
6052
  });
6053
+ if (result.data != null && result.data.confirmed) {
6054
+ reviewRecordID = await this.reviewService.insertOne({
6055
+ documentId: node.id,
6056
+ version: newVersion ?? 0,
6057
+ reviewStatus: 'Pending',
6058
+ modifiedBy: this.sessionService.user,
6059
+ reviewerId: result.data.assignedTo,
6060
+ });
6061
+ }
5817
6062
  }
5818
6063
  await this.documentService.updateOne(node.id, {
5819
6064
  fileId: newFileId ?? editableFile.fileId,
@@ -5907,7 +6152,7 @@ class AXMDocumentManagerService {
5907
6152
  * Shows folder edit dialog
5908
6153
  */
5909
6154
  async showFolderEditDialog(node) {
5910
- const comp = (await import('./acorex-modules-document-management-create-folder-dialog.component-BCs4aZKn.mjs'))
6155
+ const comp = (await import('./acorex-modules-document-management-create-folder-dialog.component-DPFIPNE_.mjs'))
5911
6156
  .AXMCreateFolderDialog;
5912
6157
  const popup = await this.popupService.open(comp, {
5913
6158
  title: await this.translate.translateAsync('@document-management:actions.update-folder'),
@@ -5921,7 +6166,7 @@ class AXMDocumentManagerService {
5921
6166
  * Shows create folder dialog
5922
6167
  */
5923
6168
  async showCreateFolderDialog(parentId) {
5924
- const comp = (await import('./acorex-modules-document-management-create-folder-dialog.component-BCs4aZKn.mjs'))
6169
+ const comp = (await import('./acorex-modules-document-management-create-folder-dialog.component-DPFIPNE_.mjs'))
5925
6170
  .AXMCreateFolderDialog;
5926
6171
  const popup = await this.popupService.open(comp, {
5927
6172
  title: await this.translate.translateAsync('@document-management:actions.create-folder'),
@@ -5935,7 +6180,7 @@ class AXMDocumentManagerService {
5935
6180
  * Shows rename popup for a node
5936
6181
  */
5937
6182
  async showRenamePopup(node) {
5938
- const comp = (await import('./acorex-modules-document-management-rename-node-dialog.component--6V1Zaoz.mjs'))
6183
+ const comp = (await import('./acorex-modules-document-management-rename-node-dialog.component-DZRAXwFy.mjs'))
5939
6184
  .AXMRenameNodeDialog;
5940
6185
  const popup = await this.popupService.open(comp, {
5941
6186
  title: 't("actions.rename")',
@@ -5961,7 +6206,7 @@ class AXMDocumentManagerService {
5961
6206
  * Shows choose file dialog
5962
6207
  */
5963
6208
  async showChooseFileDialog(scope) {
5964
- const comp = (await import('./acorex-modules-document-management-drive-choose.component-C5gJtH7_.mjs')).AXMDocumentDriveChooseComponent;
6209
+ const comp = (await import('./acorex-modules-document-management-drive-choose.component-BOPjvKlN.mjs')).AXMDocumentDriveChooseComponent;
5965
6210
  const result = await this.popupService.open(comp, {
5966
6211
  title: await this.translate.translateAsync('@document-management:actions.choose-from-drive'),
5967
6212
  data: {
@@ -7218,13 +7463,13 @@ class AXMDocumentExplorerComponent {
7218
7463
  this.showContextMenu = input(true, ...(ngDevMode ? [{ debugName: "showContextMenu" }] : []));
7219
7464
  this.view = signal(null, ...(ngDevMode ? [{ debugName: "view" }] : []));
7220
7465
  this.viewMap = {
7221
- list: async () => (await import('./acorex-modules-document-management-list-view.component-RaW67V7O.mjs')).AXMDocumentExplorerListViewComponent,
7222
- 'small-tiles': async () => (await import('./acorex-modules-document-management-small-tiles-view.component-xoO1Loxt.mjs')).AXMDocumentExplorerSmallTilesViewComponent,
7223
- 'large-tiles': async () => (await import('./acorex-modules-document-management-large-tiles-view.component-D2nA00k3.mjs')).AXMDocumentExplorerLargeTilesViewComponent,
7224
- details: async () => (await import('./acorex-modules-document-management-details-view.component-v1VroVv-.mjs')).AXMDocumentExplorerDetailsViewComponent,
7225
- 'large-icons': async () => (await import('./acorex-modules-document-management-large-icons-view.component-DkHt-dTD.mjs')).AXMDocumentExplorerLargeIconsViewComponent,
7226
- 'small-icons': async () => (await import('./acorex-modules-document-management-small-icons-view.component-Cl1MKsX9.mjs')).AXMDocumentExplorerSmallIconsViewComponent,
7227
- 'attachment': async () => (await import('./acorex-modules-document-management-attachment-widget.component-CbDcYxEZ.mjs')).AXMDocumentExplorerAttachmentComponent,
7466
+ list: async () => (await import('./acorex-modules-document-management-list-view.component-DdLTVccZ.mjs')).AXMDocumentExplorerListViewComponent,
7467
+ 'small-tiles': async () => (await import('./acorex-modules-document-management-small-tiles-view.component-Cx9jczo-.mjs')).AXMDocumentExplorerSmallTilesViewComponent,
7468
+ 'large-tiles': async () => (await import('./acorex-modules-document-management-large-tiles-view.component-CshjCgG5.mjs')).AXMDocumentExplorerLargeTilesViewComponent,
7469
+ details: async () => (await import('./acorex-modules-document-management-details-view.component-BKNvUhdl.mjs')).AXMDocumentExplorerDetailsViewComponent,
7470
+ 'large-icons': async () => (await import('./acorex-modules-document-management-large-icons-view.component-DX2_xsbq.mjs')).AXMDocumentExplorerLargeIconsViewComponent,
7471
+ 'small-icons': async () => (await import('./acorex-modules-document-management-small-icons-view.component-DG3AbQJO.mjs')).AXMDocumentExplorerSmallIconsViewComponent,
7472
+ 'attachment': async () => (await import('./acorex-modules-document-management-attachment-widget.component-CcWvTWv0.mjs')).AXMDocumentExplorerAttachmentComponent,
7228
7473
  };
7229
7474
  this.#effect = effect(() => {
7230
7475
  if (this.vm.loadingFolderId() == null) {
@@ -7696,7 +7941,7 @@ class AXPMetaSelectorWidgetEditComponent extends AXPValueWidgetComponent {
7696
7941
  * Handle adding new metadata items
7697
7942
  */
7698
7943
  async handleAddClick() {
7699
- const comp = (await import('./acorex-modules-document-management-meta-choose-popup.component-BZu8EbTh.mjs')).AXPMetaChoosePopupComponent;
7944
+ const comp = (await import('./acorex-modules-document-management-meta-choose-popup.component-BomZu2bT.mjs')).AXPMetaChoosePopupComponent;
7700
7945
  const result = await this.popupService.open(comp, {
7701
7946
  title: 'Meta Selector',
7702
7947
  data: {
@@ -7724,7 +7969,7 @@ class AXPMetaSelectorWidgetEditComponent extends AXPValueWidgetComponent {
7724
7969
  * Handle editing a metadata item
7725
7970
  */
7726
7971
  async handleMetaEdit(item) {
7727
- const comp = (await import('./acorex-modules-document-management-meta-choose-popup.component-BZu8EbTh.mjs')).AXPMetaChoosePopupComponent;
7972
+ const comp = (await import('./acorex-modules-document-management-meta-choose-popup.component-BomZu2bT.mjs')).AXPMetaChoosePopupComponent;
7728
7973
  const result = await this.popupService.open(comp, {
7729
7974
  title: 'Edit Meta Selector',
7730
7975
  data: {
@@ -7888,6 +8133,478 @@ const AXPMetaSelectorWidget = {
7888
8133
  },
7889
8134
  };
7890
8135
 
8136
+ class AXMDocumentReviewTaskProvider extends AXPWorkflowTaskProvider {
8137
+ constructor() {
8138
+ super(...arguments);
8139
+ this.documentReviewService = inject(AXMReviewService);
8140
+ this.workflowService = inject(AXPWorkflowService);
8141
+ this.eventService = inject(AXPDistributedEventListenerService);
8142
+ }
8143
+ get name() {
8144
+ return 'document-review';
8145
+ }
8146
+ get title() {
8147
+ return 'Document Review';
8148
+ }
8149
+ get icon() {
8150
+ return 'fa-light fa-file-pen';
8151
+ }
8152
+ /**
8153
+ * Retrieves a list of tasks, optionally filtered by a date range.
8154
+ * If a date range is provided in the options, only tasks that overlap with that range will be returned.
8155
+ * @param options Filtering options, primarily containing a date range.
8156
+ * @returns An array of filtered tasks.
8157
+ */
8158
+ async getTasks(options) {
8159
+ const baseFilter = {
8160
+ logic: 'and',
8161
+ filters: [],
8162
+ };
8163
+ if (options?.range?.from) {
8164
+ baseFilter.filters?.push({
8165
+ field: 'reviewDate',
8166
+ operator: { type: 'gte' },
8167
+ value: options.range.from,
8168
+ });
8169
+ }
8170
+ if (options?.range?.end) {
8171
+ baseFilter.filters?.push({
8172
+ field: 'distributionDate',
8173
+ operator: { type: 'lte' },
8174
+ value: options.range.end,
8175
+ });
8176
+ }
8177
+ const filteredList = await this.documentReviewService.query({
8178
+ skip: options?.skip ?? 0,
8179
+ take: options?.take ?? 10,
8180
+ filter: baseFilter,
8181
+ });
8182
+ const tasks = {
8183
+ items: filteredList.items.map((item) => ({
8184
+ id: item.id,
8185
+ title: item.document?.title ?? '' + ' - ' + item.version,
8186
+ description: item.document?.description ?? '',
8187
+ startDate: item.createdAt ?? new Date(),
8188
+ endDate: item.createdAt
8189
+ ? new Date(new Date(item.createdAt).getTime() + 24 * 60 * 60 * 1000)
8190
+ : new Date(new Date().getTime() + 24 * 60 * 60 * 1000),
8191
+ assignee: {
8192
+ id: item.reviewerId ?? '',
8193
+ type: 'user',
8194
+ fullName: item.reviewer?.title ?? '',
8195
+ },
8196
+ index: 3,
8197
+ status: {
8198
+ id: item.reviewStatus,
8199
+ title: item.reviewStatus,
8200
+ },
8201
+ priority: 'high',
8202
+ reporter: {
8203
+ id: item.createdBy ?? '',
8204
+ type: 'user',
8205
+ fullName: item.createdBy ?? '',
8206
+ },
8207
+ })),
8208
+ total: filteredList.total,
8209
+ };
8210
+ return tasks;
8211
+ }
8212
+ /**
8213
+ * Updates one or more tasks in the provider's list.
8214
+ * This method finds each task by its ID and applies the new properties from the input.
8215
+ * It also automatically recalculates the `allDay` flag based on the task's duration.
8216
+ * @param tasksToUpdate An array of task objects to update. Each object must have an `id`.
8217
+ * @returns An array of the tasks that were successfully updated.
8218
+ */
8219
+ async updateTasks(tasksToUpdate) {
8220
+ console.log(tasksToUpdate);
8221
+ return tasksToUpdate;
8222
+ }
8223
+ async executeCommand(command) {
8224
+ if (command.name === 'submitReview') {
8225
+ console.log(command.options);
8226
+ const workflow = await this.workflowService.execute('submit-review', {
8227
+ options: command.options,
8228
+ });
8229
+ this.eventService.dispatch('task-board.refresh');
8230
+ }
8231
+ return { success: true };
8232
+ }
8233
+ async getActions(task) {
8234
+ const review = {
8235
+ name: 'submitReview',
8236
+ title: 'Submit Review',
8237
+ icon: 'fa-light fa-pen-to-square',
8238
+ command: { name: 'submitReview', options: { id: task?.id ?? '' } },
8239
+ };
8240
+ const list = [];
8241
+ if (task?.status?.id === 'Pending') {
8242
+ list.push(review);
8243
+ }
8244
+ return list;
8245
+ }
8246
+ async getExtraFields() {
8247
+ return [];
8248
+ }
8249
+ async getStatuses() {
8250
+ return [
8251
+ { index: 0, key: 'Pending', title: 'Pending' },
8252
+ { index: 1, key: 'Approved', title: 'Approved' },
8253
+ { index: 2, key: 'Rejected', title: 'Rejected' },
8254
+ ];
8255
+ }
8256
+ }
8257
+
8258
+ class AXMDocumentDistributionTaskProvider extends AXPWorkflowTaskProvider {
8259
+ constructor() {
8260
+ super(...arguments);
8261
+ this.documentService = inject(AXMDistributionService);
8262
+ }
8263
+ get name() {
8264
+ return 'document-distribution';
8265
+ }
8266
+ get title() {
8267
+ return 'Document Distribution';
8268
+ }
8269
+ get icon() {
8270
+ return 'fa-light fa-file-pen';
8271
+ }
8272
+ /**
8273
+ * Retrieves a list of tasks, optionally filtered by a date range.
8274
+ * If a date range is provided in the options, only tasks that overlap with that range will be returned.
8275
+ * @param options Filtering options, primarily containing a date range.
8276
+ * @returns An array of filtered tasks.
8277
+ */
8278
+ async getTasks(options) {
8279
+ const baseFilter = {
8280
+ logic: 'and',
8281
+ filters: [],
8282
+ };
8283
+ if (options?.range?.from) {
8284
+ baseFilter.filters?.push({
8285
+ field: 'distributionDate',
8286
+ operator: { type: 'gte' },
8287
+ value: options.range.from,
8288
+ });
8289
+ }
8290
+ if (options?.range?.end) {
8291
+ baseFilter.filters?.push({
8292
+ field: 'distributionDate',
8293
+ operator: { type: 'lte' },
8294
+ value: options.range.end,
8295
+ });
8296
+ }
8297
+ const filteredList = await this.documentService.query({
8298
+ skip: options?.skip ?? 0,
8299
+ take: options?.take ?? 10,
8300
+ filter: baseFilter,
8301
+ });
8302
+ return {
8303
+ items: filteredList.items.map((item) => ({
8304
+ id: item.id,
8305
+ title: item.document?.title ?? '' + ' - ' + item.version,
8306
+ startDate: item.createdAt ?? new Date(),
8307
+ endDate: item.dueDate ?? new Date(),
8308
+ index: 0,
8309
+ status: {
8310
+ id: 0,
8311
+ title: 'Pending',
8312
+ },
8313
+ priority: 'high',
8314
+ reporter: {
8315
+ id: item.createdBy ?? '',
8316
+ type: 'user',
8317
+ },
8318
+ })),
8319
+ total: filteredList.total,
8320
+ };
8321
+ }
8322
+ /**
8323
+ * Updates one or more tasks in the provider's list.
8324
+ * This method finds each task by its ID and applies the new properties from the input.
8325
+ * It also automatically recalculates the `allDay` flag based on the task's duration.
8326
+ * @param tasksToUpdate An array of task objects to update. Each object must have an `id`.
8327
+ * @returns An array of the tasks that were successfully updated.
8328
+ */
8329
+ async updateTasks(tasksToUpdate) {
8330
+ console.log(tasksToUpdate);
8331
+ return tasksToUpdate;
8332
+ }
8333
+ async executeCommand(command) {
8334
+ if (command.name === 'edit') {
8335
+ console.log(command.options);
8336
+ }
8337
+ return { success: true };
8338
+ }
8339
+ async getActions(task) {
8340
+ const edit = {
8341
+ name: 'edit',
8342
+ title: 'Edit',
8343
+ icon: 'fa-light fa-pencil',
8344
+ command: { name: 'edit', options: { taskId: 4 } },
8345
+ };
8346
+ return [edit];
8347
+ }
8348
+ async getExtraFields() {
8349
+ return [];
8350
+ }
8351
+ async getStatuses() {
8352
+ return [
8353
+ { index: 0, key: 'pending', title: 'Pending' },
8354
+ { index: 1, key: 'in-progress', title: 'In Progress' },
8355
+ { index: 2, key: 'done', title: 'Done' },
8356
+ { index: 3, key: 'canceled', title: 'Canceled' },
8357
+ ];
8358
+ }
8359
+ }
8360
+
8361
+ /**
8362
+ * Handles file list fields configured via entity.extensions.attachments.
8363
+ * Works for create and update: uploads pending blob entries after persistence and writes final references.
8364
+ */
8365
+ const attachmentsUploadMiddleware = {
8366
+ target: { ops: ['create', 'update'], order: 70 },
8367
+ execute: async (ctx, next) => {
8368
+ const registry = inject(AXPEntityDefinitionRegistryService);
8369
+ const storage = inject(AXPFileStorageService);
8370
+ const [moduleName, entityNameOnly] = ctx.entityName.split('.');
8371
+ const def = await registry.resolve(moduleName, entityNameOnly).catch(() => null);
8372
+ const attachCfg = def?.extensions?.attachments;
8373
+ if (!attachCfg || !attachCfg.field) {
8374
+ await next();
8375
+ return;
8376
+ }
8377
+ const field = attachCfg.field;
8378
+ // Pre: normalize input
8379
+ if (ctx.data && typeof ctx.data === 'object') {
8380
+ const list = Array.isArray(ctx.data[field]) ? ctx.data[field] : [];
8381
+ ctx.locals.attach_pending = [];
8382
+ const normalized = [];
8383
+ for (const item of list) {
8384
+ if (item?.source?.kind === 'blob' && item.source.value instanceof Blob) {
8385
+ const blob = item.source.value;
8386
+ const name = item.name || `file-${Date.now()}`;
8387
+ ctx.locals.attach_pending.push({ fileItem: { ...item, name }, blob });
8388
+ normalized.push({
8389
+ tempId: item.id,
8390
+ name,
8391
+ size: item.size ?? blob.size,
8392
+ status: 'pending_upload',
8393
+ });
8394
+ }
8395
+ else if (item?.source?.kind === 'fileId' && item.id && typeof item.source.value === 'string') {
8396
+ normalized.push({
8397
+ id: item.id,
8398
+ name: item.name,
8399
+ size: item.size,
8400
+ status: item.status || 'uploaded',
8401
+ source: { kind: 'fileId', value: item.source.value },
8402
+ });
8403
+ }
8404
+ else if (item?.id && item?.name) {
8405
+ normalized.push({
8406
+ id: item.id,
8407
+ name: item.name,
8408
+ size: item.size,
8409
+ status: item.status || 'uploaded',
8410
+ source: item.source ? { kind: item.source.kind, value: item.source.value } : undefined,
8411
+ });
8412
+ }
8413
+ }
8414
+ ctx.data[field] = normalized;
8415
+ }
8416
+ await next();
8417
+ // Post: upload pending blobs and persist final references
8418
+ const pending = (ctx.locals.attach_pending ?? []);
8419
+ if (!pending.length)
8420
+ return;
8421
+ if (!storage)
8422
+ return;
8423
+ const finalRefs = (ctx.data[field] ?? []).filter((x) => x.status !== 'pending_upload');
8424
+ const refId = ctx.op === 'create' ? String(ctx.result) : String(ctx.id);
8425
+ const refType = ctx.entityName;
8426
+ for (const { fileItem, blob } of pending) {
8427
+ try {
8428
+ const info = await storage.save({ file: blob, refId, refType, category: '', name: fileItem.name });
8429
+ await storage.commit(info.fileId);
8430
+ finalRefs.push({
8431
+ id: info.fileId,
8432
+ name: info.name || fileItem.name,
8433
+ size: info.size || blob.size,
8434
+ type: info.mimeType || blob.type,
8435
+ status: 'uploaded',
8436
+ source: { kind: 'fileId', value: info.fileId },
8437
+ });
8438
+ }
8439
+ catch (err) {
8440
+ finalRefs.push({
8441
+ tempId: fileItem.id,
8442
+ name: fileItem.name,
8443
+ size: fileItem.size,
8444
+ type: blob.type,
8445
+ status: 'upload_failed',
8446
+ error: err?.message,
8447
+ });
8448
+ }
8449
+ }
8450
+ // Write back final references
8451
+ if (ctx.op === 'create') {
8452
+ try {
8453
+ await registry.entityResolver?.get; // noop to avoid unused warnings
8454
+ // Use backend raw update if available, else rely on service update separately
8455
+ // We only have insertOneRaw exposed; so update via public service layer is not here.
8456
+ // Instead, patch ctx.result if present to reflect UI immediately
8457
+ ctx.result = { ...ctx.result, [field]: finalRefs };
8458
+ }
8459
+ catch { }
8460
+ }
8461
+ else {
8462
+ ctx.result = { ...ctx.result, [field]: finalRefs };
8463
+ }
8464
+ },
8465
+ };
8466
+
8467
+ /**
8468
+ * attachments plugin
8469
+ * Options:
8470
+ * - field: string (property name to hold file list, e.g., 'imageId')
8471
+ * - accept?: string (e.g., '.jpg,.png')
8472
+ * - multiple?: boolean (default true)
8473
+ * - titleKey?: string (i18n key for action title)
8474
+ * - label?: string (fallback action label)
8475
+ * - fileEditable?: boolean (default true)
8476
+ * Notes:
8477
+ * - Always ensures an 'attachments' group and single-view section
8478
+ * - Always ensures the property exists if missing
8479
+ * - Uses provided accept/multiple/fileEditable; others are fixed
8480
+ */
8481
+ const attachmentsPlugin = {
8482
+ name: 'attachments',
8483
+ order: 50,
8484
+ apply: (ctx, options) => {
8485
+ const opts = options ?? {};
8486
+ const field = opts.field && opts.field.trim().length > 0 ? opts.field : 'attachments';
8487
+ // Ensure group and section ids
8488
+ const sectionId = 'attachments';
8489
+ const groupIdForProperty = 'attachments';
8490
+ const existingGroups = ctx.groups.list() ?? [];
8491
+ if (!existingGroups.some((g) => g.id === groupIdForProperty)) {
8492
+ ctx.groups.add({ id: groupIdForProperty, title: 'Attachments' });
8493
+ }
8494
+ // Ensure property exists (using a generic file-uploader interface)
8495
+ const props = ctx.properties.list();
8496
+ if (!props.some((p) => p.name === field)) {
8497
+ ctx.properties.add({
8498
+ name: field,
8499
+ title: 'Attachments',
8500
+ groupId: groupIdForProperty,
8501
+ schema: {
8502
+ dataType: 'string',
8503
+ interface: {
8504
+ type: 'file-uploader',
8505
+ options: {
8506
+ multiple: opts.multiple ?? true,
8507
+ accept: opts.accept,
8508
+ fileEditable: opts.fileEditable ?? true,
8509
+ },
8510
+ },
8511
+ },
8512
+ });
8513
+ }
8514
+ // Ensure column exists
8515
+ const cols = ctx.columns.list() ?? [];
8516
+ if (!cols?.some((c) => c.name === field)) {
8517
+ ctx.columns.add({ name: field });
8518
+ }
8519
+ // Ensure single view section and property layout exists
8520
+ const sectionOrder = 8;
8521
+ const colSpan = 12;
8522
+ ctx.interfaces.master.single.update((single) => {
8523
+ const next = single ?? { title: ctx.entity.title, sections: [], properties: [] };
8524
+ next.sections = next.sections ?? [];
8525
+ if (!next.sections.some((s) => s.id === sectionId)) {
8526
+ next.sections.push({ id: sectionId });
8527
+ }
8528
+ next.properties = next.properties ?? [];
8529
+ if (!next.properties.some((p) => p.name === field)) {
8530
+ next.properties.push({
8531
+ name: field,
8532
+ layout: {
8533
+ label: { visible: false },
8534
+ positions: { lg: { colSpan, order: sectionOrder } },
8535
+ },
8536
+ });
8537
+ }
8538
+ return next;
8539
+ });
8540
+ // Ensure create view includes the section and property layout
8541
+ ctx.interfaces.master.create.update((create) => {
8542
+ const next = create ?? { sections: [], properties: [] };
8543
+ next.sections = next.sections ?? [];
8544
+ if (!next.sections.some((s) => s.id === sectionId)) {
8545
+ next.sections.push({ id: sectionId });
8546
+ }
8547
+ next.properties = next.properties ?? [];
8548
+ if (!next.properties.some((p) => p.name === field)) {
8549
+ next.properties.push({
8550
+ name: field,
8551
+ layout: {
8552
+ positions: { lg: { colSpan, order: 6 } },
8553
+ },
8554
+ });
8555
+ }
8556
+ return next;
8557
+ });
8558
+ // Ensure update view includes the section and property layout
8559
+ ctx.interfaces.master.modify.update((modify) => {
8560
+ const next = modify ?? { sections: [], properties: [] };
8561
+ next.sections = next.sections ?? [];
8562
+ if (!next.sections.some((s) => s.id === sectionId)) {
8563
+ next.sections.push({ id: sectionId });
8564
+ }
8565
+ next.properties = next.properties ?? [];
8566
+ if (!next.properties.some((p) => p.name === field)) {
8567
+ next.properties.push({
8568
+ name: field,
8569
+ layout: {
8570
+ positions: { lg: { colSpan, order: 6 } },
8571
+ },
8572
+ });
8573
+ }
8574
+ return next;
8575
+ });
8576
+ // Ensure list action to open file uploader popup exists
8577
+ ensureListActions(ctx);
8578
+ ctx.interfaces.update((i) => {
8579
+ const actions = i.master.list.actions;
8580
+ const cmdName = 'show-file-uploader-popup';
8581
+ if (!actionExists(actions, cmdName)) {
8582
+ actions.push({
8583
+ title: opts.titleKey ?? '@document-management:actions.upload-files',
8584
+ command: {
8585
+ name: cmdName,
8586
+ options: {
8587
+ id: '{{ context.eval("id") }}',
8588
+ files: `{{ context.eval("${field}") }}`,
8589
+ multiple: opts.multiple ?? true,
8590
+ accept: opts.accept ?? '.jpg,.jpeg,.png,.gif,.webp',
8591
+ key: field,
8592
+ fileEditable: opts.fileEditable ?? true,
8593
+ },
8594
+ },
8595
+ priority: 'secondary',
8596
+ type: 'upload',
8597
+ scope: AXPEntityCommandScope.Individual,
8598
+ });
8599
+ }
8600
+ return i;
8601
+ });
8602
+ // Stamp normalized config for middleware
8603
+ ctx.entity.extensions ??= {};
8604
+ ctx.entity.extensions.attachments = { field };
8605
+ },
8606
+ };
8607
+
7891
8608
  function routesFacory() {
7892
8609
  const config = inject(AXP_ENTITY_CONFIG_TOKEN);
7893
8610
  const routes = [
@@ -7901,11 +8618,11 @@ function routesFacory() {
7901
8618
  children: [
7902
8619
  {
7903
8620
  path: '',
7904
- loadComponent: () => import('./acorex-modules-document-management-drive.component-D5OwpnAP.mjs').then((c) => c.AXMDocumentDriveComponent),
8621
+ loadComponent: () => import('./acorex-modules-document-management-drive.component-DutBXTtm.mjs').then((c) => c.AXMDocumentDriveComponent),
7905
8622
  },
7906
8623
  {
7907
8624
  path: ':id',
7908
- loadComponent: () => import('./acorex-modules-document-management-drive.component-D5OwpnAP.mjs').then((c) => c.AXMDocumentDriveComponent),
8625
+ loadComponent: () => import('./acorex-modules-document-management-drive.component-DutBXTtm.mjs').then((c) => c.AXMDocumentDriveComponent),
7909
8626
  },
7910
8627
  ],
7911
8628
  },
@@ -7959,21 +8676,28 @@ class AXMDocumentManagementModule {
7959
8676
  provide: AXP_PERMISSION_DEFINITION_PROVIDER,
7960
8677
  useFactory: async () => {
7961
8678
  const injector = inject(Injector);
7962
- const provider = (await import('./acorex-modules-document-management-permission-definition.provider-B6nu7fmX.mjs')).AXMPermissionDefinitionProvider;
8679
+ const provider = (await import('./acorex-modules-document-management-permission-definition.provider-_AXz3sdF.mjs')).AXMPermissionDefinitionProvider;
7963
8680
  return new provider(injector);
7964
8681
  },
7965
8682
  multi: true,
7966
8683
  },
7967
8684
  {
7968
8685
  provide: AXP_TASK_BADGE_PROVIDERS,
7969
- useClass: AXMTaskBadgeProviderSample1,
8686
+ useClass: AXMDocumentReviewBadgeProvider,
7970
8687
  multi: true,
7971
8688
  },
7972
8689
  {
7973
- provide: AXP_TASK_BADGE_PROVIDERS,
7974
- useClass: AXMTaskBadgeProviderSample2,
8690
+ provide: AXP_WORKFLOW_TASK_PROVIDER,
8691
+ useClass: AXMDocumentReviewTaskProvider,
8692
+ multi: true,
8693
+ },
8694
+ {
8695
+ provide: AXP_WORKFLOW_TASK_PROVIDER,
8696
+ useClass: AXMDocumentDistributionTaskProvider,
7975
8697
  multi: true,
7976
8698
  },
8699
+ { provide: AXP_ENTITY_STORAGE_MIDDLEWARE, multi: true, useValue: attachmentsUploadMiddleware },
8700
+ { provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: attachmentsPlugin },
7977
8701
  {
7978
8702
  provide: ROUTES,
7979
8703
  multi: true,
@@ -8002,6 +8726,7 @@ class AXMDocumentManagementModule {
8002
8726
  AXMCreateDistributionRecordsAction,
8003
8727
  AXMDocumentSignaturePopupAction,
8004
8728
  AXMSaveSignatureInteractionAction,
8729
+ AXMChangeEntityAction
8005
8730
  },
8006
8731
  workflows: {
8007
8732
  'upload-document': AXMUploadWorkflow,
@@ -8039,6 +8764,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
8039
8764
  AXMCreateDistributionRecordsAction,
8040
8765
  AXMDocumentSignaturePopupAction,
8041
8766
  AXMSaveSignatureInteractionAction,
8767
+ AXMChangeEntityAction
8042
8768
  },
8043
8769
  workflows: {
8044
8770
  'upload-document': AXMUploadWorkflow,
@@ -8088,21 +8814,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
8088
8814
  provide: AXP_PERMISSION_DEFINITION_PROVIDER,
8089
8815
  useFactory: async () => {
8090
8816
  const injector = inject(Injector);
8091
- const provider = (await import('./acorex-modules-document-management-permission-definition.provider-B6nu7fmX.mjs')).AXMPermissionDefinitionProvider;
8817
+ const provider = (await import('./acorex-modules-document-management-permission-definition.provider-_AXz3sdF.mjs')).AXMPermissionDefinitionProvider;
8092
8818
  return new provider(injector);
8093
8819
  },
8094
8820
  multi: true,
8095
8821
  },
8096
8822
  {
8097
8823
  provide: AXP_TASK_BADGE_PROVIDERS,
8098
- useClass: AXMTaskBadgeProviderSample1,
8824
+ useClass: AXMDocumentReviewBadgeProvider,
8099
8825
  multi: true,
8100
8826
  },
8101
8827
  {
8102
- provide: AXP_TASK_BADGE_PROVIDERS,
8103
- useClass: AXMTaskBadgeProviderSample2,
8828
+ provide: AXP_WORKFLOW_TASK_PROVIDER,
8829
+ useClass: AXMDocumentReviewTaskProvider,
8830
+ multi: true,
8831
+ },
8832
+ {
8833
+ provide: AXP_WORKFLOW_TASK_PROVIDER,
8834
+ useClass: AXMDocumentDistributionTaskProvider,
8104
8835
  multi: true,
8105
8836
  },
8837
+ { provide: AXP_ENTITY_STORAGE_MIDDLEWARE, multi: true, useValue: attachmentsUploadMiddleware },
8838
+ { provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: attachmentsPlugin },
8106
8839
  {
8107
8840
  provide: ROUTES,
8108
8841
  multi: true,
@@ -8117,4 +8850,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
8117
8850
  */
8118
8851
 
8119
8852
  export { AXPDocumentExplorerViewModel as A, AXMDocumentManagementDocumentTypeStatusDefinitionEntityServiceImpl as B, folderFactory as C, AXMFolderService as D, AXMFolderServiceImpl as E, reviewFactory as F, AXMReviewService as G, AXMReviewServiceImpl as H, distributionFactory as I, AXMDistributionService as J, AXMDistributionServiceImpl as K, distributionInteractionFactory as L, AXMDistributionInteractionService 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, AXMFolderPathBreadcrumbsComponent as d, AXMDocumentTypeService as e, AXMDocumentManagementModule as f, documentFactory as g, AXMDocumentManagementDocumentEntityModule as h, AXMDocumentService as i, AXMDocumentServiceImpl as j, getNextStatus as k, canTransition as l, documentTypeFactory as m, AXMDocumentManagementDocumentTypeEntityModule as n, AXMDocumentTypeServiceImpl as o, documentTypeMetaDefinitionfactory as p, AXMDocumentManagementDocumentTypeMetaDefinitionEntityModule as q, AXMDocumentManagementDocumentTypeMetaDefinitionEntityService as r, AXMDocumentManagementDocumentTypeMetaDefinitionEntityServiceImpl as s, documentTypeMetaValueFactory as t, AXMDocumentManagementDocumentTypeMetaValueEntityModule as u, AXMDocumentManagementDocumentTypeMetaValueEntityService as v, AXMDocumentManagementDocumentTypeMetaValueEntityServiceImpl as w, documentTypeStatusDefinitionFactory as x, AXMDocumentManagementDocumentTypeStatusDefinitionEntityModule as y, AXMDocumentManagementDocumentTypeStatusDefinitionEntityService as z };
8120
- //# sourceMappingURL=acorex-modules-document-management-acorex-modules-document-management-C4G6L94e.mjs.map
8853
+ //# sourceMappingURL=acorex-modules-document-management-acorex-modules-document-management-D9oPjJnn.mjs.map